一、Kafka 基础与系统要求

1.1 核心概念

  • Broker:Kafka 服务器节点,负责存储消息和处理客户端请求
  • Topic:消息分类的逻辑容器,每条消息需指定发送到某个 Topic
  • Partition:Topic 的物理分片,可分布式存储在不同 Broker 上,实现水平扩展
  • Producer:消息生产者,向 Kafka Topic 发送消息
  • Consumer:消息消费者,从 Kafka Topic 订阅并消费消息
  • Consumer Group:多个 Consumer 组成的分组,同组内 Consumer 共同消费 Topic 消息(避免重复消费)
  • ZooKeeper:Kafka 早期版本(2.8 前)依赖的分布式协调工具,用于管理集群元数据、选举 Broker 控制器等(2.8+ 版本支持无 ZooKeeper 模式)

1.2 系统要求

  • 基础环境:Java 8 或 Java 11(推荐,Kafka 依赖 JVM 运行)
  • 硬件配置
    • 单节点:至少 2GB 内存、20GB 磁盘空间(测试环境)
    • 集群节点:建议 4GB+ 内存、100GB+ 磁盘(生产环境,优先 SSD 提升性能)
  • 支持系统:Linux(Ubuntu/CentOS,推荐生产环境)、Windows(仅建议测试环境)、macOS
  • 网络要求:集群节点间网络互通,开放默认端口(Broker 9092、ZooKeeper 2181)

二、Kafka 安装(单节点,测试环境)

2.1 依赖环境准备(ZooKeeper 安装)

Kafka 2.8 版本前需单独部署 ZooKeeper,以下以 Kafka 2.13-3.5.1 版本(依赖 ZooKeeper) 为例:

2.1.1 Linux 系统(Ubuntu/CentOS 通用)

安装流程图解

执行步骤

        1. 下载 ZooKeeper(推荐 3.8.x 版本):

wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz

        2. 解压到 /opt 目录:

tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz -C /opt/
ln -s /opt/apache-zookeeper-3.8.4-bin /opt/zookeeper  # 创建软链接,方便后续操作

        3. 修改配置文件:

cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg  # 复制默认配置为正式配置
# 编辑配置,指定数据存储目录
sed -i 's/dataDir=\/tmp\/zookeeper/dataDir=\/opt/zookeeper/data/' zoo.cfg

        4. 创建数据目录并启动服务:

mkdir -p /opt/zookeeper/data
/opt/zookeeper/bin/zkServer.sh start  # 启动服务

        5. 验证状态(出现 Mode: standalone 即为单节点运行成功):

/opt/zookeeper/bin/zkServer.sh status
2.1.2 Windows 系统

安装流程图解

执行步骤

        1. 下载 ZooKeeper 压缩包(同 Linux 步骤 1),解压到 D:\zookeeper

        2. 进入 D:\zookeeper\conf,复制 zoo_sample.cfg 并重命名为 zoo.cfg,修改数据目录:

dataDir=D:\zookeeper\data  # 手动创建 data 文件夹

        3. 配置环境变量:

    • 系统变量新增 ZOOKEEPER_HOME,值为 D:\zookeeper
    • 在 Path 变量中添加 %ZOOKEEPER_HOME%\bin

        4. 启动服务(以管理员身份打开 cmd):

zkServer.cmd  # 启动服务,保持窗口运行(关闭窗口则服务停止)

        5. 验证服务:新打开 cmd 窗口,执行 zkCli.cmd,若能进入 [zk: localhost:2181(CONNECTED)] 则成功。

2.2 Kafka 安装(Linux 系统为例)

2.2.1 安装流程图解

2.2.2 执行步骤

        1. 下载 Kafka(选择与 Scala 兼容的版本,如 2.13-3.5.1):

wget https://dlcdn.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz

        2. 解压到 /opt 目录并创建软链接:

tar -zxvf kafka_2.13-3.5.1.tgz -C /opt/
ln -s /opt/kafka_2.13-3.5.1 /opt/kafka

        3. 修改核心配置文件 server.properties(关键配置项):

cd /opt/kafka/config
vi server.properties

主要修改内容:

broker.id=0  #  Broker 唯一标识,集群中需不同(如 0、1、2)
listeners=PLAINTEXT://:9092  # 监听地址,默认 9092 端口(集群需指定节点 IP)
log.dirs=/opt/kafka/logs  # 消息日志存储目录(手动创建 logs 文件夹)
zookeeper.connect=localhost:2181  # ZooKeeper 地址(集群需填写所有 ZooKeeper 节点,如 zk1:2181,zk2:2181)
auto.create.topics.enable=false  # 禁用自动创建 Topic,建议手动创建

        4. 启动 Kafka Broker 服务(需先确保 ZooKeeper 已启动):

# 前台启动(用于测试,关闭终端则服务停止)
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
# 后台启动(生产环境推荐,日志输出到 logs/kafkaServer.out)
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

        5. 验证 Broker 状态(查看 9092 端口是否被占用):

netstat -tuln | grep 9092  # 出现 LISTEN 状态即为成功

2.3 Windows 系统 Kafka 安装

与 Linux 步骤类似,核心差异:

        1. 下载 Kafka 压缩包并解压到 D:\kafka

        2. 修改 D:\kafka\config\server.properties:

log.dirs=D:\kafka\logs  # 手动创建 logs 文件夹
zookeeper.connect=localhost:2181

        3. 启动 Broker(以管理员身份打开 cmd,进入 D:\kafka\bin\windows):

kafka-server-start.bat ../../config/server.properties  # 前台启动

        4. 验证:查看 9092 端口是否占用(cmd 执行 netstat -ano | findstr "9092")。

三、Kafka 核心配置(单节点与集群)

3.1 单节点关键配置(server.properties)

配置项

说明

推荐值(测试环境)

broker.id

Broker 唯一 ID(集群中不可重复)

0

listeners

监听地址格式:协议://IP:端口,PLAINTEXT 为明文协议

PLAINTEXT://:9092

log.dirs

消息日志存储目录(建议独立磁盘,避免与系统盘共用)

/opt/kafka/logs

zookeeper.connect

ZooKeeper 连接地址(集群格式:zk1:2181,zk2:2181,zk3:2181/kafka)

localhost:2181

log.retention.hours

消息保留时间(超过时间自动删除)

168(7 天)

log.segment.bytes

单个日志片段大小(达到阈值后滚动生成新片段)

1073741824(1GB)

num.partitions

新建 Topic 的默认分区数(分区越多,吞吐越高,但资源消耗也越大)

3

3.2 Kafka 集群部署(3 节点示例)

3.2.1 集群架构图解

3.2.2 集群部署步骤(基于 Linux 系统)
  1. 准备 3 台服务器,分别命名为 kafka1(192.168.1.101)、kafka2(192.168.1.102)、kafka3(192.168.1.103),确保节点间网络互通,且已安装 Java 环境。
  2. 部署 ZooKeeper 集群(3 节点):
    • 每台节点按 2.1.1 步骤安装 ZooKeeper,修改 zoo.cfg 新增集群配置:
# 集群节点配置:server.节点ID=IP:通信端口:选举端口
server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888
    • 每台节点在 dataDir 目录下创建 myid 文件,写入对应节点 ID(如 kafka1 写 1,kafka2 写 2):
echo 1 > /opt/zookeeper/data/myid  # kafka1 节点执行
    • 依次启动 3 台节点的 ZooKeeper 服务,验证集群状态(其中一台为 Leader,其余为 Follower):
/opt/zookeeper/bin/zkServer.sh status

       3. 部署 Kafka 集群

    • 每台节点按 2.2 步骤安装 Kafka,修改 server.properties 关键配置:

节点

broker.id

listeners

zookeeper.connect

kafka1

0

PLAINTEXT://192.168.1.101:9092

192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181

kafka2

1

PLAINTEXT://192.168.1.102:9092

同上

kafka3

2

PLAINTEXT://192.168.1.103:9092

同上

    • 依次启动 3 台节点的 Kafka Broker 服务(后台启动):
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
    • 验证集群状态(查看所有 Broker 是否在线):
