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

news2025/4/16 1:12:11

以下是关于 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: 8080

spring:
  application:
    name: user-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  # Nacos 服务器地址
      config:
        server-addr: 127.0.0.1:8848
        extension-configs:
          - file-extension=yaml
            group: 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-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
3.3.2 调用服务
@Service
public class OrderService {
    @Autowired
    private RestTemplate restTemplate;

    public Order createOrder(Long userId) {
        // 调用 user-service
        User 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_route
          uri: 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: true
  application-id: ${spring.application.name}
  tx-service-group: ${spring.application.name}-group
  service:
    vgroup-mapping:
      ${spring.application.name}-group: default
    grouplist:
      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:9411
  sleuth:
    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 {
    @Bean
    public 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-service
  cloud:
    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_route
          uri: lb://user-service
          predicates:
            - Path=/api/users/**
          filters:
            - StripPrefix=1

6.4 分布式事务(Seata)

配置 application.yml

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

事务注解:

@Service
public class OrderService {
    @GlobalTransactional
    public 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 生态,后者适合云原生多语言架构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2335620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VS 基于git工程编译版本自动添加版本号

目录 概要 实现方案 概要 最近在用visual Studio 开发MFC项目时&#xff0c;需要在release版本编译后的exe文件自动追加版本信息。 由于我们用的git工程管理&#xff0c;即需要基于最新的git 提交来打版本。 比如&#xff1a; MFCApplication_V1.0.2_9.exe 由于git 提交信…

pytorch软件封装

封装代码&#xff0c;通过传入文件名&#xff0c;即可输出类别信息 上一章节&#xff0c;我们做了关于动物图像的分类&#xff0c;接下来我们把程序封装&#xff0c;然后进行预测。 单张图片的predict文件 predict.py 按着路径&#xff0c;导入单张图片做预测from torchvis…

【多线程-第四天-自己模拟SDWebImage的下载图片功能-看SDWebImage的Demo Objective-C语言】

一、我们打开之前我们写的异步下载网络图片的项目,把刚刚我们写好的分类拖进来 1.我们这个分类包含哪些文件: 1)HMDownloaderOperation类, 2)HMDownloaderOperationManager类, 3)NSString+Sandbox分类, 4)UIImageView+WebCache分类, 这四个文件吧,把它们拖过来…

电脑提示“找不到mfc140u.dll“的完整解决方案:从原因分析到彻底修复

当你启动某个软件或游戏时&#xff0c;突然遭遇"无法启动程序&#xff0c;因为计算机中丢失mfc140u.dll"的错误提示&#xff0c;这确实令人沮丧。mfc140u.dll是Microsoft Foundation Classes&#xff08;MFC&#xff09;库的重要组成部分&#xff0c;属于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…

每天学一个 Linux 命令(15):man

可访问网站查看,视觉品味拉满:http://www.616vip.cn/15/index.html 每天学一个 Linux 命令(15):man 命令简介 man(Manual)是 Linux 中最核心的命令之一,用于查看命令、系统调用、库函数等的手册文档。它是用户和开发者获取帮助的核心工具,几乎覆盖了系统中的所有功…

必刷算法100题之计算右侧小于当前元素的个数

题目链接 315. 计算右侧小于当前元素的个数 - 力扣&#xff08;LeetCode&#xff09; 题目解析 计算数组里面所有元素右侧比它小的数的个数, 并且组成一个数组,进行返回 算法原理 归并解法(分治) 当前元素的后面, 有多少个比我小(降序) 我们要找到第一比左边小的元素, 这样…

Python依赖注入完全指南:高效解耦、技术深析与实践落地

Python依赖注入完全指南&#xff1a;高效解耦、技术深析与实践落地 摘要 依赖注入&#xff08;DI&#xff09;不仅是一种设计技术&#xff0c;更是一种解耦的艺术。它通过削减模块间的强耦合性&#xff0c;为系统提供了更高的灵活性和可测试性&#xff0c;特别是在 FastAPI 等…

深度学习ResNet模型提取影响特征

大家好&#xff0c;我是带我去滑雪&#xff01; 影像组学作为近年来医学影像分析领域的重要研究方向&#xff0c;致力于通过从医学图像中高通量提取大量定量特征&#xff0c;以辅助疾病诊断、分型、预后评估及治疗反应预测。这些影像特征涵盖了形状、纹理、灰度统计及波形变换等…

【Qt】Qt Creator开发基础:项目创建、界面解析与核心概念入门

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;QT 欢迎大家点赞收藏评论&#x1f60a; 目录 Qt Creator 新建项⽬认识 Qt Creator 界⾯项⽬⽂件解析Qt 编程注意事项认识对象模型&#xff08;对象树&#xff09;Qt 窗⼝坐标体系 Qt Creator 新…

制造业项目管理如何做才能更高效?制造企业如何选择适配的数字化项目管理系统工具?

一、制造企业项目管理过程中面临的痛点有哪些&#xff1f; 制造企业在项目管理过程中面临的痛点通常涉及跨部门协作、资源调配、数据整合、风险控制等多个维度&#xff0c;且与行业特性&#xff08;如离散制造vs流程制造&#xff09;紧密相关。 进度失控多项目资源冲突信息孤…

Python批量处理PDF图片详解(插入、压缩、提取、替换、分页、旋转、删除)

目录 一、概述 二、 使用工具 三、Python 在 PDF 中插入图片 3.1 插入图片到现有PDF 3.2 插入图片到新建PDF 3.3 批量插入多张图片到PDF 四、Python 提取 PDF 图片及其元数据 五、Python 替换 PDF 图片 5.1 使用图片替换图片 5.2 使用文字替换图片 六、Python 实现 …

七种驱动器综合对比——《器件手册--驱动器》

九、驱动器 名称 功能与作用 工作原理 优势 应用 隔离式栅极驱动器 隔离式栅极驱动器用于控制功率晶体管&#xff08;如MOSFET、IGBT、SiC或GaN等&#xff09;的开关&#xff0c;其核心功能是将控制信号从低压侧传输到高压侧的功率器件栅极&#xff0c;同时在输入和输出之…

redis系列--1.redis是什么

国际惯例&#xff0c;想了解一个东西&#xff0c;首先就要看看官方提供了什么。redis的官网是https://redis.io 。以下这段话就是redis的简介了&#xff1a; Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message…

CSS 过渡与变形:让交互更丝滑

在网页设计中&#xff0c;动效能让用户交互更自然、流畅&#xff0c;提升使用体验。本文将通过 CSS 的 transition&#xff08;过渡&#xff09;和 transform&#xff08;变形&#xff09;属性&#xff0c;带你入门基础动效设计&#xff0c;结合案例演示如何实现颜色渐变、元素…

MecAgent Copilot:机械设计师的AI助手,开启“氛围建模”新时代

MecAgent Copilot作为机械设计师的AI助手,正通过多项核心技术推动机械设计进入“氛围建模”新时代。以下从功能特性、技术支撑和应用场景三方面解析其创新价值: 一、核心功能特性 ​​智能草图生成与参数化建模​​ 支持自然语言输入生成设计草图和3D模型,如输入“剖面透视…

【prometheus+Grafana篇】Prometheus与Grafana:深入了解监控架构与数据可视化分析平台

&#x1f4ab;《博主主页》&#xff1a;奈斯DB-CSDN博客 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了解 &#x1f496;如果觉得文章对你有所帮…

【后端开发】初识Spring IoC与SpringDI、图书管理系统

文章目录 图书管理系统用户登录需求分析接口定义前端页面代码服务器代码 图书列表展示需求分析接口定义前端页面部分代码服务器代码Controller层service层Dao层modle层 Spring IoC定义传统程序开发解决方案IoC优势 Spring DIIoC &DI使用主要注解 Spring IoC详解bean的存储五…

git在IDEA中使用技巧

git在IDEA中使用技巧 merge和rebase 参考&#xff1a;IDEA小技巧-Git的使用 git回滚、强推、代码找回 参考&#xff1a;https://www.bilibili.com/video/BV1Wa411a7Ek?spm_id_from333.788.videopod.sections&vd_source2f73252e51731cad48853e9c70337d8e cherry pick …