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

SpringCloud常见问题

1、什么是Spring Cloud?

Spring Cloud是一款基于Spring Boot框架开发的微服务框架,它为开发人员提供了一系列的组件和工具,可以帮助开发人员快速构建和部署微服务,提高开发效率和项目可维护性。Spring Cloud提供了包括服务注册与发现、配置中心、负载均衡、断路器、分布式跟踪等一系列的功能和组件,可以帮助开发人员快速构建和部署微服务。

2、使用Spring Cloud有什么优势?
  1. 简化微服务开发:Spring Cloud提供了一套完整的微服务解决方案,包括服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列等,使得开发人员可以快速构建和部署微服务应用。
  2. 提高微服务可靠性:Spring Cloud提供了断路器、重试机制、容错机制等功能,可以提高微服务的可靠性和稳定性。
  3. 统一管理微服务配置:Spring Cloud提供了配置中心组件,可以将微服务的配置信息集中管理,方便维护和更新。
  4. 支持多种微服务生态系统:Spring Cloud集成了多个开源微服务生态系统,如Consul、Eureka、Zookeeper等,可以根据具体需求选择合适的组件。
  5. 易于集成:Spring Cloud与Spring Boot集成紧密,开发人员可以充分利用Spring Boot的开发便利性,快速构建和部署微服务应用。
3、Spring Boot与Spring Cloud的区别?
  1. 目标不同:Spring Boot的目标是简化Spring应用程序的开发和部署,而Spring Cloud的目标是为微服务提供一套综合性的解决方案。
  2. 功能不同:Spring Boot主要提供了自动配置、快速开发、内嵌服务器等功能,而Spring Cloud则提供了服务注册、配置中心、负载均衡、断路器、网关等微服务相关的功能。
  3. 集成方式不同:Spring Boot可以作为一个基础框架,用来开发和部署单个应用程序,也可以作为一个模块集成到其他框架中,如Spring Cloud。而Spring Cloud是基于Spring Boot构建的,需要依赖Spring Boot才能使用。
  4. 适用场景不同:Spring Boot主要适用于单个应用程序的开发和部署,而Spring Cloud则适用于大规模分布式系统的开发和部署。
4、Spring Cloud与Dubbo由什么区别?
  1. 设计理念不同:Spring Cloud基于Spring Boot构建的微服务框架,强调服务之间的解耦和高度灵活性;而Dubbo是阿里巴巴推出的RPC框架,强调服务的高性能和可靠性。
  2. 服务注册与发现:Spring Cloud使用Eureka或Consul等服务注册中心来管理服务实例,并提供服务注册和发现的功能;而Dubbo则使用自己的服务注册中心–ZooKeeper来管理服务实例,并提供服务注册和发现的功能。
  3. 服务调用方式:Spring Cloud使用HTTP协议进行服务之间的通信,并且支持RESTful API风格;而Dubbo则采用RPC协议进行服务之间的通信,通常采用Java对象来传递数据。
  4. 跨语言支持:Spring Cloud支持多种语言(如Node.js、Ruby等),而Dubbo主要支持Java语言。
  5. 社区活跃度:Spring Cloud是目前最为流行的微服务框架之一,拥有活跃的开发者社区和丰富的生态系统;而Dubbo的开发者社区相对较小,生态系统也不如Spring Cloud完善。
5、Spring Cloud核⼼组件有哪些?
  1. Eureka:服务注册与发现组件,用于管理服务的注册和发现。
  2. Ribbon:客户端负载均衡组件,可以在服务间进行负载均衡。
  3. OpenFeign:声明式服务调用框架,用于在不同的微服务之间进行服务调用。
  4. Gateway:提供新一代API网关的支持,可以实现请求的路由和转发。
  5. Hystrix:熔断器组件,用于防止服务雪崩效应,提供了容错和容错能力。
  6. Config:配置中心组件,用于管理应用程序的配置信息。
  7. Sleuth:分布式追踪组件,用于跟踪服务间的调用链路。
  8. Security:提供安全性的支持,可以实现OAuth2和Spring Security的集成。
  9. Bus:提供事件、消息总线的支持,可以实现分布式系统中的消息通信。
  10. Stream:流式处理组件,用于处理实时数据流。
6、什么是Eureka?

Eureka是Netflix开源的一种服务发现框架,用于在分布式系统中提供服务注册和发现的功能。服务提供者将自己的信息注册到Eureka Server上,服务消费者从Eureka Server获取服务提供者的信息,从而进行服务调用。

7、Eureka有哪两大组件?

Eureka有两大组件:Eureka Server和Eureka Client。

  • Eureka Server:Eureka Server是Eureka的核心组件,提供服务注册和发现功能。它维护了一个注册表,保存了所有Eureka Client实例的信息,并提供RESTful API供其他服务查询实例信息。
  • Eureka Client:Eureka Client是Eureka的客户端组件,用于将服务实例信息注册到Eureka Server,同时也负责从Eureka Server中拉取服务实例信息,并缓存到本地。
