自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 c++ 中什么是线程池?为什么需要线程池?

吞吐抖动指的是:在负载大致相同的情况下,系统单位时间内处理请求的数量出现明显波动。延迟抖动指的是:同样的请求,完成时间差异非常大。吞吐抖动关注的是“系统整体干活速度稳不稳”,延迟抖动关注的是“单个请求快慢是否可预测”;真正的工程优化目标,是在高吞吐下压低 P99 延迟。shutdown 中必须在持有 mutex 的情况下修改stop_否则会与条件变量的 wait 产生竞态,造成丢失唤醒,线程可能永久阻塞,线程池无法安全退出。如果你愿意,下一步我可以再追一个终极并发题。

2026-02-08 15:43:57 1049

原创 为什么c++中的条件变量的 wait() 函数需要配合while 循环或谓词?

wait()C++ 标准明确允许OS / futex / pthread 的实现细节信号 / 中断 / 调度并发竞争窗口性能与可移植性的设计权衡👉wait()永远必须配合while或谓词把它当成“可能随时醒”的操作futex 的 wait/wake 具体流程pthread_cond 的经典竞态窗口为什么“用原子 + 自旋”有时比 cv 更靠谱写一个100% 必现 bug的 demo你想往哪一层再挖?wait()

2026-02-07 17:19:19 976

原创 解释一下shared_mutex 的用法

读共享、写独占;读多写少才有价值,用前先看比例。是“锁本体(资源)”,是“持有共享锁的 RAII 管理器(工具)”。下面按「角色 / 行为 / 用法」把它们的关系讲清楚。提供“读/写锁能力”,负责“以 RAII 方式持有读锁”。是对的 RAII 封装。是“动作(API)”是“帮你自动做这些动作的对象(RAII)”下面把关系讲透。是“怎么加读锁”,是“帮你安全地持有读锁”。

2026-02-07 16:47:56 887

原创 什么是 std::promise ?常见面试题有哪些?

常见模式:在主线程创建 promise/future,把 promise 传入回调,当 API 完成时在回调内。除去“没有返回值”这一点外,行为(异常传递、broken promise 等)和其他类型完全一致。当你想手动管理任务启动地点(自建线程或回调)、或需将现有异步 API(如回调)包装成。用在“异步任务没有返回值,只需要告诉别人“完成了/失败了”的场景。共享状态只允许写入一次结果(或异常)。绑定一对 promise/future,跨线程传递值。要在线程间传递需使用。,提示 promise 被破坏。

2026-02-07 16:47:38 744

原创 timed_mutex 介绍

不是为了更强的互斥,而是为了“给线程一个体面的退出方式”。

2026-02-07 16:47:15 326

原创 介绍一下 recursive_mutex?

解决的是“同一线程多次 lock 同一把锁”的问题,它是工具,不是并发设计的救命稻草。

2026-02-07 16:43:32 250

原创 面试中关于 c++ async 的高频面试问题有哪些?

std::async。

2026-02-02 17:20:05 804

原创 详细解释 atomic_flag 的用法和什么叫自旋锁

自旋锁是一种锁:当线程获取不到锁时,不会睡眠阻塞,而是在 CPU 上不断循环尝试获取锁(“自旋”)。:最轻量的原子标志位,核心操作是clear()自旋锁:拿不到锁就一直循环尝试(忙等),适合“锁持有时间极短”的情况一般场景优先std::mutex,自旋锁是偏底层/性能优化手段,用错会更慢如果你想,我可以在你当前的程序里加一个“对比实验”:用自旋锁保护一个极短临界区 vs 用 mutex,观察在不同 sleep/计算时间下哪个更合适。unlock用release:把临界区内写入“发布出去”lock用。

2026-01-31 17:51:29 996

原创 condition_variable 详细介绍

角色做什么生产者加锁 → 放数据 → 解锁 → 通知消费者消费者加锁 → 等待(有数据或done) → 取数据 → 解锁让消费者在"没数据"时睡眠等待,避免忙等浪费 CPU。

2026-01-31 16:07:23 784

原创 scoped_lock 和adopt_lock 的区别与联系?

adopt_lock。

2026-01-30 17:39:14 363

