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

Kafka的rebalance机制

1、什么是 rebalance 机制
重平衡(rebalance)机制规定了如何让消费者组下的所有消费者来分配 topic 中的每一个分区。
 

2、rebalance 机制的触发条件是什么
(1)消费者组内成员变更
成员增加:当有新的消费者加入到消费者组时,会触发重平衡以重新分配分区。
成员减少
主动离组:某个消费者调用 close() 方法显式退出消费者组。
被动离组:由于网络故障、应用程序崩溃或其他原因导致消费者无法发送心跳请求给协调者(Coordinator),超过一定时间(session.timeout.ms 或 max.poll.interval.ms),协调者认为该消费者已死亡并将其移除。
(2)订阅 topic 的数量发生变化
如果消费者组使用正则表达式订阅了多个 topic,并且新增了一个符合该模式的新 topic,这将触发 rebalance 以便新主题的分区可以被分配给现有消费者。
(3)订阅 topic 的分区数发生变化
当某个 topic 的分区数增加时(Kafka 支持动态增加分区),为了使新增加的分区能够被合理分配,也会触发 rebalance。
 

3、rebalance 机制的影响是什么
(1)消费中断
消息消费暂停:rebalance 过程中,所有消费者都会暂时停止,直到新的分配方案确定并生效。
(2)资源消耗增加
网络流量增加:rebalance 期间,消费者需要重新建立与协调者(Coordinator)的连接,并接收新的分区分配信息。这会生成额外的网络流量。
CPU 和内存使用上升:频繁的 rebalance 会导致更多的 CPU 和内存用于处理心跳请求、位移提交以及重新分配逻辑,增加了 Broker 和消费者负载。
(3)延迟增大
由于消息消费暂停,已经到达但尚未处理的消息会被延迟处理,可能导致端到端的延迟增加。
 

4、如何减少 rebalance 的发生
rebalance 的触发条件中,2 和 3 可以人为约定规范的方式来减少 rebalance,但往往第一种情况才是引起 rebalance 的最常见原因

除了消费者成员正常的添加和停止之外,还有些情况下 Coordinator 会错误的认为消费者组成员已停止而将其踢出组以致发生 rebalance。

我们知道维持分布式系统的方式通常是通过发送心跳的,kafka也不例外。
由于一些问题,你可能不清楚没接收到心跳的原因,比如是因为对方真正挂了还是只因为当时负载过高或网络堵塞没来得及发心跳等。所以一般会约定一个时间,超时即判定对方挂了。而在 kafka 消费场景中,session.timout.ms 参数就是规定这个超时时间的。

另外一个参数是 heartbeat.interval.ms,它控制发送心跳的频率,频率越高越不容易被误判,当然代价是会消耗更多资源。

此外,还有一个参数,max.poll.interval.ms,我们知道消费者 poll 数据后,需要进行处理然后再拉取。但如果两次拉取时间间隔超过这个参数的值,那消费者就会被踢出消费者组。也就是说处理时间不能超过 max.poll.interval.ms。该参数的默认值是 5 分钟,如果消费者接收到数据后会执行耗时操作,则应将其设置得大些。

总结一下几个参数
在这里插入图片描述

通过上述可知,一般建议如下
(1)heartbeat.interval.ms < session.timeout.ms:确保心跳间隔足够短,以便及时发现消费者故障,但又不会过于频繁发送心跳请求,增加网络开销。
(2)max.poll.interval.ms > 处理时间:确保这个值大于消费者处理消息所需最大时间,以避免由于处理时间过长而被误认为死亡。
 

5、rebalance 的三种策略
(1)Range
基于每个主题的分区分配,先对同一个 topic 里面的分区按照序号排序,并对消费者按照字母序进行排序。假如一个 topic下有 10 个分区,3 个消费者,排序后的分区是 0,1,2,3,4,5,6,7,8,9,消费者排序完之后将会是C1, C2, C3。通过 partition数/consumer数 来决定每个消费者应该消费几个分区。如果除不尽,那么前面消费者将会多消费 1 个分区。

