天天看點

JAVA自學之路 六:項目的自學

JAVA自學之路 六:項目的自學 [轉載請注明出處:http://www.bjsxt.com/zixue/zixuezhilu_1.html]

現在就業競争的激烈程度已經遠遠高于當年了,記得我當年畢業時,一個會程式設計的畢業生站到台上,大聲問道:“我會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自學之路 七:路線圖明細 [轉載請注明出處:http://www.bjsxt.com/zixue/zixuezhilu_1.html]

下面給出第二節《JAVA自學路線圖》[http://www.bjsxt.com/zixue/zixuezhilu_2.html] 中知識點的明細:

特别提示 1:下面大多數的知識點我們已經公布了視訊或者會近期公布(幾個月之内),請大家關注一下這個網址http://www.bjsxt.com/download.html,可以按照該頁面的提示,用電驢進行下載下傳

2:這裡是為友善大家自學給出的清單,請大家不要同尚學堂的課程畫等号,下面的内容要比實際授課簡單很多,另外很多知識是融彙在項目開發中的,适合面授,不适合自學。

一: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 + 電驢找不到的資料嗎:)

寫了這麼多,有一些是廣告,在其位,謀其政,但并沒有講假話,還望大家了解,如果大家在自學的過程中有什麼問題的話,可以寫信給我[email protected]或者[email protected],我願意随時聆聽大家的教誨。

如果是技術問題,記得首先要閱讀《JAVA自學之路 五:問題解決之道》哦 :) [原創 - 尚學堂科技 - 馬士兵老師]

JAVA自學之路 五:問題解決之道 [轉載請注明出處:http://www.bjsxt.com/zixue/zixuezhilu_3.html]

既然是學習,就不可能不遇到問題。

既然是自學,就沒有友善的和老師探讨的機會。

那麼,遇到問題之後,環境配不通,程式調不過,運作不正常,遇見這些惱人的問題的時候,該怎麼辦呢?

首先我要恭喜你,遇見問題,意味着你又有漲經驗的機會了,每解決一個問題,你的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常用。可以參考我們的視訊《BBS》等

這些我說的比較簡單,詳細了解的話請關注以下我們的視訊吧,在近期會逐漸的将一些知識點的視訊 進行免費的公布,http://www.bjsxt.com/download.html

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:還解決不了?天哪,是不是思路從根上就搞錯了?寫信給我,讓我也學習一下,共同進步吧。[email protected]na.com

JAVA自學之路 六:項目的自學 [轉載請注明出處:http://www.bjsxt.com/zixue/zixuezhilu_6.html]

現在就業競争的激烈程度已經遠遠高于當年了,記得我當年畢業時,一個會程式設計的畢業生站到台上,大聲問道:“我會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、圖書管理等等,它們的業務邏輯很容易确定,去浏覽和參考一些現成 系統的功能,很容易就能了解了。但是對于商用的大型系統,光是了解業務邏輯本身就會花費大量的精力,如果有時間有精力有财力的話,還是建議考慮一下我們的 教育訓練吧,這樣經驗的積累和薪水的提升會更快,從以前的統計資料看非常容易就可以回收這筆投資(替尚學堂的廣告,必須得寫,請見諒,但保證真實)。

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