如何自学java(男神马士兵戒言)
馬士兵有一篇文章,我覺得寫得很好,原文轉載如下。
------------------------------------------------------------------------------------------------------------
目錄
JAVA自學之路 一: 學會選擇.
JAVA自學之路 二: JAVA自學路線圖
JAVA自學之路 三: 要動手
JAVA自學之路 四: 要事為先
JAVA自學之路 五: 問題解決之道
| 1 2 3 4 5 6 7 8 | 1:要仔細的觀察錯誤的現象,是的,要仔細 2:要仔細思考問題會出在哪些環節(重要) 3:如何定位錯誤(重要)分析清楚有哪些環節之后,下一步就是定位到底什么環節出錯了。? 4:如果還不行,google吧. 5:什么?還不行?那么就BBS吧 6:還解決不了?問老師吧,這個只能是在你參加了培訓的前提下了。 7:還解決不了?天哪,是不是思路從根上就搞錯了?寫信給我,讓我也學習一下,共同進步吧。? |
JAVA自學之路 六: 項目的自學
JAVA自學之路 七: 路線圖明細
| 1 2 3 4 5 6 7 8 9 10 11 12 | 一:J2SE 二:數據庫(Oracle或者MySQL) 三:JDBC 四:HTML_CSS_JAVASCRIPT 五:Servlet & JSP 六:Struts 七:XML. 八:Hibernate 九:Spring 十:EJB3.0 十一:至于SOA,對于自學的同學來說,暫時不用特別關注。 |
? ? ? ?為了就業,不少同學參加各種各樣的培訓。
? ? ? ?決心做軟件的,大多數人選的是java,或是.net,也有一些選擇了手機、嵌入式、游戲、3G、測試等。
那么究竟應該選擇什么方向呢?
? ? ? ?我的意見是,不要太過相信各種培訓機構或是搶手文章的說法(包括我),當你要走向社會的時候,就不要再把自己當成學生,不要把自己的將來交給別人,學會運用自己的眼睛去觀察,去了解這個世界吧。
? ? ? ?每個培訓機構都會宣傳自己的好處,并不能說明大的趨勢。一些新聞文章很有可能是槍手寫的,不必太過相信。國外背景的教師和課程,未必適合你。那么怎么才能確定自己將來的方向?如何才能從紛繁復雜、或真或假的數據世界中挖出一條路?
我講一個通過招聘網站的觀察方法。
? ? ? ?可以到各種招聘的網站上查詢信息(可以到google上查詢招聘的網站),例如:
招聘網_人才網招聘網_找工作招聘_求職_找工作
CSDN.NET - 全球最大中文IT社區,為IT專業技術人員提供最全面的信息傳播和服務平臺招聘頻道職友集(天津):發現中國好公司,最好的求職找工作網站,綜合了各大招聘網站的數據。
? ? ? ?這些數據都是最真實不摻假的原始數據,你可以每隔一段時間搜索一次,一些規律就會被總結出來了。 比如說我在職友集(天津):發現中國好公司,最好的求職找工作網站中搜索java,全國大概提供了3萬個職位。位然后要多翻幾頁,這樣不僅能夠看清楚大概有多少是有效的職位,而且還可以看清楚用人單位最關心的技能是什么,這個很重要,決定著你將來要花多少時間和精力在特定的知識點上,比如說swing,搜了一下,全國只有700個左右的職位,仔細讀了一下,也并非全是有效的職位,花太多時間和精力在這個上面就不值得了,當然自己感興趣或者為了研究的話另當別論。不過如果是為了快速的就業,把太多時間和精力花在很多職業生涯的前一、二年用不到的知識上就太可惜了。同時,并非某一個行業的職位數目少,就不能當作一個方向進行選擇,比如.NET,我搜索到的職位數是1.6萬左右,比java少,是不是就選java了呢?不一定,因為java職位雖然多,但是可能競爭者可能也多,有些方向雖然職位數不多,但是和你競爭這些職位的人數量也少,不見得就不能選擇。不過,如果某一個方向的職位數目過少,你可就要小心了,選擇這樣的方向風險會非常大,如J2ME。
我個人覺得java/J2EE、.net、嵌入式開發是不錯的三個方向。
如果非要在java和.net中選擇的話,我個人是推薦java的,原因:
1:Java能夠開發linux、unix服務器上的程序
2:JavaEE和.NET在企業應用方面的關注點是差不多的,但是學習了java如果將來想轉到.net上會比較簡單,幾天的學習然后上手開發應該是問題不大的,但是反之就不行了。
當然如果有了些經驗之后,你就會發現語言或者平臺不再是技術上的阻礙,一些原理性的東西學到手,然后再加上項目經驗,使用什么平臺,反而不是最重要的。不過如果非要用一種平臺進入企業開發的領域,至少在目前,2007年9月,我推薦java。
? ? ? ?完全可以不同意我的觀點,但是無庸置疑,如果是為了就業,多到招聘網站閱讀閱讀職位的信息,對你將來的方向和學習是大有益處的。 選擇是最痛苦的,看看《天生購物狂》中的劉青云就知道了,不過既然無法逃避,就作出自己的選擇吧。 每個人都會受到別人的影響,在作出決定之前,要想盡各種辦法讓自己理性一些吧。這樣,你的選擇會離正確的方向更近一些。
? ? ? ?有不少的同學發信給我,和我探討java的自學過程應該是什么樣的,畢竟有很多人因為各種各樣的原因不能參加培訓。我試著給出自己的見解,拋磚引玉吧。這個路線圖是給那些為了就業的人準備的,如果只是興趣,不一定照這個走。這里只是講了路線圖,關于路線中的各個階段,學到什么程度,如何學習等,可以參考后面的JAVA自學之路 七:《路線圖明細》。
? ? ? ?首先要學JavaSE,這是無庸置疑的。與此同時,是的,與此同時,和JavaSE的學習同步,建議大家研究一下數據結構與算法。在這兒之后,你可以選擇向J2ME、或者Java GUI、Socket編程等方向努力,但是通過第一篇的辦法,你可以很容易就將這方向過濾掉(永遠不要忘了我們是為了就業),好吧,暫時和它們訣別,還是向著J2EE的方向前進吧。在JavaSE完成之后,可以試著完成一些小項目,同時關注一下設計模式的內容,不必強求自己能夠完全掌握各種細節,往前走吧。
掌握一種編程工具,比如說Eclipse。
數據庫,可以選擇使用Oracle或者MySQL開始。JDBC,用Java連接數據庫。可以選擇在這個地方切入Hibernate,也可以選擇在Struts之后。
HTMLCSS JavaScript,這些東西是做web項目必需的內容。
Servlet\JSP,服務器端必需。
XML 、AJAX,新的流行趨勢不能不了解。
? ? ? ?作一些小項目吧。比如BBS、留言系統、學籍管理、商城等等,隨便找一些業務邏輯比較簡單的來做一做:
Struts,MVC的典型應用,Hibernate,ORMapping的典范之作。Spring IOC + AOP,面向對象 + 面向切面,完善的旅程。把以前自己的小項目加入Struts、Spring、Hibernate的元素吧。去研究各種商業項目的業務邏輯吧,才能在你的簡歷中加入濃重的一筆。EJB3.0,java在走了很多彎路后的回歸之作,值得研究。SOA,業界鐵定的未來趨勢,要緊緊跟隨。
在后面,我會告訴你每一步的學習方法和學習重點。
無論如何,請堅持不懈的動手實驗!
? ? ? ?學習Java要動手,僅僅是看和聽是不能夠學好編程的。總有同學來信問我們這樣的問題,說:"老師我看了視頻了,可是怎么一動手就沒有任何思路呢?" 對此,我一般都會說不要著急,如果你只是看了視頻就想行云流水的話,那老師這些年的鍛煉真是白費了,這么多年的苦練才能略有些行云流水的感覺,你一朝一夕就想自己能夠達到,不是太奢侈了嗎?
? ? ? ?作為編程的過來人想一下,當年自己學編程的時候是什么時候有思路的呢?至少也是照貓畫虎畫了一段時間之后吧,我本人是在某一個領域畫虎畫了上萬行代碼的時候才慢慢有自己思路的。就像寫作文,要有自己思路總是一般來說要經過幾個階段,首先學習詞匯,然后學習造句,然后大量閱讀別人的文章,自己模仿著寫一些,逐漸的經驗積累,才能形成自己的思路。學編程,恐怕也得慢慢的來吧,只是看一看、聽一聽視頻,是不足以學好編程的。
? ? ? ?所以,動手吧,跟著做,一行一行的跟著敲,一個項目敲完了,比如坦克,再試著加一些自己的功能,按照自己的思路敲一些代碼,收獲遠比干聽大的多。
? ? ? ?如果遇到,暫時對于一些思路不能理解的同學,我一般都會勸告說,動手寫,先寫代碼,量變會引起質變的。而這種質變的確發生過不少次。
? ? ? ?提醒一句,要理解代碼思路之后再跟著敲 ,背著敲,千萬不要左邊擺著別人的程序,右邊自己一個一個子母的寫,這就不再是程序員了,成了打字員了。
紙上得來終覺淺,所以:別問那么多,別想那么多,動手寫吧。
JAVA自學之路 四: 要事為先
對待人生的任何事情都要:抓大放小,要事為先!
? ? ? ?對于一個以前從來沒有接觸過java的人,java無疑是龐大的,似乎每個領域都可以拓展開來都是一片開闊地,每一個領域要想深入接觸到每一個細節所耗費的精力都是巨大的。這個時候大家都胸懷壯志,兩眼發光的盯著每一個嶄新的知識點,遇見了任何一個知識點都恨不得摳的清清楚楚,明明白白。
難道這有什么不對嗎?
? ? ? ?我的意見是,這樣并沒什么大毛病,但是學習效率太低了!我們推薦的學習方式是,抓大放小,要事為先{馬士兵老師的這句話可能并不適合當代的大學生。仔細思考} 。
? ? ? ?比如說學習J2SE的時候,學到GUI這一章,有的同學認為,既然學到這兒了,我們去把SWING細細的了解一遍吧;還有的同學,遇到了在Linux下的Shell編程,就恨不得把Shell先學成專家才肯,或者是才敢,繼續往下學習;有沒有過這樣的感覺,一本書的上冊沒有學好,覺著下冊心里也沒底兒,甚至非要把上冊復習一遍才敢繼續學習。如果你也是這樣,要去看看心理醫生啦,沒準兒會有潔癖的毛病。
任何事情都要追求完美才敢繼續往后進行,是一種性格缺陷
? ? ? ?大膽的放棄一些東西吧,有失才有得,把自己有限的、寶貴的精力用在對于就業直接相關的地方,這才是最有效率的學習方式!等你參加工作,有了可持續發展的事業動力和經濟基礎,有時間有精力閑的沒事兒干的時候,再去研究那些其它吧。
曾經有一個故事,說得是產能和產量的關系。
? ? ? ?一個人喜歡讀書,讀了一輩子,無所不通,這時候要做任何工作都可以,他的產能到了極致,但是,他老了,即便每天產出大量的東西也不能維持多久了,一輩子的產量并沒有多少。另一個人直接工作,忙,天天在機器旁日復一日,做了一輩子,沒時間學習和進修,可以想象,產量能有多大呢。
? ? ? ?人的一生,要鍛煉產能,也要及時產出,引擎要轉,也要停下來加油,這兩者平衡的越好,你的貢獻和產量就會越大。如果鉆研的東西和產能目標(或者說近期的產能目標)無關的話,要舍得放手。
? ? ? ?所以,對于SWING,暫時先扔在一邊吧。對于shell,對于各種協議過于詳細的細節,對于喜歡的游戲編程,對于javascript各種華而不實的效果,都暫時和它們分別吧。一切和我們的直接工作目標關聯不大的東西,扔在一邊或者弄清楚到足夠支持下一步的學習就可以了。 {能否把這種工作目標換成其他的東西呢?}
那這樣豈不是妨礙我成為通曉各種細節的高手了嗎?
? ? ? ?我一向不認為一個人掌握了很多很多知識點的細節就是高手了,一個人如果告訴你,回字有四種寫法,你會認為他是高手嗎? 毫不客氣的說,現在我們所教授的所有知識細節在網上或書中都可以找到,只要你肯花時間花精力去動手試,去鉆研,沒有什么不能掌握的。struts、spring你能掌握嗎?當然能!但是如果把時間花在spring的各種細節的研究上,花在研究中國企業應用不廣泛地的spring mvc上,這個精力就太浪費了,而且學習的積極性會受到打擊,誰愿意整天泡在細節的蜘蛛網中掙扎不出來呢?誰愿意天天經歷風雨卻總是不能見到彩虹呢?
? ? ? ?蓋房子,要先建骨架,再談修飾。畫山水,要先畫結構,再談潤色。
? ? ? ?認識一臺結構復雜的機器,應該首先認清楚脈絡,然后再逐步認識每一個關節。
? ? ? ?為了應付從小學到大學的考試,我們背了各種各樣的不應該提前掌握的細節,同時也養成了見到細節就摳的學習習慣。而現在,是到改改的時候了。
請在合適的時間,做合適的事情吧。{Do Forward!Think Forward!Sanely!}
? ? ? ?把時間和精力花在作項目上面,花在寫作品以及鍛煉解決問題的能力上面吧,這是邁向高手的正確的而且快速的方向。
? ? ? ?我一直不認為一個課程提供了很多很多的細節就是優秀的價值高的課程了,掌握必要的細節,這個不含糊,至于其他,或者通過視頻給出(這樣可以給出更多的細節,但是不占上課時間,課上只講重要的、必要的細節知識),或者在掌握了自學的能力后自己能夠查出,這才是正途。
? ? ? ?當你看書到某個地方暫時不理解的時候的,暫時放手吧,追求一些行云流水、自然而然的境界吧,只是不要停下前進的腳步,不要被大路旁邊的支根末節干擾了你前進的行程,項目,真實的項目,這才是目的,就在不遠的前方。
陶淵明讀書,叫做“不求甚解”,但他是大詩人。
諸葛亮讀書,總是“觀其大略”,但他是大政治家。
作研究的,是在確定了方向之后才詳細的研究深入的東西。
到了廬山,脈絡形狀扔在一邊,盯著一棵棵小草、一粒粒石子的看,怎么樣才能識得“真面目”?
? ? ? ?作為應用型的人才,是研究回字的n種寫法還是抓緊時間向著主要應用的方向努力,請自己作出抉擇。
以項目驅動自己的學習吧,當把握了技術的脈絡之后再去補充細節的研究,是正途。這輩子就不研究其他的方向了嗎?當然要研究!但是在將來合適的時間再說吧。
所以,抓大放小,要事為先!
JAVA自學之路 五: 問題解決之道既然是學習,就不可能不遇到問題。
既然是自學,就沒有方便的和老師探討的機會。
? ? ? ?那么,遇到問題之后,環境配不通,程序調不過,運行不正常,遇見這些惱人的問題的時候,該怎么辦呢?
首先我要恭喜你,遇見問題,意味著你又有漲經驗的機會了,每解決一個問題,你的JAVA經驗值就應該上升幾百點,問題遇到的越多,知識提升的越快。 但是總是解決不了也是很惱人的,怎么辦呢? 我一般要求我們的學生都是這樣來進行的。
當你遇到一個問題的時候:
1:要仔細的觀察錯誤的現象,是的,要仔細? ? ? ?有不少同學的手非常快,在編譯一個程序的時候,報了一大堆的錯誤,掃了一眼之后就開始盯著代碼一行一行的找,看清什么錯誤了嗎?沒有!有的時候安裝軟件出問題了,一個對話框彈出來說出錯了,馬上舉手問老師:“不得了了,出錯了,出錯了”。
“什么錯誤?”
“還沒看呢?”
? ? ? ?這都是典型的不上心的方法!請記住,學習編程并不是一件很容易的事情,自己首先要重視,要用心才可以。在開發中,仔細觀察出錯信息,或者運行不正常的信息,是你要做的第一件事。讀清楚了,才能在以后的步驟中有的放矢,哭了半天,總要知道哭的是誰才成。
這里又分三種情況:
A:錯誤信息讀懂了,那么請進入2步:要仔細思考問題會出在哪些環節
B:沒讀懂,愣是一點沒看懂,進入第4步吧:google
C:讀了個半懂,有些眉目但是不太能確定,第2步和第4步結合著來。
2:要仔細思考問題會出在哪些環節(重要)? ? ? ?當你讀懂了一個問題之后,要好好的思考這個問題可能會在哪些環節上出錯。
一輛汽車從總成品線上下來,車門子關不上! 哪錯了?你怎么查? 當然是順著生產線一站一站的查下來。 程序也是一樣的,也是一系列語句完成后產生的結果。
? ? ? ?寫一個網絡程序,總是發現服務器端打印不出接收的數據,有幾個環節會出錯?仔細分析這個現象的環節:
客戶端產生數據->按“發送”按鈕->發送到服務器->服務器接收到后打印
這幾個環節都有可能會出錯:
? ? ? ?有可能客戶端根本就沒產生數據,有可能發送按鈕按下去后根本就沒發出去,或者發出去的不是你產生的東西,或者根本就沒連接網絡,或者發送出去服務器沒有接收到,或者接收到之前就打印了等等等等。
? ? ? ?學著去這樣仔細的分析程序的環節和這些環節可能會產生的問題,你的經驗值定然會大幅度快速的提升,這樣做很累人,但是一件事情如果做下來一點都不累的話,這個東西還有價值嗎?
? ? ? ?在網頁A輸入了一個人的名字,提交到B,首先存儲到數據庫,然后再讀出來,發現亂碼!怎么辦?當然是分析環節:
客戶輸入->HTTP發送->B接收->存儲到數據庫->讀出->展現到網頁
每個環節都可能出問題,怎么才能知道哪里出的問題?繼續往下讀。
3:如何定位錯誤(重要)分析清楚有哪些環節之后,下一步就是定位到底什么環節出錯了。定位有以下三種辦法:
A 打印輸出,比如java的System.out.println(),比如js的alert(),這種辦法常用,必須掌握
B Debug,可以參考我們的視頻《坦克大戰》,詳細講了Eclipse的調試。
C 刪掉一部分調試一部分,也就是去掉一部分的功能,做簡化,然后調試剩下的功能,JSP和JavaScript常用。
4:如果還不行,google吧? ? ? ?還查不出來?恭喜你,你遇到的錯誤是值得認真對待的錯誤,是會影響你學習生涯的錯誤,問一下google或者百度吧。照著下面的方法查查看。
? ? ? ?一般來講,搜索引擎可以搜到各種知識點,我曾經跟同學們開玩笑說:“學會了怎么google或者baidu,其實沒必要跟老師學了,自己全都搞懂了,尚學堂是沒必要來的。”當然,只是玩笑,培訓的作用有三個:
A:系統化知識
B:真實項目鍛煉經驗
C:少走彎路,節省時間
不知不覺開始做廣告了,請原諒,處其位謀其事,總得為尚學堂說點什么:)
言歸正傳,如何查搜索引擎?
? ? ? ?先精后粗,首先先進行盡量精確的查找,比如一個錯誤,SocketException,你懷疑它是在connect()方法出的問題,那么當然是選這樣的關鍵詞java connect SocketException
? ? ? ?先中后英,本著以解決問題為主的想法,練習英文還是先放在一邊吧,首先應該在中文網頁中查詢,還不行的話,搜索英文的吧,最近的尚學堂課程中會帶大家閱讀英文的書籍。有很多東西就像一層窗戶紙,遠看灰蒙蒙怪唬人的,你壯著膽子一捅,它就破了。閱讀英文的書籍就是如此,不是想象中的那么困難:)寧可在沙場上戰死,也不能被嚇死不是嗎:)
? ? ? ?信息篩選,搜索出來的結果不見得能夠完全匹配,建議大家多閱讀前幾頁的搜索結果,多打開幾個網頁看看,不過,我的經驗是超過3頁一般就沒意義了,所以超過3頁還沒有找到合適的答案,或許應該調整一下關鍵詞,或者放粗整個搜索的結果了。
? ? ? ?經常的進行知識難點的查詢,如果一個問題牽扯的面比較廣,就干脆到網上搜索一些相關的專題,比如“java 亂碼 mysql” “oracle 創建用戶”等等,如果有必要,不要犯懶,勤動手寫一些小小的測試程序,來弄明白知識點的細節。這也是漲知識的重要的途徑。
5:什么?還不行?那么就BBS吧如果實在還不行,就到BBS上面問一問高手吧。 到哪個BBS上?
google或者百度不就行了么?關鍵詞“java論壇”“javabbs”
? ? ? ?然后在搜索結果里好好的看看那些活動頻繁的論壇,以后就是你經常光顧的地方了。CSDN論壇首頁就很不錯。
向別人提問是非常需要技巧的!
? ? ? ?曾經有人問我這樣的問題:“請問如何才能學好java呢?”這個要求太泛泛了。還有人給我一段代碼甚至jar包也寄過來,然后說老師的我的代碼中有個錯誤您幫我查查。
? ? ? ?我沒有辦法去花大量的時間建立環境去調試一個還不知道存在不存在的錯誤!
? ? ? ?還有人在BBS上問這樣的問題:“是否有人能幫我完成一個完整聊天的程序?請幫我寫一個登陸模塊吧!”
? ? ? ?這個要求有些過分了,有人幫你做是你的運氣,沒有人幫你是正常反應。
? ? ? ?向別人提問,應該首先確定你已經做了自己應該做的事,簡單說是我前面列舉的1,2,3,4步你都作過了,然后再求助于人。不要沒有經過認真思考就草率的向別人提問,自己也不會有長足進步的。
那我該怎么樣向別人提問呢?
? ? ? ?在google或百度搜索《提問的智慧》,你會找到答案。
? ? ? ?在這里我給出一個鏈接http://community.csdn.net/IndexPage/SmartQuestion.aspx,磨刀不誤砍柴功,先花點時間去閱讀一下吧。
? ? ? ?得到別人的回答,要懂得感恩。不需要去寫信感謝,不需要支付費用,不需要那些花言巧語,做到下面這一點就夠了:
? ? ? ?當你逐步成為高手的時候,要回答別人在論壇上提出的問題,有時間有精力的前提之下!
? ? ?6:還解決不了?問老師吧,這個只能是在你參加了培訓的前提下了。 ? ? ?7:還解決不了?天哪,是不是思路從根上就搞錯了?寫信給我,讓我也學習一下,共同進步吧。 JAVA自學之路 六: 項目的自學? ? ? 現在就業競爭的激烈程度已經遠遠高于當年了,記得我當年畢業時,一個會編程的畢業生站到臺上,大聲問道:“我會ASP,月薪5000有沒有人要?” 臺下的企業馬上嘩的舉起一大片手:"我要我要!"。那時,沒有任何項目經驗也會有人提供學習的機會。這種好日子恐怕一去不復返了(有些夸張,但無疑當時找一份不錯的工作是比現在要容易的多)。
? ? ? ?而現在,即便是各種必要的知識你掌握的差不多了,但還有一座大山橫在你的面前,那就是——項目經驗。
有經驗的程序員都知道,學習編程的最有效率的方式,恐怕就是把你扔到一個項目組,連滾帶爬的做下一兩個項目來,你馬上會發現所有的知識點全都連到一起了,不再是分散的,而是形成一個整體了。那種感覺是僅僅深入鉆研知識點而不寫真實項目的人所不能體會的。一個項目就是一根繩子可以把大片的知識串到一起。
如果想鍛煉實際開發的能力而不僅僅是背誦或者了解一些知識點,如果想成為真正的好手而不僅僅是背誦“回”字有幾種寫法,那么,作項目吧!
? ? ? ??目前,各種編程的知識點變得越來越容易掌握,按照JAVA自學之路 五:問題解決之道中的各種辦法也可以逐步積累自己知識的廣度和深度,那現在什么才能夠體現水平的不同?當然是項目經驗。
? ? ? ?目前,尚學堂的課程已經超越了知識點的研究和羅列,我們將在未來的時間里逐步公布各個知識點的視頻,包括SSH、EJB等,這樣做有兩個好處:首先自學的同學可以免費得到原來商業培訓的內容,這樣起碼可以節省一些時間,省一些力氣。其次尚學堂自己可以更加專注于項目上。
? ? ? ?目前尚學堂的項目寫作占了課程50%左右的比重,尚學堂的項目也早已經超越了簡單的MIS系統的概念,逐步的成為綜合了搜索引擎、工作流、SCA/SDO、Linux/UNIX、大型數據庫系統、設計模式、架構模式、負載均衡等各種深層應用的綜合大型項目并且采用手把手式的教學方法,做的更加的深入和細致,從現在看效果相當好,最近142班的就業就完全證明了這一點(了解142的就業情況),我們的計劃是最近逐步將項目比重提升到70%以上,相信效果會更好。簽于公司的規定,我們并不能將所有的項目實戰都錄制成視頻來公布,但是已經公布的項目實戰也是非常的有價值的:(【官網】北京尚學堂-[cctv央視網合作伙伴],IT培訓,首選尚學堂,JAVA培訓、Ios培訓、android培訓、大數據云計算 0元入學先就業后付款,平均9500元以上)
1:Chat & Tank系列
2:BBS
3:Shopping(近期公布)
? ? ? ?那么如果自學我們應該怎么樣才能學習項目的開發呢?一個比較有效的辦法是,可以在現有項目的基礎上做的更深入一些,比如在你按照視頻完成了BBS之后,可以增加一些其他的功能,例如注冊/積分/精華/搜索/貼圖等等,在完成了Shopping之后,可以增加一些評論/排行/統計/存貨等等方面的業務邏輯,嘗試用自己的技術將他們作出來,這樣既積攢了項目經驗,又記住了知識點。
? ? ? ?那么如何才能確定我要寫什么樣的業務邏輯呢?應該講這對于一個初學者是非常困難的,一些簡單的系統,比如說BBS、Shopping、圖書管理等等,它們的業務邏輯很容易確定,去瀏覽和參考一些現成系統的功能,很容易就能了解了。但是對于商用的大型系統,光是了解業務邏輯本身就會花費大量的精力,如果有時間有精力有財力的話,還是建議考慮一下我們的培訓吧,這樣經驗的積累和薪水的提升會更快,從以前的統計數據看非常容易就可以回收這筆投資(替尚學堂的廣告,必須得寫,請見諒,但保證真實)。如果條件不允許,那么就按照上面的方法來學習項目吧,不要因為暫時不能接觸更大型更深入的項目而氣餒,記住:機會總是青睞有準備的頭腦,努力吧。
? ? ? ?下面給出第二節JAVA自學路線圖中知識點的明細:
一:J2SE面向對象-封裝、繼承、多態 內存的分析
遞歸 集合類、泛型、自動打包與解包、Annotation
IO 多線程、線程同步
TCP/UDP AWT、事件模型、匿名類
正則表達式 反射機制
二:數據庫(Oracle或者MySQL)SQL語句 多表連接,內外連接, 子查詢等
管理表、視圖、索引、序列、約束等 樹狀結構存儲
存儲過程、觸發器 數據庫設計三范式、
三:JDBCJDBC基礎 連接池
樹狀結構存儲與展現 DataSource& RowSet {看有視頻}
JDBC連接Oracle及MySQL
四:HTML_CSS_JAVASCRIPThtml、css、javascript基礎語法 JavaScript Form判斷
Dom編程基礎(事件處理等) JS常用效果如TreeView、下拉聯動等
JS學習方法 JS調試方法
DreamWeaver初步(建立HTML、Table、Form、CSS)等
五:Servlet & JSPtomcat基礎 servlet基礎
web.xml配置基礎 web application的結構
servlet生命周期 requestresponse等常用方法
ServletContext類 HTTP協議基礎(GET POST)
Cookie Session Application
JSP的幾種語法(包括JSTL等)注意在項目中練習,不要拘泥于語法細節而裹步不前。
六:Struts多層架構理論 Model1 and Model 2
Struts基本概念 MVC
Action與業務邏輯類的關系 在Struts與JSP之間傳遞數據
Struts處理流程(控制流) StrutsTagLib(了解常用的)
JSTL ActionForm
字段收集 上傳文件
類型轉換 DTO
動態Action Form 驗證框架
ActionForward轉發與重定向 動態生成ActionForward
全局與局部的ActionForward ActionForward Scope
UnknownActionMapping Action的線程安全
I18N 如何切換語言環境
Struts異常處理機制 程序處理 自動處理 自定義異常處理器
Struts的多模塊配置
七:XML(XML/XSL、XSLT/DTD、SCHEMA等基礎的概念、關于Java的編程可以暫時扔在一邊)
八:HibernateORMapping原理
Hibernate基礎開發步驟
Hibernate基本接口(重點Session)
普通屬性映射
關聯關系映射
NativeSQL
inverselazy cascade
繼承關系映射
HQL
性能優化 一級緩存 二級緩存 查詢緩存
事務與并發 悲觀鎖、樂觀鎖
OpenSessionInView
CurrentSession
(至于JTA、聯合主鍵、自然主鍵、動態主鍵、Any類型 Creteria QueriesIntercepter and Event 自定義類型等,可以暫時扔在一邊)
九:SpringIOC/DI
Spring配置
Spring架構
AOP及Spring AOP
聲明式事務(AOP)
Spring+ Hibernate Spring支持Web
Scope
(其他的Spring模塊對于自學來說可以暫時扔在一邊)
十:EJB3.0J2EE架構基礎(JTA JMS等)
EJB基礎(地位及基本理論、分類等)
Annotation
Ant編譯與部署EJB
SessionBean
EJB的依賴注入
PersistenceAPI
(可以用JBoss學習EJB3.0)
十一:至于SOA,對于自學的同學來說,暫時不用特別關注。? ? ? ?梳理一下,你就會發現東西不是想象中的那么多呀!
? ? ? ?建議大家優先學習我們公布的視頻,然后再去找參考書,因為這個時候就能分辨出來哪些書適合你了。
? ? ? ?那么,如何才能找到好書呢?一個簡單的辦法,在賣書的網站上,比如china-pub網上書店,搜索你想了解的知識點比如"javascript",按銷售排行,排在前幾位的,應該就是不錯的,記下書名,到書店閱讀幾章,合適你的就是好書了。沒錢買?簡單!還有什么google+ 電驢找不到的資料嗎?
___________________________________________________________________________________________________________________________________
給了雞湯,再遞上一把勺子,文中提及的所有知識點,馬士兵都做了相應的視頻,手把手教你,個人也覺得非常的好用。
鏈接:http://www.zhihu.com/question/19945685/answer/37686785
來源:知乎
1:要仔細的觀察錯誤的現象,是的,要仔細
2:要仔細思考問題會出在哪些環節(重要)
3:如何定位錯誤(重要)分析清楚有哪些環節之后,下一步就是定位到底什么環節出錯了。?
4:如果還不行,google吧.
5:什么?還不行?那么就BBS吧
6:還解決不了?問老師吧,這個只能是在你參加了培訓的前提下了。
7:還解決不了?天哪,是不是思路從根上就搞錯了?寫信給我,讓我也學習一下,共同進步吧。?
總結
以上是生活随笔為你收集整理的如何自学java(男神马士兵戒言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 盘点:2019年好用的设备管理系统软件,
- 下一篇: 中国智慧菜场行业典型案例