编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • 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
  • 性能优化实践

  • 程序编程原理

    • README
      • 📌 课程推荐|你为什么需要这个专栏
      • 🌟 课程差异化|与市面其他专栏的本质区别
        • 三大独家承诺
      • 📖 课程说明|怎么写、怎么读、怎么落地
        • 写作规范|每篇都遵守的"九段式"
        • 贯穿全书的思维方法
      • 🗺 覆盖的内容|一张图看清全部
        • 内容覆盖维度统计
      • 📚 课程分卷与目录介绍|5 卷 + 序卷 · 50+ 篇
        • 🌍 序卷|方法论与导读 · 📁 进入
        • 🔢 第 1 卷|数据的本质(万物起源) · 📁 进入 · 9 篇
        • 🧬 第 2 卷|运行时模型(从类到对象) · 📁 进入 · 8 篇
        • ⚡ 第 3 卷|并发之道(最硬核模块) · 📁 进入 · 18 篇
        • 🌱 起源篇
        • 🔥 矛盾篇
        • 🚀 范式篇
        • 🏊 池化篇
        • 💾 第 4 卷|内存的真相 · 📁 进入 · 8 篇
        • 🖼 第 5 卷|交互与系统 · 📁 进入 · 7 篇
      • 🛤 三条阅读路径
        • 🟢 新手路径|建立整体观(10 篇)
        • 🟡 进阶路径|深入核心矛盾(12 篇)
        • 🔴 面试冲刺|高频必考(10 篇)
      • 🎁 你能学到什么|读完这个专栏的 10 项收益
        • 🧠 认知层(思维方式)
        • 🛠 工程层(落地能力)
        • 🎤 表达层(输出能力)
        • 🚀 长期层(不被淘汰的能力)
      • 🧑‍💻 适合人群|这个专栏写给谁
        • ✅ 强烈推荐
        • ⚠️ 谨慎选择
      • 📮 学习节奏建议
      • 🎯 相关资源
    • 序卷方法论

    • 数据的本质

    • 运行时模型

    • 并发的设计

    • 内存的真相

    • 交互和系统

  • 稳定性与可靠性

  • 工程化与运维

  • 方案设计思想

  • 专栏
  • 程序编程原理
杨充
2025-11-14
目录

README

# 程序编程原理|跨语言底层设计思想

一本给"语言之上的程序员"写的书——看见设计,而不是语法。

看到 Java 的 ConcurrentHashMap、Go 的 sync.Map、C++ 的 concurrent_hash_map,能在脑中浮现它们背后同一个"分段锁"的设计灵魂。


# 📌 课程推荐|你为什么需要这个专栏

😣 现实:写了 5 年代码、面试时被问"synchronized 锁升级",
      会用但说不清原理,被定级压低一档;
      工作中遇到 Full GC、OOM、手势失灵、内存泄漏,
      只能 Stack Overflow 抄方案,却永远不知道根因。

🎯 转折:你欠缺的不是"知识点",而是"看见设计的能力"——
      能从"会用 synchronized"上升到"我知道它解决什么矛盾",
      能从"知道有 GC"上升到"我能预测三色标记在 STW 时的行为",
      能从"会用 RecyclerView"上升到"我知道事件分发为什么会被父类抢走"。

🚀 本专栏:50+ 篇,5 卷 + 序卷,从硬件指令到现代异步范式,
      让你在面试、架构、定位疑难杂症时,
      永远能说出别人说不出的"为什么"。
1
2
3
4
5
6
7
8
9
10
11
12
13

如果你想从"高级开发"上升到"资深 / 架构",这本专栏就是为你写的。


# 🌟 课程差异化|与市面其他专栏的本质区别

市面上 95% 的底层文章都是"Java 并发"、"C++ 内存"、"JS 事件循环"——单语言、讲 API、背八股。本专栏不一样:

维度 一般专栏 本专栏
语言视角 锁定单一语言(Java / Go / C++) 跨 5+ 语言对比:Java / Kotlin / C++ / Rust / Go / JS / Swift / Python
教学方式 API 列举 + 用法举例 从矛盾出发:每篇先讲"工程界遇到了什么痛",再讲设计
历史维度 直接讲"现在是这样" 时间轴还原:1970s → 1990s → 2010s → 现在,让你看见为什么是这样
结论方式 直接给答案 探索式叙事:先现象 → 再矛盾 → 再尝试方案 → 再权衡 → 再演进
认知深度 知其然 知其所以然——每个三级标题都是一次"为什么"的追问
真实案例 教材式举例 真实工作事故引入:从一次"按钮点不动"的事故讲到事件分发整个链路
配图密度 文字为主 每篇 3-10 张 mermaid + 时序图 + 状态机图

# 三大独家承诺

承诺 含义 落地方式
① 跨语言对比 至少对比 Java / C++ / JavaScript / Kotlin / Go 中 3 种以上实现 每篇都有"跨语言对比表"
② 只问矛盾 不背 API,只讲"这个设计解决了什么矛盾" 每篇开头必有"根本矛盾"段落
③ 看演进史 让你看见"为什么是这样" 而不是"它就是这样" 每篇都有时间轴

# 📖 课程说明|怎么写、怎么读、怎么落地

# 写作规范|每篇都遵守的"九段式"

这是专栏"系列感"的来源——每篇文章都按这个结构写:

📖 统一篇章结构
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
0️⃣  §00 真实事故引入
      用 1-2 个真实工作事故 / 终端问题引入,让读者立刻有"代入感"
      引出灵魂三问 + 五个递进追问 + 探索路径

1️⃣  §01 根本矛盾与历史
      这个技术诞生前,工程界遇到了什么具体的痛
      时间轴:1970 → 2000 → 现在

2️⃣  §02-§05 核心机制 + 跨语言/跨平台实现
      至少 3+ 种语言或平台的对比
      每个三级标题都是一次"为什么"的追问

3️⃣  §06 跨平台/跨语言对照
      Java / C++ / Go / Rust / JS / Swift 的横向对比

4️⃣  §07 经典陷阱与生产级反模式
      新手坑 + 老手坑(共 7 大陷阱)

5️⃣  §08 一句话总结 + 延伸阅读
      三层认知阶梯 + 七字真言
      链接到本专栏其他篇章,形成内链网络
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 贯穿全书的思维方法

flowchart LR
    A[现象<br/>遇到 Bug 或性能问题] --> B[矛盾<br/>这个技术解决什么]
    B --> C[设计<br/>核心思想是什么]
    C --> D[实现<br/>各语言为何选择不同]
    D --> E[演进<br/>未来还会怎么变]
    E -.复盘.-> A
1
2
3
4
5
6

理解矛盾 → 理解设计 → 理解实现 → 理解演进——这是一条贯穿 50+ 篇的思维闭环。


# 🗺 覆盖的内容|一张图看清全部

flowchart TB
    subgraph L0["🌍 序卷|方法论与导读"]
        S0[专栏导读<br/>为何要懂底层设计思想]
    end

    subgraph L1["🔢 第1卷|数据的本质 · 9篇"]
        D1[1.1 数据编码] --> D2[1.2 整型与位运算]
        D2 --> D3[1.3 浮点型]
        D3 --> D4[1.4 字符串]
        D4 --> D5[1.5 值与引用]
        D5 --> D6[1.6 泛型]
        D6 --> D7[1.7 集合容器]
        D7 --> D8[1.8 序列化]
        D8 --> D9[1.9 数据解析]
    end

    subgraph L2["🧬 第2卷|运行时模型 · 8篇"]
        R1[2.1 类加载] --> R2[2.2 对象创建]
        R2 --> R3[2.3 方法访问]
        R3 --> R4[2.4 函数栈帧]
        R4 --> R5[2.5 字节码与VM]
        R5 --> R6[2.6 JIT与运行时]
        R6 --> R7[2.7 反射元编程]
        R7 --> R8[2.8 异常机制]
    end

    subgraph L3["⚡ 第3卷|并发之道 · 18篇 · 全书最重"]
        C1[3.1 线程由来] --> C2[3.2 上下文切换]
        C2 --> C3[3.3 线程通信] --> C4[3.4 线程异常]
        C4 --> C5[3.5 并发案例] --> C6[3.6 并发Bug]
        C6 --> C7[3.7 并发设计] --> C8[3.8 安全策略]
        C8 --> C9[3.9 锁设计] --> C10[3.10 CAS]
        C10 --> C11[3.11 异步同步] --> C12[3.12 单线程模型]
        C12 --> C13[3.13 协程] --> C14[3.14 Actor/CSP]
        C14 --> C15[3.15-3.17 线程池三部曲]
        C15 --> C16[3.18 结构化并发]
    end

    subgraph L4["💾 第4卷|内存的真相 · 8篇"]
        M1[4.1 虚拟内存] --> M2[4.2 内存模型]
        M2 --> M3[4.3 堆栈] --> M4[4.4 缓存对齐]
        M4 --> M5[4.5 GC] --> M6[4.6 引用]
        M6 --> M7[4.7 内存泄漏诊断] --> M8[4.8 数据拷贝]
    end

    subgraph L5["🖼 第5卷|交互与系统 · 7篇"]
        U1[5.1 窗口] --> U2[5.2 视图渲染]
        U2 --> U3[5.3 GPU 管线] --> U4[5.4 手势事件]
        U4 --> U5[5.5 消息机制] --> U6[5.6 跨进程通信]
        U6 --> U7[5.7 数据加密]
    end

    L0 --> L1 --> L2 --> L3 --> L4 --> L5

    style L0 fill:#fff3cd
    style L3 fill:#ffe6cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