原创 unique_lock 能不能替代 lock_guard(adopt_lock)

可以,而且在很多场景里 std::unique_locklock_guard。但要看你想替代的是哪一种用法。

2026-01-30 17:20:54 318

原创 lock_guard(m, adopt_lock)必须放在作用域的最后吗

/ 临界区于是误以为:“哦,好像只能在最后写?其实不是。void f() {// 还没用到锁也没关系// 临界区完全 OK。可读性习惯lock();// 临界区只是为了让读代码的人一眼明白:从这里开始持锁// 临界区不留异常/return 空窗生命周期清晰不容易被误用❌不是必须放在作用域最后✅必须在锁已被当前线程持有之后立刻构造,并让它的作用域覆盖临界区。

2026-01-30 17:19:27 341

原创 scoped_lock 的原理是什么?为什么更安全?

RAII:构造时获取,析构时释放异常安全:即使抛异常也会释放无脑使用:不需要考虑忘记释放代码简洁:一行搞定,减少出错可能本质std::lock+ RAII 包装器。

2026-01-30 17:03:00 439

原创 lock(m1,m2) 是已经人为给这两个锁排好序了吗?必须要m1解锁后才能给m2上锁吗

先锁 m1 再锁 m2,而是。,不是简单的按顺序加锁。,失败就全部释放重试。

2026-01-30 16:55:21 268

原创 用代码解释 unique_lock 的用法,以及和 lock_guard 的不同

是否能手动解锁]lock_guard: 不行(只能等作用域结束): 可以unlock()/ 再lock()[是否支持延迟加锁]lock_guard: 不支持: 支持defer_lock[是否支持 try_lock]lock_guard: 不支持: 支持,并可用判断是否拿到锁[开销/复杂度]lock_guard: 更轻、更简单(常用首选): 更重但更灵活(需要灵活控制时用)

2026-01-29 17:27:28 1088

原创 C++ 多线程与线程同步面试题大全

答:多个线程同时访问共享资源时,程序行为仍然正确,不会出现数据竞争或不一致。实现方式互斥锁(mutex)原子操作(atomic)线程局部存储(thread_local)不可变数据答:两个或多个线程同时访问同一内存位置,且至少一个是写操作,且没有同步机制。// 数据竞争示例i < 10000;// 非原子操作,存在竞争t1.join();t2.join();// 结果不确定,可能 < 20000死锁条件互斥持有并等待不可剥夺循环等待。

2026-01-29 10:18:43 492

原创 C++11、C++14、C++17 的区别有哪些?

【代码】C++11、C++14、C++17 的区别有哪些?

2026-01-28 15:40:25 50

原创 高级软考-系统架构设计师知识点9——架构风格总结

软件体系结构风格(Architectural Style)是对系统中组件(Component)与连接件(Connector)之间组织方式的一种通用模式或模板。简单理解:系统由哪些部分组成、这些部分如何交互。不同风格代表不同的系统设计思想。风格核心思想优点缺点应用数据流顺序数据处理模块独立,可重用不能动态交互编译器、流水线调用/返回函数调用层次结构结构清晰,层次分明耦合高普通应用数据共享共享数据存储数据一致,模块解耦数据竞争DBMS、IDE独立组件。

2025-11-03 11:09:38 197

原创 高级软考-系统架构设计师知识点8——UML 的各种图

2025-10-31 17:04:14 426

原创 Linux 中sudo bash -i 和 su root 有什么区别?

对比项su root是否需要 root 密码❌ 否(用自己密码)✅ 是环境变量是否切换到 root部分继承原用户完全切换是否进入 root 的 home 目录否是权限方式临时提升权限完全切换用户安全性(审计)高(sudo 可记录日志)相对低推荐使用场景普通用户临时提权系统管理员登录 root✅是“以 root 权限打开一个交互 shell(仍保留原用户环境)”;su root是“切换成真正的 root 用户(连环境也变)”。

2025-10-31 11:04:34 528

原创 高级软考-系统架构设计师知识点7——判定覆盖和条件覆盖

