posts

文章归档

PlumePHP 全站文章的归档入口,按时间倒序汇总各专题的技术文章,并提供按主题浏览的专题分类入口。

这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。

全部文章

全部文章 game golang 客户端开发 Minigame Saas rust Python Java cg Typescript
cpp

C++ 移动语义与完美转发:从右值引用到引用折叠

移动语义是 C++11 最重要的语言革新之一,它让资源所有权可以在对象之间零成本转移;完美转发则借助引用折叠与 std::forward 把实参的值类别原样传递下去。本文从值类别与引用基础出发,逐层剖析移动构造与移动赋值的手写实现、引用折叠规则、std::move 与 std::forward 的语义差异、RVO/NRVO 的拷贝省略保证,以及 const 成员、noexcept 缺失、返回局部变量等常见移动陷阱,并给出可编译的实测代码。

8 分钟阅读
C++ 性能优化
cpp

C++ 模糊测试与覆盖率:libFuzzer、AFL++ 与 Sanitizer

手写单元测试只能覆盖你想到的输入,而内存安全漏洞几乎总出现在你没想到的那一分支。模糊测试用覆盖率反馈自动生成输入,配合 ASan/UBSan/MSan 能在几小时内挖出人工测试数月都发现不了的崩溃。本文从 libFuzzer 的 fuzz target 编写讲起,对比 AFL++ 的插桩模式与语料管理,系统梳理 Sanitizer 的组合策略、gcov 与 llvm-cov 的覆盖率度量方法,并给出可落地的 CI 流水线设计。

8 分钟阅读
C++ 测试 模糊测试
cpp

C++ 无锁数据结构:栈、队列与安全内存回收

互斥锁在高竞争下会引发上下文切换与优先级反转,无锁数据结构用 CAS 等原子原语把同步下沉到硬件层面。本文从原子原语与 CAS 循环讲起,完整实现无锁栈与 Michael-Scott 队列,剖析 ABA 问题的成因与带标记指针的解法,重点讨论无锁编程真正的难点——内存回收,对比 hazard pointer、RCU 与 epoch-based reclamation 三种方案,给出内存序选型清单与压测验证方法。

8 分钟阅读
C++ 无锁编程 并发
cpp

C++ 序列化库选型实战:从 JSON 到 FlatBuffers

序列化是分布式系统与持久化存储的基础设施,选错库会让延迟、体积与可维护性同时受损。本文横向对比 C++ 生态中最常用的序列化方案:文本侧的 nlohmann/json 与 RapidJSON、二进制侧的 Protocol Buffers 与 FlatBuffers/Cap'n Proto,剖析各自的编码格式与零拷贝原理,给出 Schema 演进与向后兼容规则,附上吞吐量、延迟与序列化体积的实测数据,并总结一套可落地的选型决策表。

8 分钟阅读
C++ 序列化 Protobuf
cpp

C++ 依赖管理与包管理:vcpkg 与 Conan 实战

C++ 长期缺乏统一的包管理方案,第三方库往往靠手工编译、系统包管理器或 Git submodule 引入,导致构建不可复现、版本冲突频发。本文系统对比 vcpkg 与 Conan 两套主流方案:vcpkg 的 manifest 模式与注册表机制、Conan 的 conanfile 与包 ID 二进制兼容模型、锁文件与私有仓库搭建、二进制缓存加速 CI,以及与 CMake 的三种集成方式,最后给出一份可直接落地的依赖管理实践清单。

7 分钟阅读
C++ 包管理 CMake
cpp

C++ SIMD 与向量化实战:从自动向量化到 AVX2 Intrinsics

现代 CPU 每个核心都提供 128/256/512 位宽的向量寄存器,一次指令可以并行处理 4 到 16 个数据元素。本文系统讲解如何让 C++ 代码吃满这些向量单元:先讲清自动向量化的前提条件与用编译器报告定位失败原因的方法,再深入 SSE/AVX2 Intrinsics 手写、数据布局与内存对齐、掩码运算与水平归约技巧,最后给出跨编译器的可移植性封装方案,并用点积与图像处理两个实战案例量化加速比。

7 分钟阅读
C++ SIMD 性能优化