我的Java踩坑之路

陸陸續(xù)續(xù)學(xué)Java也快一年多了,從開(kāi)始的一竅不通到現(xiàn)在的初窺門(mén)徑捐韩,我努力過(guò)退唠,迷茫過(guò),痛過(guò)荤胁,樂(lè)過(guò)瞧预,反思過(guò),沉淀過(guò)仅政。趁著新年垢油,我希望能把這些東西記下來(lái),就當(dāng)是我一路走來(lái)的腳印圆丹。

一滩愁、初識(shí)網(wǎng)站應(yīng)用

記得第一次接觸Java,是寫(xiě)一個(gè)小網(wǎng)站辫封,當(dāng)時(shí)用servlet+tomcat做服務(wù)端硝枉,數(shù)據(jù)庫(kù)是mysql廉丽。那時(shí)我對(duì)于網(wǎng)站應(yīng)用的概念一片空白,之前接觸的都是C++和MFC寫(xiě)桌面程序妻味。我花了一周時(shí)間看完了《java servlet programming》這本書(shū)正压,然后我就開(kāi)始寫(xiě)代碼了。但是责球,真的當(dāng)我寫(xiě)代碼的時(shí)候焦履,我卻發(fā)現(xiàn)無(wú)從下手,因?yàn)槟潜緯?shū)講的很細(xì)雏逾,對(duì)于系統(tǒng)學(xué)習(xí)servlet很有幫助嘉裤,但要想迅速建立一個(gè)demo,卻并不是太適合栖博。于是屑宠,我去找了本國(guó)人寫(xiě)的書(shū),前面是理論笛匙,后面有一些小小的項(xiàng)目侨把。我就照著某個(gè)小例子的代碼寫(xiě)了一遍。代碼寫(xiě)完了妹孙,tomcat也運(yùn)行起來(lái)了(運(yùn)行起來(lái)的過(guò)程中也遇到了大量的坑),用瀏覽器訪問(wèn)的時(shí)候卻偏偏無(wú)法訪問(wèn)获枝,查看tomcat的異常蠢正,發(fā)現(xiàn)一些類(lèi)無(wú)法加載。去網(wǎng)上查了以后才知道省店,Java程序和mysql之間通信是需要驅(qū)動(dòng)的嚣崭。就這樣搞了大概兩天時(shí)間,我才把一個(gè)最簡(jiǎn)單的hello world完成了懦傍。搞完hello world只是萬(wàn)里長(zhǎng)征的第一步雹舀,即使是做我那個(gè)小網(wǎng)站,也只是最開(kāi)始的開(kāi)始粗俱,后面有無(wú)數(shù)的坑等著我说榆,我除了踩坑爬坑,別無(wú)選擇寸认。

接下來(lái)的一周签财,我花了很長(zhǎng)時(shí)間去學(xué)習(xí)html和css,順便繼續(xù)開(kāi)發(fā)我的servlet程序偏塞,但是唱蒸,當(dāng)我學(xué)完html和css后,同樣的問(wèn)題有來(lái)了灸叼,我無(wú)從下手I裥凇庆捺!我覺(jué)得作為一個(gè)新人,要想迅速上手一門(mén)技術(shù)是很難的屁魏,除非你有類(lèi)似技術(shù)的開(kāi)發(fā)經(jīng)驗(yàn)(比如C#的人去搞Java)疼燥,你唯一可以做的就是去模仿別人的東西,不斷的寫(xiě)代碼蚁堤,不斷的琢磨醉者,然后慢慢變成自己的東西。我當(dāng)時(shí)很絕望披诗,于是上網(wǎng)直接找了套現(xiàn)成的皮膚撬即,然后稍微改改,就作為了我的網(wǎng)站的前端頁(yè)面呈队。

前前后后剥槐,我一共花了半個(gè)月的時(shí)間,完成了我的小網(wǎng)站宪摧,雖然很丑粒竖,雖然漏洞百出,雖然不斷被坑几于,但是蕊苗,我還是學(xué)到了很多東西:servlet的基礎(chǔ)知識(shí),JSP的基礎(chǔ)知識(shí)沿彭,Java的基礎(chǔ)語(yǔ)法和常用的類(lèi)朽砰,mysql驅(qū)動(dòng)和JDBC,sql的增刪改查喉刘,mysql的DDL語(yǔ)句瞧柔,html和css的知識(shí),tomcat應(yīng)用部署和啟動(dòng)關(guān)閉睦裳。正是因?yàn)檫@半個(gè)月的堅(jiān)持和努力造锅,讓我第一次獲得了寫(xiě)代碼的樂(lè)趣,也讓我走進(jìn)了Java的世界廉邑。

二哥蔚、低谷

