计算机
计算机类成品文章(语言、中间件、系统等),从 1-知识 的素材重写整理而来。
- C++ thread_local 析构时机:detach、join 与进程退出 —— 所属线程正常退出才析构:detach 的线程活到进程退出则 thread_local 不析构、join 版先于 join 返回,附全局对照实验与 ZeroMQ context 退出的联动场景
- Linux 多进程开发:fork、exec 与进程回收 —— fork 返回两次与写时复制、exec 族 l/v/p/e 后缀规律、exit/_exit 缓冲差异、孤儿僵尸成因与 wait/waitpid 循环回收
- Linux 系统编程入门:gcc、库、Makefile 与文件 IO —— gcc 四步编译与选项、静态/动态库制作加载、Makefile 规则演进、GDB 命令流、双层缓冲与文件描述符三层模型、open/read/write/lseek/stat 全家桶
- Cyclone DDS 代理模型:发现协议与状态镜像 —— SPDP/SEDP 两层发现的不对称问题、Proxy 本地镜像与双向匹配三重校验、多播例外、租约与级联清理的生命周期管理
- 翻译 - CycloneDDS 发现行为 —— 官方文档译文:有状态实现与代理机制、进程内参与者共享发现、滞留写入器、WHC 双索引与写入器限流的水位线机制
- 翻译 - 数据路径配置 —— 官方文档译文:重传合并与积压限制、DDSI 分片与 UDP 分片的权衡、接收/交付线程模型、同步交付与 MaxSampleSize 丢弃行为
- C++ 事件分发器:线程安全队列与死锁防护 —— 互斥锁加条件变量的生产者-消费者骨架、虚假唤醒与关闭协议、锁外处理缩短持锁时间、单一职责锁等三条死锁防护规则
- iceoryx 零拷贝通信:共享内存原理与内存管理 —— 消除系统调用与数据拷贝的三大机制、loan/publish/take/release 的指针传递模型、静态内存池与 Chunk 引用计数、内存屏障与 ABA
- ZeroMQ 消息丢失排查:模式语义、HWM 与慢连接者 —— 从丢失模式定性的排查流程图、四类 socket 的可靠性边界、HWM 满溢静默丢弃、PUB-SUB 慢连接者与 XPUB_VERBOSE
- ZeroMQ 事件驱动改造:zmq_poll 与 ZMQ_PAIR —— zmq_poll 的多路复用原理与超时配置、ZMQ_PAIR 加 inproc 把跨线程发送收进统一事件循环、ipc 的 Unix Domain Socket 底层
- C++ 线程安全单例:DCLP、Meyers Singleton 与 inline static —— DCLP 的指令重排陷阱、C++11 magic statics 的标准保证与递归重入 UB、call_once 与 C++17 inline 静态成员的选型
- ZeroMQ socket monitor 事件对照表 —— 16 个监控事件的十六进制/十进制全表、event_value 随事件变化的语义、协议错误码子表与日志解析示例
- ZeroMQ inproc 传输使用注意 —— 端点命名在 context 内唯一、256 字符上限,libzmq #4778 短生命周期 inproc socket 的 fd 泄漏复现与区分
- C++ 构造与析构中调用虚函数:多态失效与纯虚调用崩溃 —— vptr 逐级推进机制决定派生类覆盖版本不会被分派,纯虚槽位调用直接终止,间接多态才是真正的 UB,附二段析构等替代方案
- C++ private 纯虚函数:访问性与多态无关 —— std::pmr::memory_resource 的 NVI 结构解读,示例验证 private 虚函数照常虚分派,访问性只挡派生类内部直接调用
- C++ 虚函数与虚继承内存模型:vtable、Thunk 与 VTT —— Itanium ABI 视角的 vptr/vtable 分派、RTTI 与 offset_to_top、多继承 Thunk、虚继承 vbase_offset/vcall_offset 与构造期 VTT
- Boost.Exception:给 C++ 异常附加错误上下文 —— error_info 键值附加与 BOOST_THROW_EXCEPTION 位置信息,catch 层沿途补上下文、exception_ptr 统一处理与 diagnostic_information 完整诊断
- DDS XTypes:类型系统的动机与规范构成 —— DDS 以数据为中心的根基:序列化下沉、按 key 组织、内容过滤、跨厂商互认四类动机,类型系统/类型描述/序列化/语言绑定/DCPS 扩展五部分,FINAL/APPENDABLE/MUTABLE 三级可扩展性与 TypeObject 在线协商
- C++ 单例析构顺序:静态销毁时序与四种应对 —— 跨编译单元静态析构顺序未指定导致 use-after-free 的成因,shared_ptr 托管、指针版手动 destroy、Phoenix 复活、消除依赖四种方案,及对 Meyers 单例显式调析构的二次析构陷阱
- 红黑树详解:五条性质与插入删除调整 —— 2-3-4 树等价视角引出五条性质,插入双红与删除双黑的分情形调整,与 AVL 的对比及选型
- DDS Security 安全机制:风险模型与五个安全插件 —— 无认证发现下的泄密/伪造/污染三类风险,认证/访问控制/加密三必选插件的 PKI、治理与权限文档、AES-GCM/GMAC,及启用后握手开销与易失数据丢失
- 七种比较类排序算法:步骤、实现与复杂度 —— 冒泡到堆排序的思路、步骤与 C++ 实现,复杂度稳定性总览表与选型要点
- C++ Pimpl 惯用法:编译防火墙与二进制兼容 —— 指针封装实现的动机、接口/实现类结构与示例,unique_ptr 要求特殊成员函数在 .cpp 定义的完整类型原理与得失清单
- Boost.Asio 定时器:周期任务与重设到期时间 —— system_timer 周期重启写法,expires_after 取消挂起等待、handler 恰好调用一次与 operation_aborted 的实测走查
- C++ 时间戳转日期字符串:chrono、to_time_t 与 strftime —— 三步转换实现,to_time_t 秒级截断与 localtime 线程安全两处细节及可重入替代
- printf 转换说明与修饰符速查 —— 转换说明、修饰符、标记三类成分全表与书写顺序,sizeof 用 %zd、float 自动提升两个易错点
- Linux 守护进程:进程组、会话与创建步骤 —— 终端/进程组/会话三层概念,六步创建法各自动机:setsid 摆脱终端、umask/chdir/关 fd 的工程原因与 /dev/null 重定向
- Linux 共享内存与内存映射 —— mmap 与 System V shm 两条免内核拷贝的 IPC 路:接口、七个易错点、标记式删除行为与选型对比
- Linux 信号机制:产生、阻塞与捕捉 —— 常见信号与五种默认动作、signal/sigaction 捕捉、阻塞与未决位图、SIGCHLD 循环 waitpid 回收僵尸的完整实践
- Linux 管道 IPC:匿名管道与有名管道 —— pipe 与 FIFO 的读写规则四象限、PIPE_BUF 原子写上限、FIFO 打开阻塞、双管道聊天示例
- C++ 设计模式入门:设计原则与常用模式实现 —— 六大设计原则、GoF 分类,观察者/装饰/工厂方法/抽象工厂/单例/职责链六模式的动机、类图与 C++ 实现
- ZeroMQ 代理心跳检测:让 proxy 感知 server 存活 —— ZMTP 心跳三选项语义、socket monitor 监听断开事件、server 归零关闭代理,附完整示例
- 无锁环形队列设计与实现(SPSC 与 MPMC) —— SPSC 用「容量 +1 槽位 + acquire/release 索引」区分空满,MPMC 用 Vyukov 按槽序号与 CAS 抢占,附完整实现
- C++ 禁止拷贝与移动的常见原因 —— 六类设计动因(资源唯一性/单例/线程安全成员等)与宏实现,澄清「不可变对象」误判
- 现代 C++ 新特性汇总:从 C++11 到 C++23 —— 五个版本的定位与特性地图,附 C++26 展望与编译器支持入口,系列总览
- C++23 新特性 —— expected、print、generator、flat 容器、推导 this:把 C++20 框架的最后一公里走完
- C++20 新特性 —— The Big Four(模块、概念、协程、范围)逐项展开,附格式化、日历、constexpr 扩展
- C++17 新特性 —— 结构化绑定、if constexpr、CTAD 与词汇类型:日常代码风格从此改变
- C++14 新特性 —— minor 版本的关键补丁:泛型 lambda、初始化捕获、make_unique、放松 constexpr
- C++11 新特性 —— 现代 C++ 起点:内存模型、auto、lambda、智能指针、变参模板
- epoll 与 Reactor 并发模型详解 —— 单 Reactor 多线程模型、epoll 与 select/poll 对比、ET/LT 选择与 EPOLLONESHOT