Kafka+Zookeeper从docker部署到spring boot使用完整教程

news2025/4/11 8:21:37

文章目录

  • 一、Kafka
      • 1.Kafka核心介绍:
        • ​核心架构
        • ​核心特性
        • ​典型应用
      • 2.Kafka对 ZooKeeper 的依赖:
      • 3.去 ZooKeeper 的演进之路:
      • 注:(本文采用ZooKeeper3.8 + Kafka2.8.1)
  • 二、Zookeeper
      • 1.核心架构与特性
      • 2.典型应用场景
      • 3.优势与局限
  • 三、Zookeeper安装部署
    • 1.拉取镜像
    • 2.创建数据卷
    • 3.创建容器
    • 4.Zookeepe可视化工具-prettyZoo下载和安装
    • 5.prettyZoo使用
  • 四、Kafka安装部署
    • 1.拉取镜像
    • 2.创建数据卷
    • 3.创建容器
    • 4.Kakfa可视化操作工具kafka-ui安装
      • 4.1、拉镜像
      • 4.2、创建容器
      • 4.3、访问kafka-ui
    • 5.Kakfa可视化操作工具kafka-ui使用
  • 五、Spring Boot使用Kafka
    • 1.pom文件引入关键jar
    • 2.yml文件引入配置
    • 3.Topic配置
    • 4.消息体创建
    • 5.Producer实现
    • 6.Consumer实现
    • 7.启动类配置
    • 8.Controller测试发送
    • 9.测试验证
  • 总结

一、Kafka

kafka官方文档

1.Kafka核心介绍:

Apache Kafka 是由 ​Apache 软件基金会开发的开源分布式流处理平台,最初由 LinkedIn 团队设计,旨在解决大规模实时数据管道问题。其核心功能是作为高吞吐、低延迟的分布式发布-订阅消息系统,支持每秒百万级消息处理能力。

​核心架构

​Topic(主题)​:消息的逻辑分类,生产者按主题发布数据,消费者按主题订阅。
​Partition(分区)​:每个主题划分为多个分区,实现数据并行处理和水平扩展。
​Broker(代理)​:Kafka 集群中的服务节点,负责存储和路由消息。
​Producer/Consumer:生产者推送消息至 Broker,消费者从 Broker 拉取数据,支持消费者组(Consumer Group)实现负载均衡。

​核心特性

​持久化与高可靠:消息持久化到磁盘,通过多副本机制(Replication)保障数据容错。
​水平扩展:通过分区和 Broker 动态扩容,支持万级节点和 PB 级数据存储。
​实时流处理:与 Spark、Flink 等框架集成,支持实时计算、日志聚合、监控报警等场景。

​典型应用

​日志收集:统一收集多源日志,供离线分析或实时监控。
​消息队列:解耦系统组件,如电商订单与库存服务异步通信。
​实时推荐:基于用户行为流(如点击、搜索)实时生成个性化推荐。
​数据管道:作为 CDC(变更数据捕获)工具,同步数据库变更至数据湖或搜索引擎。
Kafka 凭借其高性能和灵活性,已成为大数据生态的核心组件,适用于金融、物联网、电商等领域的实时数据处理需求。

2.Kafka对 ZooKeeper 的依赖:

Apache Kafka 在 ​4.0 版本之前 高度依赖 ZooKeeper,主要用于集群元数据管理(如 Broker 注册、Topic 分区分配)、控制器选举、消费者偏移量存储(旧版本)等核心功能。ZooKeeper 作为分布式协调服务,承担了 Kafka 集群的“大脑”角色,但存在运维复杂、性能瓶颈(如万级分区下元数据同步延迟)等问题。

3.去 ZooKeeper 的演进之路:

