【雜文】關於Java的學習
基礎:
不要知其然而不知其所以然,我認為應該能夠做到將自己“掌握”的東西,準確地表達出來。愛因斯坦曾經說過:“如果你不能把它簡單地解釋出來,那說明你還沒有很好地理解它”。從瞭解 - 掌握 - 精通,這是我們隊失誤掌握的一個循序漸進的過程。我很少在簡歷上寫我精通某個技術,因為我知道我做的還不夠,我需要更加深入的去探究它。
學習技巧:
1、動手實踐
紙上談兵誰都會,真正讓你去實現某個功能,你就會遇到很多很多問題,通過解決問題的方式,你對它的理解才會有一定的深度;
2、交流溝通
一般將自己的理解整理成文字輸出、交流是個非常好的提高方式。
閱讀原始碼:
為什麼?
1、理解高質量的程式碼,能夠提高我們自己的分析、設計等能力;
2、快速定位問題往往需要黑盒結合白盒的能力,對內部一無所知,可能就沒有思路;
3、通用平臺、開源框架,不見得能夠滿足業務需求,只有深入原始碼層面進行定製或者自研,才能實現。
怎麼做?
1、多看;
2、分析別人的架構、實現,分析其歷史上掉過的坑。
什麼程度?
1、帶著問題和明確目的去閱讀,比如以某個BUG的角度,結合實踐去驗證;
2、一定要有輸出,記錄下來,整理心得,交流、驗證、提高。
面試:
1、技術素養好,能夠進行深度思考,而不是跳脫地誇誇其談;
2、職業精神,是否表現出認真對待每一個任務;
3、是否hands-on,是否主動。
書單:
雖然書是一個好的系統化知識來源,但更多提高還是來源於實踐、閱讀原始碼、技術交流等,畢竟書籍也很難完全更上技術和架構的變革。
Java基礎:
Bruce Eckel《Java程式設計思想》、《Java核心技術》、《Effective Java》、《Head First 設計模式》
併發、JVM:
Brian Goetz《Java併發程式設計實戰》、周志明《深入理解Java虛擬機器》
效能優化:
Charlie Hunt、Binu John《Java效能優化權威指南》
開源軟體、網際網路架構:
《Spring實戰》、《Netty實戰》、《Cloud Native Java》
架構:
《大型分散式網站架構設計與實踐》、《深入分散式快取:從原理到實踐》