8、Eureka如何实现高可用?

Eureka通过多个Eureka Server实例和Eureka Client实例的集群部署,当集群中的某个节点发生故障时,其他正常的节点依然可以提供完整的服务。以及自我保护机制和心跳检测等机制,来实现服务注册和发现的高可用性。

9、什么是Eureka的心跳检测机制?

Eureka的心跳检测机制是一种用于维护服务实例的健康状态的机制。每个Eureka Client都会在初始化时向Eureka Server注册自己的信息,并定期发送心跳信号。Eureka Server会在收到服务实例的心跳信号后,更新该实例的信息,并将其标记为“健康状态”。如果Eureka Server在一定时间内没有收到服务实例的心跳信号,就会将该实例的状态标记为“不健康”,并将其从服务注册表中移除,以避免客户端请求失败。

Eureka Client也可以通过配置文件设置心跳间隔时间和重试次数等参数,以保证心跳信号的可靠性和稳定性。同时,Eureka Server也会定期向所有已注册的服务实例发送心跳信号,以确认它们是否仍然处于活动状态。

实际上,心跳检测机制有一定的不确定性,比如服务提供者可能是正常的,但是由于网络通信或者其它的问题,导致在90s内Eureka Server没有收到该服务的心跳请求,那么Eureka Server将会把这个健康的服务误杀。

9、什么是Eureka的自我保护机制?

Eureka的自我保护机制是一种容错机制,主要是为了防止因网络分区而导致数据不一致的情况。当Eureka Server检测到网络分区或其他异常情况时,会进入自我保护模式。在自我保护模式下:

  • Eureka Server会保护服务注册表中的信息,不再删除服务注册表中的数据。
  • Eureka Server仍然能够接收新服务的注册和查询请求,但是不会被同步到其它节点上,保证当前节点依然可用。
  • Eureka Server会定期尝试与其他节点通信,当网络恢复稳定时,将当前Eureka Server新的注册信息同步到其它节点中,以恢复服务的数据一致性。
10、为什么Eureka要使用自我保护机制?

通过自我保护机制,Eureka可以保证在网络分区或其他异常情况下,注册中心的高可用性。也因此实现了CAP中的A(高可用性)、P(分区容错性)。

11、如何设置Eureka的自我保护机制?
# 默认为true,开启自我保护机制,设置成false时会关闭自我保护机制
eureka.server.enable-self-preservation=false# 低于85%的客户端节点都没有正常的心跳时,Eureka Server自动进入自我保护状态
eureka.server.renewal-percent-threshold=0.85
12、什么是Ribbon?

Ribbon是一个基于HTTP和TCP的负载均衡客户端组件,它是Netflix OSS框架的一部分。Ribbon可以帮助我们在应用程序中实现负载均衡,使得流量可以被均匀地分配到多个实例上,从而提高应用程序的可用性和可伸缩性。

13、Ribbon底层实现原理是什么?

Ribbon的底层实现原理主要包括服务注册与发现、负载均衡算法、请求重试机制、断路器和缓存机制等方面。通过这些机制的协同作用,Ribbon可以帮助我们在分布式环境中实现负载均衡和容错,提高应用程序的可靠性和可扩展性。

14、Ribbon的负载均衡算法有哪些?
  1. 轮询(Round Robin):轮询是最简单的负载均衡策略,将请求依次分配给每个实例,循环进行。
  2. 随机(Random):随机算法随机选择一个实例处理请求,可以通过增加实例数来提高负载均衡效果。
  3. 权重(Weight):权重算法可以给每个实例分配一个权重值,根据权重值来决定请求分配给哪个实例。
  4. 最少活跃连接(Least Connection):最少活跃连接算法将请求分配给活跃连接数最少的实例,可以有效避免热点问题。
  5. 一致性哈希(Consistent Hash):一致性哈希算法可以将请求分配给与请求参数一致性哈希值最近的实例,可以避免数据不均衡问题。
  6. 响应时间(Response Time):响应时间算法将请求分配给响应时间最短的实例,可以提高请求的响应速度。
15、Ribbon客户端负载均衡与Nginx服务端负载均衡有什么区别?
  • Ribbon是正向代理,它的作用范围仅限于客户端应用程序内部。主要用于将客户端的请求分发到多个服务实例上,以实现负载均衡的效果。
  • Nginx则是一个反向代理服务器,它的作用范围是整个服务端应用程序。主要用于接收来自客户端的请求并发送到后端的多个服务实例上,以实现负载均衡的效果。
16、什么是OpenFeign?

