<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>cpp on PlumePHP</title><link>https://plumephp.com/categories/cpp/</link><description>Recent content in cpp on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Wed, 07 Oct 2026 21:05:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/categories/cpp/index.xml" rel="self" type="application/rss+xml"/><item><title>C++ Unicode 与文本处理：编码转换与高性能字符串</title><link>https://plumephp.com/cpp-unicode-text-processing/</link><pubDate>Wed, 07 Oct 2026 21:05:00 +0800</pubDate><guid>https://plumephp.com/cpp-unicode-text-processing/</guid><description>std::string 不携带编码信息，这让 C++ 的文本处理布满暗礁。本文区分字节、码点与字素簇三个层次，讲清 UTF-8/UTF-16 的编码规则与代理对，演示 iconv、ICU 与 utf8cpp 的转换方案，剖析 size()、substr、大小写折叠与规范化的常见错误。</description></item><item><title>C++ 数值计算与线性代数：Eigen 与表达式模板</title><link>https://plumephp.com/cpp-numeric-linear-algebra/</link><pubDate>Wed, 07 Oct 2026 21:04:00 +0800</pubDate><guid>https://plumephp.com/cpp-numeric-linear-algebra/</guid><description>线性代数是科学计算、图形与机器学习的共同底座。本文讲清朴素运算符重载为何会产生海量临时对象，拆解 Eigen 的表达式模板与循环融合机制，给出动态/固定尺寸、存储顺序与分解求解的选型表，并剖析 aliasing、auto 推导与 eval() 这几个高频陷阱。</description></item><item><title>C++ 静态分析与代码质量工具链：clang-tidy 与 Clang Static Analyzer</title><link>https://plumephp.com/cpp-static-analysis-toolchain/</link><pubDate>Wed, 07 Oct 2026 21:03:00 +0800</pubDate><guid>https://plumephp.com/cpp-static-analysis-toolchain/</guid><description>C++ 的未定义行为与资源泄漏大多逃得过编译器，却逃不过静态分析。本文梳理编译器警告、clang-tidy 与 Clang Static Analyzer 三个层次的职责边界，给出 .clang-tidy 配置、checks 分类与自动修复实践，讲清 compile_commands.json 的生成与 CI 增量接入策略。</description></item><item><title>C++ 日志与结构化可观测性：spdlog 与异步日志</title><link>https://plumephp.com/cpp-logging-structured/</link><pubDate>Wed, 07 Oct 2026 21:02:00 +0800</pubDate><guid>https://plumephp.com/cpp-logging-structured/</guid><description>日志既是排障的第一现场，也是性能的隐形杀手。本文拆解 spdlog 的 logger/sink/formatter 架构，讲清同步与异步日志的队列模型与丢日志边界，演示结构化 JSON 日志与字段设计，并给出编译期级别裁剪、backtrace 环形缓冲与 OpenTelemetry 集成的落地方案。</description></item><item><title>C++ 文件系统与 IO：std::filesystem、流与内存映射</title><link>https://plumephp.com/cpp-filesystem-io/</link><pubDate>Wed, 07 Oct 2026 21:01:00 +0800</pubDate><guid>https://plumephp.com/cpp-filesystem-io/</guid><description>文件 IO 看似简单，性能与可移植性却常被低估。本文从 std::filesystem 的 path 与目录遍历讲起，对比 fstream、POSIX read/write 与 mmap 三层的开销差异，剖析缓冲、系统调用次数与页缓存的关系，并给出内存映射的适用边界与常见陷阱。</description></item><item><title>C++ 时间日期与时区：std::chrono 日历与时区库</title><link>https://plumephp.com/cpp-chrono-time-zones/</link><pubDate>Wed, 07 Oct 2026 21:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-chrono-time-zones/</guid><description>时间处理是分布式系统里最容易出错的一环。本文梳理 std::chrono 的时钟、时长与 C++20 日历类型，讲清 system_clock 与 steady_clock 的分工、duration_cast 的溢出陷阱，并用 zoned_time、locate_zone 演示时区换算与夏令时边界，最后给出格式化与解析的落地方案。</description></item><item><title>C++ ABI 与二进制兼容：符号修饰、SO 版本化与稳定接口</title><link>https://plumephp.com/cpp-abi-binary-compatibility/</link><pubDate>Tue, 06 Oct 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-abi-binary-compatibility/</guid><description>C++ 没有标准化 ABI，同一份源码在不同编译器与标准库版本下常无法互相链接。本文实测 Itanium 与 MSVC 的名字修饰差异，剖析虚表布局与标准库类型跨边界传递的风险，给出 PIMPL、纯虚接口与 extern C 工厂方案，并讲解 soname 与 ABI 检查工具。</description></item><item><title>C++ constexpr 与编译期编程实战：从 constexpr 容器到 consteval</title><link>https://plumephp.com/cpp-constexpr-compile-time-programming/</link><pubDate>Tue, 06 Oct 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-constexpr-compile-time-programming/</guid><description>constexpr 把计算从运行期搬到编译期。本文梳理 constexpr、consteval、constinit 的语义分工，用 static_assert 与编译期 FNV/CRC32 哈希演示常量求值，讲解 C++20 constexpr 容器与 if consteval。</description></item><item><title>C++ 与 WebAssembly：Emscripten 工具链与运行时实践</title><link>https://plumephp.com/cpp-wasm-emscripten/</link><pubDate>Tue, 06 Oct 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-wasm-emscripten/</guid><description>WebAssembly 让 C++ 代码可以跑在浏览器、Node.js 与边缘函数里。本文从线性内存模型讲起，梳理 emcc、emcmake、emrun 等命令，详解 -O 级别与 -s 设置的取舍，给出 KEEPALIVE、embind、val 三种互操作方案与 WASI。</description></item><item><title>C++ 异构计算：CUDA、SYCL 与 OpenMP Offload</title><link>https://plumephp.com/cpp-gpu-heterogeneous-computing/</link><pubDate>Tue, 06 Oct 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-gpu-heterogeneous-computing/</guid><description>把计算搬上 GPU 是性能敏感场景的必然选择。本文从异构计算的执行空间模型讲起，给出 CUDA 的 kernel、共享内存归约与统一内存实践，再讲 SYCL 单源编程与 OpenMP target offload，最后总结占用率、bank 冲突与合并访存等性能要点。</description></item><item><title>C++ 编译速度优化：PCH、Unity Build、ccache 与 IWYU</title><link>https://plumephp.com/cpp-build-speed-optimization/</link><pubDate>Tue, 06 Oct 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-build-speed-optimization/</guid><description>大型 C++ 项目的编译时间常以小时计，大部分浪费在重复解析头文件上。本文从 -ftime-report 与 -ftime-trace 度量入手，讲解 IWYU 头文件治理、PCH、C++20 Modules 与 Unity Build，再谈 ccache 与 lld/mold。</description></item><item><title>用 C++ 实现存储引擎：B+ 树与 LSM-Tree</title><link>https://plumephp.com/cpp-storage-engine-implementation/</link><pubDate>Tue, 06 Oct 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-storage-engine-implementation/</guid><description>存储引擎是数据库的心脏。本文从页缓存与磁盘布局讲起，剖析 B+ 树的页格式、节点分裂与范围扫描，拆解 LSM-Tree 的 MemTable、SSTable、跳表与 compaction，讨论 WAL 崩溃恢复与三种读写放大，并给出一个 C++20 最小 KV 引擎骨架。</description></item><item><title>C++ SIMD 与向量化实战：从自动向量化到 AVX2 Intrinsics</title><link>https://plumephp.com/cpp-simd-vectorization-practice/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-simd-vectorization-practice/</guid><description>现代 CPU 每个核心都提供 128/256/512 位宽的向量寄存器，一次指令可以并行处理 4 到 16 个数据元素。本文系统讲解如何让 C++ 代码吃满这些向量单元：先讲清自动向量化的前提条件与用编译器报告定位失败原因的方法，再深入 SSE/AVX2 Intrinsics 手写、数据布局与内存对齐、掩码运算与水平归约技巧，最后给出跨编译器的可移植性封装方案，并用点积与图像处理两个实战案例量化加速比。</description></item><item><title>C++ 依赖管理与包管理：vcpkg 与 Conan 实战</title><link>https://plumephp.com/cpp-package-management-vcpkg-conan/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-package-management-vcpkg-conan/</guid><description>C++ 长期缺乏统一的包管理方案，第三方库往往靠手工编译、系统包管理器或 Git submodule 引入，导致构建不可复现、版本冲突频发。本文系统对比 vcpkg 与 Conan 两套主流方案：vcpkg 的 manifest 模式与注册表机制、Conan 的 conanfile 与包 ID 二进制兼容模型、锁文件与私有仓库搭建、二进制缓存加速 CI，以及与 CMake 的三种集成方式，最后给出一份可直接落地的依赖管理实践清单。</description></item><item><title>C++ 序列化库选型实战：从 JSON 到 FlatBuffers</title><link>https://plumephp.com/cpp-serialization-libraries/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-serialization-libraries/</guid><description>序列化是分布式系统与持久化存储的基础设施，选错库会让延迟、体积与可维护性同时受损。本文横向对比 C++ 生态中最常用的序列化方案：文本侧的 nlohmann/json 与 RapidJSON、二进制侧的 Protocol Buffers 与 FlatBuffers/Cap'n Proto，剖析各自的编码格式与零拷贝原理，给出 Schema 演进与向后兼容规则，附上吞吐量、延迟与序列化体积的实测数据，并总结一套可落地的选型决策表。</description></item><item><title>C++ 无锁数据结构：栈、队列与安全内存回收</title><link>https://plumephp.com/cpp-lockfree-data-structures/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-lockfree-data-structures/</guid><description>互斥锁在高竞争下会引发上下文切换与优先级反转，无锁数据结构用 CAS 等原子原语把同步下沉到硬件层面。本文从原子原语与 CAS 循环讲起，完整实现无锁栈与 Michael-Scott 队列，剖析 ABA 问题的成因与带标记指针的解法，重点讨论无锁编程真正的难点——内存回收，对比 hazard pointer、RCU 与 epoch-based reclamation 三种方案，给出内存序选型清单与压测验证方法。</description></item><item><title>C++ 模糊测试与覆盖率：libFuzzer、AFL++ 与 Sanitizer</title><link>https://plumephp.com/cpp-fuzzing-coverage-testing/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-fuzzing-coverage-testing/</guid><description>手写单元测试只能覆盖你想到的输入，而内存安全漏洞几乎总出现在你没想到的那一分支。模糊测试用覆盖率反馈自动生成输入，配合 ASan/UBSan/MSan 能在几小时内挖出人工测试数月都发现不了的崩溃。本文从 libFuzzer 的 fuzz target 编写讲起，对比 AFL++ 的插桩模式与语料管理，系统梳理 Sanitizer 的组合策略、gcov 与 llvm-cov 的覆盖率度量方法，并给出可落地的 CI 流水线设计。</description></item><item><title>C++ 移动语义与完美转发：从右值引用到引用折叠</title><link>https://plumephp.com/cpp-move-semantics-perfect-forwarding/</link><pubDate>Thu, 01 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-move-semantics-perfect-forwarding/</guid><description>移动语义是 C++11 最重要的语言革新之一，它让资源所有权可以在对象之间零成本转移；完美转发则借助引用折叠与 std::forward 把实参的值类别原样传递下去。本文从值类别与引用基础出发，逐层剖析移动构造与移动赋值的手写实现、引用折叠规则、std::move 与 std::forward 的语义差异、RVO/NRVO 的拷贝省略保证，以及 const 成员、noexcept 缺失、返回局部变量等常见移动陷阱，并给出可编译的实测代码。</description></item><item><title>C++20 Modules 模块化与构建系统演进</title><link>https://plumephp.com/cpp-modules-build-system/</link><pubDate>Wed, 30 Sep 2026 19:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-modules-build-system/</guid><description>头文件包含模型是 C++ 编译速度的最大瓶颈：宏污染、前向声明迷宫、重复模板实例化。C++20 Modules 从根本上替代了头文件机制，通过显式的 export/import 接口实现真正的模块化编译隔离。本文深入 module 定义、module partition、与既有头文件的互操作策略，以及 CMake 3.28+ 对 modules 的构建支持，帮助你在大型 C++ 项目中评估和落地 Modules。</description></item><item><title>C++20 Ranges 与惰性求值视图</title><link>https://plumephp.com/cpp-ranges-views/</link><pubDate>Wed, 30 Sep 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-ranges-views/</guid><description>C++20 Ranges 库将函数式编程的管道操作引入标准库，通过惰性求值的 view 和 adapter 让数据处理代码更具表达力。本文深入 Ranges 的核心概念，对比传统 STL 算法、讲解 filter+transform 管道组合、自定义 view 的实现方法，以及 ranges::to 的容器构造技巧，帮助你写出声明式、高效且可组合的 C++ 数据流代码。</description></item><item><title>C++ 单元测试框架：Google Test、Catch2、Doctest 与 Mock 技巧</title><link>https://plumephp.com/cpp-testing-gtest-catch2/</link><pubDate>Wed, 30 Sep 2026 17:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-testing-gtest-catch2/</guid><description>单元测试是现代 C++ 工程质量的基石。本文对比 Google Test、Catch2 和 Doctest 三大主流测试框架的断言风格、测试夹具、参数化测试能力；深入讲解 Google Mock 的模拟对象与行为期望设定；并覆盖测试覆盖率工具 gcov/lcov 的集成，帮助你在 CI/CD 中建立可度量的质量门禁。</description></item><item><title>C++ 现代设计模式：CRTP、类型擦除、PIMPL 与策略模式</title><link>https://plumephp.com/cpp-design-patterns-modern/</link><pubDate>Wed, 30 Sep 2026 16:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-design-patterns-modern/</guid><description>C++ 的模板和类型系统为经典设计模式提供了独特的实现方式。CRTP 用静态多态替代虚函数开销，类型擦除在保持接口统一的同时抹除具体类型，PIMPL 将实现细节彻底隐藏，策略模式借助模板实现零成本抽象。本文深入这些现代 C++ 设计惯用法，展示如何用编译期计算和类型系统构建高性能、可扩展的架构。</description></item><item><title>C++ 调试工具链：Sanitizer、Valgrind、静态分析与 ASan/LSan/UBSan</title><link>https://plumephp.com/cpp-debug-sanitizers/</link><pubDate>Wed, 30 Sep 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-debug-sanitizers/</guid><description>C++ 代码中的内存错误、数据竞争和未定义行为是传统调试手段难以捕捉的隐形杀手。本文系统介绍 AddressSanitizer、ThreadSanitizer、MemorySanitizer、UBSanitizer 等编译器内置工具，配合 Valgrind 和 clang-tidy 静态分析，构建一套从开发到 CI/CD 的完整调试与质量保障工具链。</description></item><item><title>C++ 异常安全与错误处理策略：noexcept、RAII 与 Herb Sutter 指引</title><link>https://plumephp.com/cpp-exception-error-handling/</link><pubDate>Wed, 30 Sep 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-exception-error-handling/</guid><description>C++ 异常机制是资源管理与错误传播的核心基础设施，但异常安全等级、noexcept 语义、异常开销与替代方案（std::expected）的权衡，往往让开发者感到困惑。本文从异常安全保证等级出发，系统梳理 noexcept 传播规则、Herb Sutter 的异常使用原则，以及 C++23 std::expected 作为无异常错误处理的新范式，帮助你在工程中做出正确的选择。</description></item><item><title>C++ 嵌入式与游戏引擎集成：宿主嵌入、绑定生成与性能内存约束</title><link>https://plumephp.com/cpp-embedded-game-engine-integration/</link><pubDate>Sun, 27 Sep 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-embedded-game-engine-integration/</guid><description>讲解 C++ 嵌入宿主系统的完整路径：游戏引擎脚本集成（Lua/sol2）、跨语言绑定生成（SWIG/pybind11/手动绑定）、以及嵌入式环境下的性能与内存约束（MISRA C++、异常/RTTI 裁剪），帮助 C++ 开发者作为被嵌入方与嵌入方双向协同。</description></item><item><title>C++ 跨平台构建矩阵：CMake Presets、包管理器与 CI 矩阵、ABI 兼容</title><link>https://plumephp.com/cpp-cross-platform-build-matrix/</link><pubDate>Sun, 27 Sep 2026 13:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-cross-platform-build-matrix/</guid><description>系统讲解 C++ 项目的跨平台构建矩阵：CMake Presets 统一配置、Conan/vcpkg 依赖管理、GitHub Actions 矩阵 CI，以及 ABI 兼容与符号导出的底层原理，让一个项目在 Windows/Linux/macOS 上稳定可复现。</description></item><item><title>C++ 编译期反射与序列化：模板元编程驱动的结构与高性能二进制协议</title><link>https://plumephp.com/cpp-compiletime-reflection-serialization/</link><pubDate>Sun, 27 Sep 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-compiletime-reflection-serialization/</guid><description>在 C++ 中实现编译期反射与序列化：结构化绑定展开聚合体、宏方案、Boost.PFR 等现成工具，以及与 Protobuf/FlatBuffers/Cap'n Proto 等二进制序列化方案的性能对比与工程选型。</description></item><item><title>C++ 自定义内存池与分配器：从 Arena 到 std::pmr 与无锁分配</title><link>https://plumephp.com/cpp-memory-pool-allocators/</link><pubDate>Sun, 27 Sep 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-memory-pool-allocators/</guid><description>系统讲解自定义内存分配：Arena 线性分配、Object Pool 空闲链表、std::pmr 多态分配器、无锁线程本地分配，以及与 jemalloc/tcmalloc 的对比与选型，帮助读者在正确场景中消灭 malloc 瓶颈。</description></item><item><title>C++20 协程深入：co_await 机制、自定义 Awaitable 与生成器</title><link>https://plumephp.com/cpp-coroutines-generators/</link><pubDate>Sun, 27 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-coroutines-generators/</guid><description>深入 C++20 无栈协程的编译器视角：协程帧布局、co_await/co_yield 的展开机制、promise_type 与自定义 Awaitable、C++23 生成器与异步流，以及协程在服务端 IO 与性能陷阱上的实战经验。</description></item><item><title>C++ 网络编程：从 Socket 原语到 Boost.Asio 事件驱动模型</title><link>https://plumephp.com/cpp-network-programming-asio/</link><pubDate>Sun, 27 Sep 2026 09:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-network-programming-asio/</guid><description>从 POSIX socket 原语出发，系统讲解阻塞/非阻塞 I/O、select/poll/epoll 多路复用，再到 Boost.Asio 的事件驱动模型与异步操作，最终落地到半同步半异步服务端架构，为高并发 C++ 网络服务提供完整技术路径。</description></item><item><title>C++ 内存模型深度解析：从栈堆到对象生命周期</title><link>https://plumephp.com/cpp-memory-model/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-memory-model/</guid><description>C++ 是一门赋予了开发者底层内存控制能力的语言。理解其内存模型不仅是编写高效代码的基础，更是排查复杂 bug、设计高性能系统的关键。本文将系统性地剖析 C++ 的内存布局、RAII 设计哲学、对象生命周期管理、内存对齐细节、对象切片问题以及 Placement New 技术，最后给出符合现代 C+</description></item><item><title>C++ 原子操作与内存序：从无锁编程到内存屏障</title><link>https://plumephp.com/cpp-atomic-memory-order/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-atomic-memory-order/</guid><description>为什么需要无锁编程 在多线程程序中，互斥锁（mutex）是最常用的同步原语，但它并非银弹。当线程竞争锁失败时，操作系统会将其挂起，引发一次开销可观的上下文切换。在高度竞争的场景下，多个线程反复获取和释放同一把锁，还会导致缓存行颠簸（cache line bouncing）——锁变量所在的缓存行在各个</description></item><item><title>C++ 基础语法快速回顾：从 C 到 C++ 的范式转变</title><link>https://plumephp.com/cpp-language-basics/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-language-basics/</guid><description>C++ 基础语法完整回顾：引用与指针的本质区别、函数重载与默认参数、命名空间与作用域、const 正确性、I/O 流、面向对象三大特性、运算符重载与友元函数。适合有 C 基础转向 C++ 的开发者快速建立现代 C++ 编程思维。</description></item><item><title>C++ 多线程基础：std::thread、互斥量与条件变量</title><link>https://plumephp.com/cpp-threading-basics/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-threading-basics/</guid><description>C++11 标准库对并发编程进行了系统性重构，引入了 、 、 等核心头文件，让开发者无需依赖平台特定的 pthread 或 Win32 API，即可编写可移植的多线程代码。在此之前，C++ 开发者通常需要借助 Boost.Thread 或者直接调用操作系统底层 API，不仅代码可移植性差，而且容易因</description></item><item><title>C++ 工程实践：代码规范、测试与包管理</title><link>https://plumephp.com/cpp-engineering-practices/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-engineering-practices/</guid><description>C++ 作为一门兼具高性能与复杂性的系统级语言，工程化实践直接关系到代码的可维护性、健壮性和团队协作效率。本文从代码规范、静态分析、单元测试、覆盖率、包管理和 CI/CD 六个维度，梳理现代 C++ 项目的工程实践体系。</description></item><item><title>C++ 并发设计模式：线程池、Future 与异步编程</title><link>https://plumephp.com/cpp-concurrency-patterns/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-concurrency-patterns/</guid><description>C++11 的发布标志着现代 C++ 并发编程的开端。在此之前，开发者需要依赖平台特定的接口（如 POSIX pthreads 或 Windows API）来编写多线程程序，这不仅带来代码可移植性的问题，更使得并发逻辑与业务逻辑纠缠在一起。</description></item><item><title>C++ 性能剖析与优化：从 Cache 友好到 SIMD</title><link>https://plumephp.com/cpp-performance-optimization/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-performance-optimization/</guid><description>性能优化是 C++ 开发中最具挑战性也最有成就感的领域之一。然而，Donald Knuth 的名言 「Premature optimization is the root of all evil「 提醒我们：在盲目优化之前，必须先测量。没有数据支撑的优化，往往是徒劳甚至有害的。</description></item><item><title>C++ 模板与泛型编程：从函数模板到 SFINAE</title><link>https://plumephp.com/cpp-templates-generics/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-templates-generics/</guid><description>目录： 1. 函数模板与参数推导 2. 类模板与偏特化 3. 类型萃取与自定义检测 4. SFINAE 原理与 5. CRTP：静态多态 6. 表达式 SFINAE 与检测惯用法 7. 综合实战示例 --- C++ 模板不仅是泛型编程的基础，更是元编程的入口。</description></item><item><title>C++ 编译与链接原理：从预处理到可执行文件</title><link>https://plumephp.com/cpp-compilation-linking/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-compilation-linking/</guid><description>C++ 被誉为「零开销抽象「的语言，但代价是编译模型极其复杂。本文将从预处理到可执行文件的完整链路出发，深入剖析编译与链接的底层机制。一、编译四阶段：从源代码到可执行文件 C++ 编译并非一步到位，而是严格分为四个阶段。</description></item><item><title>C++11/14 核心特性：Lambda、智能指针与右值引用</title><link>https://plumephp.com/cpp-modern-11-14/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-modern-11-14/</guid><description>C++11 是 C++ 历史上最具里程碑意义的版本更新之一，它从根本上改变了我们编写 C++ 代码的方式。随后的 C++14 则在 C++11 的基础上进行了一系列实用的补充与完善。本文将深入剖析 C++11/14 的核心特性，帮助你全面理解现代 C++ 的设计哲学。</description></item><item><title>C++17/20/23 进阶特性：结构化绑定、Concept 与模块</title><link>https://plumephp.com/cpp-modern-17-20-23/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-modern-17-20-23/</guid><description>C++ 自 C++11 以来进入了一个快速演进的阶段，每隔三年发布一个新标准，每个版本都带来大量语法改进和库增强。对于习惯了传统 C++ 的开发者来说，C++17、C++20 和 C++23 中引入的许多特性不仅大幅提升了代码的表达力，还改变了编写和思考问题的方式。</description></item><item><title>CMake 工程化实战：从单文件到大型项目</title><link>https://plumephp.com/cpp-cmake-project/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-cmake-project/</guid><description>为什么是 CMake C++ 生态长期缺乏统一的构建工具。Make 语法晦涩且难以跨平台，Ninja 需要先生成规则，各 IDE 的专属项目文件更是互不兼容。CMake 的价值在于它充当了一个「元构建系统「——用一套声明式脚本描述项目结构，再生成平台原生的构建文件（Makefile、Ninja、Vi</description></item><item><title>STL 容器全解析与源码剖析</title><link>https://plumephp.com/cpp-stl-containers/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-stl-containers/</guid><description>容器是 C++ 标准库中最常用的组件，但「会用「与「懂原理「之间隔着巨大的性能鸿沟。本文从内存布局、增长策略和迭代器失效规则三个维度，深度剖析 sequence / associative / adapter 三大类容器的实现细节，帮助你在工程实践中做出正确的选择。</description></item><item><title>STL 算法与迭代器：从 for_each 到并行执行策略</title><link>https://plumephp.com/cpp-stl-algorithms/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-stl-algorithms/</guid><description>C++ 标准模板库（STL）的核心设计哲学是将数据结构与算法解耦。迭代器作为两者之间的桥梁，使得同一套算法能够作用于向量、列表、数组甚至输入流等完全不同的容器。理解迭代器的分类体系，是正确使用 STL 算法、避免性能陷阱的第一步。</description></item><item><title>模板元编程与编译期计算：TMP 实战指南</title><link>https://plumephp.com/cpp-metaprogramming/</link><pubDate>Thu, 10 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/cpp-metaprogramming/</guid><description>模板元编程（Template Metaprogramming，TMP）是 C++ 中最独特也最令人生畏的特性之一。它把模板系统变成了一台在编译期运行的图灵机，让程序员可以在编译阶段完成类型计算、算法推导和代码生成。</description></item><item><title>GLFW+GLAD 跨平台 OpenGL 开发实战</title><link>https://plumephp.com/opengl-cross-platform-glfw/</link><pubDate>Tue, 01 Sep 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/opengl-cross-platform-glfw/</guid><description>从零搭建完整的 GLFW+GLAD 跨平台 OpenGL 渲染项目。覆盖窗口创建、Core Profile 上下文、输入处理、HiDPI 支持、多窗口、ImGui 集成、CMake 跨平台构建与常见问题解决方案，附有完整可编译代码。</description></item><item><title>C++ 系统编程专题：从现代 C++ 到底层高性能工程</title><link>https://plumephp.com/posts/cpp/</link><pubDate>Tue, 01 Sep 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/posts/cpp/</guid><description>C++ 是唯一一门同时提供零成本抽象与直接操作硬件能力的工业级语言。本专题系统覆盖现代 C++ 核心特性演进（C++11/14/17/20/23）：移动语义与 RAII、Lambda 与智能指针、Concept 约束与协程机制（co_await/co_yield、自定义 Awaitable、生成器与异步流）；深入 STL 源码剖析（vector/deque 内存布局、红黑树与哈希表实现、迭代器分类）；并发编程（std::thread、原子操作与内存序、无锁数据结构、线程池与异步模式）；网络编程（从 POSIX Socket 原语到 Boost.Asio 事件驱动与半同步半异步架构）；模板元编程与 SFINAE、编译期反射与高性能序列化；内存管理（自定义内存池、std::pmr 分配器与 jemalloc/tcmalloc 对比）；CMake 工程化实践（target-based 模式、CMake Presets、Conan/vcpkg 依赖管理、CI 构建矩阵、ABI 兼容与符号导出）；性能优化（Cache 友好、分支预测、SIMD 向量化）；以及在游戏引擎、嵌入式系统、高频交易、自动驾驶中的应用场景与跨语言绑定集成，为性能敏感领域开发者提供完整技术路径。并补齐 std::chrono 时区、std::filesystem 与内存映射、spdlog 结构化日志、clang-tidy 静态分析、Eigen 数值计算、Unicode 文本处理等进阶议题。</description></item><item><title>Conan工具介绍</title><link>https://plumephp.com/conan-tools-introduction/</link><pubDate>Mon, 11 Nov 2024 17:46:32 +0800</pubDate><guid>https://plumephp.com/conan-tools-introduction/</guid><description>Conan是一个开源的、跨平台的、 decentralized C++ 包管理器，旨在帮助开发者管理项目的依赖关系，支持跨平台开发，并与多种构建系统集成。同时它也允许你搭建自己的私有仓库，供私有项目使用。</description></item></channel></rss>