1. 程式人生 > >【雜文】關於Java的學習

【雜文】關於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》

架構:

《大型分散式網站架構設計與實踐》、《深入分散式快取:從原理到實踐》