SpringCloud微服务实战

服务治理

       主要用来实现各个微服务实例的自动化注册与发现。

       *服务注册:在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机与端口号,版本号,通信协议等一些附加信息告知注册中心,注册中心按服务名分类组织服务清单。

另外,服务注册中心还需要以心跳的方式去检测清单中的服务是否可用,若不可用需要从服务清单中剔除,达到排除故障服务的效果。

         *服务发现:在服务治理框架下运作,服务间的调用不再通过指定具体的实例地址来实现,而是通过向服务名发起请求调用实现。所以,服务调用方在调用服务提供方接口的时候,并不知道具体的服务实例位置。因此,调用方需要向服务注册中心咨询服务,并获取所有服务的实例清单,以实现对具体服务实例的访问。比如,服务C希望调用服务A,服务C就需要向注册中心发起咨询服务请求,服务注册中心就会将服务A的位置清单返回给服务C。当服务C要发起调用的时候,便从该清单中以某种轮询策略(负载均衡)取出一个位置来进行服务调用。

 

Netflix Eureka

         Eureka服务端,也称服务注册中心,支持高可用配置。它依托于强一致性提供良好的服务实例可用性,可以应对多种不同的故障场景。如果Eureka以集群模式部署,当集群中有分片出现故障时,那么Eureka就转入自我保护模式。允许在分片故障期间继续提供服务的发现和注册,当故障分片恢复运行时,集群中的其他分片会把他们的状态再次同步回来。

         服务端配置:

                   Server.port:8080   //指定服务注册中心端口

                   eureka.client.register-with-eureka:false   //代表不向注册中心注册自己

                   eureka.client.fetch-registry:  //代表不需要去检索服务

         Eureka客户端,主要处理服务的注册与发现。客户端服务通过注解和参数配置的方式,嵌入在客户端应用程序的代码中,在应用程序运行时,Eureka客户端向注册中心注册自身提供的服务并周期性的发送心跳来更新它的服务租约。同时,它也能从服务端查询当前注册的服务信息并把它们缓存到本地并周期性的刷新服务状态。

         注册服务提供者:

                   Spring.application.name=hello-service    //为服务命名

                   eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka/   //指定服务注册中心地址

        

         高可用注册中心:

        

Eureka Server的高可用实际上就是讲自己作为服务向其他服务注册中心注册自己,这样就可以形成一组相互注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。

构建一个双节点的服务注册中心集群:

 

 

         服务提供方也要做相应的改动:

         Eureka.client.serviceurl.defaultZone=http://peer:1111/eureka/,http://peer2:1112/eureka/

这样,服务就同时注册到了peer1和peer2上,若断开peer1,由于compute-service同时也向peer2注册,因此在peer2上的其他服务依然能访问heel-service,从而实现了服务注册中心的高可用。

         Eureka.instance.prefer-ip-address=true   //true使用IP地址来定义注册中心地址,false使用主机名

 

服务发现与消费:

         服务消费者主要完成两个目标:发现服务以及消费服务。其中发现服务的任务有Eureka的客户端完成,而消费服务的任务有Ribbon完成。Ribbon是一个基于TTP和TCP的客户端负载均衡器,它可以在通过客户端配置的ribbonServerList服务端列表去轮询访问已达到均衡负载的作用。在主类中通过@EnableDiscoveryClient注解让该应用注册为Eureka客户端应用,以获得服务发现的能力,同时在该主类中创建RestTemplate的Spring Bean实例,并通过@LoadBalanced注解开启客户端负载均衡。

 

Eureka详解

         Eureka服务治理体系中的三个核心角色:

服务注册中心:Eureka提供的服务端,提供服务注册与发现的功能

服务提供者:提供服务的应用,可以是Spring Boot应用,也可以是其他技术平台且遵循Eureka通信机制的应用,它将自己提供的服务注册到Eureka,以供其他应用发现。

服务消费者:消费者应用从服务注册中心获取服务列表,从而使消费者可以知道去何处调用其所需要的服务。

