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

面试之消息队列

消息队列场景

什么是消息队列?

  消息队列是一个使用队列来通信的组件,它的本质就是个转发器,包含发消息、存消息、消费消息。
在这里插入图片描述

消息队列怎么选型?

特性ActiveMQRabbitMQRocketMQKafka
单机吞吐量万级万级10万级10万级
时效性毫秒级微秒级毫秒级毫秒级
可用性高(主从)高(主从)非常高(分布式)非常高(分布式)
消息重复至少一次至少一次至少一次 最多一次至少一次最多一次
消息顺序性有序有序有序分区有序
支持主题数千级百万级千级百级,多了性能严重下滑
消息回溯不支持不支持支持(按时间回溯)支持(按offset回溯)
管理界面普通普通完善普通

消息队列使用场景有哪些?

  • 异步处理:缩短用户响应时间,提高系统吞吐量,各服务可独立运行,互不干扰。
  • 应用解耦:降低系统间耦合度,一个系统的变更或故障不易影响其他系统,提升系统可维护性与扩展性。
  • 流量削峰:保护后端服务不被高流量冲垮,可按下游处理能力调节流量,避免系统崩溃 。

消息重复消费怎么解决?

  业务端对于已经消费成功的消息,保存在本地数据库或Redis缓存业务中,进行业务表示,每次处理前先进行校验,保证幂等性。

消息丢失怎么解决的?

在这里插入图片描述
  消息生产阶段:只要能正常接收到MQ中间件的ack确认响应,就表示发送成功,所以只要处理号消息的返回值和异常,如果返回异常则进行消息重发,那么这个阶段是不会出现消息丢失的。
  消息存储阶段:生产者在发布消息是,MQ中间件通常会写入多个节点,也就是创建多个副本,即便其中一个节点挂掉,也能保证集群的数据不丢失。
  消息消费阶段:消费者接收消息并处理消息之后,才回复ack的话,那么消息是不会丢失的。不能收到消息就会回ack,否则可能消息处理中途就挂掉了,消息便丢失了。

消息队列的可靠性怎么保证?

  消息持久化:在系统崩溃、重启或者网络故障等情况下,未处理的消息不会丢失。
  消息确认机制:消费者在成功处理消息后,应该向消息队列发送确认(ack)。消息队列只有收到确认后,才会将消息从队列中移除。如果没有收到确认,消息队列会在一定时间内重发消息给消费者。
  消息重试策略:当消费者处理消息失败后,需要选择合适的重试策略。可以是设置重试次数和重试间隔时间;也可以是发送消息到死信队列中,以便后续的排查和处理。

消息队列的顺序性怎么保证?

  有序消息处理场景的识别:明确业务场景中哪些消息是需要保证顺序的,对于需要顺序处理的消息,要确保消息队列和消费者能够按照特定的顺序进行处理。
  消息队列对顺序性的支持:Kafka可以通过将消息划分到同一个分区(Partition)来保证消息在分区内是有序的,消费者按照分区顺序读取消息就可以保证消息顺序。但这也可能会限制消息的并行处理程度,需要在顺序性和吞吐量之间进行权衡。
  消费者顺序处理消息:消费者在处理消息时,应该避免并发处理可能导致的打乱情况。可以使用单线程或者使用对顺序消息进行串行化处理后的线程池等方法,确保消息按照正确的顺序被消费。

如何保证幂等性?

幂等性:同一操作的多次执行对系统状态的影响与一次执行结果一致。

实现幂等性的核心方案:

  • 唯一标识(幂等键):客户端为每一个请求生成全局唯一ID,服务端校验该ID是否已处理,适用于场景:接口调用、消息消费等。
  • 数据库事务+乐观锁:通过版本号或状态字段控制并发更新,确保多次更新等同于单次操作,适用场景:数据库记录更新(如余额扣减、订单状态变更)。
  • 数据库唯一约束:利用数据库唯一索引防止重复数据写入,适用场景:数据插入(如订单创建)。
  • 分布式锁:通过锁机制保证同一时刻仅有一个请求执行关键操作,适用场景:高并发下的资源抢夺(如秒杀)。
  • 消息去重:消息队列生产者为每一条消息生成唯一的消息ID,消费者在处理消息前,先检查该消息ID是否已经处理过,如果已经处理过则丢弃该消息。

如何处理消息队列的消息积压问题?

原因:生产者的生产速度大于消费者的消费速度。

解决方案

  • 批量处理消息
  • 增加Topic的队列数和消费组机器的数量
  • 临时紧急扩容

临时紧急扩容的大概思路:
1.先修复consumer消费者的问题,以确保其恢复消费速度,然后将现有consumer都停掉。
2.新建一个topic,partition是原来的10倍。临时建立好原先10倍数量的queue。
3.写一个临时的分发数据的cunsumer程序,这个程序部署上去,消费积压的数据,消费之后不做耗时的处理,直接轮询写入临时建立好的10倍数量的queue。
4.接着临时征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的数据。这个做法相当于是临时将queue资源和consumer资源扩大10倍,以正常的10倍速度来消费数据。
5.等消息消费完积压的数据后,恢复原先的部署架构,重新用原先的consumer机器来消费消息。

如何保证数据一致性,事务消息如何实现?

在这里插入图片描述

  1. 生产者产生消息,发送带MQ服务器
  2. MQ收到消息后,将消息持久化到存储系统。
  3. MQ服务器返回Ack到生产者。
  4. MQ服务器把消息push给消费者
  5. 消费者消费完消息,响应ACK
  6. MQ服务器收到ACK,认为消息消费成功,即在存储中删除消息。
    在这里插入图片描述
  7. 生产者产生消息,发送一条半事务消息到MQ服务器
  8. MQ收到消息后,将消息持久化到存储系统,这条消息的状态是待发送状态。
  9. MQ服务器返回ACK确认到生产者,此时MQ不会触发消息推送事件
  10. 生产者执行本地事务
  11. 如果本地事务执行成功,即commit执行结果到MQ服务器;如果执行失败,发送rollback。
  12. 如果是正常的commit,MQ服务器更新消息状态为可发送;如果是rollback,即删除消息。
  13. 如果消息状态更新为可发送,则MQ服务器会push消息给消费者。消费者消费完就回ACK。
  14. 如果MQ服务器长时间没有收到生产者的commit或者rollback,它会反查生产者,然后根据查询到的结果执行最终状态。

消息队列是参考哪种设计模式?

观察者模式
观察者模式实际上就是一对多的关系,即存在一个主题和多个观察者,主题也是被观察者,当主题发布消息时,会通知各个观察者,观察者将会收到最新消息。
在这里插入图片描述
发布订阅模式
发布订阅模式和观察者模式的区别就是发布者和订阅者完全解耦,通过中间的发布订阅中心进行消息通知,发布者并不知道自己发布的消息会通知给谁。
在这里插入图片描述

让你写一个消息队列,该如何进行架构设计?

在这里插入图片描述

  1. 首先是消息队列的整体流程,producer发送消息给broker,broker存储好,broker再发送给consumer消费,consumer回复消费确认等。
  2. producer发送消息给broker,broker发消息给consumer消费,那就需要两次RPC了,RPC如何设计呢?可以参考开源框架Dubbo,你可以说说服务发现、序列化协议等等
  3. broker考虑如何持久化呢,是放文件系统还是数据库呢,会不会消息堆积呢,消息堆积如何处理呢。
  4. 消费关系如何保存呢?点对点还是广播方式呢?广播关系又是如何维护呢?zk还是config server
  5. 消息可靠性如何保证呢?如果消息重复了,如何幂等处理呢?
  6. 消息队列的高可用如何设计呢?可以参考Kafka的高可用保障机制。多副本 -> leader & follower -> broker挂了重新选举leader即可对外服务。
  7. 消息事务特性,与本地业务同个事务,本地消息落库;消息投递到服务端,本地才删除;定时任务扫描本地消息库,补偿发送。
  8. MQ得伸缩性和可扩展性,如果消息积压或者资源不够时,如何支持快速扩容,提高吞吐?可以参照一下Kafka的设计理念,broker -> topic -> partition,每个partition放一个机器,就存一部分数据。如果现在资源不够了,简单啊,给topic增加partition,然后做数据迁移,增加机器,不就可以存放更多数据,提供更高的吞吐量了。

