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

从文字到使用,一文读懂Kafka服务使用

在这里插入图片描述

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。
🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。
🎉欢迎 👍点赞✍评论⭐收藏

Kafka知识专栏学习

Kafka知识云集访问地址备注
Kafka知识点(1)https://blog.csdn.net/m0_50308467/article/details/134138971Kafka专栏
Kafka知识点(2)https://blog.csdn.net/m0_50308467/article/details/134733596Kafka专栏

文章目录

    • 🔎 Kafka 入门学习
      • 🍁01. 什么是Kafka?
      • 🍁02. Kafka有什么特点,优缺点是什么?
      • 🍁03. Kafka 与 Zookeeper 服务的关系?
      • 🍁04. Kafka 的常见命令有哪些?
      • 🍁05. Kafka 和 Zookeeper 服务如何结合?
      • 🍁06. Kafka 生产者和消费者的流程图?
        • 🍁6.1 生产者流程图
        • 🍁6.2 消费者流程图
      • 🍁07. 安装 Zookeeper 服务的详细步骤?
      • 🍁08. 安装Kafka服务的详细步骤?
      • 🍁09. Java项目结合Kafka服务使用。
        • 🍁9.1 pom文件引入kafka服务
        • 🍁9.2 创建Kafka消息发送组件
        • 🍁9.3 创建Kafka消息消费组件
        • 🍁9.4 Java项目使用Kafka小结

在这里插入图片描述

🔎 Kafka 入门学习

🍁01. 什么是Kafka?

Kafka是一个分布式流处理平台,最初由LinkedIn开发并开源。它被设计用于处理大规模的实时数据流,并能够持久化和发布数据记录。Kafka具有高吞吐量、可扩展性和容错性的特点,使得它成为构建实时流处理应用程序的理想选择。

Kafka的核心概念包括以下几个要素:

  1. 主题(Topic):主题是Kafka中的数据流分类,类似于消息队列中的队列。数据被发布到不同的主题中,消费者可以订阅感兴趣的主题来消费数据。

  2. 分区(Partition):主题可以被分为多个分区,每个分区是一个有序的日志文件,用于存储消息。分区允许数据在集群中并行处理和存储,提高了吞吐量和可扩展性。

  3. 副本(Replication):每个分区可以有多个副本,副本用于提供数据的冗余备份和容错性。副本分布在不同的服务器上,当某个副本不可用时,可以从其他副本中获取数据。

  4. 生产者(Producer):生产者是数据的发送者,负责将数据发布到Kafka的主题中。生产者可以将数据发送到指定的分区,也可以让Kafka根据一定的策略自动选择分区。

  5. 消费者(Consumer):消费者是数据的接收者,负责从Kafka的主题中读取数据。消费者可以以不同的方式消费数据,如按照时间顺序、按照分区等。

Kafka的应用场景非常广泛,包括日志收集、事件驱动架构、实时分析、流式处理等。它可以处理大规模的数据流,并具有高吞吐量、可靠性和可扩展性的特点,因此在处理实时数据和构建大规模数据流处理系统方面非常有价值。

🍁02. Kafka有什么特点,优缺点是什么?

Kafka具有以下特点:

  1. 高吞吐量:Kafka能够处理大规模的数据流,并提供很高的吞吐量。它通过将数据分区和并行处理,以及支持批量发送和接收,实现了高效的数据处理。

  2. 可扩展性:Kafka的分布式架构使得它可以轻松地扩展到多个服务器上,以适应不断增长的数据流量和负载。通过增加分区和副本,Kafka可以水平扩展,提高系统的容量和性能。

  3. 持久性:Kafka将数据持久化到磁盘中,以确保数据的可靠性和持久性。数据存储在分区中,并且可以根据需要保留一段时间,以便后续的数据分析和处理。

  4. 实时处理:Kafka是一个实时流处理平台,能够处理实时数据流。它支持低延迟的数据传输和处理,可以实时地将数据从生产者传递给消费者,并支持流式处理和实时分析。

  5. 容错性:Kafka通过将数据复制到多个副本中来提供容错性。当某个副本不可用时,可以从其他副本中获取数据,确保数据的可靠性和可用性。

  6. 灵活性:Kafka具有灵活的消息传递模型,可以根据需要进行消息的发布和订阅。它支持多种消息格式和协议,并提供了丰富的API和工具,使得开发者可以根据自己的需求进行定制和扩展。

Kafka的优点包括高吞吐量、可扩展性、持久性和实时处理能力,使得它成为处理大规模实时数据流的理想选择。然而,Kafka也有一些缺点:

  1. 复杂性:Kafka的配置和管理相对复杂,需要一定的专业知识和经验。对于初学者来说,上手可能会有一定的学习曲线。

  2. 存储成本:由于Kafka将数据持久化到磁盘中,需要一定的存储空间。对于大规模的数据流,存储成本可能会成为一个考虑因素。

  3. 延迟:尽管Kafka具有较低的延迟,但在某些场景下,特别是对于需要严格实时性的应用程序来说,延迟可能仍然是一个限制因素。

