java 學習方法 5

JAVA自學之路 五:問題解決之道
[轉載請註明出處:http://www.bjsxt.com/zixue/zixuezhilu_1.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]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章