例如,10/3 = 3 余 1 ,除不尽,那么 消费者 C1 便会多消费 1 个分区,最终分配结果如下:
C1 0,1,2,3 分区
C2 4,5,6 分区
C3 7,8,9 分区(如果有11 个分区的话,C1 将消费 0,1,2,3 分区,C2 将消费4,5,6,7 分区 C3 将消费 8,9,10 分区)

Range 的弊端:
如上,只是针对 1 个 topic 而言,C1 消费者多消费 1 个分区影响不是很大。如果有 N 个 topic,那么针对每个 topic,消费者 C1 都将多消费 1 个分区,topic 越多,C1 消费的分区会比其他消费者明显多 N 个分区。

(2)RoundRobin(默认策略)
轮询分区,kafka 默认的 rebalance 策略,把所有的 partition 和 consumer 都列出来,通过轮询来分配 partition 到消费者。

轮询分区分为如下两种情况:
①同一消费组内所有消费者订阅的 topic 都是相同的
②同一消费者组内的消费者订阅的 topic 不同
对于第一种情况,RoundRobin 策略的分区分配是均匀的。

例如:同一消费者组中,有 3 个消费者 C0、C1 和 C2,都订阅了 2 个主题 t0 和 t1,并且每个主题都有 3 个分区(p0、p1、p2),那么所订阅的所以分区可以标识为t0p0、t0p1、t0p2、t1p0、t1p1、t1p2。最终分区分配结果如下:
消费者C0 消费 t0p0 、t1p0 分区
消费者C1 消费 t0p1 、t1p1 分区
消费者C2 消费 t0p2 、t1p2 分区

对于第二种情况,可能会导致分区分配不均匀。如果某个消费者没有订阅消费组内的某个 topic,那么在分配分区的时候,此消费者将不会分配到这个 topic 的任何分区。

例如:同一消费者组中,有 3 个消费者 C0、C1 和 C2,他们共订阅了 3 个主题:t0、t1 和 t2,这 3 个主题分别有 1、2、3 个分区(即:t0有1个分区(p0),t1有 2 个分区(p0、p1),t2 有 3 个分区(p0、p1、p2)),即整个消费者所订阅的所有分区可以标识为 t0p0、t1p0、t1p1、t2p0、t2p1、t2p2。具体而言,消费者 C0 订阅的是主题 t0,消费者 C1 订阅的是主题 t0 和 t1,消费者 C2 订阅的是主题 t0、t1 和t2,最终分区分配结果如下:
消费者C0 消费 t0p0
消费者C1 消费 t1p0 分区
消费者C2 消费 t1p1、t2p0、t2p1、t2p2 分区

(3)Sticky
粘性分配策略,主要是为了让目前的分配尽可能保持不变,只挪动尽可能少的分区来实现重平衡。

举例,有三个消费者 C0,C1,C2 。三个主题 t0,t1,t2,t3。每个主题各有两个分区, t0p0,t0p1,t1p0,t1p1,t2p0,t2p1,t3p0,t3p1。
现在订阅情况如下:
C0:t0p0,t1p1,t3p0
C1:t0p1,t2p0,t3p1
C2:t1p0,t2p1
假设现在 C1 挂掉了,如果是 RoundRobin 分配策略,那么会变成下面这样:
C0:t0p0,t1p0,t2p0,t3p0
C2:t0p1,t1p1,t2p1,t3p1
就是说它会全部重新打乱,再分配,而如果使用 Sticky 分配策略,会变成这样:
C0:t0p0,t1p1,t3p0,t2p0
C2:t1p0,t2p1,t0p1,t3p1

也就是说,尽可能保留了原来的分区情况,不去改变它,在这个基础上进行均衡分配。

 
 
 
 

大佬,点个赞在走呗!
 
 

在这里插入图片描述

相关文章:

Kafka的rebalance机制

