当前位置: 首页 > news >正文

SpringCloud学习2(Spring Cloud Netflix)负载均衡Ribbon、Feign负载均衡、Hystix服务熔断

文章目录

  • 负载均衡Ribbon
    • Ribbon的作用
    • 代码实现
      • 生产者cloud1_provider实现
        • 配置文件
        • 在HiController中编写以下代码
        • 启动集群
      • 消费者cloud1_consumer实现
        • 引入依赖
        • 编写配置文件
        • 编写启动类,并给RestTemplate配置@LoadBalanced注解
        • 编写RestController来测试
  • Feign负载均衡
    • 简介Feign
    • Feign集成了RIbbon
    • 编码测试(基于cloud1_consumer项目修改)
      • 引入依赖
      • 启用FeignClient
      • 编写FeignService接口
      • 编写Controller测试使用
  • Hystrix服务熔断
    • 分布式系统面临问题——服务雪崩
    • 什么是Hystrix断路器
    • 作用:
      • 服务熔断`@HystrixCommand`
      • 服务熔断与服务降级
      • 服务熔断代码案例
        • 引入依赖
        • 启用断路器
        • 编写带有短路方法的测试Controller
      • 服务降级代码案例(基于之前搭建的cloud1_consumer项目修改)
        • 引入依赖
        • 编写yml配置
        • 编写Feign接口
        • 编写降级回调工厂类 OrderServiceFallBackFactory
        • 编写测试Controller
    • Hystrix流监控Dashboard
      • 代码案例
        • 生产侧,被监测方依赖配置与代码
      • 监控客户端依赖配置与代码cloud1_hystrix_dashboard

负载均衡Ribbon

SpringCloudRibbon是基于NetflixRibbon实现的一套客户端负载均衡工具。主要功能是提供客户端的负载均衡算法。Ribbon客户端提供系列完整的配置,如连接超市,重试机制。简单说就是在配置文件中列出LoadBalancer后面的所有机器。Ribbon会自动帮助基于某种规则(轮询、随机)去连接机器。

Ribbon的作用

  • LB(Load Balance)负载均衡,在微服务或分布式集群中常用的一种应用
  • 负载均衡简单来说就是平摊用户请求到多个赴俄乌,从而达到系统的HA(高可用)
  • 常见负载均衡软件Nginx、LVS
  • Dubbo、SpringCloud中均给我们提供了负载均衡。SpringCloud负载均衡算法可以自定义
  • 负载均衡简单分类
    • 集中式Load Balance
      • 即在服务端消费方和提供方之间使用独立的LB设施,如Nginx,由该服务负责把访问请求通过负载策略转发到服务提供方
      • 进程式Load Balance
        • 将LB的逻辑集成到消费者,消费者从服务注册中心获取到有哪些地址可用,然后自己再根据这些地址选举出一个合适的服务器。
        • Ribbon就属于进程式LB,他是一个类库。集成于消费者进程,消费者通过它来获取到服务提供者的地址。

代码实现

基于前面的代码来改造服务提供者的代码,先搭建服务提供者的集群

生产者cloud1_provider实现

配置文件

spring:profiles:active: dev-9991---
server:port: 9991
spring:config:activate:on-profile: dev-9991application:name: cloud1-provider
logging:level:com.hx: debug
eureka:client:service-url:defaultZone: http://localhost:8881/eureka/,http://localhost:8882/eureka/instance:instance-id: cloud-prod-1#    配置主机地址hostname: localhost---
server:port: 9992
spring:config:activate:on-profile: dev-9992application:name: cloud1-provider
logging:level:com.hx: debug
eureka:client:service-url:defaultZone: http://localhost:8881/eureka/,http://localhost:8882/eureka/instance:instance-id: cloud-prod-2#    配置主机地址hostname: localhost

在HiController中编写以下代码

@Value("${server.port}")
private String port;@RequestMapping("/")
public String hi() {return "<h1>HI Spring Cloud 1  " + port + "</h1>";
}

启动集群

在这里插入图片描述

消费者cloud1_consumer实现

引入依赖

