工作了挺久,發現有個挺有意思的現象,從程式設計師、高階程式設計師,到現在掛著架構師、專家之類的頭銜,伴隨著技術和能力的提高,想不明白的事情反而越來越多了。這些疑問有些來自於跟小夥伴交流,有些是我的自問自答,有些到現在也想不清楚,這篇文章就來寫一寫這些問題。
如何更高效的學習?
很多新人程式設計師一開始在學習上找不到方向,但我想在渡過了一段時間的新手期之後這類問題大多都會變得不再那麼明顯,工作的方向也會逐漸變得清晰起來。
但是沒過多久,能瞭解到的資料就開始超過每天學習的能力,像是買了沒看的書、收藏沒讀的貼、mark了之後再也沒有關注過的文章越積越多,更別提每天面對各種技術分享或者微博裡的新鮮玩意了。
大多數人每天能留給自己學習的時間有限,這個階段如何提升學習效率就成了要解決的重點。
說說自己提升學習效率的心得,其實非常簡單:體系化的學習。
我曾經很喜歡看一些部落格或者是一些“看起來”比較通俗易懂的文章,每天在微博微信裡刷到什麼技術文章就mark下來,基本上幾分鐘就能讀完。可一段時間下來,雖然讀了不少東西,但是還是有種在原地打轉的狀態,並沒有感受到有什麼實際的提高。
最後實在忍不住,抱著厚書硬啃了一遍,突然有種豁然開朗的感覺:讀書時自己學到的是一張完整的知識網路,每個知識點和其它內容相互聯絡和區別。這種全方位的理解比起一篇篇獨立的文章,不知要高到哪裡去了。
而讀了一段時間書之後,漸漸原本不在一個體系之內的知識也會慢慢聯絡起來,比如說後端服務的開發,簡單梳理一下,就成了這樣:
在重複了幾次痛苦的學習-梳理過程後,再去看一些獨立的文章或者資料往往會事半功倍,因為能在體系內找到相對應的知識,甚至有時候一本書裡一頁只需要看一句話,點破那層窗戶紙,就可以掌握新的知識。
架構開發技術之路的學習經驗
一、閱讀原始碼
閱讀、分析原始碼是程式設計師最基本的碼程式碼能力也是碼農的根本所在,學習經典原始碼中所用到的經典設計思想及常用設計模式,能夠幫你瞭解大牛是如何寫程式碼的,從而吸收大牛的程式碼功力。在阿里面試中,MyBatis,Spring等框架的底層原理是經常會被問到的
二、分散式架構
阿里巴巴有很多大團隊,這種大團隊裡有很多小團隊,到小團隊之後,做的業務都不相同,如果想立足成為一線網際網路公司中的萬能選手,最主流的分散式架構中有很多知識都是必須要去了解與學習的。並且在阿里面試過程中,面試官會問到實際應用場景的問題:比如微服務化、使用者量、併發量、業務複雜度以及可擴充套件程度等,這裡不多贅述。本屌提供一個分散式架構的學習思路也是自己目前還在學習中的體系:
三、微服務架構
微服務是現在網際網路架構技術中最火熱的話題之一,也是本屌目前正在學習研究的方向。在阿里面試過程中,面試官很少會問到關於微服務相關的問題。但作為一名開發者,一名有技術夢想的程式設計師微服務架構是現在必須要去了解的主流技術,小編給自己制定了一個微服務技術的學習計劃:
四、併發程式設計
併發程式設計幾乎是所有網際網路公司面試必問問題,併發程式設計是Java程式設計師最重要的技能之一,也是最難掌握的一種技能。它要求程式設計者對計算機最底層的運作原理有深刻的理解,同時要求程式設計者邏輯清晰、思維縝密,這樣才能寫出高效、安全、可靠的多執行緒併發程式。目前網上沒有系統的全面的併發程式設計學習大綱,我搜集了很多資料總結出來一個最全面的學習大綱:
五、效能優化
效能一直是讓程式設計師比較頭疼的問題。當系統架構變得複雜而龐大之後,效能方面就會下降,特別是阿里巴巴這樣的一線網際網路公司最為注重,因此想進入阿里,效能優化一定是要去深入學習與理解的一環,本屌在效能優化這一塊雖然不能算專家,也可以自信的說是精通了(注意:自己的簡歷上一定不要寫精通xxxx,要不然面試官會懟死你。好在本屌這一塊還算自信)
6.設計模式
設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使程式碼編制真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。專案中合理的運用設計模式可以完美的解決很多問題,每種模式在現在中都有相應的原理來與之對應,每一個模式描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是它能被廣泛應用的原因。
一名開發人員必須有適合自己的兵器,也就是工欲善其事必先利其器,不管是小白,還是資深開發,都需要先選擇好的工具。下列是我自己常用的開發工具:
Maven的,專案管理
詹金斯,持續整合
聲納,程式碼質量管理
Git的,版本管理
分享我們幾位架構師精講的一些架構視訊資料
免費資料大放送
轉發+轉發+轉發後關注我私信回覆【Java架構】
領取獲取往期Java高階架構資料、原始碼、筆記、視訊。Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術