OpenFeign是一个非常方便和易用的声明式Web服务客户端。它可以让开发人员以一种简单而优雅的方式创建可重用的HTTP客户端,可以大大简化Web服务调用的编写和管理。OpenFeign在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

17、OpenFeign和Feign有什么区别?
  1. 所属框架不同:OpenFeign是Spring Cloud生态系统中的一部分,而Feign是Netflix开源的一个组件。
  2. 编码和解码器不同:OpenFeign支持可拔插式的编码和解码器,可以根据需要自定义编码和解码器,而Feign使用了Netflix自己的编解码器。
  3. 集成方式:OpenFeign可以与Spring Cloud生态系统中的其他组件进行无缝集成,如Spring MVC、Spring Cloud HTTP Client等,而Feign可以与Netflix的其他组件进行集成,如Eureka、Zuul等。
  4. 支持的注解不同:OpenFeign支持Spring MVC的注解,如@RequestMapping和@GetMapping等,而Feign支持JAX-RS的注解,如@GET和@Path等。
  5. 社区支持:OpenFeign是Spring Cloud的一部分,受到Spring社区的广泛支持,而Feign则是Netflix框架的一部分,目前已经停止维护。
18、OpenFeign与Ribbon的区别?
  1. 功能不同:OpenFeign是一个声明式Web服务客户端,可以通过注解的方式来定义服务调用;而Ribbon是一个负载均衡器,可以通过负载均衡算法来选择合适的服务提供者。
  2. 使用方式不同:OpenFeign可以直接通过注解的方式来定义服务调用,非常方便;而Ribbon需要通过代码来调用服务,相对来说比较繁琐。
  3. 集成方式不同:OpenFeign可以与Spring Cloud生态系统中的其他组件进行无缝集成,如Spring MVC和Spring Cloud HTTP Client等;而Ribbon则需要自己编写代码来进行集成。
  4. 适用场景不同:OpenFeign适合用于编写服务消费端的代码,可以通过注解的方式来定义服务调用;而Ribbon适合用于负载均衡的场景,可以通过负载均衡算法来选择合适的服务提供者。
19、OpenFeign的超时控制是什么?

在使用OpenFeign进行服务调用时,默认等待时长为1秒钟,超过后报错。当我们调用的接口耗时较长时,往往1秒之内无法获取到响应结果,为了防止因为网络或服务端问题导致请求一直等待或者超时报错,可以设置延长OpenFeign接口的请求等待时间来解决这一问题。OpenFeign的超时控制主要涉及以下几个参数:

  1. timeout:表示OpenFeign的全局超时时间,单位为毫秒。可以在OpenFeign的配置中进行设置,也可以在每个接口方法上使用注解进行设置。
  2. readTimeout:表示OpenFeign的读取超时时间,单位为毫秒。表示在读取响应内容时的超时时间。
  3. connectTimeout:表示OpenFeign的连接超时时间,单位为毫秒。表示在建立连接时的超时时间。
  4. retryOnTimeout:表示在超时后是否进行重试。默认情况下,OpenFeign会在超时时进行重试。
20、什么是Gateway?

Gateway是Netflix开源的一款功能强大、灵活可靠的API网关,它提供了路由、负载均衡、熔断、监控等功能,可以帮助开发人员轻松地构建和管理微服务应用程序。在微服务架构中,由于存在大量的小型服务,因此需要一种机制来统一管理和路由这些服务。这就是API网关的作用。API网关是一个中央节点,可以将所有的客户端请求转发到相应的服务,同时还可以提供一些额外的功能,如身份验证、监控等。

21、Gateway有哪些特点?
  1. 基于Netty的高性能:Gateway是基于Netty框架开发的,因此具有很高的性能和扩展性。
  2. 支持多种协议:Gateway支持多种协议,包括HTTP、TCP、WebSocket等。
  3. 动态路由:Gateway可以根据请求的信息动态地将请求路由到相应的服务。
  4. 内置负载均衡:Gateway内置了负载均衡功能,可以根据不同的负载均衡算法进行请求分发。
  5. 熔断器:Gateway内置了熔断器功能,可以在服务发生故障时,快速地将请求转移到备用服务,从而保证系统的可用性。
  6. 监控:Gateway提供了丰富的监控功能,可以实时地监控服务的状态和性能指标。
22、Gateway与Zuul有哪些区别?