第一次編寫(xiě)小網(wǎng)站帶給我的喜悅沒(méi)有持續(xù)多久,我便陷入了迷茫鬓催。那時(shí)的我肺素,并不知道Java是什么,它可以干些什么宇驾。我在圖書(shū)館逛了很久倍靡,也在網(wǎng)上找了很多資料,漸漸的知道了Java的兩大體系:Java SE和Java EE课舍,其中Java SE是開(kāi)發(fā)Java程序的基礎(chǔ)塌西,Java EE是企業(yè)級(jí)開(kāi)發(fā)他挎。當(dāng)時(shí),我對(duì)Java SE只是停留在Java語(yǔ)法的基礎(chǔ)上捡需,并沒(méi)有去了解JDK的龐大體系办桨,而對(duì)Java EE也只是停留在servlet+jsp的層次,至于對(duì)于大量中間件站辉、分布式應(yīng)用等等則完全沒(méi)有概念呢撞。一個(gè)人的眼界決定了他的走多遠(yuǎn)。接下來(lái)的一個(gè)月饰剥,我花了大量時(shí)間去學(xué)習(xí)servlet殊霞、jsp、jdbc汰蓉,還把EL標(biāo)簽和JSTL標(biāo)簽也學(xué)完了绷蹲。通過(guò)使用這些技術(shù),我又做了幾個(gè)小網(wǎng)站顾孽,那時(shí)的我覺(jué)得自己是多么的牛逼(現(xiàn)在看其實(shí)很傻比)祝钢,也漸漸驕傲起來(lái),覺(jué)得Java EE不過(guò)如此若厚,這也導(dǎo)致了我接下來(lái)的一段時(shí)間幾乎沒(méi)有在去碰過(guò)網(wǎng)站技術(shù)拦英。

也就是在那段不碰網(wǎng)站技術(shù)的日子里,我買(mǎi)了本書(shū)盹沈,叫《Java典型模塊精解》龄章。那時(shí)的我覺(jué)得那上面的東西都很高大上,什么電子相冊(cè)模塊乞封,郵件發(fā)送模塊等等。于是岗憋,我花了大概半個(gè)月的時(shí)間去模仿里面的代碼肃晚,可是模仿來(lái)模仿去,我始終覺(jué)得自己的技術(shù)沒(méi)有什么大的提高仔戈,唯一的提高就是了解了Java swing关串。我甚至發(fā)現(xiàn),這些所謂的模塊监徘,其實(shí)都是類(lèi)似的結(jié)構(gòu)晋修,swing作為程序顯示部分,后臺(tái)邏輯要么是操作數(shù)據(jù)庫(kù)凰盔,要么是使用一些輔助工具(比如Java的郵件發(fā)送工具 Java mail)墓卦,而且,swing的庫(kù)實(shí)在太大户敬,模仿了半天落剪,要想自己寫(xiě)個(gè)程序出來(lái)睁本,最后還是得去看書(shū)。就這樣忠怖,沒(méi)多久我就對(duì)這本書(shū)不感興趣了呢堰。

三、基礎(chǔ)凡泣!基礎(chǔ)枉疼!

對(duì)待技術(shù)就像對(duì)待妹子,相處久了會(huì)膩鞋拟,離開(kāi)久了會(huì)想骂维,即使你表面不承認(rèn)。

我重拾Java是個(gè)不經(jīng)意的選擇严卖,那時(shí)我只是恰好碰到本Java的書(shū)席舍,于是隨便翻翻,沒(méi)想到越翻越來(lái)勁哮笆。以前我學(xué)Java来颤,都是用到那就學(xué)到那,這一次稠肘,我決定系統(tǒng)學(xué)習(xí)Java福铅,特別是Java的基礎(chǔ)知識(shí)。我找了本Java的基礎(chǔ)教材项阴,從語(yǔ)法開(kāi)始重新學(xué)起滑黔,到面向?qū)ο螅峡蚣芑防浚琁/O略荡,網(wǎng)絡(luò),數(shù)據(jù)庫(kù)等歉胶。我把每個(gè)例子都敲了一遍代碼汛兜,花了大概一個(gè)禮拜的時(shí)間,過(guò)了一遍書(shū)通今。