# 内容覆盖维度统计

维度 覆盖度
编程语言 Java / Kotlin / C++ / Rust / Go / JavaScript / Swift / Python(8 种)
操作系统 Linux / Windows / macOS / Android / iOS(5 大平台)
时间跨度 1968(鼠标) → 2007(iPhone)→ 2018(Kotlin协程)→ 2023(Java结构化并发)(半世纪+)
抽象层级 硬件指令(CAS/MESI)→ OS 调度 → 语言 VM → 框架范式(四层贯通)
并发模型 线程 / 协程 / Actor / CSP / 单线程事件循环 / 结构化并发(6 大范式)

# 📚 课程分卷与目录介绍|5 卷 + 序卷 · 50+ 篇

# 🌍 序卷|方法论与导读 · 📁 进入

不教知识,先教看世界的方法。决定后续 5 卷的吸收效率。

文档 核心问题
专栏的导读和绪论 为什么"看见设计"比"会用 API"更值钱
全专栏内容介绍 5 卷 50 篇全景式索引与学习路径

# 🔢 第 1 卷|数据的本质(万物起源) · 📁 进入 · 9 篇

计算机如何用有限的位表示无限的信息——一切设计的起点。

序号 文档 核心矛盾
1.1 数据编码设计原理 全人类文字如何在 0/1 上达成共识
1.2 整型与位运算原理 二进制补码的几何美学
1.3 浮点型数据设计灵魂 为何 0.1+0.2≠0.3
1.4 字符串设计的灵魂 为何字符串要不可变
1.5 值型变量和引用 值传递、引用传递的本质
1.6 泛型设计灵魂思想 类型擦除 vs 单态化
1.7 集合与容器设计原理 数组、链表、哈希、树的统一抽象
1.8 序列化数据的思想 JSON / Protobuf / XML 的取舍
1.9 数据解析设计思想 解析器为何能差出 100 倍

# 🧬 第 2 卷|运行时模型(从类到对象) · 📁 进入 · 8 篇

程序运行时究竟发生了什么?

序号 文档 核心矛盾
2.1 类的加载核心原理 双亲委派为何而生
2.2 对象创建流程原理 new 一个对象到底发生多少步
2.3 对象和函数访问原理 vtable / itable / 静态分派
2.4 函数调用栈与栈帧设计 栈帧的物理布局与调用约定
2.5 字节码与虚拟机执行原理 解释 vs 编译,VM 的执行引擎
2.6 JIT 与运行时优化 C2 / Graal 凭什么能"超过 C++"
2.7 反射与元编程核心设计 反射 / Emit / Proxy 的共同本质
2.8 异常机制设计原理 异常从硬件中断到语言层

# ⚡ 第 3 卷|并发之道(最硬核模块) · 📁 进入 · 18 篇

专栏分量最重的一卷。从硬件原子指令到结构化并发,把并发编程半个世纪的进化史完整走一遍。

# 🌱 起源篇