Gateway和Zuul都是Netflix开源的API网关,它们都具有路由、负载均衡、熔断等功能,但是它们在设计理念、架构和功能上还是有一些区别的。

  1. 设计理念不同:Gateway强调的是基于Spring生态圈的开发,它的设计理念是通过简单而强大的抽象来简化复杂的问题,而Zuul则更注重于提供强大的功能和配置选项,它的设计理念是让用户可以通过配置来实现各种复杂的路由逻辑。
  2. 架构不同:Gateway采用了基于Spring Boot的自动配置和约定大于配置的理念,它的架构更加简单和轻量级,而Zuul则采用了更加复杂的架构,包括多个模块和组件,例如Zuul Core、Ribbon、Hystrix等等。
  3. 功能不同:Gateway的功能相对于Zuul来说更加简单,它只提供了基本的路由、负载均衡和熔断等功能,而Zuul则提供了更多的高级功能,例如动态路由、服务发现、安全策略、监控等等。
  4. 性能不同:Gateway采用了基于Netty的高性能架构,它的性能比Zuul更加优秀,而Zuul则是基于Java的传统IO模型,它的性能相对较差。
23、Gateway的核心流程是什么?

Gateway的核心流程可以简单地概括为以下几个步骤:

  1. 客户端发送请求到Gateway的前端网关。
  2. Gateway的前端网关将请求转发到对应的路由,并根据路由的配置进行负载均衡和容错处理。
  3. 路由将请求转发到相应的服务实例。
  4. 服务实例处理请求,并将结果返回给Gateway的后端网关。
  5. Gateway的后端网关将结果返回给前端网关。
  6. 前端网关将结果返回给客户端。
24、GateWay的核心思想有哪些?

GateWay的三个核心思想是Route、Predicate和Filter,这三个核心思想相互协作,实现了请求的路由、过滤和转发等功能,使得服务的请求可以更加高效和可靠地被处理。

  1. Route:表示路由,它指定了请求应该被转发到哪个服务实例。在GateWay中,可以通过配置路由来实现请求的负载均衡和请求转发。
  2. Predicate:表示断言,它用于匹配请求并决定是否路由到相应的服务实例。在GateWay中,可以通过配置断言来实现请求的路由控制和请求过滤。
  3. Filter:表示过滤器,它用于在请求被路由到服务实例之前或之后进行一些处理,如身份验证、请求转发、日志记录等。在GateWay中,可以通过配置过滤器来实现请求的拦截和处理。
25、GateWay常用的Predicate断言有哪些?
  1. Path:用于匹配URL路径,可以使用Ant风格的路径表达式进行匹配。
  2. Method:用于匹配HTTP请求方法,可以匹配GET、POST、PUT、DELETE等请求方法。
  3. Header:用于匹配请求头,可以匹配请求头的名称和值。
  4. Host:用于匹配请求的主机名,可以匹配请求的完整主机名或者主机名的前缀。
  5. Weight:用于匹配请求的权重,可以将请求路由到不同的服务实例,根据不同的权重进行负载均衡。
  6. Regex:用于使用正则表达式匹配请求的URL路径、请求头等。
  7. And、Or:用于将多个Predicate组合起来,实现复杂的断言逻辑。
26、什么是Hystrix?

Hystrix是一种开源的延迟和容错库,可以应用于分布式系统中,用于解决分布式系统中的服务雪崩效应和容错问题。在分布式系统中,由于服务之间的依赖关系,一个服务的故障可能会导致整个系统的故障。Hystrix通过引入断路器模式,在服务调用失败时自动进行故障转移,避免了级联故障的发生,提高了系统的可用性和稳定性。

27、Hystrix的特性有哪些?
  1. 服务熔断:当某个依赖服务出现问题时,Hystrix会自动切断对该服务的请求,防止故障扩散。
  2. 服务降级:当依赖服务响应时间过长或者超时时,Hystrix会返回一个默认的响应,以保证服务的可用性。
  3. 线程和信号隔离:Hystrix使用线程池隔离和信号量隔离两种方式,将不同的依赖服务请求隔离在不同的线程池或信号量中,避免相互影响。
  4. 请求缓存:Hystrix可以缓存依赖服务的响应,避免重复请求,减轻依赖服务的压力。
  5. 请求合并:Hystrix可以将多个请求合并为一个请求,减少网络开销和依赖服务的压力。
  6. 监控和报警:Hystrix提供了丰富的监控和报警功能,可以实时监控依赖服务的状态和性能指标,并在出现故障时发送报警通知。
28、Hystrix工作流程?

Hystrix的工作流程可以简单概括为以下几个步骤:

  1. 命令请求:客户端通过Hystrix发起一个请求,将请求包装成一个HystrixCommand或HystrixObservableCommand对象。
  2. 线程池准备:Hystrix将请求发送到线程池中,并等待线程池分配可用线程。
  3. 命令执行:线程分配成功后,HystrixCommand或HystrixObservableCommand对象开始执行请求,执行过程中可以进行一些操作,如请求缓存、请求合并、请求缓存等。
  4. 错误处理:如果请求执行过程中发生异常,Hystrix会根据配置的容错策略进行处理,如重试、切换备用依赖、请求降级等。
  5. 请求完成:如果请求成功完成,Hystrix会将响应结果返回给客户端。
  6. 统计信息:Hystrix会对请求的执行情况进行统计和监控,包括请求次数、响应时间、错误率等,以便开发人员进行性能分析和故障排查。
