第0章 背景知识 0.1 基础知识 0.2 开发环境第1章 从双向链表学习设计 1.1 走近专业程序员 1.2 谁动了你的隐私 1.3 Write once, run anywhere(WORA) 1.4 拥抱变化 1.5 Don't Repeat Yourself(DRY) 1.6 你的数据放在哪里第2章 写得又快又好的秘诀 2.1 好与快的关系 2.2 代码阅读法 2.3 避免常见错误 2.4 自动测试 2.5 Save your work第3章 从动态数组学习设计 3.1 动态数组与双向链表 3.2 排序 3.3 有序数组的两个应用第4章 并发与同步 4.1 并发 4.2 同步 4.3 嵌套锁与装饰模式 4.4 读写锁 4.5 无锁数据结构第5章 组合的威力 5.1 队列 5.2 栈 5.3 散列表第6章 算法与容器 6.1 容器 6.2 迭代器 6.3 动态绑定第7章 工程管理 7.1 Hello World 7.2 函数库 7.3 应用程序第8章 内存管理 8.1 共享内存 8.2 线程局部存储(TLS) 8.3 内存管理器 8.4 惯用手法 8.5 调试手段及原理第9章 从计算机的角度思考问题 9.1 变参函数的实现原理 9.2 谁在call我——backtrace的实现原理 9.3 Hello World不能不说的十大秘密第10章 文本处理 10.1 状态机 10.2 Builder模式 10.3 管道过滤器模式第11章 分离用户界面与内部实现 11.1 分层设计 11.2 MVC架构 11.3 外壳模式第12章 撰写设计文档附录 C语言中接口定义的不同形式