# 列出集群中所有 Broker 节点
/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server 192.168.1.101:9092

四、Kafka 基本操作(命令行工具)

4.1 Topic 管理

Kafka 提供命令行工具用于 Topic 的创建、查询、修改和删除,工具位于 /opt/kafka/bin 目录(Windows 系统在 D:\kafka\bin\windows)。

4.1.1 创建 Topic

命令格式(Linux 系统):

# 创建 Topic(指定分区数 3、副本数 2,需集群环境支持副本)
/opt/kafka/bin/kafka-topics.sh \
--bootstrap-server 192.168.1.101:9092,192.168.1.102:9092 \
--create \
--topic user-behavior-topic \
--partitions 3 \
--replication-factor 2 \
--config retention.ms=604800000  # 消息保留时间(7天,可选)

参数说明

  • --bootstrap-server:指定 Kafka 集群节点(单节点用 localhost:9092)
  • --partitions:Topic 分区数(建议与 Broker 数量匹配,提升吞吐)
  • --replication-factor:副本数(需 ≤ Broker 数量,确保数据冗余,生产环境建议 2-3)

Windows 系统命令

kafka-topics.bat --bootstrap-server localhost:9092 --create --topic user-behavior-topic --partitions 3 --replication-factor 1
4.1.2 查询 Topic 列表与详情
# 查询所有 Topic
/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list# 查询指定 Topic 详情(含分区、副本分布)
/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic user-behavior-topic
4.1.3 修改 Topic 配置(如分区数、保留时间)
# 增加分区数(注意:分区数仅能增加,不能减少)
/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic user-behavior-topic --partitions 5# 修改消息保留时间(改为 3 天)
/opt/kafka/bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter --topic user-behavior-topic --add-config retention.ms=259200000
4.1.4 删除 Topic
/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic user-behavior-topic

4.2 生产者与消费者测试(命令行)

4.2.1 启动生产者发送消息
# Linux 系统
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic user-behavior-topic# Windows 系统
kafka-console-producer.bat --bootstrap-server localhost:9092 --topic user-behavior-topic

启动后直接输入消息(如 {"user_id": "1001", "behavior": "click", "timestamp": 1690000000}),按回车发送。

4.2.2 启动消费者接收消息

新打开终端,执行以下命令(消费者需指定消费组,默认组为 console-consumer-xxx):

# 从头消费 Topic 所有消息(--from-beginning 可选,默认消费新消息)
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic user-behavior-topic --from-beginning --group test-consumer-group

此时生产者发送的消息会实时在消费者终端显示,验证消息收发正常。

五、Kafka 实际应用场景(代码示例)

5.1 场景说明:用户行为日志采集

假设需要采集用户在电商平台的点击、下单、支付等行为日志,通过 Kafka 实现 “日志采集→消息存储→实时消费” 流程,架构如下:

5.2 Java 生产者代码示例(Spring Boot 集成)

5.2.1 引入依赖(pom.xml)
<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.9.2</version> <!-- 与 Spring Boot 版本匹配 -->
</dependency>
5.2.2 配置 Kafka 生产者(application.yml)
spring:kafka:bootstrap-servers: 192.168.1.101:9092,192.168.1.102:9092producer:key-serializer: org.apache.kafka.common.serialization.StringSerializervalue-serializer: org.springframework.kafka.support.serializer.JsonSerializeracks: 1  # 消息确认机制(1:Leader 接收成功即确认,平衡性能与可靠性)retries: 3  # 发送失败重试次数batch-size: 16384  # 批量发送大小(16KB)linger-ms: 5  # 等待 5ms 批量发送(提升效率)
5.2.3 生产者代码(发送用户行为日志)
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;@Component
public class UserBehaviorProducer {private final KafkaTemplate<String, UserBehaviorLog> kafkaTemplate;private static final String TOPIC = "user-behavior-topic";// 构造注入 KafkaTemplatepublic UserBehaviorProducer(KafkaTemplate<String, UserBehaviorLog> kafkaTemplate) {this.kafkaTemplate = kafkaTemplate;}// 发送消息(key 为用户 ID,用于分区路由,确保同一用户消息进入同一分区)public void sendUserBehaviorLog(UserBehaviorLog log) {kafkaTemplate.send(TOPIC, log.getUserId(), log).addCallback(success -> System.out.println("消息发送成功:" + log),failure -> System.err.println("消息发送失败:" + failure.getMessage()));}
}// 用户行为日志实体类
class UserBehaviorLog {private String userId;private String behavior; // click, order, payprivate Long timestamp;// Getter、Setter 省略
}