29、Hystrix中服务降级和服务熔断有什么区别?
  • 服务熔断:是一种预防性策略,用于在服务出现故障或异常时,防止故障进一步扩大。当服务调用失败次数达到一定阈值时,Hystrix会直接返回一个预设的默认值或者错误提示,避免故障在系统中传播。

  • 服务降级:是一种应急性策略,用于在服务出现故障或异常时,尽可能保持系统的可用性和稳定性。当服务调用失败次数达到一定阈值时,Hystrix会将请求转发到备用服务或者直接返回一个默认值,以保证系统的正常运行。

30、Hystrix的服务熔断有哪几种状态
  1. 关闭状态(Closed State):在此状态下,熔断器不执行任何服务降级,请求将直接发送到依赖服务。
  2. 半关闭状态(Half-Open State):在此状态下,熔断器允许有限数量的请求发送到依赖服务,如果这些请求成功完成,则熔断器将切换回关闭状态。如果这些请求中有一个失败,则熔断器将再次切换到打开状态。
  3. 打开状态(Open State):在此状态下,所有请求将被服务降级,不会发送到依赖服务。
31、Hystrix断路器的三个重要参数是什么?
  1. requestVolumeThreshold:该参数表示在一个给定的时间窗口内,需要至少执行多少个请求,才会启用Hystrix断路器。如果在该时间窗口内,请求的数量低于该阈值,则Hystrix断路器不会被启用。
  2. errorThresholdPercentage:该参数表示在一个给定的时间窗口内,请求的错误率超过多少百分比,才会启用Hystrix断路器。如果在该时间窗口内,请求的错误率低于该阈值,则Hystrix断路器不会被启用。
  3. sleepWindowInMilliseconds:该参数表示在断路器打开后,需要等待多久才会关闭。该时间窗口称为“睡眠窗口”,在此期间,所有请求都将被拒绝,直到窗口结束,断路器才会关闭。

相关文章:

SpringCloud常见问题

1、什么是Spring Cloud? Spring Cloud是一款基于Spring Boot框架开发的微服务框架,它为开发人员提供了一系列的组件和工具,可以帮助开发人员快速构建和部署微服务,提高开发效率和项目可维护性。Spring Cloud提供了包括服务注册与…...

实战演练 | 在 Navicat 中格式化日期和时间

Navicat 支持团队收到来自用户常问的一个问题是,如何将网格和表单视图中的日期和时间进行格式化。其实这个很简单。今天,我们将介绍在 Navicat Premium 中进行全局修改日期和时间格式的步骤。 如果你想边学边用,欢迎点击 这里 下载免费全功能…...

mysql面试题分享带答案

数据库索引的原理,为什么要用B树,为什么不用二叉树? 可以从几个维度去看这个问题,查询是否够快,效率是否稳定,存储数据多少,以及查找磁盘次数,为什么不是二叉树,为什么不…...

利用 Python进行数据分析实验(一)

一、实验目的 使用Python解决简单问题 二、实验要求 自主编写并运行代码,按照模板要求撰写实验报告 三、实验步骤 本次实验共有5题: 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少&…...

Jupyter Notebook工具

Jupyter Notebook 是一个交互式的笔记本环境,允许用户以网页形式编写和分享代码、文本、图像以及其它多媒体内容。它支持超过 40 种编程语言,最常用的是 Python。 以下是 Jupyter Notebook 工具的一些特点和用法: 1. 特点: 交互式…...

c语言上机小练(有点难)

1.题目 用指向数组的指针编程实现:输入一个字符串,内有数字和非数字符号,如:a123x456(此处一个空格)17960?302tab5876。将其中连续的数字作为一个十进制整数,依次存放到一个数组a中。例如&…...

<JavaEE> 什么是线程安全?产生线程不安全的原因和处理方式

目录 一、线程安全的概念 二、线程不安全经典示例 三、线程不安全的原因和处理方式 3.1 线程的随机调度和抢占式执行 3.2 修改共享数据 3.3 关键代码或指令不是“原子”的 3.4 内存可见性和指令重排序 四、Java标准库自带的线程安全类 一、线程安全的概念 线程安全是指…...

Kotlin 中的 also 和 run:选择正确的作用域函数

在 Kotlin 中,also 和 run 是两个十分有用的作用域函数。 虽然它们在功能上相似,但各自有独特的用途和适用场景。 一、分析: also:在对象的上下文中执行给定的代码块,并返回对象本身。它的参数是一个接收对象并返回…...

ZKP Understanding Nova (1): MinRoot Example