注意:这里不需要重复引入ribbon的依赖,否则无法ribbon将获取不到实例

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>cloud1_parent</artifactId><groupId>com.hx</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud1_consumer</artifactId><name>cloud1_consumer</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.hx</groupId><artifactId>cloud1_api</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies>
</project>

编写配置文件

server:port: 7771
spring:application:name: cloud1-consumer
logging:level:com.hx: debug
eureka:client:service-url:defaultZone: http://localhost:8881/eureka/,http://localhost:8882/eureka/register-with-eureka: false   # 消费者不需要注册自己instance:instance-id: cloud-prod-1#    配置主机地址hostname: localhost

编写启动类,并给RestTemplate配置@LoadBalanced注解

@SpringBootApplication
@EnableEurekaClient
public class Cloud1ConsumerApp {public static void main(String[] args) {SpringApplication.run(Cloud1ConsumerApp.class,args);}// 配置负载均衡的restTemplate@Bean@LoadBalanced       // ribbonpublic RestTemplate restTemplate(){return new RestTemplate();}
}

编写RestController来测试

@RestController
public class RestOrderController {@Autowiredprivate RestTemplate restTemplate;private static final String ORDER_APP_URI = "http://CLOUD1-PROVIDER";@RequestMapping("/")public String index() {return restTemplate.getForObject(ORDER_APP_URI.concat("/"), String.class);}@RequestMapping("/restOrder")public Order getOrder() {return restTemplate.getForObject(ORDER_APP_URI.concat("/getOrder"), Order.class);}
}

Feign负载均衡

简介Feign

Feign是声明式的web service客户端。让微服务之间的调用更简单,类似controller调用service。SpringCloud继承了Ribbon和Eureka,可以在使用Feign时提供负载均衡的http客户端。Feign旨在使得编写JavaHttp客户端简单容易。
只需要给一个接口,然后添加注解就可以。

Feign集成了RIbbon

利用Ribbon维护了微服务列表信息,通过轮询实现了客户端的负载均衡,而与Ribbon不同的是,通过Feign只需要定义服务绑定接口,且以声明式的方法,优雅简单的实现服务调用。

编码测试(基于cloud1_consumer项目修改)

引入依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-feign</artifactId><version>1.4.7.RELEASE</version>
</dependency>

启用FeignClient

@SpringBootApplication
@EnableEurekaClient
//@EnableFeignClients
@EnableFeignClients(basePackages = "com.hx.service")
public class Cloud1ConsumerApp {public static void main(String[] args) {SpringApplication.run(Cloud1ConsumerApp.class, args);}// 配置负载均衡的restTemplate@Bean@LoadBalanced       // ribbonpublic RestTemplate restTemplate() {return new RestTemplate();}
}

编写FeignService接口

@Service
@FeignClient(value = "CLOUD1-PROVIDER")
public interface RestOrderService {@GetMapping("/")String index();@PostMapping("/getOrder")Order restGetOrder();
}

编写Controller测试使用

@RestController
@RequestMapping("/fg")
public class RestOrderFeignController {@Autowiredprivate RestOrderService restOrderService;@RequestMapping("/")public String index() {return restOrderService.index();}@RequestMapping("/restOrder")public Order getOrder() {return restOrderService.restGetOrder();}
}

Hystrix服务熔断

分布式系统面临问题——服务雪崩

复杂分布式体系结构中应用程序有数十个依赖关系,每个依赖关系在某些时刻不可避免的失败。
多个微服务之间调用的时候,假设A服务调用B、C服务,微服务B和C又调用其他微服务,这就是所谓的"扇出"。如果扇出的链路上某个微服务的调用响应超市或时间过长无响应,对微服务A的调用就会占用越来越多的系统资源,进而引发系统崩溃,即服务雪崩。
对于高流量应用,单一的后端依赖可能导致所有服务上的所有资源都在几十秒内饱和。更糟糕的是这些应用还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联腹胀。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不取消整个应用程序系统。

什么是Hystrix断路器

