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

2024年 Java 面试八股文——SpringCloud篇

目录

1.Spring Cloud Alibaba 中的 Nacos 是如何进行服务注册和发现的?

2.Spring Cloud Alibaba Sentinel 的流量控制规则有哪些?

3.Spring Cloud Alibaba 中如何实现分布式配置管理?

4.Spring Cloud Alibaba RocketMQ 的主要特点有哪些?

5.Spring Cloud Alibaba Seata 是如何处理分布式事务的?

6.Spring Cloud Alibaba 环境中实现服务限流?

7.Spring Cloud Alibaba 中 Sentinel 和 Hystrix 在服务熔断方面的区别是什么?

8.Spring Cloud Alibaba 环境中,如何处理微服务间的异步通信?

9.Spring Cloud Alibaba 中 Dubbo 和 Spring Cloud 在微服务架构中的适用场景有何不同?

10.使用 Spring Cloud Alibaba 时,如何保证数据的一致性?

11.如何使用 Spring Cloud Alibaba 实现服务的灰度发布?

12.Spring Cloud Alibaba 提供哪些安全性相关的特性?

13.Spring Cloud Alibaba 如何实现服务降级?

14.Spring Cloud Alibaba 中的 Nacos 和 Consul 在服务注册和发现方面有什么不同?

15.Spring Cloud Alibaba 中实现链路追踪?

16.Spring Cloud Alibaba 如何支持多环境配置?

17.Spring Cloud Alibaba 中如何处理分布式锁?

18.Spring Cloud Alibaba中Nacos的核心功能是什么?

19.Spring Cloud Alibaba中,如何实现服务降级?

20.Spring Cloud Alibaba中的Seata是什么,它如何解决分布式事务问题?


前言

 Spring Cloud 是一个由 Spring 社区提供的微服务框架,它基于 Spring Boot,用于快速构建分布式系统中的服务。Spring Cloud 提供了一套完整的解决方案,用于解决微服务架构中的服务治理、服务发现、配置管理、熔断降级、智能路由、负载均衡、控制总线、消息总线等常见问题。

注:喜欢的朋友可以关注公众号“JAVA学习课堂”方便阅读,内容同步更新。

1.Spring Cloud Alibaba 中的 Nacos 是如何进行服务注册和发现的?

在Spring Cloud Alibaba中,Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它提供了服务注册和发现的核心功能,帮助微服务架构中的服务实例能够相互发现和通信。

以下是Nacos进行服务注册和发现的基本流程:

服务注册

  1. 服务提供者启动:当服务提供者(如一个Spring Boot应用)启动时,它会配置Nacos作为服务注册中心。
  2. 发送注册请求:服务提供者会向Nacos服务器发送一个注册请求。这个请求中包含了服务的基本信息,如服务名称、IP地址、端口号等。
  3. 处理注册请求:Nacos服务器接收到注册请求后,会处理这个请求,包括存储服务信息、检查服务是否已存在等。如果服务是新的,Nacos会将其信息存储到服务注册表中;如果服务已存在,Nacos会更新其状态信息。
  4. 心跳维持:为了确保服务提供者仍然可用,Nacos服务器会要求服务提供者定期发送心跳包。如果服务提供者长时间没有发送心跳包,Nacos会认为该服务已经宕机,并将其从服务注册表中移除。

服务发现

  1. 服务消费者请求:当服务消费者(如另一个Spring Boot应用)需要调用某个服务时,它会向Nacos服务器发送一个服务发现请求,请求中包含要查找的服务名称。
  2. 返回服务实例列表:Nacos服务器会根据服务发现请求中的服务名称,从服务注册表中查找对应的服务实例。然后,Nacos会返回一个包含所有可用服务实例信息的列表给服务消费者。
  3. 负载均衡:服务消费者可以根据返回的服务实例列表,使用负载均衡算法(如轮询、随机等)选择一个服务实例进行调用。

服务健康检查

为了确保服务实例的可用性,Nacos会周期性地向服务实例发送健康检查请求。服务实例需要响应这些请求,并返回自己的健康状态。如果服务实例连续多次未能响应健康检查请求,Nacos会认为该服务实例已经宕机,并将其从服务注册表中移除。

2.Spring Cloud Alibaba Sentinel 的流量控制规则有哪些?

Spring Cloud Alibaba Sentinel 的流量控制规则主要包括以下几种:

  1. 基于QPS(每秒查询率)的限流规则

    • QPS(Queries Per Second)表示每秒的请求数量。通过设置QPS阈值,可以限制系统每秒钟能够处理的请求数量。当请求量超过阈值时,Sentinel会对请求进行限制,直到请求量回落到阈值以下。
  2. 基于线程数的限流规则

    • 线程数是指系统中正在执行的线程数量。通过设置线程数阈值,可以限制系统能够同时处理的请求数量。当线程数超过阈值时,Sentinel会对请求进行限制,直到线程数回落到阈值以下。
  3. 基于并发数的限流规则

    • 并发数是指同时发送给系统的请求数量。当并发数超过阈值时,Sentinel会对请求进行限制,直到并发数回落到阈值以下。
  4. 基于业务参数的限流规则

    • 除了基于系统资源的限流规则外,Sentinel还支持基于业务参数的限流规则。这些规则可以根据具体的业务逻辑和参数来定制,以满足特定的限流需求。

此外,Sentinel的流量控制还涉及到流控模式和流控效果的概念:

  • 流控模式:Sentinel支持直接、关联和链路等流控模式。直接模式表示直接对指定的资源进行流量控制;关联模式可以根据一个资源的情况来控制另一个资源的流量;链路模式则考虑整个调用链路上的流量控制。
  • 流控效果:Sentinel的流控效果包括快速失败、Warm Up(预热)和排队等待等。快速失败表示当达到限流阈值时,直接拒绝新的请求;Warm Up表示在限流阈值范围内,逐渐增加通过的请求量;排队等待则表示当达到限流阈值时,让请求在队列中等待,直到有空闲资源处理。

3.Spring Cloud Alibaba 中如何实现分布式配置管理?

在Spring Cloud Alibaba中,实现分布式配置管理通常是通过使用Nacos作为配置中心来完成的。Nacos提供了用于存储配置和其他元数据的key/value存储,为分布式系统中的外部化配置提供服务器端和客户端支持。以下是使用Nacos实现分布式配置管理的基本步骤:

1. 添加Nacos Config依赖

在你的Spring Boot项目中,首先需要将Nacos Config的依赖添加到你的pom.xml(Maven)或build.gradle(Gradle)文件中。

Maven示例:

<dependency>  <groupId>com.alibaba.cloud</groupId>  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>  <version>你的版本号</version>  
</dependency>

2. 配置Nacos服务器地址

bootstrap.propertiesbootstrap.yml文件中,配置Nacos服务器的地址以及其他相关属性。