​Kafka 2.8.0(2021年):​
首次引入 ​KRaft 模式(KIP-500)​,作为实验性功能,允许用户通过 KRaft 协议替代 ZooKeeper 管理元数据。但此时仍需 ZooKeeper 作为过渡支持,且未默认启用。
​Kafka 3.3.x(2022年):​
KRaft 模式逐步稳定,支持生产环境部署,但仍需用户手动配置切换模式。
​Kafka 4.0.0(2025年3月18日发布):​
​正式移除对 ZooKeeper 的依赖,默认仅支持 KRaft 模式。用户无法再以 ZooKeeper 模式启动集群,需通过 KRaft 完成元数据管理和控制器选举。

注:(本文采用ZooKeeper3.8 + Kafka2.8.1)

我们本文还是使用kafka+zookeeper结合的方式来学习Kafka,在学习kafka的同时也能学习到zookeeper的使用,现在大部分公司还都在使用这种方式。


二、Zookeeper

Zookeeper官网

ZooKeeper 是一款由雅虎开源的分布式协调服务框架,旨在为分布式系统提供高效、可靠的一致性服务。其核心功能包括配置管理、分布式锁、服务注册与发现等,广泛应用于大数据和微服务领域(如 Kafka、HBase、Dubbo)。

1.核心架构与特性

数据模型
采用树形结构的 ​ZNode​(数据节点)存储数据,每个节点可保存数据并包含子节点,类似于文件系统。节点分为四类:
​持久节点:长期存在,需手动删除
​临时节点:会话结束自动删除
​顺序节点:自动追加全局唯一序号,适用于分布式队列

​一致性保障
基于 ​ZAB(ZooKeeper Atomic Broadcast)协议,确保数据顺序一致性、原子性和可靠性。通过 ​Leader 选举机制​(半数以上节点投票)实现高可用,集群需奇数节点(如 3、5 台)以防止脑裂。

动态监听(Watcher)​
客户端可监听节点变化(数据修改、子节点增减),触发事件通知实现实时响应。

2.典型应用场景

​配置管理:集中存储配置信息,动态推送到所有服务节点
​分布式锁:通过临时顺序节点实现互斥资源访问
​服务注册与发现:如 Dubbo 使用 ZooKeeper 维护全局服务地址列表
​集群管理:监控节点状态,自动处理故障切换

3.优势与局限

​优势:简化分布式系统开发,提供高性能(内存存储)和强一致性
​局限:不适用于海量数据存储,写性能受集群规模限制

ZooKeeper 通过封装复杂的一致性算法,成为分布式系统的“基础设施”,尤其适用于需要协调与状态同步的场景。


三、Zookeeper安装部署

1.拉取镜像

docker pull zookeeper:3.8

在这里插入图片描述

2.创建数据卷

创建数据卷,方便数据持久化

docker volume create zk-data
docker volume create zk-datalog
docker volume create zk-logs

在这里插入图片描述

3.创建容器

创建zookeeper-test容器,同时挂载数据卷和并指定端口映射(2181)

docker run -d --name zookeeper-test -p 2181:2181 \
  --env ZOO_MY_ID=1 \
  -v zk-data:/data \
  -v zk-datalog:/datalog \
  -v zk-logs:/logs \
  zookeeper:3.8

在这里插入图片描述

4.Zookeepe可视化工具-prettyZoo下载和安装

PrettyZoo 是一款基于 ​Apache Curator 和 ​JavaFX 开发的开源 Zookeeper 图形化管理客户端,专为简化 Zookeeper 运维设计。其核心功能包括:
​多平台支持:提供 Windows(msi)、Mac(dmg)、Linux(deb/rpm)安装包,无需额外安装 Java 运行时即可运行;
​可视化操作:支持节点增删改查(CRUD)、实时数据同步、ACL 权限配置、SSH 隧道连接,以及 JSON/XML 数据格式化与高亮显示;
​命令行集成:内置终端支持 80% 的 Zookeeper 命令,并可直接执行四字命令(如 stat、ruok 等)监控集群状态;
​多集群管理:可同时连接多个 Zookeeper 服务器,支持配置导入导出,提升运维效率。

该工具界面简洁美观,适合开发测试及中小规模环境,大幅降低 Zookeeper 的操作复杂度。

