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

Kafka的Rebalance机制可能引发什么问题?如何优化?怎么减少不必要的Rebalance

Rebalance机制的核心目的是确保每个消费者都能处理适当数量的分区,以实现负载均衡和高可用性。
一般是消费者组发生变化的时候,比如订阅主题,消费者数量等等发生变化,可能会导致rebalance,rebalance会导致消费者组短时间暂停消费,严重可能持续到分钟级别,所以应当减少不必要的Rebalance。
Apache Kafka的Rebalance机制可能引发以下关键问题及优化方案:

一、Rebalance机制潜在问题

1. 服务可用性下降

Rebalance过程中所有消费者停止消费(Stop The World),在超大分区场景下可能产生秒级甚至分钟级不可用期

2. 重复消费风险

消费者被意外踢出组时,若位移未及时提交,重新加入后会重复消费已处理消息

3. 资源浪费

大规模分区集群进行Rebalance时:

- 网络开销:O(n²)级元数据同步
- CPU消耗:复杂的分区分配计算

二、核心优化策略(开发者调优可使用)

1. 参数调优组合拳

// 心跳检测机制优化
props.put("session.timeout.ms", "45000");  // 超时时间 >= 3倍心跳间隔,单个消费者心跳时间配置
props.put("heartbeat.interval.ms", "15000"); // 消费处理超时控制
props.put("max.poll.interval.ms", "300000"); // 根据业务处理时间调整
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);   // 关闭自动提交
props.put(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG, 
"org.apache.kafka.clients.consumer.CooperativeStickyAssignor"); // 增量Rebalance策略
心跳检测机制(Broker-消费者 双向机制)

kafka的心跳检测机制优化让 超时时间 >= 3倍心跳间隔,目的是为了防止因为网络波动离线的broker和消费者被判断为断连,防止错误的rebalance。这个主要解决的是broker和consumer的连接问题。

增量Rebalance策略(消费者)

Kafka的增量Rebalance(Incremental Cooperative Rebalancing)机制通过以下方式实现优化:

1. 增量调整机制
// 伪代码示例增量Rebalance逻辑
public class ConsumerCoordinator {// 仅重新分配受影响的分区Map<TopicPartition, Consumer> incrementalRebalance(Set<Consumer> current, Set<Consumer> newMembers) {Map<TopicPartition, Consumer> newAssignment = new HashMap<>();// 保留现有有效分配currentAssignment.entrySet().stream().filter(entry -> newMembers.contains(entry.getValue())).forEach(entry -> newAssignment.put(entry.getKey(), entry.getValue()));// 仅重新分配失效的分区redistributeFailedPartitions(newAssignment);return newAssignment;}
}
2. 核心优势对比
维度全量Rebalance增量Rebalance
消费者组停顿时间整个周期(秒级)仅失效分区(毫秒级)
网络传输量传输全部分区元数据仅传输差异数据
状态保存机制完全重新计算继承有效分配状态
消费延迟波动剧烈(全组暂停)平滑(局部暂停)
3. 实现原理
  • 状态保留:通过generationId标识消费组代际,继承有效分配
  • 增量检测:只处理失效消费者持有的分区(如崩溃节点)
  • 分批提交:使用两阶段提交协议保证分配原子性

2. 静态成员资格(消费者)

通过固定group.instance.id实现"僵尸"消费者快速恢复:
java props.put("group.instance.id", "consumer-node-1"); // 每个消费者实例设置唯一ID props.put("session.timeout.ms", "45000"); // 配合设置会话超时
kafka的静态成员资格是在会话超时时间内,可以保有这个静态成员对原有分区的所有权,不会马上rebalance,只有超过超时时间后,才会失去分区所有权,然后消费者开始rebalance。这个主要解决是消费者在消费者组连接问题。

3.分区分配策略优化(消费者)

使用粘性分配策略减少分区震荡:

props.put("partition.assignment.strategy", "org.apache.kafka.clients.consumer.StickyAssignor");
粘性分配策略:
保持现有分配‌:

当消费者组触发rebalance时(例如,有新的消费者加入或离开),粘性分配策略会尽可能保持现有的分区分配不变。这意味着,只要可能,消费者将继续持有它们当前负责的分区,而不是将它们重新分配给其他消费者。

最小化迁移‌:

如果必须重新分配分区(例如,因为某些消费者无法再处理它们当前负责的分区),粘性分配策略会尝试最小化分区的迁移量。它会尽可能地将分区分配给那些已经持有相似或相邻分区的消费者,以减少数据迁移的量和复杂度。

考虑消费者负载‌:

虽然粘性分配策略会优先考虑保持现有分配和最小化迁移,但它也会考虑消费者的负载情况。如果某个消费者的负载过高,而另一个消费者有空闲资源,那么策略会尝试在保持尽可能少的迁移量的同时,平衡消费者的负载。

‌适应集群变化‌:

随着Kafka集群的扩展或缩减,粘性分配策略能够动态地适应这些变化。它会根据集群中消费者的数量和资源情况,以及分区的数量和大小,来重新分配分区,同时尽量减少对系统性能和稳定性的影响。

三、方案示例

Apache Kafka避免Rebalance的核心策略及代码实现:

消费者配置优化(Java示例)

这里就是上面的策略集合:

// ... existing code ...
props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, 45000);  // 会话超时 >= 3倍心跳间隔
props.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG, 15000); // 心跳间隔
props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 300000); // 最大轮询间隔
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);   // 关闭自动提交
props.put(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG, "org.apache.kafka.clients.consumer.CooperativeStickyAssignor"); // 增量Rebalance策略
生产者端优化(防止消息倾斜)

消息倾斜‌(Message Skew)指的是消息在分区上的不均匀分布,从而破坏了负载均衡,某些分区会收到很多消息,导致部分消费者消费压力大,部分消费者空闲的情况。

// ... existing code ...
props.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, "org.apache.kafka.clients.producer.RoundRobinPartitioner"); // 轮询分区策略
props.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384);  // 控制批次大小
props.put(ProducerConfig.LINGER_MS_CONFIG, 20);      // 适当增加等待时间
服务端(broker)参数调整(server.properties)
# 控制Rebalance触发条件
1. num.partitions=6- 作用:设置新创建Topic的默认分区数量- 推荐值:建议设置为消费者数量的整数倍(如6个分区适合2/3/6个消费者)- 影响:分区数过少会导致消费压力集中,过多会增加Rebalance开销2. default.replication.factor=3- 作用:定义新Topic的默认副本数量(ISR机制中的leader加follower总和)- 推荐值:生产环境建议≥3(需与Broker节点数匹配)可以大于broker数量,调优?- 优势:提高数据可靠性,副本分散在不同Broker实现故障容错3. offsets.topic.replication.factor=3- 作用:指定__consumer_offsets的副本数- 重要性:该Topic存储消费位移,必须保证高可用- 限制:必须≤Broker节点数且≤default.replication.factor4. transaction.state.log.replication.factor=3- 作用:控制__transaction_state的副本数量- 应用场景:启用事务时需要保证≥3副本- 注意:必须与transaction.state.log.min.isr配合使用# 优化协调器性能(broker功能组件)
5. group.initial.rebalance.delay.ms=3000- 作用:延迟首次Rebalance的等待时间(单位毫秒)(初始化过程中,给消费者/broker更多ready时间)- 调优效果:允许更多消费者在窗口期内加入,减少频繁Rebalance- 推荐设置:3-5秒(需平衡启动延迟和稳定性)6. group.max.session.timeout.ms=60000- 作用:允许消费者设置的最大会话超时时间(组消费者配置,避免超长会话时间影响消费者组稳定性)- 关联参数:需>消费者端的session.timeout.ms- 推荐场景:处理大数据量的消费者可适当延长超时阈值
__consumer_offsets含义

__consumer_offsets是一个特殊的内部主题(internal topic),它用于存储消费者组的偏移量(offsets)。
__consumer_offsets主题所在的Broker挂了,并且这个主题没有副本(即复制因子为1),那么会出现以下问题:

1.消费者无法继续消费‌:

__consumer_offsets主题存储了消费者组的偏移量信息。如果这个主题所在的Broker挂了,并且没有副本可用,那么消费者将无法获取到它们之前消费的偏移量。
这意味着消费者将无法确定从哪里开始继续消费消息,因为它们无法访问到之前保存的偏移量信息。

‌2.消息丢失或重复消费的风险‌:

由于消费者无法获取到正确的偏移量,它们可能会从错误的位置开始消费消息。
这可能导致一些消息被跳过(即丢失),或者一些消息被重复消费。

3‌.消费者组状态不一致‌:

在消费者组中,每个消费者通常负责消费不同分区的消息。如果__consumer_offsets不可用,那么消费者组中的消费者可能会因为无法获取到正确的偏移量而消费到不同的消息,导致消费者组的状态变得不一致。

4‌.系统恢复困难‌:

如果__consumer_offsets主题的Broker长时间不可用,并且没有副本可以恢复,那么系统恢复将变得非常困难。
管理员可能需要手动干预,例如通过查看Kafka的日志文件来确定消费者之前的偏移量,或者重建消费者组的状态。

‌5.影响业务连续性‌:

对于依赖Kafka进行消息消费的业务系统来说,__consumer_offsets的不可用将严重影响业务的连续性。
这可能导致业务系统无法及时处理新的消息,或者因为消息处理错误而导致业务中断。

__transaction_stat含义

__transaction_state是一个特殊的内部主题(internal topic),它用于存储Kafka事务的状态信息。之前的面试问题中的exactly-once就是靠这个实现的。

‌1.事务状态丢失‌:

__transaction_state主题用于存储Kafka事务的状态信息。如果它挂掉且没有副本,那么所有关于事务的状态信息都将丢失。
这意味着Kafka集群将无法跟踪任何正在进行或已完成的事务的状态。

‌‌2.事务无法提交或回滚‌:

由于事务状态信息的丢失,生产者将无法提交或回滚它们的事务。
这将导致生产者无法确认消息是否已成功发送或是否需要被回滚,从而破坏消息传递的“精确一次”(Exactly-Once)语义。

‌3.数据一致性问题‌:

事务的失败或无法提交/回滚将破坏数据的一致性。
消费者可能会接收到重复的消息,或者某些消息可能永远不会被接收到,导致数据不一致的状态。

运维监控方案
# 实时监控消费者组状态(Windows PowerShell)
./kafka-consumer-groups.bat --bootstrap-server localhost:9092 ^--describe --group my-group --members --verbose各参数作用解释:
1. --bootstrap-server localhost:9092 指定 Kafka 集群的地址和端口(9092 是 Kafka 默认端口)
2. --describe 显示消费者组的详细信息,包括:- 当前分配的 Topic 分区- 消费者偏移量(offset)- 滞后量(lag)
3. --group my-group 指定要监控的消费者组名称(示例组名为 my-group)
4. --members 显示消费者组成员详细信息:- 消费者客户端 ID- 主机信息- 已分配的分区列表
5. --verbose 显示完整的元数据信息,包括:- 消费者会话超时配置- 心跳间隔时间- 分区分配策略# 关键指标监控(JMX)
kafka.consumer:type=consumer-coordinator-metrics,partition-revoke-rate
kafka.consumer:type=consumer-coordinator-metrics,rebalance-rate-per-hour指标解析:
1. partition-revoke-rate- 含义:消费者每秒撤销的分区数量- 监控意义: 突增表明消费者正在经历重新平衡(rebalance) 持续高值可能反映:- 消费者实例频繁崩溃- 网络连接不稳定- 会话超时配置不合理
2. rebalance-rate-per-hour- 含义:每小时发生的消费者组重新平衡次数- 监控阈值建议:- 正常:< 5 次/小时- 警告:5-10 次/小时- 危险:> 10 次/小时- 常见触发原因:- 消费者实例增减(扩容/缩容)- 心跳超时(heartbeat.timeout.ms 设置过小)- 会话超时(session.timeout.ms 配置不合理)

容错机制实现(Spring Kafka示例)