Hystrix是一个应用于处理分布式系统的延迟和容错开源库,在分布式系统中,许多依赖不可避免的调用失败,eg:超时、异常等。Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,提高分布式系统的弹性。
断路器本身是一种开关,当某个服务单元发生故障后,通过断路器的故障监控,向服务调用方返回一个服务预期的、可处理的备选响应,而不是长时间的等待或者抛出无法处理的异常,这样保证了服务调用方的线程不会被长时间占用。从而避免故障在分布式系统中的蔓延乃至雪崩。

作用:

服务降级、服务熔断、服务限流、接近实时监控

服务熔断@HystrixCommand

熔断机制是应对雪崩问题的一种微服务链路保护机制。
当扇出的某个微服务不可用或者响应时间太长,会进行服务降级,进而熔断该节点微服务调用,快速返回错误的相应细腻些。当检测到该服务响应正常后,恢复链路调用。在SpringCloud熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到达一定阈值,缺省5s内20次失败就会启动熔断机制。

服务熔断与服务降级

服务熔断(服务端编写):某个服务超时或者异常,引起熔断
服务降级(客户端编写):从整体的网站请求负载考虑,当某个服务熔断或者关闭后服务将不再被调用。此时在客户端可以准备一个失败回调FallbackFactory。返回一个默认的缺省值,整体服务水平下降。

服务熔断代码案例

引入依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId><version>2.1.0.RELEASE</version>
</dependency>

启用断路器

@SpringBootApplication
@EnableDiscoveryClient  // 服务发现,不只是eureka
//@EnableCircuitBreaker   // 启用断路器Hystrix
@EnableHystrix
public class Cloud1ProdApp {public static void main(String[] args) {SpringApplication.run(Cloud1ProdApp.class);}
}

编写带有短路方法的测试Controller

@RestController
@RequestMapping("hystrix")
public class Hi_HystrixController {@Autowiredprivate OrderService orderService;@HystrixCommand(fallbackMethod = "getOrderHystrix")@RequestMapping("/order")public Order getOrder(String id) {if(StringUtils.isBlank(id)){throw new RuntimeException("参数ID不可以为空!");}return orderService.getOrder(id);}/*** 注意:这个熔断的方法,里的参数列表要和上面的方法参数列表相同* 否则报错:com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionException: fallback method wasn't found*/public Order getOrderHystrix(String id) {id = UUID.randomUUID().toString();return orderService.getOrder(id).setId("请传入正确的ID");}
}

服务降级代码案例(基于之前搭建的cloud1_consumer项目修改)

引入依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

编写yml配置

feign:hystrix:enable: true

编写Feign接口

@Service
@FeignClient(value = "CLOUD1-PROVIDER",fallbackFactory = OrderServiceFallBackFactory.class)
public interface RestOrderService {@GetMapping("/")String index();@PostMapping("/getOrder")Order restGetOrder();// 我们这次测试的接口   @PostMapping("/hystrix/order")Order restGetOrderFall();
}

编写降级回调工厂类 OrderServiceFallBackFactory

@Component
public class OrderServiceFallBackFactory implements FallbackFactory<RestOrderService> {@Overridepublic RestOrderService create(Throwable cause) {return new RestOrderService() {@Overridepublic String index() {return "降级";}@Overridepublic Order restGetOrder() {return null;}@Overridepublic Order restGetOrderFall() {return new Order().setId("没有找到,可能是未传入ID").setCreateTime(SimpleDateFormat.getDateTimeInstance().format(new Date()));}};}
}

编写测试Controller

@RestController
@RequestMapping("/fgfall")
public class RestOrderFeignController2 {@Autowiredprivate RestOrderService restOrderService;@RequestMapping("/order2")public Order getOrder() {return restOrderService.restGetOrderFall();}
}

注意:这里高版本的springcloud2021版本不清楚为什么无法实现

Hystrix流监控Dashboard

在这里插入图片描述

代码案例

生产侧,被监测方依赖配置与代码

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
#暴露全部的监控信息
management:endpoints:web:exposure:include: "*"
@Bean
public ServletRegistrationBean hystrixMetricsStreamServlet(){ServletRegistrationBean registrationBean = new ServletRegistrationBean(new HystrixMetricsStreamServlet());registrationBean.setLoadOnStartup(1);registrationBean.addUrlMappings("/actuator/hystrix.stream");registrationBean.setName("HystrixMetricsStreamServlet");return registrationBean;
}

监控客户端依赖配置与代码cloud1_hystrix_dashboard

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>cloud1_parent</artifactId><groupId>com.hx</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud1_hystrix_dashboard</artifactId><name>cloud1_hystrix_dashboard</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId></dependency></dependencies>
</project>
package com.hx;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;@SpringBootApplication
// 启用hystrix监控
@EnableHystrixDashboard
@EnableHystrix
public class DashboardApp {public static void main(String[] args) {SpringApplication.run(DashboardApp.class,args);}
}

在这里插入图片描述

相关文章:

SpringCloud学习2(Spring Cloud Netflix)负载均衡Ribbon、Feign负载均衡、Hystix服务熔断

文章目录负载均衡RibbonRibbon的作用代码实现生产者cloud1_provider实现配置文件在HiController中编写以下代码启动集群消费者cloud1_consumer实现引入依赖编写配置文件编写启动类&#xff0c;并给RestTemplate配置LoadBalanced注解编写RestController来测试Feign负载均衡简介F…...

Spring 源码解析 - @Async 注解下的循环依赖问题原理

一、Async 注解下的循环依赖问题 我们都知道 Spring IOC 单例模式下可以帮助我们解决循环依赖问题&#xff0c;比如下面自己依赖自己循环依赖的场景&#xff1a; Component public class TestAsync {ResourceTestAsync async;public void test() {System.out.println("t…...

8个全球性编程比赛,天才程序员的梦想舞台

很多编程爱好者在学习之初&#xff0c;都渴望与全球的程序员一较高下&#xff0c;以证明自己的实力。 一些全球性的编程竞赛为他们提供了这样的机会&#xff0c;不仅可以与全世界的顶尖程序员们交流&#xff0c;还有机会获得丰厚的奖金和进入顶级公司的机会&#xff0c;更重要…...

2023年中国海洋大学计算机及电子信息考研分析

考研时间跨度&#xff1a; 初试时间&#xff1a; 2022年8月23 海大推免及创新人才计划接收通知。 2022年9月13 海大专业目录及人数&#xff0c;包含推免。 2022年10月18 2022年硕士研究生计划 &#xff0c;不含推免。 海大2022年硕士研究生计划 网上第一次时间为2022年9月24日…...

【C++笔试强训】第六天

选择题 1. 解析&#xff1a;十进制转换为八进制就是不断的除8&#xff0c;取余数。十进制转换成其他进制的数就是除以进制&#xff0c;取余。 解析&#xff1a;注意printf的转换&#xff0c;%%只会打印一个%&#xff0c;所以选A。 解析&#xff1a;由于()的原因p先和*结合&…...

Redission 中的 RedLock 原理实现, springboot 你造吗?

分布锁之RedLock 锁住你的心我的爱 &#x1f682;为什么需要使用 RedLock锁被误释放时钟不一致问题锁的“延迟释放”而不是死锁Redlock是啥redlock 存在什么问题惊群效应时钟漂移Redisson 实现 RedLock在 Redisson 中, RedLock的实现类是哪一个类?这一招叫抛砖引玉springboot …...

【沐风老师】3dMax一键房屋创建者插件使用方法详解

3dmax一键房屋创建者&#xff0c;一键生成墙体、窗洞和门洞的插件&#xff01;这个脚本主要用于创建或捕获一些架构项目所代表的平面&#xff0c;这是通过导入它们并在每个所需的层添加值来实现的。传统方法&#xff0c;但是省事儿多了&#xff01; 【版本要求】 3dMax 2015及…...

C/C++ 变量详解

文章目录前言一、静态变量与动态变量1. 概念2. 区别3. 使用方法和注意事项3.1 静态变量3.2 动态变量4. 结论二、全局变量与局部变量1. 区别2. 全局变量的使用方法和注意事项3. 局部变量的使用方法和注意事项4. 总结前言 对C学习感兴趣的可以看看这篇文章哦&#xff1a;C/C教程…...

新SSD盘安装操作系统启动不了