spring:  cloud:  nacos:  config:  server-addr: 127.0.0.1:8848 # Nacos服务器地址  namespace: your-namespace # 命名空间(可选)  group: DEFAULT_GROUP # 分组(默认为DEFAULT_GROUP)  data-id: your-data-id # 数据ID  file-extension: yaml # 配置内容的数据格式,如yaml或properties
  • server-addr:Nacos服务器地址。
  • namespace:命名空间,用于隔离不同的环境或租户。
  • group:分组,默认为DEFAULT_GROUP
  • data-id:数据ID,用于唯一标识一个配置。
  • file-extension:配置内容的数据格式,如yamlproperties

3. 在Nacos中创建配置

登录Nacos的管理界面,在配置管理模块中创建或编辑配置。确保配置的Data IDGroup与你在bootstrap.ymlbootstrap.properties中配置的一致。

4. 刷新配置

Spring Cloud Alibaba Nacos Config支持配置更改时自动刷新。当Nacos中的配置发生变化时,Spring Boot应用会自动加载新的配置。

5. 使用配置

在你的Spring Boot应用中,你可以像使用本地配置一样使用Nacos中的配置。Spring Boot会自动将Nacos中的配置加载到Spring环境中。

6. 注意事项

  • 确保Nacos服务器已经启动并可以访问。
  • 确保你的Spring Boot应用有权限访问Nacos服务器。
  • 如果你的应用需要动态刷新配置,确保在配置中启用了自动刷新功能(Nacos Config默认支持)。
  • 如果你的应用部署在多个实例上,确保所有实例都连接到同一个Nacos服务器,以确保它们获取相同的配置。

4.Spring Cloud Alibaba RocketMQ 的主要特点有哪些?

Spring Cloud Alibaba RocketMQ 的主要特点包括:

  1. 高性能与可靠性:RocketMQ 是一个高性能、高可靠性的消息中间件。它支持海量消息堆积能力,能够处理高达10万+TPS(每秒事务处理量)的消息,且不受单机容量限制。这使得它在处理大规模消息传输时具有出色的性能。
  2. 分布式与可扩展性:RocketMQ 是一个分布式的消息系统,它支持集群部署,可以水平扩展以满足不断增长的业务需求。通过集群部署,RocketMQ 可以提供更高的吞吐量和更低的延迟。
  3. 灵活的消息过滤机制:RocketMQ 提供了灵活的消息过滤机制,支持按照标签、SQL92标准的过滤语法进行消息过滤。这使得消费者可以根据自身需要选择性地接收消息,提高消息处理的效率。
  4. 丰富的消息订阅模型:RocketMQ 支持多种消息订阅模型,包括广播消费、集群消费、事务消费等。这些模型可以满足不同的业务场景需求,使得消息的处理更加灵活和高效。
  5. 内置管理控制台:RocketMQ 内置了丰富的管理控制台,通过Web UI可以方便地对集群进行管理、监控及报警。这使得运维人员可以轻松地监控集群状态、查看消息统计信息、进行故障排查等操作。
  6. 支持多种消息类型:RocketMQ 支持事务消息、顺序消息、批量消息、定时消息、消息回溯等多种消息类型。这些消息类型可以满足不同的业务需求,使得消息的处理更加灵活和多样化。
  7. 多语言客户端支持:RocketMQ 支持多种语言客户端,包括Java、C++、Go、Python等。这使得开发者可以使用自己熟悉的语言来开发消息生产者和消费者,降低了开发难度和成本。
  8. 社区活跃与文档齐全:RocketMQ 拥有一个活跃的社区和齐全的文档,这使得开发者可以方便地获取技术支持和参考文档,加速项目的开发进度。

5.Spring Cloud Alibaba Seata 是如何处理分布式事务的?

Spring Cloud Alibaba Seata 是一款开源的分布式事务解决方案,它致力于提供高性能和简单易用的分布式事务服务。Seata 处理分布式事务的基本原理是通过协调器和参与者之间的通信,实现分布式事务的一致性和可靠性。以下是 Seata 处理分布式事务的主要步骤和组件:

  1. 基本概念

    • 全局事务:Seata 引入全局事务的概念,将一个分布式事务分解为多个局部的分支事务,这些分支事务分布在不同的服务或者数据库中。
    • 事务ID:事务由一个全局唯一的事务ID标识,事务参与者根据这个事务ID来执行本地事务操作。
  2. 关键组件

    • Transaction Coordinator (TC):TC 作为全局事务的协调者,它通常以服务的形式独立部署,负责维护全局事务的状态,并根据 TM 的请求决定全局事务的提交或回滚。
    • Transaction Manager (TM):TM 嵌入在业务应用中,负责开启全局事务,并在事务结束时根据业务执行的结果发起全局提交或全局回滚的请求给 TC。
    • Resource Manager (RM):RM 代表每个参与到分布式事务的服务或数据库资源,负责分支事务的注册、状态报告以及根据 TC 的指令执行本地事务的提交或回滚。
  3. 事务执行流程

    • 当一个分支事务要加入全局事务时,它会向 TC 注册,并获取一个全局唯一的分支事务ID,然后将此事务ID与本地事务绑定。
    • 每个分支事务将会在本地资源上执行操作,并将操作结果保存在本地事务日志中。
    • 在整个事务的执行过程中,TC 起着关键的作用。它负责收集并协调所有分支事务的执行情况。
      • 第一阶段:TC 会向所有参与者发送事务预提交请求,并等待参与者的响应。
      • 第二阶段:TC 根据参与者的响应情况,决定是提交还是回滚事务。如果所有分支事务都执行成功,TC 会发送提交指令,要求各个分支事务进行提交操作;如果有任何分支事务执行失败,TC 会发送回滚指令,要求各个分支事务进行回滚操作。
  4. 事务模式

    • Seata 提供了多种事务模式,包括 AT、TCC、SAGA 和 XA 等,以满足不同业务场景的需求。这些模式在事务的执行方式和处理机制上有所不同,但总体上都遵循上述的基本原理和流程。

6.Spring Cloud Alibaba 环境中实现服务限流?

在Spring Cloud Alibaba环境中,实现服务限流通常可以通过使用Sentinel来实现。Sentinel是阿里巴巴开源的一个轻量级流量控制、熔断降级Java库,它主要用于保护微服务系统。以下是使用Sentinel在Spring Cloud Alibaba环境中实现服务限流的基本步骤:

  1. 引入依赖

在你的Spring Boot项目中,首先需要将Sentinel的依赖添加到你的pom.xml(Maven)或build.gradle(Gradle)文件中。

Maven示例:

<dependency>  <groupId>com.alibaba.cloud</groupId>  <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>  <version>你的版本号</version>  
</dependency>

  1. 配置Sentinel

你可以通过application.ymlapplication.properties文件配置Sentinel,但通常Sentinel的大部分配置都是通过控制台动态设置的。不过,你可以设置一些基本的参数,比如是否启用Sentinel等。

  1. 定义资源

在你的代码中,你需要定义哪些方法或URL需要进行限流。这通常是通过在方法上使用@SentinelResource注解来完成的。