GitHub下载地址

我这里是在windows上下载使用,所以选择windows版本。

在这里插入图片描述

安装很简单,傻瓜式安装即可,没有特殊配置。
在这里插入图片描述
在这里插入图片描述

5.prettyZoo使用

填写IP和端口进行连接。

在这里插入图片描述
在这里插入图片描述

连接成功后,目录结构就能看到了,可以直接在工具上创建和删除节点。还可以编写命令进行操作。工具使用就简单介绍一下,感兴趣的同学可以下载玩一玩。
在这里插入图片描述
在这里插入图片描述


四、Kafka安装部署

1.拉取镜像

wurstmeister/kafka 适合开发/测试,但生产环境建议使用官方或企业版(如 Confluent)。

2.13-2.8.1 代表Kafka 依赖的 ​Scala 版本为2.13,kafka自身的版本为2.8.1。

docker pull wurstmeister/kafka:2.13-2.8.1

在这里插入图片描述

2.创建数据卷

创建数据卷,方便数据持久化

docker volume create kafka_vol

在这里插入图片描述

3.创建容器

创建kafka-test容器,同时挂载数据卷和并指定端口映射(9092),并将zookeeper-test链接到该容器,使Kafka可以成功访问到zookeeper-test,Kafka相关参数通过环境变量(—env)设置。

docker run -d --name kafka-test -p 9092:9092 \
--link zookeeper-test \
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper-test:2181 \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.75.130 \
--env KAFKA_ADVERTISED_PORT=9092  \
--env KAFKA_LOG_DIRS=/kafka/logs \
-v kafka_vol:/kafka  \
wurstmeister/kafka:2.13-2.8.1

在这里插入图片描述

4.Kakfa可视化操作工具kafka-ui安装

Kafka-UI 是一款开源的 Web 可视化工具,专为管理和监控 Apache Kafka 集群设计,提供轻量、高效的运维体验。它支持多集群统一管理,可实时查看集群状态(如 Broker、Topic、分区和消费者组详情),并支持消息浏览(JSON、纯文本、Avro 格式)。用户可通过界面动态配置 Topic,管理消费者偏移量,并集成数据脱敏、权限控制等功能。其部署灵活,支持 Docker、Kubernetes 等多种方式,适合开发测试及中小规模生产环境,大幅降低 Kafka 的运维复杂度

4.1、拉镜像

docker pull provectuslabs/kafka-ui

在这里插入图片描述

4.2、创建容器

docker run -it --name kafka-ui -p 8080:8080 -e DYNAMIC_CONFIG_ENABLED=true provectuslabs/kafka-ui

在这里插入图片描述

4.3、访问kafka-ui

访问地址为你部署的服务器地址:http://localhost:8080/ (http://192.168.75.130:8080/)
在这里插入图片描述

5.Kakfa可视化操作工具kafka-ui使用

创建连接:
在这里插入图片描述

连接后可以查看Brokers、Consumers,可以操作Topics,可以查看消息,也可以模拟Produce生产消息等等。详细操作功能就不再描述了,各位同学可以自行部署尝试。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、Spring Boot使用Kafka

因为kafka部署的是2.8.1,需要对应Spring boot 2.7.x系列,我这里使用spring boot 2.7.6进行案例。

1.pom文件引入关键jar

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!--    spring boot版本    -->
        <spring-boot.version>2.7.6</spring-boot.version>
        <!--    kafka版本    -->
        <spring-kafka.version>2.8.1</spring-kafka.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        
        <!-- Kafka 核心依赖 -->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>${spring-kafka.version}</version>
        </dependency>

        <!-- Lombok 简化代码 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- JSON 序列化支持 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.3</version>
        </dependency>
        
    </dependencies>

2.yml文件引入配置

