天天看點

馬士兵_JAVA自學之路

JAVA自學之路 一:學會選擇

為了就業,不少同學參加各種各樣的教育訓練。

決心做軟體的,大多數人選的是java,或是.net,也有一些選擇了手機、嵌入式、遊戲、3G、測試等。

那麼究竟應該選擇什麼方向呢?

我的意見是,不要太過相信各種教育訓練機構或是搶手文章的說法(包括我),當你要走向社會的時候,就不要再把自己當成學生,不要把自己的将來交給别人,學會運用自己的眼睛去觀察,去了解這個世界吧。

每個教育訓練機構都會宣傳自己的好處,并不能說明大的趨勢。

一些新聞文章很有可能是槍手寫的,不必太過相信。

國外背景的教師和課程,未必适合你。

那麼怎麼才能确定自己将來的方向?如何才能從紛繁複雜、或真或假的資料世界中挖出一條路?

我講一個通過招聘網站的觀察方法。

可以到各種招聘的網站上查詢資訊(可以到google上查詢招聘的網站),例如:

http://www.51job.com

http://www.chinahr.com

http://www.zhaopin.com

以及csdn的招聘頻道等

還有一個網站也不錯,http://www.jobui.com,綜合了各大招聘網站的資料。

這些資料都是最真實不摻假的原始資料,你可以每隔一段時間搜尋一次,一些規律就會被總結出來了。

比如說我在http://www.jobui.com中搜尋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自學路線圖

有不少的同學發信給我,和我探讨java的自學過程應該是什麼樣的,畢竟有很多人因為各種各樣的原因不能參加教育訓練。我試着給出自己的見解,抛磚引玉吧。

這個路線圖是給那些為了就業的人準備的,如果隻是興趣,不一定照這個走。

這裡隻是講了路線圖,關于路線中的各個階段,學到什麼程度,如何學習等,可以參考後面的JAVA自學之路 七:《路線圖明細》。

首先要學JavaSE,這是無庸置疑的。

與此同時,是的,與此同時,和JavaSE的學習同步,建議大家研究一下資料結構與算法。

在這兒之後,你可以選擇向J2ME、或者Java GUI、Socket程式設計等方向努力,但是通過第一篇的辦法,你可以很容易就将這方向過濾掉(永遠不要忘了我們是為了就業),好吧,暫時和它們訣别,還是向着J2EE的方向前進吧。

在JavaSE完成之後,可以試着完成一些小項目,同時關注一下設計模式的内容,不必強求自己能夠完全掌握各種細節,往前走吧。

掌握一種程式設計工具,比如說Eclipse。

資料庫,可以選擇使用Oracle或者MySQL開始

。 JDBC,用Java連接配接資料庫。

可以選擇在這個地方切入Hibernate,也可以選擇在Struts

之後。 HTML CSS JavaScript,這些東西是做web項目必需的内容

。 Servlet JSP,伺服器端必需。

XML AJAX,新的流行趨勢不能不了解。

作一些小項目吧。比如BBS、留言系統、學籍管理、商城等等,随便着一些業務邏輯比較簡單的來做一做。 Struts,MVC的典型應用

Hibernate,OR Mapping的典範之作。

Spring IOC + AOP, 面向對象 + 面向切面,完善的旅程。

把以前自己的小項目加入Struts、Spring、Hibernate的元素吧。

去研究各種商業項目的業務邏輯吧,才能在你的履歷中加入濃重的一筆。

EJB3.0,java在走了很多彎路後的回歸之作,值得研究。

SOA,業界鐵定的未來趨勢,要緊緊跟随。

在後面,我會告訴你每一步的學習方法和學習重點。

JAVA自學之路 三:要動手

無論如何,請堅持不懈的動手實驗!學習Java要動手,僅僅是看和聽是不能夠學好程式設計的。總有同學來信問我們這樣的問題,說:”老師我看了視訊了,可是怎麼一動手就沒有任何思路呢?” 對此,我一般都會說不要着急,如果你隻是看了視訊就想行雲流水的話,那老師這些年的鍛煉真是白費了,這麼多年的苦練才能略有些行雲流水的感覺,你一朝一夕就想自己能夠達到,不是太奢侈了嗎:)

