學(xué)習(xí)java的必備技巧
學(xué)習(xí)java的必備技巧
知識(shí)改變命運(yùn),對(duì)于Java程序員來說,技術(shù)不斷更新,只有及時(shí)充電,才能不被市場淘汰,下面學(xué)習(xí)啦小編收集了一些關(guān)于學(xué)習(xí)java的技巧,希望對(duì)你有幫助
學(xué)習(xí)java的6個(gè)技巧
一定要看書
現(xiàn)在學(xué)習(xí)Java變得比以前容易多了,除了有大量的視頻教程外,還有專業(yè)的java培訓(xùn)機(jī)構(gòu),這都使學(xué)習(xí)變得更加傻瓜化,然而我要說的是,Java雖然變得越來越容易學(xué),然而那只代表入門容易,并不代表這門編程技術(shù)就真的變簡單了。
如果僅僅學(xué)了些皮毛,高手寫的程序你是望塵莫及的。在學(xué)習(xí)的過程中,書籍永遠(yuǎn)是知識(shí)最好的載體,很多優(yōu)秀的程序員大師精心編撰的編程書籍,富含的不僅僅是一些知識(shí),更多的是他們所傳授的思想,通過看書,專研書籍中的內(nèi)容,會(huì)讓你變得更加聰明,寫的程序也更加的精煉。
2編程的時(shí)候,一定要獨(dú)立思考
現(xiàn)在網(wǎng)絡(luò)很發(fā)達(dá),我見很多程序員總愛百度,包括我?guī)У脑S多人都是這樣,一個(gè)jdbc這么初級(jí)的東東,他們編程幾年了,每次用還總是百度查。這個(gè)東西應(yīng)該是熟記于心的,隨時(shí)用,信手拈來,這樣才能成為高手。就好像一個(gè)修理工,一遍查手冊(cè),一邊給你修車,亦或是一個(gè)醫(yī)生,一邊看教程,一邊給你看病,想想就覺得恐怖。
3算法很重要,要不斷的優(yōu)化程序
現(xiàn)在很多人都是快速的學(xué)習(xí),快速的練習(xí),反復(fù)的練習(xí)。而我的建議是,無論你學(xué)到什么階段,都要去不斷的優(yōu)化自己的編程,能用3行實(shí)現(xiàn)的程序,不用5行,這樣你編寫的程序才能更加凝練。而且,編程學(xué)習(xí)的中后期,就要重視算法,盡量編程優(yōu)質(zhì)的程序,這才是編程的美妙之處。
4寫一個(gè)程序,不斷改進(jìn)
你學(xué)習(xí)的過程可能很漫長,我建議你從一開始的時(shí)候,就想著寫一個(gè)小程序,比如一個(gè)計(jì)算器的程序,開始可能很簡單,僅僅通過命令行的方式呈現(xiàn),功能可能也只有加減乘除,但是隨著你學(xué)習(xí)的深入,你可以不斷的完善這個(gè)程序,直到有一天,你把它做成一個(gè)非常完善,性能非常卓越的程序后,你就真正學(xué)成了。
5記得寫一些經(jīng)驗(yàn)和技巧,要不斷總結(jié)
不要做黑瞎子,掰苞米,掰一個(gè)丟一個(gè)。要學(xué)會(huì)總結(jié),經(jīng)常把自己遇到的問題及解決思想記錄下來,還要記下來自己的經(jīng)驗(yàn)和技巧,然后經(jīng)常瀏覽自己曾經(jīng)記下的這些東西,這樣有了積累,你會(huì)發(fā)現(xiàn),你成長的很快。
6每個(gè)月至少研究一個(gè)技術(shù)點(diǎn)
直到今天,我還是會(huì)經(jīng)常專研一個(gè)技術(shù)點(diǎn),比如js的一個(gè)矩陣算法,實(shí)現(xiàn)色彩的霓虹燈變換;亦或是,Java多線程內(nèi)存自動(dòng)優(yōu)化技術(shù)。
Java 性能優(yōu)化的五大技巧
1. 調(diào)整垃圾收集(GC)
由于垃圾收集的復(fù)雜性,很難發(fā)現(xiàn)你的應(yīng)用的準(zhǔn)確性能.不過,如果你真的想優(yōu)化你的應(yīng)用,你應(yīng)該相應(yīng)地處理垃圾收集.通用的準(zhǔn)則是調(diào)整GC設(shè)置并同時(shí)執(zhí)行性能分析.
一旦你對(duì)結(jié)果感到滿意,你可以停止該過程并尋求其他優(yōu)化方式.確保除了在平均事務(wù)處理時(shí)間之外,你還留心了異常值.這些異常值是造成Java應(yīng)用緩慢的真正的罪魁禍?zhǔn)撞⑶液茈y找到。
此外,你要明白應(yīng)用運(yùn)行期間性能下降的效應(yīng).在每單個(gè)cpu時(shí)鐘內(nèi)的緩慢操作是可以忽略的,但在每單個(gè)數(shù)據(jù)庫事務(wù)中的緩慢操作則是非常昂貴的消耗.但是你應(yīng)該根據(jù)性能短板選擇你的優(yōu)化策略,并應(yīng)該根據(jù)工作負(fù)載來優(yōu)化應(yīng)用.
2. 正確地選擇適合你的GC算法
讓我們更深入地探討GC優(yōu)化.畢竟,GC優(yōu)化是要處理的整個(gè)優(yōu)化問題中最基本的.目前,Java中有四種供你選擇的垃圾收集算法.每種算法滿足不同的需求,因此你要選擇(適合你的需求的).很多開發(fā)人員正是因?yàn)椴涣私釭C算法而未能優(yōu)化他們的應(yīng)用.
這四個(gè)算法分別是串行回收器,并行/吞吐量回收器,CMS回收器和G1回收器.想要了解更多關(guān)于每種垃圾收集器的信息及它們是如何工作的,請(qǐng)查看這篇來自Takipi博客的非常棒的文章Garbage Collectors—Serial vs. Parallel vs. CMS vs. G1(http://blog.takipi.com/garbage-collectors-serial-vs-parallel-vs-cms-vs-the-g1-and-whats-new-in-java-8/). 這篇文章同時(shí)還討論了Java8對(duì)GC算法的影響及其他細(xì)節(jié)上的改變.讓我們?cè)倩氐紾C算法上,根據(jù)Understanding Java Garbage Collection(http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/)這篇文章所述,并發(fā)標(biāo)記和清除GC(即”CMS”)算法才是適合網(wǎng)絡(luò)服務(wù)端應(yīng)用的最佳算法.并行GC算法適合那些內(nèi)部可預(yù)測(cè)的應(yīng)用.
G1和CMS是并發(fā)操作的理想選擇,但仍然會(huì)引起(應(yīng)用)頻繁停頓.實(shí)際的選擇取決于你如何取舍.舉例來說,盡管選擇并行算法會(huì)帶來更長的GC停頓時(shí)間,但相較于其他GC算法,選擇并行算法仍是一個(gè)好主意.
3.Java 堆
Java內(nèi)存堆在迎合內(nèi)存需求方面擔(dān)任了至關(guān)重要角色.通常更好的做法是初始時(shí)分配最小的堆,然后通過持續(xù)的測(cè)試不斷增加它的大小.大多數(shù)時(shí)候優(yōu)化問題都可以通過增加堆的大小解決,但如果存在大量的GC開銷,則該解決方案不起作用.
GC開銷還會(huì)使吞吐量急劇下降,進(jìn)而使得應(yīng)用難以形容的慢.此外,及早調(diào)整GC可以幫助你避免堆大小分配的問題.開始的時(shí)候,你可以選擇任何1GB到8GB的堆大小.當(dāng)你選擇正確的堆大小,老生代和新生代對(duì)象的概念也就不需要了.總而言之,堆大小應(yīng)該取決于老生代和新生代對(duì)象的比率,之前的GC優(yōu)化和對(duì)象集合(即所有對(duì)象占用的內(nèi)存大小).
4. 關(guān)鍵應(yīng)用優(yōu)化
關(guān)鍵代碼優(yōu)化是優(yōu)化你的Java應(yīng)用最好的方式.如果你的應(yīng)用對(duì)GC和堆優(yōu)化沒有反應(yīng),那么最好是做架構(gòu)改進(jìn)并關(guān)注于你的應(yīng)用是如何處理信息的.使用聰明的算法并管理好對(duì)象就能解決大量的問題,包括內(nèi)存碎片,堆大小問題和垃圾收集的問題.
5.使用最優(yōu)的函數(shù)
Java提供了多個(gè)函數(shù)來提升算法效率.如果你使用StringBuilder代替簡單的String,你可以得到微乎其微的性能提升.不過,我們還有其他方式在代碼層面進(jìn)行優(yōu)化.讓我們看看下面這些優(yōu)化方法.
猜你感興趣: