【微服务】Eureka(服务注册,服务发现)

文章目录

    • 1.基本介绍
        • 1.学前说明
        • 2.当前架构分析
          • 1.示意图
          • 2.问题分析
        • 3.引出Eureka
          • 1.项目架构分析
          • 2.上图解读
    • 2.创建单机版的Eureka
        • 1.创建 e-commerce-eureka-server-9001 子模块
        • 2.检查父子pom.xml
          • 1.子 pom.xml
          • 2.父 pom.xml
        • 3.pom.xml 引入依赖
        • 4.application.yml 配置eureka服务
        • 5.com/sun/springcloud/EurekaApplication.java 编写启动类运行测试
        • 6.会员中心模块作为Eureka Client示意图
        • 7.member-service-provider-10001 模块作为Eureka Client
          • 1.pom.xml引入Eureka 客户端依赖
          • 2.application.yml 配置Eureka Client
          • 3.修改启动类添加注解
        • 8.测试
          • 1.先启动Eureka 服务端,再启动Eureka 客户端
          • 2.访问(http://localhost:9001/) 进入Eureka 服务端
        • 9.服务消费模块作为Eureka Client示意图
        • 10.member-service-consumer-81 模块作为Eureka Client
          • 1.pom.xml 引入Eureka 客户端依赖
          • 2.application.yml 配置Eureka Client
          • 3.修改启动类添加注解
        • 11.测试
          • 1.先启动Eureka 服务端,再启动Eureka 客户端
          • 2.访问(http://localhost:9001/) 进入Eureka 服务端
        • 12.梳理Service Consumer Service Provider Eureka Server 维护机制
        • 13.Eureka自我保护模式
          • 1.基本介绍
          • 2.小结
          • 3.禁用自我保护模式
            • 1.服务端配置
            • 2.客户端配置
            • 3.启动后访问http://localhost:9001/
            • 4.关闭掉客户端
    • 3.搭建Eureka多服务集群
        • 1.示意图
        • 2.创建e-commerce-eureka-server-9002子模块作为第二个Eureka服务
        • 3.pom.xml 引入依赖(跟9001子模块的一样)
        • 4.application.yml 配置
        • 5.修改9001模块的 application.yml 配置完成两个服务相互注册
        • 6.编写启动类
        • 7.配置Hosts运行Eureka
          • 1.解释
          • 2.hosts文件所在位置
          • 3.修改Hosts文件
          • 4.启动这两个服务,访问测试
        • 8.Eureka多个服务端互相注册配置文件理解
          • 1.服务端一(eureka9001.com:9001)
          • 2.服务端二(eureka9002.com:9002)
    • 4.将客户端注册到Eureka服务集群
        • 1.示意图
        • 2.修改81客户端的application.yml
        • 3.修改10001客户端的application.yml
        • 5.启动四个服务
        • 6.测试访问
        • 7.Eureka多个客户端注册多个服务端配置文件理解
          • 1.客户端一(端口81)
          • 2.客户端二(端口10001)
    • 5.搭建会员中心服务提供方集群
        • 1.示意图
        • 2.基本说明
        • 3.创建 member-service-provider-10002 子模块与10001功能完全一致
        • 4.打开10001模块的文件夹,复制main目录下的文件夹
        • 5.打开10002模块的文件夹,将刚才复制的内容粘贴到main目录下
        • 6.打开idea查看10002模块
        • 7.将10001模块的pom.xml文件依赖粘贴到10002模块(刷新maven)
        • 8.修改10002模块application.yml 的端口为10002
        • 9.修改10002和10001模块的主启动类名称
        • 10.启动所有服务进行测试
        • 11.统一10001服务和10002服务的注册名并启动测试
    • 6.服务消费方(81模块)使用Eureka服务集群
        • 1.示意图
        • 2.修改com/sun/springcloud/controller/MemberConsumerController.java 的前缀为服务提供者在Eureka服务端的key
        • 3.修改com/sun/springcloud/config/CustomizationBean.java 增加调用时负载均衡注解
        • 4.修改两个服务提供方的信息,以便区分
          • member-service-provider-10001
          • member-service-provider-10002
        • 5.启动测试
          • 1.启动全部服务
          • 2.查看注册情况
          • 3.postman测试两个服务提供方是否正常
            • member-service-provider-10001
            • member-service-provider-10002
          • 4.发送请求到服务提供方 member-service-consumer-81
            • 1.第一次请求
            • 2.第二次请求
    • 7.DiscoveryClient获取服务注册信息
        • 1.示意图
        • 2.需求分析
        • 3.代码实现
          • 1.com/sun/springcloud/controller/MemberConsumerController.java 服务消费者调用DiscoveryClient
            • 1.以接口的形式注入DiscoveryClient
            • 2.编写一个接口完成服务发现
            • 3.在启动类使用@EnableDiscoveryClient启动服务发现
        • 4.启动所有服务进行测试
        • 5.注意事项
    • 8.小结
        • 1.项目完整文件目录
        • 2.项目架构图

1.基本介绍

1.学前说明

image-20240324170147708

2.当前架构分析
1.示意图

image-20240324171627695

2.问题分析

image-20240324171708729

3.引出Eureka
1.项目架构分析

image-20240324172210983

2.上图解读

image-20240324172631328

2.创建单机版的Eureka

1.创建 e-commerce-eureka-server-9001 子模块

image-20240324190850244

2.检查父子pom.xml
1.子 pom.xml

image-20240324191046396

2.父 pom.xml

image-20240324191140546

3.pom.xml 引入依赖
    <dependencies><!-- 引入 eureka-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId><!-- 使用版本仲裁 --></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><!-- 公共模块的jar包 --><dependency><groupId>org.example</groupId><artifactId>e_commerce_center-common-api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
4.application.yml 配置eureka服务
server:port: 9001
eureka: # 配置eureka-serverinstance:hostname: localhost # 服务实例名client: # 因为以后可能有其他的eureka服务端,那是这个eureka服务就会既是客户端又是服务端,所以在这里配置一下作为客户端的配置register-with-eureka: false # 不向注册中心注册自己fetch-registry: false # 自己就是注册中心,所以不需要去发现服务service-url:# 这里使用了${}来动态获取主机和端口defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka # 交互模块,查询服务和注册服务都需要依赖这个地址(就是注册这个)
5.com/sun/springcloud/EurekaApplication.java 编写启动类运行测试
package com.sun.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;/*** Description:** @Author sun* @Create 2024/3/24 19:38* @Version 1.0*/
@EnableEurekaServer // 作为eureka服务端启动
@SpringBootApplication
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}

image-20240324195158793

6.会员中心模块作为Eureka Client示意图

image-20240324195456887

7.member-service-provider-10001 模块作为Eureka Client
1.pom.xml引入Eureka 客户端依赖
        <!-- 引入eureka的客户端场景启动器 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><!-- 使用版本仲裁 --></dependency>
2.application.yml 配置Eureka Client
server:port: 10001 # 配置服务端口
spring:application:name: member-service-provider-10001 # 配置服务的名称,名字任意这里与项目名保持一致
eureka: # eureka客户端配置client:register-with-eureka: true # 将自己注册到eureka服务fetch-registry: true # 发现服务功能,如果是集群,必须要能发现服务才能配合ribben进行负载均衡service-url:defaultZone: http://localhost:9001/eureka #表示自己要注册到哪个服务
3.修改启动类添加注解

image-20240324202947223

8.测试
1.先启动Eureka 服务端,再启动Eureka 客户端
2.访问(http://localhost:9001/) 进入Eureka 服务端

image-20240324202316203

image-20240324202339027

9.服务消费模块作为Eureka Client示意图

image-20240324202615904

10.member-service-consumer-81 模块作为Eureka Client
1.pom.xml 引入Eureka 客户端依赖
        <!-- 引入eureka的客户端场景启动器 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><!-- 使用版本仲裁 --></dependency>
2.application.yml 配置Eureka Client
server:port: 81 # 监听81端口
spring:application:name: member-service-consumer-81
eureka: # eureka客户端配置client:register-with-eureka: true # 将自己注册到eureka服务fetch-registry: true # 发现服务功能,如果是集群,必须要能发现服务才能配合ribben进行负载均衡service-url:defaultZone: http://localhost:9001/eureka #表示自己要注册到哪个服务
3.修改启动类添加注解

image-20240324205028005

11.测试
1.先启动Eureka 服务端,再启动Eureka 客户端
2.访问(http://localhost:9001/) 进入Eureka 服务端

image-20240324205133634

12.梳理Service Consumer Service Provider Eureka Server 维护机制
  • 简单来说Eureka就两个功能,发现服务,注册服务!
  • 基本流程就是会员中心启动之后将自己的信息注册到Eureka Server(注册服务),服务消费者启动之后通过Eureka Server来发现服务(发现服务),得到会员中心的调用地址,然后通过rpc远程调用

image-20240324210200932

13.Eureka自我保护模式
1.基本介绍

image-20240325085940410

2.小结
  • 服务在注册之后会不断地向服务端发送心跳,正常情况下如果90s内没有心跳,则服务端会认为这个客户端down掉了,就会清除记录
  • 但是一旦自我保护机制开启,即使90s内没有心跳,也不会请求记录
3.禁用自我保护模式
1.服务端配置
server:port: 9001
eureka: # 配置eureka-serverinstance:hostname: localhost # 服务实例名client: # 因为以后可能有其他的eureka服务端,那是这个eureka服务就会既是客户端又是服务端,所以在这里配置一下作为客户端的配置register-with-eureka: false # 不向注册中心注册自己fetch-registry: false # 自己就是注册中心,所以不需要去检索服务service-url:# 这里使用了${}来动态获取主机和端口defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka # 交互模块,查询服务和注册服务都需要依赖这个地址(就是注册这个)server:enable-self-preservation: false # 关闭自我保护机制eviction-interval-timer-in-ms: 2000 # 两秒内收不到心跳包,就会超时
2.客户端配置
server:port: 10001 # 配置服务端口
spring:application:name: member-service-provider-10001 # 配置服务的名称,名字任意这里与项目名保持一致datasource:type: com.alibaba.druid.pool.DruidDataSource# 别忘记创建数据库之后修改数据库名称url: username: password: 
mybatis:mapper-locations: classpath:mapper/*.xml # 扫描所有Mapper.xmltype-aliases-package: com.sun.springcloud.entity # 扫描所有实体类,可以直接使用类名来标识
eureka: # eureka客户端配置client:register-with-eureka: true # 将自己注册到eureka服务fetch-registry: true # 发现服务功能,如果是集群,必须要能发现服务才能配合ribben进行负载均衡service-url:defaultZone: http://localhost:9001/eureka #表示自己要注册到哪个服务instance:lease-renewal-interval-in-seconds: 1 # 客户端向服务端发送的心跳间隔,默认30slease-expiration-duration-in-seconds: 2 # 服务端收到最后一次心跳后等待的时间上限,默认90s
3.启动后访问http://localhost:9001/

image-20240325092003298

4.关闭掉客户端

image-20240325092029292

3.搭建Eureka多服务集群

1.示意图

image-20240325092723818

2.创建e-commerce-eureka-server-9002子模块作为第二个Eureka服务

image-20240325093013429

3.pom.xml 引入依赖(跟9001子模块的一样)
    <dependencies><!-- 引入 eureka-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId><!-- 使用版本仲裁 --></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><!-- 公共模块的jar包 --><dependency><groupId>org.example</groupId><artifactId>e_commerce_center-common-api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
4.application.yml 配置
server:port: 9002
eureka: # 配置eureka-serverinstance:hostname: eureka9002.com # 服务实例名client: # 因为以后可能有其他的eureka服务端,那是这个eureka服务就会既是客户端又是服务端,所以在这里配置一下作为客户端的配置register-with-eureka: false # 不向注册中心注册自己fetch-registry: false # 自己就是注册中心,所以不需要去检索服务service-url:# 注册到9001serverdefaultZone: http://eureka9001.com:9001/eureka/ # 交互模块,查询服务和注册服务都需要依赖这个地址(就是注册这个)
5.修改9001模块的 application.yml 配置完成两个服务相互注册
server:port: 9001
eureka: # 配置eureka-serverinstance:hostname: eureka9001.com # 服务实例名client: # 因为以后可能有其他的eureka服务端,那是这个eureka服务就会既是客户端又是服务端,所以在这里配置一下作为客户端的配置register-with-eureka: false # 不向注册中心注册自己fetch-registry: false # 自己就是注册中心,所以不需要去检索服务service-url:# 注册到9002serverdefaultZone: http://eureka9002.com:9002/eureka/ # 交互模块,查询服务和注册服务都需要依赖这个地址(就是注册这个)
6.编写启动类
package com.sun.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;/*** Description:** @Author sun* @Create 2024/3/25 9:36* @Version 1.0*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication9002 {public static void main(String[] args) {SpringApplication.run(EurekaApplication9002.class, args);}
}
7.配置Hosts运行Eureka
1.解释
  • 由于上面配置的两个Eureka服务使用的是域名eureka9001.com和eureka9002.com
  • 所以需要配置hosts文件
2.hosts文件所在位置

image-20240325095640615

3.修改Hosts文件
  • 这样eureka9002.com和eureka9001.com都表示127.0.0.1了
  • 如果这里不能直接修改就把文件复制一份在别的地方修改一下然后覆盖这个文件即可
  • 注意:你如果现在开的代理服务器,hosts文件是不生效的!

image-20240325095927191

4.启动这两个服务,访问测试

image-20240325102139626

image-20240325102128008

8.Eureka多个服务端互相注册配置文件理解
1.服务端一(eureka9001.com:9001)
server:port: 9001
eureka: # 配置eureka-serverinstance:hostname: eureka9001.com # 服务实例名(只有服务端才配置,就是ip)client: #	服务端和客户端都需要配置register-with-eureka: false # 不向注册中心注册自己fetch-registry: false # 自己就是注册中心,所以不需要去检索服务service-url:# 注册地址(如果只有一个服务端,就填写自己的服务地址加上/eureka/)这里注册到eureka9002.com:9002defaultZone: http://eureka9002.com:9002/eureka/ # 交互模块,查询服务和注册服务都需要依赖这个地址(就是注册这个)
2.服务端二(eureka9002.com:9002)
server:port: 9002
eureka: # 配置eureka-serverinstance:hostname: eureka9002.com # 服务实例名(只有服务端才配置,就是ip)client: #	服务端和客户端都需要配置register-with-eureka: false # 不向注册中心注册自己fetch-registry: false # 自己就是注册中心,所以不需要去检索服务service-url:# 注册地址(如果只有一个服务端,就填写自己的服务地址加上/eureka/)这里注册到eureka9001.com:9001defaultZone: http://eureka9001.com:9001/eureka/ # 交互模块,查询服务和注册服务都需要依赖这个地址(就是注册这个)

4.将客户端注册到Eureka服务集群

1.示意图

image-20240325103431797

2.修改81客户端的application.yml
server:port: 81 # 监听81端口
spring:application:name: member-service-consumer-81
eureka: # eureka客户端配置client:register-with-eureka: true # 将自己注册到eureka服务fetch-registry: true # 发现服务功能,如果是集群,必须要能发现服务才能配合ribben进行负载均衡service-url:# 需要注册到两个服务,则只需要用逗号间隔defaultZone: http://eureka9001.com:9001/eureka/, http://eureka9002.com:9002/eureka/
3.修改10001客户端的application.yml
server:port: 10001 # 监听10001端口
spring:application:name: member-service-provider-10001 # 配置服务的名称,名字任意这里与项目名保持一致
eureka: # eureka客户端配置client:register-with-eureka: true # 将自己注册到eureka服务fetch-registry: true # 发现服务功能,如果是集群,必须要能发现服务才能配合ribben进行负载均衡service-url:# 需要注册到两个服务,则只需要用逗号间隔defaultZone: http://eureka9001.com:9001/eureka/, http://eureka9002.com:9002/eureka/  #表示自己要注册到哪个服务
5.启动四个服务

image-20240325104314071

6.测试访问

image-20240325104410526

image-20240325104420924

7.Eureka多个客户端注册多个服务端配置文件理解
1.客户端一(端口81)
server:port: 81 # 监听81端口
spring:application:name: member-service-consumer-81 # 客户端服务名称
eureka: # eureka客户端配置client:register-with-eureka: true # 将自己注册到eureka服务fetch-registry: true # 发现服务功能,如果是集群,必须要能发现服务才能配合ribben进行负载均衡service-url:# 需要注册到两个服务,则只需要用逗号间隔defaultZone: http://eureka9001.com:9001/eureka/, http://eureka9002.com:9002/eureka/
2.客户端二(端口10001)
server:port: 10001 # 监听10001端口
spring:application:name: member-service-provider-10001 # 客户端服务名称
eureka: # eureka客户端配置client:register-with-eureka: true # 将自己注册到eureka服务fetch-registry: true # 发现服务功能,如果是集群,必须要能发现服务才能配合ribben进行负载均衡service-url:# 需要注册到两个服务,则只需要用逗号间隔defaultZone: http://eureka9001.com:9001/eureka/, http://eureka9002.com:9002/eureka/  #表示自己要注册到哪个服务

5.搭建会员中心服务提供方集群

1.示意图

image-20240325105527585

2.基本说明

image-20240325105709044

3.创建 member-service-provider-10002 子模块与10001功能完全一致

image-20240325105924475

4.打开10001模块的文件夹,复制main目录下的文件夹

image-20240325110319568

5.打开10002模块的文件夹,将刚才复制的内容粘贴到main目录下

image-20240325110432090

6.打开idea查看10002模块

image-20240325110504774

7.将10001模块的pom.xml文件依赖粘贴到10002模块(刷新maven)
8.修改10002模块application.yml 的端口为10002

image-20240325110914698

9.修改10002和10001模块的主启动类名称

image-20240325111123386

image-20240325111217623

10.启动所有服务进行测试

image-20240325111814235

image-20240325111837051

11.统一10001服务和10002服务的注册名并启动测试

image-20240325112202015

image-20240325112449215

6.服务消费方(81模块)使用Eureka服务集群

1.示意图

image-20240325113458875

2.修改com/sun/springcloud/controller/MemberConsumerController.java 的前缀为服务提供者在Eureka服务端的key

image-20240325114305189

3.修改com/sun/springcloud/config/CustomizationBean.java 增加调用时负载均衡注解

image-20240325114427297

4.修改两个服务提供方的信息,以便区分
member-service-provider-10001

image-20240325124911816

member-service-provider-10002

image-20240325124844086

5.启动测试
1.启动全部服务

image-20240325125405549

2.查看注册情况

image-20240325130512344

image-20240325130429387

3.postman测试两个服务提供方是否正常
member-service-provider-10001

image-20240325125737294

member-service-provider-10002

image-20240325125810014

4.发送请求到服务提供方 member-service-consumer-81
1.第一次请求

image-20240325130122813

2.第二次请求

image-20240325130138782

7.DiscoveryClient获取服务注册信息

1.示意图

image-20240325130929440

2.需求分析

image-20240325131114680

3.代码实现
1.com/sun/springcloud/controller/MemberConsumerController.java 服务消费者调用DiscoveryClient
1.以接口的形式注入DiscoveryClient

image-20240325133621497

2.编写一个接口完成服务发现
    /*** 服务消费方通过eureka服务集群来获取到服务提供方的服务** @return*/@GetMapping("/member/consumer/discovery")public Object discovery() {// 获取所有服务idList<String> services = discoveryClient.getServices();for (String service : services) {log.info("服务名小写={}", service);// 获取当前服务id对应的实例(可能有多个)List<ServiceInstance> instances = discoveryClient.getInstances(service);for (ServiceInstance instance : instances) {log.info("id={}, host={}, port={}, uri={}", service, instance.getHost(), instance.getPort(), instance.getUri());}}return services;}
3.在启动类使用@EnableDiscoveryClient启动服务发现

image-20240325133726850

4.启动所有服务进行测试

image-20240325133941011

image-20240325133951854

5.注意事项

image-20240325134044146

8.小结

1.项目完整文件目录

image-20240325135428407

2.项目架构图

image-20240325135933635

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/286327.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【牛客】SQL142 对试卷得分做min-max归一化

描述 现有试卷信息表examination_info&#xff08;exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间&#xff09;&#xff1a; idexam_idtagdifficultydurationrelease_time19001SQLhard602020-01-01 10:00:0029002Chard802020-01-0…

huawei 华为 交换机 配置 LACP 模式的链路聚合示例 (交换机之间直连)

组网需求 如 图 3-22 所示&#xff0c; SwitchA 和 SwitchB 通过以太链路分别都连接 VLAN10 和 VLAN20 的网络&#xff0c;且SwitchA 和 SwitchB 之间有较大的数据流量。用户希望 SwitchA 和 SwitchB 之间能够提供较大的链路带宽来使相同VLAN 间互相通信。在两台 Switch 设备上…

【SpringBoot】实现一个简单的图片上传

前端上传表单 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <form enctype"multipart/form-data" method"post" action&q…

纯前端调用本机原生Office实现Web在线编辑Word/Excel/PPT,支持私有化部署

在日常协同办公过程中&#xff0c;一份文件可能需要多次重复修改才能确定&#xff0c;如果你发送给多个人修改后再汇总&#xff0c;这样既效率低又容易出错&#xff0c;这就用到网页版协同办公软件了&#xff0c;不仅方便文件流转还保证不会出错。 但是目前一些在线协同Office…

【考研数学】张宇最新全年学习包

考研数学冲高分必备&#xff0c;张宇老师肯定榜上有名&#xff01; 考研数学&#xff0c;其实就像一场没有硝烟的战斗。基础题是常规武器&#xff0c;中难题就是重型火炮&#xff0c;而压轴题呢&#xff0c;那就是核弹级别的存在&#xff01;考研的战场&#xff0c;关键就在那…

Vulnhub:DR4G0N B4LL: 1

目录 信息收集 1、arp 2、nmap WEB web信息收集 gobuster 隐藏目录发现 图片隐写 ssh登录 提权 get user 系统信息收集 get root 信息收集 1、arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l …

iOS - Runtime-isa详解(位域、union(共用体)、位运算)

文章目录 iOS - Runtime-isa详解&#xff08;位域、union&#xff08;共用体&#xff09;、位运算&#xff09;前言1. 位域介绍1.1 思路1.2 示例 - 结构体1.3 示例 - union&#xff08;共用体&#xff09;1.3.1 说明 1.4 结构体 对比 union&#xff08;共用体&#xff09; 2. a…

Github多账号共存

在开发阶段&#xff0c;如果同时拥有多个开源代码托管平台的账户&#xff0c;在代码的管理上非常麻烦。那么&#xff0c;如果同一台机器上需要配置多个账户&#xff0c;怎样才能确保不冲突&#xff0c;不同账户独立下载独立提交呢&#xff1f; 我们以两个github账号进行演示 …

LiteFlow简单使用

LiteFlow是什么 LiteFlow是一个非常强大的现代化的规则引擎框架&#xff0c;融合了编排特性和规则引擎的所有特性&#xff0c;具体介绍查看官网 官网&#xff1a;https://liteflow.cc/ github: https://github.com/dromara/liteflow gitee: https://gitee.com/dromara/lite…

网络七层模型:理解网络通信的架构(〇)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

生物信息—数据库

文章目录 核酸数据库1 一级核酸数据库&#xff1a;GenBank1.1 原核生物核酸序列1.2 真核生物成熟mRNA1.3 真核生物DNA序列 2 一级核酸数据库&#xff1a;基因组数据库&#xff1a;Ensemble3 一级核酸数据库&#xff1a;微生物宏基因组数据库&#xff1a;JCVI4 二级核酸数据库 蛋…

数据可视化基础与应用-04-seaborn库从入门到精通01-02

总结 本系列是数据可视化基础与应用的第04篇seaborn&#xff0c;是seaborn从入门到精通系列第1-2篇。本系列的目的是可以完整的完成seaborn从入门到精通。主要介绍基于seaborn实现数据可视化。 参考 参考:数据可视化-seaborn seaborn从入门到精通01-seaborn介绍与load_datas…

【AI科学小品文】AI之梦:未来探索之旅

引子&#xff1a;AI初识 在未来的某个城市&#xff0c;高耸的摩天大楼间&#xff0c;闪烁着无数LED屏幕的广告牌&#xff0c;在黄昏的余晖中显得格外耀眼。无人驾驶的磁悬浮车辆穿梭在街道上&#xff0c;几乎听不到任何声音。智能机器人在街头忙碌着&#xff0c;为行人提供着各…

数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting

模型融合&#xff1a;通过融合多个不同的模型&#xff0c;可能提升机器学习的性能。这一方法在各种机器学习比赛中广泛应用&#xff0c; 也是在比赛的攻坚时刻冲刺Top的关键。而融合模型往往又可以从模型结果&#xff0c;模型自身&#xff0c;样本集等不同的角度进行融合。 数据…

Unity 视频组件 VideoPlayer

组件添加&#xff1a; 在自己定义的组件下&#xff08;例如&#xff1a;Panel&#xff09; 点击 Inspector 面板中的 AddComponent &#xff0c;输入“VideoPlayer”。 资源 这里 视频资源有两种形式&#xff0c;第一种是 VideoClip &#xff0c;需要将视频文件拖拽到该属性字段…

【Linux中vim系列】如何在vim中检索字符串

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

重构销售话术和知识库,容联云找到了大模型的“钉子”

科技云报道原创。 从ChatGPT诞生起&#xff0c;大模型在营销、客服等场景的落地就被予以众望。然而在经历了一年多的“百模大战”洗礼之后&#xff0c;人们发现无论是算力成本还是内容生成的安全合规问题&#xff0c;都让大模型很难直接应用于机器与人对话的实际业务中。 这其…

Java后端项目性能优化实战-群发通知

背景 公司群发通知模块性能存在问题&#xff0c;我进行全面的系统调优&#xff0c;系统处理能力大幅提升。 原发送流程 优化后的发送流程 优化的点 说明&#xff1a;以下问题基本都是压测过程遇到的&#xff0c;有些问题普通的功能测试暴露不了。优化目标&#xff1a;保证高…

conda 查看激活自己的新环境,labelImg的使用

查看环境目录 我们可以在基础环境中查看我们有几个环境 conda env list 激活新环境 我们激活pytorch环境pytorch conda activate pytorch 在新环境下安装 然后我们安装labelImg&#xff08;Python3.10以上会报错&#xff09; pip install labelImg 新环境下打开 labelImg …

GIT开发中的使用

GIT 什么是Git&#xff1f; Git是一个版本控制器&#xff1a;可以记录工程的每一次改动和版本迭代的一个管理系统 注意事项&#xff1a; 所有的版本控制系统&#xff0c;其实只能跟踪文本文件的改动&#xff08;如TXT文件、网页、所有的程序代码等&#xff09;&#xff0c;…