5.3 Java 消费者代码示例(监听 Topic)

5.3.1 配置 Kafka 消费者(application.yml)
spring:kafka:consumer:group-id: user-behavior-consumer-group  # 消费组 IDkey-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.springframework.kafka.support.serializer.JsonDeserializerauto-offset-reset: earliest  # 无偏移量时从头消费(可选:latest 消费新消息)enable-auto-commit: false  # 禁用自动提交偏移量,手动提交确保消息不丢失listener:ack-mode: manual-immediate  # 手动立即提交偏移量
5.3.2 消费者监听代码
import org.apache.kafka.clients.consumer.ConsumerAcknowledgment;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;@Component
public class UserBehaviorConsumer {// 监听指定 Topic,手动提交偏移量@KafkaListener(topics = "user-behavior-topic", groupId = "user-behavior-consumer-group")public void consumeUserBehavior(ConsumerRecord<String, UserBehaviorLog> record, ConsumerAcknowledgment ack) {try {// 1. 获取消息内容String userId = record.key();UserBehaviorLog log = record.value();System.out.println("接收用户行为日志:" + userId + " - " + log.getBehavior());// 2. 业务处理(如存储到 Elasticsearch、触发实时计算)// elasticsearchTemplate.save(log);// 3. 手动提交偏移量(确保业务处理完成后提交,避免消息丢失)ack.acknowledge();} catch (Exception e) {System.err.println("消息处理失败:" + e.getMessage());// 失败时可重试或死信队列处理}}
}

六、Kafka 维护与优化

6.1 日志清理与磁盘管理

Kafka 消息默认存储在 log.dirs 目录,需定期监控磁盘空间,避免磁盘占满导致服务异常:

6.1.1 配置日志清理策略(server.properties)
# 日志清理策略:delete(删除过期日志)或 compact(按 key 压缩,保留最新值)
log.cleanup.policy=delete# 单个日志片段大小(达到后滚动生成新片段,默认 1GB)
log.segment.bytes=1073741824# 日志片段保留时间(超过后触发清理,默认 7 天)
log.retention.hours=168# 日志目录磁盘使用率阈值(超过 85% 触发清理,默认 85%)
log.dirs.config=log.retention.bytes=10737418240  # 可选:按磁盘大小限制(10GB)
6.1.2 手动触发日志清理(紧急情况)
# 查看 Topic 日志目录
ls -l /opt/kafka/logs/user-behavior-topic-*# 手动删除过期日志片段(需谨慎,建议先备份)
rm -rf /opt/kafka/logs/user-behavior-topic-0/00000000000000000000.log.1690000000

6.2 性能优化建议

6.2.1 Broker 优化(server.properties)

        1. 内存配置:修改 Kafka 启动脚本 bin/kafka-server-start.sh,调整 JVM 内存(生产环境建议 4-8GB):

export KAFKA_HEAP_OPTS="-Xms4g -Xmx4g"  # 堆内存大小(避免超过物理内存 50%)

        2. 网络优化

# 每个 Broker 最大并发连接数(默认 2000)
num.network.threads=8
# 处理磁盘 I/O 的线程数(默认 8,建议与 CPU 核心数匹配)
num.io.threads=16
# 发送缓冲区大小(默认 128KB,高吞吐场景可调整为 256KB)
socket.send.buffer.bytes=262144
# 接收缓冲区大小(默认 128KB,同上)
socket.receive.buffer.bytes=262144
6.2.2 生产者优化(application.yml)
spring:kafka:producer:batch-size: 32768  # 批量发送大小(32KB,提升吞吐)linger-ms: 10  # 等待 10ms 批量发送(平衡延迟与吞吐)compression-type: gzip  # 消息压缩(gzip/snappy,减少网络传输)acks: 1  # 仅 Leader 确认(生产环境建议 1,兼顾可靠性与性能)
6.2.3 消费者优化
spring:kafka:consumer:fetch.min.bytes: 16384  # 最小拉取字节数(16KB,避免频繁拉取)fetch.max.wait.ms: 500  # 最大等待时间(500ms,超时即使未达阈值也拉取)listener:concurrency: 3  # 消费者并发数(建议等于 Topic 分区数,提升消费速度)

