? ? ? 學習java領域的知識有兩年近三年了,當然時間不完整,實際學習時間當然不可能有這么多,總會打折扣的。從最初的略窺門徑到現(xiàn)在的穩(wěn)步前進,猶如小孩學步,跌跌撞撞,磕磕碰碰的。
? ? ? 在學習java之前,斷斷續(xù)續(xù)學習了一年的C++,算是有點編程基礎吧。不過java是面向?qū)ο蟮木幊陶Z言,而學習C++更多是面向過程,轉(zhuǎn)過這個彎還是死了點腦細胞。理解面向?qū)ο螅瑢τ趯W習java很重要,因為這是其核心所在。我對面向?qū)ο蟮睦斫馐牵凑杖藢ψ匀皇挛锏恼J知,比如一只猴子,金絲毛發(fā),很可愛,會跳舞、爬樹、剝花生,用java寫一個猴子類,就是把猴子的顏色、身高、體重等猴子身上靜態(tài)的東西表述為java的屬性,而猴子的爬樹、剝花生表述為java的方法,構成一個完整的猴子類。人想要猴子剝花生,只要給它一些花生,它就會剝花生,至于它是怎么剝的,我們不關心,關心的是看它可愛地剝完就行了。它有一只猴崽子,和它特別像,遺傳(繼承)了它的特性。
? ? ? 學習java,先學習它的基本語法、表述形式,搞清楚它的基礎是怎么回事,int型數(shù)值占幾個字節(jié)就知道它的范圍了。接著學習IO、多線程、集合、GUI等,這些都是屬于JavaSE。想要在java這條路走下去,基礎知識不得不認真學。IO知識很重要,不過不好意思,學的不深,當初一頭扎進了數(shù)據(jù)庫,后來諸多項目都是基于數(shù)據(jù)庫完成的,可能是受操作文件太low而數(shù)據(jù)庫高大上的傳言影響。知識本身無高低區(qū)分,本質(zhì)是解決問題。 老師沒有深入傳授多線程知識,可能是比較復雜而實際項目中真正自己寫多線程的機會不多。但是很多服務器框架都用了多線程,要想深入學習,多線程是不可輕視的。集合主要是數(shù)據(jù)結(jié)構,有一個著名公式:程序=數(shù)據(jù)結(jié)構+算法,可見集合有多重要吧!GUI一貫被忽視,主要是java適合做web應用,GUI非強項。
? ? ? 學習java也有點時間了,有一段時間比較急功近利,追求新技術新框架,殊不知核心原理都相差無幾。基礎不牢,大廈不固。學習一門知識,一般是先應用,再發(fā)現(xiàn)問題,后探究原理。學習java的集合知識,用它去做一些練習、項目,做的過程想想能不能優(yōu)化、提高性能,為什么ArrayList的增刪元素不如LinkedList高效,不懂去看書上網(wǎng)搜索,還是不明所以,一定要刨根問底,看底層源碼,試著解讀源碼想要表達的意思。說實話,當初一開始看源碼時,很痛苦,尼瑪?shù)摹1日罩W(wǎng)上牛人對源碼的解讀,看著看著,好像還真是這樣的。后來,慢慢的,知識逐漸豐富,英文水平慢慢提高,源碼也就能夠理解的,其實java的源碼還相對不復雜。所以現(xiàn)在遇到問題一般都會去看源碼、文檔,加上調(diào)試,不會像當初那樣動輒上網(wǎng)搜索,不過大腦。
? ? ? ?Java Web開發(fā),有很多優(yōu)秀的第三方框架以供選擇,比如Spring、Hibernate、Springmvc、Mybatis等。現(xiàn)在做java web項目后臺,我也是使用這些框架組合,快速入手,可以大幅度節(jié)省時間。何況有些框架組合是經(jīng)過很多項目的檢驗,已經(jīng)很成熟。學習框架,也是先使用,再去解決疑惑不解,后探究原理。最近在看框架源碼,一直沒有找到很好的方法,目前結(jié)合一些著名的對框架解讀的書籍和框架源碼和編輯器的調(diào)試,逐步理解框架的一些原理性的東西。框架源碼實在有點多,直接徒手上陣,估計看個大半天也沒效果。看經(jīng)典框架的著名解讀書籍,站在牛人的肩膀上,是個不錯的選擇。看經(jīng)典書籍、經(jīng)典框架源碼,仿佛在與大師交流,能夠提高編碼質(zhì)量,領悟編程藝術的奧妙。
? ? ? 套用二八定律,在學習階段,基礎知識值得花費80%時間,基礎知識當然是指操作系統(tǒng)、計算機網(wǎng)絡、算法和數(shù)據(jù)結(jié)構、java基礎(IO、多線程、集合、反射等)等。優(yōu)秀的框架都是建構于基礎原理之上的。