总体而言,Kafka是一个功能强大的分布式流处理平台,具有高吞吐量、可扩展性和持久性的优点,适用于处理大规模实时数据流的应用场景。然而,对于一些特定的需求,如低延迟和简单性,可能需要进行权衡和评估。

🍁03. Kafka 与 Zookeeper 服务的关系?

Kafka与Zookeeper是两个独立但密切相关的组件,它们在Kafka集群中扮演不同的角色。

Zookeeper是一个分布式的协调服务,用于管理和维护Kafka集群的元数据信息,包括主题、分区、消费者组等。Kafka使用Zookeeper来进行以下任务:

  1. 集群管理:Kafka集群中的每个节点都在Zookeeper中注册自己的信息,包括节点的IP地址、端口号等。Zookeeper负责监控和管理这些节点,以确保集群中的节点状态的一致性。

  2. Leader选举:Kafka的每个分区都有一个分区领导者(Leader),负责处理该分区的读写请求。如果分区领导者不可用,Zookeeper会协助进行新的领导者选举,选择一个新的分区领导者。

  3. 消费者组协调:Kafka中的消费者可以组成消费者组,共同消费一个主题。Zookeeper负责协调消费者组的工作,包括分配分区给消费者、监控消费者的健康状态等。

  4. 动态扩缩容:当Kafka集群需要扩展或缩小规模时,Zookeeper可以帮助协调新节点的加入和旧节点的离开,以实现集群的动态扩缩容。

总结来说,Zookeeper在Kafka集群中扮演着重要的角色,用于管理和维护集群的元数据信息、协调分区的领导者选举以及消费者组的协调工作。Kafka依赖于Zookeeper来实现这些功能,因此在使用Kafka时需要同时启动和管理Zookeeper服务。

🍁04. Kafka 的常见命令有哪些?

Kafka的常见命令包括:

  1. kafka-topics.sh:用于创建、查看和管理主题的命令。

    • 创建主题: kafka-topics.sh --create --topic my-topic --partitions 3 --replication-factor 1 --bootstrap-server localhost:9092
    • 查看主题列表: kafka-topics.sh --list --bootstrap-server localhost:9092
    • 查看主题详情: kafka-topics.sh --describe --topic my-topic --bootstrap-server localhost:9092
    • 删除主题: kafka-topics.sh --delete --topic my-topic --bootstrap-server localhost:9092
  2. kafka-console-producer.sh:用于从命令行向主题发送消息的命令。

    • 发送消息: kafka-console-producer.sh --topic my-topic --bootstrap-server localhost:9092
  3. kafka-console-consumer.sh:用于从命令行消费主题中的消息的命令。

    • 消费消息: kafka-console-consumer.sh --topic my-topic --bootstrap-server localhost:9092
  4. kafka-consumer-groups.sh:用于管理消费者组的命令。

    • 查看消费者组列表: kafka-consumer-groups.sh --list --bootstrap-server localhost:9092
    • 查看消费者组的消费情况: kafka-consumer-groups.sh --describe --group my-group --bootstrap-server localhost:9092
  5. kafka-configs.sh:用于管理Kafka配置的命令。

    • 查看配置: kafka-configs.sh --describe --entity-type topics --entity-name my-topic --bootstrap-server localhost:9092
    • 修改配置: kafka-configs.sh --alter --entity-type topics --entity-name my-topic --add-config max.message.bytes=1048576 --bootstrap-server localhost:9092

这些是Kafka的一些常见命令,用于管理和操作Kafka集群、主题、消费者组等。你可以根据需要使用这些命令来管理你的Kafka环境。

🍁05. Kafka 和 Zookeeper 服务如何结合?

Kafka和Zookeeper是紧密结合的,它们在Kafka集群中扮演不同的角色。下面是Kafka和Zookeeper服务如何结合的概述:

  1. Kafka依赖Zookeeper:Kafka通过Zookeeper来管理和维护集群的元数据信息、协调分区的领导者选举以及消费者组的协调工作。Kafka集群中的每个节点都会将自己的信息注册到Zookeeper中,并通过Zookeeper来协调和同步集群中的各个节点。

  2. Zookeeper保存Kafka的元数据:Kafka的主题、分区、消费者组等元数据信息都存储在Zookeeper中。Kafka通过与Zookeeper的交互来获取和更新这些元数据信息,以保持集群的一致性和可靠性。

  3. Leader选举:Kafka的每个分区都有一个分区领导者(Leader),负责处理该分区的读写请求。当分区的领导者不可用时,Zookeeper会协助进行新的领导者选举,选择一个新的分区领导者。

  4. 消费者组协调:Kafka中的消费者可以组成消费者组,共同消费一个主题。Zookeeper负责协调消费者组的工作,包括分配分区给消费者、监控消费者的健康状态等。

