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

Kafka

目录

一、什么是Kafka

核心组件

特性

使用场景

安装与配置

二、Kafka的使用

安装 ZooKeeper 和 Kafka

安装 ZooKeeper

安装 Kafka

配置 ZooKeeper 和 Kafka

配置 ZooKeeper

配置 Kafka

启动 ZooKeeper 和 Kafka

创建 Topic

编写生产者代码

编写消费者代码

运行生产者和消费者

使用 Kafka 命令行工具

三、部署Kafka一定需要部署ZooKeeper ?

KRaft 模式的优点

如何启用 KRaft 模式

注意事项

总结


一、什么是Kafka

Apache Kafka 是一个分布式流处理平台,它被设计用来处理大量的实时数据流。Kafka 由 LinkedIn 开发,并于 2011 年成为 Apache Software Foundation 的一个开源项目。它能够高效地处理大规模的消息传递,支持高吞吐量、低延迟的消息传输,同时提供了强大的持久化和容错能力。

以下是 Kafka 的一些关键概念和特性

核心组件

  1. Topic(主题):

    主题是 Kafka 中消息的分类或馈送名称。生产者将消息发布到特定的主题中,消费者订阅这些主题来消费消息。
  2. Partition(分区):

    每个主题可以分为多个分区,每个分区是一个有序的、不可变的消息序列。分区允许 Kafka 在不同的节点上分布数据,从而实现水平扩展。
  3. Broker(代理/服务器):

    Kafka 集群中的每台服务器被称为一个 broker。一个集群可以包含多个 broker,它们共同管理所有主题的数据和请求。
  4. Producer(生产者):

    生产者是向 Kafka 发布消息的应用程序。生产者可以选择将消息发送到特定主题的哪个分区。
  5. Consumer(消费者):

    消费者是从 Kafka 订阅消息的应用程序。消费者可以组成消费者组,这样每个消息只会被组内的一个消费者消费。
  6. Consumer Group(消费者组):

    一个或多个消费者可以组成一个消费者组,通过组 ID 来标识。Kafka 确保每个分区的消息只会被同一个消费者组内的一个消费者消费,但不同组的消费者可以消费相同的分区。
  7. Offset(偏移量):

    偏移量是消费者在分区中位置的一个元数据。它用于跟踪消费者已经消费到了哪条消息。Kafka 会为每个消费者组维护一个偏移量。
  8. Replication(副本):

    分区可以有多个副本,以确保即使某个 broker 失败,数据也不会丢失。副本分布在不同的 broker 上,提供冗余和故障转移。

特性

  • 高吞吐量:Kafka 能够处理大量消息,适用于日志聚合、监控数据处理等场景。

  • 持久性:消息被持久化到磁盘,即使系统重启后也能保证消息不丢失。

  • 可扩展性:Kafka 支持水平扩展,可以通过添加更多的 broker 来增加系统的容量。

  • 容错性:通过副本机制,Kafka 提供了对 broker 故障的容忍度。

  • 实时处理:Kafka 可以与流处理框架如 Apache Spark Streaming, Apache Flink, 和 Kafka Streams 结合使用,进行实时数据分析。

使用场景

  • 消息队列:作为传统消息中间件的替代方案,Kafka 可以用作高性能的消息队列。

  • 日志收集:Kafka 可以收集来自不同来源的日志数据,并将其分发给各种服务进行处理。

  • 流处理:Kafka 适合用于构建实时数据管道和流处理应用。

  • 事件溯源:Kafka 可以存储所有的变更事件,这对于需要完整历史记录的应用非常有用。

  • 监控和指标:Kafka 可以收集和分发监控数据和性能指标。

安装与配置

要安装和配置 Kafka,您通常需要先安装 ZooKeeper(用于协调 Kafka 集群),然后下载并解压 Kafka 的二进制文件。接下来,您可以根据官方文档中的说明启动 ZooKeeper 和 Kafka 服务,并创建您的第一个主题。