很多时候,客户端既是服务提供者也是服务消费者。

 

 

 

 

 

服务治理机制:

 

 

服务提供者

         服务注册

         “服务提供者”在启动的时候会通过发送REST请求的方式将自己注册到Eureka Server上,同时带上自身服务的一些元数据信息。Eureka Server接收到这个REST请求之后,将元数据信息存储在一个双层结构Map中,其中第一次的key是服务名,第二次的key是具体服务的实例名。

         服务同步:

         如上图架构图所示,两个服务提供者分别注册到了两个不同的服务注册中心上,它们的信息分别被两个服务注册中心所维护。由于服务注册中心之间相互注册为服务,当服务提供者发送注册请求到一个服务注册中心时,它会将该请求转发给集群中相连的其他注册中心,从而实现注册中心之间的服务同步。通过服务同步,两个服务提供者的服务信息就可以通过这两台服务注册中心的任意一台获取到。

         服务续约:

         在注册完服务之后,服务提供者会维护一个心跳用来持续告诉Eureka Server:“我还活着”,以防止Eureka Server的“剔除任务”将该服务实例从服务列表中排除出去,称该操作为服务续约(Renew)。

         关于服务续约有两个重要属性,我们可以关注并根据需要来进行调整:

         eureka.instance.lease-renewal-interval-in-seconds = 30      //定义服务续约任务的调用间隔时间,默认30s

         eureka.instance.lease-expiration-duration-in-seconds = 90  //定义服务失效的时间,默认为90s

 

         服务消费者

         获取服务

         当启动服务消费者的时候,它会发送一个REST请求给服务注册中心,来获取上面注册的服务清单。为了性能考虑,Eureka Server会维护一份只读的服务清单来返回给客户端,同时该缓存清单会每隔30s更新一次。

         eureka.client.fetch-registry = true // 设置能否获取服务

         eureka.client.registry-fetch-interval-seconds = 30  //缓存清单更新时间设置

         服务调用

         服务消费者在获取服务清单后,通过服务名可以获得具体提供服务的实例名和该实例的元数据信息。因为有这些服务实例的详细信息,所以客户端可以根据自己的需要决定具体调用哪些实例,在Ribbon中会默认采用轮询的方式进行调用,从而实现客户端的负载均衡。

         对应访问实例的选择,Eureka中有Region和Zone的概念,一个Region中可以包含多个Zone,每个服务客户端需要被注册到一个Zone中,所以每个客户端对应一个Region和一个Zone。在进行服务调用的时候,优先访问同处一个Zone中的服务提供方,若访问不到,就访问其他的Zone。

         服务下线

         在客户端程序中,当服务实例进行正常的关闭操作(关闭或者重启服务)时,它会出发一个服务下线的REST请求给Eureka Server,告诉服务注册中心:“我要下线了”。服务端在接收到请求之后,将该服务妆台置为下线(DOWN),并把该下线事件传播出去。

 

         服务注册中心

         失效剔除

         有时候,服务实例并不一定会正常下线,可能由于内存溢出,网络故障等原因使得服务不能正常工作,而服务注册中心并未收到“服务下线”的请求。为了从服务列表中将无法提供服务的实例剔除,Eureka Server 在启动时会创建一个定时任务,默认每隔一段时间(默认60s)将当前清单中超时(默认90s)没有续约的服务剔除出去。

         自我保护

         服务注册到Eureka Server之后,会维护一个心跳连接,告诉Eureka Server自己还活着。Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况(单机调试很容易满足,实际在生产环境上通常是由于网络不稳定导致),Eureka Server会将当前的实例注册信息保护起来,让这些实例不会过期,尽可能保护这些注册信息。但是,在这段保护期间内实例若出现问题,客户端很容易拿到实际已经不存在的服务实例,会出现调用失败的情况,所以客户端必须要有容错机制,比如可以使用请求重试,断路器等机制。

         在本地开发的时候,可以使用eureka.server.enable-self-preservation=false来关闭保护机制,以确保注册中心可以将不可用的实例正确剔除。

        

         配置详解

         在Eureka的服务治理体系中,主要分为服务端和客户端,服务端为服务注册中心,客户端为各个提供接口的微服务应用。当构建了高可用的注册中心后,该集群中所有的微服务应用和后续将要介绍的基础类应用(入配置中心,API网关等)都可以视作该体系下的一个微服务(Eureka客户端)。服务注册中心也是一样,只是高可用环境下的服务注册中心除了作为客户端之外,还为集群中的其他客户端提供服务注册的特殊功能。

         Eureka客户端的配置主要分为以下两个方面:

  1. 服务注册相关的配置信息,包括服务注册中心的地址,服务获取的间隔时间,可用区域等。
  2. 服务实例相关的配置信息,包括读物实例的名称,IP地址,端口号,健康检查路径等。

 

 

