关于 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 Netflix | Eureka(注册中心)、Hystrix(熔断)、Feign(RPC)、Zuul/Gateway(网关) | 成熟稳定,社区广泛,但部分组件(如 Hystrix)已停止维护 | 传统微服务架构,需兼容旧系统 |
| Spring Cloud Alibaba | Nacos(注册/配置中心)、Sentinel(流控降级)、Dubbo/Feign(RPC)、Gateway(网关) | 阿里巴巴生态,轻量高效,支持云原生,组件活跃维护 | 新项目,需要与阿里云/容器化集成 |
| Spring Cloud Consul | Consul(注册/配置中心)、Resilience4j(熔断)、Spring Cloud Gateway(网关) | 基于 Consul 的强一致性,适合分布式系统 | 需要强一致性分布式环境 |
| Istio/Servie Mesh | Pilot(控制平面)、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-dubbo 或 spring-boot-starter-web |
| Gateway | API 网关,路由、鉴权、限流 | 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, 限流规则定义 |
| Gateway | API 网关,路由、鉴权 | application.yml 定义路由规则 | @EnableDiscoveryClient, 路由配置文件 |
| Seata | 分布式事务管理 | 配置 seata-config 和事务组 | @GlobalTransactional, 事务组配置 |
| Sleuth+Zipkin | 分布式链路追踪 | 配置 Zipkin 服务器地址 | @SpringBootApplication, 链路日志收集 |
8. 注意事项
- Nacos 集群部署:生产环境需部署 Nacos 集群以保证高可用。
- Sentinel 规则管理:建议通过控制台(
nacos-config)动态管理规则。 - Seata 性能优化:需配置数据库事务隔离级别(如
READ_COMMITTED)。 - 链路追踪:Zipkin 需独立部署,支持 HTTP 或 Kafka 模式。
通过以上组件的组合,可以构建一个高可用、可扩展的微服务架构。Spring Cloud Alibaba 的组件设计更贴合云原生需求,适合中大型分布式系统。
番外
以下是关于 微服务服务治理 的详细说明,涵盖核心概念、主流框架/解决方案的对比,以及关键功能的总结表格:
1. 服务治理核心概念
服务治理是微服务架构中管理服务间通信、监控、容错、配置等的核心能力。主要功能包括:
- 服务注册与发现:动态管理服务实例。
- 配置中心:集中管理配置。
- 负载均衡:分发请求流量。
- 熔断降级:防止雪崩效应。
- 服务网关:统一入口,路由与鉴权。
- 分布式事务:保证跨服务事务一致性。
- 链路追踪:监控请求链路性能。
2. 主流服务治理框架/解决方案对比
2.1 Spring Cloud Netflix(已逐步淘汰)
| 组件 | 功能 | 特点 | 适用场景 |
|---|---|---|---|
| Eureka | 服务注册与发现 | 成熟稳定,但维护停止,需迁移到其他方案(如Nacos) | 过渡期项目,需兼容旧系统 |
| Zuul/Gateway | API 网关,路由与过滤 | 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 Gateway | API 网关,路由、鉴权、限流 | 非侵入式,支持多种过滤器 | 需灵活路由与安全策略 |
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 Netflix | Eureka | 自定义 | Hystrix | Zuul/Gateway | 不直接支持 | Sleuth+Zipkin | 逐渐衰退 | 过渡期项目,需兼容旧系统 |
| Spring Cloud Alibaba | Nacos | Nacos | Sentinel | Gateway | Seata | Sleuth+Zipkin | 活跃 | 新项目,阿里云生态 |
| Consul | Consul | Consul | 自定义 | API Gateway | 不直接支持 | 自定义 | 活跃 | 强一致性分布式系统 |
| Istio | 自带发现 | ConfigMap | 自带熔断 | 自带网关 | 自定义 | Jaeger | 非常活跃 | 云原生,多语言微服务 |
| Dubbo | ZooKeeper/Nacos | 自定义 | 自带熔断 | 自定义 | Dubbo-TCC | SkyWalking | 活跃 | 高性能 Java 架构 |
| Kubernetes+Istio | Kubernetes | ConfigMap | Istio | Istio | 自定义 | 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 | 强一致性服务发现,支持多数据中心。 |
| 轻量级治理,无需 Sidecar | Spring 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. 注意事项
- Spring Cloud Netflix:组件(如 Hystrix)已停止维护,建议迁移到 Resilience4j 或 Sentinel。
- Istio:需部署 Sidecar,资源消耗较高,适合云原生环境。
- Nacos:支持服务发现与配置中心一体化,适合快速搭建。
- Seata:需数据库支持,适合需强事务一致性的场景。
通过以上对比和示例,开发者可根据项目需求选择合适的治理方案。对于新项目,Spring Cloud Alibaba 或 Istio 是主流选择,前者适合 Java 生态,后者适合云原生多语言架构。
相关文章:
关于 Spring Boot 微服务解决方案的对比,并以 Spring Cloud Alibaba 为例,详细说明其核心组件的使用方式、配置及代码示例
以下是关于 Spring Boot 微服务解决方案的对比,并以 Spring Cloud Alibaba 为例,详细说明其核心组件的使用方式、配置及代码示例: 关于 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案! https://sca.aliyun.com/?spm7145af80…...
VS 基于git工程编译版本自动添加版本号
目录 概要 实现方案 概要 最近在用visual Studio 开发MFC项目时,需要在release版本编译后的exe文件自动追加版本信息。 由于我们用的git工程管理,即需要基于最新的git 提交来打版本。 比如: MFCApplication_V1.0.2_9.exe 由于git 提交信…...
小程序开发指南
小程序开发指南 目录 1. 小程序开发概述 1.1 什么是小程序1.2 小程序的优势1.3 小程序的发展历程 2. 开发准备工作 2.1 选择开发平台2.2 开发环境搭建2.3 开发模式选择 3. 小程序开发流程 3.1 项目规划3.2 界面设计3.3 代码开发3.4 基本开发示例3.5 数据存储3.6 网络请求3.7 …...
MySQL 超详细安装教程与常见问题解决方案
一、MySQL 安装教程 1. Windows 系统安装(以 MySQL 8.0 为例) 步骤 1:下载 MySQL Installer 访问 MySQL 官网下载页面。 选择 Windows (x86, 64-bit), MSI Installer(推荐使用完整版 mysql-installer-web-community-8.0.xx.xx.…...
pytorch软件封装
封装代码,通过传入文件名,即可输出类别信息 上一章节,我们做了关于动物图像的分类,接下来我们把程序封装,然后进行预测。 单张图片的predict文件 predict.py 按着路径,导入单张图片做预测from torchvis…...
【多线程-第四天-自己模拟SDWebImage的下载图片功能-看SDWebImage的Demo Objective-C语言】
一、我们打开之前我们写的异步下载网络图片的项目,把刚刚我们写好的分类拖进来 1.我们这个分类包含哪些文件: 1)HMDownloaderOperation类, 2)HMDownloaderOperationManager类, 3)NSString+Sandbox分类, 4)UIImageView+WebCache分类, 这四个文件吧,把它们拖过来…...
电脑提示“找不到mfc140u.dll“的完整解决方案:从原因分析到彻底修复
当你启动某个软件或游戏时,突然遭遇"无法启动程序,因为计算机中丢失mfc140u.dll"的错误提示,这确实令人沮丧。mfc140u.dll是Microsoft Foundation Classes(MFC)库的重要组成部分,属于Visual C Re…...
图像变换方式区别对比(Opencv)
1. 变换示例 import cv2 import matplotlib.pyplot as plotimg cv2.imread(url) img_cut img[100:200, 200:300] img_rsize cv2.resize(img, (50, 50)) (hight,width) img.shape[:2] rotate_matrix cv2.getRotationMatrix2D((hight//2, width//2), 50, 1) img_wa cv2.wa…...
图像颜色空间对比(Opencv)
1. 颜色转换 import cv2 import matplotlib.pyplot as plotimg cv2.imread("tmp.jpg") img_r cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img_g cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_h cv2.cvtColor(img, cv2.COLOR_BGR2HSV) img_l cv2.cvtColor(img, cv2.C…...
【NLP】24. spaCy 教程:自然语言处理核心操作指南(进阶)
spaCy 中文教程:自然语言处理核心操作指南(进阶) 1. 识别文本中带有“百分号”的数字 import spacy# 创建一个空的英文语言模型 nlp spacy.blank("en")# 处理输入文本 doc nlp("In 1990, more than 60% of people in East…...
每天学一个 Linux 命令(15):man
可访问网站查看,视觉品味拉满:http://www.616vip.cn/15/index.html 每天学一个 Linux 命令(15):man 命令简介 man(Manual)是 Linux 中最核心的命令之一,用于查看命令、系统调用、库函数等的手册文档。它是用户和开发者获取帮助的核心工具,几乎覆盖了系统中的所有功…...
必刷算法100题之计算右侧小于当前元素的个数
题目链接 315. 计算右侧小于当前元素的个数 - 力扣(LeetCode) 题目解析 计算数组里面所有元素右侧比它小的数的个数, 并且组成一个数组,进行返回 算法原理 归并解法(分治) 当前元素的后面, 有多少个比我小(降序) 我们要找到第一比左边小的元素, 这样…...
Python依赖注入完全指南:高效解耦、技术深析与实践落地
Python依赖注入完全指南:高效解耦、技术深析与实践落地 摘要 依赖注入(DI)不仅是一种设计技术,更是一种解耦的艺术。它通过削减模块间的强耦合性,为系统提供了更高的灵活性和可测试性,特别是在 FastAPI 等…...
android弱网环境数据丢失解决方案(3万字长文)
在移动互联网时代,Android 应用已经成为人们日常生活中不可或缺的一部分。从社交媒体到在线购物,从移动办公到娱乐游戏,用户对应用的依赖程度与日俱增。然而,尽管网络基础设施在全球范围内得到了显著改善,弱网环境依然是一个普遍存在且难以完全避免的现实。特别是在一些发…...
答案之书和源代码
答案之书是一个神秘而神奇的工具,它可以帮助你在遇到问题或犹豫不决的时候找到答案或暗示。这个程序模拟了答案之书的功能,让你随机生成一个简短而有启发性的答案,让你在困境中找到一丝希望。 在这个程序中,你会看到一个画布上显…...
Spring Cloud主要组件介绍
一、Spring Cloud 1、Spring Cloud技术概览 分为:服务治理,链路追踪,消息组件,配置中心,安全控制,分布式任务管理、调度,Cluster工具,Spring Cloud CLI,测试 2、注册中心:常用注册中心(Euerka[AP]、Zookeeper[CP]) 1)Euerka Client(服务提供者)=》注册=》Eue…...
深度学习ResNet模型提取影响特征
大家好,我是带我去滑雪! 影像组学作为近年来医学影像分析领域的重要研究方向,致力于通过从医学图像中高通量提取大量定量特征,以辅助疾病诊断、分型、预后评估及治疗反应预测。这些影像特征涵盖了形状、纹理、灰度统计及波形变换等…...
【Qt】Qt Creator开发基础:项目创建、界面解析与核心概念入门
🍑个人主页:Jupiter. 🚀 所属专栏:QT 欢迎大家点赞收藏评论😊 目录 Qt Creator 新建项⽬认识 Qt Creator 界⾯项⽬⽂件解析Qt 编程注意事项认识对象模型(对象树)Qt 窗⼝坐标体系 Qt Creator 新…...
SimpleITK (sitk) 中查看 DICOM 文件的像素位深(8位或16位)
在 SimpleITK (sitk) 中查看 DICOM 文件的像素位深(8位或16位),可以通过以下方法实现: 方法一:通过 图像像素数组的数据类型 判断 读取 DICOM 文件: 使用 sitk.ReadImage() 加载文件,生成图像对…...
Unity IL2CPP内存泄漏追踪方案(基于Memory Profiler)技术详解
一、IL2CPP内存管理特性与泄漏根源 1. IL2CPP内存架构特点 内存区域管理方式常见泄漏类型托管堆(Managed)GC自动回收静态引用/事件订阅未取消原生堆(Native)手动管理非托管资源未释放桥接层GCHandle/PInvoke跨语言引用未正确释放 对惹,这里有一个游戏开发交流小组…...
制造业项目管理如何做才能更高效?制造企业如何选择适配的数字化项目管理系统工具?
一、制造企业项目管理过程中面临的痛点有哪些? 制造企业在项目管理过程中面临的痛点通常涉及跨部门协作、资源调配、数据整合、风险控制等多个维度,且与行业特性(如离散制造vs流程制造)紧密相关。 进度失控多项目资源冲突信息孤…...
Python批量处理PDF图片详解(插入、压缩、提取、替换、分页、旋转、删除)
目录 一、概述 二、 使用工具 三、Python 在 PDF 中插入图片 3.1 插入图片到现有PDF 3.2 插入图片到新建PDF 3.3 批量插入多张图片到PDF 四、Python 提取 PDF 图片及其元数据 五、Python 替换 PDF 图片 5.1 使用图片替换图片 5.2 使用文字替换图片 六、Python 实现 …...
让 Python 脚本在后台持续运行:架构级解决方案与工业级实践指南
让 Python 脚本在后台持续运行:架构级解决方案与工业级实践指南 一、生产环境需求全景分析 1.1 后台进程的工业级要求矩阵 维度开发环境要求生产环境要求容灾要求可靠性单点运行集群部署跨机房容灾可观测性控制台输出集中式日志分布式追踪资源管理无限制CPU/Memo…...
【后端开发】Spring配置文件
文章目录 配置文件properties配置文件基本语法读取配置文件 yml配置文件基本语法读取配置文件配置空字符串及null单双引号配置对象配置集合配置Map 优缺点优点缺点 配置文件 硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中,也就是常说的"代码写死&q…...
七种驱动器综合对比——《器件手册--驱动器》
九、驱动器 名称 功能与作用 工作原理 优势 应用 隔离式栅极驱动器 隔离式栅极驱动器用于控制功率晶体管(如MOSFET、IGBT、SiC或GaN等)的开关,其核心功能是将控制信号从低压侧传输到高压侧的功率器件栅极,同时在输入和输出之…...
996引擎-源码学习:PureMVC Lua 中的系统启动,初始化并注册 Mediator
996引擎-源码学习:PureMVC Lua 中的系统启动,初始化并注册 Mediator 一、PureMVC 核心架构二、系统启动流程系统启动注册 StartUp 通知发送 StartUp 通知,开始初始化三、Mediator 初始化1. gameStateInit.lua2. LoadingBeginCommand.lua3. RegisterWorldMediatorCommand.lua…...
redis系列--1.redis是什么
国际惯例,想了解一个东西,首先就要看看官方提供了什么。redis的官网是https://redis.io 。以下这段话就是redis的简介了: Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message…...
CSS 过渡与变形:让交互更丝滑
在网页设计中,动效能让用户交互更自然、流畅,提升使用体验。本文将通过 CSS 的 transition(过渡)和 transform(变形)属性,带你入门基础动效设计,结合案例演示如何实现颜色渐变、元素…...
linuxbash原理
3417 1647 0 04:17 ? 00:00:21 /usr/libexec/gnome-terminal-server yangang 3425 3417 0 04:17 pts/0 00:00:00 bash yangang 4524 3417 0 04:26 pts/1 00:00:00 bash 控制台创建是通过/usr/libexec/gnome-terminal-server 进行创建 rea…...
MecAgent Copilot:机械设计师的AI助手,开启“氛围建模”新时代
MecAgent Copilot作为机械设计师的AI助手,正通过多项核心技术推动机械设计进入“氛围建模”新时代。以下从功能特性、技术支撑和应用场景三方面解析其创新价值: 一、核心功能特性 智能草图生成与参数化建模 支持自然语言输入生成设计草图和3D模型,如输入“剖面透视…...
