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

ClickHouse 中出现 DB::Exception: Too many parts 错误

在 ClickHouse 中出现 DB::Exception: Too many parts 错误,通常是由于表中数据分片(parts)数量超过系统限制,导致合并(merge)操作无法及时处理。以下是逐步解决方案:


1. 理解问题原因

  • MergeTree 表引擎特性:ClickHouse 的 MergeTree 引擎表会将数据划分为多个 parts,后台线程定期合并小 parts 成大 part。如果写入速度远快于合并速度,parts 数量会累积。
  • 直接原因:当前表有 600 个 parts(平均大小 10.82 MiB),超过默认阈值(通常为 300)。

2. 临时应急措施

手动触发合并
OPTIMIZE TABLE your_table FINAL;
  • 作用:强制合并所有 parts,但可能耗时较长,生产环境需谨慎。
  • 注意FINAL 关键字会强制合并,即使数据已经合并过。

3. 优化写入策略

减少小批量写入频率
  • 推荐批量大小:单次插入数据量建议在 100MB~1GB 之间(根据硬件调整)。
  • 示例:将每秒写入 100 次 1MB 的数据,改为每 10 秒写入 1 次 100MB 的数据。
使用 Buffer 表缓冲写入
CREATE TABLE your_table_buffer AS your_table
ENGINE = Buffer(default, your_table, 16, 10, 100, 10000, 1000000, 10000000, 100000000);
  • 作用:通过内存缓冲表累积小批量写入,批量刷入目标表。

4. 调整合并参数

