總聽到有開發者談論這個問題,我相信是很多人的痛點:程序員
做爲一名普通的開發者,看到別人不是進阿里就是當高管。內心不免有一些豔羨,不甘於現狀。想上進的心思是強烈的,殊不知道到底該選擇什麼樣的技術深刻學習。sql
這個問題主要是開發者的發展方向問題,在我看來解決這個問題通常有如下4種方向:數據庫
基於產品自己設計模式
要記住公司招人是解決問題的,基於現有問題出發,你們通常內心會有一個大體的解決方案,而這個解決方案一般是由若干種技術組合而成。性能優化
好比說,當單機遇到性能瓶頸而單純升級硬件的成本過高時,我一般會選擇分佈式技術,而分佈式之下又有zookeeper、dubbo等具體技術。架構
總而言之,針對性地學習比「多而不精」好得多,好鋼使在刀刃上。併發
現有技術的拓展框架
若是你是開發者,你必定有在用某種技術了。那麼想深刻學習,最行之有效的辦法就是深刻現有的技術,並進行拓展學習,造成本身的技術棧。分佈式
好比我如今在作視頻編解碼,那像 ffmpeg 、OpenH26四、WebRTC等等,均可以學。微服務
一段時間後,你會發現本身也能獨當一面。
市場需求情況
大部分人都不能免俗,若是你想賺錢,獲得更好的發展,能夠根據市場需求選擇本身的學習方向。
好比如今人工智能的需求較多,前景不錯,那你就能夠選擇Python、TensorFlow等。
不管是選擇運用最爲普遍的Java仍是在人工智能方面表現不俗的Python,或者其餘語言,都要深思熟慮,一旦決定,毫不輕易回頭。
興趣愛好驅動
若是你有感興趣的技術,那跟着興趣走就行了,興趣是最好的老師。
不管你最終選擇哪一個方向,何種技術,最重要的仍是堅持不懈,只有持續不斷的學習、實踐,才能讓你真正精通某種技術。
我在這裏也給那些想拔高本身的高度殊不知道如何選擇方向的程序員們提供一份進階路線圖,主要針對1到5年及以上工做經驗的Java開發人員,從廣度到深度來講還算比較全面的,裏面的技術包涵了Java高併發、分佈式、微服務、源碼分析、高性能等技術,這些也是目前互聯網企業比較經常使用的技術,那麼來詳細看看。(圖片能夠保存)
一:常見模式與工具
學習Java技術體系,設計模式,流行的框架與組件
常見的設計模式,編碼必備Spring5,作應用必不可少的最新框架MyBatis,玩數據庫必不可少的組件
二:工程化與工具
工欲善其事必先利其器,不論是小白,仍是資深開發,玩Java技術體系,選擇好的工具,提高開發效率和團隊協做效率,是必不可少的:
Maven,項目管理Jenkins,持續集成Sonar,代碼質量管理Git,版本管理
三:分佈式架構
高併發,高可用,海量數據,沒有分佈式的架構知識確定是玩不轉的:
分佈式架構原理分佈式架構策略分佈式中間件分佈式架構實戰
四:微服務架構
業務愈來愈複雜,服務分層,微服務架構是架構升級的必由之路,Java技術體系,和微服務相關的技術有哪些呢?
微服務框架Spring CloudDocker與虛擬化微服務架構
五:性能優化
任何脫離細節的ppt架構師都是耍流氓,向上能指揮若定,向下能解決一線性能問題,Java技術體系,須要瞭解:
性能指標體系JVM調優Web調優DB調優
六:底層知識
從架構設計,到應用層調優,再深刻了解底層原理,紮實的Java基本功才能讓本身變爲掃地神僧:
內存模型併發模式線程模型鎖細節
【附】相關架構視頻資料
資料領取
歡迎工做一到五年的Java工程師朋友們加入Java高級架構:617912068 羣內提供免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代!