引言
最近和一些阿裡的技術專家聊了很多,關于技術發展、關于終身學習、關于職業發展。正好最近經常有同學問到底應該怎麼進行Java學習或者技術學習,本文結合自己的了解和大家比較關心的幾個問題進行了總結和闡述,希望在大家的學習過程中能起到一點促進作用。
為什麼學?
在幹任何事情之前,我們都要想清楚做這件事情的目的是什麼,這樣我們才能做到以終為始。就拿學
Java
來說,有的人是為了做個小作業交差,有的人是為了畢業後好找工作,有的人是為了随大流,别人學什麼我也學什麼。不管什麼原因,隻有搞清楚了最初的學習目的,才能決定我們到底要花費多少精力在學習
Java
上面。如果你學習的目的隻是為了交個課程作業,那麼花個幾個星期,網上下載下傳個小項目,跑跑改改小功能,交差就完事了。但是如果你是項通過學習Java找到個好工作,那麼就需要進行系統的學習和訓練。這和交個大作業所要投入到的精力和時間是不可同日而語的。
Java
學習或者說技術學習是一個持久的過程,一旦你選擇了走技術這條路線,那将是一個終身學習的過程,想好自己做好準備了嗎?當然也有很多人在技術做了幾年後發現自己并不是很适合或者不是很喜歡,于是轉做了産品經理或者項目經理或者測試的都有,也有人發現自己真的喜歡一直做下去。

怎麼開始學?
現在我們已經搞清楚為什麼學習
Java
了,有了明确的目标之後,我們就要撸起袖子加油幹了。但是萬事開頭難,很多人在面對現在網上海量的學習資料不知道該如何下手學習
Java
。學程式設計語言和我們現實中的學國文或者學英文的過程其實是大同小異的,首先我們得搞清楚它的本質是什麼。語言的本質是什麼?語言的本質就是人與人交流的工具。那麼計算機程式設計語言的本質是什麼?計算機的本質語言就是人與計算機的交流工具,是以變成語言實際就是工具,是我們教計算機做事情的工具。是以,無論是
Java
、
Go
、
C++
或者其他什麼變成語言,他們都隻是工具而已。
既然程式設計語言是工具,那麼我們學習語言當然就離不開了解工具以及使用工具了。了解程式設計語言就是要對語言涉及的文法、資料結構等進行學習,因為它是程式的組織體。學習完之後,我們就要不斷的練習,不斷的編碼實踐,歐威實踐出真知就是這個道理。有時候文章中或者書本中一段你看起來很簡單的代碼,雖然你覺得你看會了,但是實際上如果讓你自己寫出來或者把程式的運作結果跑出來可能是另外一回事。是以我們需要自己動手實踐,而且是不斷的進行實踐。
我一直建議在學習
Java
代碼之前,可以先學習怎麼寫
C
或者
C++
代碼,為什麼這麼說呢。
Java
是進階語言,屏蔽了很多底層的細節,但是
C
或者
C++
相對來說更加貼近底層。而貼近底層的代碼更加有利于我們了解計算機軟硬體協調工作的原理,對我們建構計算機的知識體系有很大的幫助。學有餘力的同學甚至可以學習學習彙編語言,那麼對于計算機到底是怎麼執行程式邏輯,
CPU
如何進行程式運算、
CPU
中的寄存器資料如何移來移去,都會有更加深刻的了解。
到底學什麼?
那麼多技術知識,我們到底要學習什麼呢?既然選擇Java為主要的技術路線,那麼我們肯定首先需要學習Java相關的程式設計語言文法,Java程式是跑在計算機伺服器上的,那麼我們肯定需要熟悉計算機的體系結構,為了提升開發效率,一些重複的開發動作架構都幫我們做掉了,是以我們需要學習開發架構,為了提升我們的程式設計水準,我們需要通過設計模式子產品化我們的代碼,提升代碼的擴充性。為了實作系統的高性能以及解耦,我們需要使用各種中間件。生産上會遇到各種問題,是以我們得培養問題排查能力。諸如此類,總之這些都是和我們實際工作息息相關,這些都在促使我們成為一個合格的Java工程師。
強烈的好奇心
為什麼說學技術的同學需要強烈的好奇心呢?因為好奇心是驅動你往深處去挖掘技術原理的原動力。我們在進行技術學習的時候一般都是在網上看資料或者看視訊進行學習,但是網上的某一篇文檔以及某一個視訊不一定能把一個技術知識完全講清楚,或者沒有讓你完全了解,那麼這個時候就需要我們保持着技術好奇心,需要不斷的去提問題,并帶着問題去尋找答案。
就拿之前的文章中提到的
Redis
可以扛數十萬的高并發用戶端連接配接,一般文章中會提到
Redis
使用了多路複用IO模型。我在進行學習的時候,就有很多疑問,什麼叫多路,誰被複用了?後來學習的時候知道了多路指的是多個多個用戶端連接配接,複用指的是
Redis
通過單一的主線程去處理多個用戶端連接配接。那麼問題又來了單個主線程的
Redis
是怎麼處理多個用戶端的連接配接的呢?輪訓處理嗎,還是其他什麼方式?
Redis
是運作在伺服器中的,它拿處理這麼多用戶端連接配接,必定需要借助于
Linux
伺服器,那麼它是怎麼和伺服器進行互動的呢?看吧,别人文章中的一句多路複用,可以衍生出這麼多的技術細節需要搞清楚,如果沒有技術好奇心,我們可能隻是學到了多路複用這四個字。但是如果有這顆技術好奇心,深挖技術細節,那麼我們學到的将會更多。
寫在最後
絮絮叨叨說了很多,希望熱愛技術的大家都能通過自己的努力改寫人生,技術學習是一個長期堅持的過程,不可能一蹴而就,積跬步而緻千裡。最後附上整理的Java工程師從0到1的學習積累過程,希望對大家進行技術學習有幫助。
大家好,我是慕楓,感謝各位小夥伴點贊、收藏和評論,文章持續更新,我們下期再見!
微信搜尋:慕楓技術筆記,優質文章持續更新,我們有學習打卡的群可以拉你進,一起努力沖擊大廠,另外有很多學習以及面試的材料提供給大家。
真正的大師永遠懷着一顆學徒的心
————————————————