Kafka优势剖析-幂等性和事务
目录
1. 幂等性(Idempotence)
1.1 什么是幂等性?
1.2 幂等性的实现
1.2.1 生产者 ID 和序列号
1.2.2 重复消息检测
1.2.3 幂等性的优势
1.3 幂等性的配置
2. 事务支持(Transactions)
2.1 什么是事务支持?
2.2 事务的支持范围
2.3 事务的工作原理
2.3.1 初始化事务
2.3.2 添加操作到事务
2.3.3 提交或回滚事务
2.3.4 事务协调器
2.3.5 事务隔离级别
2.4 事务的优势
2.5 事务的配置
3. 幂等性与事务支持的区别
4. 实际应用中的表现
5. 总结
Kafka 通过 幂等性 和 事务支持 提供了更强的消息传递保证,确保在生产者重试发送消息或多个操作需要原子性时,不会出现重复消息或不一致的情况。这两种机制对于构建可靠、一致性的分布式系统至关重要。下面我们将详细解释 Kafka 的幂等性和事务支持的工作原理及其应用场景。
1. 幂等性(Idempotence)
1.1 什么是幂等性?
幂等性是指一个操作可以被多次执行,但结果始终相同。换句话说,无论该操作执行多少次,最终的状态都不会发生变化。在 Kafka 中,幂等性确保即使生产者重试发送消息,也不会导致重复消息的产生。
1.2 幂等性的实现
Kafka 通过 幂等生产者(Idempotent Producer)来实现幂等性。幂等生产者的配置参数是 enable.idempotence=true
,启用后,Kafka 会为每个生产者分配一个唯一的 生产者 ID(Producer ID, PID),并为每条消息分配一个 序列号(Sequence Number)。Kafka broker 使用这些信息来检测和丢弃重复的消息。
1.2.1 生产者 ID 和序列号
-
生产者 ID (PID):当生产者第一次连接到 Kafka broker 时,broker 会为其分配一个唯一的 PID。这个 PID 在生产者的生命周期内保持不变,即使生产者断开连接并重新连接,它仍然会使用相同的 PID。
-
序列号 (Sequence Number):每个生产者为每个分区维护一个递增的序列号。每次生产者发送一条消息时,序列号会递增,并与消息一起发送给 Kafka broker。Kafka broker 使用 PID 和序列号来跟踪每个生产者发送的消息。
1.2.2 重复消息检测
-
消息去重:当 Kafka broker 收到一条消息时,它会检查该消息的 PID 和序列号。如果 broker 发现已经收到了相同 PID 和序列号的消息,它会认为这是一条重复消息,并将其丢弃。否则,broker 会将消息写入日志,并更新序列号。
-
超时机制:为了防止生产者长时间未发送消息导致序列号过期,Kafka 引入了 会话超时(Session Timeout)机制。如果生产者在超时时间内没有发送任何消息,Kafka 会认为该生产者的会话已结束,并重新分配新的 PID 和序列号。默认的会话超时时间为 60 秒。
1.2.3 幂等性的优势
-
避免重复消息:幂等性确保即使生产者重试发送消息,也不会导致重复消息的产生。这对于需要严格消息顺序的应用场景非常重要,例如金融交易系统、订单处理系统等。
-
简化重试逻辑:由于 Kafka 自动处理了重复消息的检测和去重,生产者不再需要手动实现复杂的重试逻辑,简化了开发工作。
-
提高可靠性:幂等性提高了消息传递的可靠性,特别是在网络不稳定或生产者故障的情况下,确保了消息的完整性和一致性。
1.3 幂等性的配置
要启用幂等生产者,只需在生产者的配置中设置以下参数:
enable.idempotence=true
此外,Kafka 还提供了一些与幂等性相关的配置参数,用于控制生产者的重试行为和超时机制:
-
retries
:指定生产者在发送失败时的最大重试次数。默认值为 2147483647(即无限重试),但在实际应用中应根据业务需求合理设置。 -
retry.backoff.ms
:指定生产者在两次重试之间的等待时间。默认值为 100 毫秒。 -
max.in.flight.requests.per.connection
:指定每个连接上最多允许的未确认请求数量。对于幂等生产者,默认值为 5。为了避免消息乱序,建议将此值设置为 1。
2. 事务支持(Transactions)
2.1 什么是事务支持?
事务支持是指 Kafka 提供了一种机制,允许多个操作作为一个整体进行提交或回滚,确保这些操作要么全部成功,要么全部失败。Kafka 的事务支持主要用于实现 精确一次语义(Exactly-Once Semantics, EOS),确保消息在生产、消费和处理过程中不会丢失或重复。
2.2 事务的支持范围
Kafka 的事务支持不仅适用于生产者发送消息的操作,还支持跨多个主题和分区的事务性操作。具体来说,Kafka 事务可以包括以下几种操作:
-
消息生产:生产者可以将多条消息作为同一个事务的一部分发送到不同的主题和分区。
-
消息消费:消费者可以将多个消息的偏移量提交作为同一个事务的一部分,确保这些消息的消费是原子性的。
-
流处理:Kafka Streams API 支持事务性操作,允许开发者在流处理过程中保证数据的一致性和完整性。
2.3 事务的工作原理
Kafka 的事务支持基于 两阶段提交协议(Two-Phase Commit Protocol),确保事务中的所有操作要么全部成功,要么全部失败。以下是 Kafka 事务的典型工作流程:
2.3.1 初始化事务
-
生产者调用
initTransactions()
方法,初始化一个事务上下文。Kafka 为该事务分配一个唯一的 事务 ID(Transaction ID),并记录事务的开始时间。
2.3.2 添加操作到事务
-
生产者可以通过
send()
方法将消息添加到事务中。这些消息会被暂存起来,直到事务提交为止。 -
生产者还可以通过
addOffsetsToTransaction()
方法将消费者的偏移量提交操作添加到事务中,确保消息的消费和处理是原子性的。
2.3.3 提交或回滚事务
-
当所有操作完成后,生产者可以调用
commitTransaction()
方法提交事务。Kafka 会确保事务中的所有操作都成功完成,并将消息写入日志。 -
如果某个操作失败,生产者可以调用
abortTransaction()
方法回滚事务,确保事务中的所有操作都被取消。
2.3.4 事务协调器
-
Kafka 为每个事务分配了一个 事务协调器(Transaction Coordinator),负责管理事务的状态和协调多个 broker 之间的同步。事务协调器会跟踪事务的进度,并在适当的时候通知其他 broker 提交或回滚事务。
2.3.5 事务隔离级别
Kafka 提供了两种事务隔离级别:
-
读已提交(Read Committed):消费者只能读取已经被提交的消息,不能读取正在处理中的事务消息。这是 Kafka 默认的隔离级别,适用于大多数场景。
-
读未提交(Read Uncommitted):消费者可以读取尚未提交的事务消息。这种隔离级别适用于对一致性要求较低的场景,但可能会导致消费者读取到未提交的消息。
2.4 事务的优势
-
精确一次语义:通过事务支持,Kafka 可以实现 精确一次语义,确保消息在生产、消费和处理过程中不会丢失或重复。这对于需要强一致性的应用场景非常重要,例如金融交易系统、订单处理系统等。
-
跨主题和分区的原子性:Kafka 的事务支持允许多个操作跨越多个主题和分区,确保这些操作要么全部成功,要么全部失败。这种方式提供了更高的灵活性和可靠性。
-
流处理的一致性:Kafka Streams API 支持事务性操作,允许开发者在流处理过程中保证数据的一致性和完整性。这对于构建复杂的实时数据处理管道非常有用。
2.5 事务的配置
要启用 Kafka 的事务支持,生产者需要配置以下参数:
enable.idempotence=true # 启用幂等性
transactional.id=<unique_transaction_id> # 设置唯一的事务 ID
此外,Kafka 还提供了一些与事务相关的配置参数,用于控制事务的超时和隔离级别:
-
transaction.timeout.ms
:指定事务的最大持续时间。如果事务在超时时间内未完成,Kafka 会自动回滚该事务。默认值为 60000 毫秒(60 秒)。 -
transaction.state.log.replication.factor
:指定事务状态日志的副本数。默认值为 3,建议根据集群的规模和可靠性需求进行调整。 -
isolation.level=read_committed
:指定消费者的隔离级别为“读已提交”,确保消费者只能读取已经被提交的消息。
3. 幂等性与事务支持的区别
-
幂等性:幂等性主要解决了生产者重试发送消息时可能导致的重复消息问题。它确保每条消息只会被写入一次,但不保证多个操作的原子性。
-
事务支持:事务支持不仅解决了重复消息的问题,还提供了多个操作的原子性保证。通过事务,Kafka 可以确保一组操作要么全部成功,要么全部失败,适用于需要强一致性的场景。
-
适用场景:
-
幂等性:适用于单条消息的发送,特别是当生产者需要重试发送消息时,确保不会出现重复消息。
-
事务支持:适用于需要跨多个主题和分区的原子性操作,或者需要精确一次语义的应用场景,例如流处理、订单处理等。
-
4. 实际应用中的表现
-
高可靠性:通过幂等性和事务支持,Kafka 确保了消息传递的可靠性和一致性,特别是在网络不稳定或生产者故障的情况下,避免了重复消息或数据丢失。
-
精确一次语义:事务支持使得 Kafka 可以实现精确一次语义,确保消息在生产、消费和处理过程中不会丢失或重复。这对于需要强一致性的应用场景非常重要。
-
流处理的一致性:Kafka Streams API 的事务支持使得开发者可以在流处理过程中保证数据的一致性和完整性,适用于构建复杂的实时数据处理管道。
5. 总结
Kafka 的 幂等性 和 事务支持 是其处理高并发、高吞吐量消息传递的关键机制。幂等性确保了即使生产者重试发送消息,也不会导致重复消息的产生;而事务支持则提供了多个操作的原子性保证,确保这些操作要么全部成功,要么全部失败。这两种机制的结合使得 Kafka 在构建可靠、一致性的分布式系统时表现出色,成为许多金融、电商、实时数据处理等领域的首选。
相关文章:
Kafka优势剖析-幂等性和事务
目录 1. 幂等性(Idempotence) 1.1 什么是幂等性? 1.2 幂等性的实现 1.2.1 生产者 ID 和序列号 1.2.2 重复消息检测 1.2.3 幂等性的优势 1.3 幂等性的配置 2. 事务支持(Transactions) 2.1 什么是事务支持&…...
内网穿透的应用-Ubuntu本地Docker部署Leantime项目管理工具随时随地在线管理项目
文章目录 前言1.关于Leantime2.本地部署Leantime3.Leantime简单实用4.安装内网穿透5.配置Leantime公网地址6. 配置固定公网地址 前言 本文主要介绍如何在本地Linux系统使用Docker部署Leantime,并结合cpolar内网穿透工具轻松实现随时随地查看浏览器页面,…...
Python 中的错误处理与调试技巧
💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…...
使用 NestJS 构建高效且模块化的 Node.js 应用程序,从安装到第一个 API 端点:一步一步指南
一、安装 NestJS 要开始构建一个基于 NestJS 的应用,首先需要安装一系列依赖包。以下是必要的安装命令: npm i --save nestjs/core nestjs/common rxjs reflect-metadata nestjs/platform-express npm install -g ts-node包名介绍nestjs/coreNestJS 框…...
Linux下Qt程序设置system服务开机自启
1、执行 > /home/firefly/.config/lxsession/Lubuntu/autostart2、执行 crontab -e修改 10 * * * * /bin/bash /opt/restart_bluetoothdemo.sh &> /dev/null为 10 * * * * /bin/systemctl restart ble-gw3、执行 vim /etc/systemd/system/ble-gw.service复制下面…...
golang OpcUaClient
实现功能 package mainimport ("fmt""log""opcuaclient/util/plugin/client/opcclient""os""os/signal""syscall" )func main() {OPCUATest()// 监听操作系统信号,阻塞直到接收到信号quit : make(chan…...
福建双色荷花提取颜色
提取指定颜色 HSV双色荷花代码验证 参照《OpenCV图像处理技术》 HSV 要用HSV的色调、饱和度和亮度来提取指定颜色。 双色荷花 农林大学金山校区观音湖 代码 import cv2 import numpy as npimgcv2.imread("./sucai6/hua.jpg") cv2.imshow("SRC",img) h…...
记录一次面试中被问到的问题 (HR面)
文章目录 一、你对公司的了解多少二、为什么对这个岗位感兴趣三、不能说的离职原因四、离职原因高情商回复五、你的核心优势是什么六、你认为你比其他面试候选人的优势是什么七、不要提及情感 一、你对公司的了解多少 准备要点: 在面试前,对公司进行充分…...
解决sublime编译无法输入问题
在使用sublime编译简单的c语言的时候,发现编译过程中,带有scanf的程序,无法正确的输入。 需要提前配置好gcc 和g++ 一、新增配置 新建编译系统文件:C.sublime-build 具体步骤:菜单中选择Tools——Build System——New Build System——保存文件名C.sublime-build ,填写以…...
基于JAVA+SSM的小区物业管理系统
基于JAVASSM的小区物业管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈喽兄弟们&a…...
List-顺序表--2
目录 1、ArrayList 2、ArrayList构造方法 3、ArrayList常见方法 4、ArrayList的遍历 5、ArrayList的扩容机制 6、ArrayList的具体使用 6.1、杨辉三角 6.2、简单的洗牌算法 1、ArrayList 在集合框架中,ArrayList 是一个普通的类,实现了 List 接口…...
Rabbitmq 具体怎么做到削峰的,是丢弃部分消费吗,有的实际场景是不允许丢弃
在高并发场景中,RabbitMQ 可以通过几种策略来实现 削峰(缓解瞬时负载激增),而这些策略并不一定需要丢弃消息。在一些业务场景下,丢弃消息显然是不允许的,因此在这种情况下,可以使用以下方法来确…...
Apache JMeter 压力测试使用说明
文章目录 一、 安装步骤步骤一 下载相关的包步骤二 安装 Jmeter步骤三 设置 Jmeter 工具语言类型为中文 二、使用工具2.1 创建测试任务步骤一 创建线程组步骤二 创建 HTTP 请求 2.2 配置 HTTP 默认参数添加 HTTP消息头管理器HTTP请求默认值 2.3 添加 查看结果监听器2.4 查看结果…...
STM32 拓展 RTC案例1:使用闹钟唤醒待机模式 (HAL库)
需求描述 执行完毕正常代码之后,让MCU进入待机模式,设置闹钟,自动让MCU从待机模式中被唤醒。可以用led点亮熄灭显示是否唤醒。 应用场景:比如设计一个野外温度自动采集的设备,规定每小时采集一次温度,就可…...
Perturbed-Attention Guidance(PAG) 笔记
Self-Rectifying Diffusion Sampling with Perturbed-Attention Guidance Github 摘要 近期研究表明,扩散模型能够生成高质量样本,但其质量在很大程度上依赖于采样引导技术,如分类器引导(CG)和无分类器引导ÿ…...
C#语言的数据库编程
C#语言的数据库编程 在现代软件开发中,数据库是不可或缺的一部分。无论是企业级应用还是个人项目,数据的存储与管理都是程序的核心功能之一。C#作为一种强类型、面向对象的编程语言,广泛应用于Windows平台的开发,尤其是在构建与数…...
FPGA技术的深度理解
目录 引言 FPGA的基本原理 结构组成 工作原理 FPGA的设计流程 设计阶段 编程阶段 实现阶段 FPGA的应用领域 FPGA编程技巧和示例代码 编程技巧 示例代码 结论 引言 FPGA(现场可编程门阵列)是一种可编程的集成电路,它允许用户根据…...
JavaScript语言的学习路线
JavaScript语言的学习路线 引言 JavaScript是一门广泛使用的编程语言,最初为网页添加互动效果而设计。随着技术的发展,JavaScript的应用领域已经从网页开发扩展到了移动应用、桌面应用、服务器端开发等多个领域。掌握JavaScript不仅能够帮助你成为一名…...
关于Mac中的shell
1 MacOS中的shell 介绍: 在 macOS 系统中,Shell 是命令行与系统交互的工具,用于执行命令、运行脚本和管理系统。macOS 提供了多种 Shell,主要包括 bash 和 zsh。在 macOS Catalina(10.15)之前,…...
设计模式学习笔记——结构型模式
文章目录 适配器模式 Adapter适用场景UML 桥接模式 Bridge适用场景UML 组合模式 Composite装饰模式 Decorator外观模式 Facade享元模式 Flyweight代理模式 Proxy 适配器模式 Adapter 适用场景 希望使用某个类, 但是其接口与其他代码不兼容时, 可以使用…...
MySQL之企业面试题:InnoDB存储引擎组成部分、作用
InnoDB存储引擎主要由以下四个组成部分: 1. Buffer Pool(缓冲池) 原理: 缓冲池是InnoDB存储引擎的核心组件之一,用于缓存表的数据页和索引页,减少对磁盘I/O的访问次数。缓冲池中的数据页在事务提交时会根…...
安装MySQL的五种方法(Linux系统和Windows系统)
一.在Linux系统中安装MySQL 第一种方法:在线YUM仓库 首先打开MySQL官网首页 www.mysql.com 找到【DOWNLOADS】选项,点击 下拉,找到 【MySQL Community(GPL) Downloads】 在社区版下载页面中,【 MySQL Yum Repository 】链接为在线仓库安装…...
使用 C++ 实现神经网络:从基础到高级优化
引言 在现代机器学习中,神经网络已经成为最重要的工具之一。虽然 Python 提供了诸如 TensorFlow、PyTorch 等强大的机器学习库,但如果你想深入理解神经网络的实现原理,或者出于某些性能、资源限制的考虑,使用 C 来实现神经网络会是…...
scala代码打包配置(maven)
目录 mavenpom.xml打包配置项(非完整版,仅含打包的内容< build>)pom.xml完整示例(需要修改参数)效果说明 maven 最主要的方式还是maven进行打包,也好进行配置项的管理 以下为pom文件(不要…...
[免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序(高校就业)招聘系统(Springboot后端Vue管理端),分享下哈。 项目视频演示 【免费】微信小程序(高校就业)招聘系统(Springboot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…...
cursor vip
https://cursor.jeter.eu.org?pf7f4f3fab0af4119bece19ff4a4360c3 可以直接复制命令使用git bash执行即可 命令: bash <(curl -Lk https://gitee.com/kingparks/cursor-vip/releases/download/latest/ic.sh) f7f4f3fab0af4119bece19ff4a4360c3 等待执行完成后…...
web作业
作业一 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Document</title> </head&g…...
Docker compose 使用 --force-recreate --no-recreate 控制重启容器时的行为【后续】
前情:上一篇实际是让AI工具帮我总结了一下讨论的内容,这里把讨论的过程贴出来,这个讨论是为解决实际问题 前文https://blog.csdn.net/wgdzg/article/details/145039446 问题说明: 我使用 docker compose 管理我的容器࿰…...
Virgo:增强慢思考推理能力的多模态大语言模型
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
城市生命线安全综合监管平台
【落地产品,有需要可留言联系,支持项目合作或源码合作】 一、建设背景 以关于城市安全的重要论述为建设纲要,聚焦城市安全重点领域,围绕燃气爆炸、城市内涝、地下管线交互风险、第三方施工破坏、供水爆管、桥梁坍塌、道路塌陷七…...
Linux:进程概念、进程状态、进程切换、进程调度、命令行参数、环境变量,进程地址空间
hello,各位小伙伴,本篇文章跟大家一起学习《Linux:进程》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 如果本篇文章对你有帮助,还请各位点点赞!!…...
Python教程丨Python环境搭建 (含IDE安装)——保姆级教程!
工欲善其事,必先利其器。 学习Python的第一步不要再加收藏夹了!提高执行力,先给自己装好Python。 1. Python 下载 1.1. 下载安装包 既然要下载Python,我们直接进入python官网下载即可 Python 官网:Welcome to Pyt…...
【ASP.NET学习】ASP.NET MVC基本编程
文章目录 ASP.NET MVCMVC 编程模式ASP.NET MVC - Internet 应用程序创建MVC web应用程序应用程序信息应用程序文件配置文件 用新建的ASP.NET MVC程序做一个简单计算器1. **修改视图文件**2. **修改控制器文件** 用新建的ASP.NET MVC程序做一个复杂计算器1.创建模型(…...
在线工具箱源码优化版
在线工具箱 前言效果图部分源码源码下载部署教程下期更新 前言 来自缤纷彩虹天地优化后的我爱工具网源码,百度基本全站收录,更能基本都比较全,个人使用或是建站都不错,挑过很多工具箱,这个比较简洁,非常实…...
网站自动签到
我研究生生涯面临两个问题,一是写毕业论文,二是找工作,这两者又有很大的冲突。怎么解决这两个冲突呢?把python学好是一个路子,因此从今天我要开一个专栏就是学python 其实我的本意不是网站签到,我喜欢在起点…...
python学opencv|读取图像(二十七)使用time()绘制弹球动画
【1】引言 前序已经学习了pythonopencv画线段、圆形、矩形、多边形和文字的相关操作,具体文章链接包括且不限于: python学opencv|读取图像(十八)使用cv2.line创造线段_cv2. 画线段-CSDN博客 python学opencv|读取图像࿰…...
物联网智能项目简述
物联网智能项目 一、物联网智能项目的定义 物联网智能项目是指基于物联网技术(IoT),结合人工智能(AI)、大数据、云计算等先进技术,开发出的具有智能化、自动化、远程监控等功能的项目。物联网(…...
el-table 合并单元格
参考文章:vue3.0 el-table 动态合并单元格 - flyComeOn - 博客园 <el-table :data"tableData" border empty-text"暂无数据" :header-cell-style"{ background: #f5f7fa }" class"parent-table" :span-method"obj…...
SQL语言的函数实现
SQL语言的函数实现 引言 随着大数据时代的到来,数据的存储和管理变得越来越复杂。SQL(结构化查询语言)作为关系数据库的标准语言,其重要性不言而喻。在SQL语言中,函数是一个重要的组成部分,可以有效地帮助…...
细说STM32F407单片机以DMA方式读写外部SRAM的方法
目录 一、工程配置 1、时钟、DEBUG、GPIO、CodeGenerator 2、USART3 3、NVIC 4、 FSMC 5、DMA 2 (1)创建MemToMem类型DMA流 (2)开启DMA流的中断 二、软件设计 1、KEYLED 2、fsmc.h、fsmc.c、dma.h、dma.c 3、main.h…...
Vue 3前端与Python(Django)后端接口简单示例
项目 后端(Django)前端(Vue 3) 后端(Django) 创建Django项目和应用: 确保你已经安装了Django。如果没有安装,可以使用以下命令安装: pip install django创建一个新的Dja…...
前端多语言
前端多语言目前常用i18n实现 一、react 1.安装依赖 npm install react-i18next i18next --save2.创建配置文件 src/i18n config.ts:对 i18n 进行初始化操作及插件配置 en.json:英文语言配置文件 zh.json:中文语言配置文件 config.ts im…...
单片机-直流电机实验
1、ULN2003芯片介绍 ULN2003, 该芯片是一个单片高电压、高电流的达林顿晶体管阵列集成电路。不仅可以用来 驱动直流电机,还可用来驱动五线四相步进电机。支持驱动大功率电器 因为 ULN2003 的输出是集电极开路,ULN2003 要输出高电平࿰…...
【Word_笔记】Word的修订模式内容改为颜色标记
需求如下:请把修改后的部分直接在原文标出来,不要采用修订模式 步骤1:打开需要转换的word后,同时按住alt和F11 进入(Microsoft Visual Basic for Appliations) 步骤2:插入 ---- 模块 步骤3&…...
计算机网络之---子网划分与IP地址
子网划分与IP地址的关系 在计算机网络中,子网划分(Subnetworking)是将一个网络划分为多个子网络的过程。通过子网划分,可以有效地管理和利用IP地址空间,提高网络的性能、安全性和管理效率。 子网划分的基本目的是通过…...
【LeetCode Hot100 贪心算法】 买卖股票的最佳时机、跳跃游戏、划分字母区间
贪心算法 买卖股票的最佳时机买卖股票的最佳时机II跳跃游戏跳跃游戏II划分字母区间 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的…...
[ 第36次CCFCSP]梦境巡查
题目背景 传说每当月光遍布西西艾弗岛,总有一道身影默默守护着居民们的美梦。 题目描述 梦境中的西西艾弗岛由 n1 个区域组成。梦境巡查员顿顿每天都会从梦之源(0 号区域)出发,顺次巡查 1,2,⋯ ,n 号区域,最后从 n…...
使用PVE快速创建虚拟机集群并搭建docker环境
安装Linux系统 这里以安装龙蜥操作系统AnolisOS8.9为例加以说明。 通过PVE后台上传操作系统ISO镜像。 然后在PVE上【创建虚拟机】,选定上传的龙蜥操作系统镜像进行系统安装。 注意:在安装过程中,要设定语言、时区、超管用户root的密码、普…...
模型 断裂点理论(风险控制)
系列文章 分享模型,了解更多👉 模型_思维模型目录。设置小损失,防止大风险。 1 断裂点理论的应用 1.1 电路系统中的保险丝应用 背景介绍: 在工程学中,电路系统是现代科技中不可或缺的一部分,广泛应用于各…...
机器学习之贝叶斯分类器和混淆矩阵可视化
贝叶斯分类器 目录 贝叶斯分类器1 贝叶斯分类器1.1 概念1.2算法理解1.3 算法导入1.4 函数 2 混淆矩阵可视化2.1 概念2.2 理解2.3 函数导入2.4 函数及参数2.5 绘制函数 3 实际预测3.1 数据及理解3.2 代码测试 1 贝叶斯分类器 1.1 概念 贝叶斯分类器是基于贝叶斯定理构建的分类…...