6.3 数据备份与灾难恢复

6.3.1 定期备份 Topic 数据
# 使用 kafka-dump-log 工具导出 Topic 数据到文件(示例:导出分区 0 的数据)
/opt/kafka/bin/kafka-dump-log.sh --files /opt/kafka/logs/user-behavior-topic-0/00000000000000000000.log --print-data-log > user-behavior-backup.log
6.3.2 集群故障恢复(如 Broker 下线)
  1. 单个 Broker 下线:若配置了副本(replication-factor ≥2),下线 Broker 上的分区会自动切换到其他副本,无需手动干预,重启下线 Broker 后会自动同步数据并加入集群。
  2. 数据丢失恢复:若未配置副本导致数据丢失,需从备份文件恢复,步骤如下:
# 1. 创建临时 Topic
/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic temp-topic --partitions 3 --replication-factor 1# 2. 使用生产者导入备份数据
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic temp-topic < user-behavior-backup.log# 3. 将临时 Topic 数据迁移到原 Topic(需开发脚本或使用 Flink/Spark 同步)

七、常见故障排查

7.1 Broker 启动失败

故障现象:执行启动命令后,服务很快退出,查看日志报错。

排查步骤

        1. 查看日志:日志路径默认在 logs/server.log,执行:

tail -f /opt/kafka/logs/server.log

        2. 常见错误与解决

    • 错误 1:Address already in use(端口被占用)

解决:查看 9092 端口占用进程,杀死进程或修改 server.properties 中的 listeners 端口:

netstat -tuln | grep 9092  # 查看占用进程
kill -9 <进程ID>  # 杀死进程
    • 错误 2:Connection refused to ZooKeeper(无法连接 ZooKeeper)

解决:检查 ZooKeeper 服务是否启动,或 zookeeper.connect 配置是否正确:

/opt/zookeeper/bin/zkServer.sh status  # 检查 ZooKeeper 状态

7.2 生产者发送消息失败

故障现象:生产者发送消息后报错 Leader not available。

排查步骤

  1. 检查 Topic 是否存在,执行 kafka-topics.sh --list 确认。
  2. 检查集群 Broker 状态,执行 kafka-broker-api-versions.sh 确认所有 Broker 在线。
  3. 若为集群环境,检查 listeners 配置是否为节点 IP(而非 localhost),否则跨节点无法访问。

7.3 消费者无法接收消息

故障现象:消费者启动后,无消息接收,生产者发送正常。

排查步骤

  1. 检查消费组 group-id 是否正确,不同消费组可重复消费同一 Topic。
  2. 检查 auto-offset-reset 配置:若为 latest,仅消费启动后的新消息;改为 earliest 可从头消费。
  3. 检查 Topic 分区与消费组偏移量,执行以下命令查看偏移量:
/opt/kafka/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group user-behavior-consumer-group

若 Current offset 等于 Log end offset,说明已消费完所有消息,需生产者发送新消息。

八、总结

Kafka 作为高性能的分布式消息队列,核心优势在于高吞吐、低延迟和高可靠性,广泛应用于日志采集、实时计算、消息通知等场景。通过本文的学习,读者可掌握:

  1. 单节点与集群环境的安装部署(含 ZooKeeper 配置);
  2. Topic、生产者、消费者的核心操作;
  3. 实际应用场景的代码集成(Spring Boot 示例);
  4. 日常维护、性能优化与故障排查方法。

在生产环境中,需根据业务流量合理规划分区数、副本数,结合监控工具(如 Prometheus + Grafana)实时监控集群状态,确保 Kafka

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20250828在荣品RD-RK3588-MID开发板的Android13系统下适配Bainianxing的GPS模块BU-16M10

