怎樣自學java,不緊深深苦惱著廣大的java學習者,也深深地苦惱著我。一般來說有自學和去培訓機構(gòu)2個選擇,培訓機構(gòu)的好處就是能在短時間內(nèi)系統(tǒng)地教授你大量知識,至于你能不能接受不管,而且培訓機構(gòu)要繳納一二萬的學費,很多人看見昂貴的學費望而卻步。我當初也差點去培訓,在猶豫中最后還是沒去,自學了將近一年,現(xiàn)在終于找到了一份初級程序員的工作,工資勉強還可以,雖然趕不上我那厲害的室友(后面說明),但總算是入行了,在這里我發(fā)表一下自己的自學經(jīng)歷。
自學無疑是看視頻,看書,然后敲代碼。如果你是沒有一點基礎(chǔ)的,我建議你先看視頻,因為看視頻有一個互動的過程,遇到不懂的可以及時從老師的話語中找到答案,疑惑解除了你才可能繼續(xù)學下去,這是很正常的,尤其是對java初學者來說。想當初我自學java的第一天,裝jdk配置java環(huán)境變量都花了整整一天,我一度想要放棄,后來還是請教我的室友才解決了這個問題。
(這里說明一下,我室友和我并不是一個專業(yè)的,平時上課也不在一起,他大二就開始學java了,我大四為了找工作才開始學java的,到大四的時候他已經(jīng)自己寫了一個氣象網(wǎng)站:
發(fā)現(xiàn)這個超鏈的標題太丑了,就主頁2個字,不過我覺得他畢竟做出來一個完整的網(wǎng)站,還在線上運行了,作為一個大四的學生他已經(jīng)很了不起了,我是今年6月份剛畢業(yè)的,作為一個二本院校的學生,我像大多數(shù)普通本科院校畢業(yè)的本科生一樣進入了一個普通公司當了一個普通的程序員,我都不好意思說出公司的名字,說出來你們也不知道,哈哈!而我那位牛逼的室友居然拿到了北京京東總部的offer,國慶回成都都是坐的飛機,工資高就是不一樣,這就是差距,扯遠了)
前面說到我學java的第一天就想放棄,于是我又去找我那位大神室友,問他怎么學java,他給我推薦了馬士兵的視頻,并網(wǎng)盤打包給了我一個30多G的視頻包,我看了一會兒就看不下去了,畢竟視頻太老了,于是我又自己網(wǎng)上搜,在網(wǎng)易云課堂搜到了尚學堂高淇老師的大型300集視頻:
Java課程 Java300集大型視頻教程 - 網(wǎng)易云課堂
這個還不錯,我看了前面100集和后面100集,至于為什么中間100集我不看,因為中間100集不是高淇老師講的,是一個叫做裴新的老師講的,由于我當時水平有限,這個老師又講的太快,聽了幾集聽不懂就放棄了,不過看了高淇老師的部分就足夠了,高淇老師的視頻真的非常適合java初學者,不僅通俗易懂,講的很細,還深入地進行了很多內(nèi)存的分析,jdk中重要的類他都進行了源碼講解,不僅讓你知道這樣,還知道為什么這樣。此外,他以自己10多年的開發(fā)經(jīng)驗,還告訴了我們許多實際開發(fā)中會遇到的問題以及怎么與人打交道,受益良多。后面100集他還講了23種設計模式和手寫服務器,讓我對web的底層原理有了深刻的認識,讓我深刻地理解了學java看源碼是多么的重要。
看了300集之后,我就想做一個實戰(zhàn)項目,我在網(wǎng)上找啊找,一個偶然的機會我找到了一個不錯的項目,它是一個關(guān)于天貓商城的javaEE項目:
這個項目真心是個不錯的實戰(zhàn)項目,為什么這樣說呢?因為現(xiàn)在網(wǎng)上的java項目實在是太多了,你隨便一搜一大把,可是有幾個是你看得懂的呢?又有幾個是下載下來是能成功運行的呢?項目包即使是對的你又怎么配置呢?......當面對這一系列問題的時候,對于一個java初學者來說我想很多都會放棄吧,下載下來的項目很快就會成為垃圾被丟掉,你永遠會只停留在會寫"Hello,World"的階段。
而這個項目一開始就有一個可運行的項目包供你下載下來運行,然后你按照站長教程一步一步的配置起來就可以運行了(注意站長對配置的每一步都進行了細致到原子層面的講解,完全是傻瓜式教程,小學生都可以學會),當你看到運行起來的天貓商城項目是不是有一點竊喜呢!運行成功后項目的截圖:
別得意,這只是萬里長征的第一步!運行起來的項目其實和你半毛錢關(guān)系都沒有,這又不是你寫的項目。
于是我們偉大的站長又從從零開始對整個項目進行了傻瓜式的講解:
第一步:需求分析
要知道做任何一個項目都是從需求分析開始的,這也是我們實際開發(fā)中的第一步,比如這個項目需要做前端展示頁面,后臺維護頁面以及頁面與服務器和數(shù)據(jù)庫的交互:
第二步:表結(jié)構(gòu)設計
表結(jié)構(gòu)設計可謂是一個項目的基石,整個項目的運行都要以數(shù)據(jù)庫的數(shù)據(jù)作為支撐,所以表結(jié)構(gòu)設計得是否合理對于項目的業(yè)務支撐起到了非常關(guān)鍵的作用。站長精心設計了每一張表,講解了每張表之間的關(guān)系,例如一對一,一對多,多對多。此外還把每張表與對應的頁面內(nèi)容對應的截圖,讓你從視覺上清楚地知道每張表的作用。
第三步:代碼開發(fā)
這個項目是按層次結(jié)構(gòu)開發(fā)的,包括了實體層,Dao層,servlet層。由于只是一個模擬項目(但已經(jīng)很接近實際項目了),沒有實際業(yè)務大量數(shù)據(jù)交互的需要,所以沒有service層。
針對比較復雜的類,站長還進行了細致的講解。比如做分類管理的servlet的時候,需要增加,刪除,編輯,修改,查詢5個服務端功能。
如果按照傳統(tǒng)的web.xml配置servlet的方式,一個路徑對應一個servlet的思路,就需要設計5個servlet,并在web.xml中配置5個路徑:
而光是后臺做分類,產(chǎn)品,屬性,產(chǎn)品圖片,用戶,訂單這6種管理,總共就需要30個servlet,而且在web.xml中進行配置,配置文件就會相當臃腫,并且容易出錯。站長就充分利用過濾器的原理,把每種分類下的5個servlet合并成了一個,這種設計思想就類似于struts2框架的設計思想。現(xiàn)在servlet就只剩下6個了。
第四步:項目中每個知識點的講解,當你遇到問題有不懂的問題,站長還進行了專門的視頻講解:
第五步:每個知識點的講解都給出了可運行的文件下載:
總之,你在項目開發(fā)中會遇到的一切問題,站長都幫我們提前想好了。
你按照這個傻瓜式的講解進行傻瓜式的項目練習,在這個過程中你就會慢慢體會到了實際項目開發(fā)中的一些問題(要知道這個項目是模仿天貓商城的項目,天貓商城的業(yè)務復雜性我想大家都知道吧,這個項目除了數(shù)據(jù)量沒有真正的天貓商城大之外,其它的已經(jīng)很接近了),而你遇到的每個問題我們偉大的站長都有詳細的教程講解,按照教程做完一遍后,可以說你已經(jīng)掌握了整個web開發(fā)的流程了,只不過你還不太熟練,這時候你再背著教程再做一遍,你就算已經(jīng)學會javaWeb開發(fā)了,之后你想要在項目上添加什么功能都是輕而易舉的事情。
項目入口:JAVA WEB 項目教程-模仿天貓整站 J2EE版
經(jīng)過以上的步驟你已經(jīng)算得上是一個javaWeb開發(fā)人員了。可能你編寫的代碼還不是很高效,但是你至少能跑通整個javaWeb開發(fā)流程了,能看到真實的頁面,頁面與頁面的交互以及頁面與數(shù)據(jù)庫的交互,而不在停留在控制臺輸出字符串的階段。
接下來你就應該學習java框架提高開發(fā)效率。現(xiàn)在都說流行SSM開發(fā),其實這個要看你公司的需求,公司要求你用什么就用什么吧,其中關(guān)于mybatis的學習推薦慕課網(wǎng)源生活老師的:
通過自動回復機器人學Mybatis_基礎(chǔ)版-慕課網(wǎng)
源生活老師號稱編程界的段子手,聽他講課真是一種享受。
當你框架也掌握了之后,你已經(jīng)是一個合格的初級java程序員了,但離java高級工程師或java架構(gòu)師甚至是java專家依然很遠,很多java開發(fā)人員窮其一生都未曾達到這個標準。
當然你要成為什么樣的人完全取決于你自己,想要在Java的路上深造的話,這時你就應該去看一些官方的文檔啊,加入一些開源項目,瀏覽一些著名的編程網(wǎng)站啊,看一些java方面比較高級的書啊,至于該瀏覽什么樣的網(wǎng)站和看哪些書,網(wǎng)上一搜一大把,這里就不列舉了......
以上就是我這將近一年來的java自學過程(當然還學了其它的,這里就不講訴了),每個人有每個人不同的學習方法,找到適合自己的方法才是最重要的,謝謝大家!