@Service  
public class SomeService {  @SentinelResource("someService")  public String doSomething(String param) {  // ... 业务逻辑  return "Hello, " + param;  }  
}

这里的"someService"是资源的名称,它将在Sentinel控制台中用作标识符。

  1. 配置限流规则

你可以通过Sentinel控制台来配置限流规则。在控制台中,你可以为特定的资源设置QPS(每秒查询率)、线程数等限流指标。

如果你不想使用控制台,也可以通过代码来动态设置限流规则。但是,这通常用于在测试或特定场景下动态地调整规则。

  1. 处理限流结果

当请求达到限流阈值时,Sentinel会阻止更多的请求进入,并返回一个限流的结果。你可以通过实现BlockExceptionHandler接口来处理这些被阻止的请求。

@Component  
public class CustomBlockExceptionHandler implements BlockExceptionHandler {  @Override  public void handle(HttpRequest request, HttpResponse response, BlockException ex) throws Exception {  // 处理限流请求的逻辑,比如返回特定的错误信息或状态码  response.setContentType("application/json;charset=UTF-8");  response.getWriter().write("{\"code\":429,\"message\":\"Blocked by Sentinel\"}");  }  @Override  public int order() {  return 0;  }  
}

  1. 启动并测试

启动你的Spring Boot应用,并发送大量的请求到你的服务。当达到你设置的限流阈值时,你应该能够看到Sentinel开始阻止额外的请求,并返回你定义的错误信息。

  1. 监控和告警

Sentinel还提供了丰富的监控和告警功能。你可以通过控制台查看实时数据、历史数据等,并设置告警规则来在达到特定条件时发送告警通知。

7.Spring Cloud Alibaba 中 Sentinel 和 Hystrix 在服务熔断方面的区别是什么?

在Spring Cloud Alibaba中,Sentinel和Hystrix都是用于实现服务熔断的工具,但它们在服务熔断的实现方式、特性和使用场景上存在一些区别。

  1. 来源和背景

    • Hystrix:Hystrix是Netflix开源的一个库,主要用于处理分布式系统的延迟和容错。它通过隔离、降级和熔断等机制来增强系统的稳定性和可用性。
    • Sentinel:Sentinel是阿里巴巴开源的,作为面向云原生微服务架构的流量控制、熔断降级组件。它不仅支持服务熔断,还提供了流量控制、系统自适应保护等功能。
  2. 熔断机制

    • Hystrix:Hystrix的熔断机制主要基于断路器模式。当服务调用失败数量超过一定比例(默认为50%)时,断路器会切换到开路状态,阻止更多的请求发送到故障服务。一段时间后,断路器会进入半开状态,尝试恢复服务调用。如果成功,则断路器关闭;否则,继续保持在开路状态。
    • Sentinel:Sentinel的熔断机制则更加灵活和可配置。它支持多种熔断策略,如基于响应时间、异常比例或异常数等。当达到熔断条件时,Sentinel会快速失败请求,避免影响整个系统的稳定性。经过一定的熔断时长后,Sentinel会尝试恢复服务调用,如果成功则结束熔断;否则,继续熔断。
  3. 功能特性

    • Hystrix:除了熔断外,Hystrix还提供了线程隔离、请求缓存、请求合并等功能,以减少服务之间的依赖和耦合。
    • Sentinel:Sentinel不仅支持熔断和流量控制,还提供了系统自适应保护、热点参数限流等功能。此外,Sentinel还提供了丰富的监控和告警功能,方便用户实时了解系统的运行状态。
  4. 使用场景

    • Hystrix:由于Hystrix已经停止维护并逐渐被其他更先进的工具所取代(如Resilience4j),因此在实际项目中可能较少使用。但在一些老旧的系统中,Hystrix仍然是一个可行的选择。
    • Sentinel:Sentinel作为阿里巴巴开源的组件,在阿里巴巴内部得到了广泛的应用和验证。它适用于各种微服务架构和云原生场景,特别是对于那些需要高度可配置和灵活性的系统来说,Sentinel是一个很好的选择。

8.Spring Cloud Alibaba 环境中,如何处理微服务间的异步通信?

在Spring Cloud Alibaba环境中,处理微服务间的异步通信通常可以通过使用消息队列(Message Queue,简称MQ)来实现。消息队列是一种应用程序对应用程序的通信方法,应用程序通过读写出入队列的消息(针对队列中元素的特定操作)来通信。在微服务架构中,消息队列常被用作解耦、异步通信、流量削峰等场景。

在Spring Cloud Alibaba中,RocketMQ是一个常用的消息队列解决方案。RocketMQ是Alibaba出品的一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

以下是使用RocketMQ在Spring Cloud Alibaba环境中实现微服务间异步通信的基本步骤:

  1. 引入依赖
    在你的Spring Boot项目中,需要将RocketMQ的依赖添加到你的pom.xml(Maven)或build.gradle(Gradle)文件中。

    Maven示例:

    <dependency>  <groupId>com.alibaba.cloud</groupId>  <artifactId>spring-cloud-starter-alibaba-rocketmq</artifactId>  <version>你的版本号</version>  
    </dependency>

  2. 配置RocketMQ
    application.ymlapplication.properties文件中配置RocketMQ的相关参数,如NameServer地址、消息生产者/消费者的相关设置等。

  3. 创建消息生产者
    在需要发送消息的服务中,编写消息生产者代码。通过调用RocketMQ的API,将消息发送到指定的Topic中。

  4. 创建消息消费者
    在需要接收消息的服务中,编写消息消费者代码。消费者订阅指定的Topic,并处理接收到的消息。

  5. 处理消息确认和重试
    对于生产者,可以开启生产者确认机制,确保消息能到达队列。对于消费者,可以开启消费者确认机制,并在处理完消息后发送确认信号。对于失败的消息,可以开启消费者失败重试机制,并设置合适的重试次数和重试策略。

  6. 监控和告警
    RocketMQ提供了丰富的监控和告警功能。你可以通过RocketMQ的管理控制台查看消息的生产和消费情况,设置告警规则以在出现异常情况时及时得到通知。

  7. 测试
    在开发完成后,进行充分的测试以确保异步通信的可靠性和性能。

9.Spring Cloud Alibaba 中 Dubbo 和 Spring Cloud 在微服务架构中的适用场景有何不同?

在Spring Cloud Alibaba中,Dubbo和Spring Cloud都是用于构建微服务架构的重要工具,但它们在适用场景上存在一些差异。

Dubbo是阿里巴巴开源的一个高性能、轻量级的RPC框架,主要用于构建微服务之间的服务治理。它提供了服务注册与发现、服务路由、负载均衡、服务熔断等功能,并支持多种服务治理组件,如Nacos、Zookeeper、Eureka等。Dubbo适合用于大规模、复杂性高的项目,特别是那些需要高性能和可伸缩性的场景。它的序列化和反序列化采用了高效的方式,可以实现快速数据传输,并且提供了负载均衡和服务容错机制,可以有效地处理高并发和大规模服务调用场景。Dubbo也更适合Java生态系统,特别是阿里巴巴旗下的技术栈,如Nacos、Sentinel等。

Spring Cloud是基于Spring Boot的一个微服务架构开发工具,提供了一系列的开发工具和服务,帮助开发者快速构建分布式系统和微服务架构。Spring Cloud也提供了服务注册与发现、服务路由、负载均衡、服务熔断等功能,并支持多种服务治理组件,如Eureka、Consul、Zookeeper等。Spring Cloud适用于中小型项目,轻量级且易于入门,可以快速开发。基于Spring Cloud的微服务架构适用于复杂业务场景,特别是大型企业,能够将复杂的业务拆分成不同的服务,提高系统的灵活性和可维护性。同时,它也适用于大流量、高并发的业务场景。

10.使用 Spring Cloud Alibaba 时,如何保证数据的一致性?