总结来说,Kafka和Zookeeper通过密切的结合来实现Kafka集群的管理和协调。Kafka依赖于Zookeeper来管理集群的元数据、协调分区的领导者选举和消费者组的协调工作。因此,在使用Kafka时需要同时启动和管理Zookeeper服务,并确保Kafka集群和Zookeeper集群正常运行。

🍁06. Kafka 生产者和消费者的流程图?

🍁6.1 生产者流程图

看图识意:

在这里插入图片描述

🍁6.2 消费者流程图

看图识意:

在这里插入图片描述

🍁07. 安装 Zookeeper 服务的详细步骤?

安装Zookeeper服务的详细步骤如下:

  1. 下载和解压Zookeeper:从Zookeeper官方网站(https://zookeeper.apache.org)下载适合你系统的Zookeeper版本.解压下载的文件到你选择的目录中.

  2. 创建Zookeeper配置文件:在Zookeeper解压目录中,创建一个名为 zoo.cfg 的配置文件,并添加以下内容:

tickTime=2000dataDir=/path/to/zookeeper/dataclientPort=2181

/path/to/zookeeper/data 替换为你希望存储Zookeeper数据的路径。

  1. 启动Zookeeper服务器:在Zookeeper解压目录中,执行以下命令启动Zookeeper服务器:
bin/zkServer.sh start

如果你想在后台运行Zookeeper服务器,可以使用以下命令:

bin/zkServer.sh start-foreground
  1. 验证Zookeeper服务器:执行以下命令验证Zookeeper服务器是否成功启动:
bin/zkCli.sh

这将打开Zookeeper的命令行客户端。在客户端中,你可以执行一些Zookeeper命令来测试服务器的正常运行。

完成了以上步骤后,你就成功安装并启动了Zookeeper服务。你可以将Zookeeper与Kafka等其他系统结合使用,以实现分布式应用程序的管理和协调。记得根据你的需求进行配置和调整,以适应你的应用场景。

🍁08. 安装Kafka服务的详细步骤?

安装Kafka服务的详细步骤如下:

  1. 安装Java:Kafka是用Java编写的,所以首先需要安装Java运行环境。确保你的系统上已经安装了Java,并且配置了正确的环境变量。

  2. 下载和解压Kafka:从Kafka官方网站(https://kafka.apache.org/downloads)下载适合你系统的Kafka版本。解压下载的文件到你选择的目录中。

  3. 配置Kafka:进入Kafka解压目录,编辑 config/server.properties 文件来配置Kafka。你可以根据需要进行配置,例如修改监听端口、日志存储路径等。

  4. 启动Zookeeper:Kafka使用Zookeeper来管理集群的元数据信息。在Kafka解压目录中,执行以下命令启动Zookeeper服务器:

bin/zookeeper-server-start.sh config/zookeeper.properties
  1. 启动Kafka服务器:在Kafka解压目录中,执行以下命令启动Kafka服务器:
bin/kafka-server-start.sh config/server.properties
  1. 创建主题:使用 kafka-topics.sh 命令创建一个新的主题。例如,以下命令将创建一个名为 my-topic 的主题:
bin/kafka-topics.sh --create --topic my-topic --partitions 3 --replication-factor 1 --bootstrap-server localhost:9092
  1. 测试Kafka:使用Kafka提供的命令行工具进行测试。可以使用 kafka-console-producer.sh 命令向主题发送消息,并使用 kafka-console-consumer.sh 命令从主题消费消息。

完成了以上步骤后,你就成功安装了Kafka服务,并可以开始使用它进行数据的生产和消费。记得根据你的具体需求进行配置和调整,以适应你的应用场景。

🍁09. Java项目结合Kafka服务使用。

🍁9.1 pom文件引入kafka服务

在Java项目中使用Kafka服务,你需要在项目的pom.xml文件中添加Kafka相关的依赖项。下面是一个示例pom.xml文件,展示如何引入Kafka服务的依赖项:

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>kafka-example</artifactId><version>1.0.0</version><dependencies><!-- Kafka dependencies --><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.8.0</version></dependency></dependencies></project>

在上述示例中,我们使用了Apache Kafka的kafka-clients依赖项。你可以根据需要选择适合的Kafka版本,并在 <dependencies> 标签中添加相应的依赖项。

完成pom.xml文件的修改后,保存并重新构建你的Java项目。这样,你的项目就可以使用Kafka相关的类和功能了。记得在代码中引入相应的Kafka包,以便使用Kafka的API进行生产和消费数据。

🍁9.2 创建Kafka消息发送组件

要在Java项目中创建Kafka消息发送组件,你可以使用Kafka提供的Java客户端API。以下是一个简单的示例,展示如何创建一个Kafka消息发送组件:

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
import org.apache.kafka.common.serialization.StringSerializer;import java.util.Properties;
import java.util.concurrent.Future;public class KafkaMessageSender {private KafkaProducer<String, String> producer;public KafkaMessageSender(String bootstrapServers) {Properties properties = new Properties();properties.put("bootstrap.servers", bootstrapServers);properties.put("key.serializer", StringSerializer.class.getName());properties.put("value.serializer", StringSerializer.class.getName());producer = new KafkaProducer<>(properties);}public void sendMessage(String topic, String message) {ProducerRecord<String, String> record = new ProducerRecord<>(topic, message);Future<RecordMetadata> future = producer.send(record);// 可以根据需要处理发送结果}public void close() {producer.close();}
}

在上述示例中,我们创建了一个 KafkaMessageSender 类,它使用KafkaProducer来发送消息。在构造函数中,我们配置了Kafka的连接信息和序列化器。 sendMessage 方法用于发送消息到指定的主题,你可以根据需要进行处理发送结果。 close 方法用于关闭KafkaProducer。

要使用这个Kafka消息发送组件,你可以在你的Java项目中创建一个实例,并调用 sendMessage 方法发送消息到Kafka主题。记得在创建组件实例时,提供正确的Kafka服务器地址(bootstrap.servers)。

public class Main {public static void main(String[] args) {KafkaMessageSender sender = new KafkaMessageSender("localhost:9092");sender.sendMessage("my-topic", "Hello Kafka!");sender.close();}
}

在上述示例中,我们创建了一个 Main 类,创建了一个 KafkaMessageSender 实例,并调用 sendMessage 方法发送消息到名为 my-topic 的Kafka主题。

🍁9.3 创建Kafka消息消费组件

要在Java项目中创建Kafka消息消费组件,你可以使用Kafka提供的Java客户端API。以下是一个简单的示例,展示如何创建一个Kafka消息消费组件:

import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.serialization.StringDeserializer;import java.time.Duration;
import java.util.Collections;
import java.util.Properties;public class KafkaMessageConsumer {private KafkaConsumer<String, String> consumer;public KafkaMessageConsumer(String bootstrapServers, String groupId) {Properties properties = new Properties();properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);properties.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());consumer = new KafkaConsumer<>(properties);}public void consumeMessages(String topic) {consumer.subscribe(Collections.singletonList(topic));while (true) {ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));for (ConsumerRecord<String, String> record : records) {System.out.println("Received message: " + record.value());// 可以根据需要处理接收到的消息}}}public void close() {consumer.close();}
}

在上述示例中,我们创建了一个 KafkaMessageConsumer 类,它使用KafkaConsumer来消费消息。在构造函数中,我们配置了Kafka的连接信息、消费者组ID以及序列化器。 consumeMessages 方法用于订阅指定的主题并消费消息。在消费循环中,我们使用 poll 方法来拉取消息,并遍历处理接收到的消息。你可以根据需要对消息进行处理。 close 方法用于关闭KafkaConsumer。

要使用这个Kafka消息消费组件,你可以在你的Java项目中创建一个实例,并调用 consumeMessages 方法来消费指定主题的消息。记得在创建组件实例时,提供正确的Kafka服务器地址(bootstrap.servers)和消费者组ID(group.id)。

public class Main {public static void main(String[] args) {KafkaMessageConsumer consumer = new KafkaMessageConsumer("localhost:9092", "my-group");consumer.consumeMessages("my-topic");// 在消费完成后记得调用 close 方法关闭消费者consumer.close();}
}

在上述示例中,我们创建了一个 Main 类,创建了一个 KafkaMessageConsumer 实例,并调用 consumeMessages 方法来消费名为 my-topic 的Kafka主题的消息。

🍁9.4 Java项目使用Kafka小结

使用Kafka的Java项目需要以下步骤:

  1. 下载和安装Kafka:从Kafka官方网站下载适合你系统的Kafka版本,并按照官方文档进行安装。

  2. 配置Kafka:编辑Kafka的配置文件,指定Kafka的监听地址、日志存储路径等配置项。

  3. 创建生产者:使用Kafka提供的Java客户端API,创建一个Kafka生产者,配置生产者的连接信息和序列化器。

  4. 发送消息:使用生产者发送消息到指定的Kafka主题。

  5. 创建消费者:使用Kafka提供的Java客户端API,创建一个Kafka消费者,配置消费者的连接信息和反序列化器。

  6. 订阅主题:让消费者订阅感兴趣的Kafka主题。

  7. 消费消息:从订阅的主题中轮询消费消息,并处理接收到的消息。

  8. 关闭生产者和消费者:在程序结束时,关闭生产者和消费者,释放资源。

使用Kafka的Java项目可以实现高吞吐量、可靠性和实时处理的数据流处理。Kafka提供了丰富的API和工具,使得在Java项目中使用Kafka变得简单和灵活。通过将消息发送到Kafka主题并从主题中消费消息,你可以构建实时流处理应用程序、日志收集系统、事件驱动架构等。

需要注意的是,Kafka的配置和管理可能需要一定的学习和经验。在使用Kafka时,建议参考官方文档和示例代码,以确保正确配置和使用Kafka的各项功能。

在这里插入图片描述

相关文章:

从文字到使用,一文读懂Kafka服务使用

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…...

什么是https加密协议?

前言&#xff1a; HTTPS&#xff08;全称&#xff1a;Hypertext Transfer Protocol Secure&#xff09; 是一个安全通信通道&#xff0c;它基于HTTP开发用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换&#xff0c;简单来说它是HTTP的安全版&…...

0012Java程序设计-ssm医院预约挂号及排队叫号系统

文章目录 **摘** **要**目 录系统实现5.2后端功能模块5.2.1管理员功能模块5.2.2医生功能模块 开发环境 摘 要 网络的广泛应用给生活带来了十分的便利。所以把医院预约挂号及排队叫号管理与现在网络相结合&#xff0c;利用java技术建设医院预约挂号及排队叫号系统&#xff0c;实…...

PaddleClas学习3——使用PPLCNet模型对车辆朝向进行识别(c++)

使用PPLCNet模型对车辆朝向进行识别 1 准备环境2 准备模型2.1 模型导出2.2 修改配置文件3 编译3.1 使用CMake生成项目文件3.2 编译3.3 执行3.4 添加后处理程序3.4.1 postprocess.h3.4.2 postprocess.cpp3.4.3 在cls.h中添加函数声明3.4.4 在cls.cpp中添加函数定义3.4.5 在main.…...

学习记录---kubernetes中备份和恢复etcd

一、简介 ETCD是kubernetes的重要组成部分&#xff0c;它主要用于存储kubernetes的所有元数据&#xff0c;我们在kubernetes中的所有资源(node、pod、deployment、service等)&#xff0c;如果该组件出现问题&#xff0c;则可能会导致kubernetes无法使用、资源丢失等情况。因此…...

使用单例模式+观察者模式实现参数配置实时更新

使用vector存储观察者列表 #include <iostream> #include <vector> #include <functional> #include <algorithm>// 配置参数结构体 struct MyConfigStruct {int parameter1;std::string parameter2; };class Config { public:using Observer std::f…...

区块链实验室(28) - 拜占庭节点劫持区块链仿真

在以前的FISCO环境中仿真拜占庭节点攻击区块链网络。该环境共有100个节点&#xff0c;采用PBFT作为共识机制&#xff0c;节点编号分别为&#xff1a;Node0&#xff0c;Node&#xff0c;… &#xff0c;Node99。这100个节点的前2010区块完全相同&#xff0c;自区块2011开始分叉。…...

聊聊AsyncHttpClient的ChannelPool

序 本文主要研究一下AsyncHttpClient的ChannelPool ChannelPool org/asynchttpclient/channel/ChannelPool.java public interface ChannelPool {/*** Add a channel to the pool** param channel an I/O channel* param partitionKey a key used to retrieve the cac…...

[MySQL] MySQL复合查询(多表查询、子查询)

前面我们学习了MySQL简单的单表查询。但是我们发现&#xff0c;在很多情况下单表查询并不能很好的满足我们的查询需求。本篇文章会重点讲解MySQL中的多表查询、子查询和一些复杂查询。希望本篇文章会对你有所帮助。 文章目录 一、基本查询回顾 二、多表查询 2、1 笛卡尔积 2、2…...

[架构之路-256]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 软件系统不同层次的复用与软件系统向越来越复杂的方向聚合

目录 前言&#xff1a; 一、CPU寄存器级的复用&#xff1a;CPU寄存器 二、指令级复用&#xff1a;二进制指令 三、过程级复用&#xff1a;汇编语言 四、函数级复用&#xff1a;C语言 五、对象级复用&#xff1a;C, Java, Python 六、组件级复用 七、服务级复用 八、微…...

C++初学教程三

目录 一、运算符 一、自增自减运算符 二、位运算符 三、关系运算符...

雷达点云数据.pcd格式转.bin格式

雷达点云数据.pcd格式转.bin格式 注意&#xff0c;方法1原则上可行&#xff0c;但是本人没整好pypcd的环境 方法2是绝对可以的。 方法1 1 源码如下&#xff1a; def pcb2bin1(): # save as bin formatimport os# import pypcdfrom pypcd import pypcdimport numpy as np…...

Fiddler抓包测试

模拟弱网测试 操作&#xff1a;一、Rules - Customize Rules &#xff08;快捷键CtrlR&#xff09;弹出编辑器 二、接着CtrlF查找m_SimulateModem标志位 三、默认上传300ms&#xff0c;下载150ms 四、更改后&#xff0c;继续Rules - Performances - Simulate Modem Speeds勾上 …...

视频处理关键知识

1 引言 视频技术发展到现在已经有100多年的历史&#xff0c;虽然比照相技术历史时间短&#xff0c;但在过去很长一段时间之内都是最重要的媒体。由于互联网在新世纪的崛起&#xff0c;使得传统的媒体技术有了更好的发展平台&#xff0c;应运而生了新的多媒体技术。而多媒体技术…...

LeetCode435. Non-overlapping Intervals

文章目录 一、题目二、题解 一、题目 Given an array of intervals intervals where intervals[i] [starti, endi], return the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping. Example 1: Input: intervals [[1,2]…...

ffmpeg 实现多视频轨录制到同一个文件

引言 在视频录制中&#xff0c;有时会碰到这样一个需求&#xff0c;将不同摄像头的画面写入到一个视频文件&#xff0c;这个叫法很多&#xff0c;有的厂家叫合流模式&#xff0c;有的叫多画面多流模式。无论如何&#xff0c;它们的实质都是在一个视频文件上实现多路不同分辨率视…...

vue3中子组件调用父组件的方法

<script lang"ts" setup>前提 父组件&#xff1a; 子组件&#xff1a; const emit defineEmits([closeson]) 在子组件的方法中使用&#xff1a; emit(closeson)...

使用OkHttp上传本地图片及参数

下面以一个例子来讲解在项目中如何使用OKHttp来对本地图片做个最简单的上传功能&#xff0c;基本上无封装&#xff0c;只需要简单调用便可&#xff08;对于OKHttp的引入不再单独做介绍&#xff09;。 1&#xff1a;构建上传图片附带的参数&#xff08;params&#xff09; Map…...

无公网IP环境如何SSH远程连接Deepin操作系统

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统&#xff0c;专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…...

不会代码(零基础)学语音开发(语音控制板载双继电器)

继电器的用途可广了&#xff0c;这个语音控制用处也特别广。继电器&#xff0c;它实际上是一种“自动开关”&#xff0c;用小电流去控制大电流运作&#xff0c;在电路中起着自动调节、安全保护、转换电路等作用。 在日常生活中&#xff0c;你插入汽车钥匙&#xff0c;车辆可以…...

在imx6ull中加入ov5640模块

本来觉得是一件很简单的事情但是走了很多的弯路&#xff0c;记录一下调试过程。 先使用正点原子提供的出厂内核把摄像头影像调试出来&#xff0c;然后cat /dev/video1&#xff0c;看一下video1牵扯到哪些模块&#xff0c;可以看到需要ov5640_camera.ko和 mx6s_capture.ko这两个…...

Kafka中的auto-offset-reset配置

Kafka这个服务在启动时会依赖于Zookeeper&#xff0c;Kafka相关的部分数据也会存储在Zookeeper中。如果kafka或者Zookeeper中存在脏数据的话&#xff08;即错误数据&#xff09;&#xff0c;这个时候虽然生产者可以正常生产消息&#xff0c;但是消费者会出现无法正常消费消息的…...

TCP/IP_整理起因

先分享一个初级的问题&#xff1b;有个客户现场&#xff0c;终端设备使用客户网络更新很慢&#xff0c;使用手机热点更新速度符合预期&#xff1b;网络部署情况如下&#xff1a; 前期花费了很大的精力进行问题排查对比&#xff0c;怀疑是客户网络问题&#xff08;其他的客户现…...

CG-0A 电子水尺水导电测量原理应用于道路积水监测

CG-0A 电子水尺水导电测量原理应用于道路积水监测产品概述 本产品是一种采用微处理器芯片为控制器&#xff0c;内置通讯电路的数字式水位传感器&#xff0c;具备高的可靠性及抗干扰性能。适用于江、河、湖、水库及蓄水池、水渠等处的水位测量使用。 本产品采用了生产工艺技术…...

openEuler JDK21 部署 Zookeeper 集群

zookeeper-jdk21 操作系统&#xff1a;openEuler JDK&#xff1a;21 主机名IP地址spark01192.168.171.101spark02192.168.171.102spark03192.168.171.103 安装 1. 升级内核和软件 yum -y update2. 安装常用软件 yum -y install gcc gcc-c autoconf automake cmake make \zl…...

前端——html拖拽原理

文章目录 ⭐前言⭐draggable属性&#x1f496; api&#x1f496; 单向拖动示例&#x1f496; 双向拖动示例 ⭐总结⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于 前端——html拖拽原理。 vue3系列相关文章&#xff1a; vue3 fastapi 实现选择目录所有文…...

JVM 执行引擎篇

机器码、指令、汇编语言 机器码 各种用二进制编码方式表示的指令&#xff0c;叫做机器指令码。开始&#xff0c;人们就用它采编写程序&#xff0c;这就是机器语言。机器语言虽然能够被计算机理解和接受&#xff0c;但和人们的语言差别太大&#xff0c;不易被人们理解和记忆&a…...

js中数组对象去重的方法

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 最近工作中需要用到数组对象去重的方法&#xff0c;我是怎么想也没想出来&#xff0c;今天稍微研究了一下&#xff0c;总算找到了2种方法。分享一下&…...

【送书活动四期】被GitHub 要求强制开启 2FA 双重身份验证,我该怎么办?

记得是因为fork了OpenZeppelin/openzeppelin-contracts的项目&#xff0c;之后就被GitHub 要求强制开启 2FA 双重身份验证了&#xff0c;一拖再拖&#xff0c;再过几天帐户操作将受到限制了&#xff0c;只能去搞一下了 目录 2FA是什么为什么要开启 2FA 验证GitHub 欲在整个平台…...

GO设计模式——13、享元模式(结构型)

目录 享元模式&#xff08;Flyweight Pattern&#xff09; 享元模式的核心角色&#xff1a; 优缺点 使用场景 注意事项 代码实现 享元模式&#xff08;Flyweight Pattern&#xff09; 享元模式&#xff08;Flyweight Pattern&#xff09;它通过共享对象来减少内存使用和提…...

Linux 网络协议

1 网络基础 1.1 网络概念 网络是一组计算机或者网络设备通过有形的线缆或者无形的媒介如无线&#xff0c;连接起来&#xff0c;按照一定的规则&#xff0c;进行通讯的集合( 缺一不可 )。 5G的来临以及IPv6的不断普及&#xff0c;能够进行联网的设备将会是越来越多&#xff08…...

【C语言】7-32 刮刮彩票 分数 20

7-32 刮刮彩票 分数 20 全屏浏览题目 切换布局 作者 DAI, Longao 单位 杭州百腾教育科技有限公司 “刮刮彩票”是一款网络游戏里面的一个小游戏。如图所示&#xff1a; 每次游戏玩家会拿到一张彩票&#xff0c;上面会有 9 个数字&#xff0c;分别为数字 1 到数字 9&#xf…...

交叉验证以及scikit-learn实现

交叉验证 交叉验证既可以解决数据集的数据量不够大问题&#xff0c;也可以解决参数调优的问题。 主要有三种方式&#xff1a; 简单交叉验证&#xff08;HoldOut检验&#xff09;、k折交叉验证&#xff08;k-fold交叉验证&#xff09;、自助法。 本文仅针对k折交叉验证做详细解…...

css实现头部占一定高度,内容区占剩余高度可滚动

上下布局&#xff1a; <div class"container"><header class"header">头部内容</header><div class"content">内容区域</div> </div>.container {display: flex;flex-direction: column;height: 100vh; /*…...

redis主从复制模式和哨兵机制

目录 第一章、主从复制模式1.1&#xff09;Redis 主从复制模式介绍1.2&#xff09;Redis 主从复制实现、 第二章、哨兵机制2.1&#xff09;容灾处理之哨兵2.2&#xff09;Sentinel 配置 第一章、主从复制模式 1.1&#xff09;Redis 主从复制模式介绍 ①单点故障&#xff1a;数…...

WebStorm:Mac/Win上强大的JavaScript开发工具

WebStorm是JetBrains公司开发的针对Mac和Windows系统的JavaScript开发工具。它为开发者提供了一站式的代码编辑、调试、测试和版本控制等功能&#xff0c;帮助你更高效地进行Web开发。新版本的WebStorm 2023在性能和用户体验方面都做出了重大改进&#xff0c;让你的JavaScript开…...

传世SUN引擎如何安装

大家在搭建的时候一定要理清思路一步一步来&#xff0c;否则一步错步步错。下面跟大家说一下搭建的顺序以及细节。 第一步&#xff1a;首先下载DBC2000进行安装&#xff0c;并按照里面的说明设置好。1、请把压缩包释放到D:\QMirServer目录下。2、在控制面板里找到BDC Administ…...

vue 生命周期

什么是生命周期&#xff0c;有什么作用 定义&#xff1a;vue 实例从创建到销毁的过程&#xff0c;在某个特定的位置会触发一个回调函数 作用&#xff1a;供开发者在生命周期的特定阶段执行相关的操作 生命周期分别有几个阶段 有四个阶段&#xff0c;每个阶段有两个钩子&…...

多开工具对应用程序性能的影响与优化

多开工具对应用程序性能的影响与优化 摘要&#xff1a; 随着计算机技术的不断发展&#xff0c;多开工具逐渐成为一种常见的软件应用。然而&#xff0c;使用多开工具可能会对应用程序的性能产生一定的影响。本文将探讨多开工具对应用程序性能的影响&#xff0c;并提供一些优化方…...

G1 GC基本逻辑

1 MixedGC基本过程 在G1GC中&#xff0c;有两种主要的垃圾回收过程&#xff1a;Young GC和Mixed GC。这两者都是为了回收堆内存中的垃圾对象&#xff0c;但是他们关注的区域和工作方式有所不同。 Young GC&#xff1a; Young GC主要负责回收Young Generation&#xff08;包括…...

nvidia安装出现7-zip crc error解决办法

解决办法&#xff1a;下载network版本&#xff0c;重新安装。&#xff08;选择自己需要的版本&#xff09; 网址&#xff1a;CUDA Toolkit 12.3 Update 1 Downloads | NVIDIA Developer 分析原因&#xff1a;local版本的安装包可能在下载过程中出现损坏。 本人尝试过全网说的…...

(C语言实现)高精度除法 (洛谷 P2005 A/B Problem II)

前言 本期我们分享用C语言实现高精度除法&#xff0c;可通过该题测试点我点我&#xff0c;洛谷 p2005。 那么话不多说我们开始吧。 讲解 大家还记不记得小学的时候我们是怎么做除法的&#xff1f;我们以1115为例。 我们的高精度除法也将采用这个思路进行&#xff0c;分别用两…...

【AI】Windows环境安装GroundingDINO

Grounding DINO简单来说&#xff0c;它可以根据文字描述检测指定目标。此外&#xff0c;当Grounding DINO与stable diffusion结合&#xff0c;便可以实现更神奇的功能–自动P图。在专业领域中&#xff0c;GroundingDINO可以用来进行遥感影像解译&#xff0c;可以减少人工工作量…...

【Node.js】基础梳理 6 - MongoDB

写在最前&#xff1a;跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识&#xff0c;需要格外注重实战和官方技术文档&#xff0c;文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…...

.NET8 依赖注入

依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是一种设计模式&#xff0c;用于解耦组件&#xff08;服务&#xff09;之间的依赖关系。它通过将依赖关系的创建和管理交给外部容器来实现&#xff0c;而不是在组件&#xff08;服务&#xff09;内部直…...

Ubuntu18安装(重启黑屏问题)

1. F10 进入bios&#xff0c;选择u盘里的ubuntu镜像 2.进入使用ubuntu&#xff0c;下载 3.重启&#xff0c;esc 4.ubuntu 安e进入 5. nomodeset&#xff08;&#xff09; F10 保存启动 6. 7.没有网 手机usb提供网络 下载有限网卡驱动...

[PyTorch][chapter 4][李宏毅深度学习][Gradient Descent]

前言&#xff1a; 目录: 1: 梯度下降原理 2: 常见问题 3&#xff1a; 梯度更新方案 4&#xff1a; 梯度下降限制 一 梯度下降原理 机器学习的目标找到最优的参数,使得Loss 最小 为什么顺着梯度方向loss 就能下降了。主要原理是泰勒公式。 假设损失函数为 忽略二阶导数, 当 …...

利用proteus实现串口助手和arduino Mega 2560的串口通信

本例用到的proteus版本为8.13&#xff0c;ardunio IDE版本为2.2.1&#xff0c;虚拟串口vspd版本为7.2&#xff0c;串口助手SSCOM V5.13.1。软件的下载安装有很多教程&#xff0c;大家可以自行搜索&#xff0c;本文只介绍如何利用这4种软件在proteus中实现arduino Mega 2560的串…...

Web APIs—介绍、获取DOM对象、操作元素内容、综合案例—年会抽奖案例、操作元素属性、间歇函数、综合案例—轮播图定时器版

版本说明 当前版本号[20231204]。 版本修改说明20231204初版 目录 文章目录 版本说明目录复习变量声明 Web APIs - 第1天笔记介绍概念DOM 树DOM 节点document 获取DOM对象案例— 控制台依次输出3个li的DOM对象 操作元素内容综合案例——年会抽奖案例操作元素属性常用属性修改…...

题目:分糖果(蓝桥OJ 2928)

题目描述&#xff1a; 解题思路&#xff1a; 本题采用贪心思想 图解 题解&#xff1a; #include<bits/stdc.h> using namespace std;const int N 1e6 9; char s[N];//写字符串数组的一种方法,像数组一样***int main() {int n, x;cin >> n >> x;for(int …...