搜尋
首頁Javajava教程Java的學習歷程

Java的學習歷程

Jul 24, 2017 pm 05:22 PM
java建議程式設計師

對於Java程式猿學習的建議

 

這部分其實也算是今天的重點,這部分用來回答很多群組裡的朋友所問過的問題,那就是LZ你是如何學習Java的,你能不能給點建議?

 

今天LZ是打算來點乾貨,因此咱們就不說一些學習方法和技巧了,直接來談每個階段要學習的內容甚至是一些書籍。這一部分的內容,同樣適用於一些希望轉行到Java的同學。

 

在大家看之前,LZ要先宣告兩點。

 

1、由於LZ本身是Java後端開發出身,因此所推薦的學習內容是Java Web和Java後端開發的路線,非Java Web和Java後端開發的同學請適當參考其學習思想即可,切勿照搬。

 

2、以下對於【第一部分】的推薦內容,目的是讓你盡快成為一個可以參加工作的Java開發者,更適用於處於待業狀態,準備轉行Java的同學。如果你是在校學生,務必在學好基礎(例如電腦系統、演算法、編譯原理等等)的前提下,再考慮去做下面的學習。

 

第一部分:對於尚未做過Java工作的同學,包括一些在校生以及剛準備轉行Java的同學。

 

一、Java基礎

 

先去找一個Java的基礎教學學習。

 

學習Java基礎的時候,應該盡量多動手,很多時候,你想當然的事情,等你寫出來運行一下,你就會發現不是這麼回事兒,不信你就試試。

 

學完以上內容以後,你應該對Java有一個基本的了解了,你可以用Java語言寫出一些簡單的程序,並且你用的是最簡單的編輯器,例如記事本。

 

這個時候,不要急於進入下一部分,留下幾天好好寫一些程序,盡可能熟悉這些基礎內容。

 

二、Web開發

 

#等你寫上幾天程式以後,你往往會比較迷茫,因為你寫的東西似乎看起來毫無用處,例如實作一個簡單的計算器,讀取一個檔案等。這時候你應該去學著寫一些讓你覺得有意思的東西了,所以你應該學習更多的知識。

 

這些內容主要是Web開發相關的內容,包括HTML/CSS/JS(前端頁)、Servlet/JSP(J2EE)以及Mysql(資料庫)相關的知識。

 

它們的學習順序應該是從前到後,因此最先學習的應該是HTML/CSS/JS(前端頁面),這部分內容你可以去上面的那個runoob網站上找。你可以試著自己寫一些頁面,當然,你可以盡你最大的努力讓它變得最漂亮。這部分內容對於後端Java來說,理論上並不是特別重要,但至少要達到可以自己寫出一些簡單頁面的程度。

 

接下來,你需要學習的是Servlet/JSP(J2EE)部分,這部分是Java後端開發必須非常精通的部分,因此這部分是這三部分中最需要花精力的,而且這個時候,你要學會使用開發工具,而不能再使用記事本了,可以選擇eclipse。

 

當你下載安裝好eclipse以後,請影片中的教學一步一步去學習,一定要多動手。關於Servlet/Jsp部分影片的選擇,業界比較認可馬士兵的視頻,因此推薦給大家。當然了,LZ本人並沒有看過他的視頻,所以不好說的太絕對,如果大家自己有更好的選擇,可以堅持自己的,不要被LZ幹擾。

 

原本LZ也是打算出教學影片的,但由於時間問題,還是決定放棄了。但是如果你看影片的過程中遇到了問題,歡迎來LZ的交流群提問,或者去鬥魚觀看LZ的直播提出你的問題,直播地址和群號都在LZ的個人博客左側。

 

最後一步,你需要學會使用資料庫,mysql是個不錯的入門選擇,而且Java領域裡主流的關係型資料庫就是mysql。這部分一般在你學習Servlet/Jsp的時候,就會接觸到的,其中的JDBC部分就是資料庫相關的部分。你不只要學會使用JDBC操作資料庫,還要學會使用資料庫客戶端工具,例如navicat,sqlyog,二選一即可。

 

三、開發架構

 

#當你學會以上內容以後,這個時候你還不足以參加工作,你還需要繼續深造。公司裡為了提高開發的效率,會使用一些Java Web框架,因此你還需要學習一些開發框架。

 

目前比較主流的是SSM框架,即spring、springmvc、mybatis。你需要學會這三個框架的搭建,並用它們做出一個簡單的增刪改查的Web專案。你可以不理解那些配置都是什麼意義,以及為什麼要這麼做,這些留著後面你去了解。但你一定要可以快速的利用它們三個搭建出一個Web框架,你可以記錄下你第一次搭建的過程,相信我,你一定會用到的。

 

還要提一句的是,你在搭建SSM的過程中,可能會經常接觸到一個叫maven的工具。這個工具也是你以後工作當中幾乎是必須要使用的工具,所以你在搭建SSM的過程中,也可以順便了解一下maven的知識。在你目前這個階段,你只需要在網路上了解一下maven基本的使用方法即可,一些高階的用法隨著你工作經驗的增加,會逐漸接觸到的。

 

關於學習SSM框架的地址推薦給大家一個,這裡有視頻,大家可以去觀看。

 

四、找工作

 

#當你完成開發框架的學習以後,你就該找工作了,在校的找實習,畢業的​​找全職。同時,在找工作的同時,你不應該停下你的學習,準確的說,是你在以後都不能停下學習。

 

上面這些內容你只是囫圇吞棗的學會了使用,你可以逐步嘗試著去了解更多的東西,網絡是你最重要的老師。

 

第二部分:對於參加工作一年以內的同學。

 

恭喜你,這時候,你已經擁有了一份Java的工作。這個階段是你成長極快的階段,你可能會經常加班。

 

但是加班不代表你就可以鬆懈了,永遠記得LZ說的那句話,從你入行那一刻起,你就要不停的學習。在這一年裡,你至少需要看完《Java程式設計思想》這本書。這本書的內容是幫助你對Java有更深入的了解,是Java基礎的升級版。

 

這本書很厚,當初看這本書,LZ花了整整三個月。正常速度的話,應該可以在半年左右看完。 LZ這裡不要求過高,只要你在一年以內把這本書看完即可。當然了,LZ所說的看完,是充分吸收,而不是讀一遍就完事了,因此有些內容你可能會看不止一遍。

 

總而言之,這個階段的核心學習想法就是,在工作中實踐,並且更深入的了解Java基礎。

 

第二部:對於參加工作1年到2年的同學。

 

這部分時段的同學,已經對Java有了更深入的了解。但是對於物件導向的體會可能還不夠深刻,程式設計的時候還停留在完成功能的層次,很少會去考慮設計的問題。

 

於是這個時候,設計模式就來了。 LZ當時看的是《大話設計模式》這本書,並且寫了完整版的設計模式部落格。因此,LZ要求大家,最多在你工作一年的時候,必須開始寫博客,而設計模式就是你博客的開端。

 

請記住,LZ所提的基本上都是最低要求,因此不要有任何鬆懈的心理,否則五年後,你不要去羨慕別人高於你的工資,也不要去羨慕別人進入某公司了。

 

這一年,你必須對於設計模式瞭如指掌,《大話設計模式》可以作為你的開端。

此外,設計模式並不是這一年唯一的任務,你還需要看一些關於程式碼編寫最佳化的書。例如《重構 改善既有程式碼的設計》,《effective java》。

 

總而言之,這個階段,你的核心任務就是提升你的程式碼能力,要寫出一手優雅的程式碼​​。

 

第三部分:對於參加工作2年到3年的同學

 

有的同學在這個時候覺得自己已經很屌了,於是忍不住開始慢慢鬆懈。請記住,你還嫩的多。

 