序号 文档 核心矛盾
3.1 线程前世今生探索 进程不够用?1:1 / N:1 / M:N 演进
3.2 并发上下文切换原理 进程 / 线程 / 协程的代价差异
3.3 线程通信设计思想 共享内存 vs 消息传递
3.4 线程异常设计原理 异常从硬件中断到语言层
3.5 多线程并发经典案例 售票问题揭示的竞态

# 🔥 矛盾篇

序号 文档 核心矛盾
3.6 并发 Bug 源头由来 可见性 / 原子性 / 有序性
3.7 并发编程设计思想 分工 / 同步 / 互斥三大命题
3.8 并发编程安全设计 不可变 / TLS / 读写分离 / 无锁
3.9 锁核心设计和思想 LOCK# 到锁升级的完整链路
3.10 理解 CAS 设计由来 从哲学到硬件,CAS 与 ABA

# 🚀 范式篇

序号 文档 核心矛盾
3.11 异步和同步的设计 同步 → 多线程 → 回调 → async/await
3.12 单线程模型的思想 单线程为何反而高并发
3.13 协程核心设计思想 挂起/恢复 + 有栈 vs 无栈
3.14 Actor 与 CSP 并发模型 Erlang Actor vs Go channel

# 🏊 池化篇

序号 文档 核心矛盾
3.15 线程池的设计思想 池化思想:生产者-消费者
3.16 线程池设计核心原理 ctl 变量、状态机、Worker 模型
3.17 线程池使用技巧 7 大参数调优实战
3.18 结构化并发设计思想 Kotlin / Swift / Java 21 / Trio

# 💾 第 4 卷|内存的真相 · 📁 进入 · 8 篇

从虚拟内存到垃圾回收——理解程序运行的物理基础。

序号 文档 核心矛盾
4.1 虚拟内存与地址空间 MMU / 页表 / TLB / COW —— 现代内存的根本骨架
4.2 内存模型技术设计 冯·诺依曼到现代 JMM 的演进
4.3 堆和栈内存的设计 栈帧、malloc、glibc chunk/bin
4.4 内存对齐与缓存局部性 Cache Line / Padding / 伪共享
4.5 内存回收机制设计 标记清除 → 分代 → ZGC
4.6 多种引用技术设计 强 / 软 / 弱 / 虚引用
4.7 内存泄漏与诊断原理 GC Roots / 支配树 / Heap Dump / Profiler
4.8 数据拷贝设计原理 浅 / 深 / Copy-on-Write

# 🖼 第 5 卷|交互与系统 · 📁 进入 · 7 篇

从硬件触点到屏幕像素——用户交互背后的事件驱动架构。

序号 文档 核心矛盾
5.1 窗口核心设计思想 矩形 + 事件 + 坐标系
5.2 视图加载渲染设计 measure / layout / draw 三阶段
5.3 图形渲染管线原理 GPU 流水线 / VSync / 合成器 / Skia
5.4 手势事件设计灵魂 触点流 → 状态机 → 手势语义
5.5 消息机制设计思想 Handler / Looper / MessageQueue
5.6 跨进程通信设计 进程隔离 vs 协作通信·管道/shm/Binder
5.7 数据加密和解密 对称 / 非对称 / 哈希

# 🛤 三条阅读路径

选一条适合你的路径,而不是从头啃到尾:

# 🟢 新手路径|建立整体观(10 篇)

专栏导读 → 1.1 数据编码 → 1.4 字符串 → 2.1 类加载
        → 3.1 线程由来 → 3.7 并发设计 → 3.12 单线程模型
        → 3.15 线程池 → 4.1 虚拟内存 → 5.5 消息机制
1
2
3

# 🟡 进阶路径|深入核心矛盾(12 篇)

1.6 泛型 → 2.3 方法分派 → 2.6 JIT → 3.9 锁设计
       → 3.10 CAS → 3.11 异步同步 → 3.13 协程 → 3.14 Actor/CSP
       → 3.18 结构化并发 → 4.5 GC → 4.6 引用类型 → 5.4 手势事件
1
2
3

# 🔴 面试冲刺|高频必考(10 篇)

1.5 值与引用 | 1.6 泛型 | 3.6 并发 Bug | 3.7 并发设计
3.8 并发安全 | 3.9 锁升级 | 3.10 CAS/ABA | 3.16 线程池原理
4.5 GC 演进 | 4.6 四种引用
1
2
3