1、什么是 rebalance 机制 重平衡&#xff08;rebalance&#xff09;机制规定了如何让消费者组下的所有消费者来分配 topic 中的每一个分区。 2、rebalance 机制的触发条件是什么 &#xff08;1&#xff09;消费者组内成员变更 成员增加&#xff1a;当有新的消费者加入到消费…...

Spring Boot - 日志功能深度解析与实践指南

文章目录 概述1. Spring Boot 日志功能概述2. 默认日志框架&#xff1a;LogbackLogback 的核心组件Logback 的配置文件 3. 日志级别及其配置配置日志级别3.1 配置文件3.2 环境变量3.3 命令行参数 4. 日志格式自定义自定义日志格式 5. 日志文件输出6. 日志归档与清理7. 自定义日…...

【React+TypeScript+DeepSeek】穿越时空对话机

引言 在这个数字化的时代&#xff0c;历史学习常常给人一种距离感。教科书中的历史人物似乎永远停留在文字里&#xff0c;我们无法真正理解他们的思想和智慧。如何让这些伟大的历史人物"活"起来&#xff1f;如何让历史学习变得生动有趣&#xff1f;带着这些思考&…...

2025年贵州省职业院校技能大赛信息安全管理与评估赛项规程

贵州省职业院校技能大赛赛项规程 赛项名称&#xff1a; 信息安全管理与评估 英文名称&#xff1a; Information Security Management and Evaluation 赛项组别&#xff1a; 高职组 赛项编号&#xff1a; GZ032 1 2 一、赛项信息 赛项类别 囚每年赛 □隔年赛&#xff08;□单数年…...

2、蓝牙打印机点灯-GPIO输出控制

1、硬件 1.1、看原理图 初始状态位高电平. 需要驱动PA1输出高低电平控制PA1. 1.2、看手册 a、系统架构图 GPIOA在APB2总线上。 b、RCC使能 GPIOA在第2位。 c、GPIO寄存器配置 端口&#xff1a;PA1 模式&#xff1a;通用推挽输出模式 -- 输出0、1即可 速度&#xff1a;5…...

推荐系统重排:DPP 多样性算法

行列式点过程&#xff08;DPP&#xff09;算法&#xff1a;原理、应用及优化 推荐系统【多样性算法】系列文章&#xff08;置顶&#xff09; 1.推荐系统重排&#xff1a;MMR 多样性算法 2.推荐系统重排&#xff1a;DPP 多样性算法 引言 行列式点过程&#xff08;Determinanta…...

【业务场景】sql server从Windows迁移到Linux

目录 1.背景 2.Linux安装sql server 3.服务器不开端口的问题 4.数据库导入导出问题 1.背景 博主在24年年底接手运维了一个政府的老系统&#xff0c;整个应用和数据库单点部署在一台Windows Server服务器上&#xff0c;数据库选型是经典的老项目标配——sql server。随着近…...

SpringMVC(三)请求

目录 一、RequestMapping注解 1.RequestMapping的属性 实例 1.在这里创建文件&#xff0c;命名为Test: 2.复现-返回一个页面&#xff1a; 创建test界面&#xff08;随便写点什么&#xff09;&#xff1a; Test文件中编写&#xff1a; ​编辑 运行&#xff1a; 3.不返回…...

【HeadFirst系列之HeadFirst设计模式】第1天之HeadFirst设计模式开胃菜

HeadFirst设计模式开胃菜 前言 从今日起&#xff0c;陆续分享《HeadFirst设计模式》的读书笔记&#xff0c;希望能够帮助大家更好的理解设计模式&#xff0c;提高自己的编程能力。 今天要分享的是【HeadFirst设计模式开胃菜】&#xff0c;主要介绍了设计模式的基本概念、设计模…...

Spring线程池优雅关闭

前言 线程池大家一定不陌生&#xff0c;常被用来异步执行一些耗时的任务。但是线程池如何优雅的关闭&#xff0c;却少有人关注。 当 JVM 进程关闭时&#xff0c;你提交到线程池的任务会被如何处理&#xff1f;如何保证任务不丢&#xff1f; ThreadPoolExecutor Java 对线程…...