20250828在荣品RD-RK3588-MID开发板的Android13系统下适配Bainianxing的GPS模块BU-16M10 2025/8/29 9:50荣品RD-RK3588-MID开发板。适配GPS 38400bps 需要配置波特率吗&#xff1f;一般是 9600这边使用的泰斗 你要适配新的gps模块&#xff1f;规格书&#xff1a;Baud rate 3840…

对部分国家(地区)出口商品类章金额数据库

一、数据库简介【艾思产研数据平台】对部分国家(地区)出口商品类章金额数据库&#xff0c;收录了2015年02月 - 2025年5月的信息&#xff0c;共计49万余条数据&#xff0c;整理出7个常用字段内容。更新频率为月更。字段内容年月、类章、国家、国家id、所属分类、月出口商品类章金…

STM32——中断

总&#xff1a;STM32——学习总纲 一、什么是中断 1.1 作用与意义 1.2 STM32 GPIO 外部中断简图 二、NVIC 2.1 NVIC 基本概念 Nested vectored interrupt controller&#xff0c;嵌套向量中断控制器&#xff0c;属于内核&#xff08;M3、M4、M7&#xff09; 用不到很多的优先…

DVWA靶场通关笔记-Weak Session IDs (Impossible级别)

目录 一、Session ID 二、源码分析 1、index.php 2、impossible.php 三、Weak Session IDs安全级别对比 四、impossible防范方法分析 1、高随机性会话 ID 生成 2、严格的 Cookie 作用域限制 3、安全的传输与存储控制期 本系列为通过《DVWA靶场通关笔记》的Weak Sessio…

SyncBack 备份同步软件: 使用 FTPS、SFTP 和 HTTPS 安全加密传输文件

传输加密是使用安全连接在网络中传输数据&#xff08;例如文件&#xff09;的过程。TLS&#xff08;传输层安全&#xff09;、SSL&#xff08;安全套接字层&#xff09;、SSH&#xff08;安全套接字外壳&#xff09;、HTTPS&#xff08;基于 SSL/TLS 的超文本传输协议&#xff…

保健品跨境电商:如何筑牢产品质量与安全防线?

保健品跨境电商&#xff1a;如何筑牢产品质量与安全防线&#xff1f;在保健品跨境电商领域&#xff0c;“质量与安全”是消费者信任的基石&#xff0c;也是品牌长期发展的生命线。从海外工厂生产到国内消费者手中&#xff0c;产品需经历“跨国运输、清关核验、仓储配送”多环节…

手把手教你搭建 UDP 多人聊天室(附完整源码)

一、项目介绍 本文将分享一个基于 UDP 协议的简易多人聊天室项目&#xff0c;包含服务器端和客户端的完整实现。该聊天室支持多客户端同时连接&#xff0c;能实现消息群发、用户加入 / 退出通知等核心功能&#xff0c;适合作为网络编程入门实践案例。项目采用 C 语言开发…

Vue基础知识-使用监视属性watch和计算属性computed实现列表过滤+排序

一、完整源码<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><script src…

自动化运维-ansible中的管理机密

自动化运维-ansible中的管理机密 一、Ansible Vault 在自动化配置管理中&#xff0c;直接以纯文本形式存储密码、API密钥、证书等敏感信息是极大的安全漏洞。Ansible Vault 正是为了解决这一问题而设计的核心功能 Ansible Vault 是 Ansible 的一个核心功能&#xff0c;它允许用…

UFUNCTION C++ 的再次理解

一.UFUNCTION 格式和属性也比较像&#xff0c;两部分 函数说明符&#xff0c;和元数据说明符UFUNCTION不仅能 控制对蓝图公开&#xff0c;还能与 绑定委托&#xff0c;用户输入,网络回调功能相关联&#xff0c;而且还能创建自己控制带命令二.函数说明符控制 &#xff0c;函数在…

《论文阅读》从心到词:通过综合比喻语言和语义上下文信号产生同理心反应 2025 ACL findings

