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

关于 Spring Boot 微服务解决方案的对比,并以 Spring Cloud Alibaba 为例,详细说明其核心组件的使用方式、配置及代码示例

以下是关于 Spring Boot 微服务解决方案的对比,并以 Spring Cloud Alibaba 为例,详细说明其核心组件的使用方式、配置及代码示例:

关于 Spring Cloud Alibaba

致力于提供微服务开发的一站式解决方案!
https://sca.aliyun.com/?spm=7145af80.434205f.0.0.74716242oEhMef

在这里插入图片描述

在这里插入图片描述


1. 微服务解决方案对比

方案核心组件特点适用场景
Spring Cloud NetflixEureka(注册中心)、Hystrix(熔断)、Feign(RPC)、Zuul/Gateway(网关)成熟稳定,社区广泛,但部分组件(如 Hystrix)已停止维护传统微服务架构,需兼容旧系统
Spring Cloud AlibabaNacos(注册/配置中心)、Sentinel(流控降级)、Dubbo/Feign(RPC)、Gateway(网关)阿里巴巴生态,轻量高效,支持云原生,组件活跃维护新项目,需要与阿里云/容器化集成
Spring Cloud ConsulConsul(注册/配置中心)、Resilience4j(熔断)、Spring Cloud Gateway(网关)基于 Consul 的强一致性,适合分布式系统需要强一致性分布式环境
Istio/Servie MeshPilot(控制平面)、Envoy(数据平面)、Mixer(策略与遥测)服务网格方案,无侵入式治理,支持多语言云原生环境,多语言微服务架构

2. Spring Cloud Alibaba 微服务开发详解

2.1 核心组件
组件功能依赖
Nacos服务注册与发现、动态配置中心spring-cloud-starter-alibaba-nacos-discovery, spring-cloud-starter-alibaba-nacos-config
Sentinel流量控制、熔断降级、系统负载保护spring-cloud-starter-alibaba-sentinel
Dubbo/Spring MVC服务间通信(RPC)spring-cloud-starter-dubbospring-boot-starter-web
GatewayAPI 网关,路由、鉴权、限流spring-cloud-starter-gateway
Seata分布式事务管理seata-spring-boot-starter
Sleuth+Zipkin分布式链路追踪spring-cloud-starter-sleuth, spring-cloud-sleuth-zipkin

3. 代码示例:Spring Cloud Alibaba 微服务

3.1 项目依赖(pom.xml)
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2022.0.3</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2022.0.0.0</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><dependencies><!-- Nacos 服务注册与发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- Nacos 配置中心 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- Sentinel 熔断降级 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!-- Spring Cloud Gateway --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- 分布式事务 Seata --><dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId><version>1.7.1</version></dependency>
</dependencies>