Spring为什么要用三级缓存解决循环依赖?

1.什么是循环依赖 本文为了方便说明&#xff0c;先设置两个业务层对象&#xff0c;命名为AService和BService。其中Spring是如何把一个Bean对象创建出来的&#xff0c;其生命周期如下&#xff1a; 构造方法–> 不同对象 --> 注入依赖 -->初始化前 --> 初始化后–&…...

【苏德矿高等数学】第4讲:数列极限定义-1

2. 数列极限 数列极限是整个微积分的核心。它的思想贯穿整个微积分之中。 数列极限是最基本的、最核心的、最重要的、最难的。 2.1 数列 【定义】无限排列的一列数 a 1 , a 2 , ⋯ , a n , ⋯ a_1,a_2,\cdots,a_n,\cdots a1​,a2​,⋯,an​,⋯就称为数列&#xff0c;记作 { …...

Go语言的 的并发编程(Concurrency)核心知识

Go语言的并发编程&#xff08;Concurrency&#xff09;核心知识 在现代软件开发中&#xff0c;尤其是处理高并发任务时&#xff0c;优秀的并发编程能力显得尤为重要。Go语言&#xff08;或称Golang&#xff09;是为并发编程而生的一种编程语言&#xff0c;它通过简洁的语法和强…...

Go语言中的逃逸分析:深入浅出

Go语言中的逃逸分析&#xff1a;深入浅出 在Go语言中&#xff0c;逃逸分析&#xff08;Escape Analysis&#xff09;是一个非常重要且强大的编译器优化技术。它帮助编译器决定一个变量是在栈上分配还是在堆上分配&#xff0c;从而影响程序的性能和内存管理。本文将深入探讨Go语…...

flux中的缓存

1. cache&#xff0c;onBackpressureBuffer。都是缓存。cache可以将hot流的数据缓存起来。onBackpressureBuffer也是缓存&#xff0c;但是当下游消费者的处理速度比上游生产者慢时&#xff0c;上游生产的数据会被暂时存储在缓冲区中&#xff0c;防止丢失。 2. Flux.range 默认…...

Vue3中使用 Vue Flow 流程图方法

效果图&#xff1a; 最近项目开发时有一个流程图的功能&#xff0c;需要做流程节点的展示&#xff0c;就搜到了 Vue Flow 这个插件&#xff0c;这个插件总得来说还可以&#xff0c;简单已使用&#xff0c;下边就总结一下使用的方法&#xff1a; Vue Flow官网&#xff1a;https…...

[Effective C++]条款42 typename

本文初发于 “天目中云的小站”&#xff0c;同步转载于此。 条款42 : 了解typename的双重意义 本条款中我们将了解typename的两种使用场景, 对typename的内涵及使用加深认知. template声明式 在template的声明中, template<class T>和template<typename T>都是被允…...

MySQL 8 主从同步配置(Master-Slave Replication)

📋 MySQL 8 主从同步配置(Master-Slave Replication) 🔧 目标: 配置 MySQL 8 主从同步,实现 主库(Master) 处理写操作,从库(Slave) 处理读操作,达到 读写分离 和 高可用性 的目的。 🔑 核心步骤: 配置 主库(Master)配置 从库(Slave)启动主从复制验证主从…...

STM32第十一课:STM32-基于标准库的42步进电机的简单IO控制(附电机教程,看到即赚到)

一&#xff1a;步进电机简介 步进电机又称为脉冲电机&#xff0c;简而言之&#xff0c;就是一步一步前进的电机。基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩&#xff0c;步进电机的角位移量与输入的脉冲个数严格成正…...

模拟(算法-6)

模拟简介 模拟就是根据题目要求&#xff0c;比着葫芦画瓢&#xff0c;即直接按照题目要求写就行了 考察的是我们的编码能力 步骤&#xff1a; 演草纸上画图模拟&#xff08;重要&#xff09; 代码编写 虽然很多时候此类题比较简单&#xff0c;但是也有例外&#xff0c;如本文第…...