作為程式設計的過來人想一下,當年自己學程式設計的時候是什麼時候有思路的呢?至少也是照貓畫虎畫了一段時間之後吧,我本人是在某一個領域畫虎畫了上萬行代碼的時候才慢慢有自己思路的。就像寫作文,要有自己思路總是一般來說要經過幾個階段,首先學習詞彙,然後學習造句,然後大量閱讀别人的文章,自己模仿着寫一些,逐漸的經驗積累,才能形成自己的思路。學程式設計,恐怕也得慢慢的來吧,隻是看一看、聽一聽視訊,是不足以學好程式設計的。

是以,動手吧,跟着做,一行一行的跟着敲,一個項目敲完了,比如坦克,再試着加一些自己的功能,按照自己的思路敲一些代碼,收獲遠比幹聽大的多。

如果遇到,暫時對于一些思路不能了解的同學,我一般都會勸告說,動手寫,先寫代碼,量變會引起質變的。而這種質變的确發生過不少次。

提醒一句,要了解代碼思路之後再跟着敲,背着敲,千萬不要左邊擺着别人的程式,右邊自己一個一個子母的寫,這就不再是程式員了,成了打字員了。

紙上得來終覺淺,是以:别問那麼多,别想那麼多,動手寫吧。

JAVA自學之路 四:要事為先

對待人生的任何事情都要:抓大放小,要事為先

對于一個以前從來沒有接觸過java的人,java無疑是龐大的,似乎每個領域都可以拓展開來都是一片開闊地,每一個領域要想深入接觸到每一個細節所耗費的精力都是巨大的。這個時候大家都胸懷壯志,兩眼發光的盯着每一個嶄新的知識點,遇見了任何一個知識點都恨不得摳的清清楚楚,明明白白。

難道這有什麼不對嗎?

我的意見是,沒什麼大毛病,但是學習效率太低了!我們推薦的學習方式是,抓大放小,要事為先。比如說學習J2SE的時候,學到GUI這一章,有的同學認為,既然學到這兒了,我們去把SWING細細的了解一遍吧;還有的同學,遇到了在Linux下的Shell程式設計,就恨不得把Shell先學成專家才肯,或者是才敢,繼續往下學習;有沒有過這樣的感覺,一本書的上冊沒有學好,覺着下冊心裡也沒底兒,甚至非要把上冊複習一遍才敢繼續學習。如果你也是這樣,要去看看心理醫生啦,沒準兒會有潔癖的毛病:)。

任何事情都要追求完美才敢繼續往後進行,是一種性格缺陷

大膽的放棄一些東西吧,有失才有得,把自己有限的、寶貴的精力用在對于就業直接相關的地方,這才是最有效率的學習方式!等你參加工作,有了可持續發展的事業動力和經濟基礎,有時間有精力閑的沒事兒幹的時候,再去研究那些其它吧。

曾經有一個故事,說得是産能和産量的關系。

一個人喜歡讀書,讀了一輩子,無所不通,這時候要做任何工作都可以,他的産能到了極緻,但是,他老了,即便每天産出大量的東西也不能維持多久了,一輩子的産量并沒有多少。

另一個人直接工作,忙,天天在機器旁日複一日,做了一輩子,沒時間學習和進修,可以想象,産量能有多大呢。

人的一生,要鍛煉産能,也要及時産出,引擎要轉,也要停下來加油,這兩者平衡的越好,你的貢獻和産量就會越大。如果鑽研的東西和産能目标(或者說近期的産能目标)無關的話,要舍得放手。

是以,對于SWING,暫時先扔在一邊吧。

對于shell,對于各種協定過于詳細的細節,對于喜歡的遊戲程式設計,對于javascript各種華而不實的效果,都暫時和它們分别吧。一切和我們的直接工作目标關聯不大的東西,扔在一邊或者弄清楚到足夠支援下一步的學習就可以了。

那這樣豈不是妨礙我成為通曉各種細節的高手了嗎?