這個階段,有一本書是你必須要看的,它叫做《深入理解Java虛擬機》。這本書絕對是Java開發者最重要的書,沒有之一。在LZ眼裡,這本書的重要性還要高於《Java程式設計思想》。

 

這本書的內容是幫助你全面的了解Java虛擬機,在這個階段,你一定已經知道Java是運行在JVM之上的。所以,對於JVM,你沒有任何理由不了解它。

另外,在過去2年的工作當中,你肯定或多或少接觸過並發。這時候,你應該去更深入的了解並發相關的知識,而這部分內容,LZ比較推薦《Java並發程式設計實戰》這本書。只要你把這本書啃下來了,並發的部分基本上已經了解了十之六七。

 

與此同時,這個階段你要做的事情還遠遠不止於此。這時候,你應該對於你所使用的框架應該有了更深入的了解,對於Java的類別庫也有了更深入的了解。因此,你需要去看一些JDK中的類別的源碼,也包括你所使用的框架的源碼。

 

這些原始碼能看懂的前提是,你必須對設計模式非常了解。否則的話,你看原始碼的過程中,永遠會有這樣那樣的疑問,這段程式碼為什麼要這麼寫?為什麼要定義這個接口,它看起來好像很多餘?

 

由此也可以看出,這些學習的過程是環環相扣的,如果你任何一個階段拉下來了,那麼你就真的跟不上了,或者說是一步慢步慢。而且LZ很負責的告訴你,LZ在這個階段的時候,所學習的東西遠多於這裡所羅列出來的。因此千萬不要覺得你已經學的很多了,LZ所說的這些都只是最低要求,不光是LZ,很多人在這個時間段所學習的內容都遠超本文的範圍。

 

如果你無法跟上節奏的話,若干年後,如果不是程序猿市場還不錯的話,你很可能不僅僅是工資比別人低,公司沒別人好,而是根本找不到工作。

 

總而言之,這個階段,你需要做的是深入了解Java底層和Java類別函式庫(例如並發那本書就是Java並發包java.concurrent的內容),也就是JVM和JDK的相關內容。而且還要更深入的去了解你所使用的框架,方式比較推薦看源碼或看官方文件。

 

另外,還有一種學習的方式,在2年這個階段,也應該啟用了,就是造輪子。

 

不要聽信那套「不要重複造輪子」的論調,那是公司為了節省時間成本編造出來的。重複造輪子或許對別人沒有價值,因為你造的輪子可能早就有了,而且一般情況下你造出來的輪子還沒有現存的好。但是對別人沒有價值,不代表對自己沒有價值。

 

一個造輪子的過程,是一個從無到有的過程。這個過程可以對你進行系統的鍛煉,它不僅考察你的編碼能力,還考察你的框架設計能力,你需要讓你的輪子有足夠好的擴展性、健壯性。

 

而且在造輪子的過程中,你會遇到各種各樣的難題,這些難題往往又是你學習的契機。當你把輪子造好的時候,你一定會發現,其實你自己收穫了很多。

 

所以,這個階段,除了上面提到的了解JVM、JDK和框架原始碼以外,也請你根據別人優秀的源碼,去造一個任何你能夠想像出來的輪子。

 

第四部分:參加工作3年到4年的同學

 

這個階段的同學,提升已經是很難了,而且這個階段的學習往往會比較多元。

 

因為在前3年的過程中,你肯定或多或少接觸過一些其它的技術,例如大數據、分散式快取、分散式訊息服務、分散式運算、軟負載平衡等等。這些技術,你能精通任何一項,都將是你未來面試時巨大的優勢,因此如果你對某一項技術感興趣的話,這個時候可以深入去研究一下。這項技術不一定是你工作所用到的,但一定是相關的。

 

而且在研究新技術時,切忌朝三暮四。有的同學今天去整整大數據,搞搞Hadoop、hbase一類的東西。過不了一段時間,就覺得沒意思,又去研究分散式緩存,例如redis。然後又過不了一段時間,又去研究分散式計算,像是整整Mapreduce或是storm。

 

