Kafka 压缩算法详细介绍
文章目录
- 一 、Kafka 压缩算法概述
- 二、Kafka 压缩的作用
- 2.1 降低网络带宽消耗
- 2.2 提高 Kafka 生产者和消费者吞吐量
- 2.3 减少 Kafka 磁盘存储占用
- 2.4 减少 Kafka Broker 负载
- 2.5 降低跨数据中心同步成本
- 三、Kafka 压缩的原理
- 3.1 Kafka 压缩的基本原理
- 3.2. Kafka 压缩的工作流程
- 3.3 Kafka 压缩的数据存储格式
- 四、Kafka 压缩方式配置
- 4.1 Kafka 生产者(Producer)端压缩配置
- 4.2 Kafka Broker 端压缩配置
- 4.3 Kafka 消费者(Consumer)端解压缩
- 五、不同压缩方式对比
- 5.1 Kafka 支持的四种压缩方式
- 5.2 Kafka 压缩方式对比分析
- 六、Kafka 压缩场景
- 6.1 日志收集与分析(ELK / Flink / Kafka)
- 6.2 实时流数据处理(Flink / Spark Streaming)
- 6.3 电商高并发订单系统
- 6.4. 跨数据中心(Multi-DC)Kafka 同步
- 6.5 数据存储优化(Kafka + HDFS)
一 、Kafka 压缩算法概述
Kafka 支持 GZIP、Snappy、LZ4 和 Zstd 四种压缩算法,以减少网络传输负担、降低存储成本,同时提高 Kafka 吞吐量。压缩的主要作用是优化 Kafka 的生产(Producer)、存储(Broker)和消费(Consumer) 过程,从而提高消息系统的整体效率。
二、Kafka 压缩的作用
Kafka 压缩的主要作用是 提高吞吐量、减少存储占用、降低网络带宽消耗,并优化整体性能。
2.1 降低网络带宽消耗
Kafka 作为分布式消息系统,数据在 生产者(Producer)、Broker、消费者(Consumer) 之间传输。未压缩的数据体积大,会导致:
- 网络流量增加,影响 Kafka 集群性能。
- 数据传输速度变慢,影响吞吐量。
Kafka 压缩的好处:
✅ 减少带宽占用 → 适用于跨数据中心同步。
✅ 提升吞吐量 → 生产者和消费者都能更快发送和接收消息。
✅ 降低网络成本 → 特别是在云环境或受限带宽的场景。
📌 示例:
- 未压缩消息:1000 条 JSON 消息 50MB
- 使用 Zstd 压缩:仅 10MB,减少 80% 的网络流量。
2.2 提高 Kafka 生产者和消费者吞吐量
Kafka 处理批量数据(batch processing),压缩后可以减少单个 batch 的大小,从而:
- 生产者(Producer)可以更快地发送消息
- Broker 可以更快地写入磁盘
- 消费者(Consumer)可以更快地消费数据
📌 示例:
- Producer 批量发送未压缩数据(每条 1KB,1000 条消息):
- 发送数据量 = 1MB
- Kafka 需要处理的 batch 很大,写入磁盘速度慢。
- Producer 采用 Snappy 压缩(50% 压缩率):
- 发送数据量 = 500KB
- Kafka 处理的数据减少一半,提升吞吐量。
✅ 适用于高并发写入场景,如电商订单流、日志数据流。
2.3 减少 Kafka 磁盘存储占用
Kafka 消息存储在 Broker 上,未压缩的数据会占用大量磁盘空间,导致:
- 磁盘利用率增加,需要更多存储。
- I/O 负载加大,影响 Kafka 读取性能。
📌 示例:
| 数据量 | 未压缩存储 (MB) | Snappy 压缩后 (MB) | GZIP 压缩后 (MB) |
|---|---|---|---|
| 100 万条日志 | 500 MB | 250 MB | 100 MB |
Kafka 压缩带来的好处:
✅ 减少磁盘存储需求(压缩率通常在 30%-90%)。
✅ 降低存储成本(云存储或本地磁盘使用更少)。
✅ 适用于日志归档、数据存储优化等场景。
2.4 减少 Kafka Broker 负载
Kafka Broker 负责持久化消息和转发数据,如果数据未压缩:
- 磁盘 I/O 负担加重 → 影响写入和读取速度。
- 分区数据量过大 → Broker 压力大,影响副本同步。
- 网络传输慢 → 影响消费者消费速度。
📌 解决方案:
- 采用Zstd或Snappy压缩,在保证吞吐量的同时降低 Broker 负载。
- 适用于高并发日志流、事件流、实时数据传输等场景。
✅ 压缩后,Kafka 需要处理的 I/O 数据变少,性能更优。
2.5 降低跨数据中心同步成本
在跨数据中心部署 Kafka(如灾备中心或全球业务同步),数据需要在不同机房同步。如果数据未压缩:
- 带宽成本高,影响云服务费用(AWS/GCP)。
- 延迟增加,导致跨数据中心数据同步慢。
📌 示例:
未压缩: 10GB 日志/小时 → 需要大带宽传输。
Zstd 压缩(90%) → 仅 1GB,带宽节省 90%。
✅ 适用于跨地域业务、CDN 日志同步、全球电商架构。
| 作用 | 具体表现 |
|---|---|
| 减少网络带宽 | 压缩 50%~90%,适用于跨数据中心 |
| 提升吞吐量 | Producer 发送更快,Consumer 消费更快 |
| 减少磁盘占用 | 存储节省 30%~90% |
| 降低 Broker 负载 | 减少磁盘 I/O,优化 Kafka 处理效率 |
| 降低跨数据中心成本 | 跨机房同步更快,节省流量费用 |
三、Kafka 压缩的原理
Kafka 通过批量(Batch)压缩的方式减少数据传输和存储的开销,从而提高吞吐量、降低网络带宽占用、减少磁盘存储成本。Kafka 的压缩主要在 Producer 端执行,并在 Consumer 端自动解压,而 Broker 仅存储和转发压缩数据。
3.1 Kafka 压缩的基本原理
Kafka 不会对单条消息进行压缩,而是采用批量(Batch)压缩:
- Producer 端:批量收集消息后,对整个 Batch 进行压缩,然后发送到 Kafka Broker。
- Broker 端:直接存储和转发压缩后的数据,而不会解压消息。
- Consumer 端:读取 Broker 发送的压缩 Batch,并在消费时解压。
📌 关键点
- Kafka 只压缩批量数据(Batch),不会压缩单条消息。
- Broker 不解压数据,仅存储 Producer 发送的压缩数据。
- Consumer 端必须支持相应的压缩算法,否则无法解压数据。
3.2. Kafka 压缩的工作流程
Kafka 压缩主要涉及 Producer(生产者)、Broker(消息代理)、Consumer(消费者),其工作流程如下:
📌 生产者端(Producer)压缩
Producer 批量收集消息,然后进行压缩
- Producer 端接收到多条待发送的消息。
- Producer 进行批量处理(Batching),将多条消息合并到一个 Batch 中。
- 选择指定的压缩算法(如 GZIP、Snappy、LZ4、Zstd)。
- 对整个 Batch 进行压缩,然后发送到 Kafka Broker。
示例:
假设 Producer 发送 5 条 JSON 消息:
[{"id":1, "name":"A"},{"id":2, "name":"B"},{"id":3, "name":"C"},{"id":4, "name":"D"},{"id":5, "name":"E"}
]
如果不压缩,发送的数据大小为 5KB,但如果使用 GZIP 压缩,则大小可能只有 1KB,节省 80% 网络带宽。
Producer 配置示例(producer.properties):
compression.type=snappy # 可选 gzip, snappy, lz4, zstd
batch.size=65536 # 设定批次大小,提高吞吐量
linger.ms=10 # 允许 Kafka 等待 10ms 批量收集消息,提高压缩效果
📌 Broker 端(Kafka 存储与转发)
- Broker 直接存储 Producer 发送的压缩 Batch,不进行解压。
- Consumer 读取数据时才会解压,Kafka 仅作为存储和转发的角色。
示例:
Producer 发送压缩后的数据:
[Compressed Batch (Snappy)] -> Kafka Topic Partition
Kafka 不会解压,而是原样存储,并在 Consumer 端解压。
Broker 配置(server.properties):
compression.type=producer # 继承 Producer 端的压缩方式
Kafka Broker 的 compression.type=producer 让 Kafka 直接存储 Producer 的压缩格式,而不会重新压缩数据。
📌 Consumer 端(解压数据)
- Consumer 读取 Kafka Broker 发送的压缩数据。
- Consumer 端会自动解压,然后消费单条消息。
示例:
Consumer 端读取 GZIP 压缩的 Batch,并进行解压:
[Compressed Batch (GZIP)] -> 解压 -> 单条消息处理
Consumer 配置(consumer.properties):
fetch.min.bytes=1048576 # 限制最小 fetch 批次,提高吞吐量
fetch.max.wait.ms=500 # 适当增加等待时间,提高 batch 读取效率
Kafka Consumer 自动解压缩,不需要额外的配置。
3.3 Kafka 压缩的数据存储格式
Kafka 采用批量压缩,因此存储格式如下:
未压缩的 Kafka 消息存储格式
[Message1][Message2][Message3][Message4][Message5]
使用压缩后的 Kafka 消息存储格式
[Compressed Batch (Snappy)]
- 整个 Batch 作为一个数据块压缩,并存储在 Kafka 主题(Topic)中。
- Kafka 只存储和转发已压缩的 Batch,不会解压数据。
四、Kafka 压缩方式配置
4.1 Kafka 生产者(Producer)端压缩配置
Kafka Producer 端负责压缩数据,并发送给 Kafka Broker。
✅ 生产者配置参数
在 producer.properties 中,配置 compression.type:
compression.type=snappy # 可选值:gzip, snappy, lz4, zstd
batch.size=65536 # 设定批次大小,提高吞吐量
linger.ms=10 # 允许 Kafka 等待 10ms 批量收集消息,提高压缩效果
✅ 代码示例
使用 Java 代码配置 Kafka Producer
import org.apache.kafka.clients.producer.*;import java.util.Properties;public class KafkaProducerCompressionExample {public static void main(String[] args) {Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");// 配置压缩方式props.put("compression.type", "snappy"); // 可选 gzip, lz4, zstdprops.put("batch.size", 16384); // 16KB 批次大小props.put("linger.ms", 5); // 5ms 等待时间,提高批量压缩效果KafkaProducer<String, String> producer = new KafkaProducer<>(props);ProducerRecord<String, String> record = new ProducerRecord<>("test_topic", "key", "message with compression");producer.send(record);producer.close();}
}
4.2 Kafka Broker 端压缩配置
Kafka Broker 可以控制是否允许压缩消息传输,并决定是否改变 Producer 发送的压缩方式。
✅ Broker 配置参数
在 server.properties 中:
log.cleanup.policy=delete # Kafka 日志清理策略
compression.type=producer # 继承 Producer 端的压缩方式
log.segment.bytes=1073741824 # 每个分段日志文件最大 1GB
📌 compression.type=producer 让 Broker 直接存储 Producer 压缩的消息,而不会改变其压缩格式。
📌 Broker 端压缩策略
| 配置项 | 作用 |
|---|---|
compression.type=none | Kafka 不进行任何压缩,存储 Producer 发送的原始数据 |
compression.type=producer | Broker 采用 Producer 发送的数据的压缩格式 |
compression.type=gzip | 强制所有数据存储为 GZIP 压缩 |
compression.type=snappy | 强制所有数据存储为 Snappy 压缩 |
4.3 Kafka 消费者(Consumer)端解压缩
Kafka Consumer 端会自动解压 Producer 发送的压缩数据,因此默认无需额外配置。
✅ Consumer 配置参数
在 consumer.properties 中:
fetch.min.bytes=1048576 # 限制最小 fetch 批次,提高吞吐量
fetch.max.wait.ms=500 # 增加等待时间,提高 batch 读取效率
✅ 代码示例
使用 Java 配置 Kafka Consumer
import org.apache.kafka.clients.consumer.*;import java.util.Collections;
import java.util.Properties;public class KafkaConsumerCompressionExample {public static void main(String[] args) {Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("group.id", "test-group");props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);consumer.subscribe(Collections.singletonList("test_topic"));while (true) {ConsumerRecords<String, String> records = consumer.poll(100);for (ConsumerRecord<String, String> record : records) {System.out.println("Received: " + record.value());}}}
}
📌 Consumer 端压缩行为
- Kafka Consumer 自动解压缩 Producer 端压缩的数据。
- 不需要额外配置,但如果批量消费,可以调整
fetch.min.bytes和fetch.max.wait.ms以提高吞吐量。
五、不同压缩方式对比
5.1 Kafka 支持的四种压缩方式
Kafka 主要支持以下压缩算法:
| 压缩方式 | 介绍 | 压缩率 | 压缩速度 | 解压速度 | CPU 占用 |
|---|---|---|---|---|---|
| GZIP | 经典的高压缩率算法 | 高 | 低 | 低 | 高 |
| Snappy | Google 开发的快速压缩 | 低 | 高 | 很高 | 低 |
| LZ4 | 适用于高吞吐的快速压缩 | 中 | 很高 | 极高 | 低 |
| Zstd | Facebook 开发的新一代压缩 | 最高 | 中等 | 高 | 中等 |
5.2 Kafka 压缩方式对比分析
(1) 压缩率对比
压缩率决定了 Kafka 消息存储占用多少空间,压缩率越高,磁盘存储和网络传输占用越少。
| 压缩方式 | 压缩率 (%) | 示例数据 (100MB 日志文件压缩后大小) |
|---|---|---|
| GZIP | 85-90% | 10MB |
| Snappy | 50-60% | 50MB |
| LZ4 | 60-70% | 40MB |
| Zstd | 90-95% | 5-8MB |
📌 结论:
- Zstd 和 GZIP 的压缩率最高,适用于存储优化和跨数据中心数据同步。
- Snappy 和 LZ4 压缩率较低,但速度快,适用于高吞吐场景。
(2) 压缩速度对比
压缩速度影响 Kafka Producer 端的吞吐量,速度越快,Kafka 生产端的效率越高。
| 压缩方式 | 压缩速度 (MB/s) |
|---|---|
| GZIP | 30-50MB/s |
| Snappy | 150-250MB/s |
| LZ4 | 200-400MB/s |
| Zstd | 100-300MB/s |
📌 结论:
- LZ4 和 Snappy 压缩速度最快,适合高吞吐量、低延迟的实时数据流。
- GZIP 压缩速度最慢,适用于存储优化而不是高并发场景。
- Zstd 在不同压缩级别下可调节压缩速度,适用于平衡吞吐量和存储需求的场景。
(3) 解压速度对比
解压速度影响 Kafka Consumer 端的消费吞吐量。
| 压缩方式 | 解压速度 (MB/s) |
|---|---|
| GZIP | 50-100MB/s |
| Snappy | 300-500MB/s |
| LZ4 | 400-800MB/s |
| Zstd | 200-600MB/s |
📌 结论:
- LZ4 和 Snappy 解压速度最快,适用于需要低延迟消费的应用,如日志流分析、流式计算。
- GZIP 解压速度最慢,会影响消费者消费吞吐量。
- Zstd 解压速度介于 GZIP 和 Snappy 之间,且压缩率更高。
(4) CPU 占用对比
CPU 占用影响 Kafka 生产者和消费者的性能,CPU 负载越低,Kafka 处理能力越强。
| 压缩方式 | CPU 占用率 |
|---|---|
| GZIP | 高 (占用 40-70%) |
| Snappy | 低 (占用 5-15%) |
| LZ4 | 低 (占用 5-15%) |
| Zstd | 中等 (占用 10-30%) |
📌 结论:
- GZIP 消耗 CPU 最多,影响 Kafka 高吞吐应用。
- Snappy 和 LZ4 CPU 占用最低,适用于高并发场景。
- Zstd 占用适中,可调节压缩级别来平衡 CPU 负载。
六、Kafka 压缩场景
Kafka 的压缩适用于多个场景,不同业务需求决定了选择不同的压缩方式。
6.1 日志收集与分析(ELK / Flink / Kafka)
📌 场景描述
- 业务系统(微服务、Web 服务器)产生大量日志数据,需要采集并存储到 Kafka。
- 这些日志最终会被消费,并存入 Elasticsearch 或 HDFS 进行分析。
❌ 传统方式的痛点
- 日志量庞大,未压缩时数据传输慢,网络负载高。
- 生产者(如 Filebeat)发送未压缩数据,导致 Kafka 磁盘占用过多。
✅ 解决方案
- 使用 GZIP 或 Zstd 压缩:高压缩率,减少磁盘占用和网络流量。
- 示例:
- 未压缩:100 万条日志 500MB
- GZIP 压缩后:仅 80MB,节省 84% 存储
- Zstd 压缩后:仅 60MB,比 GZIP 还少 20%
🔧 Kafka 配置
compression.type=gzip # 也可以使用 zstd(更快更高效)
🎯 适用场景
✅ ELK 日志分析(Filebeat + Kafka + Logstash)
✅ Flink 处理 Kafka 日志流
✅ CDN 访问日志传输
6.2 实时流数据处理(Flink / Spark Streaming)
📌 场景描述
- 电商订单、用户行为数据、监控指标需要实时流式处理。
- 生产者每秒写入 几十万 条事件,消费者(Flink/Spark)进行计算。
❌ 传统方式的痛点
- 未压缩数据会导致 Kafka 传输延迟增加。
- 高吞吐数据增加 Kafka Broker 负载,影响集群稳定性。
✅ 解决方案
- 使用 Snappy 或 LZ4 压缩:保证低延迟,高吞吐,快速解压。
- 示例:
- 未压缩:1 秒 100 万条,每条 1KB → 总量 1GB/s
- LZ4 压缩后:仅 400MB/s,解压极快,适用于流式计算。
🔧 Kafka 配置
compression.type=snappy # 或 lz4,适用于高吞吐场景
🎯 适用场景
✅ 实时订单处理(Kafka + Flink)
✅ 用户行为分析(Spark Streaming)
✅ 监控系统数据流(Prometheus + Kafka)
6.3 电商高并发订单系统
📌 场景描述
- 订单系统需要将支付、库存变更等数据通过 Kafka 传输到多个消费者(结算、物流、推荐)。
- 订单数据量巨大,高并发时每秒处理数十万条消息。
❌ 传统方式的痛点
- 高并发导致 Kafka 负载飙升,影响延迟。
- 订单数据结构复杂,未压缩时数据量较大。
✅ 解决方案
- 使用 LZ4 或 Snappy 压缩:快速压缩解压,适应高吞吐写入。
- 示例:
- 未压缩:1 小时 500GB 订单数据
- LZ4 压缩后:仅 150GB,减少 70% 传输成本
- Snappy 压缩后:仅 200GB,解压更快
🔧 Kafka 配置
compression.type=lz4 # 适用于高吞吐订单流
🎯 适用场景
✅ 秒杀系统订单处理(Kafka + Redis)
✅ 库存变更消息流(Kafka + MySQL)
✅ 支付流水异步处理
6.4. 跨数据中心(Multi-DC)Kafka 同步
📌 场景描述
- 企业在多个地区部署 Kafka,需要跨数据中心同步日志或交易数据。
- 由于带宽有限,未压缩数据传输成本高,速度慢。
❌ 传统方式的痛点
- Kafka MirrorMaker 传输数据时,占用大量带宽,增加延迟。
- 存储数据量大,导致远程机房的存储成本上升。
✅ 解决方案
- 使用 Zstd 或 GZIP 压缩:降低带宽消耗,提高传输效率。
- 示例:
- 未压缩:每天跨数据中心传输 10TB 日志
- GZIP 压缩后:仅 2TB
- Zstd 压缩后:仅 1.5TB,节省 85% 带宽
🔧 Kafka 配置
compression.type=zstd # 推荐 Zstd,节省带宽 & 高效
🎯 适用场景
✅ 全球业务同步(美洲-欧洲-亚洲数据中心)
✅ 金融数据跨机房同步(Kafka MirrorMaker)
✅ AWS/GCP/Azure 云环境带宽优化
6.5 数据存储优化(Kafka + HDFS)
📌 场景描述
- Kafka 消息最终存储到 HDFS / S3 / ClickHouse,数据存储成本高。
- 需要降低 Kafka 存储和 HDFS 存储成本,同时保持查询性能。
❌ 传统方式的痛点
- Kafka 数据存储占用大量磁盘,导致 Broker 负载增加。
- HDFS 存储成本高,特别是数据湖存储。
✅ 解决方案
- 使用 GZIP 或 Zstd 压缩:最大限度减少存储空间。
- 示例:
- 未压缩:1 天 Kafka 消息 5TB
- GZIP 压缩后:仅 1TB
- Zstd 压缩后:800GB
🔧 Kafka 配置
compression.type=gzip # 或 zstd,存储优化
🎯 适用场景
✅ Kafka + HDFS(数据归档)
✅ Kafka + ClickHouse(大数据查询)
✅ Kafka + Presto(数据湖查询)
Kafka 压缩方式选择总结
| 场景 | 推荐压缩算法 | 目标 |
|---|---|---|
| 日志收集(ELK、CDN) | GZIP / Zstd | 存储优化,减少磁盘占用 |
| 实时流处理(Flink、Spark) | Snappy / LZ4 | 低延迟,高吞吐 |
| 电商订单高并发 | LZ4 / Snappy | 快速压缩解压,减少 Kafka 负载 |
| 跨数据中心同步 | Zstd / GZIP | 降低带宽,提升传输效率 |
| 大数据存储(HDFS、ClickHouse) | GZIP / Zstd | 存储优化,减少磁盘开销 |
相关文章:
Kafka 压缩算法详细介绍
文章目录 一 、Kafka 压缩算法概述二、Kafka 压缩的作用2.1 降低网络带宽消耗2.2 提高 Kafka 生产者和消费者吞吐量2.3 减少 Kafka 磁盘存储占用2.4 减少 Kafka Broker 负载2.5 降低跨数据中心同步成本 三、Kafka 压缩的原理3.1 Kafka 压缩的基本原理3.2. Kafka 压缩的工作流程…...
单词翻转(信息学奥赛一本通1144)
题目来源 信息学奥赛一本通(C版)在线评测系统 题目描述 1144:单词翻转 时间限制: 1000 ms 内存限制: 65536 KB 提交数:60098 通过数: 26099 【题目描述】 输入一个句子(一行),将句子中的每一个单词翻转后输出。 【输入…...
DeepSeek 模型全览:探索不同类别的模型
DeepSeek 是近年来备受关注的 AI 研究团队,推出了一系列先进的深度学习模型,涵盖了大语言模型(LLM)、代码生成模型、多模态模型等多个领域。本文将大概介绍 DeepSeek 旗下的不同类别的模型,帮助你更好地理解它们的特点…...
我的2024年年度总结
序言 在前不久(应该是上周)的博客之星入围赛中铩羽而归了。虽然心中颇为不甘,觉得这一年兢兢业业,每天都在发文章,不应该是这样的结果(连前300名都进不了)。但人不能总抱怨,总要向前…...
DeepSeek回答人不会干出超出视角之外的事
我本身是有着深度思考习惯的重度患者,当我遇到一个AI会深度思考的时候,我觉得找到了一个同类,是不是可以学习周伯通的左右手互博大法?下面我们拿着我的一点思考,让DeepSeek来再深度思考挖掘。 人不会干出超出视角之外的…...
前端知识速记—JS篇:null 与 undefined
前端知识速记—JS篇:null 与 undefined 什么是 null 和 undefined? 1. undefined 的含义 undefined 是 JavaScript 中默认的值,表示某个变量已被声明但尚未被赋值。当尝试访问一个未初始化的变量、函数没有返回值时,都会得到 u…...
Hive:静态分区(分区语法,多级分区,分区的查看修改增加删除)
hive在建表时引入了partition概念。即在建表时,将整个表存储在不同的子目录中,每一个子目录对应一个分区。在查询时,我们就可以指定分区查询,避免了hive做全表扫描,从而提高查询率。 oracle和Hive分区的区别 orcale在…...
升级到Mac15.1后pod install报错
升级Mac后,Flutter项目里的ios项目运行 pod install报错, 遇到这种问题,不要着急去百度,大概看一下报错信息,每个人遇到的问题都不一样。 别人的解决方法并不一定适合你; 下面是报错信息: #…...
智慧园区管理系统为企业提供高效运作与风险控制的智能化解决方案
内容概要 快鲸智慧园区管理系统,作为一款备受欢迎的智能化管理解决方案,致力于为企业提供高效的运作效率与风险控制优化。具体来说,这套系统非常适用于工业园、产业园、物流园、写字楼及公寓等多种园区和商办场所。它通过数字化与智能化的手…...
JxBrowser 8.2.2 版本发布啦!
JxBrowser 8.2.2 版本发布啦! • 已更新 #Chromium 至更新版本 • 实施了多项质量改进 🔗 点击此处了解更多详情。 🆓 获取 30 天免费试用。...
LangChain的开发流程
文章目录 LangChain的开发流程开发密钥指南3种使用密钥的方法编写一个取名程序 LangChain表达式 LangChain的开发流程 为了更深人地理解LangChain的开发流程,本文将以构建聊天机器人为实际案例进行详细演示。下图展示了一个设计聊天机器人的LLM应用程序。 除了Wb服务…...
AI在自动化测试中的伦理挑战
在软件测试领域,人工智能(AI)已经不再是遥不可及的未来技术,而是正在深刻影响着测试过程的现实力量。尤其是在自动化测试领域,AI通过加速测试脚本生成、自动化缺陷检测、测试数据生成等功能,极大提升了测试…...
《Origin画百图》之同心环图
《Origin画百图》第四集——同心环图 入门操作可查看合集中的《30秒,带你入门Origin》 具体操作: 1.数据准备:需要X和Y两列数据 2. 选择菜单 绘图 > 条形图,饼图,面积图: 同心圆弧图 3. 这是绘制的基础图形&…...
TPA注意力机制详解及代码复现
基本原理 在深入探讨TPA注意力机制的数学表达之前,我们需要先理解其基本原理。TPA注意力机制是一种创新的注意力机制,旨在解决传统注意力机制在处理大规模数据时面临的内存和计算效率问题。 TPA注意力机制的核心思想是利用 张量分解 来压缩注意力机制中的Q、K、V表示,同时…...
深入理解Java并发编程中的原子操作、volatile关键字与读写锁
1. 原子操作与AtomicInteger等原子类 1.1 原子操作的原理 在多线程环境中,多个线程可能会同时访问和修改共享资源。如果这些操作不是原子性的(即可以被中断),那么可能会导致数据不一致或竞态条件(race condition)。原子操作是指不可分割的操作,即在多线程环境下,这些…...
HTML(快速入门)
欢迎大家来到我的博客~欢迎大家对我的博客提出指导,有错误的地方会改进的哦~点击这里了解更多内容 目录 一、前言二、HTML基础2.1 什么是HTML?2.2 认识HTML标签2.2.1 HTML标签当中的基本结构2.2.2 标签层次结构 2.3 HTML常见标签2.3.1 标题标签2.3.2 段落标签2.3.3…...
SpringBoot Web开发(SpringMVC)
SpringBoot Web开发(SpringMVC) MVC 核心组件和调用流程 Spring MVC与许多其他Web框架一样,是围绕前端控制器模式设计的,其中中央 Servlet DispatcherServlet 做整体请求处理调度! . 除了DispatcherServletSpringMVC还会提供其他…...
汽车蓝牙钥匙定位仿真小程序
此需求来自于粉丝的真实需求,假期没事,牛刀小试。 一、项目背景 如今,智能车钥匙和移动端定位技术已经相当普及。为了探索蓝牙 Beacon 在短距离定位场景下的可行性,我们搭建了一个简易原型:利用 UniApp 在移动端采集蓝牙信标的 RSSI(信号强度),通过三边定位算法估算钥…...
K8S中高级存储之PV和PVC
高级存储 PV和PVC 由于kubernetes支持的存储系统有很多,要求客户全都掌握,显然不现实。为了能够屏蔽底层存储实现的细节,方便用户使用, kubernetes引入PV和PVC两种资源对象。 PV(Persistent Volume) PV是…...
【C语言进阶】- 动态内存管理
动态内存管理 1.1 为什么存在动态内存分配1.2 动态内存函数介绍2.1 malloc函数的使用2.2 free函数的使用2.3 calloc函数的使用2.4 realloc函数的使用3.1 常见的动态内存错误3.2 常见笔试题 1.1 为什么存在动态内存分配 我们已经掌握的内存开辟方式有: int val 20;…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