今天打算给电脑升级下装备&#xff0c;加装一块固态硬盘。 电脑原本自带两块硬盘&#xff08;SSD128GSATA1T&#xff09;&#xff0c;SSD清理了许久还是没空间&#xff0c;于是就买了块1TSSD&#xff0c;打算扩容下。 打开电脑后盖傻眼了&#xff0c;没有备用插槽&#xff0c…...

基于Spring、SpringMVC、MyBatis的病历管理系统

文章目录 项目介绍主要功能截图:登录首页医院公告管理用户管理科室信息管理医生管理出诊信息管理预约时间段管理预约挂号管理门诊病历管理就诊评价管理轮播图管理功能架构图部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历…...

QT编程从入门到精通之三十四:“第五章:Qt GUI应用程序设计”之“5.5 Qt Creator使用技巧”

目录 第五章:Qt GUI应用程序设计 5.5 Qt Creator使用技巧 第五章:Qt GUI应用程序设计 在“Qt 程序创建基础”上,本章将继续深入地介绍Qt Creator设计GUI应用程序的方法,包括Qt创建的应用程序项目的基本组织结构,可视化设计的UI界面文件的原理和运行机制,信号与槽的使用…...

网络工程方向有哪些SCI期刊推荐? - 易智编译EaseEditing

以下是网络工程领域的一些SCI期刊推荐&#xff1a; IEEE Transactions on Network and Service Management: 这是一个IEEE旗下的期刊&#xff0c;涵盖了网络与服务管理方面的研究。主要关注网络管理、服务管理和其它相关领域的创新和最新研究。 Computer Networks: 这是一本著…...

netty入门(二十六)任务加入异步线程池源码剖析

1.handler中加入线程池和Context添加线程池 1.1 源码剖析目的 &#xff08;1&#xff09;在 Netty 中做耗时的&#xff0c;不可预料的操作&#xff0c;比如&#xff1a;数据库、网络请求、会严重影响 Netty 对 Socket 的处理速度。 &#xff08;2&#xff09;而解决方法就是…...

神经网络算法入门和代码

文章内容 感知机&#xff08;Perceptron&#xff09;反向传播算法&#xff08;Back Propagation algorithm&#xff09;RBF(Radial Basis Function&#xff0c;径向基函数) 网络&#xff1a;单一层前馈网络&#xff0c;它使用径向基作为隐层神经元激活函数ART(Adaptive Resona…...

如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?

作者&#xff1a;华钟明 本文我们将介绍 Apache Dubbo 灵活的多协议设计原则&#xff0c;基于这一设计&#xff0c;在 Dubbo 框架底层可灵活的选用 HTTP/2、HTTP/REST、TCP、gRPC、JsonRPC、Hessian2 等任一 RPC 通信协议&#xff0c;同时享用统一的 API 与对等的服务治理能力。…...

ToBeWritten之杂项2

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…...

Linux三剑客之awk命令详解

1、概述 Linux三剑客&#xff1a;grep、sed、awk。grep主打查找功能&#xff0c;sed主要是编辑行&#xff0c;awk主要是分割列处理。本篇文章我们详细介绍awk命令。 awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。awk是一种编…...

C++异常处理:掌握高效、健壮代码的秘密武器

C异常处理全面解析&#xff1a;底层原理、编译器技巧与实用场景C异常机制&#xff1a;让我们迈向更安全、更可靠的代码C异常处理&#xff1a;掌握基本概念什么是异常&#xff1f;异常处理的重要性C异常处理的组成部分&#xff1a;try、catch、throw探索C异常处理的核心&#xf…...

Jetpack Compose基础组件之按钮组件

概述 按钮组件Button是用户和系统交互的重要组件之一&#xff0c;它按照Material Design风格实现&#xff0c;我们先看下Button的参数列表&#xff0c;通过参数列表了解下Button的整体功能 Composable fun Button(onClick: () -> Unit, // 点击按钮时的回调modifier: Modi…...

利用json-server快速在本地搭建一个JSON服务