服务注册类配置

         指定注册中心:通过eureka.client.serviceUrl参数实现,该参数配置值存储在HahMap类型中,并且设置了一组默认值,默认值key为defaultZone,value为http://localhost:8761/eureka/。(配置多个服务注册中心用逗号分隔)

         其他配置:

 

 

服务实例类配置:

         元数据:元数据是Eureka客户端在向服务注册中心发送注册请求时,用来描述自身服务信息的对象,其中包含了一些标准化的元数据,比如服务名称,实例名称,实例IP,实例端口等用于服务治理的重要信息;以及一些用于负载均衡策略或是其他特殊用途的自定义元数据信息。

 

客户端负载均衡:Spring Cloud Ribbon

         Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,基于Netflix Ribbon实现。微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续的Feign。

         客户端负载均衡

         负载均衡是对系统高可用,网络压力的缓解和处理能力扩容的重要手段之一。通常所说的负载均衡都指的是服务端负载均衡,其中发呢为硬件负载均衡和软件负载均衡。硬件负载均衡主要通过在服务器节点之间安装专门用于负载均衡的设备,比如F5等;而软件负载均衡则是通过在服务器上安装一些具有负载均衡功能或模块的软件来完成请求分发工作,比如Nginx。架构如下:

         硬件和软件负载均衡都会维护一个下挂可用的服务端清单,通过心跳检测来剔除故障的服务器节点以保证清单中都是可以正常访问的服务端节点。当客户端发送请求到负载均衡设备的时候,该设备按某种算法(比如线性轮询,按权重负载,按流量负载等)从维护的可用服务端清单中取出一台服务端的地址,然后进行转发。

         客户端负载均衡和服务端负载均衡最大的不通电在于服务清单所存储的位置。在客户端负载均衡中,所有客户端节点都维护者自己要访问的服务端清单,这些服务端的清单来自于服务注册中心。同负载均衡的架构类似,在客户端负载均衡中也需要心跳去维护服务端清单的健康性。

 

RestTemplate详解

RestTemplate会使用Ribbon的自动化配置,同时通过配置@LoadBalanced还能够开启客户端负载均衡。

下面详细介绍RestTemplate针对几种不同请求类型和参数类型的服务调用实现:

GET请求

在RestTemplate中,对GET请求可以通过下面两种方法进行调用实现:

第一种:getForEntity函数。该方法返回的是ResponseEntity,该对象是Spring对HTTP请求响应的封装,其中主要存储了HTTP的几个重要元素,比如HTTP请求状态码的枚举对象HttpStatus(也就是常说的404,500这些状态码),在它的父类HttpEntity中还存储者HTTP请求的头信息对象HttpHeader以及泛型类型的请求体对象。

比如下面的例子,就是访问USER-SERVER服务的/user请求,返回的ResponseEntity对象中的body内容会根据第二个参数转换为String类型。

 