  1. 使用分布式事务管理
    • 您可以考虑使用像Seata这样的分布式事务解决方案,它支持在微服务之间进行事务控制。Seata通过提供全局ID、分支ID等来协调分布式事务,确保数据在各个服务之间保持一致。
    • 在设计微服务时,要仔细考虑哪些操作需要在同一事务中完成,哪些操作可以异步或最终一致性完成。
  2. 数据同步策略
    • 当数据需要在多个服务之间共享时,可以使用数据同步策略来确保数据的一致性。例如,使用消息队列(如RocketMQ)来传递数据变更事件,以便其他服务可以更新其本地数据。
    • 另一种方法是使用Canal等工具来监听数据库变更,并将变更事件推送到其他服务中,以实现数据同步。
  3. 幂等性设计
    • 在设计微服务接口时,要确保接口具有幂等性。这意味着相同的请求操作多次执行应该产生相同的结果。这可以通过在请求中包含唯一标识符、版本号或使用其他机制来实现。
  4. 分布式锁
    • 当多个服务需要同时访问和修改同一资源时,可以使用分布式锁来协调这些操作。Redis是一个常用的工具来实现分布式锁,确保在多个服务同时访问同一个资源时只有一个服务能够进行操作。
  5. 使用Nacos作为服务发现和配置中心
    • Nacos是阿里巴巴开源的一个服务发现和配置管理平台。通过使用Nacos,您可以确保所有服务都使用相同的配置,并在配置更改时自动更新。这有助于减少由于配置不一致导致的数据不一致问题。
  6. 考虑使用最终一致性
    • 在某些场景下,实时一致性可能不是必需的,您可以考虑使用最终一致性来减少数据不一致的风险。最终一致性意味着系统不保证所有副本在任意时刻的数据都完全一致,但会保证在一定时间内数据最终会达到一致。
  7. 监控和告警
    • 实施完善的监控和告警系统,以便及时发现和处理数据不一致问题。例如,监控服务的调用量、错误率、延迟等指标,并在出现问题时及时告警。
  8. 测试
    • 在开发过程中进行充分的测试,包括单元测试、集成测试和系统测试。确保在各种场景下数据都能保持一致,并修复发现的所有数据不一致问题。

11.如何使用 Spring Cloud Alibaba 实现服务的灰度发布?

  1. 环境准备
    • 确保Nacos注册中心和配置中心已正确部署并运行。Nacos将用于服务注册与发现,以及可能的配置管理。
  2. 服务注册
    • 将生产和灰度环境的服务都注册到Nacos中,但确保它们具有不同的版本标识(如生产环境版本为1.0,灰度环境版本为2.0)。
  3. 服务发现与路由
    • 服务消费者通过Nacos发现所需的服务实例。
    • 引入API网关(如Spring Cloud Gateway或Zuul),并配置路由规则,以便根据一定的策略(如用户标签、请求头、百分比等)将部分请求转发到灰度环境的服务(版本2.0),而将其他请求转发到生产环境的服务(版本1.0)。
  4. 灰度期
    • 从灰度发布开始到结束的这一段时间称为灰度期。在此期间,可以监控新功能的性能、稳定性和用户反馈。
  5. 数据收集与反馈
    • 收集灰度用户的反馈和数据,以便及时发现问题并进行调整。这可以通过日志分析、用户调查、A/B测试等方式进行。
  6. 监控与告警
    • 整合监控工具(如Prometheus、Grafana等),实时监控系统的运行状态和性能指标,并设置合理的告警机制。
  7. 优化与调整
    • 根据评估结果对新功能进行优化和调整,准备下一次的发布或全面推广。
  8. 配置管理(可选):
    • 使用Nacos的配置管理功能,为灰度环境和生产环境提供不同的配置。这样,您可以轻松地切换配置,而无需修改和重新部署代码。
  9. 流量控制
    • 在灰度期间,您可能想要逐渐增加或减少流向灰度环境的流量。这可以通过API网关的路由规则或Nacos的服务权重来实现。
  10. 版本管理
    • 确保在灰度发布过程中,您能够清晰地跟踪和管理不同版本的服务。这有助于在出现问题时快速回滚到之前的版本。
  11. 自动化与脚本化
    • 为了提高效率和减少错误,您可以考虑将上述步骤自动化和脚本化。例如,使用Jenkins或GitLab CI/CD等工具来自动化构建、部署和测试过程。

12.Spring Cloud Alibaba 提供哪些安全性相关的特性?

  1. 服务注册与发现的安全性
    • Spring Cloud Alibaba 支持使用 Nacos 作为服务注册与发现中心。Nacos 提供了访问控制和权限管理功能,可以限制哪些客户端可以注册服务、发现服务或修改配置。
    • 你可以配置 Nacos 以使用身份验证和授权机制,如 JWT(JSON Web Tokens)或 OAuth 2.0,来增强安全性。
  2. 分布式配置的安全性
    • Spring Cloud Alibaba 支持通过 Nacos 或其他配置中心进行分布式配置管理。这些配置中心通常提供了加密和脱敏功能,可以保护敏感信息(如数据库连接字符串、API 密钥等)不被未经授权的访问。
    • 你还可以使用 Spring Cloud Config Server 的加密/解密功能,在客户端和服务器之间安全地传输敏感配置。
  3. API 网关的安全性
    • 如果你使用 Spring Cloud Gateway 或 Zuul 作为 API 网关,你可以配置各种安全性功能,如身份验证、授权、限流、请求过滤等。
    • API 网关可以集成 OAuth 2.0 或其他身份验证和授权框架,以确保只有经过身份验证和授权的客户端才能访问后端服务。
  4. 服务间通信的安全性
    • Spring Cloud Alibaba 支持使用各种 RPC 框架(如 Dubbo)进行服务间通信。这些框架通常提供了加密和传输安全性(如 TLS/SSL)来确保通信数据的安全。
    • 你还可以使用 Spring Cloud OpenFeign 或 RestTemplate 客户端进行 HTTP 通信,并使用 HTTPS 协议来增强安全性。
  5. 敏感数据的保护
    • Spring Cloud Alibaba 提供了各种加密和脱敏工具,用于保护存储在分布式系统中的敏感数据。
    • 你可以使用 Jasypt 或其他加密库来加密存储在配置文件或数据库中的敏感信息。
  6. 审计和日志记录
    • Spring Cloud Alibaba 支持与各种日志和审计工具集成,如 ELK(Elasticsearch、Logstash 和 Kibana)堆栈。你可以配置这些工具来记录和分析微服务架构中的安全事件和异常行为。
  7. 安全扫描和漏洞管理
    • 你可以使用 Spring Cloud Alibaba 提供的工具或集成第三方安全扫描工具来定期扫描微服务架构中的安全漏洞。这些工具可以帮助你识别潜在的安全风险并提供修复建议。

13.Spring Cloud Alibaba 如何实现服务降级?

在Spring Cloud Alibaba中,服务降级通常通过使用Sentinel这样的组件来实现。Sentinel是阿里巴巴开源的分布式系统的流量防卫兵,它提供了熔断降级、流量控制、系统自适应保护等多个维度保护服务的稳定性。

以下是使用Sentinel实现服务降级的基本步骤:

  1. 引入依赖
    首先,你需要在你的Spring Boot项目中引入Sentinel的依赖。这通常涉及到在你的pom.xml(Maven项目)或build.gradle(Gradle项目)中添加相应的依赖项。

  2. 定义降级逻辑
    服务降级意味着在调用远程服务失败或响应时间过长时,直接返回一个备用的响应,而不是等待远程服务的实际响应。你可以通过定义fallback方法或Fallback类来实现这一逻辑。

    使用@SentinelResource注解,你可以指定一个资源的名称,并定义一个fallback方法或Fallback类来处理异常情况。例如:

    @Service  
    public class SomeService {  @SentinelResource(value = "someService", fallback = "fallbackMethod")  public String doSomething(String param) {  // 远程服务调用逻辑  // ...  return "Actual result";  }  public String fallbackMethod(String param, BlockException ex) {  // 降级逻辑  return "Fallback result";  }  
    }
     

    或者,可以使用Fallback类:

    public class SomeServiceFallback implements Fallback<String> {  @Override  public String fallback(Throwable t) {  return "Fallback result";  }  
    }  // 在@SentinelResource注解中引用Fallback类  
    @SentinelResource(value = "someService", fallbackClass = SomeServiceFallback.class, fallbackMethod = "fallback")

  3. 配置Sentinel规则
    你需要配置Sentinel的熔断降级规则,指定哪些资源在何种情况下触发降级。这可以通过Sentinel的控制台或API来完成。你可以设置流量控制规则、熔断降级规则等。

    例如,在Sentinel控制台中,你可以为someService资源设置一个熔断降级规则,当该资源的异常比例或响应时间超过某个阈值时,自动触发降级逻辑。

  4. 启动并测试
    启动你的Spring Boot应用,并模拟一些异常情况(如远程服务超时或失败),观察是否触发了降级逻辑,并返回了备用的响应。

14.Spring Cloud Alibaba 中的 Nacos 和 Eurkea在服务注册和发现方面有什么不同?

  1. 功能丰富性

    • Nacos不仅提供了服务注册与发现的功能,还具备动态配置管理、动态DNS服务、服务元数据管理等功能。这使得Nacos成为一个更全面的解决方案,可以满足分布式系统中的多种需求。
    • Eureka则主要专注于服务注册与发现,功能相对较为简单。它提供了服务注册和发现功能,允许微服务实例注册并让其他服务发现它们。Eureka还提供了基本的负载均衡能力,但相比于Nacos的高级负载均衡功能,其能力较为基础。
  2. 健康检查

    • Nacos支持动态的健康检查,能够定期检查微服务的健康状况,确保只有健康的服务实例被路由到。这种机制有助于减少因服务故障而导致的系统问题。
    • Eureka的健康检查相对简单,它依赖于客户端的自我报告。客户端会定期向Eureka Server发送心跳信号以表明其仍然存活。然而,这种方式可能无法准确反映服务的实际健康状态。
  3. 多环境支持

    • Nacos支持多环境的服务注册和发现,可以将不同环境(如开发环境、测试环境、生产环境)的服务实例信息分开管理。这使得在多环境部署和运维中更加灵活和方便。
    • Eureka在这方面则没有直接的支持,通常需要通过其他方式(如配置文件、环境变量等)来区分不同的环境。
  4. 多数据中心支持

    • Nacos支持多数据中心部署,适用于跨地域的应用。它提供了跨地域的服务注册和发现功能,有助于实现全球范围内的服务部署和治理。
    • Eureka在这方面则没有直接的支持,需要通过其他方式(如使用多个Eureka集群、第三方解决方案等)来实现跨地域的服务发现。
  5. 社区活跃度

    • Nacos作为一个新兴的开源项目,拥有一个活跃的社区,持续不断地开发和改进。这为用户提供了更多的支持和帮助,也使得Nacos能够更快地适应新的技术趋势和需求。
    • Eureka作为Netflix开源套件的一部分,虽然也有一定的用户群体和社区支持,但相对于Nacos来说,其社区活跃度可能稍逊一筹。

15.Spring Cloud Alibaba 中实现链路追踪?

在 Spring Cloud Alibaba 中实现链路追踪,通常可以使用 SkyWalking 或 Zipkin 这样的分布式追踪系统。这些系统可以帮助你收集、分析和聚合来自微服务架构中的追踪数据,从而让你能够更好地理解系统的行为、性能和问题。

以下是使用 SkyWalking 在 Spring Cloud Alibaba 中实现链路追踪的基本步骤:

  1. 引入依赖
    首先,你需要在你的 Spring Boot 项目中引入 SkyWalking 的相关依赖。这通常涉及到在你的 pom.xml(Maven 项目)或 build.gradle(Gradle 项目)中添加相应的依赖项。

    对于 Maven 项目,你可以添加类似以下的依赖:

    <dependency>  <groupId>org.apache.skywalking</groupId>  <artifactId>apm-toolkit-trace</artifactId>  <version>你的SkyWalking版本</version>  
    </dependency>
     

    注意替换 你的SkyWalking版本 为你实际使用的 SkyWalking 版本。

  2. 配置 SkyWalking
    你需要在你的应用配置文件中(如 application.yml 或 application.properties)配置 SkyWalking 的相关参数,如 SkyWalking 的服务地址、端口等。

    示例 application.yml 配置:

    skywalking:  agent:  service-name: ${spring.application.name}  agent.backend-service: 127.0.0.1:11800 # SkyWalking Collector 地址  agent.is-open-debugging-class: false  agent.sampling-n-percentages: 100 # 采样率
     

    注意:上面的配置是针对 SkyWalking Java Agent 的,如果你选择使用 SkyWalking 的自动探针(如通过 Spring Cloud Alibaba 集成),则不需要这些配置。

  3. 集成 SkyWalking 自动探针
    对于 Spring Cloud Alibaba 项目,你可以通过 Spring Cloud Alibaba 提供的自动配置来集成 SkyWalking。这通常涉及到在你的项目中添加 SkyWalking 的 Spring Cloud Alibaba Starter 依赖。

