百度客户端部推荐读物
C++开发
1. 《C++ Primer》:全面学习 C++的必备书籍
2. 《Thinking in C++》:了解 C++背后的一些机制
3. 《深度探索 C++对象模型》:深入了解 C++,也是学习 COM 的必经之路
Windows 平台
入门
1. 《Windows 程序设计》:这本书主要讲的是 Windows API 的使用,是 Windows 编程入门
书籍。上册涉及到的知识基本上就够用了,时间不充裕的话阅读上册即可。
2. 《Win32 多线程程序设计》:Windows 下多线程编程必备
3. 《Windows 核心编程》:Window 平台基础知识:消息机制,内存管理,多线程,动态
链接库等
4. 《Windows 网络编程》:介绍 Windows 下各种网络
的开发和并发处理模型。
进阶
1. 《深入浅出 MFC》:Windows 下编程,MFC 虽然有些过时,但其机制还是有学习的价值。
重点学习书中提到的 MFC 6 大机制
2. 《COM 本质论》:COM 是 Windows 构建用户态的重要技术之一,Windows 开发必修课,
本书对 COM 的设计动机作了深入阐述
3. 《深入解析 ATL》:ATL 全名 Active Templete Library,是用 C++的模版封装了 COM,这本
书主要讲的是对源码分析
4. 《WTL White Paper》:WTL 源自微软,基于 ATL 的一套开源模版库,主要用于界面编程
和工具类的使用
5. 《代码大全》:这边书主要讲的是工程编码规范
高级
1. 《深入解析 Windows 操作系统》:Windows 大牛书籍,讲的主要是 Windows 操作系统
的内核原理
调试技术
1. 《软件调试》
2. 《Windows 高级调试》
3. 《windows 用户态程序高效排错》
Linux 平台
Linux 内核
1. 《Linux Kernel Development》/《Linux 内核设计与实现》:Robert Love 的著作,不厚的一
本书,深入浅出地将 Linux 内核娓娓道来
Linux 使用和 Shell 编程
1. 《sed & awk》/《sed 与 awk》:sed 与 awk 都是 Linux 下常用的日志分析利器
Linux 编程
1. 《Beginning Linux Programming》/《Linux 程序设计》:老牌的 Linux 编程入门书
2. 《Advanced Programming in the Unix Environment》/《Unix 环境高级编程》:对 Unix 编程
环境做了细致的
,涵盖了进程间通讯、网络通讯、文件系统等各方面的知识
网络编程
1. 《TCP/IP Illustrated, Volume I》/《TCP/IP 详解,卷一》:对理解 TCP/IP 协议的设计理念和
协议细节有显著的帮助。
2. 《Unix Network Programming》/《Unix 网络编程》,卷一、卷二:网络编程方面难以逾
越的著作,事无巨细、深入浅出,强烈推荐
分布式系统
本节所有论文可从此处下载:http://liancheng.info/bib/
Google 分布式系统架构
1. Chang, Fay, Jeffrey Dean, Sanjay Ghemawat, and Wc Hsieh. “Bigtable: A distributed storage
system for structured data.” on Computer Systems 26, no. 2 (2008).
http://portal.acm.org/citation.cfm?id=1365815.1365816.
Bigtable 分布式表格存储系统
2. Dean, Jeffrey, and Sanjay Ghemawat. “MapReduce: Simplified data processing on large
clusters.” Communications of the ACM (2008): 1-13.
http://portal.acm.org/citation.cfm?id=1327452.1327492&coll=GUIDE&dl=&i
dx=J79&part=magazine&WantType=Magazines&title=Communications%20of
%20the%20ACM.
Google MapReduce 分布式处理框架
3. Ghemawat, Sanjay, Howard Gobioff, and Shun-Tak Leung. “The Google file system.” ACM
SIGOPS Operating Systems Review 37, no. 5 (December 2003): 29.
http://portal.acm.org/citation.cfm?doid=1165389.945450.
Google 分布式文件系统(GFS)
4. Burrows, Mike. “The Chubby lock service for loosely-coupled distributed systems.” of the
7th symposium on Operating systems design (2006).
http://portal.acm.org/citation.cfm?id=1298455.1298487.
Google 的分布式锁服务,也是已知的最著名的一份 Paxos 算法实现
5. McKusick, Mk, and S Quinlan. “Gfs: Evolution on fast-forward.” Queue (2009): 1-11.
http://portal.acm.org/citation.cfm?id=1594204.1594206.
对 GFS 现状与改进的讨论,对 GFS 的有缺点做了深入分析
最终一致性与 CAP 原理
1. DeCandia, G, Deniz Hastorun, and Madan Jampani. “Dynamo: amazon's highly
available key-value store.” ACM SIGOPS (2007): 205-220.
http://portal.acm.org/citation.cfm?id=1294261.1294281.
Amazon 的分布式解决
,与 Google 的选择迥异,采用了牺牲数据一致性来保全高可
靠性的路线
2. Werner Vogels. “Eventually Consistency – Revisited. ”
http://www.allthingsdistributed.com/2008/12/eventually_consistent.html
Amazon CTO 对最终一致性的阐述
3. “CAP Theorem.”
http://devblog.streamy.com/2009/08/24/cap-theorem/
本篇简要介绍和讨论和 CAP 原理,即在一个分布式系统必须在一致性(Consistency)、
可用性(Availability)、网络分割容错性(Partition)三个属性中三选二
分布式基本原理与分布式一致性
1. Belsnes, D. “Single-Message Communication.” IEEE Transactions on Communications 24, no.
2 (February 1976): 190-194.
http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1093283.
论述了不存在可以同时避免消息丢失和消息重复的消息传递协议
2. Fischer, Michael J., Nancy A. Lynch, and Michael S. Paterson. “Impossibility of distributed
consensus with one faulty process.” Journal of the ACM 32, no. 2 (April 1985): 374-382.
http://portal.acm.org/citation.cfm?doid=3149.214121.
著名的 FLP 不可能性原理,论述了在完全异步(不存在时钟)的系统中不存在容错的分
布式一致性算法
3. Lamport, Leslie, Robert Shostak, and Marshall Pease. “The Byzantine Generals Problem.”
ACM Transactions on Programming Languages and Systems 4, no. 3 (July 1982): 382-401.
http://portal.acm.org/citation.cfm?doid=357172.357176.
Leslie Lamport 在本篇提出并讨论了著名的拜占庭容错问题,即在消息同时存在丢失、
重复、被恶意篡改的情况下,如何保证分布式系统的数据一致性
4. Lamport, Leslie. “The part-time parliament.” ACM Transactions on Computer Systems (TOCS)
2, no. May 1998 (1998).
http://portal.acm.org/citation.cfm?id=279229.
Leslie Lamport 在本篇以一种恶趣味的方式提出了 Paxos 算法,建议和 5、6、7 配套阅读。
关于该篇论文的一些八卦,可以参考这里
5. Lamport, Leslie. “Paxos made simple.” ACM SIGACT News (2001).
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.69.3093&rep=rep1&t
ype=pdf.
对 4 中 Paxos 算法的简化论述
6. Chandra, Td, R Griesemer, and J Redstone. “Paxos made live: an engineering perspective.”
Proceedings of the twenty- (2007): 398-407.
http://portal.acm.org/citation.cfm?id=1281100.1281103.
以 Google Chubby 为工程背景,对 Paxos 工程实现的一些讨论
7. Prisco, Roberto De, B Lampson, and N Lynch. “Revisiting the Paxos algorithm.” Distributed
Algorithms (1997).
http://www.springerlink.com/index/m2241w8314371726.pdf.
对 Paxos 算法中各组件的形式化分解与讨论
8. Hunt, Patrick, Mahadev Konar, and Fp Junqueira. “ZooKeeper: Wait-free coordination for
Internet-scale systems.” Proceedings of the 2010 (2010).
http://portal.acm.org/citation.cfm?id=1855851.
ZooKeeper 是 Yahoo 的 Paxos 变种算法的实现,可以认为是 Yahoo 版的 Google Chubby
几篇优秀的讨论分布式话题的 Blog
1. Barbara Liskov's Turing Award, and Byzantine Fault Tolerance,
http://the-paper-trail.org/blog/?p=211
讨论了 2009 年图灵奖主题:实用拜占庭容错(Practical Byzantine Fault Tolerance)
2. Consensus Protocols: Paxos,
http://the-paper-trail.org/blog/?p=173
对 Paxos 算法的介绍
3. Consensus with lossy links: Establishing a TCP connection,
http://the-paper-trail.org/blog/?p=110
讨论了 TCP 连接建立过程中的数据一致性问题,论证了 TCP 也并非是完美的可靠数据传
输协议
4. Consensus Protocols: Three-phase Commit,
http://the-paper-trail.org/blog/?p=103
讨论了三阶段提交算法的优缺点
5. Consensus Protocols: Two-Phase Commit,
http://the-paper-trail.org/blog/?p=90
讨论了两阶段提交算法的优缺点
最后,推荐一下 Leslie Lamport 作品集:
http://research.microsoft.com/en-us/um/people/lamport/pubs/pubs.html