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

    • 数据的本质

      • README
        • 🎯 这一卷要回答什么
        • 📖 篇章总览(9 篇)
        • 🔗 知识脉络
        • 🌉 与其他卷的承接
        • 💡 学完你能回答
      • 1.数据编码设计原理
      • 2.整型与位运算原理
      • 3.浮点数据设计灵魂
      • 4.字符串设计的灵魂
      • 5.值型变量和引用设计
      • 6.泛型设计灵魂思想
      • 7.集合与容器设计原理
      • 8.序列化数据的思想
      • 9.数据解析设计思想
    • 运行时模型

    • 并发的设计

    • 内存的真相

    • 交互和系统

  • 稳定性与可靠性

  • 工程化与运维

  • 方案设计思想

  • 专栏
  • 程序编程原理
  • 数据的本质
杨充
2026-05-14
目录

README

# 第 1 卷|数据的本质

万物起源——计算机如何用有限的位表示无限的信息?这是所有上层设计的源头。


# 🎯 这一卷要回答什么

业务里你天天用 int、String、List、JSON、泛型——但能回答下面这些"小问题"吗?

  • 为什么 (start + end) / 2 这种"看起来人畜无害"的写法会引发线上事故?补码到底解决了什么?
  • 为什么 "abc" == "abc" 在 Java 里是 true,在 JS 里也是 true,但机制完全不同?
  • 为什么 0.1 + 0.2 ≠ 0.3 是全世界 CPU 共同的"病",而不是某门语言的 bug?
  • 为什么 ArrayList 用 contains 在百万级数据下会把服务打挂?容器选择背后是哪一组权衡?
  • 为什么 Java 的泛型是"假泛型",C++ 是"真泛型",Go 又是另一种实现?
  • 同样的对象,序列化成 JSON 是 200 字节,序列化成 Protobuf 是 30 字节——差的 170 字节去哪了?
  • 同一个 JSON 解析器,为什么 simdjson 比 Jackson 快 100 倍?

这一卷不是讲 API,是讲这些数据结构当年是为了什么矛盾被发明的。


# 📖 篇章总览(9 篇)

序号 文档 核心矛盾
1.1 数据编码设计原理 (opens new window) 全人类文字如何在 0/1 上达成共识?ASCII → Unicode → UTF-8
1.2 整型与位运算原理 (opens new window) 为什么是补码?整数溢出与位运算背后的硬件约束
1.3 浮点型数据设计灵魂 (opens new window) IEEE 754 是工程妥协而非数学真理
1.4 字符串设计的灵魂 为何字符串要不可变?常量池、StringBuilder 的真正动机
1.5 值型变量和引用 值传递、引用传递、共享可变状态的本源
1.6 泛型设计灵魂思想 类型擦除 vs 单态化——同一个目标的两条工程路线
1.7 集合与容器设计原理 数组 / 链表 / 哈希 / 树——一组关于时间空间的根本权衡
1.8 序列化数据的思想 JSON / XML / Protobuf / Thrift 的体积与可读性 trade-off
1.9 数据解析设计思想 词法 / 语法 / SIMD —— 解析器为何能差出 100 倍

# 🔗 知识脉络

flowchart LR
    A[1.1 编码<br/>0/1 → 字符] --> B[1.2 整型<br/>0/1 → 整数]
    B --> C[1.3 浮点<br/>0/1 → 实数]
    A --> D[1.4 字符串<br/>字符 → 信息]
    C --> E[1.5 值与引用<br/>变量底层模型]
    D --> E
    E --> F[1.6 泛型<br/>类型抽象]
    F --> G[1.7 容器<br/>数据组织]
    G --> H[1.8 序列化<br/>对象 → 字节流]
    H --> I[1.9 解析<br/>字节流 → 对象]
    I -.闭环.-> A
1
2
3
4
5
6
7
8
9
10
11

数据从最底层的 0/1 编码出发,一路抽象到泛型与容器,再以序列化"压扁"回字节流,最后由解析器"还原"——这是一条完整的数据生命周期回路。


# 🌉 与其他卷的承接

  • 承接序卷:序卷讲"为什么学",本卷给出第一个具体的"什么"——数据。
  • 通往第 2 卷:第 2 卷讲"对象怎么活在内存里",必须先理解本卷的"数据怎么被表示"。
  • 回响第 4 卷:序列化 / 拷贝 / 容器内存布局在第 4 卷会被再次提及,但视角从"数据格式"转到"内存与缓存"。

# 💡 学完你能回答

  • 一个 emoji 占几个字节?为什么 MySQL utf8 不能存 emoji?
  • 为什么 int 加法会"绕回",编译器为何敢于据此做激进优化?
  • String s = "a" + "b" 在编译期会发生什么?
  • HashMap 的负载因子为何是 0.75?rehash 的代价从何而来?
  • Java 泛型的擦除带来了哪些"看似不合理"的限制?
  • 为什么大公司内部 RPC 大多用 Protobuf 而不是 JSON?
  • 100MB 的 JSON 在浏览器里为什么会卡住主线程?怎么破?
上次更新: 2026/06/07, 10:26:12
全专栏地图与索引
1.数据编码设计原理

← 全专栏地图与索引 1.数据编码设计原理→

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