# 🎁 你能学到什么|读完这个专栏的 10 项收益

读完 50+ 篇之后,你将拥有以下能力:

# 🧠 认知层(思维方式)

  1. 看见矛盾的能力:拿到一个新框架(不论是 Tokio、Akka、Vert.x),能在 5 分钟内说出它解决了什么矛盾、抛弃了什么 trade-off。
  2. 跨语言抽象的能力:学一门新语言时,不再被语法吓住——你知道"它的并发原语对应 Java 的什么、内存模型对应 C++ 的什么"。
  3. 看见演进的能力:能预判一项技术的下一步——为什么 GC 会朝着 ZGC / Shenandoah 进化?为什么协程取代了回调?

# 🛠 工程层(落地能力)

  1. 定位疑难杂症的能力:再遇到 OOM / Full GC / 死锁 / ANR,不再 Stack Overflow 撞运气,而是能从根因出发推导。
  2. 架构设计的能力:能从矛盾出发选型——什么场景该用 Actor、什么场景该用 CSP、什么场景该用结构化并发?
  3. 写出"不出事"代码的能力:你写的并发代码、内存敏感代码、事件驱动代码,会比同事少 90% 的隐患。

# 🎤 表达层(输出能力)

  1. 面试的能力:当面试官问"synchronized 锁升级",你能从硬件 LOCK# 讲到 mark word 再讲到偏向锁优化历史,把面试官讲服。
  2. 晋升答辩的能力:技术分享时,你能讲出"为什么这么设计",而不只是"我做了什么"——这是 P7→P8 的核心区别。
  3. 指导新人的能力:能用 1 分钟讲清楚一个底层概念,让新人快速建立心智模型。

# 🚀 长期层(不被淘汰的能力)

  1. 抗时间淘汰的能力:API、框架、语言会过时,但矛盾不会——这本专栏教你的是 50 年都不会失效的认知。

# 🧑‍💻 适合人群|这个专栏写给谁

# ✅ 强烈推荐

人群 适合理由
3-8 年的应用层开发者 你已经会用 API,正卡在"懂原理"这一关——本专栏就是为你写的
准备一线大厂面试的求职者 50+ 篇 8 成内容是大厂高频考点,但讲法比八股文深 10 倍
从 Java/Android 转 Go/Rust 的工程师 跨语言对比让你不用重新学一遍底层
希望从高级开发晋升资深 / 架构的人 "看见设计"是 P7→P8 的核心能力
大学高年级 / 研究生 学校教离散原理,本专栏教这些原理在工业界的真实样子
技术博客作者 / 讲师 大量真实事故案例 + 跨语言对比,是写作的金矿

# ⚠️ 谨慎选择

人群 谨慎理由
完全的编程新手(< 1 年) 推荐先掌握至少一门语言的基础再来读
只想要"代码片段,复制粘贴"的读者 本专栏强调"理解 > 速成",不适合短期速成场景
算法竞赛选手 本专栏不讲算法,讲的是工程设计

# 📮 学习节奏建议

🐢 慢读型:每天 30 分钟,每周 2 篇 → 6 个月读完
🚶 标准型:每天 1 小时,每周 3 篇 → 4 个月读完
🏃 突击型:每天 3 小时,每周 7 篇 → 7 周读完(不推荐,吸收率低)
1
2
3

强烈建议:每读完一篇,立刻回到自己最近的项目,找一段相关代码对照—— 这个动作能让你的吸收效率提升 5 倍。


# 🎯 相关资源

  • 💻 配套源码:每篇文章中的代码案例都是可运行的
  • 💬 答疑交流:欢迎 Issue / PR 提问
  • ⭐ 收藏方式:建议 Star 本仓库 + 收藏目录页,方便追更

这不是一本能让你"明天就升职加薪"的书,但它会让你 5 年后回头看时,庆幸自己当年读过。

写下这本书,是因为我自己工作十年里走过太多弯路——希望它能帮你少走一些。

上次更新: 2026/06/07, 10:26:12
弱网极端环境治理
专栏的导读和绪论

← 弱网极端环境治理 专栏的导读和绪论→

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