陸陸續(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)