当前位置: 首页 > news >正文

Kafka 单机和集群环境部署教程

目录

    • 一、Kafka 单机环境部署
      • 1. 环境准备
      • 2. 安装 Java
      • 3. 安装 ZooKeeper
        • 3.1 下载并解压 ZooKeeper
        • 3.2 配置 ZooKeeper
        • 3.3 启动 ZooKeeper
        • 3.4 验证 ZooKeeper 是否正常运行
      • 4. 安装 Kafka
        • 4.1 下载并解压 Kafka
        • 4.2 配置 Kafka
        • 4.3 创建日志目录
        • 4.4 启动 Kafka Broker
        • 4.5 验证 Kafka 是否正常运行
      • 5. Kafka 单机部署的注意事项
    • 二、Kafka 集群环境部署
      • 1. 环境准备
      • 2. 安装 ZooKeeper 集群
        • 2.1 配置 ZooKeeper 节点 ID
        • 2.2 启动 ZooKeeper 集群
      • 3. 安装 Kafka 集群
        • 3.1 配置 Kafka Broker
        • 3.2 启动 Kafka Broker
      • 4. 验证 Kafka 集群状态
        • 4.1 创建 Topic
        • 4.2 验证 Topic
      • 5. Kafka 集群部署的注意事项
    • 三、Kafka 使用案例:生产者和消费者
      • 1. 使用 Java 实现 Kafka 生产者和消费者
        • 1.1 添加依赖
        • 1.2 编写 Kafka 生产者
        • 1.3 编写 Kafka 消费者
        • 1.4 运行 Java 程序
      • 2. 使用 Python 实现 Kafka 生产者和消费者
        • 2.1 安装 Kafka 库
        • 2.2 编写 Kafka 生产者
        • 2.3 编写 Kafka 消费者
        • 2.4 运行 Python 程序
      • 3. 注意事项
    • 总结
      • 部署过程中的注意事项

下面是 Apache Kafka 单机和集群环境部署的详细教程,包括部署过程中的注意事项以及一个使用案例。Apache Kafka 是一个分布式流处理平台,广泛用于实时数据处理、日志收集、消息队列等场景。


一、Kafka 单机环境部署

1. 环境准备

  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7)
  • Java:Kafka 需要 Java 环境,推荐使用 OpenJDK 8 或 11。
  • ZooKeeper:Kafka 依赖 ZooKeeper 进行分布式协调。

2. 安装 Java

在 Ubuntu 中:

sudo apt update
sudo apt install openjdk-11-jdk

在 CentOS 中:

sudo yum install java-11-openjdk

验证 Java 安装:

java -version

3. 安装 ZooKeeper

Kafka 使用 ZooKeeper 进行节点管理和协调,需要先安装并启动 ZooKeeper。

3.1 下载并解压 ZooKeeper
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.2/apache-zookeeper-3.8.2-bin.tar.gz
tar -xzvf apache-zookeeper-3.8.2-bin.tar.gz
mv apache-zookeeper-3.8.2-bin /usr/local/zookeeper
3.2 配置 ZooKeeper
  1. 创建数据目录:

    mkdir -p /var/lib/zookeeper
    
  2. 复制配置文件:

    cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
    
  3. 编辑配置文件 /usr/local/zookeeper/conf/zoo.cfg

    dataDir=/var/lib/zookeeper
    clientPort=2181
    
3.3 启动 ZooKeeper
/usr/local/zookeeper/bin/zkServer.sh start
3.4 验证 ZooKeeper 是否正常运行
/usr/local/zookeeper/bin/zkCli.sh -server localhost:2181

在连接成功后输入 ls /,若返回空列表([]),则说明连接成功。

4. 安装 Kafka

4.1 下载并解压 Kafka

访问 Kafka 官网 下载最新版本的 Kafka。

wget https://downloads.apache.org/kafka/3.5.0/kafka_2.12-3.5.0.tgz
tar -xzvf kafka_2.12-3.5.0.tgz
mv kafka_2.12-3.5.0 /usr/local/kafka
4.2 配置 Kafka

编辑 Kafka 的配置文件 /usr/local/kafka/config/server.properties

# Kafka Broker ID,唯一标识符
broker.id=0# 监听的接口和端口
listeners=PLAINTEXT://:9092# 日志文件存储路径
log.dirs=/var/lib/kafka-logs# Zookeeper 连接地址
zookeeper.connect=localhost:2181
4.3 创建日志目录
mkdir -p /var/lib/kafka-logs
4.4 启动 Kafka Broker
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
4.5 验证 Kafka 是否正常运行

创建一个测试 Topic:

/usr/local/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

列出 Topic:

/usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

你应该看到 test-topic 在列出的 Topic 中。