要求 A、B 各自都要取到 T、F 各一次。判定结果由 A 和 B 的组合决定。✅ A 有 T/F,B 也有 T/F。结果为 真 和 假 各出现一次。:指整个逻辑表达式的真假结果。,但不保证每个条件都变化过。判定结果为 F、T 各一次。❌ 但判定结果一直为 T,,但不一定导致分支变化。我们来看一个典型例子👇。所以,两者互不包含。

2025-10-30 10:40:06 573

原创 高级软考-系统架构设计师知识点6——系统可靠性与可用性

属性英文定义通俗理解可靠性系统在规定时间内无故障运行的概率。“能不能坚持不出错?可用性系统在任意时刻能正常工作的概率。“现在能不能用?可靠性强调“不中断、不出错可用性强调“能用、恢复快题型示例答案选择题“系统在规定时间内无故障运行的概率称为( )。可靠性 ✅选择题“系统的可用性可表示为( )。综合题给出 MTBF 和 MTTR,要求计算可用性直接套公式判断题“系统可靠性越高,可用性一定越高。❌ 不一定,修复速度也影响可用性可靠性:强调“系统不出故障” → 看稳定性可用性。

2025-10-29 16:31:54 903

原创 高级软考-系统架构设计师知识点5——黑板体系结构

是一种**基于共享数据结构(黑板)共享的黑板(Blackboard)**来进行协作、推理与决策。所有模块通过黑板通信,不直接互相调用。

2025-10-23 17:42:20 353

原创 高级软考-系统架构设计师知识点4——自然连接

笛卡尔积(Cartesian Product)是关系代数中的一种二元运算,用于把两个关系(表)中每一行都与另一表的每一行组合。数学表示:R × S“行 × 行 = 所有可能的组合”如果一个表有 3 行,另一个表有 4 行,结果就有 3×4 = 12 行。

2025-10-23 17:40:26 786

原创 高级软考-系统架构设计师知识点3

效用树(Utility Tree)是 ATAM 方法中的核心分析工具,用于分层展示质量属性及其具体场景,并通过重要性与风险排序,帮助架构师聚焦最关键的系统质量问题。

2025-10-23 17:06:28 704

原创 高级软考-系统架构设计师知识点2

特点说明1️⃣ 关注质量属性聚焦性能、可用性、安全性、可修改性、可测试性等非功能性需求2️⃣ 基于场景分析通过构造“质量属性场景”进行具体评估3️⃣ 强调权衡分析分析架构中不同决策间的冲突和平衡点4️⃣ 多干系人参与架构师、用户、项目经理、测试、客户代表共同评审5️⃣ 风险驱动目标是发现架构风险而非验证代码正确性6️⃣ 定性为主,定量为辅通过专家讨论、分析推理,而非精确计算📘 小结:ATAM 是一种基于场景、关注质量、识别风险、支持权衡的架构评估方法。

2025-10-23 15:32:14 750

原创 高级软考-系统架构设计师知识点1

特性描述开发方式面向对象过程结构迭代 + 增量驱动机制用例驱动核心焦点架构中心生命周期划分启动、细化、构建、移交代表性工具目标提高可复用性、降低风险、保证高质量交付题型示例单选题“RUP 的三大核心特征是?”(答:用例驱动、架构中心、迭代增量)匹配题“将四个阶段与其主要目标配对”简答题“简述 RUP 的主要阶段及其任务”综合题“某公司采用 RUP 模型开发系统,请指出应在何阶段完成架构验证与风险分析。”(答:细化阶段)

2025-10-23 15:13:07 453

原创 给我的SLES 系统加了一块100G的硬盘,怎么能正常使用它呢

lsblk确认新盘 →分区 →格式化 →挂载 →修改/etc/fstab永久挂载。

2025-09-12 16:11:47 249

原创 SLES 系统中SCSI 设备 是用来做什么的?

(Small Computer System Interface)指的是通过 SCSI 协议或者兼容协议呈现给内核的存储类或外设设备。虽然最初的 SCSI 是一种并行总线接口,但在现代 Linux 中,LUN(来自 SAN 存储的逻辑单元,常见于 FC、iSCSI、FCoE)USB 存储设备(U 盘、移动硬盘,底层也包装成 SCSI 设备)这些 LUN 在系统中映射成 SCSI 设备,出现在。错误处理和恢复(SCSI 层会重试/重置设备),不局限于传统 SCSI 硬盘,而是包括。