結果到最後,搞得自己好像什麼都會一樣,在履歷上大言不慚的寫上大數據、分散式快取、分散式運算都了解,其實任何一個都只是浮於表面。到時候面試官隨便一問,就把你給識破了。

 

一定要記住,作為一個程式猿,平日所接觸的技術可能會很多,但是想要讓一門技術成為你的優勢,那麼一定是你對這門技術的了解強過絕大多數人才行。

 

因此在這個階段,你就不能再簡單的去學習前3年的內容了,雖然前面的學習如果還不夠深入的話依舊要繼續,但這個時候你應該更多的考慮建立你的優勢,也可以稱為差異性。

 

差異性相信不難理解,就是讓你自己變得與眾不同。你前面三年的學習足夠你成為一個基本合格的Java開發者,但你離成為一名優秀的Java開發者還有很大的距離。

 

所謂優秀,即能別人所不能。而你前三年所學習的內容,是很多做過幾年的Java開發都能夠掌握的。那麼為了讓自己有差異性,你就需要另闢蹊徑,找一個方向深入研究下去,以期在將來,你能夠成為這個領域的專家,比如分散式運算領域的專家,大數據領域的專家,並發領域的專家等等。

 

此外,你除了建立你的差異性之外,還要去彌補你基礎上的不足,直到現在,LZ都沒有提及基礎知識。原因是基礎是很枯燥無味的,學的太早不僅容易懵逼,而且懵逼的同時還容易產生心理陰影,以至於以後再不想去研究這些基礎。但基礎又是你深入研究一些領域時所必須掌握的,例如你去研究分散式計算,你不懂演算法你玩個毛毛?例如你去做分散式緩存,你對電腦系統的記憶體不了解,你如何去做緩存?

 

如果你的基礎本來就非常強,那麼恭喜你,相信你在之前的工作中已經充分體會到了這些基礎對你的幫助。但LZ相信大部分人的基礎都很薄弱,即使是科班畢業的人,很多人也不敢說自己當初的基礎學的多麼強大,比如算法、計算機系統原理、編譯原理這些。

 

但是每個人時間都是有限的,而且這些基礎的書每一本讀下來,沒個一年半載的,還真拿不下來,因此還是要有所抉擇的。雖然藝多不壓身,但問題是藝術多是有代價的,是需要你付出時間和精力的,而LZ個人更贊成在同等代價的情況下獲取最大的收穫。

 

首先,LZ比較推崇的基礎書籍有三本,分別是《深入理解電腦系統》,《tcp/ip詳解卷一、二、三》,《資料結構與演算法》。其中TCP/IP有三本書,但我們這裡把這三本看成是一本大書。

 

這三本分別適合三種人,《深入理解電腦系統》比較適合一直從事Java Web開發和APP後端開發工作的人。 《tcp/ip詳解 卷一、二、三》比較適合做網路程式設計的人群,例如你使用netty去開發的話,那麼就要對TCP/IP有更深入的了解。而《資料結構與演算法》這本書,則比較適合做計算研究工作的人,例如剛才提到的分散式計算。

 

另外,LZ要強調的是,這裡所說的適合,並不是其它兩本對你就沒有用。例如你做Java Web和APP後端開發,《tcp/ip詳解 卷一、二、三》這本書對你的作用也是很大的。這裡只是分出個主次關係而已,你要是時間足夠的話,能把三本都精讀那當然最好不過了。但如果時間有限的話,那就先挑對你幫助最大的書去讀。

 

理論上來講,這一年你能把這三本其中一本精讀下來,就已經非常厲害了。有了基礎,有了前面的工作經驗,你就可以開拓屬於你的領域了。

 

在這一年裡,一定要規劃好自己的領域,建立好自己的優勢,製造出差異性。如果你對自己的領域不夠清晰的話,隨著你工作的時間日益增多,你接觸的技術會越來越多,這個時候,你很容易被淹死在科技的海洋裡,看似接觸的技術越來越多,會用的也越來越多,但你毫無優勢。

 