5. Kafka 单机部署的注意事项

  • ZooKeeper:确保 ZooKeeper 正常运行,并且 zookeeper.connect 地址配置正确。
  • 内存和存储:为 Kafka 分配足够的内存和存储空间,尤其是在高负载场景下。
  • 日志文件:定期检查和清理 Kafka 日志文件,以防止磁盘占满。
  • 监听地址:如果需要远程访问,确保 listeners 配置了正确的监听地址。
  • 防火墙设置:确保防火墙开放了 Kafka 和 ZooKeeper 使用的端口(默认 9092 和 2181)。

二、Kafka 集群环境部署

Kafka 集群由多个 Kafka Broker 组成,能够提供高可用性和水平扩展。

1. 环境准备

  • 多台服务器:至少 3 台(3 个 Kafka Broker 和 3 个 ZooKeeper 实例)
  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7)
  • Java:在所有节点上安装 Java

2. 安装 ZooKeeper 集群

在每台服务器上按照单机部署的步骤安装 ZooKeeper,并进行以下配置:

2.1 配置 ZooKeeper 节点 ID

编辑每个节点的 zoo.cfg 文件,添加如下配置:

server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888

在每台服务器上创建 myid 文件,用于标识节点:

echo "1" > /var/lib/zookeeper/myid  # 在 zookeeper1 上
echo "2" > /var/lib/zookeeper/myid  # 在 zookeeper2 上
echo "3" > /var/lib/zookeeper/myid  # 在 zookeeper3 上
2.2 启动 ZooKeeper 集群

在每台服务器上启动 ZooKeeper:

/usr/local/zookeeper/bin/zkServer.sh start

3. 安装 Kafka 集群

在每台服务器上按照单机部署的步骤安装 Kafka,并进行以下配置:

3.1 配置 Kafka Broker

编辑每个节点的 server.properties 文件,添加如下配置:

broker.id=0  # 每个 Broker 唯一 ID
listeners=PLAINTEXT://:9092
log.dirs=/var/lib/kafka-logs
zookeeper.connect=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
3.2 启动 Kafka Broker

在每台服务器上启动 Kafka Broker:

/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

4. 验证 Kafka 集群状态

4.1 创建 Topic

在任一 Kafka Broker 上执行以下命令:

/usr/local/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --partitions 3 --replication-factor 3
4.2 验证 Topic

列出集群中的 Topic:

/usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server kafka1:9092

查看 Topic 详细信息:

/usr/local/kafka/bin/kafka-topics.sh --describe --topic test-topic --bootstrap-server kafka1:9092

5. Kafka 集群部署的注意事项

  • ZooKeeper 集群:确保每个节点配置了正确的 myid,并且所有节点可以互相通信。
  • Kafka Broker 配置:每个 Broker 必须有唯一的 broker.id
  • 分区和副本:根据实际需求配置合适的分区数和副本数,以提高数据可靠性和吞吐量。
  • 监控和报警:使用 Kafka Manager 或其他监控工具监控集群状态,及时处理故障。
  • 网络配置:确保各节点之间的网络连接正常,并且防火墙开放了必要端口。
  • 资源规划:为 Kafka 和 ZooKeeper 分配足够的 CPU、内存和磁盘资源。

三、Kafka 使用案例:生产者和消费者

1. 使用 Java 实现 Kafka 生产者和消费者

1.1 添加依赖

在 Maven 项目中添加 Kafka 的依赖:

<dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.5.0</version>
</dependency>
1.2 编写 Kafka 生产者
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;import java.util.Properties;public class SimpleProducer {public static void main(String[] args) {// Kafka 生产者配置Properties props = new Properties();props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");// 创建生产者Producer<String, String> producer = new KafkaProducer<>(props);// 发送消息for (int i = 0; i < 10; i++) {ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", Integer.toString(i), "Message " + i);producer.send(record);}// 关闭生产者producer.close();}
}
1.3 编写 Kafka 消费者
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.consumer.ConsumerRecord;import java.util.Collections;
import java.util.Properties;public class SimpleConsumer {public static void main(String[] args) {// Kafka 消费者配置Properties props = new Properties();props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");props.put(ConsumerConfig.GROUP_ID_CONFIG, "test-group");props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "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.printf("Offset = %d, Key = %s, Value = %s%n", record.offset(), record.key(), record.value());}}}
}
1.4 运行 Java 程序

编译并运行生产者:

mvn compile
mvn exec:java -Dexec.mainClass="SimpleProducer"

编译并运行消费者:

mvn exec:java -Dexec.mainClass="SimpleConsumer"

2. 使用 Python 实现 Kafka 生产者和消费者

2.1 安装 Kafka 库
pip install kafka-python
2.2 编写 Kafka 生产者
from kafka import KafkaProducer# 创建 Kafka 生产者
producer = KafkaProducer(bootstrap_servers='localhost:9092')# 发送消息
for i in range(10):producer.send('test-topic', key=bytes(str(i), encoding='utf-8'), value=bytes(f'Message {i}', encoding='utf-8'))# 关闭生产者
producer.close()
2.3 编写 Kafka 消费者
from kafka import KafkaConsumer# 创建 Kafka 消费者
consumer = KafkaConsumer('test-topic',bootstrap_servers='localhost:9092',group_id='test-group',auto_offset_reset='earliest'
)# 轮询消息
for message in consumer:print(f'Offset = {message.offset}, Key = {message.key.decode()}, Value = {message.value.decode()}')
2.4 运行 Python 程序

运行生产者:

python kafka_producer.py

运行消费者:

python kafka_consumer.py

3. 注意事项

  • 生产者和消费者配置:合理配置 bootstrap.serverskey.serializervalue.serializergroup.id 等参数。
  • 分区策略:在生产者中使用自定义分区策略,可以提高吞吐量和负载均衡。
  • 消费组:多个消费者实例可以组成一个消费组,以提高处理能力。
  • 容错机制:在实际应用中,需要考虑重试、错误处理和幂等性等问题。

总结

通过以上步骤,我们成功部署了 Kafka 单机和集群环境,并实现了一个简单的生产者和消费者应用。Kafka 提供了高吞吐量、低延迟的消息传递能力,适合用于实时流处理和数据管道。

部署过程中的注意事项

  • Java 版本:确保安装了正确版本的 Java。
  • ZooKeeper 集群:确保 ZooKeeper 集群稳定运行,并配置正确。
  • 网络配置:各节点之间的网络连接需要稳定,端口要开放。
  • 资源配置:根据业务需求配置合适的内存、CPU 和磁盘资源。
  • 数据安全:启用 Kafka 的 SSL/TLS 和 SASL 认证机制,确保数据安全传输。
  • 监控和管理:使用 Kafka Manager、Prometheus 等工具监控集群状态,及时处理异常。
  • 日志管理:定期检查和清理 Kafka 的日志,以防止磁盘空间不足。

通过合理的配置和优化,Kafka 可以为应用程序提供可靠的消息传递和流处理服务,是构建实时数据管道和事件驱动架构的重要组件。

相关文章:

Kafka 单机和集群环境部署教程

目录 一、Kafka 单机环境部署1. 环境准备2. 安装 Java3. 安装 ZooKeeper3.1 下载并解压 ZooKeeper3.2 配置 ZooKeeper3.3 启动 ZooKeeper3.4 验证 ZooKeeper 是否正常运行 4. 安装 Kafka4.1 下载并解压 Kafka4.2 配置 Kafka4.3 创建日志目录4.4 启动 Kafka Broker4.5 验证 Kafk…...

使用Python发送PDD直播间弹幕(协议算法分析)

文章目录 1. 写在前面2. 接口分析3. 算法还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…...

1056. Mice and Rice (25)-PAT甲级真题

当时没想到可以用队列来做&#xff0c;就傻傻的模拟了&#xff0c;用cur存当前轮的id&#xff0c;这个id对应的是order的下标&#xff0c;这里有个求rank的技巧就是当前轮没有晋级的rank为&#xff08;当前轮的组数1&#xff09; 模拟&#xff1a; #include<bits/stdc.h&g…...

色轮在数据可视化中的应用

在数据可视化中&#xff0c;色彩的运用不仅仅是为了美观&#xff0c;更是为了传达信息、区分数据和提升图表的易读性。本文探讨色轮及其色彩公式的应用&#xff0c;帮助大家更好地运用色彩来提升数据可视化的效果。 1、色轮的基础概念 色轮是一个用于表示颜色之间关系的图形工…...

编程-设计模式 8:组合模式

设计模式 8&#xff1a;组合模式 定义与目的 定义&#xff1a;组合模式又称为部分-整体模式&#xff0c;它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。目的&#xff1a;该模式的主要目的是将多个对象…...

c语言指针(8.11)

那这样p和*p记录的地址不一样了吗&#xff1f; 不&#xff0c;p 和 *p 记录的地址在某种意义上是“相同”的&#xff0c;但它们在类型和使用方式上有所不同。 p 的地址&#xff1a;p 是一个指针&#xff0c;它本身存储了一个地址&#xff0c;这个地址是二维数组 arr 的第一行&a…...

加密技术的发展

加密是一种用于保护数据安全的技术&#xff0c;通过将原始信息&#xff08;明文&#xff09;转换为一种不可读的形式&#xff08;密文&#xff09;&#xff0c;确保只有拥有正确解密密钥的人才能访问其真实内容。加密技术在现代社会中被广泛应用于各种场景&#xff0c;包括但不…...

编程-设计模式 22:策略模式

设计模式 22&#xff1a;策略模式 定义与目的 定义&#xff1a;策略模式定义了一系列算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户。目的&#xff1a;该模式的主要目的是将一组相关的算法封装成一系列可…...

kafka 将log4j的项目升级到log4j2

kafka版本是kafka_2.11-2.0.0&#xff0c;由于引用的log4j有漏洞&#xff0c;而升级kafka可能影响比较大&#xff0c;所以更新log4j包的版本。 参考的是将log4j的项目升级到log4j2 主要步骤如下&#xff1a; cd kafka的目录 cd libs rm -f slf4j-log4j12-1.7.25.jar rm -f …...

【CSP2019 模拟赛】Time

题目描述&#xff1a; 小 A 现在有一个长度为 &#x1d45b; 的序列 {&#x1d465;&#x1d456;}&#xff0c;但是小 A 认为这个序列不够优美。 小 A 认为一个序列是优美的&#xff0c;当且仅当存在 &#x1d458; ∈ [1, &#x1d45b;]&#xff0c;满足&#xff1a; &#…...

二叉树相关的算法题

二叉树相关的算法题 单值二叉树 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;[1,1,1,1,1,null,1] 输出&#xff1a;t…...

Unity URP 曲面细分学习笔记

学百人时遇到了曲面着色器的内容&#xff0c;有点糊里糊涂&#xff0c;于是上知乎找到了两篇大佬的文章 Unity URP 曲面细分 和 Unity曲面细分笔记&#xff0c;本文只是自己做学习记录使用 1.曲面细分与镶嵌 曲面细分或细分曲面&#xff08;Subdivision surface&#xff09;是…...

每天五分钟深度学习pytorch:训练神经网络模型的基本步骤

本文重点 本文个人认为是本专栏最重要的章节内容之一,前面我们学习了pytorch中的基本数据tensor,后面我们就将学学习深度学习模型的内容了,在学习之前,我们先来看一下我们使用pytorch框架训练神经网络模型的基本步骤,然后我们下面就将这些步骤分解开来,详细学习。 代码…...

【langchain学习】使用缓存优化langchain中的LLM调用性能:内存、SQLite与Redis的对比

在处理语言模型(LLM)调用时,特别是在需要多次执行相同请求的情况下,缓存机制能够显著提升系统的性能。本文通过对比内存缓存(InMemoryCache)、SQLite缓存(SQLiteCache)和Redis缓存(RedisCache),探讨了如何在Langchain中使用这些缓存机制来优化LLM调用的性能。 代码…...

spring boot 集成EasyExcel

EasyExcel 是一个基于 Java 的快速、简洁的 Excel 处理工具&#xff0c;它能够在不用考虑性能和内存等因素的情况下&#xff0c;快速完成 Excel 的读写功能。 首先&#xff0c;需要在 Spring Boot 项目中引入 EasyExcel 依赖。在 pom.xml 文件中添加以下依赖&#xff1a; <d…...

获取对象中第一个存在的值

在JavaScript中&#xff0c;要从一个对象中获取第一个存在的&#xff08;非undefined、非null、非空数组等&#xff09;值&#xff0c;你可以使用Object.values()方法结合Array.prototype.find()方法。以下是一个示例代码&#xff0c;演示如何实现这一点&#xff1a; const ob…...

Python学习笔记----集合与字典

1. 字符串、列表和元组的元素都是按下标顺序排列&#xff0c;可通过下 标直接访问&#xff0c;这样的数据类型统称为序列。 其中&#xff0c;字符串和元组中的元素不能修改&#xff0c;而列表中的元素可以修改。 集合 1. 与元组和列表类似&#xff0c;Set &#xff08;集合&a…...

c# 排序、强转枚举

List<Tuple<double,int>> mm中doble从小到大排序 mm本身排序 在C#中&#xff0c;如果你有一个List<Tuple<double, int>>类型的集合mm&#xff0c;并且你想要根据Tuple中的double值&#xff08;即第一个元素&#xff09;从小到大进行排序&#xff0c;同…...

“华为杯”第十六届中国研究生数学建模竞赛-C题:视觉情报信息分析

目录 摘 要: 一、问题重述 二、模型假设 三、符号说明 四、问题一分析与求解 4.1 问题一分析 4.2 模型建立 4.2.1 位置变换模型建立 4.2.4 多平面转换模型建立 4.3 模型求解 4.3.1 问题一图 1 结果 4.3.2 问题一图 2 结果 4.3.3 问题一图 3 结果 4.3.4 问题一图 4 结果 4.4 模…...

html+css+js网页设计 找法网2个页面(带js)ui还原度百分之90

htmlcssjs网页设计 找法网2个页面&#xff08;带js&#xff09;ui还原度百分之90 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...