第一篇:Java程序員修煉之道
從2002開始接觸Java學(xué)會HelloWorld這么經(jīng)典的程序到如今不知不覺已經(jīng)十年啦,十年中
親耳聽到過不少大牛的演講,見到過項目中的神人在鍵盤上運指如飛的編程速度,當(dāng)時就
被震撼了。當(dāng)編程越來越成體力活,我們還能有自己的思想,還能修煉為Java系統(tǒng)級別的
程序員嘛?學(xué)習(xí)與修煉以下知識與技能,幫你早日達(dá)成愿望。
一:Java語言學(xué)習(xí)
對線程(thread),串行化,反射,網(wǎng)絡(luò)編程,JNI技術(shù),容器(Map,List, Iterator), 類加載器
(ClassLoader),輸入輸出流,垃圾回收機制,有比較深入的了解,最起碼做過項目應(yīng)用。有
過Java項目的性能優(yōu)化經(jīng)驗,最起碼掌握一種性能監(jiān)視工具的使用,熟悉JVM參數(shù),最起
碼知道可以在JVM啟動時指定不同垃圾回收機制,以及不同垃圾回收機制之間的
差別,熟悉JVM參數(shù)優(yōu)化。
二:J2EE方面
最好知道JDBC規(guī)范是怎么回事情,面對Oracle數(shù)據(jù)庫如果告訴你JDBC驅(qū)動不能用了,你
還知道有OCI驅(qū)動可以。掌握常見的SQL語句,熟悉JMS,JNDI等組件,掌握一套web開
發(fā)模式,從前臺到后臺,有能力整合好這樣的框架。理解并掌握MVC思想,像SSH已經(jīng)實
現(xiàn)了MVC的分層,幾乎不需要你自己再實現(xiàn),假設(shè)你開發(fā)一個簡單的Swing程序,你能MVC
就說明你真的掌握了MVC的精髓。有能力在J2EE前端開發(fā)中構(gòu)建自己的MVC模式,知道
什么是WEB2.0,知道什么是SOA,SaaS,SaaP等含義
三:理解并能合理運用設(shè)計模式,UML建模
知道并理解設(shè)計模式中蘊含的幾種基本原則如:里氏替換原則,開閉原則,合成復(fù)用原則,依賴倒置原則有很好的理解,并能舉例說明。對常用的設(shè)計模式如工廠模式,單例模式,觀
察者模式,責(zé)任鏈模式,橋接模式等知道靈活運用,明白什么是回調(diào)(Callback)。最后用一位
高人話來總結(jié)設(shè)計模式,它是為了讓軟件更容易被別人讀懂,更容易維護而產(chǎn)生,設(shè)計模
式本質(zhì)是程序員之間的交流,如果A用工廠模式設(shè)計一個模塊B來接替,A只要說該模塊是
工廠模式實現(xiàn),B維護起來應(yīng)該容易得多,所以設(shè)計模式是關(guān)于交流,不關(guān)于代碼。切忌濫
用設(shè)計模式。學(xué)會使用UML建模工具至少熟悉一種URL建模工具。
四:注重用戶體驗,掌握KISS原則,知道歐卡姆剃刀原則
顧客就是上帝這個口號我們已經(jīng)喊了N年了,程序員的勞動成果最終也需要轉(zhuǎn)換為服務(wù)提
供給客戶,用戶體驗至關(guān)重要,常??吹降膱鼍笆枪δ軐崿F(xiàn)了,軟件很難使用,程序員有個
很充足的理由我不是美工,其實注重用戶體驗跟美工八桿子也打不到一起,F(xiàn)oxMail的成功
在很大程度是用戶體驗的成功,友好,清晰的用戶提示,強的容錯與糾錯設(shè)計是獲得好的
用戶體驗的不二法門。傻瓜相機顧名思義傻子都會使用,這個就著名的KISS原則(Keep it
simple and stupid)意思是UI設(shè)計要簡單明了,傻子一看就知道怎么用,想想我們做出來的
東西,對照說明書都不知道怎么用。另外一個就是最著名的例子IPhone手機外觀設(shè)計,是 典型的歐卡姆剃刀設(shè)計原則來完成人機交互。
五:自動測試與軟件配置管理(SCM)實現(xiàn)
知道什么是軟件配置管理,知道Hudson微機原理鬧危機,匯編語言不會變,實變函數(shù)學(xué)
十遍。計算機基礎(chǔ)知識被大家普遍忽視。從今天開始好好學(xué)習(xí)吧……
十一:Java代碼反編譯與代碼保護
Java編譯產(chǎn)生字節(jié)碼,因而可以被輕松的逆向工程(反編譯),微軟的C#生產(chǎn)的DLL也一樣可
以被輕松反編譯。正式由于這個原因產(chǎn)生了許多Java開源的代碼保護工具,而Proguard是
其中佼佼者,已經(jīng)被google集成在android之中用于Java代碼保護,訪問這里了解更多:
http://proguard.sourceforge.net/
十二:努力成為某個行業(yè)或者領(lǐng)域骨干
面對漫長的職業(yè)生涯,要想不被淘汰,必須具備一招鮮吃遍天下的能力,選擇自己感興趣的
方向,努力而深入的研究,計算機技術(shù)發(fā)展到今天已經(jīng)細(xì)分很細(xì),努力研究一種Java開源
框架或者開源HTTP服務(wù)器源碼或者研究過網(wǎng)絡(luò)爬蟲源碼或者WEBKIT內(nèi)核,不愁沒有人要
你。如果你是非常了解金融,企業(yè)ERP,證券,保險,移動應(yīng)用行業(yè)的應(yīng)用開發(fā)業(yè)務(wù)的人,一樣不用愁工作。這些知識不隨語言而改變,努力做一個有核心競爭力的Java程序員。
十三:提高語言與書面表達(dá)能力,掌握基礎(chǔ)的項目管理知識
文檔與語言表達(dá)能力是最好的向外界展現(xiàn)自己能力的方式,很多程序員編程能力很高,表達(dá)
能力一般,Linux能夠成功,除了歸功于網(wǎng)絡(luò)社區(qū)的力量之外,也得益于Linux作者本人給各
大基金會寫信,宣傳推廣,試想如果沒有良好的書面語言表達(dá)能力,即使Linux系統(tǒng)再優(yōu)秀,卻無法被準(zhǔn)確表達(dá),失去各大基金會的支持,Linux還會像今天這么好的局面嘛。所以重視
文檔,重視提升溝通與表達(dá)能力,才有可能成為Java系統(tǒng)程序員。掌握基本的2/8原則,學(xué)
會將模塊細(xì)化分配給不同的人,預(yù)見并控制項目風(fēng)險,把握項目進度,優(yōu)化流程,合理的時
間管理,了解TDD,熟悉敏捷開發(fā)模式,常規(guī)軟件開發(fā)模式。
十四:掌握英語,良好的讀寫能力
英語是計算機的母語,掌握好英語對于閱讀英文資料學(xué)習(xí)新技術(shù)大有幫助,我的建議是盡量
讀英文原版書,如果是算法方面的可能會困難一點,但是其它像設(shè)計模式,軟件工程,OO
編程思想等盡量讀原版,提高自己的英文水平,多多訪問開發(fā)者,code project,程序員天堂,Pc-magazine等英文IT網(wǎng)站。英語絕對是你必須修煉與提高的技能。此外英語好在外資企業(yè)
尤其重要,只有外語足夠好才可能在外資企業(yè)中突破職業(yè)瓶頸,向上發(fā)展。
第二篇:Java系統(tǒng)程序員修煉之道
Java系統(tǒng)程序員修煉之道
——動力節(jié)點java 一:Java語言學(xué)習(xí)
對線程(thread),串行化,反射,網(wǎng)絡(luò)編程,JNI技術(shù),容器(Map,List, Iterator), 類加載器(ClassLoader),輸入輸出流,垃圾回收機制,有比較深入的了解,最起碼做過項目應(yīng)用。有過Java項目的性能優(yōu)化經(jīng)驗,最起碼掌握一種性能監(jiān)視工具的使用,熟悉JVM參數(shù),最起碼知道可以在JVM啟動時指定不同垃圾回收機制,以及不同垃圾回收機制之間的差別,熟悉JVM參數(shù)優(yōu)化。二:J2EE方面
最好知道JDBC規(guī)范是怎么回事情,面對Oracle數(shù)據(jù)庫如果告訴你JDBC驅(qū)動不能用了,你還知道有OCI驅(qū)動可以。掌握常見的SQL語句,熟悉JMS,JNDI等組件,掌握一套web開發(fā)模式,從前臺到后臺,有能力整合好這樣的框架。理解并掌握MVC思想,像SSH已經(jīng)實現(xiàn)了MVC的分層,幾乎不需要你自己再實現(xiàn),假設(shè)你開發(fā)一個簡單的Swing程序,你能MVC就說明你真的掌握了MVC的精髓。有能力在J2EE前端開發(fā)中構(gòu)建自己的MVC模式,知道什么是WEB2.0,知道什么是SOA,SaaS,SaaP等含義 三:理解并能合理運用設(shè)計模式,UML建模
知道并理解設(shè)計模式中蘊含的幾種基本原則如:里氏替換原則,開閉原則,合成復(fù)用原則,依賴倒置原則有很好的理解,并能舉例說明。對常用的設(shè)計模式如工廠模式,單例模式,觀察者模式,責(zé)任鏈模式,橋接模式等知道靈活運用,明白什么是回調(diào)(Callback)。最后用一位高人話來總結(jié)設(shè)計模式,它是為了讓軟件更容易被別人讀懂,更容易維護而產(chǎn)生,設(shè)計模式本質(zhì)是程序員之間的交流,如果A用工廠模式設(shè)計一個模塊B來接替,A只要說該模塊是工廠模式實現(xiàn),B維護起來應(yīng)該容易得多,所以設(shè)計模式是關(guān)于交流,不關(guān)于代碼。切忌濫用設(shè)計模式。學(xué)會使用UML建模工具至少熟悉一種URL建模工具。四:注重用戶體驗,掌握KISS原則,知道歐卡姆剃刀原則
顧客就是上帝這個口號我們已經(jīng)喊了N年了,程序員的勞動成果最終也需要轉(zhuǎn)換為服務(wù)提供給客戶,用戶體驗至關(guān)重要,常常看到的場景是功能實現(xiàn)了,軟件很難使用,程序員有個很充足的理由我不是美工,其實注重用戶體驗跟美工八桿子也打不到一起,F(xiàn)oxMail的成功在很大程度是用戶體驗的成功,友好,清晰的用戶提示,強的容錯與糾錯設(shè)計是獲得好的用戶體驗的不二法門。傻瓜相機顧名思義傻子都會使用,這個就著名的KISS原則(Keep itsimple and stupid)意思是UI設(shè)計要簡單明了,傻子一看就知道怎么用,想想我們做出來的東西,對照說明書都不知道怎么用。另外一個就是最著名的例子IPhone手機外觀設(shè)計,是典型的歐卡姆剃刀設(shè)計原則來完成人機交互。五:自動測試與軟件配置管理(SCM)實現(xiàn)
知道什么是軟件配置管理,知道Hudson運用該工具SCM,知道怎么獲取測試代碼覆蓋率,Java有效代碼行數(shù)(NCSS),完成firebug,JDepend等工具集成ant/maven。熟悉并注重在開發(fā)過程中使用JUnit單元測試,理解白盒測試規(guī)范。六:熟悉常見的網(wǎng)絡(luò)通信協(xié)議
對HTTP協(xié)議,知道POST, GET的區(qū)別是什么,閱讀過HTTP相關(guān)的RFC文檔。學(xué)會使用sniffer工具查看數(shù)據(jù)包,幫助查找與調(diào)試程序,知道TCP與UDP的區(qū)別,知道并理解E-Mail發(fā)送與接受的協(xié)議如SMTP,POP3,IMAP等協(xié)議,了解MIME與Base64編碼。知道組播是怎么回事情。
七:面向市場,永遠(yuǎn)對新技術(shù)保持渴望
計算機技術(shù)的發(fā)展日新月異,做為IT行業(yè)的軟件開發(fā)人員要不斷的給自己充電,更新自己的技術(shù)與時代保持同步,同時還要面向市場,華為總裁任正非說過-“華為的技術(shù)革新必須面向市場”,作為程序員同樣要有市場意識,很多人都后悔沒有在android剛出來的時候加以關(guān)注學(xué)習(xí)。那些很早關(guān)注android開發(fā)技術(shù)的很多程序員因此獲得豐厚回報。如今HTML5得到越來越多的瀏覽器廠家支持,你是否已經(jīng)跟上腳步,開始學(xué)習(xí)。八:保持謙虛,三人行必有我?guī)?/p>
喬幫主說他要保持初心,努力學(xué)習(xí),我等更應(yīng)該保持謙虛,IT技術(shù)發(fā)展日新月異,在你眼中不可能實現(xiàn)的技術(shù),也許別人早已經(jīng)有思路。保持謙虛就有機會吸取別人身上的長處,古人有云:滿招損,謙受益。一個得道的高人更是說出了”下下人,上上智”的禪語。永遠(yuǎn)不要拒絕幫助你周圍的人解決難題,解決難題是進步最快途徑。不要放棄任何一次可以提升自己技術(shù)與能力的機會。
九:養(yǎng)成總結(jié)的習(xí)慣,不斷反思
上學(xué)的時候老師常讓寫小結(jié),也沒總結(jié)出來所以然,以至于工作以后再也不提這檔子事情,建議每個項目做完以后對自己都有個小結(jié),總結(jié)自己在項目里面學(xué)到了什么,反問自己能不能完成在不需要別人幫助的情況下自己完成這樣的系統(tǒng)搭建,是否熟悉與掌握項目中所用到的技術(shù),即使有些東西不是你負(fù)責(zé)完成的但是什么也不能阻擋一顆求知的心,總結(jié)要盡量詳細(xì)記錄你遇到那些難題是怎么一個一個的解決的,下次再遇到你是否可以很快解決或者避免這樣的問題。有總結(jié)才有提高,孔子曰:學(xué)而不思則罔,如果我們只是coding到吐血,不思考,不總結(jié)提高,永遠(yuǎn)不可能有能有本質(zhì)提高,秦相李斯有云:“泰山不讓土壤,故能成其大,河海不擇細(xì)流,故能就其深”,點滴積累不斷總結(jié)方能量變導(dǎo)致質(zhì)變。十:數(shù)學(xué)功底與算法知識 用任何編程語言開發(fā)應(yīng)用,都離不開核心算法支持,很多國外的軟件單單從UI上看,恐怕寫幾年程序的人都可以模仿,但是UI之下的那些真實深淺不一,相信不是你想模仿就可以模仿的,為什么我們越來越山寨,因為我們沒有核心競爭力,對于程序員來說算法與數(shù)學(xué)顯然是他最重要的核心競爭力之一。《算法導(dǎo)論》,《編程珠璣》等書絕對值得讀十遍。微軟亞洲研究院視覺計算組負(fù)責(zé)人在一次演講中說到他們招人的標(biāo)準(zhǔn)是“三好學(xué)生– 數(shù)學(xué)好,編程好,態(tài)度好”??墒乾F(xiàn)實的普遍情況卻是-微機原理鬧危機,匯編語言不會變,實變函數(shù)學(xué)十遍。計算機基礎(chǔ)知識被大家普遍忽視。從今天開始好好學(xué)習(xí)吧…… 十一:Java代碼反編譯與代碼保護
Java編譯產(chǎn)生字節(jié)碼,因而可以被輕松的逆向工程(反編譯),微軟的C#生產(chǎn)的DLL也一樣可以被輕松反編譯。正式由于這個原因產(chǎn)生了許多Java開源的代碼保護工具,而Proguar是其中佼佼者,已經(jīng)被google集成在android之中用于Java代碼保護 十二:努力成為某個行業(yè)或者領(lǐng)域骨干
面對漫長的職業(yè)生涯,要想不被淘汰,必須具備一招鮮吃遍天下的能力,選擇自己感興趣的方向,努力而深入的研究,計算機技術(shù)發(fā)展到今天已經(jīng)細(xì)分很細(xì),努力研究一種Java開源框架或者開源HTTP服務(wù)器源碼或者研究過網(wǎng)絡(luò)爬蟲源碼或者WEBKIT內(nèi)核,不愁沒有人要你。如果你是非常了解金融,企業(yè)ERP,證券,保險,移動應(yīng)用行業(yè)的應(yīng)用開發(fā)業(yè)務(wù)的人,一樣不用愁工作。這些知識不隨語言而改變,努力做一個有核心競爭力的Java程序員。十三:提高語言與書面表達(dá)能力,掌握基礎(chǔ)的項目管理知識
文檔與語言表達(dá)能力是最好的向外界展現(xiàn)自己能力的方式,很多程序員編程能力很高,表達(dá)能力一般,Linux能夠成功,除了歸功于網(wǎng)絡(luò)社區(qū)的力量之外,也得益于Linux作者本人給各大基金會寫信,宣傳推廣,試想如果沒有良好的書面語言表達(dá)能力,即使Linux系統(tǒng)再優(yōu)秀,卻無法被準(zhǔn)確表達(dá),失去各大基金會的支持,Linux還會像今天這么好的局面嘛。所以重視文檔,重視提升溝通與表達(dá)能力,才有可能成為Java系統(tǒng)程序員。掌握基本的2/8原則,學(xué)會將模塊細(xì)化分配給不同的人,預(yù)見并控制項目風(fēng)險,把握項目進度,優(yōu)化流程,合理的時間管理,了解TDD,熟悉敏捷開發(fā)模式,常規(guī)軟件開發(fā)模式。
第三篇:《程序員修煉之道》讀后感
《程序員修煉之道》讀后感
編程技術(shù)就是程序員的手藝,你的程序就是你的藝術(shù)品。時刻關(guān)注自己的技藝,保持熱情、保持好奇,爭取做到富有專長而又多才多藝。
看似樸素的道理,實際是若干經(jīng)驗的總結(jié),就像這本書的自序所講的,這是一本包含有許多樸素的經(jīng)驗,寫給注重實效的程序員的一本“演員的自我修養(yǎng)”。
簡單和朋友們分享幾點:
怎樣提出你的問題
1:確切地知道你想要問什么,并盡量明確具體;
2:小心而得體地組織你的問題,記住你是在請求幫助;
3:發(fā)郵件時請使用有意義的主題;
4:坐回椅子上,耐心等候
破窗
團隊不能容忍破窗(產(chǎn)品的不完善的地方),需要指定人修復(fù),不能一直放著不管。當(dāng)你看到糟糕的設(shè)計、錯誤的決策和糟糕的代碼時,修正它們。在工作中,很容易對源源不斷的bug不耐煩,或許被自己說服僥幸繞過,以后就會有更多的直至難以修復(fù)。破窗戶講的故事是一個小區(qū)的一扇窗戶沒有及時維修導(dǎo)致整個小區(qū)陷入被更多破壞的現(xiàn)實,人們再想起維修時,代價巨大,治安特別好的地區(qū)也對破窗嚴(yán)格治理。
不要恐慌
做一次深呼吸,思考什么可能是bug的原因。記得剛?cè)雸F隊時,我時常會對難以捉摸,尤其是不能復(fù)現(xiàn)的bug感到恐懼,但細(xì)細(xì)尋找,你還是能看到蛛絲馬跡。
溫水煮青蛙
個人和團隊假如一直在一個假設(shè)的環(huán)境或者需求或者條件下繼續(xù)下去,就很可能像那只可憐的青蛙一樣,或者定時的檢測下環(huán)境或條件或需求是否變化,或者團隊里面專門有人來檢測
重復(fù)的危害
不要在系統(tǒng)各處對知識進行重復(fù)。作為程序員,我們收集、組織、維護和利用知識。我們在規(guī)范中記載知識、在運行的代碼中使其活躍起來并將其用于提供測試過程中所需的檢查。遺憾的是,知識并不穩(wěn)定。所有這些不穩(wěn)定都意味著我們要把很大一部分時間花在維護上,重新組織和表達(dá)我們的系統(tǒng)中的知識。程序員須持續(xù)不斷地維護。我們的理解逐日變化,當(dāng)我們設(shè)計或編碼時,出現(xiàn)了新的需求。環(huán)境或許變了。不管原因是什么,維護都不是時有時無的活動,而是整個開發(fā)過程中的例行事務(wù)??煽康亻_發(fā)軟件、并讓我們的開發(fā)更易于理解和維護的惟一途徑,是遵循我們稱之為DRY的原則:系統(tǒng)中的每一項知識都必須具有單一、無歧義、權(quán)威的表示。
正交性
不要把任何一項知識分散在多個系統(tǒng)組件中。在計算技術(shù)中,該術(shù)語用于表示某種不相依賴性或是解耦性。如果兩個或更多事物中的一個發(fā)生變化,不會影響其他事物,這些事物就是正交的。非正交的例子:直升機駕駛操作的各個控制器之間就是相互影響的,不是正交的。
正交的好處就是為了可以局部修正(local fix)。
何時使用異常
將異常用于異常的問題。例如:文件讀寫,例程返回值,各種狀態(tài)異常檢測,服務(wù)器超時等異常情況,都需要使用異常,通常為異常分等級,可以拋出異常,或者將異常寫入日志。
交流
我們不是活在真空世界,需要花大量時間與人交流。只有當(dāng)你是在傳達(dá)信息時,你才是在交流。
有效交流的幾種方法:知道你想要說什么,了解你的聽眾,選擇時機,選擇風(fēng)格,讓文檔美觀,讓聽眾參與,做傾聽者,回復(fù)他人。
定期為你的知識資產(chǎn)投資
讓學(xué)習(xí)成為習(xí)慣。編程語言、技術(shù)日新月異,小伙伴們都感受至深,幸運的是我們的知識獲得比任何行業(yè)都更加容易和方便,大量的社區(qū),教程和熱心的作者。書中也給程序員提了幾點建議,每年學(xué)習(xí)一門新的語言,每個季度閱讀一本技術(shù)書籍等。
讓復(fù)用變得容易
如果復(fù)用很容易,人們就會去復(fù)用。創(chuàng)造一個支持復(fù)用的環(huán)境。將相同的功能抽離出來,可能會大量用到的方法使用靜態(tài)關(guān)鍵字。
在你的作品上簽名
過去時代的會陷入自我欣賞中,他其實還有一個作用,我對代碼負(fù)責(zé),我測試過并確保他的良手藝人為能在他們的作品上簽名而自豪。你也應(yīng)該如此。坦白的說,簽名之后再看這段代碼會非常愉悅,有時還好運行,也是一種自我監(jiān)督吧。
“我的源碼讓貓吃了”,想想作為程序員的我們,是不是經(jīng)常會幫自己解脫,向領(lǐng)導(dǎo),測試,客戶推卸責(zé)任,其實對于他們仿佛也就好比聽“我的源碼讓貓吃了”這句話,是不是很諷刺?不管我們某個人基礎(chǔ)再扎實,解決問題的能力再強,如果缺失了對自己的軟件的責(zé)任,一定不會有好的工作成果。
很多很多,這些不是做過一次兩次就說明已經(jīng)掌握了,需要一個持續(xù)的過程去注意,實踐,直到他們成為你的習(xí)慣,這樣,你才能成為一個“專家程序員”。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。
第四篇:Java程序員修煉十大過程
Java程序員修煉十大過程
學(xué)習(xí)java這么久,見到過項目中的神人在鍵盤上運指如飛的編程速度,當(dāng)時就被震撼了。當(dāng)編程越來越成體力活,我們還能有自己的思想,還能修煉為Java系統(tǒng)級別的程序員嘛?學(xué)習(xí)與修煉以下知識與技能,幫你早日達(dá)成愿望。
一、努力成為某個行業(yè)或者領(lǐng)域骨干
面對漫長的職業(yè)生涯,要想不被淘汰,必須具備一招鮮吃遍天下的能力,選擇自己感興趣的方向,努力而深入的研究,計算機技術(shù)發(fā)展到今天已經(jīng)細(xì)分很細(xì),努力研究一種Java開源框架或者開源HTTP服務(wù)器源碼或者研究過網(wǎng)絡(luò)爬蟲源碼或者WEBKIT內(nèi)核,不愁沒有人要你。如果你是非常了解金融,企業(yè)ERP,證券,保險,移動應(yīng)用行業(yè)的應(yīng)用開發(fā)業(yè)務(wù)的人,一樣不用愁工作。這些知識不隨語言而改變,努力做一個有核心競爭力的Java程序員。
二、保持謙虛,三人行必有我?guī)?/p>
喬幫主說他要保持初心,努力學(xué)習(xí),我等更應(yīng)該保持謙虛,IT技術(shù)發(fā)展日新月異,在你眼中不可能實現(xiàn)的技術(shù),也許別人早已經(jīng)有思路。保持謙虛就有機會吸取別人身上的長處,古人有云:滿招損,謙受益。一個得道的高人更是說出了“下下人,上上智”的禪語。永遠(yuǎn)不要拒絕幫助你周圍的人解決難題,解決難題是進步最快途徑。不要放棄任何一次可以提升自己技術(shù)與能力的機會。
三、熟悉常見的網(wǎng)絡(luò)通信協(xié)議
對HTTP協(xié)議,知道POST, GET的區(qū)別是什么,閱讀過HTTP相關(guān)的RFC文檔。學(xué)會使用sniffer工具查看數(shù)據(jù)包,幫助查找與調(diào)試程序,知道TCP與UDP的區(qū)別,知道并理解E-Mail發(fā)送與接受的協(xié)議如SMTP,POP3,IMAP等協(xié)議,了解MIME與Base64編碼。知道組播是怎么回事情。
四、理解并能合理運用設(shè)計模式,UML建模
知道并理解設(shè)計模式中蘊含的幾種基本原則如:里氏替換原則,開閉原則,合成復(fù)用原則,依賴倒置原則有很好的理解,并能舉例說明。對常用的設(shè)計模式如工廠模式,單例模式,觀察者模式,責(zé)任鏈模式,橋接模式等知道靈活運用,明白什么是回調(diào)(Callback)。最后用一位高人話來總結(jié)設(shè)計模式,它是為了讓軟件更容易被別人讀懂,更容易維護而產(chǎn)生,設(shè)計模式本質(zhì)是程序員之間的交流,如果A用工廠模式設(shè)計一個模塊B來接替,A只要說該模塊是工廠模式實現(xiàn),B維護起來應(yīng)該容易得多,所以設(shè)計模式是關(guān)于交流,不關(guān)于代碼。切忌濫用設(shè)計模式。學(xué)會使用UML建模工具至少熟悉一種URL建模工具。
五、自動測試與軟件配置管理(SCM)實現(xiàn)
知道什么是軟件配置管理,知道Hudson-http://java.net/projects/hudson/運用該工具SCM,知道怎么獲取測試代碼覆蓋率,Java有效代碼行數(shù)(NCSS),完成firebug,JDepend等工具集成ant/maven.熟悉并注重在開發(fā)過程中使用JUnit單元測試,理解白盒測試規(guī)范。
六、Java語言學(xué)習(xí)
對線程(thread),串行化,反射,網(wǎng)絡(luò)編程,JNI技術(shù),容器(Map,List, Iterator),類加載器(ClassLoader),輸入輸出流,垃圾回收機制,有比較深入的了解,最起碼做過項目應(yīng)用。有過Java項目的性能優(yōu)化經(jīng)驗,最起碼掌握一種性能監(jiān)視工具的使用,熟悉JVM參數(shù),最起碼知道可以在JVM啟動時指定不同垃圾回收機制,以及不同垃圾回收機制之間的差別,熟悉JVM參數(shù)優(yōu)化。
七、掌握英語,良好的讀寫能力
英語是計算機的母語,掌握好英語對于閱讀英文資料學(xué)習(xí)新技術(shù)大有幫助,我的建議是盡量讀英
文原版書,如果是算法方面的可能會困難一點,但是其它像設(shè)計模式,軟件工程,OO編程思想等盡量讀原版,提高自己的英文水平,多多訪問開發(fā)者,code project,程序員天堂,Pc-magazine等英文IT網(wǎng)站。英語絕對是你必須修煉與提高的技能。此外英語好在外資企業(yè)尤其重要,只有外語足夠好才可能在外資企業(yè)中突破職業(yè)瓶頸,向上發(fā)展。
八、養(yǎng)成總結(jié)的習(xí)慣,不斷反思
上學(xué)的時候老師常讓寫小結(jié),也沒總結(jié)出來所以然,以至于工作以后再也不提這檔子事情,建議每個項目做完以后對自己都有個小結(jié),總結(jié)自己在項目里面學(xué)到了什么,反問自己能不能完成在不需要別人幫助的情況下自己完成這樣的系統(tǒng)搭建,是否熟悉與掌握項目中所用到的技術(shù),即使有些東西不是你負(fù)責(zé)完成的但是什么也不能阻擋一顆求知的心,總結(jié)要盡量詳細(xì)記錄你遇到那些難題是怎么一個一個的解決的,下次再遇到你是否可以很快解決或者避免這樣的問題。有總結(jié)才有提高,孔子曰:學(xué)而不思則罔,如果我們只是coding到吐血,不思考,不總結(jié)提高,永遠(yuǎn)不可能有能有本質(zhì)提高,秦相李斯有云:“泰山不讓土壤,故能成其大,河海不擇細(xì)流,故能就其深”,點滴積累不斷總結(jié)方能量變導(dǎo)致質(zhì)變。
九、Java代碼反編譯與代碼保護
Java編譯產(chǎn)生字節(jié)碼,因而可以被輕松的逆向工程(反編譯),微軟的C#生產(chǎn)的DLL也一樣可以被輕松反編譯。正式由于這個原因產(chǎn)生了許多Java開源的代碼保護工具,而Proguard是其中佼佼者,已經(jīng)被google集成在android之中用于Java代碼保護。
十、面向市場,永遠(yuǎn)對新技術(shù)保持渴望
計算機技術(shù)的發(fā)展日新月異,做為IT行業(yè)的軟件開發(fā)人員要不斷的給自己充電,更新自己的技術(shù)與時代保持同步,同時還要面向市場,華為總裁任正非說過-“華為的技術(shù)革新必須面向市場”,作為程序員同樣要有市場意識,很多人都后悔沒有在android剛出來的時候加以關(guān)注學(xué)習(xí)。那些很早關(guān)注android開發(fā)技術(shù)的很多程序員因此獲得豐厚回報。如今HTML5得到越來越多的瀏覽器廠家
支持,你是否已經(jīng)跟上腳步,開始學(xué)習(xí)。
第五篇:java程序員
如何迅速成為Java高手[Tomjava原創(chuàng)]
很多網(wǎng)友問我學(xué)習(xí)Java有沒有什么捷徑,我說“無他,唯手熟爾”。但是我卻很愿意將自己學(xué)習(xí)的一些經(jīng)驗寫出來,以便后來者少走彎路,幫助別人是最大的快樂嘛!
要想學(xué)好Java,首先要知道Java的大致分類。我們知道,自從Sun推出Java以來,就力圖使之無所不包,所以Java發(fā)展到現(xiàn)在,按應(yīng)用來分主要分為三大塊:J2SE,J2ME和J2EE,這也就是Sun ONE(Open Net Environment)體系。J2SE就是Java2的標(biāo)準(zhǔn)版,主要用于桌面應(yīng)用軟件的編程;J2ME主要應(yīng)用于嵌入是系統(tǒng)開發(fā),如手機和PDA的編程;J2EE是Java2的企業(yè)版,主要用于分布式的網(wǎng)絡(luò)程序的開發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng)。J2SE開發(fā)桌面應(yīng)用軟件比起VC,VB,DEPHI這些傳統(tǒng)開發(fā)語言來說,優(yōu)勢好象并不明顯。J2ME對于初學(xué)者來說,好象又有點深奧,而且一般開發(fā)者很難有開發(fā)環(huán)境。所以現(xiàn)在應(yīng)用最廣泛又最好學(xué)的就是J2EE了。J2EE又包括許多組件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要學(xué)習(xí)起來可不是一兩天的事。
那么又該如何學(xué)習(xí)J2EE呢?當(dāng)然Java語法得先看一看的,I/O包,Util包,Lang包你都熟悉了嗎?然后再從JSP學(xué)起。如果你學(xué)過HTML,那么事情要好辦的多,如果沒有,那你快去補一補HTML基礎(chǔ)吧。其實JSP中的Java語法也不多,它更象一個腳本語言,有點象ASP。然后你就該學(xué)一學(xué)Servlet了。Servlet就是服務(wù)器端小程序,他負(fù)責(zé)生成發(fā)送給客戶端的HTML文件。JSP在執(zhí)行時,也是先轉(zhuǎn)換成Servlet再運行的。雖說JSP理論上可以完全取代Servlet,這也是SUN推出JSP的本意,可是Servlet用來控制流程跳轉(zhuǎn)還是挺方便的,也令程序更清晰。接下來你應(yīng)該學(xué)習(xí)一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代碼的混亂方式了,這種方式跟ASP又有什么區(qū)別呢?還好,SUN提供了Javabean可以把你的JSP中的Java代碼封裝起來,便于調(diào)用也便于重用。接著就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean還是有區(qū)別的。它是一個體系結(jié)構(gòu),你可以搭建更安全、更穩(wěn)定的企業(yè)應(yīng)用。它的大量代碼已由中間件(也就是我們常聽到的Weblogic,Websphere這些J2EE服務(wù)器)完成了,所以我們要做的程序代碼量很少,大部分工作都在設(shè)計和配置中間件上。至于JDBC,就不用我多說了,你如果用java編過存取數(shù)據(jù)庫的程序,就應(yīng)該很熟悉。還有,如果你要用Java編發(fā)送電子郵件的程序,你就得看看Javamail了。
好了,對Java和J2EE有了一些基本概念之后,你就應(yīng)該編一些程序了,千萬不要紙上談兵哦。最好找一些有實例且?guī)Ч獗P的書來看,這樣看到好的程序就可以直接Ctrl+C再Ctrl+V,也不用勞您老大架再親自把它再輸一遍吧,再說直接復(fù)制還不用怕出錯,何樂而不為呢!還有就是要經(jīng)常上一些好的Java編程文章,有好的文章要Cut下來,有問題盡管問,只要問題不是太傻,一般高手都會回答你的。下面介紹幾個好的Java方面的編程網(wǎng)站:
CSDN論壇 http:///那里Java資料比較全;
java.com.cnhttp://.cn/看這域名就知道有多牛,注冊用戶快接近一萬了,同時在線人數(shù)也在一千左右,人氣很旺的;
IBM的開發(fā)者網(wǎng)絡(luò)http://IBM永遠(yuǎn)的藍(lán)色巨人;
那么我書也看了,程序也做了,別人問我的問題我都能解決了,是不是就成為高手了呢?當(dāng)然沒那么簡單,這只是萬里長征走完了第一步。不信?那你出去接一個項目,你知道怎么下手嗎,你知道怎么設(shè)計嗎,你知道怎么組織人員進行開發(fā)嗎?你現(xiàn)在腦子里除了一些散亂的代碼之外,可能再沒有別的東西了吧!你現(xiàn)在最缺的是實際的工作經(jīng)驗,而不是書本上那些
憑空想出來的程序。所以你快去找一份Java的編程工作來做吧(如果是在校學(xué)生可以去做兼職啊),在實踐中提高自己,那才是最快的。不過你得祈禱在公司里碰到一個高手,而且他還愿意不厭其煩地教你,這樣好象有點難哦!
還有一個辦法就是讀開放源碼的程序了。我們知道開放源碼大都出自高手,他們設(shè)計合理,考慮周到,再加上有廣大的程序員參與,代碼的價值自然是字字珠嘰,鏗鏘有力(對不起,偶最近《金裝四大才子》看多了)。學(xué)Java必讀的兩個開源程序就是Jive和Pet Store.。Jive是國外一個非常著名的BBS程序,完全開放源碼。論壇的設(shè)計采用了很多先進的技術(shù),如Cache、用戶認(rèn)證、Filter、XML等,而且論壇完全屏蔽了對數(shù)據(jù)庫的訪問,可以很輕易的在不同數(shù)據(jù)庫中移植。論壇還有方便的安裝和管理程序,這是我們平時編程時容易忽略的一部份(中國程序員一般只注重編程的技術(shù)含量,卻完全不考慮用戶的感受,這就是我們與國外軟件的差距所在)。Jive的資料在很多網(wǎng)站上都有,大家可以找來研究一下。相信你讀完代碼后,會有脫胎換骨的感覺。遺憾的是Jive從2.5以后就不再無條件的開放源代碼,同時有l(wèi)icence限制。不過幸好還有中國一流的Java程序員關(guān)注它,外國人不開源了,中國人就不能開源嗎?這里向大家推薦一個漢化的Jive版本—J道。Jive(J道版)是由中國Java界大名鼎鼎的banq在Jive 2.1版本基礎(chǔ)上改編而成, 全中文,增加了一些實用功能,如貼圖,用戶頭像和用戶資料查詢等,而且有一個開發(fā)團隊在不斷升級。你可以訪問banq的網(wǎng)站http:///去下載,或到同濟技術(shù)論壇的服務(wù)器上ftp://nro.shtdu.edu.cn去下,安裝上有什么問題,可以到論壇上去提問。Pet Store.(寵物店)是SUN公司為了演示其J2EE編程規(guī)范而推出的開放源碼的程序,應(yīng)該很具有權(quán)威性,想學(xué)J2EE和EJB的朋友不要錯過了。
你一定會高興地說,哈哈,原來成為Java高手就這么簡單啊!記得Tomjava也曾碰到過一個項目經(jīng)理,號稱Java很簡單,只要三個月就可以學(xué)會。其實說這種話的人就如當(dāng)年小日本號稱“三個月拿下中國”一樣大言不慚。不是Tomjava潑你冷水,你現(xiàn)在只是學(xué)到了Java的骨架,卻還沒有學(xué)到Java的精髓。接下來你得研究設(shè)計模式了。設(shè)計模式是高級程序員真正掌握面向?qū)ο蠛诵乃枷氲谋匦拚n。設(shè)計模式并不是一種具體“技術(shù)”,它講述的是思想,它不僅僅展示了接口或抽象類在實際案例中的靈活應(yīng)用和智慧,讓你能夠真正掌握接口或抽象類的應(yīng)用,從而在原來的Java語言基礎(chǔ)上躍進一步,更重要的是,設(shè)計模式反復(fù)向你強調(diào)一個宗旨:要讓你的程序盡可能的可重用。關(guān)于設(shè)計模式的資料,還是向大家推薦banq的網(wǎng)站http:///,他把GOF的23種模式以通俗易懂的方式詮釋出來,純Java描述,真是經(jīng)典中的經(jīng)典。有時間再研究一下MVC結(jié)構(gòu)(把Model-View-Control分離開的設(shè)計思想)吧,現(xiàn)在很流行的Structs就是它的一種實現(xiàn)方式,不過Structs用起來實在是很繁,我們只要學(xué)習(xí)其精髓即可,我們完全可以設(shè)計自己的MVC結(jié)構(gòu)。然后你再研究一下軟件Refactoring(重整)和極限XP編程,相信你又會上一個臺階。
做完這些,你不如整理一下你的Java代碼,把那些經(jīng)典的程序和常見的應(yīng)用整理出來,再精心打造一番,提高其重用性和可擴展性。你再找?guī)讉€志同道合的朋友成立一個工作室吧,你可以去承接一些項目做了,一開始可能有些困難,可是你有技術(shù)積累,又考慮周全,接下項目來可以迅速作完,相信大家以后都會來找你的,所以Money就嘩啦啦的來了。。。當(dāng)然你也可以參加一些開源項目,一方面可以提高自己,另一方面也是為中國軟件事業(yè)做貢獻嘛!開發(fā)者在互聯(lián)網(wǎng)上用CVS合作開發(fā),用QQ,MSN,E-mail討論聯(lián)系,天南海北的程序員分散在各地卻同時開發(fā)同一個軟件,是不是很有意思呢?
下面介紹兩個好的開源項目網(wǎng)站:
湖北省軟件公共開發(fā)平臺http://gro.clinux.org/
共創(chuàng)聯(lián)盟http://cosoft.org.cn/
哇,好高興哦,我終于成為高手了!非也,非也。古人云:“識時務(wù)者為俊杰”。你知道計算
機界現(xiàn)在的發(fā)展形勢嗎?你知道微軟的.NET藍(lán)圖和SUN ONE計劃之間的明爭暗斗嗎?你知道計算機技術(shù)將向何處發(fā)展嗎?其實從各大計算機廠商最近的動作,都可以看出來“Web服務(wù)將是下一代互聯(lián)網(wǎng)應(yīng)用的制高點”,而微軟的.NET藍(lán)圖和SUN ONE計劃的斗爭焦點,也就是Web服務(wù)。Web服務(wù)就是一個嶄新的分布式計算模型,它是一系列標(biāo)準(zhǔn)的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同語言編寫的軟件能夠輕易的集成起來,使網(wǎng)絡(luò)資源和Web站點變成一種服務(wù)而不是混亂的垃圾場。不遠(yuǎn)的將來,我們就可以在家里點擊一下鼠標(biāo),就可以完成出門旅游的全部準(zhǔn)備工作,包括定飛機票,定旅游線路,定好房間等。請注意,這所有的一切都是Web站點間自動完成的,再也不用象現(xiàn)在一樣,表面上是電子商務(wù),實際上很多環(huán)節(jié)都是人工操作。也許你會覺得這是天方夜談,不過就近的說,你也很有可能承接一個項目,要集成兩個企業(yè)的ERP系統(tǒng)。很有可能上游企業(yè)的系統(tǒng)是用Dephi編的,而下游企業(yè)的系統(tǒng)是用Java編的。你說你是Java高手,大家都看者你怎么做呢。所以啊,你還得學(xué)習(xí)新技術(shù),如Web服務(wù),而且你Dephi也要懂一點吧(Dephi6現(xiàn)在已經(jīng)提供Web服務(wù)的控件了)。你編的Java系統(tǒng),可能要和.NET集成,所以你.NET要懂一點吧?到最后,你可能發(fā)現(xiàn)你已經(jīng)成為Java高手了,但很多時間卻在搞別的技術(shù)。太極張三豐里說,最厲害的招式就是沒有招式,可能就是這個道理吧!
因為剛剛興起,所以網(wǎng)上Web服務(wù)的資料不是很多,我還是給大家推薦幾個網(wǎng)站吧: 中國UDDI技術(shù)聯(lián)盟http:///developerWorks/cn/xml/index.shtml?csdnIBM可是Web服務(wù)的力推者
嗚?你費勁千心萬苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡單,真叫人感動??!那么打個電話告訴我吧,什么?我的電話號碼是多少?昏到,你打電話問不就知道了嗎,真是的??