RocketMQ

消息队列为什么选择RocketMQ的?

  • 开发语言优势:RocketMQ使用Java语言开发,更容易上手和阅读源码。
  • 社区氛围活跃:RocketMQ是阿里巴巴开源且内部在大量使用的消息队列,是经得起考验的,并且能够针对线上的复杂环境提供相应的解决方案。
  • 特性丰富:RocketMQ的高级特性达到了12种,例如顺序消息、事务消息、消息过滤、定时消息等。丰富的特性,能够为我们复杂的业务场景尽可能多地提供思路和解决方案。

相关文章:

面试之消息队列

消息队列场景 什么是消息队列? 消息队列是一个使用队列来通信的组件,它的本质就是个转发器,包含发消息、存消息、消费消息。 消息队列怎么选型? 特性ActiveMQRabbitMQRocketMQKafka单机吞吐量万级万级10万级10万级时效性毫秒级…...

[创业之路-386]:企业法务 - 知识产权的刑事风险

知识产权的刑事风险是指因侵犯他人知识产权而可能面临的刑事法律责任。 对于初创公司而言,了解并防范此类风险至关重要,以下从不同知识产权类型展开详细分析: 一、侵犯商标权的刑事风险 风险表现:未经注册商标所有人许可&#…...

Freertos----中断管理

一、中断概念 在RTOS中,需要应对各类事件。这些事件很多时候是通过硬件中断产生,怎么处理中断呢? 假设当前系统正在运行Task1时,用户按下了按键,触发了按键中断。这个中断的处理流程如下: CPU跳到固定地…...

4.4 记忆机制与上下文管理:短期与长期记忆的设计与应用

记忆机制与上下文管理已成为智能代理(Agent)系统实现高效、智能化行为的核心技术。记忆机制通过短期记忆(Short-Term Memory, STM)和长期记忆(Long-Term Memory, LTM)支持Agent存储、检索和利用信息&#x…...

ERROR: x264 not found using pkg-config

x264 编译加上了参数,–prefix/usr/local/x264/,找不到x264.pc ffmpeg安装过程中configure报错: sudo ./configure --enable-gpl --enable-libx264 --enable-shared --extra-ldflags-L/usr/lib --extra-cflags-I/usr/include --pkg-config“…...

SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理