Understanding Nova Kothapalli, Abhiram, Srinath Setty, and Ioanna Tzialla. “Nova: Recursive zero-knowledge arguments from folding schemes.” Annual International Cryptology Conference. Cham: Springer Nature Switzerland, 2022. Nova: Paper Code 1. Unders…...

0基础学java-day14

一、集合 前面我们保存多个数据使用的是数组,那么数组有不足的地方,我们分析一下 1.数组 2 集合 数据类型也可以不一样 3.集合的框架体系 Java 的集合类很多,主要分为两大类,如图 :[背下来] package com.hspedu.c…...

创建conan包-工具链

创建conan包-工具链 1 Toolchains 本文是基于对conan官方文档Toolchains翻译而来, 更详细的信息可以去查阅conan官方文档。 1 Toolchains Toolchains are the new way to integrate with build systems in Conan. Recipes can define a generate() method that wi…...

IntelliJ IDE 插件开发 | (二)UI 界面与数据持久化

系列文章 IntelliJ IDE 插件开发 |(一)快速入门 前言 在上一篇文章中介绍了在IDEA下开发、运行和安装插件的基本步骤,因此创建项目等基础步骤不再赘述,本文则开始介绍如何进行 UI 界面的开发以及相关数据的持久化存储&#xff…...

使用vue UI安装路由插件

1.使用vue创建项目 vue create vue-appvue ui 2.使用vue ui界面创建管理项目 终端页面输入:vue ui 创建项目 安装完成。可以直接在ui界面运行,也可以在编辑器中使用命令运行 安装路由,安装状态 选择插件 - 添加vue-router、添加vuex 安装…...

RPG项目01_脚本代码

基于“RPG项目01_场景及人物动画管理器”,我们创建一个XML文档 在资源文件夹下创建一个文件夹, 命名为Xml 将Xnl文档拖拽至文件夹中, 再在文件夹的Manager下新建脚本LoadManager 写代码: using System.Collections; using System…...

目标检测YOLO实战应用案例100讲-交通目标数据集构建及高性能检测算法研究与应用

目录 前言 国内外研究现状 目标检测研究现状 目标检测数据集研究现状...

浅谈Vue.js的计算属性computed

什么是computed属性 computed 属性用于声明计算属性,这些属性的值是基于其他响应式属性计算而来的,当依赖的响应式属性发生变化时,计算属性会自动重新计算。 与Vue.js 2相比,Vue.js 3的 computed 属性语法稍有变化,不…...

Linux常用指令详解

目录 前言: Linux的目录结构 Linux常用指令简介 whoami指令 ls指令 pwd指令 cd指令 tree指令 touch指令 mkdir指令 rmdir指令与rm指令 man指令 cp(copy)指令 mv(move)指令 cat指令 重定向及重定向的类型…...

Nginx(性能优化)

到这里文章的篇幅较长了,最后再来聊一下关于Nginx的性能优化,主要就简单说说收益最高的几个优化项,在这块就不再展开叙述了,毕竟影响性能都有多方面原因导致的,比如网络、服务器硬件、操作系统、后端服务、程序自身、数…...

机器学习笔记 - 如何在Python中对网格和点云进行体素化?

一、简述 本文主要是为了了解如何生成体素表示,体素之于3D就像像素之于2D。体素本质上是 3D 像素,但它们不是正方形,而是完美的立方体。 理论上,体素是复制现实的完美建模技术。 这里我们要了解四个广泛流行的 Python 库(Open3D、Trimesh、PyVista、pyntcloud )生成点云…...

冒个泡!OceanBase亮相 2023 新加坡金融科技节

近日,OceanBase 亮相 Singapore Fintech Festival 2023(2023 新加坡金融科技节)!本届新加坡金融科技节于 2023 年 11 月 15 日至 17 日在新加坡博览展览中心举行,展会期间,OceanBase 得到了众多金融科技机构…...

正则表达式(5):常用符号

正则表达式(5):常用符号 小结 本博文转载自 在本博客中,”正则表达式”为一系列文章,如果你想要从头学习怎样在Linux中使用正则,可以参考此系列文章,直达链接如下: 在Linux中使用正…...

Web安全漏洞分析-XSS(下)

随着互联网的迅猛发展,Web应用的普及程度也愈发广泛。然而,随之而来的是各种安全威胁的不断涌现,其中最为常见而危险的之一就是跨站脚本攻击(Cross-Site Scripting,简称XSS)。XSS攻击一直以来都是Web安全领…...

金南瓜SECS/GEM C# SDK 快速使用指南

本文对如何使用金南瓜SECS/GEM C# SDK 快速创建一个满足SECS/GEM通信要求的应用程序,只需简单3步完成。 第一步:创建C# .NET程序 示例使用Visual Studio 2010,使用者可以选择更高级版本 Visual Studio 第二步:添加DLL库引用&am…...

