编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • C语言入门精通

  • Cpp入门到精通

    • README
    • 入门教程

    • 综合案例

    • 专栏博客

      • README
      • 进程地址空间布局
      • 对象内存布局原理
      • 引用与指针本质
      • this指针与成员函数
      • 虚函数表深度剖析
      • 多重继承内存模型
      • 内存对齐与缓存行
      • 内存分配器演进史
      • 五大值类别详解
      • 右值引用与移动语义
      • 完美转发与引用折叠
      • 类型推导三大规则
      • 类型转换与隐式构造
      • const与volatile真相
      • RTTI与dynamic_cast
      • 类型擦除技术原理
      • 模板实例化机制
      • 模板特化与偏特化
      • SFINAE与enable_if
      • 可变参数模板原理
      • constexpr编译期计算
      • Concepts深度剖析
      • 元编程模板技巧
      • Modules模块化设计
      • RAII的设计哲学
      • 对象构造与析构
      • 拷贝与移动控制
      • unique_ptr原理剖析
      • shared_ptr底层剖析
      • weak_ptr与this增强
      • 五种存储期管理
      • vector扩容真相
      • deque分段连续设计
      • list与forward_list
      • 关联容器红黑树
      • 哈希容器深度剖析
      • 迭代器五大类别
      • STL算法设计哲学
      • Allocator分配器机制
      • C++内存模型基石
      • 六大内存序详解
      • atomic原子操作原理
      • mutex与条件变量
      • thread与jthread机制
      • 异步编程future家族
      • 无锁数据结构设计
      • 协程coroutine原理
      • 翻译单元与预处理
      • 编译期符号生成
      • 链接器工作原理
      • ODR规则与陷阱
      • 动态库与符号可见性
      • C++ ABI兼容性
      • LTO与PGO优化
      • 异常机制底层原理
      • Ranges革命与管道
      • format与print体系
      • UB未定义行为图鉴
      • C++设计哲学回望
      • 写作模板
        • 一、文件命名与编号
        • 二、骨架结构(10 章法)
        • 三、目录骨架(直接复制套用)
        • 四、写作风格红线
          • 4.1 语气与人称
          • 4.2 论证模式(重点)
          • 4.3 图示要求
          • 4.4 代码片段
        • 五、综合案例(第 10 章)三件套
        • 六、章节自检清单
        • 七、章节数与篇幅参考
        • 八、写作前置 SOP
        • 九、参考标杆
        • 十、C++ 专属要求(区别于 Java 专栏)
    • 开发技巧

  • Java入门精通

  • Go入门到精通

  • JavaScript入门

  • CodeX
  • Cpp入门到精通
  • 专栏博客
杨充
2026-06-02
目录

写作模板

# 00.专栏写作模板

本文件用于规范《C++ 核心原理深度专栏》全 60 篇的统一写作风格。 每写一篇新文章前,请先对照本模板检查骨架是否齐全。


# 一、文件命名与编号

  • 命名格式:NN.标题(不超过20个汉字).md
  • 编号 NN 为两位数,从 01 开始,全册按卷顺序连续编号至 60
  • 标题要"动宾结构 + 落点",避免空泛(❌ "C++ 容器" → ✅ "vector扩容真相")
  • 二级标题、三级标题:最少 6 字,最多 9 字,对仗工整

# 二、骨架结构(10 章法)

每篇文章必须包含以下 10 章,缺一不可:

1. 案例引入       ← 真实线上事故 / 反直觉代码片段,制造悬念
2. 架构概览       ← 一张总图 + 一段"为什么这么切"的反向论证
3~9. 核心原理拆解  ← 5~7 章,每章一个独立子主题,章内 4~9 节
   每章至少包含:源码/汇编/数据结构图 + "疑惑—论证—结论" 段
10. 综合案例串讲  ← 必须回扣第 1 章的案例,逐一回答第 1 章的所有疑问
   并升华出 3~4 条"设计哲学"
1
2
3
4
5
6

核心原则:第 1 章埋的所有疑问,第 10 章必须全部回答。中间章节是"取证过程"。

# 三、目录骨架(直接复制套用)

# NN.文章标题

