GitHub 8.8k Star 的Java工程師成神之路 ,不來了解一下嗎?git
GitHub 8.8k Star 的Java工程師成神之路 ,真的不來了解一下嗎?程序員
GitHub 8.8k Star 的Java工程師成神之路 ,真的肯定不來了解一下嗎?github
若是讓我統計下,粉絲問我作多的問題是什麼,這個問題確定能夠排前5,問出這個問題的朋友們遍及各個年齡段。web
實話說,這個問題一樣也困擾過我,大概就是我剛畢業的第一年。面試
那一年,剛剛離開校園,來到阿里,那時候就感受本身好像什麼都不會,好像不少東西都要學,不知道哪一個是重點,不知道該如何下手。數據庫
那段時間我也像個無頭蒼蠅同樣嘗試過不少辦法。編程
剛開始瘋狂買書,《Java編程思想》、《Effective Java》、《深刻理解Java虛擬機》等等。設計模式
而後想着本身擼一個項目,因而到github上找了不少開源項目,想着能夠本身寫一遍。剛開始想寫個JUnit、而後想着寫個SSH的項目,接着考慮本身寫個Dubbo框架。緩存
甚至考慮過去報個班,不瞞你們說,我一個阿里的程序員,剛畢業的時候居然諮詢過達內。tomcat
總之吧,作過不少嘗試。如今我知道了,這就是焦慮。
首先,若是你有這種心態,那麼徹底不要慌。這很正常。
並且,我認爲這何嘗不是一件好事兒!
我當時之因此像個無頭蒼蠅同樣,主要是由於我想讓本身變的恰好。因此,我相信,那些問過我相似問題的他們,也同樣。
有焦慮,說明本身有上進心,有上進心,是一我的能夠變得更好的一個最基礎要素。
說實話,這篇文章的標題很像是軟文,會不會有人由於怕是軟文廣告就錯過了,我猶豫了好久要不要換一個。
可是,我想了想,若是這一點努力都不肯意付出的話,就算我當着他的面把這篇文章讀給他估計也無濟於事。
有不少人問我,到底什麼是知識體系。
要我說,知識體系這個詞根本就沒有人能說的清楚它究竟是什麼。
由於他真的是可大可小。
你能夠說加減乘除是知識體系,也能夠說數學學科是知識體系,還能夠認爲整個基礎科學領域纔是一個知識體系。
因此,沒有必要給本身界定一個明確的體系框架。
不少人說,知識太多了,我不知道該學什麼。其實,這麼問的人,潛意識裏是但願本身能夠獲得一份完整的知識體系大圖,能夠獲得一個完美的知識學習路徑。
可是,我不得不潑一盆冷水。就沒有所謂的完整的知識體系大圖,更沒有完美的學習路徑。
不少人看多我總結的《Java工程師成神之路》,可是,這並不能算是完整的Java知識體系大圖。
覺得,這最多算是個人知識體系的一個簡單總結,可是,個人這份知識體系必然有侷限性,侷限性就是我對Java知識的認知和了解程度。
再說完美的知識學習路徑是否存在,我以爲這是不可能存在的。
由於技術學習,不像咱們在學校的時候學習算數,學算數能夠先學加減、再學乘除,而後再學方程等等的。
可是,技術是服務於應用的,學習技術的原動力也確定是由於我要用,因此我纔要學。
不論是工做中要用到,仍是面試的時候要用到,出發點都是我要用。
可是,每一個人要用的知識怎麼可能都同樣呢?因此,也不存在完美的學習路徑。
沒有完整的知識體系,也沒有完美的學習路徑,怎麼辦?
適合本身的纔是最好的!!!這句話有點像是正確的廢話。可是,這是我走過焦慮期以後惟一能傳達給你的!
我以爲,學習是一件很簡單的事兒,簡單到你打開這篇文章的時候就已經在作了,只是你本身沒意識到。
說到技術學習,該怎麼作?
更簡單。就像步步高點讀機,哪裏不會寫哪裏。
那怎麼知道本身哪裏不會呢?
這個更簡單了,只要你開始學,那就知道本身哪裏不會了。
那麼,怎麼開始學呢?
有幾個方法,簡單可實踐:
一、隨便找一本書,好比《深刻理解Java虛擬機》,翻開目錄,總能找到一個本身不會的知識點,而後從這個知識點開始看。
二、工做中遇到的一個問題,或者須要用到某個技術,從把他弄清楚開始。
三、經過我總結的《Java工程師成神之路》,翻開這篇文章,找到本身不會的知識點,而後開始看。
我博客中,有不少文章,其實我從寫文章的第一天起,一直到如今,都在不斷的完善我本身的知識體系。用到的無外乎就是以上這三個方法:
從第一篇文章是我記錄了我畢業時候的面試準備和麪試題,而後學習工做中用到的webx框架。後來我維護咱們事業部的zookeeper集羣,而後本身學習了不少zk以及分佈式相關的知識。緊接着一次排查線上問題,瞭解到jdk提供了不少命令,因而開始學。再後來Java 8發佈,我學了一些Optional 、Stream等知識。後來買了一本《高性能MYSQL》,因而寫了不少和數據庫有關的文章。接着是工做中用到了模板方法模式,感受設計模式頗有用,因而開始學。後來看了《Java併發編程實戰》,又寫了不少和併發有關的知識。接着我就總結了《Java工程師成神之路》,而後就是按照這個又寫了不少系列文章.....前段時間,阿里巴巴推出《Java開發手冊》,我又寫了不少篇解讀《手冊》的文章....
還有不少文章,我都忘了當初爲何寫了。可是重要的不是從哪來,也不是去哪裏,而是在路上!!!
不少人老是想着想要找到一份完整的知識系統或者完美的學習路徑纔開始。可是,如今我告訴你了,並無。
因此,按照我說的,或者不按照我說的,找一個點,先進去,先開始學。
就像我以前總結過一篇文章,經過StringBuffer和StringBuilder開始,你都能一直學到併發編程、學到數據鎖,學到分佈式。
接着,說一下學習方法。
學習過程當中,必然會遇到更多本身不會的知識點,這時候怎麼辦?
兩種辦法,1是先無論他,繞過去,回過頭再看。2是先停下來把這個關聯知識點搞清楚,再繼續。
說到底這就是圖論中的深刻優先搜索和廣度優先搜索呀,我通常採用的是深度優先,遇到一個搞清楚一個。
個人博客寫過幾篇和分佈式有關的文章。若是你仔細看。可能會發現個人學習思路。
1.什麼是分佈式?發現相對於集中式來講的,那什麼又是集中式。 2.分佈式好像和集羣很像。那什麼是集羣? 3.分佈式有啥優勢,有啥缺點? 4.好像分佈式很難保證數據一致性,那什麼是數據一致性。什麼是CAP,什麼是BASE,CAP和ACID好像挺像? 5.數據一直性問題如何產生?如何解決? 6.什麼是2pc,什麼是3PC,有了2PC爲啥要3PC 7.爲啥不多有人用2PC和3PC 8.什麼是最終一致性。 9.什麼是柔性事務,那什麼是又是事務呢? 10.經過事務,又能夠學習Java本地事務,全局事務,數據庫事務。數據庫事務隔離級別怎麼回事?髒讀,不可重複讀這些都是啥?Spring事務咋回事? 11.柔性事務,什麼是TCC,什麼是消息最終一致性。那又如何實現的? 12.爲啥有這麼多方案,分佈式事務問題還沒法解決 13.TCC好像和2PC很像?有啥區別 14.各大公司是如何解決分佈式事務的 15.支付寶的XTS到底怎麼實現的? 16.有了事務了。那性能怎麼保證? 17.緩存咋回事。緩存擊穿咋辦,熱點問題咋解決 18.…………可用性相關?安全性相關?好像負載均衡我還不懂,到底咋回事?負載均衡和Web服務器有關?那tomcat咋實現?jboss和他有啥區別。Nginx呢?臥槽,反向代理是啥?啥是代理?代理模式?啥是設計模式?我之前讀過設計模式之禪,可是有些地方以前沒懂得,如今好像忽然懂了。jboss modules是啥?啥特麼又是模塊化?osgi?Java9跟模塊掛啥關係?Java10呢?
其實,不論是深度優先仍是光度優先,總會有把圖上的各個點串聯成一張圖的一天。
這不就是所謂的知識體系麼?
藉着這個問題,多說幾句雞湯吧。咱們大多數人的努力程度,根本還沒到和別人拼天賦的程度。
我一直以爲,天賦是決定一我的的下限,而努力纔是決定一我的的上限。
最可怕的就是咱們並無盡人事,卻埋怨天命。有的時候,從哪開始並不重要,重要的是你要開始啊!!!
我認爲,知識這東西,異曲同工。你先看哪本書,後看哪本書,差異沒那麼大,最終那幾本有用的書以前的關係仍是會被你發現。那個時候,知識體系就有個大概的框架了。而後查缺補漏唄。
慢慢的,知識體系不知不覺就創建起來了。別想那麼遠。找一個點,先進去。
相信我,堅持下去,1年後,你會感謝我,2年後,你會感謝你本身!
另外,這篇文章中沒有講關於如何規劃時間,如何更好的學習的事情,這個不是最重要的,你們感興趣的話我後面的文章再分享吧。