3.2 服务提供者(Provider)
3.2.1 配置 application.yml
server:port: 8080spring:application:name: user-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848  # Nacos 服务器地址config:server-addr: 127.0.0.1:8848extension-configs:- file-extension=yamlgroup: DEFAULT_GROUP
3.2.2 启动类
@SpringBootApplication
@EnableDiscoveryClient  // 启用服务注册
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class, args);}
}
3.2.3 服务接口
@RestController
@RequestMapping("/users")
public class UserController {@GetMapping("/{id}")public User getUser(@PathVariable Long id) {// 业务逻辑return new User(id, "John Doe");}
}

3.3 服务消费者(Consumer)
3.3.1 配置 application.yml
spring:application:name: order-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848
3.3.2 调用服务
@Service
public class OrderService {@Autowiredprivate RestTemplate restTemplate;public Order createOrder(Long userId) {// 调用 user-serviceUser user = restTemplate.getForObject("http://user-service/users/{userId}", User.class, userId);return new Order(user.getName(), "ORDER-123");}
}

3.4 Nacos 配置中心
3.4.1 配置文件(Nacos 中配置)
# Data ID: user-service.yaml
user:service:timeout: 5000
3.4.2 读取配置
@ConfigurationProperties(prefix = "user.service")
public class UserConfig {private Integer timeout;// getters/setters
}

3.5 Sentinel 熔断降级
3.5.1 配置限流规则(Nacos 或本地文件)
[{"resource": "/users/{id}","count": 100,"grade": 1,"limitApp": "default","strategy": 0,"controlBehavior": 0,"statIntervalMs": 1000}
]
3.5.2 注解限流
@RestController
public class UserController {@SentinelResource(value = "getUser", blockHandler = "handleBlock")@GetMapping("/{id}")public User getUser(@PathVariable Long id) {// 业务逻辑}public User handleBlock(BlockException e) {return new User(-1L, "服务不可用");}
}

3.6 API 网关(Spring Cloud Gateway)
3.6.1 配置路由(application.yml)
spring:cloud:gateway:routes:- id: user_routeuri: lb://user-service  # 通过服务名路由predicates:- Path=/api/users/**filters:- StripPrefix=1
3.6.2 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}

3.7 分布式事务(Seata)
3.7.1 配置 application.yml
seata:enabled: trueapplication-id: ${spring.application.name}tx-service-group: ${spring.application.name}-groupservice:vgroup-mapping:${spring.application.name}-group: defaultgrouplist:default: 127.0.0.1:8091
3.7.2 事务注解
@Service
public class OrderService {@GlobalTransactional(name = "createOrder")public void createOrder() {// 跨服务事务操作userService.createUser();inventoryService.reduceStock();}
}

3.8 分布式链路追踪(Sleuth + Zipkin)
3.8.1 配置 application.yml
spring:zipkin:base-url: http://zipkin-server:9411sleuth:sampler:probability: 1.0  # 100%采样率
3.8.2 启动类
@SpringBootApplication
public class TraceApplication {public static void main(String[] args) {SpringApplication.run(TraceApplication.class, args);}
}

4. 组件功能对比表格

组件功能配置方式代码示例
Nacos服务注册、发现、动态配置application.yml 配置 Nacos 地址@EnableDiscoveryClient, 配置 server-addr
Sentinel流量控制、熔断降级JSON 配置规则或代码动态配置@SentinelResource, 限流规则文件
Gateway路由、鉴权、限流application.yml 定义路由规则@EnableDiscoveryClient, 路由配置文件
Seata分布式事务管理配置 seata-config 和事务组@GlobalTransactional, 配置 seata-application.yml
Sleuth+Zipkin链路追踪配置 Zipkin 服务器地址@SpringBootApplication, 配置 spring.zipkin.base-url

5. 完整项目结构示例

my-microservices/
├── config-center/          # Nacos 配置中心
├── user-service/           # 用户服务(Provider)
├── order-service/          # 订单服务(Consumer)
├── gateway/                # API 网关
├── seata-server/           # 分布式事务服务器
└── zipkin-server/          # 链路追踪服务器

6. 关键配置步骤

6.1 Nacos 服务注册
# user-service 的 application.yml
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848
6.2 Sentinel 熔断配置
// Sentinel 流量规则配置
@Configuration
public class SentinelConfig {@Beanpublic SentinelGatewayFilterFactory sentinelFilterFactory() {return new SentinelGatewayFilterFactory();}
}
6.3 Seata 分布式事务
# seata-config.conf(放置在 classpath 下)
service {vgroup_mapping.my_test_tx_group = "default"default.grouplist = "127.0.0.1:8091"
}

7. 总结表格

组件功能配置方式代码示例
Nacos服务注册/发现、配置中心application.yml 配置服务器地址@EnableDiscoveryClient, 动态配置刷新
Sentinel流量控制、熔断降级JSON 配置或代码动态配置@SentinelResource, 限流规则定义
GatewayAPI 网关,路由、鉴权application.yml 定义路由规则@EnableDiscoveryClient, 路由配置文件
Seata分布式事务管理配置 seata-config 和事务组@GlobalTransactional, 事务组配置
Sleuth+Zipkin分布式链路追踪配置 Zipkin 服务器地址@SpringBootApplication, 链路日志收集

8. 注意事项

  1. Nacos 集群部署:生产环境需部署 Nacos 集群以保证高可用。
  2. Sentinel 规则管理:建议通过控制台(nacos-config)动态管理规则。
  3. Seata 性能优化:需配置数据库事务隔离级别(如 READ_COMMITTED)。
  4. 链路追踪:Zipkin 需独立部署,支持 HTTP 或 Kafka 模式。

通过以上组件的组合,可以构建一个高可用、可扩展的微服务架构。Spring Cloud Alibaba 的组件设计更贴合云原生需求,适合中大型分布式系统。

番外

以下是关于 微服务服务治理 的详细说明,涵盖核心概念、主流框架/解决方案的对比,以及关键功能的总结表格:


1. 服务治理核心概念

服务治理是微服务架构中管理服务间通信、监控、容错、配置等的核心能力。主要功能包括:

  • 服务注册与发现:动态管理服务实例。
  • 配置中心:集中管理配置。
  • 负载均衡:分发请求流量。
  • 熔断降级:防止雪崩效应。
  • 服务网关:统一入口,路由与鉴权。
  • 分布式事务:保证跨服务事务一致性。
  • 链路追踪:监控请求链路性能。

2. 主流服务治理框架/解决方案对比

2.1 Spring Cloud Netflix(已逐步淘汰)
组件功能特点适用场景
Eureka服务注册与发现成熟稳定,但维护停止,需迁移到其他方案(如Nacos)过渡期项目,需兼容旧系统
Zuul/GatewayAPI 网关,路由与过滤Zuul 1.x 已停止维护,Spring Cloud Gateway 更推荐需快速搭建网关功能
Hystrix熔断与降级响应式设计,但代码侵入性强,维护停止需基础熔断功能,但需注意维护状态
Feign客户端负载均衡与声明式服务调用简单易用,但需与 Ribbon 配合简单 RPC 场景

2.2 Spring Cloud Alibaba
组件功能特点适用场景
Nacos服务注册/发现、动态配置中心阿里巴巴生态,轻量高效,支持云原生,社区活跃新项目,与阿里云/容器化集成
Sentinel流量控制、熔断、系统负载保护支持实时监控,规则动态调整,支持多语言扩展需高并发场景下的流量控制
Dubbo/Spring Cloud服务间通信(RPC)Dubbo 性能高,Spring Cloud 原生集成复杂服务间通信需求
Spring Cloud GatewayAPI 网关,路由、鉴权、限流非侵入式,支持多种过滤器需灵活路由与安全策略

2.3 Consul
组件功能特点适用场景
Consul服务注册/发现、健康检查、Key-Value 配置、多数据中心支持自带配置中心,强一致性,适合分布式系统需强一致性服务发现与配置管理
Envoy服务网格数据平面,支持流量管理、熔断、链路追踪非侵入式,支持多语言,但需额外部署多语言微服务架构

2.4 Istio
组件功能特点适用场景
Istio服务网格,支持流量管理、熔断、链路追踪、安全策略非侵入式,支持多语言,与 Kubernetes 深度集成云原生环境,多语言微服务架构
Pilot控制平面,管理服务路由和规则需配合 Envoy 或其他数据平面需复杂流量管理(如金丝雀发布)

2.5 Apache Dubbo
组件功能特点适用场景
Dubbo服务注册/发现、高性能 RPC、负载均衡、熔断降级性能高,适合 Java 生态,需配合 ZooKeeper/Nacos高性能 Java 微服务架构
Dubbo 3.x支持云原生,集成 Nacos/Sentinel兼容 Spring Cloud,支持多语言扩展需高性能与云原生结合

2.6 Kubernetes + Istio
组件功能特点适用场景
Kubernetes容器编排,服务发现,健康检查生态完善,支持自动化部署与扩缩容容器化部署,需与 Istio 集成
Istio服务网格,流量管理、安全策略、链路追踪非侵入式,支持多语言,需额外资源消耗云原生环境,多语言服务治理

2.7 Service Mesh(如 Linkerd)
组件功能特点适用场景
Linkerd服务网格,轻量级流量控制、熔断、监控性能低开销,支持多语言,社区活跃需轻量级服务治理与多语言支持

2.8 HashiCorp Nomad
组件功能特点适用场景
Nomad作业调度与服务治理,支持服务发现、健康检查与 Consul 集成,适合混合云环境需统一调度与服务治理的混合云场景

3. 核心功能对比表格

框架/方案服务注册发现配置中心熔断降级API 网关分布式事务链路追踪社区活跃度适用场景
Spring Cloud NetflixEureka自定义HystrixZuul/Gateway不直接支持Sleuth+Zipkin逐渐衰退过渡期项目,需兼容旧系统
Spring Cloud AlibabaNacosNacosSentinelGatewaySeataSleuth+Zipkin活跃新项目,阿里云生态
ConsulConsulConsul自定义API Gateway不直接支持自定义活跃强一致性分布式系统
Istio自带发现ConfigMap自带熔断自带网关自定义Jaeger非常活跃云原生,多语言微服务
DubboZooKeeper/Nacos自定义自带熔断自定义Dubbo-TCCSkyWalking活跃高性能 Java 架构
Kubernetes+IstioKubernetesConfigMapIstioIstio自定义Jaeger非常活跃容器化部署,云原生
**Service Mesh(Linkerd)自带发现自定义自带熔断自带网关自定义自定义活跃需轻量级治理与多语言支持

4. 功能实现对比

4.1 服务注册发现
  • Nacos:轻量、支持集群、多数据中心。
  • Consul:强一致性,内置健康检查。
  • Kubernetes:基于 DNS 或 CoreDNS,适合容器环境。
4.2 配置中心
  • Nacos:动态配置推送,支持多环境。
  • Consul:Key-Value 存储,需自定义监听。
  • Spring Cloud Config:基于 Git,适合 GitOps。
4.3 熔断降级
  • Sentinel:实时统计,支持多维度限流。
  • Hystrix:成熟但维护停止。
  • Istio:基于 Sidecar 的流量控制。
4.4 分布式事务
  • Seata:AT 模式支持自动事务,需数据库支持。
  • Saga:基于消息补偿,适合长事务。
  • Istio:通过 Sidecar 实现分布式追踪与补偿。

5. 选择建议

需求场景推荐方案原因
Java 生态,快速启动Spring Cloud Alibaba (Nacos+Sentinel)阿里生态完善,配置简单,社区活跃。
云原生,多语言支持Istio + Kubernetes非侵入式,与容器生态深度集成。
高性能 RPC,Java 为主Dubbo 3.x + Nacos性能高,支持云原生,与 Spring Cloud 兼容。
混合云环境,强一致性需求Consul + Envoy强一致性服务发现,支持多数据中心。
轻量级治理,无需 SidecarSpring Cloud Alibaba代码侵入式,适合中小型项目。

6. 典型场景代码示例(Spring Cloud Alibaba)

6.1 服务注册与发现(Nacos)

配置 application.yml

spring:application:name: user-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848

启动类:

@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class, args);}
}