#### 目录介绍
- [1. 案例引入](#1-案例引入)
  - [1.1 一段反常代码](#11-一段反常代码)
  - [1.2 顺藤摸到根因](#12-顺藤摸到根因)
  - [1.3 我们要回答什么](#13-我们要回答什么)
- [2. 架构概览](#2-架构概览)
  - [2.1 三大子模块](#21-三大子模块)
  - [2.2 为什么这么切](#22-为什么这么切)
- [3. XXX 子主题](#3-xxx-子主题)
  - [3.1 ...](#31-)
  ...
- [10. 综合案例串讲](#10-综合案例串讲)
  - [10.1 案例真相揭晓](#101-案例真相揭晓)
  - [10.2 一个 X 的一生](#102-一个-x-的一生)
  - [10.3 设计哲学回扣](#103-设计哲学回扣)
  - [10.4 速查表](#104-速查表)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 四、写作风格红线

# 4.1 语气与人称

  • 用 "我们" 不用 "你/笔者"——拉近距离,把读者当同行
  • 句末**避免"了哦呢嘛"**等弱化语气词
  • 关键结论用 **加粗**,给读者打靶子

# 4.2 论证模式(重点)

每个核心原理点必须按 "疑惑 → 论证 → 结论" 三段式展开:

**疑惑**:为什么 std::vector 默认按 1.5 或 2 倍扩容?

**论证**:
1. 假设按固定增量 +K 扩容,n 次 push_back 总拷贝代价是 O(n²),摊还不掉
2. 按几何级数 ×g 扩容,n 次 push_back 总拷贝代价 ≈ n·g/(g-1),摊还 O(1)
3. g=2 摊还代价最低(2.0),但已释放空间永远小于新空间——无法复用
4. g=1.5 时,第 k 次扩容后释放的空间 < 之前累计释放总和——可被分配器复用
5. 反向验证:MSVC 选 1.5,libstdc++/libc++ 选 2.0,是「内存复用」与「拷贝次数」的不同权衡

**结论**:扩容因子既不是经验值也不是巧合,是「摊还复杂度 × 内存复用率」联合最优化的产物。
1
2
3
4
5
6
7
8
9
10

严禁直接抛结论("vector 按 2 倍扩容是因为快")——读者要的是推导过程。

# 4.3 图示要求

  • 内存布局、对象模型、流程必须配 ASCII 图(用 Unicode 框线 ┌─┐│└─┘)
  • 多分支决策用 mermaid 流程图
  • 表格用于横向对比(≥3 项时)
  • 每个核心子章节至少有 1 个图或表

# 4.4 代码片段

  • C++ 代码必须可编译(带 #include / 命名空间)
  • 反汇编用 真实 godbolt 产物(gcc/clang/msvc 任一),不要手写
  • 注释用中文,贴在被解释行的右侧或上方
  • 单段代码 不超过 50 行,超过就拆
  • 尽量给出最小复现 (MCVE),标注编译器版本与编译参数

# 五、综合案例(第 10 章)三件套

子节 内容 示例
10.1 案例真相揭晓 逐条回答第 1 章的疑问 ①②③④⑤⑥ "回到 OrderQueue 的崩溃,6 个疑问现在能逐条作答了..."
10.2 一个 X 的一生 把核心实体的完整生命周期串成一棵树 "auto p = std::make_shared(...) 这一行背后..."
10.3 设计哲学回扣 升华 3~4 条跨篇适用的设计原则 "零开销抽象 / RAII / 值语义优先 / 编译期前移"
10.4 速查表 一张可截图保存的总结表 各值类别 / 各内存序 / 各特殊成员函数生成规则

# 六、章节自检清单

写完一篇后,逐条对照:

  • [ ] 第 1 章是真实线上代码吗?不是教科书例子?
  • [ ] 第 1 章末尾是否列出了 5~7 个待解答的疑问?
  • [ ] 中间章节每章是否有"疑惑—论证—结论"段?
  • [ ] 中间章节是否每章都至少有 1 个图或表?
  • [ ] 第 10.1 节是否逐条回答了第 1 章的疑问?
  • [ ] 第 10.2 节是否串起本篇 80% 以上的知识点?
  • [ ] 第 10.3 节是否提炼出可迁移的设计哲学?
  • [ ] 全篇标题是否 6~9 字且对仗?
  • [ ] 是否过渡到下一篇?("下一篇我们顺着 XXX 这条线,进入 NN+1 篇")

# 七、章节数与篇幅参考

项 推荐区间
总章数 10 章(固定)
每章节数 4~9 节
总字数 1.2~2 万字
总行数 800~1500 行(含代码与图)
代码 / 图 / 表占比 30%~40%

# 八、写作前置 SOP

flowchart LR
    A[选题] --> B[找一段真实代码<br/>作为开篇案例]
    B --> C[列出 5~7 个疑问<br/>这就是中间章节的提纲]
    C --> D[每个疑问对应一个章节<br/>规划 3~9 共 7 章]
    D --> E[按"疑惑→论证→结论"<br/>填充每一节]
    E --> F[第 10 章逐一回扣案例<br/>升华设计哲学]
    F --> G[自检清单逐项过]
    G --> H[更新 README 状态]
1
2
3
4
5
6
7
8

# 九、参考标杆

第 02 篇 02.对象内存布局原理.md 是本模板的完整范本(C++ 专属六项要求全覆盖),新写文章遇到结构疑问时,优先回看 02 篇对应位置。

# 十、C++ 专属要求(区别于 Java 专栏)

要求 说明
底层下沉一层 凡涉及对象/内存/调用,必须给出对应汇编(x86-64 优先),用 godbolt 链接或片段佐证
多编译器视角 关键差异处对比 GCC / Clang / MSVC 三家实现(如 std::string SSO、异常 ABI)
C++ 标准演进 标注 C++03/11/14/17/20/23 中的引入版本与 paper 编号(如 P0848R3)
零开销证据 凡声称「零开销抽象」处,必须有反汇编对比,不能口说无凭
UB 警示 涉及未定义行为的写法必须显式标红,并指出哪条标准条款([basic.lval]/[expr.lifetime])
跨平台注意 Linux/macOS/Windows 行为差异(如 thread_local 析构、动态库符号导出)
上次更新: 2026/06/10, 11:13:41
C++设计哲学回望
信号崩溃快速排查

← C++设计哲学回望 信号崩溃快速排查→

最近更新
01
信号崩溃快速排查
06-15
02
CoreDump破案
06-15
03
perf火焰图实战
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式