Clickhouse集群部署(3分片1副本)

Clickhouse集群部署 3台Linux服务器&#xff0c;搭建Clickhouse集群3分片1副本模式 1、安装Java、Clickhouse、Zookeeper dpkg -i clickhouse-client_23.2.6.34_amd64.deb dpkg -i clickhouse-common-static_23.2.6.34_amd64.deb dpkg -i clickhouse-server_23.2.6.34_amd64…...

MySQL(六)MySQL 案例

1. MySQL 案例 1.1. 设计数据库 1、首先根据相关业务需求(主要参考输出输入条件)规划出表的基本结构   2、根据业务规则进行状态字段设计   3、预估相关表的数据量进行容量规划   4、确定主键   5、根据对相关处理语句的分析对数据结构进行相应的变更。   设计表的时…...

【网络协议栈】TCP/IP协议栈中重要协议和技术(DNS、ICMP、NAT、代理服务器、以及内网穿透)

每日激励&#xff1a;“请给自己一个鼓励说&#xff1a;Jack我很棒&#xff01;—Jack” 绪论​&#xff1a; 本章是TCP/IP网络协议层的完结篇&#xff0c;本章将主要去补充一些重要的协议和了解一些网络中常见的名词&#xff0c;具体如&#xff1a;DNS、ICMP、NAT、代理服务器…...

NLP中特征提取方法的总结

1. Bag of Words (BOW) 描述&#xff1a;将文本表示为一个词汇表中的词频向量&#xff0c;忽略词的顺序。 优点&#xff1a;实现简单&#xff0c;广泛应用。 缺点&#xff1a;不考虑词序和上下文信息&#xff0c;向量空间维度可能非常大。 应用&#xff1a;文本分类、情感分…...

《HarmonyOS第一课》焕新升级,赋能开发者快速掌握鸿蒙应用开发

随着HarmonyOS NEXT发布&#xff0c;鸿蒙生态日益壮大&#xff0c;广大开发者对于系统化学习平台和课程的需求愈发强烈。近日&#xff0c;华为精心打造的《HarmonyOS第一课》全新上线&#xff0c;集“学、练、考”于一体&#xff0c;凭借多维融合的教学模式与系统课程设置&…...

JMeter + Grafana +InfluxDB性能监控 (二)

您可以通过JMeter、Grafana 和 InfluxDB来搭建一个炫酷的基于JMeter测试数据的性能测试监控平台。 下面&#xff0c;笔者详细介绍具体的搭建过程。 安装并配置InfluxDB 您可以从清华大学开源软件镜像站等获得InfluxDB的RPM包&#xff0c;这里笔者下载的是influxdb-1.8.0.x86_…...

【微服务】3、配置管理

微服务配置管理 已掌握的微服务组件及配置管理问题引出 已掌握注册中心、Openfan、远程调用、负载均衡、网关等组件&#xff0c;具备微服务开发能力&#xff0c;但仍存在其他问题待解决。微服务和网关存在大量配置文件&#xff0c;其中包含很多重复配置&#xff0c;如数据库、日…...

数据结构(顺序表)

文章目录 数据结构概述什么是数据结构数据结构的类型常见的数据结构 线性表概念举例 顺序表基本概念基本操作 完整代码顺序表优缺点总结 数据结构概述 什么是数据结构 数据结构&#xff1a;数据结构就是计算机存储&#xff0c;组织&#xff0c;管理数据的方式方法 数据结构的…...

ARM架构服务器安装部署KVM虚拟化环境

一、查看内核是否支持KVM虚拟化 针对ARM架构服务器&#xff0c;若/dev/kvm 和 /sys/module/kvm任意一个不存在&#xff0c;都说明内核不支持KVM虚拟化 [rootlocalhost ~]# ls -l /dev/kvm crw-rw---- 1 root kvm 10, 232 May 6 09:18 /dev/kvm[rootlocalhost ~]# ls /sys/mo…...

Azkaban其二,具体使用以及告警设置

