- 博客(284)
- 收藏
- 关注
原创 【C/C++】从零开始掌握Kafka
官方提供的高性能 C/C++ Kafka 客户端库。高吞吐的生产与消费offset 提交topic/partition 管理幂等发送、压缩、批处理。
2025-05-25 23:12:27
632
原创 【C/C++】多线程开发:wait、sleep、yield全解析
方法属于哪类是否释放锁作用wait()同步原语(条件变量)✅ 释放锁当前线程等待某个条件满足,挂起执行。sleep()时间控制❌ 不释放锁当前线程强制睡眠一段时间。yield()调度建议❌ 不释放锁当前线程主动让出 CPU,允许其他线程执行。wait()
2025-05-24 21:09:41
754
原创 【C/C++】红黑树学习笔记
红黑树是一种自平衡二叉搜索树,具有以下特性:节点非红即黑、根节点和叶子节点为黑、路径黑节点数相同、红节点不相连。与AVL树相比,红黑树的查询效率稍低但插入/删除效率更高。插入新节点时默认红色,根据父节点和叔叔节点的颜色情况进行调整,包括变色和旋转操作(LL/LR/RR/RL四种情况)。红黑树广泛应用于C++ STL的map/set等数据结构中。构建过程遵循二叉搜索树规则,并适时调整以维持红黑树性质。
2025-05-24 10:57:32
587
原创 【C/C++】胜者树与败者树:多路归并排序的利器
胜者树是一棵完全二叉树,每个叶子结点表示一个选手(或者一个序列当前值),每个非叶子节点存储当前两名子选手的胜者(较小者)索引。根节点最终存储的是所有选手中最小值的索引(即冠军/胜者)。✅ 多路归并排序✅ 外部排序(归并多个文件)✅ 堆选择算法(优先队列)✅ 归并K个有序序列/流式合并假设你有多个已经排好序的数组(或文件),想把它们合并成一个大的有序序列。这就叫多路归并。当有很多路时(比如上百个文件),直接线性比较效率很低,败者树可以高效解决这个问题。
2025-05-23 20:05:30
870
原创 【C/C++】可视化解析红黑树插入与删除全流程
对象插入删除默认颜色新节点红删除后黑缺失(额外黑)主要破坏连续红黑高失衡修复方式父变黑 / 祖父旋转兄弟染色 / 多重旋转旋转位置祖父父或兄弟是否递归可能可能。
2025-05-23 09:52:52
1050
原创 【C/C++】深入解析Linux下C/C++内存管理全攻略(纲要)
C++ 可重载。STL 容器支持 allocator 模板参数。熟悉 C/C++ 的基础分配函数、new/delete。理解 Linux 虚拟内存结构。学习mmap等系统级接口。掌握 valgrind + gdb + perf 等工具调试方法。深入内存池、分配器、NUMA 绑定、Zero-Copy 等高级优化。
2025-05-22 17:54:15
1062
原创 【C/C++】thread_pool implement with C++11 & C++17/20
【代码】【C/C++】thread_pool implement with C++11 & C++17/20。
2025-05-20 23:17:27
804
原创 【C++】不推荐使用的std::allocator<void>
适用于管理具体类型的对象内存,提供完整的构造/析构功能。仅用于原始内存分配,不涉及对象生命周期管理,适用于泛型或低级内存操作。选择依据:若需要构造对象,使用具体类型的分配器(如若只需操作原始内存,可使用。
2025-05-19 18:19:01
1058
原创 【C/C++】C++并发编程:std::async与std::thread深度对比
适合需要直接控制线程行为、长期运行的任务,但需手动管理生命周期和结果传递。std::async:适合需要异步执行并获取结果、或希望系统自动优化资源使用的场景,但对执行策略需谨慎选择。std::async析构时会隐式等待任务完成,可能导致意外阻塞。std::async的线程可能复用,导致 TLS 状态残留。std::async的线程池行为(如线程复用策略)可能因编译器实现不同而不同。维度std::async结果获取自动通过future需手动使用promise或共享变量异常传播。
2025-05-19 17:09:21
1052
原创 【C/C++】跟我一起学_多线程与协程:高效并发的双刃剑
线程是操作系统调度的最小执行单位,一个进程可以包含多个线程,共享进程的内存和资源。多线程允许程序同时执行多个任务,例如同时处理用户输入和后台计算。操作系统调度:线程的创建、切换由内核管理,切换时需要保存和恢复寄存器状态(上下文切换),开销较大。并行执行:在多核CPU上,不同线程可分配到不同核心,实现真正并行。资源竞争:线程共享内存,需通过锁(如互斥锁)避免数据竞争和死锁。CPU密集型任务(如科学计算、图像处理)。需要利用多核性能的并行计算。优点:充分利用多核资源;适合并行任务。
2025-05-19 10:48:45
788
原创 【C/C++】跟我一起学_解析libaco的上下文切换机制
acosw.S是libaco高性能的基石,通过平台特定的手写汇编代码实现 纳秒级上下文切换。精确控制寄存器保存/恢复,避免冗余操作。直接操作栈指针,实现快速执行环境切换。跨平台适配,确保在 x86_64、ARM、MIPS 等架构上均能高效运行。该文件与aco.c中的协程管理逻辑紧密结合,共同构成一个完整的用户态协程库。
2025-05-18 22:41:07
574
原创 【C/C++】C++返回值优化:RVO与NRVO全解析
具名返回值优化(NRVO)匿名返回值优化(RVO)启用返回值优化的条件返回局部对象返回的表达式必须是函数内部定义的局部对象(非参数、非全局对象),且未被绑定到外部引用/指针。// s被移动,但仍为局部对象return s;// NRVO仍可能触发(返回s的地址,即使其内容为空)返回类型与局部对象类型严格匹配返回的表达式必须直接构造目标类型的对象,或与返回类型完全一致。// 正常用例// 临时对象直接构造到调用者栈帧// 错误用例} };B b;return b;
2025-05-17 23:02:21
1329
原创 【C/C++】C++中constexpr与const的深度对比
特性constexprconst初始化时机必须编译期初始化允许运行时初始化适用场景编译期常量、模板参数、元编程运行时常量、接口约束函数支持可修饰编译期函数仅修饰变量或函数返回值优化潜力编译期计算,零运行时开销依赖编译器优化错误检查严格编译期检查运行时可能失败需要编译期确定的常量或逻辑 →constexpr仅需运行时不可修改的变量 →const现代 C++ 代码优先使用constexpr,除非明确需要运行时初始化。
2025-05-17 12:05:19
1012
原创 【C/C++】Clang线程安全注解:提升多线程代码可靠性
预防数据竞争:确保共享资源受锁保护。规范锁使用:明确锁的获取顺序和生命周期。提升代码可读性:自文档化锁与资源的关系。正确使用这些注解需结合对多线程编程的理解,但其在复杂系统中的价值不可低估,尤其在需要高并发可靠性的场景(如服务器、嵌入式系统)中表现突出。
2025-05-16 23:36:18
548
原创 【C/C++】C++中引用类型私有成员的设计与应用
适用场景:依赖注入、避免拷贝、不可变设计、强制接口约束。核心优势:语法简洁、强制初始化、避免空值。核心风险:悬挂引用、生命周期管理复杂。替代方案:若需灵活性(如重新绑定或可选依赖),优先选择指针或智能指针。
2025-05-16 23:33:20
589
原创 【C/C++】深度解析C++ Allocator:优化内存管理的关键
内存池:预分配大块内存,避免频繁调用new/delete。对齐控制:确保内存按特定对齐方式分配(如 SIMD 指令要求)。共享内存:在进程间共享内存(需配合操作系统 API)。调试跟踪:统计内存分配次数或检测内存泄漏。持久化存储:将对象分配到非易失性内存(如硬盘映射内存)。public:// 类型定义(必须)// C++11 后需要定义 propagate_on_container_* 特性// 构造与析构(通常为默认)// 核心方法:分配与释放内存。
2025-05-15 18:26:11
701
原创 【C/C++】高阶用法_笔记
利用模板特化在编译时推断类型属性。:通过模板参数匹配失败实现条件编译。:独占所有权,不可复制,可移动。:打破循环引用,避免内存泄漏。:共享所有权,基于引用计数。:在编译期执行计算。
2025-05-14 23:52:39
822
原创 【C/C++】深度探索c++对象模型_笔记
按继承顺序排列各基类子对象,每个多态基类有自己的。:存储虚基类子对象的偏移量,供构造函数初始化时使用。:所有虚继承路径共享同一个基类实例。时,编译器自动调整指针偏移。
2025-05-14 23:49:23
1017
原创 【C/C++】跟我一起学_多线程编程:伪唤醒与虚假同步的深度解析
伪唤醒指线程在未收到显式通知(如notify()或)的情况下,从等待状态(如条件变量wait())中被唤醒的现象。生产者-消费者模型中,消费者线程被唤醒时,队列可能仍为空。线程因系统信号(如定时器中断)或内核调度策略被意外唤醒。虚假同步指线程因错误同步机制导致对共享资源的访问顺序混乱。条件判断错误:未正确使用锁保护共享变量,导致竞态条件。通知丢失:线程A通知时,线程B尚未进入等待状态,导致通知失效。始终使用循环检查条件,而非单次if判断。优先使用带谓词的wait方法(如C++的。
2025-05-12 00:30:18
968
原创 【C/C++】跟我一起学_C++同步机制效率对比与优化策略
低并发/简单场景:优先使用互斥锁或原子操作。高并发读多写少:读写锁或无锁数据结构。高频通信/实时系统:无锁队列+条件变量组合。资源限制控制:信号量或线程池。实际开发中需结合性能测试工具(如perf、Valgrind)分析瓶颈,并根据硬件特性(CPU缓存、内存带宽)优化同步策略。
2025-05-12 00:11:35
1143
2
C++开发过程中可能遇到的问题
2024-06-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人