說(shuō)實(shí)話粥谬,過(guò)一遍書(shū)還是有好處的。過(guò)了一遍之后辫塌,以前用過(guò)的東西會(huì)覺(jué)得好理解了很多漏策,以前沒(méi)用過(guò)的東西,則大概有個(gè)印象臼氨,但和我心中的預(yù)期還是有很大的落差掺喻。我以為過(guò)了一遍書(shū),我就能把Java的基礎(chǔ)知識(shí)都掌握了,但我畢竟圖樣圖森破啊巢寡。我很失落喉脖,也開(kāi)始反思,我覺(jué)得這一定是書(shū)的問(wèn)題抑月,不是自己的問(wèn)題树叽,于是,我求助于網(wǎng)友谦絮。網(wǎng)友都推薦《thinking in Java》题诵,我也很天真的買(mǎi)了這本書(shū),開(kāi)始啃层皱⌒远В啃著啃著發(fā)現(xiàn),很多代碼能看懂叫胖,但作者寫(xiě)的話就是不理解草冈,啃再多遍都是一樣的結(jié)果。我后來(lái)才知道瓮增,對(duì)技術(shù)的理解怎棱,必須建立在自己的閱歷之上,常讀常新绷跑,不是同一時(shí)間讀一百遍會(huì)有一百種感受拳恋,而是每年讀一遍會(huì)有不同的理解。

四砸捏、框架

框架是一個(gè)好東西谬运,它將我?guī)С隽藄ervlet體系,把我?guī)нM(jìn)了一個(gè)更為廣闊的天地:開(kāi)源世界垦藏。

第一次使用框架是參加一個(gè)創(chuàng)新比賽梆暖,我學(xué)習(xí)并使用了struts2、spring和iBATIS這三個(gè)框架掂骏,俗稱(chēng)ssi式廷。后來(lái)我一發(fā)不可收拾,先是用框架開(kāi)發(fā)了幾個(gè)web應(yīng)用芭挽,然后借了struts2和ibatis的書(shū)閱讀,把這兩個(gè)框架用的十分熟練蝗肪。這些技術(shù)也讓我有能力去接一些小型的網(wǎng)站項(xiàng)目袜爪,雖然掙不來(lái)太多的錢(qián),但它所帶來(lái)的成就感卻不是錢(qián)能夠衡量的薛闪。這種成就感也驅(qū)使我去接觸其他開(kāi)源項(xiàng)目辛馆,比如說(shuō)hibernate、Lucene、netty等昙篙。

開(kāi)源框架在很長(zhǎng)時(shí)間內(nèi)都是我心目中Java的終結(jié)腊状,我一直以為學(xué)會(huì)Java就是學(xué)會(huì)使用這些開(kāi)源框架,但是苔可,我錯(cuò)了缴挖。我發(fā)現(xiàn)我錯(cuò)的時(shí)候,是在我第一次看開(kāi)源框架源代碼的時(shí)候焚辅。開(kāi)源框架的復(fù)雜代碼讓我感到震驚和恐懼映屋,我認(rèn)識(shí)到我是有多么的無(wú)知。會(huì)使用開(kāi)源框架和會(huì)使用servlet有什么區(qū)別同蜻?都是打字員干的活芭锏恪!創(chuàng)造這些框架的人湾蔓,才是真正的程序員瘫析!

框架給我?guī)?lái)的是更廣闊的世界,但卻讓我更加迷茫默责,就像一只剛會(huì)飛翔的海燕贬循,面對(duì)狂風(fēng)暴雨的大海,內(nèi)心充滿(mǎn)的是敬畏和恐懼傻丝。

五甘有、教學(xué)視頻

如果我在一開(kāi)始就去看教學(xué)視頻,而不是自己摸索葡缰,我會(huì)少踩很多坑亏掀。

我遇到網(wǎng)絡(luò)上的教學(xué)視頻的時(shí)候,我已經(jīng)對(duì)Java有了一定的基礎(chǔ)了泛释,但我還是花了很多時(shí)間去看視頻滤愕。從Java基礎(chǔ),到多線程怜校、俄羅斯方塊游戲開(kāi)發(fā)间影、ssi框架視頻、mysql視頻茄茁、前端視頻魂贬、jdbc高級(jí)視頻、Java web裙顽、EJB付燥、電子商務(wù)網(wǎng)站項(xiàng)目等等。這些視頻對(duì)我的幫助的確很大愈犹,它們幫我把以前零零散散學(xué)習(xí)的知識(shí)在短時(shí)間內(nèi)串了起來(lái)键科。但是無(wú)論看多少視頻,我的水平都沒(méi)有發(fā)生質(zhì)變,因?yàn)殇浺曨l的老師的水平勋颖,不足以讓我產(chǎn)生質(zhì)變嗦嗡。我始終相信,高手無(wú)法量產(chǎn)饭玲,一流的高手都是自學(xué)成才侥祭。教學(xué)視頻僅僅是編程世界入門(mén)的通信證,而不是編程世界的終結(jié)咱枉。

六卑硫、面向?qū)ο蠛蚒ML

開(kāi)源框架源代碼雖然可怕,但那也是人寫(xiě)出來(lái)的蚕断。