spring:
  kafka:
    # 集群地址(多个用逗号分隔)
    bootstrap-servers: 192.168.75.130:9092

    # 生产者配置
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
      retries: 3 # 失败重试次数
      acks: all # 确保消息可靠投递
      batch-size: 16384 # 批量发送优化

    # 消费者配置
    consumer:
      group-id: demo-group # 消费组ID
      auto-offset-reset: earliest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
      enable-auto-commit: false # 手动提交偏移量
      properties:
        spring.json.trusted.packages: "*" # 允许反序列化任意包

    # 监听器配置
    listener:
      ack-mode: MANUAL # 手动ACK
      concurrency: 3 # 消费线程数


# 自定义主题名称
kafka:
  topic:
    demo: demo-topic

3.Topic配置

@Configuration
public class KafkaTopicConfig {
    @Value("${kafka.topic.demo}")
    private String demoTopic;

    @Bean
    public NewTopic demoTopic() {
        return TopicBuilder.name(demoTopic)
                // 分区数
                .partitions(3)
                // 副本数
                .replicas(1)
                .config(TopicConfig.RETENTION_MS_CONFIG, "604800000") // 保留7天
                .build();
    }
}

4.消息体创建

@Data
@AllArgsConstructor
@NoArgsConstructor
public class DemoMessage {
    private String id;
    // 内容
    private String content;
    // 时间戳
    private LocalDateTime timestamp;
}

5.Producer实现

@Slf4j
@Service
public class KafkaProducerService {
    private final KafkaTemplate<String, Object> kafkaTemplate;

    @Autowired
    public KafkaProducerService(KafkaTemplate<String, Object> kafkaTemplate) {
        this.kafkaTemplate = kafkaTemplate;
    }

    // 发送消息(支持回调)
    public void sendMessage(String topic, DemoMessage message) {
        // 普通发送消息(支持回调)
        kafkaTemplate.send(topic, message.getId(), message)
                .addCallback(
                        success -> {
                            if (success != null) {
                                log.info("发送成功: Topic={}, Offset={}",
                                        success.getRecordMetadata().topic(),
                                        success.getRecordMetadata().offset());
                            }
                        },
                        ex -> log.error("发送失败: {}", ex.getMessage())
                );

        // 事务性发送消息(支持回调)
//        kafkaTemplate.executeInTransaction(operations -> {
//            operations.send(topic, message.getId(), message)
//                    .addCallback(
//                            success -> {
//                                if (success != null) {
//                                    log.info("发送成功: Topic={}, Offset={}",
//                                            success.getRecordMetadata().topic(),
//                                            success.getRecordMetadata().offset());
//                                }
//                            },
//                            ex -> log.error("发送失败: {}", ex.getMessage())
//                    );
//            return true;
//        });
    }
}

6.Consumer实现

@Slf4j
@Service
public class KafkaConsumerService {

    @KafkaListener(topics = "${kafka.topic.demo}", groupId = "demo-group")
    public void consumeMessage(@Payload DemoMessage message, Acknowledgment ack) {

        try {
            log.info("收到消息: Content={}", message.getContent());

            // 幂等处理
            if (isMessageProcessed(message.getId())) {
                log.warn("消息已处理: ID={}", message.getId());
                ack.acknowledge();
                return;
            }

            // 业务处理
            // ...

            // 手动提交偏移量
            ack.acknowledge();
        } catch (Exception e) {
            log.error("处理异常: {}", e.getMessage());
        }
    }


    private boolean isMessageProcessed(String messageId) {
        // 实现幂等检查(如查数据库)
        return false;
    }
}

7.启动类配置

@EnableKafka
@SpringBootApplication
public class MyKafkaApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyKafkaApplication.class, args);
    }

}

8.Controller测试发送

@RestController
@RequestMapping("/kafka")
public class kafakTestController {
    @Autowired
    private KafkaProducerService producerService;


    @RequestMapping("/sendMessage")
    public String sendMessage(@RequestParam(value = "message") String message) {
        DemoMessage message1 = new DemoMessage(
                UUID.randomUUID().toString(),
                message,
                LocalDateTime.now()
        );
        producerService.sendMessage("demo-topic", message1);
        return "消息发送成功!";
    }
}