6.2 熔断降级(Sentinel)

配置限流规则(JSON):

[{"resource": "/users/{id}","count": 100,"grade": 1,"strategy": 0,"controlBehavior": 0}
]

代码注解:

@RestController
public class UserController {@SentinelResource(value = "getUser", blockHandler = "handleBlock")@GetMapping("/{id}")public User getUser(@PathVariable Long id) {// 业务逻辑}public User handleBlock(BlockException e) {return new User(-1L, "服务不可用");}
}

6.3 API 网关(Spring Cloud Gateway)

路由配置 application.yml

spring:cloud:gateway:routes:- id: user_routeuri: lb://user-servicepredicates:- Path=/api/users/**filters:- StripPrefix=1

6.4 分布式事务(Seata)

配置 application.yml

seata:enabled: trueapplication-id: ${spring.application.name}tx-service-group: ${spring.application.name}-group

事务注解:

@Service
public class OrderService {@GlobalTransactionalpublic void createOrder() {// 跨服务事务操作userService.createUser();inventoryService.reduceStock();}
}

7. 总结表格

框架/方案服务治理能力非侵入性多语言支持学习成本适用场景
Spring Cloud Alibaba完整部分侵入式有限中等新项目,阿里云生态
Istio完整非侵入式完全云原生,多语言微服务
Consul完整部分侵入式有限中等强一致性分布式系统
Dubbo完整部分侵入式有限中等高性能 Java 架构
Kubernetes+Istio完整非侵入式完全容器化部署,云原生
**Service Mesh(Linkerd)完整非侵入式完全轻量级治理,多语言支持

8. 注意事项

