我的Java踩坑之路

陸陸續續學Java也快一年多了,從開始的一竅不通到現在的初窺門徑,我努力過,迷茫過,痛過,樂過,反思過,沉淀過。趁著新年,我希望能把這些東西記下來,就當是我一路走來的腳印。

一、初識網站應用

記得第一次接觸Java,是寫一個小網站,當時用servlet+tomcat做服務端,數據庫是mysql。那時我對于網站應用的概念一片空白,之前接觸的都是C++和MFC寫桌面程序。我花了一周時間看完了《java servlet programming》這本書,然后我就開始寫代碼了。但是,真的當我寫代碼的時候,我卻發現無從下手,因為那本書講的很細,對于系統學習servlet很有幫助,但要想迅速建立一個demo,卻并不是太適合。于是,我去找了本國人寫的書,前面是理論,后面有一些小小的項目。我就照著某個小例子的代碼寫了一遍。代碼寫完了,tomcat也運行起來了(運行起來的過程中也遇到了大量的坑),用瀏覽器訪問的時候卻偏偏無法訪問,查看tomcat的異常,發現一些類無法加載。去網上查了以后才知道,Java程序和mysql之間通信是需要驅動的。就這樣搞了大概兩天時間,我才把一個最簡單的hello world完成了。搞完hello world只是萬里長征的第一步,即使是做我那個小網站,也只是最開始的開始,后面有無數的坑等著我,我除了踩坑爬坑,別無選擇。