在一个没有超级用户的mongodb 生产库上如何添加超级用户

说来这个问题,都觉得不可思议,一个数据库怎么没有超级用户呢,我们知道,MYSQL,PG,ORACLE等,创建好后,都有一个默认的超级用户,MONGODB也有超级用户,但需要自己…...

排序算法之二:冒泡排序

冒泡排序的思路 冒泡排序是交换排序 基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动…...

一键搭建你的hnust请假条

hnust请假条 湖南科技大学请假条生成器 https://hnust.rick.icu/new (直接使用) Hnust Leave Note 去github https://github.com/rickhqh/hnust_leave_note 效果展示 界面展示效果图 v2.0 更新 vant和vue重构了整个源码同步学校新版请假条样式修复了…...

C练习题13

单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 1.结构化程序由三种基本结构组成、三种基本结构组成的算法是() A.可以完成任何复杂的任务 B. 只能完成部分复杂的任务 C. 只能完…...

交易历史记录20231206 记录

昨日回顾: select top 10000 * from dbo.CODEINFO A left join dbo.全部A股20231206010101 B ON A.CODE B.代码 left join dbo.全部A股20231206CONF D on A.CODED.代码left join dbo.全部A股20231206 G on A.CODEG.代码 left…...

1-5总体分布的推断

...

深信服技术认证“SCSA-S”划重点:XSS漏洞

为帮助大家更加系统化地学习网络安全知识,以及更高效地通过深信服安全服务认证工程师考核,深信服特别推出“SCSA-S认证备考秘笈”共十期内容,“考试重点”内容框架,帮助大家快速get重点知识~ 划重点来啦 *点击图片放大展示 深信服…...

MIT6S081-Lab2总结

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com,github地址为https://github.com/xjintong。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。 Lab2就是了解一下xv6的系统调用流程&…...

CMMI5大成熟度等级和4大过程域

CMMI(Capability Maturity Model Integration,能力成熟度模型集成)模型系列是帮助组织改进其过程的最佳实践的集合。这些模型由来自产业界、政府以及软件工程研究所(Software Engineering Institute, SEI)的…...

c++新经典模板与泛型编程:const修饰符的移除与增加

const修饰符的移除 让你来写移除const修饰符&#xff0c;你会怎么样来写&#xff1f; &#x1f602;&#x1f602;trait类模板&#xff0c;如下 #include <iostream>// 泛化版本 template<typename T> struct RemoveConst {using type T; };// 特化版本 template…...

AUTOSAR汽车电子嵌入式编程精讲300篇-基于加密算法的车载CAN总线安全通信

目录 前言 研究现状 系统架构研究 异常检测研究 认证与加密研究 相关技术 2.1车联网 2.2车载网络及总线 2.2.1 CAN总线基础 2.2.2 CAN总线网络安全漏洞 2.2.3 CAN总线信息安全需求 2.3密码算法 2.3.1 AES算法 2.3.2 XTEA算法 CAN网络建模与仿真 3.1 CAN网络建模…...

4-Docker命令之docker start

1.docker start介绍 docker start命令是用来启动一个或多个已经被停止的docker容器。 2.docker start用法 docker start [参数] container [container......] [root@centos79 ~]# docker start --helpUsage: docker start [OPTIONS] CONTAINER [CONTAINER...]Start one or…...

AWS Remote Control ( Wi-Fi ) on i.MX RT1060 EVK - 2 “架构 AWS”

接续上一章节&#xff0c;我们把开发环境架设好之后&#xff0c;此章节叙述如何建立 AWS IoT 环境&#xff0c;请务必已经有 AWS Account&#xff0c;申请 AWS Account 之流程将不在此说明。 III-1. 登入AWS IoT&#xff0c; 在“管理”>“所有装置”>“实物”下点击“建…...

日志框架梳理(Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2)

原文链接 日志框架发展历程 在了解日志框架时总会列出一系列框架&#xff1a;Log4j&#xff0c;Reload4j&#xff0c;JUL&#xff0c;JCL&#xff0c;SLF4J&#xff0c;Logback&#xff0c;Log4j2&#xff0c;这么多框架让人感到混乱&#xff0c;该怎么选取、该怎么用。接下来…...

内核无锁队列kfifo

文章目录 1、抛砖引玉2、内核无锁队列kfifo2.1 kfifo结构2.2 kfifo分配内存2.3 kfifo初始化2.4 kfifo释放2.5 kfifo入队列2.6 kfifo出队列2.7 kfifo的判空和判满2.8 关于内存屏障 1、抛砖引玉 昨天遇到这样一个问题&#xff0c;有多个生产者&#xff0c;多个消费者&#xff0c…...

18、XSS——cookie安全