  1. Spring Cloud Netflix:组件(如 Hystrix)已停止维护,建议迁移到 Resilience4j 或 Sentinel。
  2. Istio:需部署 Sidecar,资源消耗较高,适合云原生环境。
  3. Nacos:支持服务发现与配置中心一体化,适合快速搭建。
  4. Seata:需数据库支持,适合需强事务一致性的场景。

通过以上对比和示例,开发者可根据项目需求选择合适的治理方案。对于新项目,Spring Cloud AlibabaIstio 是主流选择,前者适合 Java 生态,后者适合云原生多语言架构。

相关文章:

关于 Spring Boot 微服务解决方案的对比,并以 Spring Cloud Alibaba 为例,详细说明其核心组件的使用方式、配置及代码示例

以下是关于 Spring Boot 微服务解决方案的对比&#xff0c;并以 Spring Cloud Alibaba 为例&#xff0c;详细说明其核心组件的使用方式、配置及代码示例&#xff1a; 关于 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案! https://sca.aliyun.com/?spm7145af80…...

3.1多状态专题:LeetCode面试题17.16 按摩师

动态规划解决按摩师预约问题——以LeetCode面试题17.16为例 1.题目链接 LeetCode面试题17.16 按摩师 2.题目描述 一个有名的按摩师收到一系列的预约请求&#xff0c;每个预约都可以选择接受或不接受。但相邻的预约不能同时接受。给定一个包含各预约时长的数组 nums&#xf…...

Netty基础入门(一)

1.EventLoopGroup 1、概念 EventLoopGroup 是一组 EventLoop&#xff0c;Channel 一般会调用 EventLoopGroup 的 register 方法来绑定其中一个 EventLoop&#xff0c;后续这个 Channel 上的 io 事件都由此 EventLoop 来处理&#xff08;保证了 io 事件处理时的线程安全&#x…...

Transformer模型的自注意机制原理、作用、优缺点,通俗易懂

Transformer模型中的自注意力机制&#xff08;Self - attention Mechanism&#xff09;可以通俗地理解为一种让模型自动关注文本中不同部分之间关系的方法。 工作原理 假设你有一句话“我正在吃苹果”&#xff0c;自注意力机制会让模型去分析每个词和其他词之间的关联程度。比…...

设计模式-结构型模式-代理模式

概述 代理模式: Proxy Pattern : 是一种结构型设计模式. 它允许你提供一个替代对象来代表真实对象&#xff0c;以此控制对真实对象的访问。 通过代理对象&#xff0c;可以在不改变目标对象的前提下&#xff0c;扩展其功能或控制对其的访问。 简单理解 &#xff1a; 代理模式就是…...

大模型开发:源码分析 Qwen 2.5-VL 视频抽帧模块(附加FFmpeg 性能对比测试)

目录 qwen 视频理解能力 messages 构建 demo qwen 抽帧代码分析 验证两个实际 case 官网介绍图 性能对比&#xff1a;ffmpeg 抽帧、decord 库抽帧 介绍 联系 对比 测试结果 测试明细 ffmpeg 100 qps 测试&#xff08;CPU&#xff09; decord 100 qps 测试&#x…...

单调栈 —— 1.基本概念与核心算法

1. 基本概念 1.1 知识预备 在理解单调栈之前&#xff0c;我们需要先掌握两个基础概念&#xff1a;栈&#xff08;Stack&#xff09; 和 单调性&#xff08;Monotonicity&#xff09;。 什么是栈&#xff08;Stack&#xff09; 栈是一种**后进先出&#xff08;LIFO, Last-In…...

Ollama部署大模型 (完整版本、网速慢处理、聊天界面)

切记&#xff01;切记&#xff01;切记&#xff01; Ollama软件下载的模型一般都是别人微调好的&#xff0c;且模型文件与HuggingFace等平台不一样&#xff0c;使用为主&#xff0c;没有官方API可以对模型微调&#xff08;教程都是cpp这类的&#xff0c;没必要这么麻烦去操作&a…...

CMake中add_custom_command用法详解

add_custom_command 是 CMake 中用于在构建过程中添加自定义命令的工具。它通常用于生成文件或在构建特定目标前后执行操作。其行为和执行时机取决于具体使用场景。 主要用法 add_custom_command 有两种典型用法&#xff1a; 1. 生成文件&#xff08;Generating Files&#x…...

基于疾风大模型的新能源储能优化系统:方法、实现与案例分析

一、引言 随着可再生能源渗透率不断提高,储能系统在电力系统中的重要性日益凸显。传统储能控制方法主要基于规则策略和简单优化算法,难以应对高比例新能源场景下的复杂决策需求。本文将详细介绍如何利用疾风大模型(Gale Model)构建智能化的新能源储能优化系统,包含核心方…...

Large Language Model(LLM)的训练和微调

之前一个偏工程向的论文中了&#xff0c;但是当时对工程理论其实不算很了解&#xff0c;就来了解一下 工程流程 横轴叫智能追寻 竖轴上下文优化 Prompt不行的情况下加shot(提示)&#xff0c;如果每次都要加提示&#xff0c;就可以试试知识库增强检索来给提示。 如果希望增强…...

Windows 系统中安装 Git 并配置 GitHub 账户

由于电脑重装系统&#xff0c;重新配置了git. 以下是在 Windows 系统中安装 Git 并配置 GitHub 账户的详细步骤&#xff1a; 1. 安装 Git 访问 Git 官网下载页面下载 Windows 版本的 Git 安装程序运行安装程序&#xff0c;使用默认选项即可 2. 配置 Git 用户信息 打开命令…...

KWDB创作者计划—KWDB场景化创新实践:多模态数据融合与边缘智能的突破性应用

引言&#xff1a;AIoT时代的数据库范式重构 在工业物联网设备数量突破千亿、边缘计算节点覆盖率达75%的2025年&#xff0c;传统数据库面临多模态数据处理效率低下、边缘端算力利用率不足、跨域数据协同困难等核心挑战。KWDB&#xff08;KaiwuDB Community Edition&#xff09;通…...

波束形成(BF)从算法仿真到工程源码实现-第四节-最小方差无失真响应波束形成(MVDR)

一、概述 本节我们讨论最 小 方 差 无 失 真 响 应 (Minimum Variance Distortionless Response, MVDR)波束形成算法&#xff0c;包括原理分析及代码实现。 更多资料和代码可以进入https://t.zsxq.com/qgmoN &#xff0c;同时欢迎大家提出宝贵的建议&#xff0c;以共同探讨学习…...

初阶数据结构--链式二叉树

二叉树&#xff08;链式结构&#xff09; 前面的文章首先介绍了树的相关概念&#xff0c;阐述了树的存储结构是分为顺序结构和链式结构。其中顺序结构存储的方式叫做堆&#xff0c;并且对堆这个数据结构进行了模拟实现&#xff0c;并进行了相关拓展&#xff0c;接下来会针对链…...

嵌入式硬件篇---单片机周期

文章目录 前言 前言 在单片机中&#xff0c;时序控制是其执行指令和协调外设的核心基础。以下是单片机中常见的各种周期及其详细说明&#xff0c;以层次结构展开&#xff1a; 时钟周期&#xff08;Clock Cycle&#xff09; 定义&#xff1a; 时钟周期是单片机的最小时间单位&a…...

嵌入式硬件篇---加法减法积分微分器

文章目录 前言 前言 在模拟电子技术中&#xff0c;加法器、减法器、积分器和微分器是基本的运算电路&#xff0c;通常基于运算放大器&#xff08;运放&#xff09;实现。以下是它们的核心原理、典型结构和应用场景&#xff1a; 加法器&#xff08;Summing Amplifier&#xff0…...

解决使用VsCode远程ssh连接虚拟机ubuntu需要重复输入密码

1. windows打开windows powershell并输入如下命令 ssh-keygen -t ed25519 -C 你的随意一个邮箱2. 从路径C:\Users\PC.ssh下找到id_ed25519.pub并打开 复制里面全部内容 3. 切换到ubuntu $ cd .ssh/ $ vi authorized_keys 将前一步复制的内容粘贴进去并保存4. vscode重新连接…...

1558 找素数

1558 找素数 ⭐️难度&#xff1a;中等 &#x1f31f;考点&#xff1a;质数 &#x1f4d6; &#x1f4da; import java.util.Scanner; import java.util.Arrays;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.…...

[Android] PDF编辑器 Xodo PDF Reader 9.13.3 (不完全汉化,能用)

[Android] PDF编辑器 Xodo PDF 链接&#xff1a;https://pan.xunlei.com/s/VONeDpxJVwfmeSZu36RvZzSfA1?pwdv67d# 全面的 PDF 查看和批注 支持多种文件格式&#xff0c;包括 PDF 和 Microsoft Office 文档。提供用于添加注释、突出显示文本和为内容添加下划线的工具。包括夜…...

STM32LL库编程系列第八讲——ADC模数转换

系列文章目录 往期文章 STM32LL库编程系列第一讲——Delay精准延时函数&#xff08;详细&#xff0c;适合新手&#xff09; STM32LL库编程系列第二讲——蓝牙USART串口通信&#xff08;步骤详细、原理清晰&#xff09; STM32LL库编程系列第三讲——USARTDMA通信 STM32LL库编程…...

forms+windows添加激活水印

formswindows添加激活水印 多语言水印文本&#xff0c;根据系统语言自动切换。水印显示在每个屏幕的右下角&#xff0c;位置动态调整。半透明灰色文字&#xff0c;微软雅黑字体。窗口无边框、置顶、透明背景&#xff0c;不干扰用户操作。支持多显示器。高DPI适配。 效果图&am…...

ubuntu 服务器版本网络安全

1. 系统更新与补丁管理 定期更新系统 sudo apt update && sudo apt upgrade -y # 更新所有软件包 sudo apt autoremove # 清理旧内核和依赖启用自动安全更新 修改 /etc/apt/apt.conf.d/50unattended-upgrades&#xff0c;确保安全更新自动安装&#xff1a; Unatt…...

C++之map,set的实现

目录​​​​​​​ 一、红黑树的修改 1.1、节点结构 1.2、迭代器 1.3、红黑树的结构 二、map的封装 三、set的封装 一、红黑树的修改 首先&#xff0c;我们使用红黑树来封装map和set&#xff0c;其次我们实现的map和set想要复用同一个红黑树&#xff0c;所以我们需要对之…...

Elasticsearch:使用稀疏向量提升相关性

作者&#xff1a;来自 Elastic Vincent Bosc 学习如何在 Elasticsearch 中使用稀疏向量&#xff0c;以最小的复杂性提升相关性并实现搜索结果个性化。 稀疏向量是 ELSER 中的关键组件&#xff0c;但它们的用途远不止于此。在这篇文章中&#xff0c;我们将探讨稀疏向量如何在电商…...

SQL:Normalization(范式化)

目录 Normalization&#xff08;范式化&#xff09; 为什么需要 Normalization&#xff1f; &#x1f9e9; 表格分析&#xff1a; 第一范式&#xff08;1NF&#xff09; 什么是第一范式&#xff08;First Normal Form&#xff09;&#xff1f; 第二范式&#xff08;2NF&am…...

在pycharm中搭建yolo11分类检测系统1--PyQt5学习(一)

实验条件&#xff1a;pycharm24.3autodlyolov11环境PyQt5 如果pycharm还没有配PyQt5的话就先去看我原先写的这篇博文&#xff1a; PyQT5安装搭配QT DesignerPycharm&#xff09;-CSDN博客 跟练参考文章&#xff1a; 目标检测系列&#xff08;四&#xff09;利用pyqt5实现yo…...

Neo4j GDS-12-neo4j GDS 库中节点插入(Node Embedding)算法介绍

neo4j GDS 系列 Neo4j APOC-01-图数据库 apoc 插件介绍 Neo4j GDS-01-graph-data-science 图数据科学插件库概览 Neo4j GDS-02-graph-data-science 插件库安装实战笔记 Neo4j GDS-03-graph-data-science 简单聊一聊图数据科学插件库 Neo4j GDS-04-图的中心性分析介绍 Neo…...

【论文阅读】RMA: Rapid Motor Adaptation for Legged Robots

Paper: https://arxiv.org/abs/2107.04034Project: https://ashish-kmr.github.io/rma-legged-robots/Code: https://github.com/antonilo/rl_locomotion训练环境&#xff1a;Raisim 1.方法 RMA&#xff08;Rapid Motor Adaptation&#xff09;算法通过两阶段训练实现四足机器…...

C语言数据结构:树的实现、前序、中序、后序遍历

一、什么是树 树是一种非线性的数据结构&#xff0c;由若干个节点组成。每个节点都包含数据&#xff0c;并且可以有多个子节点。树的最顶端是一个特殊的节点&#xff0c;叫根节点&#xff0c;它没有父节点。从根节点开始&#xff0c;树不断向下分叉&#xff0c;形成不同的层次…...

PostgreSQL:逻辑复制与物理复制

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

单片机Day05---动态数码管显示01234567

一、原理图 数组索引段码值二进制显示内容00x3f0011 1111010x060000 0110120x5b0101 1011230x4f0100 1111340x660110 0110450x6d0110 1101560x7d0111 1101670x070000 0111780x7f0111 1111890x6f0110 11119100x770111 0111A110x7c0111 1100B120x390011 1001C130x5e0101 1110D140…...

STM32江科大-----SPI

声明&#xff1a;本人跟随b站江科大学习&#xff0c;本文章是观看完视频后的一些个人总结和经验分享&#xff0c;也同时为了方便日后的复习&#xff0c;如果有错误请各位大佬指出&#xff0c;如果对你有帮助可以点个赞小小鼓励一下&#xff0c;本文章建议配合原视频使用❤️ 如…...

OBS SDK 中 ffmpeg_muxer 与 ffmpeg_output 的区别与使用 QSV 编码器的正确方式

在使用 OBS SDK 开发录制或推流功能时,开发者可能会遇到两个看似相似却完全不同的输出类型:ffmpeg_muxer 和 ffmpeg_output。它们的使用方式、编码器支持范围以及配置方式都有显著区别,特别是在使用硬件编码器(如 Intel QSV)时,选择正确的输出类型至关重要。 本文将重点…...

基于AOP+Log4Net+AutoFac日志框架

1.项目概述 这是一个基于 C# 的 WPF 项目 WpfApp12log4net&#xff0c;它综合运用了依赖注入、日志记录和接口实现等多种技术&#xff0c;同时使用了 Autofac、Castle.Core 和 log4net 等第三方库。 2.配置log4net 新建一个Log4Net.config&#xff0c;配置需要记录的日志信息…...

【Hadoop入门】Hadoop生态之Yarn简介

1 什么是Yarn&#xff1f; Yarn&#xff08;Yet Another Resource Negotiator&#xff09; 是Hadoop生态系统中的资源管理和调度框架&#xff0c;负责为上层应用提供统一的资源管理和调度服务。 是Hadoop 2.0引入的重要架构改进&#xff0c;成为Hadoop集群的资源管理层&#xf…...

猫咪如厕检测与分类识别系统系列【三】融合yolov11目标检测

✅ 前情提要 家里养了三只猫咪&#xff0c;其中一只布偶猫经常出入厕所。但因为平时忙于学业&#xff0c;没法时刻关注牠的行为。我知道猫咪的如厕频率和时长与健康状况密切相关&#xff0c;频繁如厕可能是泌尿问题&#xff0c;停留过久也可能是便秘或不适。为了更科学地了解牠…...

qt的基本使用

先教大家如何基本使用qt&#xff0c;这样是为了后面的服务器使用做铺垫 安装测试用例的创建创建qt界面程序后讲解各文件的作用qt的界面控件实现逻辑功能的流程测试效果 我会写一个测试用例方便大家了解与使用 安装 参考这个文章来安装&#xff0c;链接: qt安装 测试用例的创建…...

Spring AI使用tool Calling和MCP

深入探索 Spring AI Spring AI版本1.0.0.M6 在人工智能与软件开发深度融合的时代&#xff0c;Spring AI 作为一个强大的框架&#xff0c;持续为开发者提供着高效且便捷的工具&#xff0c;以实现与大语言模型&#xff08;LLM&#xff09;的无缝交互。Spring AI 的最新版本引入了…...

【前端】webpack一本通

今日更新完毕&#xff0c;不定期补充&#xff0c;建议关注收藏点赞。 目录 简介使用webpack默认只能处理js文件 ->引入加载器对JS语法降级&#xff0c;兼容低版本语法合并文件再次打包进阶 工作原理html-webpack-plugin插件webpack开发服务器引入使用webpack-dev-server模块…...

STM32蓝牙连接Android实现云端数据通信(电机控制-开源)

引言 基于 STM32F103C8T6 最小系统板完成电机控制。这个小项目采用 HAL 库方法实现&#xff0c;通过 CubeMAX 配置相关引脚&#xff0c;步进电机使用 28BYJ-48 &#xff08;四相五线式步进电机&#xff09;&#xff0c;程序通过蓝牙连接手机 APP 端进行数据收发&#xff0c; OL…...

OpenHarmony Camera开发指导(二):相机设备管理(ArkTS)

在开发一个相机应用前&#xff0c;需要先通过调用Camera接口获取支持的相机设备列表&#xff0c;然后创建相机设备对象做后续处理。 开发步骤 1、导入camera接口&#xff0c;接口中提供了相机相关的属性和方法&#xff0c;导入方法如下。 import { camera } from kit.Camera…...

安卓 手机拨打电话录音保存地址适配

今天来聊一聊各大厂商拨打电话自动录音保存地址适配&#xff0c;希望同学们积极参与评论&#xff0c;把自己的手机型号、Android版本及拨打电话录音地址发一下&#xff0c;众人拾柴火焰高啊&#xff0c;这样有利于后期的同学积累经验&#xff0c;为中国的手机适配做一次贡献。 …...

spring cloud微服务断路器详解及主流断路器框架对比

微服务断路器详解 1. 核心概念 定义&#xff1a;断路器模式通过快速失败机制防止故障扩散&#xff0c;当服务调用出现异常或超时时&#xff0c;自动切换到降级逻辑&#xff0c;避免级联故障。核心功能&#xff1a; 熔断&#xff1a;在故障阈值&#xff08;如错误率&#xff09…...

idea在线离线安装插件教程

概述 对于小白来说&#xff0c;刚使用idea时&#xff0c;还有很多不懂的地方&#xff0c;这里&#xff0c;简单介绍下如何安装插件。让小白能容易上手全盘idea。 1、File -> Settings 2、找到 Plugins -> Marketplace 3、安装 3.1、在线安装 输入想搜索的内容&#x…...

项目管理(高软56)

系列文章目录 项目管理 文章目录 系列文章目录前言一、进度管理二、配置管理三、质量四、风险管理五、真题总结 前言 本节主要讲项目管理知识&#xff0c;这些知识听的有点意思啊。对于技术人想创业&#xff0c;单干的都很有必要听听。 一、进度管理 二、配置管理 三、质量 四…...

通过类似数据蒸馏或主动学习采样的方法,更加高效地学习良品数据分布

好的&#xff0c;我们先聚焦第一个突破点&#xff1a; 通过类似数据蒸馏或主动学习采样的方法&#xff0c;更加高效地学习良品数据分布。 这里我提供一个完整的代码示例&#xff1a; ✅ Masked图像重建 残差热力图 这属于自监督蒸馏方法的一个变体&#xff1a; 使用一个 预…...

Java设计模式实战:策略模式在SimUDuck问题中的应用

一、前言 在面向对象编程中&#xff0c;设计模式是解决常见问题的可重用方案。今天&#xff0c;我将通过经典的SimUDuck问题&#xff0c;向大家展示如何使用策略模式(Strategy Pattern)来设计灵活、可扩展的鸭子模拟程序。 二、问题描述 SimUDuck是一个模拟鸭子行为的程序。最…...

考虑蒙特卡洛考虑风光不确定性的配电网运行风险评估—Matlab

目录 一、主要内容&#xff1a; 二、实际运行效果&#xff1a; 三、理论介绍&#xff1a; 四、完整代码数据下载&#xff1a; 一、主要内容&#xff1a; 由于风电光伏出力的不确定性&#xff0c;造成配电网运行风险&#xff0c;运用蒙特卡洛概率潮流计算分析电压和线路支路…...

如何统一多条曲线的 x 轴并进行插值处理

在数据处理和分析中&#xff0c;我们经常遇到需要将多条曲线的 x 轴统一的情况。这种需求通常出现在需要对不同来源的数据进行比较或整合时。本文将通过一个具体的例子&#xff0c;展示如何使用 C 实现这一功能&#xff0c;并通过插值计算新的 y 值&#xff0c;同时确保结果分段…...