我一向不認為一個人掌握了很多很多知識點的細節就是高手了,一個人如果告訴你,回字有四種寫法,你會認為他是高手嗎?毫不客氣的說,現在我們所教授的所有知識細節在網上或書中都可以找到,隻要你肯花時間花精力去動手試,去鑽研,沒有什麼不能掌握的。struts、spring你能掌握嗎?當然能!但是如果把時間花在spring的各種細節的研究上,花在研究中國企業應用不廣泛地的spring mvc上,這個精力就太浪費了,而且學習的積極性會受到打擊,誰願意整天泡在細節的蜘蛛網中掙紮不出來呢?誰願意天天經曆風雨卻總是不能見到彩虹呢?

蓋房子,要先建骨架,再談修飾。

畫山水,要先畫結構,再談潤色。

認識一台結構複雜的機器,應該首先認清楚脈絡,然後再逐漸認識每一個關節。

為了應付從國小到大學的考試,我們背了各種各樣的不應該提前掌握的細節,同時也養成了見到細節就摳的學習習慣。而現在,是到改改的時候了。

請在合适的時間,做合适的事情吧。

把時間和精力花在作項目上面,花在寫作品以及鍛煉解決問題的能力上面吧,這是邁向高手的正确的而且快速的方向。

我一直不認為一個課程提供了很多很多的細節就是優秀的價值高的課程了,掌握必要的細節,這個不含糊,至于其他,或者通過視訊給出(這樣可以給出更多的細節,但是不占上課時間,課上隻講重要的、必要的細節知識),或者在掌握了自學的能力後自己能夠查出,這才是正途。

當你看書到某個地方暫時不了解的時候的,暫時放手吧,追求一些行雲流水、自然而然的境界吧,隻是不要停下前進的腳步,不要被大路旁邊的支根末節幹擾了你前進的行程,項目,真實的項目,這才是目的,就在不遠的前方。

陶淵明讀書,叫做“不求甚解”,但他是大詩人。

諸葛亮讀書,總是“觀其大略”,但他是大政治家。

作研究的,是在确定了方向之後才詳細的研究深入的東西。

到了廬山,脈絡形狀扔在一邊,盯着一棵棵小草、一粒粒石子的看,怎麼樣才能識得“真面目”?

作為應用型的人才,是研究回字的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論壇”“java bbs”

然後在搜尋結果裡好好的看看那些活動頻繁的論壇,以後就是你經常光顧的地方了。http://community.csdn.net就很不錯。

向别人提問是非常需要技巧的!