统一HTTP请求代码 public class HttpCode {/*** 操作成功*/public static final int SUCCESS 200;/*** 对象创建成功*/public static final int CREATED 201;/*** 请求已经被接受*/public static final int ACCEPTED 202;/*** 操作已经执行成功,但是没有返回数据…...

架构-系统可靠性分析与设计

一、可靠性相关基本概念 1. 可靠性与可用性 可靠性:软件系统在遇到错误、意外操作或系统故障时,仍能维持自身功能特性的能力。 举例:手机银行APP在用户误操作(如快速点击多次转账)时,仍能正确处理交易并避…...

Tailwind CSS 初学者入门指南:项目集成,主要变更内容!

网站名称类型网址Tailwind CSS 官方文档官方文档https://tailwindcss.com/docsTailwind Play在线编辑器https://play.tailwindcss.com/Tailwind Awesome资源集合https://www.tailwindawesome.com/Tailwind CSS 中文文档中文文档https://www.tailwindcss.cn/komavideo/LearnTail…...

HOJ.单词统计

目录 题目算法标签: 模拟, 字符串操作思路代码*后续 A C AC AC代码 题目 一段英语短文的内容记录于 lines 中,每行输入 lines[i] 仅包含 a-z , . , -,即英文小写字母,空格,逗号,句号和续行符。 请统计单词数量&#…...

C++ round 函数笔记 (适用于算法竞赛)

在算法竞赛中&#xff0c;处理浮点数并将其转换为整数是常见的需求&#xff0c;round 函数是标准库提供的用于执行“四舍五入”到最近整数的工具。理解其工作方式和潜在问题对于避免错误至关重要。 1. 基本用法 头文件 要使用 round 函数&#xff0c;需要包含 <cmath>…...

远程访问服务器的Jupyter Notebook

在 Linux 服务器上安装 Jupyter Notebook 可以直接调用服务器资源,适合处理大规模数据处理、复杂模型训练等计算密集型任务,避免本地设备算力不足的限制。 一、安装 Jupyter Notebook(在服务器上) 激活 conda 环境安装 conda install jupyter notebook 关于安装命名 1.…...

DNS实验

DNS原理 客户端发起请求&#xff1a;客户端向本地 DNS 服务器发送域名解析请求&#xff0c;这是流程的起始点。本地 DNS 服务器查询根域名服务器&#xff1a;若本地 DNS 服务器缓存中无对应记录&#xff0c;它向根域名服务器发起查询&#xff0c;根域名服务器是 DNS 系统顶层&a…...

SQL实战:02之连续数问题求解

文章目录 概述题目:体育馆的人流量题解步骤一&#xff1a;构造出一个连续序列步骤二&#xff1a;找出符合条件的组的序号步骤三&#xff1a;fetch结果&#xff0c;使用内连接过滤出符合条件的记录。完整SQL 题目二&#xff1a;连续出现的数字题解步骤一&#xff1a;分区并构建连…...

【C++】STL之deque

deque Deque 的底层既不直接依赖 vector 也不依赖 list&#xff0c;而是结合了两者的思想&#xff0c;采用了一种分块&#xff08;chunk&#xff09;存储与动态指针数组&#xff08;map&#xff09;结合的结构。以下是详细分析&#xff1a; 1. 底层结构设计 Deque 的核心设计…...

HTB - BigBang靶机记录

HTB - BigBanghttps://mp.weixin.qq.com/s/D7yR00kHdiIfoOFk_jHa9w...

AI时代的能力重构与终身进化

在数字技术加速迭代、职业边界日益模糊的当下,自我提升已从“阶段式学习”演变为“持续性进化”。这一转型的底层逻辑在于:个体能力需从“知识积累”转向“能力重构”,以适应AI技术重塑的社会分工与价值创造模式。本文将从认知升级、技能进化、生态构建三个维度,解析AI时代…...

Java—— 正则表达式 方法及捕获分组

识别正则表达式的方法 方法名说明public String[] matches(String regex) 判断字符串是否满足 正则表达式的规则 public string replaceAll(String regex,string newstr) 按照正则表达式的 规则进行替换 public string[] split(String regex) 按照正则表达式的 规则切割字符串…...

《100天精通Python——基础篇 2025 第2天:Python解释器安装与基础语法入门》

目录 一、Windows安装Python1.1 下载并安装 Python1.2 测试安装是否成功 二、Linux系统安装Python(新手可以跳过)2.1 基于RockyLinux系统安装Python(编译安装)2.2 基于Ubuntu系统安装Python(编译安装)2.3 macOS 安装python解释器 三、如何运行Python程序&#xff1f;3.1 Python…...

Linux平台实现低延迟的RTSP、RTMP播放

在流媒体播放器的开发过程中&#xff0c;RTSP&#xff08;实时流协议&#xff09;和RTMP&#xff08;实时消息协议&#xff09;是广泛应用的流媒体协议。本博客将介绍如何使用大牛直播SDK实现一个Linux平台下的RTSP/RTMP播放器。大牛直播SDK的Linux平台播放SDK&#xff0c;支持…...

安宝特案例 | AR技术在院外心脏骤停急救中的革命性应用

00 案例背景 在院外心脏骤停 (OHCA) 的突发救援中&#xff0c;时间与效率直接决定着患者的生命。传统急救模式下&#xff0c;急救人员常通过视频或电话与医院医生进行沟通&#xff0c;以描述患者状况并依照指令行动。然而&#xff0c;这种信息传递方式往往因信息不完整或传递延…...

chili3d调试笔记9 参数化建模+ai生成立方体

mainwindow 怎么渲染boxnode https://github.com/ticket180/chili3d chili3d ai画立方体...

天梯——L1-110 这不是字符串题

代码 #include<bits/stdc.h> using namespace std; int main(){int n,m;cin>>n>>m;string s;for(int i0;i<n;i){int x;cin>>x;schar(x0);}while(m--){int x;cin>>x;if(x1){int l1;string s1;cin>>l1;for(int i0;i<l1;i){int a;cin&…...

React在什么情况下需要用useReducer

在 React 中&#xff0c;useReducer 是一个用于管理复杂状态逻辑的 Hook。它是 useState 的替代方案&#xff0c;适用于状态更新逻辑复杂或状态之间相互关联的场景。 什么时候需要使用 useReducer 状态更新逻辑复杂&#xff1a; 如果状态更新涉及多个操作或有复杂的逻辑&#x…...

要从给定的数据结构中提取所有的 itemList 并将其放入一个新的数组中

const data [{id:1,itemList:[{id:1-1,list:0},{id:1-2,list:0}]},{id:2,itemList:[{id:2-1,list:0}]} ]使用 forEach const newItemList [];data.forEach(item > {newItemList.push(...item.itemList); });console.log(newItemList);reduce const newItemList data.re…...

程序员鱼皮最新项目-----AI超级智能体教程(一)

文章目录 1.前言1.什么是AI大模型2.什么是多模态3.阿里云百炼平台介绍3.1文本调试展示3.2阿里云和dashscope的关系3.3平台智能体应用3.4工作流的创建3.5智能体编排应用 1.前言 最近鱼皮大佬出了一套关于这个AI 的教程&#xff0c;关注鱼皮大佬很久了&#xff0c;鱼皮大佬确实在…...

17.磁珠在EMC设计中的运用

磁珠在EMC设计中的运用 1. 磁珠的高频等效特性2. 磁珠的参数分析与选型3. 磁珠应用中的隐患问题 1. 磁珠的高频等效特性 和磁环类似&#xff0c;低频段感性jwL为主&#xff0c;高频段阻性R为主。 2. 磁珠的参数分析与选型 不需要太在意磁珠在100MHz时的电阻值&#xff0c;选型…...

常见接口测试常见面试题(JMeter)

JMeter 是 Apache 提供的开源性能测试工具&#xff0c;主要用于对 Web 应用、REST API、数据库、FTP 等进行性能、负载和功能测试。​它支持多种协议&#xff0c;如 HTTP、HTTPS、JDBC、SOAP、FTP 等。 在一个线程组中&#xff0c;JMeter 的执行顺序通常为&#xff1a;配置元件…...

2026届华为海思秋暑期IC实习秋招笔试真题(2025.04.23更新)

今天给大家分享下华为海思2025.04.23号最新IC笔试真题。 华为海思IC前端中后端(COT&XPU)岗位笔试机考题 更多华为海思数字IC岗秋招实习笔试真题&#xff0c;可以私信小编。 数字后端培训实战项目六大典型后端实现案例 秒杀数字后端实现中clock gating使能端setup viola…...

水域陆地两相宜,便携漏电探测仪

在自然灾害如洪水、地震、台风及火灾中&#xff0c;建筑物和电力设施易因结构破坏、线路老化或设备浸水导致绝缘失效&#xff0c;引发漏电事故。漏电不仅直接威胁人员生命安全&#xff0c;还可能引发二次火灾或爆炸&#xff0c;尤其在潮湿环境下导电性增强&#xff0c;触电风险…...

论文笔记(七十九)STOMP: Stochastic Trajectory Optimization for Motion Planning

STOMP: Stochastic Trajectory Optimization for Motion Planning 文章概括摘要一、引言二、相关工作三、STOMP 算法A. 探索B. 轨迹更新 四、机械臂的运动规划A. 设置B. 代价函数1&#xff09;障碍物代价&#xff1a;2&#xff09;约束代价&#xff1a;3&#xff09;扭矩代价&a…...

如何应对客户提出的不合理需求

在项目执行过程中&#xff0c;客户经常会提出一些看似不合理的需求&#xff0c;这些需求可能超出了预算、时间范围&#xff0c;或与项目初期的目标不符。应对这些不合理需求的最佳方法是通过清晰沟通、设定合理期望、与客户共同探索解决方案来有效管理这些需求。例如&#xff0…...

SEO的关键词研究与优化 第一章

关键词研究和优化是SEO的核心。通过深入了解目标受众使用的搜索词&#xff0c;我们可以优化网站内容&#xff0c;提高搜索引擎排名&#xff0c;并吸引更多相关流量。本章将详细探讨关键词研究的方法、和最佳实践。 关键词类型对比分析 1. 关键词研究的基础 了解不同类型的关键…...

A2A Agent 框架结构化分析报告

A2A Agent 框架结构化分析报告 第一章 绪论 1.1 引言 在全球数字化转型的浪潮中&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;技术正以前所未有的速度改变着我们的生活和工作方式。然而&#xff0c;随着AI系统的广泛应用&#xff0c;单一AI系统…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(10): つもり 计划/打算

日语学习-日语知识点小记-构建基础-JLPT-N4阶段&#xff08;10&#xff09;&#xff1a; つもり 计划/打算 1、前言&#xff08;1&#xff09;情况说明&#xff08;2&#xff09;工程师的信仰 2、知识点&#xff08;1&#xff09;つもり 计划/打算&#xff08;&#xff12;&a…...

对patch深入理解下篇:Patch+LSTM实现以及改进策略整理

我在去年11月份写了pat入理解的上篇&#xff0c;主要介绍patch的原理和代码实现过程。文章发布后很多朋友催更下篇&#xff0c;其实一直在积累素材&#xff0c;因为介绍完原理和实现之后&#xff0c;下一步肯定是要考虑如何改进。在这之前&#xff0c;首先&#xff0c;我们接着…...

线程同步与互斥(互斥)

目录 线程互斥 进程线程间的互斥相关背景概念 互斥量mutex 互斥量的接⼝ 初始化互斥量 初始化互斥量有两种⽅法 销毁互斥量 互斥量加锁和解锁 加锁的使用 互斥量实现原理探究 互斥量的封装 Mutex.hpp Main.cc 线程互斥 进程线程间的互斥相关背景概念 临界资源&…...

基于RFID的智能家居系统设计与实现

标题:基于RFID的智能家居系统设计与实现 内容:1.摘要 随着物联网技术的飞速发展&#xff0c;智能家居系统成为了人们关注的焦点。本研究的目的是设计并实现一个基于RFID&#xff08;射频识别&#xff09;的智能家居系统&#xff0c;以提高家居的智能化水平和用户的生活便利性。…...

JAVA设计模式——(六)装饰模式(Decorator Pattern)

JAVA设计模式——&#xff08;六&#xff09;装饰模式&#xff08;Decorator Pattern&#xff09; 介绍理解实现被装饰类被装饰类的具体实现装饰类装饰类具体实现测试 适用场景 介绍 动态给一个对象添加一些额外的功能&#xff0c;动态的扩展其功能。 理解 装饰模式&#xf…...

CGAL 网格等高线计算

文章目录 一、简介二、实现代码三、实现效果一、简介 这里等高线的计算其实很简单,使用不同高度的水平面与网格进行相交,最后获取不同高度的相交线即可。 二、实现代码 #include <iostream> #include <iterator> #include <map>...

Sharding-JDBC 系列专题 - 第十篇:ShardingSphere 生态与未来趋势

Sharding-JDBC 系列专题 - 第十篇:ShardingSphere 生态与未来趋势 本系列专题旨在帮助开发者全面掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第十篇,也是本系列的总结篇,将全面回顾 Apache ShardingSphere 生态,包括其核心组件、功能模块和与其他…...

ETL 数据集成都包含哪些?

一、ETL 数据集成都包含哪些&#xff1f; 数字化时代数据已成为企业最为宝贵的资产之一。然而&#xff0c;企业的数据往往分散在多个不同的系统和平台中&#xff0c;如关系型数据库、文件系统、API 等。为了将这些分散的数据整合起来&#xff0c;为企业决策提供全面、准确的支…...

windows系统自定义powshell批处理脚本

windows自定义powshell批处理脚本 前几天看到大神自定义批处理骚操作操作&#xff0c;觉得很有意思&#xff0c;本篇文章记录一下入门学习笔记。 PowerShell 是一种功能强大的脚本语言和命令行外壳&#xff0c;基于.NET Framework&#xff0c;广泛应用于 Windows 系统管理、自…...

【计算机视觉】CV实战项目 - 基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化

基于YOLOv5与DeepSORT的智能交通监控系统&#xff1a;原理、实战与优化 一、项目架构与技术解析1.1 核心算法架构1.2 学术基础 二、实战环境配置2.1 硬件要求与系统配置2.2 分步安装指南 三、核心功能实战3.1 基础车辆计数3.2 自定义检测类别3.3 多区域计数配置 四、性能优化技…...

Java基础系列-HashMap源码解析3-红黑树

文章目录 红黑树定义与AVL树对比插入节点插入节点是根节点插入节点的叔叔是红色插入节点的叔叔是黑色 构建示例删除节点只有左子树/只有右子树 只有左孩子/只有右孩子没有孩子如果双黑节点的兄弟是黑色&#xff1a;如果双黑节点的兄弟是红色&#xff1a; 总结 红黑树 定义 与…...

Linux系统的延迟任务及定时任务

延迟任务的发起 在系统中我们可以使用at命令来发起延迟任务 at命令执行是调用的是atd服务&#xff0c;即使系统最小化安装atd也会被安装到系统中 at 任务信息存放在系统中/var/spool/at目录中 at 任务的日志文件被存放到/var/log/cron中 at 任务执行时如果遇到系统处于关闭状态…...

【蓝桥杯】水质检测

水质检测 题目描述 小明需要在一条 2 n 2 \times n 2n 的河床上铺设水质检测器。在他铺设之前&#xff0c;河床上已经存在一些检测器。如果两个检测器上下或者左右相邻&#xff0c;那么这两个检测器就是互相连通的。连通具有传递性&#xff0c;即如果 A A A 和 B B B 连通…...

【晶振】晶振的工作原理及其与单片机关系

晶振(晶体振荡器)是电子设备中常见的元件,其核心功能是提供稳定的时钟信号,而单片机(MCU)依赖这一信号来同步内部操作。以下是晶振的工作原理及其与单片机关系的详细说明: 一、晶振的工作原理 压电效应与谐振 晶振的核心是石英晶体,利用其压电效应: 当在晶体两端施加电…...

配置 C/C++ 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容

配置 C/C 语言智能感知&#xff08;IntelliSense&#xff09;的 c_cpp_properties.json 文件内容 {"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/opt/ros/humble/include/**&quo…...

Postgresql源码(143)统计信息基础知识(带实例)

概念与总结 高频值&#xff08;Most Common Values, MCV&#xff09;​​ 存储在 most_common_vals 中。每个高频值的频率通过 most_common_freqs 单独记录&#xff08;例如 0.010966667 等&#xff09;。​​MCV 用于优化等值查询​​&#xff08;如 poid 33&#xff09;&…...

【含文档+PPT+源码】基于SpringBoot+vue的疫苗接种系统的设计与实现

项目介绍 本课程演示的是一款 基于SpringBootvue的疫苗接种系统的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系…...