9.测试验证

模拟生产者生产消息,验证生产者和消费者是否正常工作。测试可用。
在这里插入图片描述
在这里插入图片描述


总结

总结了kafka使用的完整教程,加强一下自己对于kafka的整体概念,给想使用kafka的同学们入个门。

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

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

相关文章

RK3568驱动 SPI主/从 配置

一、SPI 控制器基础配置(先说主的配置&#xff0c;后面说从的配置) RK3568 集成高性能 SPI 控制器&#xff0c;支持主从双模式&#xff0c;最高传输速率 50MHz。设备树配置文件路径通常为K3568/rk356x_linux_release_v1.3.1_20221120/kernel/arch/arm64/boot/dts/rockchip。 …

【全队项目】智能学术海报生成系统PosterGenius--风格个性化调整

​ &#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#x1f3c0;大模型实战训练营 ​&#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 1.前言 PosterGenius致力于开发一套依托DeepSeek…

【系统移植】(六)第三方驱动移植

【系统移植】&#xff08;六&#xff09;第三方驱动移植 文章目录 【系统移植】&#xff08;六&#xff09;第三方驱动移植1.编译驱动进内核方法一&#xff1a;编译makefile方法二&#xff1a;编译kconfig方法三&#xff1a;编译成模块 2.字符设备框架 编译驱动进内核a. 选择驱…

STM32实现一个简单电灯

新建工程的步骤 建立工程文件夹&#xff0c;Keil中新建工程&#xff0c;选择型号工程文件夹里建立Start、Library、User等文件夹&#xff0c;复制固件库里面的文件到工程文件夹工程里对应建立Start、Library、User等同名称的分组&#xff0c;然后将文件夹内的文件添加到工程分组…

【shiro】shiro反序列化漏洞综合利用工具v2.2(下载、安装、使用)

1 工具下载 shiro反序列化漏洞综合利用工具v2.2下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1kvQEMrMP-PZ4K1eGwAP0_Q?pwdzbgp 提取码&#xff1a;zbgp其他工具下载&#xff1a; 除了该工具之外&#xff0c;github上还有其他大佬贡献的各种工具&#xff0c;有…

vue进度条组件

<div class"global-mask" v-if"isProgress"><div class"contentBox"><div class"progresstitie">数据加载中请稍后</div><el-progress class"progressStyle" :color"customColor" tex…

CSRF跨站请求伪造——入门篇【DVWA靶场low级别writeup】

CSRF跨站请求伪造——入门篇 0. 前言1. 什么是CSRF2. 一次完整的CSRF攻击 0. 前言 本文将带你实现一次完整的CSRF攻击&#xff0c;内容较为基础。需要你掌握的基础知识有&#xff1a; 了解cookie&#xff1b;已经安装了DVWA的靶场环境&#xff08;本地的或云的&#xff09;&am…

Qt基础:主界面窗口类QMainWindow

QMainWindow 1. QMainWindow1.1 菜单栏添加菜单项菜单项信号槽 1.2 工具栏添加工具按钮工具栏的属性设置 1.3 状态栏1.4 停靠窗口&#xff08;Dock widget&#xff09; 1. QMainWindow QMainWindow是标准基础窗口中结构最复杂的窗口, 其组成如下: 提供了菜单栏, 工具栏, 状态…

32f4,usart2fifo,2025

usart2fifo.h #ifndef __USART2FIFO_H #define __USART2FIFO_H#include "stdio.h" #include "stm32f4xx_conf.h" #include "sys.h" #include "fifo_usart2.h"//extern u8 RXD2_TimeOut;//超时检测//extern u8 Timer6_1ms_flag;exte…

激光模拟单粒子效应试验如何验证CANFD芯片的辐照阈值?

在现代航天电子系统中&#xff0c;CANFD&#xff08;Controller Area Network with Flexible Data-rate&#xff09;芯片作为关键的通信接口元件&#xff0c;其可靠性与抗辐射性能直接关系到整个系统的稳定运行。由于宇宙空间中存在的高能粒子辐射&#xff0c;芯片可能遭受单粒…

从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.2.1模型偏见与安全对齐(Red Teaming实践)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 大语言模型全栈开发指南:伦理与未来趋势 - 第五部分:行业应用与前沿探索5.2.1 模型偏见与安全对齐(Red Teaming实践)一、模型偏见的来源与影响1. 偏见的定义与分类2. 偏见的实际影响案例二、安全对齐…

Docker安装开源项目x-ui详细图文教程

本章教程,主要介绍如何使用Docker部署开源项目x-ui 详细教程。 一、拉取镜像 docker pull enwaiax/x-ui:latest二、运行容器 mkdir x-ui && cd x-ui docker run -itd --network=host \-v $PWD<

检索增强生成(RAG) 优化策略

检索增强生成(RAG) 优化策略篇 一、RAG基础功能篇 1.1 RAG 工作流程 二、RAG 各模块有哪些优化策略&#xff1f;三、RAG 架构优化有哪些优化策略&#xff1f; 3.1 如何利用 知识图谱&#xff08;KG&#xff09;进行上下文增强&#xff1f; 3.1.1 典型RAG架构中&#xff0c;向…

零基础玩转树莓派5!从系统安装到使用VNC远程控制树莓派桌面实战

文章目录 前言1.什么是Appsmith2.Docker部署3.Appsmith简单使用4.安装cpolar内网穿透5. 配置公网地址6. 配置固定公网地址总结 前言 你是否曾因公司内部工具的开发周期长、成本高昂而头疼不已&#xff1f;或是突然灵感爆棚想给团队来点新玩意儿&#xff0c;却苦于没有专业的编…

【MyBatis】深入解析 MyBatis:关于注解和 XML 的 MyBatis 开发方案下字段名不一致的的查询映射解决方案

注解查询映射 我们再来调用下面的 selectAll() 这个接口&#xff0c;执行的 SQL 是 select* from user_info&#xff0c;表示全列查询&#xff1a; 运行测试类对应方法&#xff0c;在日志中可以看到&#xff0c;字段名一致&#xff0c;Mybatis 就成功从数据库对应的字段中拿到…

图像退化对目标检测的影响 !!

文章目录 引言 1、理解图像退化 2、目标检测中的挑战 3、应对退化的自适应方法 4、新兴技术与研究方向 5、未来展望 6、代码 7、结论 引言 在计算机视觉领域&#xff0c;目标检测是一项关键任务&#xff0c;它使计算机能够识别和定位数字图像中的物体。这项技术支撑着从自动驾…

《AI大模型应知应会100篇》第57篇:LlamaIndex使用指南:构建高效知识库

第57篇&#xff1a;LlamaIndex使用指南&#xff1a;构建高效知识库 摘要 在大语言模型&#xff08;LLM&#xff09;驱动的智能应用中&#xff0c;如何高效地管理和利用海量知识数据是开发者面临的核心挑战之一。LlamaIndex&#xff08;原 GPT Index&#xff09; 是一个专为构建…

目标检测中COCO评估指标中每个指标的具体含义说明:AP、AR

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

如何利用ATECLOUD测试平台的芯片测试解决方案实现4644芯片的测试?

作为多通道 DC-DC 电源管理芯片的代表产品&#xff0c;4644 凭借 95% 以上的转换效率、1% 的输出精度及多重保护机制&#xff0c;广泛应用于航天航空&#xff08;卫星电源系统&#xff09;、医疗设备&#xff08;MRI 梯度功放&#xff09;、工业控制&#xff08;伺服驱动单元&a…

《继电器:机械骑士的电磁战甲》

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 第一章&#xff1a;千年契约的青铜誓言 在电气王国的熔炉深处&#xff0c;电磁铁与簧片的盟约已镌刻千年。电磁铁身披螺旋铜线编织的斗篷&#xff0c;其胸膛中沉睡着一道可召唤磁力的古…