// ... existing code ...
@KafkaListener(topics = "orders", groupId = "order-group")
public void listen(OrderMessage message, Acknowledgment ack) {try {processOrder(message);  // 业务处理ack.acknowledge();       // 手动提交} catch (Exception e) {handlePoisonPill(message); // 死信队列处理ack.nack(5000);          // 延迟重试}
}

四、生产环境建议

1. 容量规划黄金比例
单个消费者线程处理能力 <= 100MB/s
单个消费者组分区数 <= 5000
单集群消费者组数量 <= 500
2. 故障处理SOP

实际生产环境中,建议结合kafka-consumer-groups.sh工具进行状态诊断:

./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \--describe --group my-group --members --verbose

生产环境建议组合方案:

  1. 静态成员+增量Rebalance:减少30%以上的Rebalance次数
  2. 心跳双超时机制:session.timeout.ms ≥ 3 × heartbeat.interval.ms
  3. 分区数黄金法则:单个消费者组管理分区数 ≤ 1000
  4. 双维度监控:Rebalance次数(<5次/小时)+ 处理延迟(<500ms)

相关文章:

Kafka的Rebalance机制可能引发什么问题?如何优化?怎么减少不必要的Rebalance

Rebalance机制的核心目的是确保每个消费者都能处理适当数量的分区&#xff0c;以实现负载均衡和高可用性。 一般是消费者组发生变化的时候&#xff0c;比如订阅主题&#xff0c;消费者数量等等发生变化&#xff0c;可能会导致rebalance&#xff0c;rebalance会导致消费者组短时…...

【和春笋一起学C++】函数——C++的编程模块

目录 1. 原型句法 2. 函数分类 3. 函数参数之按值传递 4. 数组作为函数参数 在C中&#xff0c;要使用函数&#xff0c;必须要有这三个方面&#xff1a; 函数原型&#xff0c;函数原型描述了函数到编译器的接口&#xff0c;函数原型一般放在include文件中。函数原型告诉编译…...

Java高频面试之并发编程-11

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天又来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;父子线程如何共享数据&#xff1f; 在Java中&#xff0c;父子线程共享数据可以通过以下几种方式实现&#xff0c;具体…...

LangChain入门(四) 部署应用程序

1、使用LangServe部署应用程序 安装langserve pip install langserve[all] 代码示例 from fastapi import FastAPI from langchain.chat_models import init_chat_model from langchain_core.messages import SystemMessage, HumanMessage from langchain_core.output_parser…...

精益数据分析(31/126):电商关键指标深度解析与实战策略

精益数据分析&#xff08;31/126&#xff09;&#xff1a;电商关键指标深度解析与实战策略 在创业和数据分析的探索之路上&#xff0c;每一次深入学习都像是解锁了新的技能&#xff0c;让我们离成功更近一步。今天&#xff0c;我依旧带着和大家共同进步的想法&#xff0c;深入…...

【MongoDB篇】MongoDB的集合操作!

目录 引言第一节&#xff1a;集合的“诞生”——自动出现还是手动打造&#xff1f;&#x1f914;第二节&#xff1a;集合的“查阅”——看看这个数据库里有哪些柜子&#xff1f;&#x1f4c2;&#x1f440;第三节&#xff1a;集合的“重命名”——给文件柜换个名字&#xff01;…...

antd中的表格穿梭框(Transfer)如何使用

穿梭框是什么?怎么使用? 需求如下: 有一组端口需要分配给具体接口 功能要求: 1. 需要展示当前端口名称及其所属的接口 2. 需支持搜索功能可对端口名或接口名进行筛选便于分配 3. 分配端口时,需检测当前接口内的端口是否满足此接口最低要求 4. 提供Select下拉框,可供查…...

联邦学习与安全多方计算的结合是隐私保护机器学习领域

联邦学习(Federated Learning, FL)与安全多方计算(Secure Multi-Party Computation, MPC)的结合是隐私保护机器学习领域的前沿方向,其框架设计需兼顾计算效率、安全性和可扩展性。以下是结合两者的框架设计与实现流程的详细解析: 一、框架设计核心目标 隐私保护:确保多…...

mongoose的介绍,连接数据库

Mongoose 是一个基于 Node.js 的 MongoDB ODM&#xff08;Object Data Modeling&#xff09;库&#xff0c;用于在 MongoDB 和 Node.js 应用之间提供结构化的模型层&#xff0c;帮助你更优雅、安全地操作数据库。 &#x1f9fe; 一、Mongoose 简介 &#x1f4e6; 功能&#xff…...

Pytest中的fixture装饰器详解

pytest是Python生态中最流行的自动化测试框架&#xff0c;它通过简洁的语法、强大的功能(如fixture、参数化、插件扩展等)和丰富的插件生态&#xff0c;帮助开发者高效完成单元测试、集成测试和端到端测试。fixture是pytest框架中最核心、最强大的功能之一&#xff0c;它提供了…...

Linux系统配置JDK

目录 一、xftp传输JDK包 1、新建xftp会话并连接到我们的服务器 2、上传jdk包 二、配置环境变量 为了方便javaweb项目的建立&#xff0c;我们需要在搭建好的linux环境下配置安装JDK环境 一、xftp传输JDK包 因为jdk包文件比较大了&#xff0c;这时候不能使用简单的linux上传…...

通义千问最新一代大语言模型Qwen3发布了

通义千问Qwen3全面解析&#xff1a;最强开源大模型Ollama本地运行实战 &#x1f525; 最新重大好消息&#xff01; 经过漫长的等待&#xff0c;今天凌晨阿里云正式发布了Qwen3大语言模型&#xff01;本次更新带来了0.6b 1.7b 4b 8b 14b 30b 32b 235b超大参数模型&#xff0c;更…...

想做博闻强记的自己

2025年4月29日&#xff0c;13~25℃&#xff0c;还好 待办&#xff1a; 冶金《物理》期末测试 阅卷&#xff08;冶金《物理》期末测试试卷&#xff09; 重修《物理》《物理2》电子材料归档 规则变更&#xff0c;《高等数学2》期末试卷推倒重来 遇见&#xff1a;直播画面。 感受…...

爱普生SG2520HHN晶振数据中心服务器的理想解决方案

在当今数字化时代&#xff0c;数据中心作为海量数据存储、处理与传输的核心枢纽&#xff0c;其服务器的高效稳定运行至关重要。服务器作为其核心设备&#xff0c;对时钟信号的精度和稳定性提出了严苛要求——微小的时序误差可能导致数据传输失败或系统宕机。爱普生 SG2520HHN 差…...

【Prometheus-MySQL Exporter安装配置指南,开机自启】

目录 1. 创建 MySQL 监控用户2. 配置 MySQL 认证文件3. 安装 mysqld_exporter4. 配置 Systemd 服务5. 启动并验证服务6. 修改Prometheus配置常见错误排查错误现象排查步骤 6. 验证监控数据关键注意事项 1. 创建 MySQL 监控用户 mysql -uroot -p123456 # 登录MySQL-- 1. 创建监…...

Linux 服务管理两种方式service和systemctl

Linux 服务管理两种方式service和systemctl 确定当前系统使用的哪种命令用来启动服务 SysV init 或者 systemd 使用下面的命令&#xff1a; ps -p 1例如&#xff0c;输出&#xff1a; PID TTY TIME CMD1 ? 00:00:02 systemdSysV init service命令用于对系统…...

P1494 [国家集训队] 小 Z 的袜子 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c;有 q q q 次查询&#xff0c;每次查询给定 ( l , r ) (l,r) (l,r). 你需要求出 2 ∑ i ≤ i < j ≤ r [ a i a j ] ( r − l ) ( r − l 1 ) \dfrac{2\sum…...

(开源)视频画面增强模型:Ev-DeblurVSR (可以解决视频画面不清晰的问题)

在计算机视觉领域&#xff0c;模糊视频超分辨率&#xff08;BVSR&#xff09;是一个复杂且具有挑战性的任务&#xff0c;目标是从低分辨率&#xff08;LR&#xff09;和模糊的输入生成高分辨率&#xff08;HR&#xff09;视频。传统方法常常因缺乏足够运动信息和高频细节而表现…...

探索豆包WEB/PC超能创意1.0:创意新利器的全面解析

在当今数字化创意蓬勃发展的时代&#xff0c;新工具不断涌现&#xff0c;为创作者们带来了更多的可能性。豆包WEB/PC超能创意1.0便是其中一款备受瞩目的产品&#xff0c;它的出现为创意工作者和爱好者们打开了一扇充满无限可能的大门。 一、体验信息&#xff1a;探索创意新领域…...

五、UI自动化测试05--PyTest框架

目录 一、PyTest 框架2. 特点2. 安装步骤3. 基本使⽤3.1 测试函数形式3.2 执⾏⽅式3.3 测试类形式3.4 执⾏⽅式3.5 另⼀种执⾏⽅式: 主函数执⾏3.6 特殊⽅法: 函数级别3.7 特殊⽅法: 类级别3.8 特殊⽅法: 函数级别和类级别同时使⽤ 4. pytest 配置⽂件4.1 选项字段获取4.2 编写…...

51LA使用方法与悟空统计,网站数据分析的双重选择

在网站运营与数据分析领域&#xff0c;51LA作为国内较早的流量统计工具&#xff0c;曾为许多用户提供基础的访问数据监测服务。然而&#xff0c;随着技术的发展和用户需求的升级&#xff0c;越来越多的企业开始寻求功能更全面、体验更优的统计工具。小编今天将给大家介绍一款更…...

MongoDB的下载安装与启动

MongoDB的下载安装与启动&#xff0c; 一、MongoDB下载安装 1. 官网下载 打开官网&#xff1a;https://www.mongodb.com/try/download/community选择&#xff1a; 版本&#xff08;Version&#xff09;&#xff1a;选最新版或者根据需要选旧版。平台&#xff08;OS&#xff0…...

解决ktransformers v0.3 docker镜像中 operator torchvision::nms does not exist 问题

问题背景 更新ktransformers docker镜像到v0.3版本后&#xff08;之前为v0.2.4post1&#xff09;&#xff0c;使用更新前启动命令无法正确启动服务&#xff0c;提示以下错误&#xff1a; Traceback (most recent call last):File "/workspace/ktransformers/ktransforme…...

MySQL事务隔离级别的实现原理MVCC

一、什么是MVCC? MVCC(Multi-Version Concurrency Control)&#xff0c;即多版本并发控制&#xff0c;是并发读写场景下&#xff0c;数据库层面提供的一种解决方案。 数据库的并发场景有以下三种&#xff1a; 读读 当多个事务同时进行读取操作时&#xff0c;它们之间不存在…...

EtherCAT 分布式时钟(DC)补偿技术解析

一、技术定义 EtherCAT 分布式时钟(Distributed Clock, DC)是一种基于硬件的高精度同步机制,旨在解决工业自动化系统中多设备协同控制的时间同步问题。其核心功能包括: 初始偏移补偿:消除从站本地时钟与主站系统时间的初始偏差,确保所有设备在启动阶段的时间基准一致。…...

7.进程概念(三)

一、进程优先级 是什么&#xff1f; 进程得到CPU资源的先后顺序。 为什么要有进程优先级&#xff1f; 目标资源稀缺&#xff0c;导致要通过优先级确定谁先谁后。 如何比较和分配&#xff1f; 进程优先级也是一种数字&#xff0c;int&#xff0c;task_struct 值越低&#xff0c;…...

MATLAB小试牛刀系列(2)

问题描述 捷运公司在下一年度 1 - 4 月的 4 个月内拟租用仓库堆放物资。已知各月所需仓库面积列于表 1.1。仓库租借费用随合同期而定&#xff0c;期限越长&#xff0c;折扣越大&#xff0c;具体数字见表 1.1。租借合同每月初都可办理&#xff0c;每份合同具体规定租用面积和期…...

一个SciPy图像处理案例的全过程

本文利用SciPy进行图像处理&#xff0c;并记录图像处理的全过程&#xff0c;处理过程包含高斯模糊、腐蚀等操作。 代码 import matplotlib.pyplot as plt import numpy as np from scipy import ndimage# 设置图像的大小为 128x128&#xff0c;即 128x128 的逻辑像素 l 128 …...

修改输入框选择框颜色

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 有时候需要改写element原来输入框/选择框的颜色 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 输入框的话需要hover时边框颜色修改&#xff0c;选择值的时候边框颜色修改以及选…...

rust 全栈应用框架dioxus

逛github时发现了一个号称全栈应用框架dioxus,适用于web / desktop / mobile。零配置、集成了热启动和基于信号的状态管理。是由rust编写的&#xff0c;所以也就不受平台限制。 既然说的这么好&#xff0c;那就来试试构建一下三种平台的应用&#xff0c;构建的应用编译成web 、…...

电子电器框架 --- 数据连接性和云集成在增强电气/电子架构方面的作用

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

Nvidia 可能会发布具有增强内存配置的 RTX 5080 和 5070 Super

距离英伟达正式发布RTX 50系列显卡仅过去数月&#xff0c;有关"Super"系列升级版显卡的传闻已甚嚣尘上。据硬件爆料平台Chiphell论坛&#xff08;该消息源可靠性参差不齐&#xff09;用户透露&#xff0c;英伟达可能正在研发配备24GB显存的RTX 5080 Super和16GB显存的…...

预留库存的实现

1. 实体类 import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data;import java.sql.Timestamp;Data TableName("products") public class Product {private Long id;private String name;private int stock; }Data TableName("shopping_c…...

[逆向工程]如何理解小端序?逆向工程中的字节序陷阱与实战解析

[逆向工程]如何理解小端序&#xff1f;逆向工程中的字节序陷阱与实战解析 关键词&#xff1a;逆向工程、小端序、字节序、二进制分析、数据解析 引言&#xff1a;为什么字节序是逆向工程师的必修课&#xff1f; 在逆向工程中&#xff0c;分析二进制数据是最基础的任务之一。…...

【Python笔记 05】 if判断、比较运算符与逻辑运算符

一、if判断 1、基本格式 if 要判断的条件&#xff1a; #条件成立为true条件成立的时候要做的事情注&#xff1a;注意判断条件后面的冒号&#xff0c;以及条件成立要做的事情此行代码的缩进&#xff0c;最好是软件自动缩进。 2、练习题 用户在控制台输入成绩&#xff0c;…...

AI应用实战:Excel表的操作工具

有个小需求是这样的&#xff0c;需要在一份数据表里&#xff0c;将1000多个客户的月报数据分别单独截图存档&#xff0c;有客户需要的时候就要发给客户&#xff0c;截图下来的也是以客户为命名&#xff0c;这样查找时也比较容易匹配上。 在没有写工具之前&#xff0c;以往财务…...

P1903 [国家集训队] 数颜色 / 维护队列 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c;有 m m m 个操作分两种&#xff1a; modify ⁡ ( i , x ) \operatorname{modify}(i,x) modify(i,x)&#xff1a;执行 a i ← x a_i\gets x ai​←x. query ⁡ ( …...

Transformer数学推导——Q33 分析正弦编码的频率衰减对长程依赖建模的影响

该问题归类到Transformer架构问题集——位置编码——绝对位置编码。请参考LLM数学推导——Transformer架构问题集。 1. 背景知识&#xff1a;Transformer 与长程依赖 在自然语言处理和其他序列数据处理任务中&#xff0c;Transformer 模型凭借其强大的性能脱颖而出。与传统的…...

微服务架构下的熔断与降级:原理、实践与主流框架深度解析

微服务架构下的熔断与降级&#xff1a;原理、实践与主流框架深度解析 在现代分布式系统中&#xff0c;熔断 (Circuit Breaker) 和 降级 (Degrade) 是保障系统弹性与高可用性的核心机制。本文将系统解析两者的原理、区别与协同方式&#xff0c;并结合主流框架 (Resilience4j、S…...

大脑、机器人与贝叶斯信念及AI推理

在机器不再局限于重复性任务的世界里&#xff0c;机器人技术已经大胆地迈入了感知、学习和决策的领域。这篇文章探讨了智能机器人系统是如何构建的——从理解它们嘈杂的传感器和不确定的环境&#xff0c;到使它们能够做出明智的选择并随着时间的推移调整自己的行为。 AI推理 …...

stm32wb55rg (4) 启用usart串口

code repo: 访问gitee 上节课成功点亮了LED&#xff0c;这次来把usart 用起来&#xff0c;毕竟有交互才是系统。 技术准备 首先查看手册&#xff0c;发现mcu有1个usart和1个 lpuart。 usart 的使用需要两个pin&#xff0c;一个接收一个发送。继续查看pin and ball definition…...

LSTM预测模型

LSTM预测模型 时间序列预测通常需要捕获时间依赖性&#xff0c;而 L S T M LSTM LSTM&#xff08;长短时记忆网络&#xff09;是处理时间序列数据的经典深度学习方法之一。结合长短时注意力机制&#xff08; L o n g − S h o r t A t t e n t i o n M e c h a n i s m Long-S…...

[计算机网络]物理层

文章目录 物理层的概述与功能传输介质双绞线:分类:应用领域: 同轴电缆&#xff1a;分类: 光纤&#xff1a;分类: 无线传输介质&#xff1a;无线电波微波&#xff1a;红外线&#xff1a;激光&#xff1a; 物理层设备中继器&#xff1a;放大器&#xff1a;集线器(Hub)&#xff1a…...

Day16(贪心算法)——LeetCode45.跳跃游戏II763.划分字母区间

1 LeetCode45.跳跃游戏II 1.1 题目描述 与跳跃游戏类似&#xff0c;跳跃游戏II给定长为n的从0开始索引的整数数组nums&#xff0c;nums[i]是你在i处能向右跳跃的最大步数&#xff0c;求到达数组最后一个索引处需要跳跃的最少次数。   一个示例&#xff1a;nums[2,3,1,1,4]&a…...

【MySQL】表的内外连接

表的内外连接 一. 内连接二. 外连接1. 左外连接2. 右外连接 三. 简单案例四. SQL 实战 表的连接分为内连接和外连接 一. 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;之前博客中的查询都是内连接&#xff0c;也是在开发过程中使用的最多…...

Prometheus使用Recoding Rules优化性能

通过PromQL可以实时对Prometheus中采集到的样本数据进行查询&#xff0c;聚合以及其它各种运算操作。而在某些PromQL较为复杂且计算量较大时&#xff0c;直接使用PromQL可能会导致Prometheus响应超时的情况。这时需要一种能够类似于后台批处理的机制能够在后台完成这些复杂运算…...

Linux 怎么安装 Oracle Java 8

在 Linux 系统上安装 Oracle Java 8 的步骤如下&#xff1a; 1. 下载 Oracle Java 8 访问 Oracle 官方网站的 Java 下载页面&#xff1a; 下载链接&#xff1a;Oracle Java 8 下载页面选择适合 Linux x64 的安装包&#xff08;通常是 .tar.gz 格式&#xff09;。需要登录 Or…...

项目三 - 任务2:创建笔记本电脑类(一爹多叔)

在本次实战中&#xff0c;我们通过Java的单根继承和多接口实现特性&#xff0c;设计了一个笔记本电脑类。首先创建了Computer抽象类&#xff0c;提供计算的抽象方法&#xff0c;模拟电脑的基本功能。接着定义了NetCard和USB两个接口&#xff0c;分别包含连接网络和USB设备的抽象…...

基于蓝耘MaaS平台进行api调用创建本地智能ai

关于MaaS平台 MaaS 平台即 “模型即服务”&#xff08;Model as a Service&#xff09;平台&#xff0c;是一种依托云计算的人工智能服务模式。 模型即服务&#xff08;MaaS&#xff09;平台面向企业开发者、创业者及非技术背景用户&#xff0c;提供开箱即用的热门AI模型服务&…...

【Luogu】动态规划七

P1566 加等式 - 洛谷 思路&#xff1a; 其实这道题就是一个纸老虎&#xff0c;说这么多&#xff0c;其实最后就是问所有 a[i] 的组成方法之和有多少种 那么显然的一个dp就是 dp[j] dp[j - a[i]] 然后这题就结束了&#xff0c;就是这么简单&#xff0c;最后记得减去 n&…...