软件学习经典书籍和相关技术推荐
这篇文章是第100篇博客,该文章将我看过的好书总结一下,对后来人也有一个好的指导。看书和网上搜索相比,看书更加系统,更加全面,效率也更高,另外建议不要看电子版,看书还是看印刷版的方便看。
C语言
入门好书:《C程序设计》谭浩强著,该书言简意该,通俗易懂,非常适合入门学习;
深入学习:《C专家编程》;
C++语言
语法学习:《C++ Primer Plus》,语法讲得很全面和系统;
深入研究:《C++对象模型》,这本书必看,看了这本书就懂得了C++的底层机制,才能深刻理解C++的难懂的“没有道理”的语法;
面向对象思想:《大话设计模式》程杰著,说实话,GoF版的《设计模式》实在难懂,这本《大话设计模式》写得通俗易懂,而且本身设计模式应该是面向对象思想,所以最主要的是将思想理会,所以我更推荐通俗易懂、风趣的《大话设计模式》;
算法
系统学习:《算法导论》;
实践强化:北大ACM练习,网址:http://poj.org/,实际编程很重要,才能将算法本身注意的关键点牢记在心;
其他
C++必备知识:STL、引用计数、Boost,STL在实际工作中尽量多用,引用计数在所有面向对象语言中可能都是必不可少的技术,它主要两个作用,一个是内存自动回收,一个是节省内存(包括有些对象不具备复制的意义),Boost是一个库,也是多用;
多线程:多线程首先明白为什么多线程不安全,是因为两个线程都使用了全局变量或者local static变量,要使线程安全一个是尽量不用全局变量和local static变量,如果不能回避,就要使用同步方法,多线程同步共四个方法(互斥锁、信号量、互斥锁+条件变量、原子操作)。
Android
Binder:虽然实际工作真的不需要非常明白binder如何实现的,但是作为一个中高级工程师必须知道binder的机制,在我的blog里有分析;
sp和wp:这就是前面说的引用计数,以及什么sp强引用的缺陷是循环引用时对象无法释放,这个时候至少一方使用弱引用;
JNI:JNI主要两点,一个是JNI的引用计数,和C++的引用计数不同,因为JNI的引用计数需要Java虚拟机的支持;另外一个是异常处理;