语言学习
- C程序设计语言( Dennis M. Ritchie 和Brian W. Kernighan)
- C语言程序设计现代方法
- C陷阱与缺陷
- C++ Primer
(这本书是久负盛名的 C++ 经典教程。书是有点厚,前面 1/3 讲 C 语言,后面讲 C++。C++ 的知识点实在是太多了,而且又有点晦涩。但是你主要就看几个点,一个是面向对象的多态,一个是模板和重载操作符,以及一些 STL 的东西。看看 C++ 是怎么玩泛型和函数式编程的) - Effective C++
- More Effective C++
- 深度探索C++对象模型
- C++ FAQ (Bjarne Stroustrup )中文版
- C++沉思录
- Exceptional C++
- More Exceptional C++
- 泛型编程与STL
系统知识学习
-
深入理解计算机系统
(本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统。从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。通过掌握程序是如何映射到系统上,以及程序是如何执行的,你能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。) -
Unix高级环境编程
-
Linux/Unix系统编程手册
-
Linux系统编程
-
Unix网络编程 第1卷套接口API、第2卷 进程间通信
-
TCP/IP详解 卷I协议
(三本书可能都不容易读,一方面是比较厚,另一方面是知识的密度太大了,所以,读起来有点枯燥和乏味。但是,这没办法,你得忍住。)
如果你觉得上面这几本经典书比较难啃,你可以试试下面这些通俗易懂的(当然,如果读得懂上面那三本的,下面的这些也就不需要读了
- Linux C编程一站式学习
- TCP/IP网络编程
- 图解 TCP/IP
- The TCP/IP Guide
- Wireshark数据包分析实战
- C10K Problem https://www.oschina.net/translate/c10k
(C10K 问题本质上是操作系统处理大并发请求的问题。对于 Web 时代的操作系统而言,对于客户端过来的大量的并发请求,需要创建相应的服务进程或线程。这些进程或线程多了,导致数据拷贝频繁(缓存 I/O、内核将数据拷贝到用户进程空间、阻塞), 进程 / 线程上下文切换消耗大,从而导致资源被耗尽而崩溃。这就是 C10K 问题的本质。了解这个问题,并了解操作系统是如何通过多路复用的技术来解决这个问题的,有助于你了解各种 I/O 和异步模型,这对于你未来的编程和架构能力是相当重要的。)