2025-08-19 13:57:07 414

原创 Linux 系统中, LANG 和 LC_ALL变量有什么区别与联系?

在(以及其他类 Unix 系统)里,LANG和LC_ALL都属于相关的环境变量,用于控制系统的等。它们的作用既有联系又有区别,核心差别在于。

2025-08-15 14:19:26 493

原创 linux 系统依赖包查询命令汇总

命令类型作用数据来源等价缩写/说明反向依赖rpm 需要什么已安装包等价于反向依赖同上已安装包是--requires缩写正向依赖谁需要 rpm已安装包文件列表rpm 安装了哪些文件已安装包反向依赖仓库中 rpm 需要什么仓库信息类似但来源不同正向依赖哪些包需要 rpm仓库信息。

2025-07-15 10:29:39 807

原创 磁盘中的柱面指的是什么?和盘面、扇面有什么关系?

所有盘面上相同编号的磁道在空间上垂直对齐,这些对齐的磁道组合在一起,形成一个“柱面”。可以把柱面想象成一个“圆柱体”,穿过所有盘片。

2025-07-01 15:20:20 1196

原创 LDAP 的作用

LDAP 是企业内用来集中管理用户信息和认证的协议,像一棵组织架构树,可被各种系统用来统一身份验证。

2025-06-24 14:58:28 469

原创 dnsmasq 是什么?

dnsmasq是一个为局域网设计的轻量级 DNS + DHCP + TFTP 服务工具,部署简单、资源占用低,非常适合家庭、办公室、开发环境使用。

2025-06-24 10:45:56 507

原创 DHCP 的作用是什么

DHCP 的作用是自动给设备分配 IP 地址、网关、DNS 等网络参数,让设备能自动联网,无需手动设置。DHCP 是让设备自动“上网”的关键协议,它通过自动分配 IP 地址等网络参数,大大简化了网络配置,是现代网络的基础服务之一。

2025-06-24 10:38:21 862

原创 Linux 系统中,/usr/bin/ 和/bin/的区别?

项目/bin//usr/bin/全称含义binary(核心二进制)user binary(用户空间二进制)历史用途存放最基础、最关键的命令(引导相关)存放普通用户程序依赖情况必须依赖极少,系统单独运行时也要能执行依赖/usr挂载,非必需启动前就能用常见命令lscpmvcatbash等vimgccgitpython等挂载依赖位于根文件系统位于/usr,可能是独立挂载分区引导阶段是否可用✅ 是❌ 否,/usr可能尚未挂载/bin/存放系统启动必需的基础命令,/usr/bin/

2025-06-23 17:16:49 485 1

原创 BIOS 和UEFI 的区别与联系?

项目BIOS(传统 BIOS)UEFI(统一可扩展固件接口)含义起源1980年代 IBM PC英特尔主导,后由 UEFI Forum 管理当前状态已逐步淘汰现代主流(尤其是64位系统)UEFI 是现代化、模块化、可扩展的 BIOS 替代方案,支持更大硬盘、图形化界面、更快启动速度和安全启动,是未来主流。

2025-05-30 14:35:42 872

原创 Linux SLES 系统的/var/log/下的常见文件及其作用

在系统中,/var/log/目录是系统日志的集中地,存储了各种服务、内核、系统消息的日志。以下是一些在/var/log/

2025-05-28 10:59:21 495

原创 SLES 系统的zypper升级rpm包

如果你已经装了这个包,且版本一样:zypper 会。,也只有在 zypper 执行安装操作时才生效;,就有可能什么都不做,冲突依然保留。💥 强制重新安装(即使已经装了)如果包已是最新,它会提示。,不会覆盖冲突文件;

2025-05-14 15:18:34 356

原创 Linux的SLES系统和其他几大系统之间的区别

SLES:专业、稳定、图形化配置好用,适合企业核心业务系统RHEL:企业通用标准,广泛兼容,适合大规模部署:云原生环境、轻量服务部署首选Debian:极致稳定,但更偏向技术用户:极客专属,滚动更新,非企业首选。

2025-05-13 12:42:51 698

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除