二、Kafka的使用

  1. 安装 ZooKeeper 和 Kafka

安装 ZooKeeper

Kafka 依赖于 ZooKeeper 来管理集群元数据。您可以从 ZooKeeper 官方网站下载最新版本的 ZooKeeper,并按照官方文档进行安装。

安装 Kafka

接下来,从 Apache Kafka 官方网站下载 Kafka 的二进制文件。解压后,您会得到类似如下的目录结构:

.
├── bin
├── config
├── libs
└── ...

bin 目录包含了启动和管理 Kafka 服务的脚本,而 config 目录则包含配置文件。

配置 ZooKeeper 和 Kafka

配置 ZooKeeper

config/zookeeper.properties 文件中,确保指定了正确的 dataDir(存储快照的位置)和 clientPort(客户端连接端口,默认是 2181)。如果需要自定义其他设置,请参阅 ZooKeeper 文档。

配置 Kafka

config/server.properties 文件中,修改以下关键配置项:

  • broker.id:每个 broker 在集群中的唯一标识符。

  • listeners:指定 broker 监听的地址和端口(例如 PLAINTEXT://:9092)。

  • log.dirs:Kafka 日志文件的存储位置。

  • zookeeper.connect:指向您的 ZooKeeper 实例(例如 localhost:2181)。

启动 ZooKeeper 和 Kafka

在 Kafka 解压后的根目录下,打开两个终端窗口或命令行界面。

启动 ZooKeeper:

bin/zookeeper-server-start.sh config/zookeeper.properties

启动 Kafka:

bin/kafka-server-start.sh config/server.properties

创建 Topic

创建一个名为 test-topic 的主题,它有 3 个分区和 1 个副本因子:

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

编写生产者代码

创建一个 Maven 项目,并在 pom.xml 中添加 Kafka 依赖:

<dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.4.0</version> <!-- 请根据实际情况选择版本 --></dependency>
</dependencies>

然后编写生产者代码,如下所示:

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.clients.producer.Callback;
import org.apache.kafka.clients.producer.ProducerConfig;
import java.util.Properties;public class KafkaProducerExample {public static void main(String[] args) {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");try (KafkaProducer<String, String> producer = new KafkaProducer<>(props)) {for (int i = 0; i < 10; i++) {String key = "key-" + i;String value = "value-" + i;ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", key, value);producer.send(record, (metadata, exception) -> {if (exception == null) {System.out.printf("Message sent to topic %s, partition %d, offset %d%n",metadata.topic(), metadata.partition(), metadata.offset());} else {exception.printStackTrace();}});}}}
}

编写消费者代码

同样,在同一个 Maven 项目中,编写消费者代码:

import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import java.time.Duration;
import java.util.Collections;
import java.util.Properties;public class KafkaConsumerExample {public static void main(String[] args) {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");try (KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props)) {consumer.subscribe(Collections.singletonList("test-topic"));while (true) {ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));for (ConsumerRecord<String, String> record : records) {System.out.printf("Received message: key = %s, value = %s, partition = %d, offset = %d%n",record.key(), record.value(), record.partition(), record.offset());}}}}
}

运行生产者和消费者

先启动消费者,然后运行生产者。您应该会在消费者的控制台看到由生产者发送的消息。

使用 Kafka 命令行工具

Kafka 提供了一些命令行工具来帮助管理和监控 Kafka 集群。例如,您可以使用以下命令查看主题详情、列出所有主题、删除主题等:

  • 列出所有主题:

bin/kafka-topics.sh --list --bootstrap-server localhost:9092
  • 描述特定主题:

bin/kafka-topics.sh --describe --topic test-topic --bootstrap-server localhost:9092
  • 删除主题:

bin/kafka-topics.sh --delete --topic test-topic --bootstrap-server localhost:9092
  • 使用控制台生产者和消费者:

    • 控制台生产者:

bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
  •  控制台消费者:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning

三、部署Kafka一定需要部署ZooKeeper ?

在传统的 Kafka 部署中,ZooKeeper 是一个必需的组件,因为它负责管理 Kafka 集群的元数据、协调 broker 之间的通信以及处理故障转移。具体来说,ZooKeeper 用于:

  • 存储集群配置:包括主题、分区和副本的信息。

  • 维护 broker 状态:跟踪哪些 broker 是活跃的,哪些已经宕机。

  • 消费者组管理:管理消费者组的成员关系和偏移量提交。

  • 选举 leader:当分区的 leader 副本失效时,ZooKeeper 协助选举新的 leader。

然而,随着 Kafka 的发展,从版本 Kafka 3.0 开始引入了 KRaft 模式(Kafka Raft Metadata),这是一种不依赖于 ZooKeeper 的新元数据管理机制。KRaft 使用 Raft 共识算法来实现元数据的分布式管理和一致性,从而允许 Kafka 在没有外部依赖的情况下独立运行。

KRaft 模式的优点

  1. 简化部署:不再需要单独部署和管理 ZooKeeper 集群,减少了运维复杂度。

  2. 更好的性能:KRaft 模式下的 Kafka 可以提供更高效的元数据管理和更快的故障恢复。

  3. 更高的可用性:通过内置的 Raft 共识算法,Kafka 可以更快速地处理 broker 故障并选举新的 leader。

  4. 一致性和可靠性:KRaft 模式确保了元数据的一致性和持久性,避免了传统 ZooKeeper 模式下可能出现的一些问题。

如何启用 KRaft 模式

要使用 KRaft 模式,您需要执行以下步骤:

  1. 下载支持 KRaft 模式的 Kafka 版本:确保您使用的是 Kafka 3.0 或更高版本。

  2. 初始化 KRaft 模式:

    1. 使用 kafka-storage.sh 工具初始化元数据日志。例如:

    2. bash

    3. 深色版本

      bin/kafka-storage.sh format -t <cluster.id> -c config/kraft/server.properties
    4. 这里的 <cluster.id> 是一个唯一的集群 ID,可以通过 bin/kafka-storage.sh random-uuid 生成。

  3. 修改配置文件:

    1. config/kraft/server.properties 中,设置 process.roles=broker,controllercontroller.quorum.voters=<controller endpoints>

    2. 确保 listenersadvertised.listeners 配置正确。

  4. 启动 Kafka:

    1. 使用 bin/kafka-server-start.sh 启动 Kafka,但这次是基于 KRaft 模式:

    2. bash

    3. 深色版本

      bin/kafka-server-start.sh config/kraft/server.properties

注意事项

  • 迁移现有集群:如果您已经有使用 ZooKeeper 的 Kafka 集群,并希望迁移到 KRaft 模式,Kafka 提供了迁移工具和支持。您可以参考官方文档中的迁移指南。

  • 兼容性:虽然 KRaft 模式提供了许多优势,但在某些场景下,特别是对于已有系统的迁移,可能仍然需要评估是否适合立即切换到 KRaft 模式。

总结

虽然传统的 Kafka 部署确实需要 ZooKeeper,但自从 Kafka 3.0 引入 KRaft 模式后,您现在可以选择不使用 ZooKeeper 来部署 Kafka。KRaft 模式不仅简化了部署和管理,还带来了性能和可用性的提升。如果您正在规划新的 Kafka 部署,或者考虑升级现有集群,强烈建议考虑 KRaft 模式。

相关文章:

Kafka

目录 一、什么是Kafka 核心组件 特性 使用场景 安装与配置 二、Kafka的使用 安装 ZooKeeper 和 Kafka 安装 ZooKeeper 安装 Kafka 配置 ZooKeeper 和 Kafka 配置 ZooKeeper 配置 Kafka 启动 ZooKeeper 和 Kafka 创建 Topic 编写生产者代码 编写消费者代码 运行…...

SAP SD学习笔记22 - VF04,VF06,VF24 等一括请求处理

上一篇学习了请求传票&#xff08;发票&#xff09;的拷贝管理。 SAP SD学习笔记21 - 请求传票的数据流&#xff08;拷贝管理&#xff09;-CSDN博客 本章继续学习 SAP SD的内容。 目录 1&#xff0c;VF04 - 一括请求处理&#xff08;开票到期清单&#xff09; 2&#xff0c…...

JR-RLAA系20路模拟音频多功能编码器

JR-RLAA系20路模拟音频多功能编码器 产品特色 (1)工业级19英寸标准设备&#xff0c;内置双电源 (2)内嵌Web Server&#xff0c;支持远程Web页面登陆后的统一配置操作 (3)支持20路音频输入 (4)支持Dolby Digital(AC-3) &#xff0c;MPEG-2&#xff0c;AAC-LC/HE-AAC&#x…...

数据结构复习 (二叉查找树,高度平衡树AVL)

1.二叉查找树: 为了更好的实现动态的查找(可以插入/删除),并且不超过logn的时间下达成目的 定义: 二叉查找树&#xff08;亦称二叉搜索树、二叉排序树&#xff09;是一棵二叉树&#xff0c;其各结点关键词互异&#xff0c;且中根序列按其关键词递增排列。 等价描述: 二叉查找…...

深入浅出梯度下降与反向传播

文章目录 1. 前言2. 基本概念2.1 一元函数的导数2.2 偏导数2.3 方向导数2.4 梯度2.5 均方误差 3. 梯度下降3.1 梯度下降的公式3.2 梯度下降的类型&#xff08;优化器&#xff09; 4. 反向传播4.1 反向传播的基本步骤4.2 反向传播的数学推导 5. 实战5.1 手动求导5.2 自动求导5.3…...

PLC(01)

一.职业规划 电路----------------->电工------------------>电气-------------------plc---------------------DCS--------------------> 机器人 二.交流电直流电的概念 1.交流电AC alternating current 大小方向随时间发生周期性变化 2.直流电 Direct current…...

如何通过本地部署的DIFY辅助学习算法(PS可以辅助帮你学习任何想学习的资料)

如何通过本地部署的DIFY辅助学习算法(PS可以辅助帮你学习任何想学习的资料 一 提升知识库的大小容量1.1 调大知识库的基础配置修改.env文件1.2 通过docker compose 重启加载最新配置1.3 重新上传知识库 二 搭建算法知识库的学习助手2.1 text embedding 模型对比2.1.1 如何选择合…...

深入探讨服务器虚拟化:架构、技术与应用

1. 引言 在现代IT基础设施中&#xff0c;服务器虚拟化已成为一种不可或缺的技术。它不仅提高了资源利用率&#xff0c;还增强了系统的灵活性和可管理性。随着企业对高效、灵活和可扩展IT环境的需求不断增加&#xff0c;服务器虚拟化技术的应用愈发广泛。本文将深入探讨服务器虚…...

C++笔记之尾后迭代器

C笔记之尾后迭代器 code review! 参考笔记 1.C笔记之尾后迭代器 2.C笔记之迭代器失效问题处理 在C中&#xff0c;尾后迭代器&#xff08;通常称为 past-the-end iterator&#xff09;是指指向容器中最后一个元素之后的位置的迭代器。它并不指向任何有效的元素&#xff0c;而是…...

2024年总结【第五年了】

2024年总结 北国绕院扫雪&#xff0c;南方围炉烹茶&#xff0c;且饮一杯无? 执笔温暖不曾起舞日子里的点点滴滴&#xff0c;誊写一段回忆&#xff0c;还以光阴一段副本。 那么你要听一支新故事吗&#xff1f;第五年总结的片碎。 衣单天寒&#xff0c;走趟流星孤骑&#xf…...

EasyExcel(环境搭建以及常用写入操作)

文章目录 EasyExcel环境搭建1.创建模块 easyexcel-demo2.引入依赖3.启动类创建 EasyExcel写1.最简单的写入1.模板2.方法3.结果 Write01.xlsx 2.指定字段不写入Excel1.模板2.方法3.结果 Write02.xlsx 3.指定字段写入excel1.模板2.方法3.结果 Write03.xlsx 4.按照index顺序写入ex…...

JVM类加载器

什么是类加载器 类加载器&#xff08;ClassLoader&#xff09;是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术。 类加载器只参与加载过程中的字节码获取并加载到内存这一部分 类加载器的分类 类加载器分为两类&#xff0c;一类是Java代码中实现的&#xff0…...

druid连接池参数配置

最近发现生产环境经常有数据库连接超时的问题&#xff0c;排查发现是druid连接池参数设置不合理导致 总结问题如下&#xff1a; 为了防止僵尸连接&#xff0c;k8s ipvs做了连接超时限制&#xff0c;如果TCP连接闲置超过900s(15分钟)&#xff0c;客户端再尝试通过这个连接去发起…...

【机器学习】Kaggle实战信用卡反欺诈预测(场景解析、数据预处理、特征工程、模型训练、模型评估与优化)

构建信用卡反欺诈预测模型 建模思路 本项目需解决的问题 本项目通过利用信用卡的历史交易数据&#xff0c;进行机器学习&#xff0c;构建信用卡反欺诈预测模型&#xff0c;提前发现客户信用卡被盗刷的事件。 项目背景 数据集包含由欧洲持卡人于2013年9月使用信用卡进行交的…...

Linux(Ubuntu)下ESP-IDF下载与安装完整流程(2)

接前一篇文章:Linux(Ubuntu)下ESP-IDF下载与安装完整流程(1) 本文主要看参考官网说明,如下: 快速入门 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 Linux 和 macOS 平台工具链的标准设置 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 一、安装准备 1. Linux用...

SpringBoot3 快速启动框架

文章目录 1 SpringBoot3 介绍 1.1 SpringBoot3 简介1.2 快速入门1.3 入门总结 2 SpringBoot3 配置文件 2.1 统一配置管理概述2.2 属性配置文件使用2.3 YAML配置文件使用2.4 批量配置文件注入2.5 多环境配置和使用 3 SpringBoot 整合 springMVC 3.1 实现过程3.2 web相关配置3.3…...

Enum枚举类,静态常量类,静态类的区别

Enum枚举类&#xff0c;静态常量类&#xff0c;静态类的区别 Enum枚举类静态常量类静态类Enum枚举类&#xff0c;静态常量类&#xff0c;静态类的区别 Enum枚举类 Enum枚举类的结构组成和用法使用可以查阅 Enum枚举类与静态变量和静态数组的区别 静态常量类 public class St…...

解锁专利世界的钥匙 ——famiwei 网

在知识经济的时代,专利作为创新成果的重要体现,无论是对于企业、科研人员乃至整个社会的发展都具有举足轻重的意义。而在众多的专利网站中,famiwei 网为用户提供了一个全面、精准且高效的专利信息交流与服务的舞台。 一、卓越功能,开启专利探索之门 famiwei 网拥有一套强大的专…...

金融租赁系统的创新与发展推动行业效率提升

金融租赁系统的技术升级与创新 在当今快速发展的金融市场中&#xff0c;金融租赁系统的技术升级与创新充满了无限可能。想象一下&#xff0c;传统的租赁方式就像一位沉闷的老师&#xff0c;而新兴技术就如同一位活泼的学生&#xff0c;不断追求新鲜事物。通过自动化、人工智能…...

SQL-Server链接服务器访问Oracle数据

SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一&#xff1a;使用 NetFx3.cab 文件 下载 NetFx3.cab 文件&#xff0c;并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符&#xff0c;输入以下命令并回车&#xff1a; …...

Sonic:开源Go语言开发的高性能博客平台

Sonic&#xff1a;一个用Go语言开发的高性能博客平台 简介 Sonic&#xff0c;一个以其速度如声速般快速而命名的博客平台&#xff0c;是一个用Go语言开发的高性能博客系统。正如其名字所暗示的&#xff0c;Sonic旨在提供一个简单而强大的博客解决方案。这个项目受到了Halo项目…...

【react】常见的性能优化 1

目录 常见的 React 性能优化手段 1. 使用 useMemo 和 useCallback 缓存数据和函数 2. 使用 React.memo 缓存组件 3. 组件懒加载 4. 合理使用 key 5. 在组件销毁时清除定时器/事件 6. 使用 Suspense 和 Lazy 拆分组件 7. 使用 Fragment 避免额外标记 8. 避免使用内联函…...

SpringCloud源码-openFeign

LoadBalancer默认只有nacos服务发现器 openFeign与springcloud loadbalancer的结合点...

QLabel添加点击处理

在QLabel中添加点击事件有三种方式&#xff0c;分别是 使用LinkActivated信号连接槽函数&#xff08;有缺限&#xff09;注册事件分发器eventFilter创建类重写鼠标事件 1. 使用LinkActivated信号 QLabel类中有LinkActivated信号&#xff0c;是当标签中的链接被点击的时候触发…...

Markdown表格的使用

Markdown表格的使用 前言语法详解定义表格设定表格列内容的对齐方式 使用场景及实例小结其他文章快来试试吧 Markdown表格的使用&#x1f448;点击这里也可查看 前言 表格通常作为一种布局的形式&#xff0c;用于结构化的数据展示。 Markdown表格包含三个部分&#xff1a;表头…...

时间序列预测算法介绍

时间序列预测是根据时间序列数据的历史变化规律&#xff0c;对未来数据进行预测的方法。在给定的代码中&#xff0c;使用的是自回归&#xff08;AR&#xff09;模型中的AR(4)模型来预测光伏功率。以下将详细解释这种算法&#xff1a; 1. 自回归模型&#xff08;AR模型&#xf…...

加密流量TLS1.2 和TLS1.3的握手区别

加密流量TLS1.2 和TLS1.3的握手区别 TLS1.2 握手均是明文 1&#xff09;Client Hello 2&#xff09;Server Hello 3&#xff09;Certificate TLS1.3 握手中Client Hello是明文&#xff0c;而Server Hello中Extensions以及后面的握手信息不可见 1&#xff09;Client Hello…...

MySQL数据库——主从复制

本文详细介绍 MySQL的主从复制&#xff0c;从原理到配置再到同步过程。 文章目录 简介核心组件主从复制的原理作用主从复制的线程模型主从复制的模式形式复制的方式设计复制机制主从复制的配置步骤优化和改进总结 简介 MySQL 主从复制&#xff08;Replication&#xff09;是一…...

详细说明嵌入式linux中bootcmd与bootargs差异

bootcmd 和 bootargs 是在嵌入式系统开发&#xff0c;特别是基于U-Boot&#xff08;一个广泛应用的开源引导加载程序&#xff09;环境中常见的两个重要参数&#xff0c;它们的区别如下&#xff1a; 功能用途 bootcmd&#xff1a; 定义&#xff1a;bootcmd 是U-Boot中的一个环…...

【UE5】UnrealEngine源码构建2:windows构建unreal engine 5.3.2

参考大神知乎的文章:UE5 小白也能看懂的源码编译指南 据说会耗费400G的空间。 代码本身并不大,可能是依赖特别多,毕竟看起来UE啥都能干,核心还是c++的, 【UE5】UnrealEngine源码构建1:tag为5.3.2源码clone 本着好奇+ 学习的态度,想着也许有机会能更为深入的熟悉UE的机制…...

【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测

目录 论文信息 论文创新点 1.自适应轻量通道分割和洗牌&#xff08;ALSS&#xff09;模块 2.轻量坐标注意力&#xff08;LCA&#xff09;模块 3.单通道聚焦模块 4.FineSIOU损失函数 摘要 架构设计 轻量高效网络架构 - ALSS模块 LCA模块 单通道聚焦模块 损失函数优…...

时间序列预测算法---LSTM

文章目录 一、前言1.1、深度学习时间序列一般是几维数据&#xff1f;每个维度的名字是什么&#xff1f;通常代表什么含义&#xff1f;1.2、为什么机器学习/深度学习算法无法处理时间序列数据?1.3、RNN(循环神经网络)处理时间序列数据的思路&#xff1f;1.4、RNN存在哪些问题?…...

【QT】:QT图形化界面概述

Qt背景介绍 1.1 什么是Qt Qt 是⼀个跨平台的C图形⽤⼾界⾯应⽤程序框架。它为应⽤程序开发者提供了建⽴艺术级图形 界⾯所需的所有功能。它是完全⾯向对象的&#xff0c;很容易扩展。Qt为开发者提供了⼀种基于组件的开发模 式&#xff0c;开发者可以通过简单的拖拽和组合来实现…...

[论文笔记]Representation Learning with Contrastive Predictive Coding

引言 今天带来论文 Representation Learning with Contrastive Predictive Coding的笔记。 提出了一种通用的无监督学习方法从高维数据中提取有用表示&#xff0c;称为对比预测编码(Contrastive Predictive Coding,CPC)。使用了一种概率对比损失&#xff0c; 通过使用负采样使…...

Redis相关

Redis相关 什么是redis?redis可以干什么? Redis是一个c语言编写的nosql数据库(不仅仅是sql,泛指非关系型数据库,一般把非关系型数据库称为nosql数据库),数据在内存中以键值对的形式存储,读写速度快,提供数据持久化方式. 常常被广泛应用到做缓存 Redis使用场景 1.缓存 2…...

【优选算法】Binary-Blade:二分查找的算法刃(上)

文章目录 1.概念解析2.二分查找的简单模版3.二分查找的进阶模版4.x的平方根5.搜索插入位置希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 本篇是优选算法之二分查找算法&#xff0c;该算法是一种高效的在有序数组中查找特定元素的搜索算法 1.概…...

Docker--Docker Network(网络)

Docker Network&#xff08;网络&#xff09;是Docker容器之间和容器与外部网络之间的通信和连接的一种机制。以下是对Docker Network的详细解释&#xff1a; 一、Docker网络的重要性 Docker容器网络是为应用程序所创造的虚拟环境的一部分&#xff0c;它能让应用从宿主机操作…...

转化率是衡量网页设计的一个重要指标,请问如何做?

AARRR是互联网产品运营中一个非常重要的模型&#xff0c;这些模型的每一个步骤都涉及到转化率问题&#xff0c;那么AARRR是是什么呢&#xff1f;转化漏斗是什么吗&#xff1f;转化率为什么重要&#xff1f;设计师在做网页设计的时候&#xff0c;如何提升转化率呢&#xff1f;本…...

运维工具之syncthing工具的安装和使用

一、syncthing工具简介 Syncthing是一款开源的文件同步工具&#xff0c;采用Go语言编写。它支持在多个操作系统上运行&#xff0c;包括Windows、macOS和Linux&#xff0c;以及BSD、Solaris和Android等。以下是对这款软件的详细介绍&#xff0c;主要功能&#xff1a; 实时文件同…...

国产数据库-崖山使用介绍

本文档基于崖山数据库23.3 个人版本&#xff0c;单机&#xff08;主备&#xff09;部署模式的情况下的使用介绍。 数据库实例状态&#xff1a; NOMOUNT&#xff1a;仅读取参数文件&#xff0c;不加载数据库 MOUNT&#xff1a;读取控制文件&#xff0c;加载数据库&#xff…...

primevue的<Menu>组件

1.使用场景 2.代码 1.给你的menu组件起个引用名 2.<Menu>组件需要一个MenuItem[] 3.你要知道MenuItem[ ]的特殊的数据格式&#xff0c;就像TreeNode[ ]一样&#xff0c;数据格式不对是不渲染的。。。。 常用的属性就这几种&#xff0c;js语言和java不一样&#xff0c;J…...

【玩转23种Java设计模式】行为型模式篇:备忘录模式

软件设计模式&#xff08;Design pattern&#xff09;&#xff0c;又称设计模式&#xff0c;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接&…...

便捷饭店点餐小程序的设计与实现ssm+论文源码调试讲解

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的&#xff0c;在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值&#xff0c;吸引更多的访问者访问系统&#xff0c;以及让来访用户可以花费更多时间停留在系统上&#xff0c;则表明该系统设计得比较专…...

微信小程序Uniapp

使用命令行创建项目&#xff08;vuets&#xff09; npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project然后用HBX打开项目 再安装依赖 npm i 再运行开发版本&#xff0c;生成dist目录 pnpm dev:mp-weixin 注意要设置APPid 再用微信小程序打开...

Android GameActivity(NativeActivity)读写文件

最近研究native android相关内容&#xff0c;其中最棘手的就是文件读写问题&#xff0c;最主要的是相关的文档很少。这里写下我所知道的方法。 由于本人使用的是Android14[arm64-v8a]版本的设备,能访问的路径相当有限&#xff0c;如果想要访问更多的路径&#xff0c;就不得不申…...

《计算机网络A》单选题-复习题库解析-2

目录 51、下列关于以太网网卡地址特点的说法中&#xff0c;不正确的是&#xff08; &#xff09;。 52、当一个Web Browser向一个使用标准服务器端口的Web Server提出请求时&#xff0c;那么在服务返回的响应包中&#xff0c;所使用的源端口是&#xff08; &#xff0…...

GPU 进阶笔记(二):华为昇腾 910B GPU

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 1 术语 1.1 与 NVIDIA 术语对应关系1.2 缩写2 产品与机器 2.1 GPU 产品2.2 训练机器 底座 CPU功耗操作系统2.3 性能3 实探&#xff1a;鲲鹏底座 8*910B GPU 主机 3.1 CPU3.2 网卡和网络3.3 GPU 信息 3.3…...

如何利用 ClickHouse 实现高级分析:MySQL 到 ClickHouse 实时数据同步指南

在数据驱动的时代&#xff0c;企业必须依靠先进的数据分析能力来提升竞争力。随着数据量的激增和业务需求的复杂化&#xff0c;传统的关系型数据库已经无法满足高效处理和实时分析的需求。ClickHouse 作为一款高性能的列式数据库&#xff0c;凭借其卓越的查询性能和可扩展性&am…...

Python读取TIF文件

在Python中&#xff0c;逐帧读取TIFF文件&#xff08;尤其是多页TIFF文件&#xff09;可以使用tifffile库或Pillow库。以下是两种方法的示例&#xff1a; 方法 1&#xff1a;使用 tifffile 逐帧读取 tifffile 是一个专门用于处理TIFF文件的库&#xff0c;支持多页TIFF文件的逐…...

vue3+ts+element-plus 表单el-form取消回车默认提交

问题描述&#xff1a;在表单el-form中的el-input中按回车后&#xff0c;页面会刷新&#xff0c;url也会改变&#xff0c; 回车前&#xff1a; 回车后&#xff1a; 相关代码&#xff1a; 解决方法1&#xff1a;在 el-form 上阻止默认的 submit 事件&#xff0c;增加 submit.pre…...