曾經有人問我這樣的問題:“請問如何才能學好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%以上,相信效果會更好。簽于公司的規定,我們并不能将所有的項目實戰都錄制成視訊來公布,但是已經公布的項目實戰也是非常的有價值的:(http://www.bjsxt.com/download.html) 1:Chat & Tank系列

2:BBS

3:Shopping(近期公布)

那麼如果自學我們應該怎麼樣才能學習項目的開發呢?

一個比較有效的辦法是,可以在現有項目的基礎上做的更深入一些,比如在你按照視訊完成了BBS之後,可以增加一些其他的功能,例如注冊/積分/精華/搜尋/貼圖等等,在完成了Shopping之後,可以增加一些評論/排行/統計/存貨等等方面的業務邏輯,嘗試用自己的技術将他們作出來,這樣既積攢了項目經驗,又記住了知識點。

那麼如何才能确定我要寫什麼樣的業務邏輯呢?

應該講這對于一個初學者是非常困難的,一些簡單的系統,比如說BBS、Shopping、圖書管理等等,它們的業務邏輯很容易确定,去浏覽和參考一些現成系統的功能,很容易就能了解了。但是對于商用的大型系統,光是了解業務邏輯本身就會花費大量的精力,如果有時間有精力有财力的話,還是建議考慮一下我們的教育訓練吧,這樣經驗的積累和薪水的提升會更快,從以前的統計資料看非常容易就可以回收這筆投資(替尚學堂的廣告,必須得寫,請見諒,但保證真實)。

如果條件不允許,那麼就按照上面的方法來學習項目吧,不要因為暫時不能接觸更大型更深入的項目而氣餒,記住:機會總是青睐有準備的頭腦,努力吧。

JAVA自學之路 七:路線圖明細

下面給出第二節《JAVA自學路線圖》中知識點的明細:

一:J2SE 面向對象-封裝、繼承、多态

記憶體的分析

遞歸

集合類、泛型、自動打包與解包、Annotation

IO

多線程、線程同步

TCP/UDP

AWT、事件模型、匿名類

正規表達式

反射機制

2:資料庫(Oracle或者MySQL)

SQL語句

多表連接配接,内外連接配接, 子查詢等

管理表、視圖、索引、序列、限制等

樹狀結構存儲

存儲過程、觸發器

資料庫設計三範式、

3:JDBC

JDBC基礎

連接配接池

樹狀結構存儲與展現

DataSource & RowSet

JDBC連接配接Oracle及MySQL

4:HTML_CSS_JAVASCRIPT

html、css、javascript基礎文法

JavaScript Form判斷

Dom程式設計基礎(事件處理等)

JS常用效果如TreeView、下拉關聯等

JS學習方法

JS調試方法

DreamWeaver初步(建立HTML、Table、Form、CSS)等

5:Servlet & JSP

tomcat基礎

servlet基礎

web.xml配置基礎

web application的結構

servlet生命周期

request response等常用方法

ServletContext類

HTTP協定基礎(GET POST)

Cookie

Session

Application

JSP的幾種文法(包括JSTL等)注意在項目中練習,不要拘泥于文法細節而裹步不前。

6:Struts

多層架構理論

Model 1 and Model 2

Struts基本概念

MVC

Action與業務邏輯類的關系

在Struts與JSP之間傳遞資料

Struts處理流程(控制流)

Struts TagLib(了解常用的)

JSTL

ActionForm

字段收集

上傳檔案

類型轉換

DTO

動态Action Form

驗證架構

ActionForward 轉發與重定向

動态生成ActionForward

全局與局部的ActionForward

Action Forward Scope

UnknownActionMapping

Action的線程安全

I18N

如何切換語言環境

Struts異常處理機制 程式處理 自動處理 自定義異常處理器

Struts的多子產品配置

7:XML

(XML/XSL、XSLT/DTD、SCHEMA等基礎的概念、關于Java的程式設計可以暫時扔在一邊)

8:Hibernate

OR Mapping原理

Hibernate基礎開發步驟

Hibernate基本接口(重點Session)

普通屬性映射

關聯關系映射

Native SQL

inverse lazy cascade

繼承關系映射

HQL

性能優化 一級緩存 二級緩存 查詢緩存

事務與并發 悲觀鎖、樂觀鎖

OpenSessionInView

CurrentSession

(至于JTA、聯合主鍵、自然主鍵、動态主鍵、Any類型 Creteria Queries Intercepter and Event 自定義類型等,可以暫時扔在一邊)

9:Spring

IOC/DI

Spring配置

Spring架構

AOP及Spring AOP

聲明式事務(AOP)

Spring + Hibernate Spring支援Web

Scope

(其他的Spring子產品對于自學來說可以暫時扔在一邊)

10:EJB3.0

J2EE架構基礎(JTA JMS等)

EJB基礎(地位及基本理論、分類等)

Annotation

Ant編譯與部署EJB

Session Bean

EJB的依賴注入

Persistence API

(可以用JBoss學習EJB3.0)

11:至于SOA,對于自學的同學來說,暫時不用特别關注。

梳理一下,你就會發現東西不是想象中的那麼多呀!

建議大家優先學習我們公布的視訊,然後再去找參考書,因為這個時候就能分辨出來哪些書适合你了。

那麼,如何才能找到好書呢?一個簡單的辦法,在賣書的網站上,比如http://www.china-pub.com,搜尋你想了解的知識點比如”javascript”,按銷售排行,排在前幾位的,應該就是不錯的,記下書名,到書店閱讀幾章,合适你的就是好書了。沒錢買?簡單!還有什麼google + 電驢找不到的資料嗎:)

繼續閱讀