若希望返回的body是一个User对象类型,可以这项实现:

 

 

         getForEntity函数实际上提供了以下三种不同的重载实现:

         1. getForEntity(String url,Class responseType,Object …urlVariables)该方法提供了三个参数,url为请求的地址,responseType为请求响应体body的包装类型,UrlVariables为url中的参数绑定。例如:ResponseEntity<String> tity =restTemplate.getForentity(http://USER-SERVICE/user?name={1},String class,”didi”);

         2. getForEntity(String url,Class responseType,Map urlVariables),例如:

 

         3. getForEntity(URI url,Class responseType):该方法使用URI对象来替代之前的url和urlVarivables参数来指定访问地址和参数绑定。URI是JDK java.net包下的一个类,表示一个统一资源标识符引用。例如:

 

 

         第二种:getForObject函数。该方法可以理解为对getForEntity的进一步封装,它通过HttpMessageConverterExtractor对HTTP请求响应体body内容进行对象转换,实现请求直接返回包装好的对象内容。比如:

当body是一个User对象时,可以直接这样实现:

同样也提供了三种不同的重载实现:

  1. getForObject(String url,Class responseType,Object … urlVariables);
  2. getForObject(String url,Class responseType,Map urlVariables);(Map类型中的key需要与url中占位符名称一一对应)
  3. getForObject(URI url,Class responseType);

POST请求

         在RestForEntity中,对POST请求时可以通过如下三个方法进行调用实现。

         第一种:postForEntity函数。

 

         三种不同的重载方法。

         1. postForEntity(String url,object request,Class responseType,Object …uriVariables);

         2. postForEntity(String url,object request,Class responseType,Map uriVariables);

         3. postForEntity(URI url,object request,Class responseType);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

相关文章

  1. 华为的5G到底有多厉害?

    近日英国数字化、文化、媒体和体育大臣奥利弗道登发表声明称,英国移动运营商被禁止在2020年12月31日以后购买新的华为5G设备,并且必须在2027年前从它们的网络中移除华为的所有5G设备。华为英国发言人爱德华布鲁斯特发表声明回应称,该决定“令人失望”,这可能会让英国落入数…...

    2024/4/12 21:18:04
  2. PMP章节练习(第三章:项目运行环境)

    1、下面哪一个不是项目经理的人际关系技能的内容:A领导力B团队建设C激励D实践能力2、项目经理拥有的权力与什么有关?A项目经理的沟通技能B组织结构C项目经理的领导所拥有的权力D项目经理的影响能力3、项目经理在组织内的影响力描述,最合适的是?A项目经理应该积极的与组织中其…...

    2024/4/10 20:10:35
  3. 从session原理出发解决微信小程序的登陆问题

    对于已经熟悉了session原理的同学来说,我们都清楚:在浏览器端我们会存储一个sessionId,用它来作为凭证,在服务器端得到有关本次浏览器与服务器会话的所有信息,这些信息是储存在服务器端的存储空间中的,它完全可以用来判断一个浏览器端的登录状态,因为它是由服务器端来掌…...

    2024/4/10 15:37:38
  4. 前端开发会被淘汰吗?外行人对WEB前端开发工程师的误解

    网传有个技术团队做了个移动端的APP,发布上线时候称可以直接生成网页效果,于是有很多人一下子慌了。 最近就有不少人纷纷来问我,“现在手机APP可以直接生成网页了,都可以取代前端开发工程师的工作了,以后APP发展越来越厉害,前端开发工程师的产品应用是不是更少了,前端开…...

    2024/4/19 1:01:25
  5. vba自定义函数,设置加载宏,建立自己的excel函数库,代码库

    今天的文章真的厉害了,我们都知道excel有很多强大的函数。比如sum,count,if非常的好用。那我们能不能自己定义函数来使用呢!当然可以,下面我们就来定义函数并且使用它。案例一:提取身份证中的生日,如下图:用excel自带的函数也可以实现方法1.MID(A1,7,4)&"/"…...

    2024/4/10 10:32:43
  6. 爬虫代理的获取和使用

    近年来互联网的快速发展,各行各业发展尤为迅速,大数据时代来临,爬虫行业迎来高速发展,http代理的作用也日益重要。近几年来,各种代理IP的推出吸引了不少人的关注,到底什么是代理IP呢?简单的讲代理IP指的是代理服务器,它存在于网络连接的中间段,使用代理IP可以伪装用户…...

    2024/4/10 19:13:40
  7. 网站ftp上传工具,网站ftp上传工具哪个好用,3款推荐

    可能很多人都不太熟悉什么是网站ftp上传工具,但是这个工具使用的人还是非常多的,比如那些从事网站管理的人员。他们的日常工作中接触的最多的工具可能就是网站ftp上传工具。这款工具一般是英文版的偏多,那有没有我们中国自己的版本呢?小编知道有一款很好用的网站ftp上传工具…...

    2024/4/10 9:53:46
  8. 责任链思想

    定义需要检查的信息message(Msg)类,代表需要存入到后台的数据。这些典型设置他应该具有的属性(用户名,需要存储的信息)。方法。class Msg{String name;String msg;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}@Overridepublic…...

    2024/4/29 16:02:40
  9. 数据库开发

    这里写自定义目录标题实习两周的收获技术性格 实习两周的收获 技术感受到写博客的重要性以及去一个好公司的重要性和技术的重要性,今天是我第一次尝试去写博客,但是我希望把写博客作为自己的一个习惯,因为每天的归纳总结真的太重要了,至于说去一个好公司,首先今天有个同学…...

    2024/4/12 19:56:08
  10. Leetcode 535. TinyURL 的加密与解密 C++

    Leetcode 535. TinyURL 的加密与解密 题目 TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk. 要求:设计一个 TinyURL 的加密 encode 和解密 decode 的方法。你的加密和…...

    2024/4/18 21:41:36
  11. Pikachu靶场实战 xss篇

    pikachu xssxss反射型xss(get)反射型xss(post)存储型xssDom型xssDOM型xss-xxss之盲打xss之过滤xss之htmlspecialcharsxss之href输出xss之js输出 xss 跨站脚本(Cross-Site Scripting)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注…...

    2024/4/10 15:37:40
  12. C语言程序设计第五版谭浩强课后答案 第四章习题答案 选择结构程序设计答案

    C语言程序设计第五版谭浩强课后答案 第四章习题答案 选择结构程序设计 1. 什么是算术运算?什么是关系运算?什么是逻辑运算? 【答案解析】 算熟运算: 算术运算即“四则运算”,是加法、减法、乘法、除法、乘方、开方等几种运算的统称。 其中加减为一级运算,乘除为二级运算,…...

    2024/4/10 2:56:45
  13. 人该怎样活着呢27?

    🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎 人该怎样活着呢27? 一、我的世界观: 人间是美好的!(20200701) 【 因为人间有朋友呀!(20200716) 】 二、我的人生观 知识就是力量!【培根】(20200629) 【 所以活到老学到老!(20200716) 】 三、我的价值观 身心健康读书笔…...

    2024/4/26 9:10:28
  14. docker 镜像加速器设置

    docker 镜像加速器设置 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 账号:测试刀客 密码:zj@123456逐条执行 ok...

    2024/4/10 11:38:35
  15. Kotlin真香系列第二弹:类型初探

    目录写在前面一、类和接口1.1、类1.2、接口1.3、抽象类1.4、属性1.5、属性引用二、扩展方法2.1、扩展方法2.2、扩展属性三、空类型安全3.1、空类型安全的概念3.2、空类型的继承关系3.3、平台类型四、智能类型转换4.1、智能类型转换的用法4.2、不支持智能转换的情况4.3、类型的安…...

    2024/4/10 18:04:29
  16. 我是怎么在腾讯云上使用URLOS一键安装Discuz! Q的

    在腾讯云上通过URLOS安装Discuz! Q 起因 之前帮朋友安装Discuz! Q,用的是官方提供的方法。碰巧,今天又有一个朋友说想要安装Discuz! Q体验一下,索性就在腾讯云上用URLOS一键安装算了。 相信很多朋友都用过或听说过Discuz,使用过的朋友都知道,他是一个国内老牌的社区系统,…...

    2024/4/10 18:44:41
  17. Linux学习-----Chapter eight

    iptables与firewalld防火墙 本章讲解了如下内容:防火墙管理工具;iptables;firewalld;服务的访问控制列表。本章将分别使用iptables、firewall-cmd、firewall-config和TCP Wrappers等防火墙策略配置服务来完成数十个根据真实工作需求而设计的防火墙策略配置实验。在…...

    2024/4/17 4:26:37
  18. Linux 内核移植

    NXP 官方开发板 Linux 内核编译 37.2.1 修改顶层 Makefile 修改顶层 Makefile,直接在顶层 Makefile 文件里面定义 ARCH 和 CROSS_COMPILE 这两 个的变量值为 arm 和 arm-linux-gnueabihf- 37.2.2 配置并编译 Linux 内核 和 uboot 一样,在编译 Linux 内核之前要先配置 Linux 内…...

    2024/4/18 19:44:56
  19. 中台建设过程三大挑战、数据治理中七大要素及两个案例

    以下文章来源于奇点云随着企业信息化程度越来越高,企业掌握的数据量从原来的TB级发展到PB级,再到EB级甚至往ZB级别发展。数据形式也在从原来的结构化数据为主转变为以日志、视频、图片、语音等非结构化数据为主。然而,数据存储和计算、数据组织的运行都是有成本的。当数据消…...

    2024/4/26 19:25:20
  20. 随笔#2 入门HTML

    第一次接触html 继续学习渗透测试,接触到了html这门语言,感觉自己离开始渗透测试都差的很远,毕竟这块我是一点都不懂。下载了sublime作为编辑器,附上下载链接。 So…HTML是一种标记语言而不是编程语言?也就是说实际上它是用一套标记标签来描述网页的,HTML文档就是网页,W…...

    2024/4/18 10:48:38

最新文章

  1. 24.哀家要长脑子了!

    目录 1.594. 最长和谐子序列 - 力扣&#xff08;LeetCode&#xff09; 2.350. 两个数组的交集 II - 力扣&#xff08;LeetCode&#xff09; 3.554. 砖墙 - 力扣&#xff08;LeetCode&#xff09; 4.9. 回文数 - 力扣&#xff08;LeetCode&#xff09; 5.13. 罗马数字转整数 …...

    2024/5/4 15:43:41
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. yolov9直接调用zed相机实现三维测距(python)

    yolov9直接调用zed相机实现三维测距&#xff08;python&#xff09; 1. 相关配置2. 相关代码2.1 相机设置2.2 测距模块2.2 实验结果 相关链接 此项目直接调用zed相机实现三维测距&#xff0c;无需标定&#xff0c;相关内容如下&#xff1a; 1. yolov4直接调用zed相机实现三维测…...

    2024/5/3 15:22:43
  4. 磁盘管理与文件管理

    文章目录 一、磁盘结构二、MBR与磁盘分区分区的优势与缺点分区的方式文件系统分区工具挂载与解挂载 一、磁盘结构 1.硬盘结构 硬盘分类&#xff1a; 1.机械硬盘&#xff1a;靠磁头转动找数据 慢 便宜 2.固态硬盘&#xff1a;靠芯片去找数据 快 贵 硬盘的数据结构&#xff1a;…...

    2024/5/1 13:00:58
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/4 12:05:22
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/4 11:23:32
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/4 14:46:16
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/3 16:00:51
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/4 12:10:13
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/3 21:22:01
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/3 23:17:01
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/4 14:46:12
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/4 14:46:11
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/4 14:46:11
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/4 2:14:16
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/3 16:23:03
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/4 12:39:12
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/4 13:16:06
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/3 14:57:24
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/4 14:46:05
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/4 2:00:16
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/3 22:03:11
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/4 9:07:39
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/4 14:46:02
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57