    <dependency>  <groupId>com.alibaba.cloud</groupId>  <artifactId>spring-cloud-alibaba-starter-skywalking</artifactId>  <version>你的Spring Cloud Alibaba版本</version>  
    </dependency>
     

    然后,在你的配置文件中添加 SkyWalking 的相关配置,如上面的 skywalking 配置部分所示(但不需要 agent 前缀,因为这是针对 Java Agent 的)。

  4. 启动 SkyWalking Collector
    你需要运行 SkyWalking Collector 来收集和分析追踪数据。你可以从 SkyWalking 的官方网站下载对应的 Collector 版本,并运行它。

  5. 启动并测试你的应用
    启动你的 Spring Boot 应用,并进行一些操作以产生追踪数据。然后,你可以在 SkyWalking 的 Web UI 中查看和分析这些数据。

  6. 分析和调试
    通过 SkyWalking 的 Web UI,你可以查看应用的拓扑图、服务之间的调用关系、请求的追踪详情等。这有助于你理解系统的行为、定位性能瓶颈和潜在问题。

16.Spring Cloud Alibaba 如何支持多环境配置?

Spring Cloud Alibaba 支持多环境配置主要通过使用 Nacos 作为配置中心来实现。Nacos 提供了灵活的配置管理功能,允许你根据不同的环境(如开发环境、测试环境、生产环境)来管理和加载不同的配置。

以下是使用 Nacos 在 Spring Cloud Alibaba 中支持多环境配置的基本步骤:

  1. 配置 Nacos
    首先,你需要安装并运行 Nacos 服务器。Nacos 提供了服务器端和客户端,你可以根据需求进行配置。

  2. 定义配置
    在 Nacos 控制台上,你可以为不同的环境定义不同的配置。这些配置通常以 Data ID、Group 和 Namespace 来区分。

    • Data ID:通常用于区分不同的配置文件,如 ${spring.application.name}-${spring.profiles.active}.properties 或 ${spring.application.name}-${spring.profiles.active}.yml。其中 ${spring.profiles.active} 可以是开发(dev)、测试(test)或生产(prod)等不同的环境标识。
    • Group:也可以用于区分不同的环境。例如,你可以为开发环境创建一个名为 DEV_GROUP 的 Group,为测试环境创建一个名为 TEST_GROUP 的 Group。
    • Namespace:Namespace 是 Nacos 提供的用于实现环境隔离的功能。你可以为每个环境创建一个独立的 Namespace,并在其中定义相应的配置。
  3. 在 Spring Cloud 应用中加载配置
    在你的 Spring Cloud 应用中,你需要配置 Nacos 客户端以加载相应的配置。这通常涉及到在 bootstrap.yml 或 bootstrap.properties 文件中设置 Nacos 的相关属性,如服务器地址、Data ID、Group 和 Namespace 等。

    例如,如果你的 Data ID 为 myapp-dev.properties,Group 为 DEV_GROUP,并且已经配置了一个名为 DEV 的 Namespace,则你的配置可能如下所示:

    spring:  cloud:  nacos:  config:  server-addr: 127.0.0.1:8848 # Nacos 服务器地址  data-id: myapp-dev.properties # Data ID  group: DEV_GROUP # Group  namespace: your-namespace-id # Namespace 的 ID,可以在 Nacos 控制台上查看
     

    注意,你需要将 your-namespace-id 替换为你在 Nacos 控制台上为 DEV Namespace 创建的实际 ID。

  4. 启动应用
    启动你的 Spring Cloud 应用。应用将自动从 Nacos 加载指定 Data ID、Group 和 Namespace 的配置。

  5. 测试
    验证应用是否成功加载了正确的配置。你可以通过访问应用的端点或执行某些操作来检查配置是否生效。

17.Spring Cloud Alibaba 中如何处理分布式锁?

在 Spring Cloud Alibaba 中处理分布式事务的方法包括:

​1、使用 Seata:集成 Seata 框架来管理分布式事务。

2、全局事务管理:利用 Seata 的 Global Transaction ID(全局事务ID)追踪和协调各个服务的事务。

3、AT 模式:采用自动补偿的 AT 模式处理事务。

4、TCC 模式:使用 Try-Confirm-Cancel 模式进行更灵活的业务处理。

5、Saga 模式:在长事务中使用 Saga 模式进行事务管理。

6、XA 模式:对于支持 XA 协议的资源,使用 XA 模式进行分布式事务处理。                        
 

18.Spring Cloud Alibaba中Nacos的核心功能是什么?

Nacos在Spring Cloud Alibaba中扮演着重要的角色,其核心功能包括:

1、服务发现与注册: Nacos支持服务的动态注册与发现,这使得微服务之间能够灵活通讯,极大地增强了服务管理和扩展能力。

2、配置管理: Nacos提供动态的配置服务,允许应用在运行时动态调整配置而无需重启,支持配置的版本管理和回滚,以适应持续集成和持续部署(CI/CD)的需要。

3、服务健康监测: Nacos实现了服务健康检查,可以及时发现并处理服务实例的异常,保证系统的高可用性。

4、负载均衡: Nacos支持多种负载均衡策略,能够根据服务实例的运行情况自动调整请求分配,提升服务处理能力和效率。

5、服务分组和命名空间: 支持通过分组和命名空间对服务进行逻辑隔离,便于在不同环境中管理和运行服务,例如开发、测试和生产环境。

19.Spring Cloud Alibaba中,如何实现服务降级?

在SpringCloud Alibaba中,服务降级通常通过Sentinel来实现:

  1. 定义降级规则:首先需要定义降级规则,这些规则可以基于响应时间、QPS等多种指标。
  2. 配置降级策略:通过配置文件或程序代码配置降级策略,返回固定值、抛出异常或调用备用方案
  3. 绑定资源:将降级规则于具体的服务接口或方法绑定。
  4. 监控于调整:利用Sentinel的监控功能实时观察服务状态,并根据实际情况调整降级策略
  5. 集成测试:在开发或测试环境中模拟各种高负载和异常情况,确保降级机制的有效性和稳定性

20.Spring Cloud Alibaba中的Seata是什么,它如何解决分布式事务问题?

Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。它解决了在微服务架构中,不同服务之间因网络问题、服务故障等原因导致的数据不一致问题。

在分布式系统中,各个应用模块被拆分为多个可独立部署的服务,这些服务之间可能存在远程协作的事务操作。由于网络问题或服务故障,传统的本地事务(即在一个应用的同一个数据库连接中完成的事务)无法满足分布式事务的需求。Seata通过提供分布式事务的解决方案,保证在分布式系统下事务的ACID特性(原子性、一致性、隔离性、持久性)。

Seata为用户提供了AT、TCC、SAGA和XA事务模式,这些模式都能在一定程度上解决分布式事务问题。其中,AT模式是阿里首推的模式,它基于两阶段提交协议,通过全局事务ID将不同服务的分支事务关联起来,确保所有分支事务要么全部提交,要么全部回滚。

使用Seata解决分布式事务问题,通常需要配置一个事务协调器(TC)和多个事务参与者(TM和RM)。TC负责维护全局事务的运行状态,TM负责开启和结束全局事务,RM负责执行分支事务。在业务代码中,可以通过Seata的客户端库来参与分布式事务,使用@Transactional注解来声明事务边界。

相关文章:

2024年 Java 面试八股文——SpringCloud篇

目录 1.Spring Cloud Alibaba 中的 Nacos 是如何进行服务注册和发现的&#xff1f; 2.Spring Cloud Alibaba Sentinel 的流量控制规则有哪些&#xff1f; 3.Spring Cloud Alibaba 中如何实现分布式配置管理&#xff1f; 4.Spring Cloud Alibaba RocketMQ 的主要特点有哪些&…...

linux C语言Makefile

ChatGPT 在Linux中使用Makefile来自动化C语言项目的构建过程是很普遍的实践。Makefile是一个包含了一系列构建目标及如何构建这些目标的依赖和规则的文本文件。 一个基本的Makefile例子可能会像这样&#xff1a; # 定义编译器 CCgcc# 定义编译选项 CFLAGS-I.# 定义可执行文件…...

pgvector扩展在IvorySQL Oracle兼容模式下的应用实践

向量数据库是生成式人工智能(GenAI)的关键组成部分。作为PostgreSQL的重要扩展&#xff0c;pgvector支持高达16000维的向量计算能力&#xff0c;使得PostgreSQL能够直接转化为高效的向量数据库。 IvorySQL基于PostgreSQL开发&#xff0c;因此它同样支持添加pgvector扩展。在Ora…...

c++ 线程概述

C中的线程是并发编程的重要组成部分&#xff0c;它允许程序同时执行多个任务。以下是对C线程的概述&#xff1a; 基本概念&#xff1a; 并发&#xff1a;意味着两个或多个任务同时执行。在单核CPU上&#xff0c;由于只有一个CPU&#xff0c;某一时刻只能执行一个任务&#xff0…...

纯血鸿蒙APP实战开发——短视频切换实现案例

短视频切换实现案例 介绍 短视频切换在应用开发中是一种常见场景&#xff0c;上下滑动可以切换视频&#xff0c;十分方便。本模块基于Swiper组件和Video组件实现短视频切换功能。 效果图预览 使用说明 上下滑动可以切换视频。点击屏幕暂停视频&#xff0c;再次点击继续播放…...

36.Docker-Dockerfile自定义镜像

镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 镜像是分层机构&#xff0c;每一层都是一个layer BaseImage层&#xff1a;包含基本的系统函数库、环境变量、文件系统 EntryPoint:入口&#xff0c;是镜像中应用启动的命令 其他&#xff1a;在…...

【webrtc】MessageHandler 4: 基于线程的消息处理:以Fake 收发包模拟为例

G:\CDN\rtcCli\m98\src\media\base\fake_network_interface.h// Fake NetworkInterface that sends/receives RTP/RTCP packets.虚假的网络接口,用于模拟发送包、接收包单纯仅是处理一个ST_RTP包 消息的id就是ST_RTP 类型,– 然后给到目的地:mediachannel处理: 最后消息消…...

C#运算符“/”使用方法

C#中&#xff0c;当需要对两个整数进行除法运算时&#xff0c;结果会被截断为整数部分&#xff0c;即使结果本应是一个小数。这是因为整数除法会丢弃小数部分&#xff0c;只保留整数部分。 要想保留小数部分&#xff0c;需要将至少其中一个操作数转换为float、double或者 deci…...

虚拟机网络桥接模式无法通信,获取到的ip为169.254.X.X

原因&#xff1a;VMware自动选择的网卡可能不对 解决&#xff1a;编辑-虚拟网络编辑器-更改桥接模式-选择宿主机物理网卡&#xff0c;断开虚拟机网络连接后重新连接即可...

【数据结构】初识数据结构

引入&#xff1a; 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我…...

相机知识的补充

一&#xff1a;镜头 1.1MP的概念 相机中MP的意思是指百万像素。MP是mega pixel的缩写。mega意为一百万&#xff0c;mega pixel 指意为100万像素。“像素”是相机感光器件上的感光最小单位。就像是光学相机的感光胶片的银粒一样&#xff0c;记忆在数码相机的“胶片”&#xff…...

在Linux操作系统中实现磁盘开机自动挂载

当一个分区创建好&#xff0c;然后文件系统创建完毕之后&#xff0c; 需要使用mount命令将分区挂载到空目录上&#xff0c;这个挂载关系是临时的&#xff0c;也就是说当重启机器的时候&#xff0c;硬盘分区于空目录之间的挂载关系就会解除。 磁盘于目录之间的挂载关系断开意味…...

单片机编程实例400例大全(100-200)

今天继续分享单片机编程实例第100-200例。 今天的实例会比前面100复杂一些&#xff0c;我大概看了下&#xff0c;很多都具备实际产品的参考价值。 今天继续分享单片机编程实例第100-200例。 今天的实例会比前面100复杂一些&#xff0c;我大概看了下&#xff0c;很多都具备实际…...

新兴游戏引擎Godot vs. 主流游戏引擎Unity和虚幻引擎,以及版本控制工具Perforce Helix Core如何与其高效集成

游戏行业出现一个新生事物——Godot&#xff0c;一个免费且开源的2D和3D游戏引擎。曾经由Unity和虚幻引擎&#xff08;Unreal Engine&#xff09;等巨头主导的领域如今迎来了竞争对手。随着最近“独特”定价模式的变化&#xff0c;越来越多的独立开发者和小型开发团队倾向于选择…...

Leetcode—1652. 拆炸弹【简单】

2024每日刷题&#xff08;127&#xff09; Leetcode—1652. 拆炸弹 实现代码 class Solution { public:vector<int> decrypt(vector<int>& code, int k) {int codeSize code.size();vector<int> ans(codeSize, 0);if(k 0) {return ans;}if(k > 0)…...

JAVASE---抽象类相关

instanceof 和类型转换 System.out.println(X instanceof Y );主要看X与Y之间是否存在父子&#xff08;继承&#xff09;关系&#xff0c;如果存在则编译可完成&#xff0c;否则无法 进行编译。 1.父类引用指向子类的对象 2.把子类转换为父类&#xff0c;向上转型; 3.把父类转…...

深入理解C++中的inline函数

在C编程中&#xff0c;我们经常会遇到inline关键字&#xff0c;它用于修饰函数&#xff0c;以建议编译器将该函数的调用替换为函数体的直接拷贝。这就是inline函数的基本概念。然而&#xff0c;inline函数并非真正意义上的函数&#xff0c;而只是一种"在调用点插入函数体&…...

Rust 动态数组Vector

导航 一、动态数组是什么&#xff0c;怎么用1、动态数组Vector是什么2、动态数组怎么用&#xff08;1&#xff09;创建动态数组&#xff08;2&#xff09;尾部追加元素&#xff08;3&#xff09;尾部删除元素&#xff08;4&#xff09;删除指定位置元素&#xff08;5&#xff0…...

Linux主机重启后报错:[FAILED] Failed to start Switch Root.

一、问题描述 某次云主机因计费问题&#xff0c;导致批量重启&#xff0c;重启后发现某台云主机竟进入紧急救援模式&#xff08;emergency模式&#xff09;&#xff0c;如下所示&#xff1a; 二、原因及处理 1&#xff09;原因&#xff1a;加载根分区失败&#xff0c;导致无…...

git--.gitignore--使用/详解/实例

简介 本文介绍git的.gitignore忽略文件的用法。 项目中并不是所有文件都需要保存到版本库中的&#xff0c;例如“target”目录及目录下的文件就可以忽略。 忽略某个文件&#xff08;不提交到版本库的方法&#xff09;&#xff1a;在Git工作区的根目录下创建一个.gitignore文件…...

初识java——javaSE(2)--运算符与逻辑控制【求个关注】

文章目录 一 运算符1.1 算术运算符当两个不同类型的值相加时&#xff1a;/ 运算符%运算符 1.2 关系运算符1.3 逻辑运算符短路&#xff1a;逻辑非 1.4 位运算符&|^位运算符当作逻辑运算符中使用 ~>><<>>> 1.5 赋值运算符1.6 三目运算符 二 逻辑控制if语…...

JAVA前端快速入门基础_javascript入门(02)

写在前面:本文用于快速学会简易的JS&#xff0c;仅做扫盲和参考作用 1.JavaScript函数 什么是函数:执行特定任务的代码块 1.1定义&#xff1a; 使用function来进行定义(类似于python里面的def 或者java和c里面的void&#xff0c;int这些返回类型开头)。定义规则如下: func…...

【热门话题】ElementUI 快速入门指南

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 ElementUI 快速入门指南环境准备安装 ElementUI创建 Vue 项目安装 ElementUI 基…...

webpack4和webpack5区别4---自动清除打包目录

webpack4 自动清除打包目录 需要使用clean-webpack-plugin插件 const {CleanWebpackPlugin} require(clean-webpack-plugin); module.exports {plugins: [new CleanWebpackPlugin()} } webpack5 自动清除打包目录 module.exports {output: {clean: true} }...

npm许可证检查

node开发做项目&#xff0c;很少有人去纯手工打造&#xff0c;大多是采用一些开源框架&#xff0c;还会使用前人做好的轮子&#xff0c;所以咱们的项目文件里&#xff0c;除了自己编写的js文件&#xff0c;还会带有一些拿来主义的npm模块&#xff0c;从其他开源发布网站上下载的…...

利用AI大模型和Echarts 绘制知识图谱,实现文本信息提取和图数据库操作

引言 随着信息时代的到来&#xff0c;海量的文本数据成为了我们获取知识的重要来源。然而&#xff0c;如何从这些文本数据中提取出有用的信息&#xff0c;并将其以可视化的方式展示出来&#xff0c;一直是一个具有挑战性的问题。近年来&#xff0c;随着人工智能技术的发展&…...

Telegram电报+86手机接收验证码及账号解封方法

Telegram电报86手机无法接受验证码目前可用Telegram X获取&#xff0c;测试可用。获取验证码的前提是需要确保网络通畅 不要同一时段获取超过太多验证码&#xff0c;获取过多验证码将会很长一段时间收不到验证码&#xff0c;6小时最多获取2次验证码。 方法1&#xff1a;使用官…...

迅饶科技 X2Modbus 网关 AddUser 任意用户添加漏洞复现

0x01 产品简介 X2Modbus是上海迅饶自动化科技有限公司Q开发的一款功能很强大的协议转换网关, 这里的X代表各家不同的通信协议, 2是T0的谐音表示转换, Modbus就是最终支持的标准协议是Modbus协议。用户可以根据现场设备的通信协议进行配置,转成标准的Modbus协议。在PC端仿真…...

基于YOLOv8+PyQt5复杂场景下船舶目标检测系统

1. 应用场景 复杂场景下船舶目标检测系统的应用场景包括&#xff1a; 港口管理和安全&#xff1a;监控港口区域&#xff0c;确保船舶安全地进出港口&#xff0c;预防相撞事故的发生。 海洋交通监控&#xff1a;实时追踪海上交通流&#xff0c;并识别违规或异常航行行为&#x…...

Spring Boot | Spring Security ( SpringBoot安全管理 )、Spring Security中 的 “自定义用户认证“

目录 : Spring Boot 安全管理 &#xff1a;一、Spring Security 介绍二、Spring Security 快速入门2.1 基础环境搭建 :① 创建Spring Boot 项目② 创建 html资源文件③ 编写Web控制层 2.2 开启安全管理效果测试 :④ 添加 spring-boot-starter-security 启动器⑤ 项目启动测试 三…...

网站html5自适应屏幕/提交网址给百度

类初始化 &#xff08;static部分&#xff09; 执行clinit方法 main方法 所在的类需要 先加载和初始化子类的初始化需要先初始化父类类初始化就是指向<clinit>()方法 ①、<clinit>()方法由静态 类变量显示赋值代码 和 静态代码块 组成 ②、类变量显示赋值代码 …...

刚注册在域名可以自己做网站吗/有什么公司要做推广的

有调查显示企业拒绝向云端迁移的头号原因是出于对隐私和安全问题的担心。当然过去一年的云端数据泄露事件&#xff0c;也为人们的担心增添了佐证。但是云计算真的比传统数据中心更不安全吗&#xff1f;答案是否定的。事实是&#xff0c;所有的数据泄露事件都与云计算本身没有关…...

怎么做国内外网站/广告推广免费发布

作者&#xff1a;junshili一步一步推导出 Mysql 索引的底层数据结构。Mysql 作为互联网中非常热门的数据库&#xff0c;其底层的存储引擎和数据检索引擎的设计非常重要&#xff0c;尤其是 Mysql 数据的存储形式以及索引的设计&#xff0c;决定了 Mysql 整体的数据检索性能。我们…...

抖音里做我女朋友网站/打开百度首页

Ubuntu Desktop基本办公环境搭建 一如前面所强调的&#xff0c; linux系统是面向开发人员友好的&#xff0c;而对office办公人员并不友好 。 如果是重度的office办公需求人员&#xff0c;不建议使用linux desktop&#xff0c;而建议使用windows&#xff0c;基本上所有的大型off…...

独立站引流的方式有哪些/百度收录方法

视频汇总首页&#xff1a;http://edu.51cto.com/lecturer/index/user_id-4626073.html为了普及mysql的基本知识&#xff0c;特意弄了这个章节&#xff0c;主要是发现第一次接触的人都不知道怎么弄&#xff0c;或者看不懂&#xff0c;所以这里就详细说下吧数据导入1.mysqlimport…...

怎样设计一个公司网站/营销网站建设选择原则

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/swrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/sr/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/sw/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/srsec/s: 每秒读扇区数。即 del…...