有的同學可能會問,「LZ,我也不知道我的領域是什麼啊?怎麼​​辦呢?」

 

對於這種人,LZ只想說,「臥槽,這還問我?要不乾脆我替你學習得了,好不好?」

 

第五部分:參加工作4年到5年的同學

 

經過前面一年的歷練,相信你在自己所鑽研的領域已經有了自己一定的見解,這個時候,技術上你應該已經遇到瓶頸了。

 

這時候不要急著提升自己的技術,已經是時候提高你的影響力了,你可以嘗試去一些知名的公司去提升你的背景,你可以發表一些文章去影響更多的人。當然,你也可以去Github創建一個屬於你的開源項目,去打造自己的產品。這次的開源專案不同於之前的造輪子,你這個時候是真的要去盡量嘗試造出來真正對別人有價值的輪子。

 

技術學到這個階段,很容易遇到瓶頸,而且往往達到一定程度後,你再深入下去的收效就真的微乎其微了,除非你是專門搞學術研究的。然而很可惜,大部分程序猿做不到這一步,那是科學家會做的事。

 

這時候提高影響力不只是因為技術上容易遇到瓶頸,更多的是影響力可以為你創造更多的機會。程序猿在某種程度上和明星很像,一個好的電視劇和電影就可以成就一批明星,而程序猿有的時候也是,一個好的項目就可以成就一群程序猿。

 

例如國內幾個膾炙人口的項目,像是淘寶、支付寶、QQ、百度、微信等等。這每一個項目,都成就了一批程序猿。 LZ敢說,這裡面任何一個項目,如果你是它的核心開發,光是這樣一個Title,就已經是你非常大的優勢。更何況不只如此,Title說到底也是個名頭,更重要的是,這種專案在做的時候,對你的歷練一定也是非常給力的。

 

而你如果想要參與這樣的項目,除了靠運氣之外,影響力也是很重要的手段。例如你在分散式運算領域有一定的影響力,那麼如果有什麼好的關於分散式運算的項目,對方就很可能會邀請你。就算人家不邀請你,你自己主動去面試的時候,對方如果知道你在這個領域的影響力,也一定會起到很大的作用,而這個作用,甚至可能會超過你現在的技術能力。

 

所以,在這個階段,你最大的任務是提升自己的影響力,為自己未來十年的工作生涯那一天做準備。如果你能夠靠你的影響力和以前累積的技術,參與到一個偉大的專案當中,那麼你後面的五年也就有著落了。

 

當然了,LZ現在滿打滿算,做程式猿也就4年半不到,因此關於4年到5年這一部分,LZ的見解不一定是對的,就算是對的,也不一定是適合任何人的。所以,希望大家自己有的判斷力,決定到底該如何度過這一年。

 

結語

 

本文基本上已經結束了,整篇文章很長,但其實主要就說了兩個部分內容,一個是社招面試的準備,一個是Java生涯的學習。

 

關於這兩部分,LZ已經給出了自己的見解,但是還是那句話,每個人吸收知識的時候,都要有抽取精華,去除糟粕的能力。 LZ所說的,可能有些是對的,有些是錯的,有些是適合你的,有些是不太適合你的,你要自己能夠判斷。

 

其實你在生活和工作當中也是一樣的,你身邊的人形色色,有的人你喜歡,有的人你很討厭。但其實你喜歡的人也有缺點,你討厭的人也有優點。你要學會從你討厭的人身上學會他的優點,千萬不要一棒打死,這只會讓你失去很多學習成長的機會。

 

好了,說了這麼多了,就到此為止吧,希望本文可以幫助到作為程式猿或即將成為程式猿的你。

學習Java的同學注意了! ! !

學習過程中遇到什麼問題或想獲取學習資源的話,歡迎加入Java學習交流群:299541275   我們一起學習Java!

以上是Java的學習歷程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。