1. 程式人生 > >寫給那些想要自學成才的java程式設計師

寫給那些想要自學成才的java程式設計師

一:我的大學:第一年泡在圖書館看雜七雜八的書,跟學習毫無關係。第二年瘋狂打LOL,從白銀打到黃銅(黃銅守門員)。第三年上半年,被某人點醒,學習了整套C#知識體系,某馬。下半年又決定轉行,又開始了為期半年的自學java路程。所以我的經歷可能適用一些正在學校的孩子或者準備轉行做java的。

二:如果你還是在校生,或者準備轉行做java,你必須要學會下面的:

2.1:java基礎,不得不提,重中之重!你需要把每個知識點都記錄下來,通過實戰去強化,可以藉助外來的視訊資料,但是記住視訊為輔(一般都不是很深入),看完對應的都必須要看一本書:"java程式設計思想或者java核心技術",建議都看,十分經典,可以在你的筆記基礎之上再次提升文章等級。

2.2 :對於有了java基礎的小夥伴來說,那麼不得不提的就是演算法與資料結構以及設計模式這兩大塊內容,重中之重!依然是結合視訊,你需要了解常用的資料結構,知道他們的使用場景以及效能分析,需要具備一定的演算法能力,常用的排序演算法等等之類,可以去leetcode網站去找一些演算法題目去練練,java語言也可以在這個階段再一次提高,你要注意你寫的程式碼的邏輯性和美觀性以及效能。設計模式不得不提,隨處可見,23種設計模式都必須瞭解並知道之間的區別以及常用的場景,比如抽象工廠與建造者模式的區別,常用的單例模式,門面模式,等等。headfirst設計模式和演算法4不錯,可以在有了基礎後再去看看。

2.3 :java、演算法與資料結構、設計模式都必須學好,必須。會為你以後解決業務場景,看原始碼等等起到很關鍵的作用。

2.4 :學習了這些之後你可以嘗試去學web開發相關的一些內容了,主要包括了Html/css/js,J2EE ,mysql相關的一些知識,對於如果以後專門要做java後端的小夥伴,前端相關知識可以稍微的花一些時間,因為不需要很久,可以入門。J2EE相關的你都必須掌握,servlet的執行原理等等很關鍵,mysql同樣是你必須要非常深入的去學的內容,你必須要能熟練的寫出SQL語句,業務的關鍵就在於此。你不僅僅要會寫SQL,更要配合業務寫出可重用,效能高的sql,建議深入的看一下高效能mysql,你不能僅僅停留在簡單的增刪改查,如果連資料庫的設計都不會,效能優化都不瞭解,那麼真的需要再逼一下自己,讓自己懂的更多。

2.5:到了這個地步,你應該可以試著開發一個完整的網站出來了,你可以在搜尋專案資料,自己去練,至少要有兩個完整的,不管是跟著做還是自己做的,你能在這裡面遇到很多bug,也能解決很多bug.這是你必須要邁過的門檻。

2.6:現在你已經能靠著自己做出一個很一般的網站了,但是工作上用的遠遠不止這些,你可能還不能找到比較好的工作,當然若是你前面我說的那幾個都非常優秀,尤其是演算法和資料結構,那另當別論。如果前面掌握的很一般,那麼你還需要學習一些常用的web框架,比如spring,springboot ,springmvc,mybatis,什麼hibernate還有structs2就不要再碰了,你必須熟練掌握這些框架的基本用法,要能明白常用的一些配置,有興趣的可以進入裡面看看原始碼,記著:研究原始碼是你做這份工作不能停下來的事。spring重中之重,不斷的探索,不斷的去研究原始碼。順便再學一下maven如何管理專案,還有git的一些pull,push ,merge,rebase等用法,公司很常用,不要僅僅停留在svn,很多公司都是用git的。

2.7:當你學會了上述那些知識,有了自己的知識框架,也可以去找點工作乾乾了,還沒畢業就趕緊找實習,攢工作經驗,畢了業的就要繼續下面的學習內容,不能停下來。

三:工作一年經驗內的小夥伴

應該嘗試了不少crud的滋味了吧,也接觸到了複雜業務的情景了吧,加班成了平常事了吧,是不是開始又覺得漫無目的了。可能在開發中你會接觸到新的知識,比如,springboot ,springcloud ,dubbo,zookeeper,linux,rabbitmq,redis,mongdb,kafka,elasticsearch等等,你需要學會去用好這些工具。

四:工作1-3年的小夥伴

可能你不再需要寫簡單的crud了,但是你能否自己搭建框架,能否寫出可複用的模組程式碼,是否能寫出優雅的程式碼,如果不能,還得繼續學,必須重新拾起設計模式,要能對業務封裝,對工具類封裝,要能重構程式碼,要把設計模式運用到專案中去,你需要去看《重構 改善既有程式碼的設計》、《effective java》,久而久之,你可以寫出比較出色又優雅的程式碼。但這還不夠,你必須要對java虛擬機器有深入的理解,要能解決專案中遇到的記憶體溢位異常等等,這部分內容比較枯燥,但是你必須要啃下去,還要會模擬場景去製造異常,因為很多異常你真的不知道從何下手,只能從日誌裡去看堆疊的列印資訊,去看虛擬機器的日誌資訊,去分析,你才能解決問題。所以必須學好,必須死磕這方面的內容。與此同時你還需要研究jdk的原始碼,就跟著你一開始學java基礎的來,從集合開始,去深入的看原始碼,這時候你會發現java基礎和資料結構和設計模式有多重要。還需要去學習併發相關的知識,要對Java併發包java.concurrent有深刻的認識,這些內容需要你摒棄浮躁的心,慢慢看,不能急,急你也看不出什麼效果。

五:3年及以上

可能在這個階段的小夥伴提升已經很難了,你可能已經接觸過很多分散式相關的技術了,分散式快取,分散式訊息佇列,分散式計算,負載均衡,大資料等等,你可能都已經用過了,所以現在的你既有了基礎知識的架構支撐,也還沒到退休年齡(哈哈),建議你深入的去研究一門技術,是很深入,不要既搞分散式計算,又搞分散式快取,又研究大資料等等,說自己懂的那麼多,花裡胡哨的,真正懂得基本都能拿下你。所以你必須開始確定自己的研究方向,專門的去研究某個內容,讓這一塊成為你的優勢和強項,這也是為了避免大齡被淘汰的法門。你應該朝著某個領域的專家去努力。

六:提高自己的影響力

有了自己深入研究的方向,你應該去幫助更多的人,去發表更多的優質文章,也可以去打造屬於自己的開源專案,做出對別人,對自己有價值的東西。所以這個階段的你應該提高自己的影響力,幫助更多的人,更多想學習的人。因為你老了。

七:最後希望你們能入了門,成為自己想成為的人,如果有想要資料的,留下郵箱或者加微訊號:codecarver