接下來的一周,我花了很長時間去學習html和css,順便繼續開發我的servlet程序,但是,當我學完html和css后,同樣的問題有來了,我無從下手??!我覺得作為一個新人,要想迅速上手一門技術是很難的,除非你有類似技術的開發經驗(比如C#的人去搞Java),你唯一可以做的就是去模仿別人的東西,不斷的寫代碼,不斷的琢磨,然后慢慢變成自己的東西。我當時很絕望,于是上網直接找了套現成的皮膚,然后稍微改改,就作為了我的網站的前端頁面。

前前后后,我一共花了半個月的時間,完成了我的小網站,雖然很丑,雖然漏洞百出,雖然不斷被坑,但是,我還是學到了很多東西:servlet的基礎知識,JSP的基礎知識,Java的基礎語法和常用的類,mysql驅動和JDBC,sql的增刪改查,mysql的DDL語句,html和css的知識,tomcat應用部署和啟動關閉。正是因為這半個月的堅持和努力,讓我第一次獲得了寫代碼的樂趣,也讓我走進了Java的世界。

二、低谷

第一次編寫小網站帶給我的喜悅沒有持續多久,我便陷入了迷茫。那時的我,并不知道Java是什么,它可以干些什么。我在圖書館逛了很久,也在網上找了很多資料,漸漸的知道了Java的兩大體系:Java SE和Java EE,其中Java SE是開發Java程序的基礎,Java EE是企業級開發。當時,我對Java SE只是停留在Java語法的基礎上,并沒有去了解JDK的龐大體系,而對Java EE也只是停留在servlet+jsp的層次,至于對于大量中間件、分布式應用等等則完全沒有概念。一個人的眼界決定了他的走多遠。接下來的一個月,我花了大量時間去學習servlet、jsp、jdbc,還把EL標簽和JSTL標簽也學完了。通過使用這些技術,我又做了幾個小網站,那時的我覺得自己是多么的牛逼(現在看其實很傻比),也漸漸驕傲起來,覺得Java EE不過如此,這也導致了我接下來的一段時間幾乎沒有在去碰過網站技術。

也就是在那段不碰網站技術的日子里,我買了本書,叫《Java典型模塊精解》。那時的我覺得那上面的東西都很高大上,什么電子相冊模塊,郵件發送模塊等等。于是,我花了大概半個月的時間去模仿里面的代碼,可是模仿來模仿去,我始終覺得自己的技術沒有什么大的提高,唯一的提高就是了解了Java swing。我甚至發現,這些所謂的模塊,其實都是類似的結構,swing作為程序顯示部分,后臺邏輯要么是操作數據庫,要么是使用一些輔助工具(比如Java的郵件發送工具 Java mail),而且,swing的庫實在太大,模仿了半天,要想自己寫個程序出來,最后還是得去看書。就這樣,沒多久我就對這本書不感興趣了。

三、基礎!基礎!

對待技術就像對待妹子,相處久了會膩,離開久了會想,即使你表面不承認。

我重拾Java是個不經意的選擇,那時我只是恰好碰到本Java的書,于是隨便翻翻,沒想到越翻越來勁。以前我學Java,都是用到那就學到那,這一次,我決定系統學習Java,特別是Java的基礎知識。我找了本Java的基礎教材,從語法開始重新學起,到面向對象,集合框架,I/O,網絡,數據庫等。我把每個例子都敲了一遍代碼,花了大概一個禮拜的時間,過了一遍書。

說實話,過一遍書還是有好處的。過了一遍之后,以前用過的東西會覺得好理解了很多,以前沒用過的東西,則大概有個印象,但和我心中的預期還是有很大的落差。我以為過了一遍書,我就能把Java的基礎知識都掌握了,但我畢竟圖樣圖森破啊。我很失落,也開始反思,我覺得這一定是書的問題,不是自己的問題,于是,我求助于網友。網友都推薦《thinking in Java》,我也很天真的買了這本書,開始啃。啃著啃著發現,很多代碼能看懂,但作者寫的話就是不理解,啃再多遍都是一樣的結果。我后來才知道,對技術的理解,必須建立在自己的閱歷之上,常讀常新,不是同一時間讀一百遍會有一百種感受,而是每年讀一遍會有不同的理解。

四、框架

框架是一個好東西,它將我帶出了servlet體系,把我帶進了一個更為廣闊的天地:開源世界。

第一次使用框架是參加一個創新比賽,我學習并使用了struts2、spring和iBATIS這三個框架,俗稱ssi。后來我一發不可收拾,先是用框架開發了幾個web應用,然后借了struts2和ibatis的書閱讀,把這兩個框架用的十分熟練。這些技術也讓我有能力去接一些小型的網站項目,雖然掙不來太多的錢,但它所帶來的成就感卻不是錢能夠衡量的。這種成就感也驅使我去接觸其他開源項目,比如說hibernate、Lucene、netty等。

開源框架在很長時間內都是我心目中Java的終結,我一直以為學會Java就是學會使用這些開源框架,但是,我錯了。我發現我錯的時候,是在我第一次看開源框架源代碼的時候。開源框架的復雜代碼讓我感到震驚和恐懼,我認識到我是有多么的無知。會使用開源框架和會使用servlet有什么區別?都是打字員干的活??!創造這些框架的人,才是真正的程序員!

框架給我帶來的是更廣闊的世界,但卻讓我更加迷茫,就像一只剛會飛翔的海燕,面對狂風暴雨的大海,內心充滿的是敬畏和恐懼。

五、教學視頻

如果我在一開始就去看教學視頻,而不是自己摸索,我會少踩很多坑。

我遇到網絡上的教學視頻的時候,我已經對Java有了一定的基礎了,但我還是花了很多時間去看視頻。從Java基礎,到多線程、俄羅斯方塊游戲開發、ssi框架視頻、mysql視頻、前端視頻、jdbc高級視頻、Java web、EJB、電子商務網站項目等等。這些視頻對我的幫助的確很大,它們幫我把以前零零散散學習的知識在短時間內串了起來。但是無論看多少視頻,我的水平都沒有發生質變,因為錄視頻的老師的水平,不足以讓我產生質變。我始終相信,高手無法量產,一流的高手都是自學成才。教學視頻僅僅是編程世界入門的通信證,而不是編程世界的終結。

六、面向對象和UML

開源框架源代碼雖然可怕,但那也是人寫出來的。

我最終還是下定決心去看源代碼。當時選擇的第一份閱讀材料是iBATIS中使用的DBCP中使用的commons-pool。雖然commons-pool就區區幾十個類,但是這些類結合在一起,卻十分復雜。我嘗試去理解代碼,但看著看著就看不懂了,最后不得不放棄。后來我又試了好幾次,都以失敗告終。那時的我真的很痛苦,天花板看到了,可就是打不破,而安于現狀又不甘心。直到有一天,我遇到了UML,我遇到了類圖和序列圖,我看到了有人使用這些圖來分析源代碼,面對這些分析我也第一次有點理解面向對象的精髓。于是,我嘗試著使用類圖和序列圖去分析commons-pool,將靜態的繼承層次以及類與類之間的關聯關系表達出來,將動態的程序調用順序給畫出來,就這樣,我竟然理解了commons-pool的內部實現原理。我知道,我突破了這塊天花板,我也知道,我接下來要面對的,是更復雜廣闊的開源世界!后來,我又把DBCP和iBATIS的代碼分析了一遍,收貨頗豐。

七、尾聲

未來的路一定是自己走的,但好的東西可以分享,俗話說它山之石可以攻玉,這也是我開博客的原因之一。希望在新的一年里,我能夠多分享一些有意思也有意義的東西,和所有熱愛技術的人一起成長。


備注:這是我兩年前的心路歷程,原文發表博客園,現在原封不動轉過來

版權印為您的作品印上版權

獲取授權

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,765評論 25 708
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,737評論 18 399
  • 本文內容 問題描述 問題分析 解決方法 問題描述 希望通過 Python 批量創建 ARM 虛擬機,并且在虛擬機命...
    ITknight閱讀 252評論 0 0
  • 等你,在雨中 等你,在雨中,在造虹的雨中 蟬聲沉落,蛙聲升起 一池的紅蓮如紅焰,在雨中 你來不來都一樣,竟感覺 每...
    閱簡上書閱讀 108評論 0 0