文章目录 1、cookie重要字段2、子域cookie机制3、路径cookie机制4、HttpOnly Cookie机制5、Secure Cookie机制6、本地cookie与内存cookie7、本地存储方式 一般来说&#xff0c;同域内浏览器中发出的任何一个请求都会带上cookie&#xff0c;无论请求什么资源&#xff0c;请求时&…...

从零开发短视频电商 Jmeter压测示例模板详解(无认证场景)

文章目录 添加线程组添加定时器添加HTTP请求默认值添加HTTP头管理添加HTTP请求添加结果断言响应断言 Response AssertionJSON断言 JSON Assertion持续时间断言 Duration Assertion 添加察看结果树添加聚合报告添加表格察看结果参考 以压测百度搜索为例 https://www.baidu.com/s…...

C++可以函数重载而C不可以的原因

函数重载是指在同一个作用域内&#xff0c;可以定义多个函数&#xff0c;它们具有相同的名称但是参数列表不同。函数重载的主要原理是函数的签名不同&#xff0c;而在 C 中&#xff0c;函数签名包括函数的名称和参数列表。而在 C 中&#xff0c;函数的标识仅依赖于函数的名称&a…...

Spark常见算子汇总

创建RDD 在Spark中创建RDD的方式分为三种: 从外部存储创建RDD从集合中创建RDD从其他RDD创建 textfile 调用SparkContext.textFile()方法&#xff0c;从外部存储中读取数据来创建 RDD parallelize 调用SparkContext 的 parallelize()方法&#xff0c;将一个存在的集合&…...

【华为数据之道学习笔记】3-1 基于数据特性的分类管理框架

华为根据数据特性及治理方法的不同对数据进行了分类定义&#xff1a;内部数据和外部数据、结构化数据和非结构化数据、元数据。其中&#xff0c;结构化数据又进一步划分为基础数据、主数据、事务数据、报告数据、观测数据和规则数据。 对上述数据分类的定义及特征描述。 分类维…...

电脑版便签软件怎么设置在桌面上显示?

对于不少上班族来说&#xff0c;如果想要在使用电脑办公的时候&#xff0c;随手记录一些常用的工作资料、工作注意事项等内容&#xff0c;直接在电脑上使用便签软件记录是比较方便的。电脑桌面便签工具不仅方便我们随时记录各类工作事项&#xff0c;而且支持我们快速便捷使用这…...

【华为数据之道学习笔记】2-建立企业级数据综合治理体系

数据作为一种新的生产要素&#xff0c;在企业构筑竞争优势的过程中起着重要作用&#xff0c;企业应将数据作为一种战略资产进行管理。数据从业务中产生&#xff0c;在IT系统中承载&#xff0c;要对数据进行有效治理&#xff0c;需要业务充分参与&#xff0c;IT系统确保遵从&…...

【IC前端虚拟项目】git和svn项目托管平台的简单使用说明

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 代码托管在gitee平台上&#xff0c;进去后会看到文档目录“MVU芯片前端设计验证虚拟项目”和工程目录“mvu_prj”&#xff0c;可以通过git来下载工程&#xff1a; git clone gitgitee.com:gjm9999/ic_vi…...

C++ IO库

IO类 IO对象不能拷贝和赋值 iostream 表示形式的变化&#xff1a; 将100转换成二进制序列 然后格式化输出 x,y共用一块内存 输出的时候用不同的方式解析同一块内存 操作 格式化&#xff1a;内部表示转换为相应字节序列 缓存&#xff1a;要输出的内容放到缓存 编码转换&…...

Springboot 项目关于版本升级到 3.x ,JDK升级到17的相关问题

由于spring 停止对2.x 版本的维护&#xff0c;以及 jdk 频繁发布等客观因素&#xff0c;现需要对已有springboot 工程做一次全面升级&#xff1b;已因对市面上第三方等依赖库的兼容问题&#xff1b; 现有工程使用哥技术栈是版本&#xff1a; freemarker &#xff1a;2.3.32 spr…...

QGraphicsView实现简易地图7『异步加载-多瓦片-无底图』

前文链接&#xff1a;QGraphicsView实现简易地图6『异步加载-单瓦片-无底图』 前一篇文章提到的异步单瓦片加载&#xff0c;是指线程每准备好一个瓦片数据后&#xff0c;立刻抛出信号让主线程加载。而本篇异步多瓦片加载是指线程准备好所有瓦片数据后&#xff0c;一起抛出信号让…...

Spring Boot学习(三十三):集成kafka

前言 下面是zookeeper和kafka的官网下载地址&#xff0c;大家可以学习下载 zookeeper下载地址&#xff1a;http://zookeeper.apache.org/releases.html kafka下载地址&#xff1a;http://kafka.apache.org/downloads.html 1、添加依赖 在 pom.xml 文件中添加kafka依赖&am…...