這篇文章是第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虛擬機器的支援;另外一個是異常處理;