《论文阅读》从心到词:通过综合比喻语言和语义上下文信号产生同理心反应 2025 ACL findings 前言 创新点 形象语言 (Figurative Language) 语义上下文信号(Semantic Context Signals) 模型架构 情绪原因标注 形象语言元数据获取 共情回复生成 实验结果 总结 趋势 前言 亲…

MySQL内置的各种单行函数

精选专栏链接 &#x1f517; MySQL技术笔记专栏Redis技术笔记专栏大模型搭建专栏Python学习笔记专栏深度学习算法专栏 欢迎订阅&#xff0c;点赞&#xff0b;关注&#xff0c;每日精进1%&#xff0c;与百万开发者共攀技术珠峰 更多内容持续更新中&#xff01;希望能给大家带来…

Python OpenCV图像处理与深度学习:Python OpenCV视频处理入门

视频处理基础&#xff1a;掌握OpenCV视频操作 学习目标 通过本课程&#xff0c;学员们将学习如何使用Python和OpenCV库来处理视频文件&#xff0c;包括读取视频、捕获摄像头视频流、处理视频帧以及保存处理后的视频&#xff0c;同时&#xff0c;能够独立完成基本的视频处理任务…

AI 赋能 Java 开发效率:全流程痛点解决与实践案例(四)

文档与注释自动化&#xff1a;从 “手动撰写” 到 “实时同步”&#xff0c;降低维护成本 &#x1f4c4; Java 开发强调 “文档先行”&#xff0c;Javadoc 注释、架构文档、接口文档是项目维护的重要资产。但手动撰写文档存在两大痛点&#xff1a;一是耗时&#xff08;开发者平…

【机器学习学习笔记】pandas基础

零基础入门 Pandas&#xff1a;数据处理的 "万能工具"如果你是刚接触数据分析的小白&#xff0c;一定听过 "Pandas" 这个名字。简单说&#xff0c;Pandas 是 Python 中专门用来处理数据的工具库&#xff0c;就像 Excel 的 "高级版"—— 能更快、…

(Mysql)MVCC、Redo Log 与 Undo Log

1. MVCC&#xff08;多版本并发控制&#xff09;概念 MVCC&#xff08;Multi-Version Concurrency Control&#xff09;是一种数据库并发控制机制&#xff0c;用于解决 读写冲突&#xff0c;提高数据库并发性能。MySQL InnoDB 存储引擎使用 MVCC 来实现 非阻塞读&#xff08;即…

OpenCV-Python Tutorial : A Candy from Official Main Page(五)

4.5FAST Algorithm for Corner Detection 4.5.1FAST算法 我们已了解多种特征检测器&#xff0c;其中许多效果出色。但从实时应用的角度来看&#xff0c;它们的速度仍不够快。一个典型例子是计算资源有限的SLAM&#xff08;同步定位与建图&#xff09;移动机器人。 为解决此问…

LINUX 91 SHELL:删除空文件夹 计数

问题 [rootweb ~]# find -type f -exec echo "file:{}" $path; find: 遗漏“-exec”的参数 您在 /var/spool/mail/root 中有邮件[rootweb ~]# $path/root -bash: /root: 没有那个文件或目录 您在 /var/spool/mail/root 中有新邮件 [rootweb ~]# path/root [rootweb ~…

视频软解码技术详解:原理、应用与未来发展

视频软解码的基本原理 概念解析&#xff1a;CPU主导的通用解码方式 视频软解码是一种完全依赖通用CPU执行解码算法的视频还原技术&#xff0c;其核心特征在于不依赖任何专用硬件模块&#xff0c;而是通过软件程序调用CPU的通用计算能力完成压缩视频数据的解码过程[1][2]。与硬…

线性回归中梯度下降与正规方程以及拟合问题与正则化

线性回归实战指南&#xff1a;从理论到实践 目录 线性回归理论基础机器学习项目开发流程波士顿房价预测实战梯度下降与正规方程模型评估指标拟合问题与正则化总结与展望 1. 线性回归理论基础 1.1 什么是线性回归&#xff1f; 线性回归是一种监督学习算法&#xff0c;用于预…