我最終還是下定決心去看源代碼欢伏。當(dāng)時(shí)選擇的第一份閱讀材料是iBATIS中使用的DBCP中使用的commons-pool。雖然commons-pool就區(qū)區(qū)幾十個(gè)類(lèi)亿乳,但是這些類(lèi)結(jié)合在一起硝拧,卻十分復(fù)雜。我嘗試去理解代碼葛假,但看著看著就看不懂了障陶,最后不得不放棄。后來(lái)我又試了好幾次聊训,都以失敗告終抱究。那時(shí)的我真的很痛苦,天花板看到了带斑,可就是打不破鼓寺,而安于現(xiàn)狀又不甘心。直到有一天勋磕,我遇到了UML妈候,我遇到了類(lèi)圖和序列圖,我看到了有人使用這些圖來(lái)分析源代碼挂滓,面對(duì)這些分析我也第一次有點(diǎn)理解面向?qū)ο蟮木杩嘁S谑牵覈L試著使用類(lèi)圖和序列圖去分析commons-pool赶站,將靜態(tài)的繼承層次以及類(lèi)與類(lèi)之間的關(guān)聯(lián)關(guān)系表達(dá)出來(lái)幔虏,將動(dòng)態(tài)的程序調(diào)用順序給畫(huà)出來(lái),就這樣贝椿,我竟然理解了commons-pool的內(nèi)部實(shí)現(xiàn)原理所计。我知道,我突破了這塊天花板团秽,我也知道,我接下來(lái)要面對(duì)的,是更復(fù)雜廣闊的開(kāi)源世界习勤!后來(lái)踪栋,我又把DBCP和iBATIS的代碼分析了一遍,收貨頗豐图毕。

七夷都、尾聲

未來(lái)的路一定是自己走的,但好的東西可以分享予颤,俗話說(shuō)它山之石可以攻玉囤官,這也是我開(kāi)博客的原因之一。希望在新的一年里蛤虐,我能夠多分享一些有意思也有意義的東西党饮,和所有熱愛(ài)技術(shù)的人一起成長(zhǎng)。


備注:這是我兩年前的心路歷程驳庭,原文發(fā)表博客園刑顺,現(xiàn)在原封不動(dòng)轉(zhuǎn)過(guò)來(lái)

版權(quán)印為您的作品印上版權(quán)

獲取授權(quán)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市饲常,隨后出現(xiàn)的幾起案子蹲堂,更是在濱河造成了極大的恐慌,老刑警劉巖贝淤,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柒竞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡播聪,警方通過(guò)查閱死者的電腦和手機(jī)朽基,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)犬耻,“玉大人踩晶,你說(shuō)我怎么就攤上這事≌泶牛” “怎么了渡蜻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)计济。 經(jīng)常有香客問(wèn)我茸苇,道長(zhǎng),這世上最難降的妖魔是什么沦寂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任学密,我火速辦了婚禮,結(jié)果婚禮上传藏,老公的妹妹穿的比我還像新娘腻暮。我一直安慰自己彤守,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布哭靖。 她就那樣靜靜地躺著具垫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪试幽。 梳的紋絲不亂的頭發(fā)上筝蚕,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音铺坞,去河邊找鬼起宽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛济榨,可吹牛的內(nèi)容都是我干的坯沪。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腿短,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼屏箍!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起橘忱,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤赴魁,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后钝诚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體颖御,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年凝颇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了潘拱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拧略,死狀恐怖芦岂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情垫蛆,我是刑警寧澤禽最,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站袱饭,受9級(jí)特大地震影響川无,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虑乖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一懦趋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疹味,春花似錦仅叫、人聲如沸帜篇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坠狡。三九已至,卻和暖如春遂跟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背婴渡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工幻锁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人边臼。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓哄尔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親柠并。 傳聞我的和親對(duì)象是個(gè)殘疾皇子岭接,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評(píng)論 25 707
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法臼予,內(nèi)部類(lèi)的語(yǔ)法鸣戴,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法粘拾,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,581評(píng)論 18 399
  • 本文內(nèi)容 問(wèn)題描述 問(wèn)題分析 解決方法 問(wèn)題描述 希望通過(guò) Python 批量創(chuàng)建 ARM 虛擬機(jī)窄锅,并且在虛擬機(jī)命...
    ITknight閱讀 245評(píng)論 0 0
  • 等你,在雨中 等你缰雇,在雨中入偷,在造虹的雨中 蟬聲沉落,蛙聲升起 一池的紅蓮如紅焰械哟,在雨中 你來(lái)不來(lái)都一樣疏之,竟感覺(jué) 每...
    閱簡(jiǎn)上書(shū)閱讀 102評(píng)論 0 0