修改 merge_tree 配置(在 config.xml 或 users.xml
<merge_tree><max_suspicious_broken_parts>5</max_suspicious_broken_parts><max_parts_in_total>1000</max_parts_in_total>  <!-- 调高阈值 --><parts_to_delay_insert>500</parts_to_delay_insert>  <!-- 插入延迟阈值 --><parts_to_throw_insert>600</parts_to_throw_insert>  <!-- 插入报错阈值 -->
</merge_tree>
  • 关键参数
    • max_parts_in_total: 允许的最大 parts 总数。
    • parts_to_delay_insert: 达到此数量后,新插入会延迟。
    • parts_to_throw_insert: 达到此数量后,新插入会报错。
增加后台合并线程数
<background_pool_size>16</background_pool_size>       <!-- 默认 16 -->
<background_schedule_pool_size>16</background_schedule_pool_size>
  • 注意:根据 CPU 核心数调整,避免过度占用资源。

5. 优化表结构

调整分区粒度
CREATE TABLE your_table (...
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(date_column)  -- 按月度分区,而非按天
ORDER BY (timestamp, id);
  • 作用:减少分区数量,降低每个分区的 parts 数量。
使用 TTL 自动清理旧数据
ALTER TABLE your_table MODIFY TTL date_column + INTERVAL 30 DAY;
  • 作用:自动删除过期数据,减少 parts 总数。

6. 监控与维护

查询当前 parts 状态
SELECTtable,count() AS parts_count,formatReadableSize(sum(bytes)) AS total_size
FROM system.parts
WHERE active
GROUP BY table;
定期检查合并状态
SELECTdatabase,table,elapsed,progress,is_mutation
FROM system.merges;

7. 高级方案(可选)

使用 Kafka 引擎表 + Materialized View
CREATE TABLE your_kafka_source
ENGINE = Kafka()
SETTINGS ...;CREATE MATERIALIZED VIEW your_mv TO your_table AS
SELECT * FROM your_kafka_source;
  • 作用:通过 Kafka 引擎表批量消费数据,减少写入频率。

总结

  1. 立即执行:手动 OPTIMIZE TABLE 缓解问题。
  2. 短期调整:调高 max_parts_in_total 阈值。
  3. 长期根治:优化写入批量大小、使用 Buffer 表或 Kafka 管道。
  4. 预防措施:监控 parts 数量,调整分区策略和 TTL。

通过组合使用这些方法,可有效避免 Too many parts 错误,确保 ClickHouse 稳定运行。

优化 ClickHouse 的 `background_pool_size` 需要结合硬件资源、工作负载类型和监控指标逐步调整。以下是分步指南:

---

### **1. 理解参数作用**
- **`background_pool_size`** 控制后台线程池的大小,用于处理合并(Merge)、物化视图刷新、数据插入(Insert)等后台任务。
- 线程不足会导致任务积压(如合并延迟、写入卡顿);过多可能导致资源争用(CPU/IO)或上下文切换开销。

---

### **2. 查看当前状态**
#### **检查后台任务积压**
```sql
SELECT
    database,
    table,
    elapsed,
    progress
FROM system.merges;  -- 查看合并任务进度和耗时

SELECT * FROM system.metrics
WHERE metric IN ('BackgroundPoolTask', 'BackgroundSchedulePoolTask');  -- 等待执行的任务数
```
- 如果 `elapsed` 值高或任务堆积,可能是线程不足。

#### **监控系统指标**
```sql
SELECT
    value AS threads_num,
    'background_pool_size' AS param
FROM system.settings
WHERE name = 'background_pool_size';
```
- 对比当前线程数与实际负载。

---

### **3. 设置建议值**
#### **初始建议值**
- **CPU 核心数**:通常设置为物理 CPU 核心数的 **50%~100%**。
  - 例如:16 核 CPU → 初始值设为 `8~16`。
- **存储类型**:
  - **HDD**:保守设置(避免 IO 争用)。
  - **SSD/NVMe**:可适当调高(IO 吞吐更高)。

#### **写入/合并密集型场景**
- 高频写入或大分区合并时,可逐步增加线程数(例如从 `16` 调整到 `24`),但需观察资源瓶颈。

---

### **4. 调整并验证**
#### **修改配置**
在 `config.xml` 或 `users.xml` 中调整:
```xml
<background_pool_size>24</background_pool_size>
```
重启 ClickHouse 服务生效。

#### **验证效果**
- **任务积压减少**:检查 `system.merges` 和 `system.metrics`。
- **资源利用率**:监控 CPU、IO 使用率(避免长期超过 80%)。
- **查询性能**:确保前台查询未因资源争用而变慢。

---

### **5. 高级优化**
#### **区分任务优先级**
- 使用 `background_processing_pool_size`(社区版需手动调整)分离合并和插入任务。
- 通过 `SET max_threads = ...` 限制单个查询资源,避免后台任务被阻塞。

#### **结合其他参数**
- **`max_background_merges`**:控制合并任务并发数(默认 16)。
- **`number_of_free_entries_in_pool_to_execute_mutation`**:控制突变任务触发阈值。

---

### **6. 监控工具**
- **Prometheus + Grafana**:集成 `ClickHouse Exporter` 监控后台任务队列、CPU/IO。
- **内置表**:定期检查 `system.asynchronous_metrics` 和 `system.events`。

---

### **示例配置**
```xml
<!-- 针对 32 核 SSD 服务器,高写入场景 -->
<background_pool_size>24</background_pool_size>
<max_background_merges>16</max_background_merges>
<number_of_free_entries_in_pool_to_execute_mutation>8</number_of_free_entries_in_pool_to_execute_mutation>
```

---

### **总结**
- 从默认值开始,逐步调整并观察监控指标。
- 平衡后台任务和前台查询的资源占用。
- 磁盘 IO 或 CPU 瓶颈时,优先优化硬件或数据分布(如分区键设计)。

通过以上步骤,可有效优化 `background_pool_size` 提升 ClickHouse 后台任务处理效率。

相关文章:

ClickHouse 中出现 DB::Exception: Too many parts 错误

在 ClickHouse 中出现 DB::Exception: Too many parts 错误&#xff0c;通常是由于表中数据分片&#xff08;parts&#xff09;数量超过系统限制&#xff0c;导致合并&#xff08;merge&#xff09;操作无法及时处理。以下是逐步解决方案&#xff1a; 1. 理解问题原因 MergeTr…...

PPT 小黑第20套

对应大猫21 Word转PPT 图片也得复制 题目要求两套PPT母板&#xff0c;应用不同版式&#xff08;版式那就可以选&#xff09; 竖排文字...

大模型管理工具:LLaMA-Factory

目录 一、安装与环境配置 二、​启动 Web 界面 三、数据准备 四、模型训练 五、模型评估 七、模型导出 八、API服务部署 LLaMA-Factory 是一个开源的大语言模型&#xff08;LLM&#xff09;微调框架&#xff0c;旨在简化大规模模型的训练、微调和部署流程。它支持多种主…...

【机器人栅格地图】基于鹭鹰算法SBOA实现机器人栅格地图路径规划(目标函数:最短距离)附Matlab代码

基于鹭鹰算法&#xff08;SBOA&#xff09;的机器人栅格地图路径规划实现 一、鹭鹰算法&#xff08;SBOA&#xff09;的基本原理 鹭鹰优化算法&#xff08;Secretary Bird Optimization Algorithm, SBOA&#xff09;是一种新型元启发式算法&#xff0c;灵感源自鹭鹰的捕猎和逃…...

【Linux篇】版本控制器-Git

&#x1f4cc; 个人主页&#xff1a; 孙同学_ &#x1f527; 文章专栏&#xff1a;Liunx &#x1f4a1; 关注我&#xff0c;分享经验&#xff0c;助你少走弯路&#xff01; 文章目录 1.如何理解版本控制&#xff1f;2.Git的操作补充细节问题 1.如何理解版本控制&#xff1f; 版…...

论文阅读:KAM-CoT: Knowledge Augmented Multimodal Chain-of-Thoughts Reasoning

论文来源&#xff1a;AAAI 2024 论文地址&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/29844 Abstract LLM通过利用能够逐步思考的思维链在NLP任务中取得了很好的性能&#xff0c;但是为LLM扩展多模态能力时计算成本高&#xff0c;且需要大量的硬件资源。…...

linux内存页块划分及位图存储机制

page_alloc.c - mm/page_alloc.c - Linux source code v5.4.285 - Bootlin Elixir Cross Referencer 一. 什么是页块&#xff08;Pageblock&#xff09;&#xff1f; 定义&#xff1a;页块是物理内存中的一个连续区域&#xff0c;由 2^pageblock_order 个物理页&#xff08;Pag…...

一台云工作站是否能通过共享云桌面让10人流畅进行三维设计

云工作站&#xff0c;作为一种基于云计算技术的远程工作站解决方案&#xff0c;它将高性能的计算资源集中在云端服务器上&#xff0c;用户通过网络访问这些资源&#xff0c;实现高效、灵活的办公和创作环境。而三维设计&#xff0c;尤其是涉及复杂模型、高精度渲染等领域&#…...

安卓应用之服务

服务 服务也是四大组件之一&#xff0c;用于执行长时间运行操作的组件&#xff0c;它与用户界面&#xff08;UI&#xff09;是分开的&#xff0c;因此即使用户切换到其他应用&#xff0c;服务依然可以继续运行。主要用于处理一些不需要用户交互的任务。例如&#xff0c;播放音…...

【Vue CLI脚手架开发】——6.scoped样式

文章目录 一、scoped是什么二、应用案例1.使用代码2.原理3父组件App未添加scoped影响 一、scoped是什么 我们知道vue为了防止css样式污染&#xff0c;在每个组件中提供了 scoped属性进行限定css作用域&#xff1b;当<style>标签有 scoped 属性时&#xff0c;它的 CSS 只…...

JVM参数调整

一、内存相关参数 1. 堆内存控制 -Xmx&#xff1a;最大堆内存&#xff08;如 -Xmx4g&#xff0c;默认物理内存1/4&#xff09;。-Xms&#xff1a;初始堆内存&#xff08;建议与-Xmx相等&#xff0c;避免动态扩容带来的性能波动&#xff09;。-Xmn&#xff1a;新生代大小&…...

NodeJS学习笔记

NodeJS软件安装 node环境安装&#xff1a; https://nodejs.org 安装好后的node通常在C:\Program Files\nodejs验证安装是否成功 node -v npm -v 进入REPL模式命令行模式 nodeNodeJS在REPL模式和编辑器使用 windos在dos下常用命令 windos命令&#xff1a; 1、cmd dos系统2、…...

缺陷管理工具-禅道

目录 一、禅道的介绍 二、禅道的特点 三、禅道使用流程 1.管理缺陷 2.管理用例 黑马测试视频学习记录 一、禅道的介绍 二、禅道的特点 三、禅道使用流程 1.管理缺陷 2.管理用例...

C++ 单词识别_牛客题霸_牛客网

点击链接即可查看题目: 单词识别_牛客题霸_牛客网 一、题目 描述 输入一个英文句子&#xff0c;把句子中的单词(不区分大小写)按出现次数按从多到少把单词和次数在屏幕上输出来&#xff0c;次数一样的按照单词小写的字典序排序输出&#xff0c;要求能识别英文单词和句号。 输入…...

qt open3dAlpha重建

qt open3dAlpha重建 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionAlpha_triggered();//alpha重建 void MainWindow::...

PS内发光、外发光

内外发光&#xff08;图层样式–》内发光、外发光&#xff09;&#xff1a;&#xff08;滤色 效果最好&#xff09; 内发光–》结构&#xff1a;内发光的外形 内发光–》图素&#xff1a;渐变发光细节的调整 内发光–》品质&#xff1a;增加质感 内发光–》图素–》阻塞&#x…...

C++之thread_local变量

C之thread_local变量_c threadlocal-CSDN博客 thread_local简介 thread_local 是 C11 为线程安全引进的变量声明符。表示对象的生命周期属于线程存储期。 线程局部存储(Thread Local Storage&#xff0c;TLS)是一种存储期(storage duration)&#xff0c;对象的存储是在…...

鸿蒙开发中,数据持久化之Transaction(事务)的概念及应用

SQLite 数据库具备事务处理能力。 事务本质上是一组操作的集合&#xff0c;它具有原子性&#xff0c;意味着这一系列操作要么全部成功执行&#xff0c;要么全部失败&#xff0c;不存在部分操作成功而部分失败的中间状态。 以常见的转账功能为例&#xff0c;A 账户向 B 账户转账…...

软考高项笔记 1.1.1 信息

1.1.1 信息 &#x1f4da; 信息(Information) 是物质、能量及其属性的标示的集合&#xff0c;是确定性的增加。它以物质介质为载体&#xff0c;传递和反映世界各种事物存在方式、运动状态等的表征。信息不是物质&#xff0c;也不是能力&#xff0c;它以一种普遍形式&#xff0c…...

【TCP/IP协议栈】计算机网络知识补充

参考资料&#xff1a; 前言 【计算机网络知识】 总结 IP 在互联网中MAC 在局域网中 1. IP地址 IP地址有两个版本&#xff0c;IPv4和IPv6。IPv6现在并没有普及使用&#xff0c;所以现在使用的地址大部分依然是IPv4。 IP地址是在IP协议中&#xff0c;用来标识网络中不同主机的…...

【C++进阶学习】第一讲——继承(下)---深入挖掘继承的奥秘

目录 1.隐藏 1.1隐藏的概念 1.2隐藏的两种方式 2.继承与友元 3、继承与静态成员 4.单继承和多继承 4.1单继承 4.2多继承 5.菱形继承 问题1&#xff1a;冗余性 问题2&#xff1a;二义性 6.虚拟继承 7.总结 1.隐藏 1.1隐藏的概念 在 C 中&#xff0c;继承是一种机制…...

IDEA Generate POJOs.groovy 踩坑小计 | 生成实体 |groovy报错

一、无法生成注释或生成的注释是null 问题可能的原因&#xff1a; 1.没有从表里提取注释信息&#xff0c;修改def calcFields(table)方法即可 def calcFields(table) {DasUtil.getColumns(table).reduce([]) { fields, col ->def spec Case.LOWER.apply(col.getDataType().…...

数据结构与算法 计算机组成 八股

文章目录 数据结构与算法数组与链表的区别堆的操作红黑树定义及其原理 计算机组成int和uint的表示原码反码补码移码的定义&#xff1f;为什么用补码&#xff1f; 数据结构与算法 数组与链表的区别 堆的操作 红黑树定义及其原理 计算机组成 int和uint的表示 原码反码补码移…...

【奇点时刻】通义千问开源QwQ-32B技术洞察报告(扫盲帖)

以下报告将基于今天各大社区对 Qwen/QwQ-32B&#xff08;下文简称「QwQ-32B」&#xff09;模型的讨论、测评与实测体验进行综合性分析与洞察。本报告将从模型背景与定位、核心技术、性能表现与对比、部署与使用方式&#xff0c;以及未来潜力与可能的影响五个维度&#xff0c;帮…...

神经网络中梯度计算求和公式求导问题

以下是公式一推导出公式二的过程。 表达式一 ∂ E ∂ w j k − 2 ( t k − o k ) ⋅ sigmoid ( ∑ j w j k ⋅ o j ) ⋅ ( 1 − sigmoid ( ∑ j w j k ⋅ o j ) ) ⋅ ∂ ∂ w j k ( ∑ j w j k ⋅ o j ) \frac{\partial E}{\partial w_{jk}} -2(t_k - o_k) \cdot \text{sigm…...

IDEA 2024.1.7 Java EE 无框架配置servlet

1、创建一个目录&#xff08;文件夹&#xff09;lib来放置我们的库 2、将tomcat目录下的lib文件夹中的servlet-api.jar文件复制到刚创建的lib文件夹下。 3、把刚才复制到lib下的servlet-api.jar添加为库 4、在src下新建一个package&#xff1a;com.demo&#xff0c;然后创…...

Three.js 快速入门教程【十四】使用Stats.js监控渲染帧率和性能优化

系列文章目录 Three.js 快速入门教程【一】开启你的 3D Web 开发之旅 Three.js 快速入门教程【二】透视投影相机 Three.js 快速入门教程【三】渲染器 Three.js 快速入门教程【四】三维坐标系 Three.js 快速入门教程【五】动画渲染循环 Three.js 快速入门教程【六】相机控件 Or…...

基于RapidOCR与DeepSeek的智能表格转换技术实践

基于RapidOCR与DeepSeek的智能表格转换技术实践 一、技术背景与需求场景 在金融分析、数据报表处理等领域&#xff0c;存在大量图片格式的表格数据需要结构化处理。本文介绍基于开源RapidOCR表格识别与DeepSeek大模型的智能转换方案&#xff0c;实现以下典型场景&#xff1a; …...

简单多状态 dp 问题(典型算法思想)—— OJ例题算法解析思路

目录 一、面试题 17.16. 按摩师 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; 代码思路解析&#xff1a; 问题分析&#xff1a; 动态规划定义&#xff1a; 状态转移方程&#xff1a; 初始化&#xff1a; 填表&#xff1a; 返回值&#xff1a; 优化空…...

【电路笔记 TMS320C6***DSP】外部存储器接口 A EMIFA向FPGA(作为异步存储器)写入数据的示例

目录 DSP和FPGA的连接DSP端&#xff1a;传输数据给FPGAFPGA端&#xff1a;接收数据 EMIFA&#xff08;External Memory Interface A&#xff09;的“异步存储器”&#xff08;Asynchronous Memory&#xff09;指的是那些不与系统时钟同步进行读写操作的外部存储设备。这类存储器…...

pgsql 查看数据库、表、索引大小等

查询数据库大小 -- 查询单个数据库大小 select pg_size_pretty(pg_database_size(postgres)) as size;-- 查询所有数据库大小 select datname, pg_size_pretty (pg_database_size(datname)) AS size from pg_database; 查询表大小 -- 查询单个表大小 select pg_size_pretty(p…...

物联网感知层采集的数据 经过etl 后 ,输送给ai 训练模型 和模型本身调优

在物联网(IoT)系统中,感知层采集的数据经过 ETL(Extract, Transform, Load) 处理后,可以作为 AI 模型的训练数据,用于模型训练和调优。以下是实现这一过程的详细步骤和技术方案: 一、数据流程概述 数据采集:通过传感器和物联网设备采集原始数据。ETL 处理:对原始数据…...

C语言基础

一、基础 C语言文件 后缀 .c为源文件 .h为头文件 以 Visual studio 为例右键点击源文件点击添加&#xff0c;新建项 .c为C语言文件&#xff0c;.cpp为C文件 后缀不同编译器会按照不同的编译语法进行编译 .cpp以C语法 第一个程序 #include <stdio.h> //包含 st…...

pinginfoview网络诊断工具中文版

介绍 pinginfoview中文版本是一款实用的网络诊断工具&#xff0c;它专为中文用户设计&#xff0c;提供了方便易用的界面&#xff0c;使得在Windows环境下进行ping测试变得更加简单。该工具是由NirSoft开发的一款免费的桌面应用程序&#xff0c;尽管官方可能并未正式发布中文版…...

Anyting LLM LLM温度设置范围

在Anything LLM中&#xff0c;LLM&#xff08;Language Model&#xff09;的温度设置是一个关键参数&#xff0c;它影响着模型生成文本时的随机性和确定性。关于Anything LLM的LLM温度设置范围&#xff0c;虽然没有官方的明确数值范围说明&#xff0c;但通常温度参数的设置遵循…...

鸿蒙Android4个脚有脚线

效果 min:number122max:number150Row(){Stack(){// 底Text().border({width:2,color:$r(app.color.yellow)}).height(this.max).aspectRatio(1)// 长Text().backgroundColor($r(app.color.white)).height(this.max).width(this.min)// 宽Text().backgroundColor($r(app.color.w…...

RecyclerView与ListView的优化

RecyclerView与ListView的优化 一、基础概念对比 1.1 ListView与RecyclerView概述 ListView和RecyclerView都是Android中用于展示列表数据的重要控件&#xff0c;但RecyclerView是更现代化的解决方案&#xff0c;提供了更多的灵活性和性能优势。 ListView特点 Android早期…...

【人工智能】GPT-4 vs DeepSeek-R1:谁主导了2025年的AI技术竞争?

前言 2025年&#xff0c;人工智能技术将迎来更加激烈的竞争。随着OpenAI的GPT-4和中国初创公司DeepSeek的DeepSeek-R1在全球范围内崭露头角&#xff0c;AI技术的竞争格局开始发生变化。这篇文章将详细对比这两款AI模型&#xff0c;从技术背景、应用领域、性能、成本效益等多个方…...

2025年Cursor最新安装使用教程

Cursor安装教程 一、Cursor下载二、Cursor安装三、Cursor编辑器快捷键(1) 基础编辑快捷键(2) 导航快捷键(3) 其他常用快捷键 一、Cursor下载 Cursor官方网站&#xff08;https://www.cursor.com/ &#xff09; 根据自己电脑操作系统选择对应安装包 二、Cursor安装 下载完成后…...

原码、反码和补码的介绍和区别

在计算机中&#xff0c;有符号整数的表示方法主要有 原码、反码和补码&#xff0c;它们解决了二进制数表示正负数及简化运算的问题。以下是分步说明&#xff1a; 1. 原码&#xff08;Sign-Magnitude&#xff09; 定义&#xff1a;最高位为符号位&#xff08;0正1负&#xff09…...

STM32 进阶 定时器

在stm32中定时器大概分为4类 1、系统定时器&#xff1a;属于arm内核&#xff0c;内嵌在NVIC中 2、高级定时器&#xff1a;可以用来刹车和死区 3、通用定时器&#xff1a;可以用来输出pwm方波 4、基本定时器&#xff1a;只能记数 系统定时器注意&#xff1a; 1、系统定时器…...

山东大学:《DeepSeek应用与部署》

大家好&#xff0c;我是吾鳴。 今天吾鳴要给大家分享一份由山东大学出版的DeepSeek报告——《DeepSeek应用与部署》&#xff0c;这份报告讲述了AIGC的发展历程&#xff0c;DeepSeek应用场景和DeepSeek如何本地化部署。报告一共80页PPT&#xff0c;文末有完整版下载地址。 内容摘…...

【无标题】FrmImport

文章目录 前言一、问题描述二、解决方案三、软件开发&#xff08;源码&#xff09;四、项目展示五、资源链接 前言 我能抽象出整个世界&#xff0c;但是我不能抽象你。 想让你成为私有常量&#xff0c;这样外部函数就无法访问你。 又想让你成为全局常量&#xff0c;这样在我的…...

Android14 OTA升级

因Vendor Freeze的缘故,若开启Non-AB OTA, 则会遇到交叉编译vendor和system的增量升级包时需要检查fingerprint而导致编译失败,从而无法做到增量升级包升级。高版本一般都是打开AB模式。 AB 和 non AB 切换相关宏 /vendor_ap_s0/device/mediatek/system/mssi_64_cn/SystemCo…...

监听 RabbitMQ 延时交换机的消息数、OpenFeign 路径参数传入斜杠无法正确转义

背景 【MQ】一套为海量消息和高并发热点消息&#xff0c;提供高可用精准延时服务的解决方案 我现在有一个需求&#xff0c;就是监听 RabbitMQ 一个延时交换机的消息数&#xff0c;而 RabbitTemplate 是不存在对应的方法来获取的。 而我们在 RabbitMQ 的控制台却可以发现延时交…...

宇树科技嵌入式面试题及参考答案(春晚机器人的公司)

目录 设计一个带看门狗(Watchdog)的嵌入式系统,描述故障恢复流程 在资源受限的 MCU 上实现 OTA 升级功能,描述关键设计点 如何实现 OTA(空中升级)功能?描述固件校验和回滚机制的设计要点 推挽输出与开漏输出的区别?举例说明其在 GPIO 控制中的应用 UART、SPI、I2C …...

Linux内核自定义协议族开发指南:理解net_device_ops、proto_ops与net_proto_family

在Linux内核中开发自定义协议族需要深入理解网络协议栈的分层模型。net_device_ops、proto_ops和net_proto_family是三个关键结构体,分别作用于不同的层次。本文将详细解析它们的作用、交互关系及实现方法,并提供一个完整的开发框架。 一、核心结构体的作用与层级关系 struct…...

【Go语言快速上手】第一部分:数据类型(数组、切片、映射)与控制语句

文章目录 一、复合类型Ⅰ 数组1. 语法2. 示例3. 特点4. 数组的传递 Ⅱ 切片1. 定义2. 语法3. 示例4. 特点5. 切片的创建6. 切片的操作切片的扩展切片的拷贝 Ⅲ 映射1. 定义2. 语法3. 示例4. 特点5. 映射的创建6. 映射的操作示例&#xff1a;插入、访问和删除判断键是否存在示例…...

系统架构评估中的重要概念

(1)敏感点(Sensitivity Point) 和权衡点 (Tradeoff Point)。敏感点和权衡点是关键的架构 决策。敏感点是一个或多个构件(和/或构件之间的关系)的特性。研究敏感点可使设计人员 或分析员明确在搞清楚如何实现质量目标时应注意什么。权衡点是影响多个质量属性的特性&#xff0c; …...

shell逐行读取文件 远程操作服务器

代码示例 while read ip; doecho "uninstalling test programs in $line" ssh root$ip bash -s < remote_remove_tool.shdone < installed_ips总结 ✅ 作用&#xff1a; 逐行读取 installed_ips 文件中的 IP 地址通过 SSH 连接到远程服务器&#xff…...