目录 Azkaban的使用 1、使用Flow1.0(比较老旧&#xff09; 2、Flow2.0的用法 1、小试牛刀 2、YAML格式的数据 3、多任务依赖 4、内嵌流&#xff08;嵌套流&#xff09;案例 5、动态传参 3、Azkaban的报警机制 1&#xff09;邮箱通知 2&#xff09;电话报警机制 4、关…...

不只是mini-react第一节:实现最简单mini-react

项目总结构&#xff1a; ├─ &#x1f4c1;core │ ├─ &#x1f4c4;React.js │ └─ &#x1f4c4;ReactDom.js ├─ &#x1f4c1;node_modules ├─ &#x1f4c1;tests │ └─ &#x1f4c4;createElement.spec.js ├─ &#x1f4c4;App.js ├─ &#x1f4c4;in…...

MySQL数据库备份与恢复策略

数据是企业和应用的核心资产,可靠的备份和恢复策略是确保数据安全性和业务连续性的关键。在本篇文章中,我们将详细介绍 MySQL 数据库的备份和恢复方法,包括逻辑备份、物理备份、自动化备份,以及常见问题的处理方法。 一、逻辑备份 逻辑备份是通过导出数据库的结构和数据生…...

SpringBoot下载文件的几种方式

小文件&#xff1a;直接将文件一次性读取到内存中&#xff0c;文件大可能会导致OOM GetMapping("/download1")public void download1(HttpServletResponse response) throws IOException {// 指定要下载的文件File file new File("C:\\Users\\syd\\Desktop\\do…...

探索现代 Web 开发中的流行技术:深入学习 Vite 的使用

在前端开发的世界中&#xff0c;构建工具扮演着越来越重要的角色。从 Webpack 到 Parcel&#xff0c;再到 Rollup&#xff0c;每个工具都有自己的独特定位和目标。而今天&#xff0c;我们要讨论的是一款近年来迅速崛起并受到广泛欢迎的构建工具— Vite。 本文将从基本原理到实…...

React虚拟DOM:理解和应用

写在前面 在现代前端开发中&#xff0c;React 是一个非常流行的 JavaScript 库&#xff0c;用于构建用户界面。它引入了一个名为“虚拟 DOM”&#xff08;Virtual DOM&#xff09;的概念&#xff0c;这个概念对于 React 的高效性能和易用性至关重要。本文将深入探讨 React Vir…...

C++和SFML游戏入门

让我们深入探讨一下如何使用C和SFML&#xff08;Simple and Fast Multimedia Library&#xff09;来创建一个更为详细的游戏代码示例。我们将构建一个简单的2D游戏&#xff0c;其中包含一个可移动的角色、基本的碰撞检测以及简单的得分系统。 项目结构 首先&#xff0c;我们定…...

Django 表单

Django 表单 Django 表单是 Web 开发中一个重要的组成部分,它允许用户与网站进行交互。在 Django 框架中,表单用于收集和验证用户输入的数据。Django 提供了一个强大的表单处理系统,使得开发者能够轻松地创建表单,处理表单数据,并进行验证。 1. Django 表单基础 Django…...

Ubuntu 安装英伟达显卡驱动问题记录

建议 无论什么版本的系统,都建议从官网下载驱动,一般下载下来后是一个 run 开头的可执行程序,直接在命令行执行就可以。 之所以这么建议,是因为使用 包管理工具安装的驱动一般都是社区版本,社区版本的问题就是没有签名,需要在 BIOS 内关闭 security boot 才可以加载对应…...

机器视觉面试题PDF

以下是一些机器视觉面试题PDF资源的推荐&#xff1a; GitHub仓库• 《百面计算机视觉》面试题整理&#xff1a;这个GitHub仓库整理了计算机视觉算法岗的面试题&#xff0c;包括深度学习基础、机器学习高频面试题、传统CV(Opencv面试题)、目标检测、图像分类、图像分割、Transfo…...

【网络协议】IPv4 地址分配 - 第一部分

文章目录 十进制与二进制网络如何被寻址地址类型网络地址广播地址主机地址 如何确定网络和主机部分的位数&#xff1f;网络中的主机数量与前缀号的关系计算每个前缀的主机数量公式 子网掩码二进制与操作&#xff08;Binary ANDing&#xff09;与操作&#xff08;AND Operation&…...

掌握 Dockerfile:格式、解析器指令、环境变量替换

Docker 是一个开源平台&#xff0c;旨在自动化应用程序的构建、交付和运行。通过 Dockerfile&#xff0c;您可以定义镜像的构建过程。Dockerfile 是由一系列指令组成的文件&#xff0c;Docker 根据这些指令构建镜像。本文将介绍常用的 Dockerfile 指令、格式、解析器指令以及环…...

AWS Glue基础知识

AWS Glue 是一项完全托管的 ETL&#xff08;提取、转换、加载&#xff09;服务&#xff0c;与考试相关&#xff0c;尤其是在数据集成、处理和分析方面。 1.数据集成和 ETL&#xff08;提取、转换、加载&#xff09; AWS Glue 主要用于构建 ETL 管道以准备数据以进行分析。作为…...

单片机-LED实验

1、51工程模版 #include "reg52.h" void main(){ while(1){ } } 2、LED灯亮 #include "reg52.h" sbit LED1P2^0; void main(){ while(1){ LED10; } } 3、LED闪烁 #include "reg52.h" sbit LED1P2^0; //P2大…...

使用Python实现健康跟踪应用:打造智能健康管理助手

随着人们对健康的关注日益增强,智能健康管理逐渐成为热门趋势。通过持续跟踪身体状况、饮食、运动和睡眠等方面的数据,我们可以更好地了解自己的健康状态,并采取相应的措施来保持身体健康。Python,作为一种简洁且功能强大的编程语言,非常适合用来开发健康跟踪应用。本文将…...

结构型模式6.享元模式

结构型模式 适配器模式&#xff08;Adapter Pattern&#xff09;桥接模式&#xff08;Bridge Pattern&#xff09;组合模式&#xff08;Composite Pattern&#xff09;装饰器模式&#xff08;Decorator Pattern&#xff09;外观模式&#xff08;Facade Pattern&#xff09;享元…...

AWS S3文件存储工具类

pom依赖 <!--aws-s3--> <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.12.95</version></dependency>S3Utils import cn.hutool.core.util.ZipUtil; import com.a…...

MacDriver 项目推荐

MacDriver 项目推荐 macdriver Native Mac APIs for Go. Soon to be renamed DarwinKit! 项目地址: https://gitcode.com/gh_mirrors/ma/macdriver 1. 项目基础介绍和主要编程语言 MacDriver 是一个开源项目&#xff0c;旨在为 Go 语言提供原生的 macOS API 支持。该项…...

笔记:一次mysql主从复制延迟高的处理尝试

背景 mysql 5.7 主从复制 主库进行了一次灌数&#xff0c;导致多个大事务产生&#xff0c;主从延迟下不去&#xff0c;经确认该表最终truncate&#xff0c;并且该表仅有insert和select操作&#xff0c;故对该表的事务进行跳过&#xff0c;直到同步至truncate 跳过事务需谨慎&…...

《Vue3实战教程》40:Vue3安全

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 安全​ 报告漏洞​ 当一个漏洞被上报时&#xff0c;它会立刻成为我们最关心的问题&#xff0c;会有全职的贡献者暂时搁置其他所有任务来解决这个问题。如需报告漏洞&#xff0c;请发送电子邮件至 securityvuejs.org。…...

Linux 基础 6.进程

文章目录 6.1 进程和程序1. **程序 (Program)**2. **进程 (Process)**3. **程序与进程的区别**4. **进程的创建与执行**5. **总结** 6.2 进程号和父进程号1. **进程号 (PID)**2. **进程号的分配**3. **父进程号 (PPID)**4. **进程树结构**5. **进程号的限制与调整**6. **总结**…...