1&#xff0c;json-server介绍 一个在前端本地运行&#xff0c;可以存储json数据的server。 通俗来说&#xff0c;就是模拟服务端接口数据&#xff0c;一般用在前后端分离后&#xff0c;前端人员可以不依赖API开发&#xff0c;而在本地搭建一个JSON服务&#xff0c;自己产生测…...

可重入函数与线程安全

指令乱序和线程安全 先来看什么是指令乱序问题以及为什么有指令乱序。程序的代码执行顺序有可能被编译器或CPU根据某种策略打乱指令执行顺序&#xff0c;目的是提升程序的执行性能&#xff0c;让程序的执行尽可能并行&#xff0c;这就是所谓指令乱序问题。理解指令乱序的策略是…...

一文彻底读懂异地多活

文章目录 系统可用性单机架构主从副本风险不可控同城灾备同城双活两地三中心伪异地双活真正的异地双活如何实施异地双活1、按业务类型分片2、直接哈希分片3、按地理位置分片异地多活总结系统可用性 要想理解异地多活,我们需要从架构设计的原则说起。 现如今,我们开发一个软件…...

孕酮PEG偶联物:mPEG Progestrone,PEG Progestrone,甲氧基聚乙二醇孕酮

中文名称&#xff1a;甲氧基聚乙二醇孕酮 英文名称&#xff1a;mPEG Progestrone&#xff0c;PEG Progestrone 一、反应机理&#xff1a; 孕酮-PEG衍生物是一类具有生物活性的类固醇-PEG偶联物&#xff0c;可用于药物发现或生物测定开发。孕酮是一种女性性激素&#xff0c;负…...

网络系统集成实验(一)| 网络系统集成基础

目录 一、前言 二、实验目的 三、实验需求 四、实验步骤与现象 &#xff08;1&#xff09;网络设置、网络命令的使用 ① 在华为设备中&#xff0c;常用指令的使用 ② 在思科设备中&#xff0c;常用指令的使用 ③ 在Windows设备中&#xff0c;常用网络指令的使用 &#xf…...

php composer 如何安装windows电脑

在 Windows 电脑上安装 PHP Composer&#xff0c;你需要按照以下步骤操作&#xff1a; 安装 PHP 确保你的电脑上已经安装了 PHP。如果还没有安装&#xff0c;可以从 PHP 官网&#xff08;https://www.php.net/downloads.php&#xff09;下载安装包并安装。 设置环境变量 将 P…...

API 鉴权插件上线!支持用户自定义鉴权插件

0.4.0 版本更新主要围绕这几个方面&#xff1a; 分组独立的 UI&#xff0c;支持分组 API 鉴权 API 测试支持继承 API 鉴权 支持用户自定义鉴权插件&#xff0c;仅需部分配置即可发布鉴权插件 开始介绍功能之前&#xff0c;我想先和大家分享一下鉴权功能设计的一些思考。 其实…...

2023年NOC大赛加码未来编程赛道-初赛-Python(初中组-卷1)

2023年NOC大赛加码未来编程赛道-初赛-Python(初中组-卷1) *1.Python自带的编程环境是? A、PyScripter B、Spyder C、Notepad++ D、IDLE *2.假设a=20,b-3,那么a or b的结果是? () A、20 B、0 C.1 D.3 *3.假设a=2,b=3,那么a-b*b的值是? A、 3 B、-2 C、-7 D、-11 *4.…...

day21—编程题

文章目录1.第一题1.1题目1.2思路1.3解题2.第二题2.1题目2.2思路2.3解题1.第一题 1.1题目 描述&#xff1a; 洗牌在生活中十分常见&#xff0c;现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌&#xff0c;从上到下依次是第1张&#xff0c;第2张&#xff0c;第3张一直到…...

【数据结构】栈与队列经典选择题

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a; &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最大的激励…...

Linux常用命令详细示例演示

一、Linux 常用命令一览表 Linux 下命令格式&#xff1a; command [-options] [parameter] 命令 [选项] [参数] command 是命令 例如&#xff1a;ls cd copy[-options] 带方括号的都是可选的 一些选项 例如&#xff1a;ls -l 中的 -l[parameter] 可选参数&#xff0c;可以是 0…...