成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

hashmap負(fù)載因子擴(kuò)容為啥是2倍 JAVA開發(fā)常用的性能優(yōu)化有哪些?

JAVA開發(fā)常用的性能優(yōu)化有哪些?如果你還沒有 t沒有系統(tǒng)整理,只是說一些共性的東西,說說自己的想法,有一些關(guān)于代碼的細(xì)節(jié),有的可能是一些方法和習(xí)慣。避免創(chuàng)建過多的Java對象:例如,在循環(huán)中創(chuàng)建對象

JAVA開發(fā)常用的性能優(yōu)化有哪些?

如果你還沒有 t沒有系統(tǒng)整理,只是說一些共性的東西,說說自己的想法,有一些關(guān)于代碼的細(xì)節(jié),有的可能是一些方法和習(xí)慣。

避免創(chuàng)建過多的Java對象:例如,在循環(huán)中創(chuàng)建對象需要時(shí)間來創(chuàng)建和回收;

盡量使用局部變量,或者換句話說,根據(jù)變量的作用域在適當(dāng)?shù)牡胤蕉x變量;

最小化計(jì)算/運(yùn)算:這里其實(shí)有很多需要注意的點(diǎn)。舉個(gè)簡單的例子,如果給定10個(gè)id查詢數(shù)據(jù)庫,是執(zhí)行where id 10次還是執(zhí)行where id in(list) 1次;

使用StringBuffer和Collection時(shí),如果可以確認(rèn)元素的長度/個(gè)數(shù),盡量指定元素的長度/個(gè)數(shù);因?yàn)槟J(rèn)值比較小,所以它們在擴(kuò)展的時(shí)候會有一些性能損失;

基本數(shù)據(jù)類型轉(zhuǎn)換為字符串,使用toString()而不是;

關(guān)閉finally塊中的流,養(yǎng)成好習(xí)慣;

盡量少用正則表達(dá)式;如果非要用,盡量緩存模式;

如果要多線程,請使用線程池;

如果沒有必要,用HashMap和ArrayList代替HashTable和Vector;根據(jù)需要選擇是使用ArrayList還是Link

lru置換算法實(shí)現(xiàn)方法?

LRU是一種頁面替換算法。對于內(nèi)存中不被使用的數(shù)據(jù)塊,稱為LRU,操作系統(tǒng)會根據(jù)那些屬于LRU的數(shù)據(jù),將它們移出內(nèi)存,騰出空間來加載其他數(shù)據(jù)。

LRU算法:最近最少使用。簡單來說,就是把數(shù)據(jù)塊中每次使用過的數(shù)據(jù)放在數(shù)據(jù)塊的前端,然后它會存在最長的時(shí)間。剔除長數(shù)據(jù),即數(shù)據(jù)塊末尾的數(shù)據(jù)。這是LRU算法。

LRU的全稱最近才被使用,這意味著它沒有被使用的時(shí)間最長。

LRU算法的設(shè)計(jì)原則是,如果一個(gè)數(shù)據(jù)最近沒有被訪問過,那么將來也不太可能被訪問。也就是說,當(dāng)有限的空間被數(shù)據(jù)填滿時(shí),最長時(shí)間沒有被訪問的數(shù)據(jù)應(yīng)該被淘汰。

實(shí)施LRU:

1.數(shù)組用于存儲數(shù)據(jù),每個(gè)數(shù)據(jù)項(xiàng)都標(biāo)有訪問時(shí)間戳。每次插入新數(shù)據(jù)項(xiàng)時(shí),數(shù)組中現(xiàn)有數(shù)據(jù)項(xiàng)的時(shí)間戳都會遞增,新數(shù)據(jù)項(xiàng)的時(shí)間戳設(shè)置為0并插入數(shù)組。每次訪問數(shù)組中的數(shù)據(jù)項(xiàng)時(shí),被訪問數(shù)據(jù)項(xiàng)的時(shí)間戳被設(shè)置為0。當(dāng)數(shù)組空間已滿時(shí),刪除時(shí)間戳最大的數(shù)據(jù)項(xiàng)。

2.使用鏈表,每次插入新數(shù)據(jù)時(shí),都會在鏈表的頭部插入新數(shù)據(jù);每次緩存命中(即數(shù)據(jù)被訪問),數(shù)據(jù)被移動(dòng)到鏈表的頭部;然后當(dāng)鏈表寫滿時(shí),鏈表末尾的數(shù)據(jù)會被丟棄。

3.使用鏈表和散列表。當(dāng)需要插入新數(shù)據(jù)項(xiàng)時(shí),如果新數(shù)據(jù)項(xiàng)存在于鏈表中(一般稱為hit),將節(jié)點(diǎn)移動(dòng)到鏈表的頭部;如果不存在,創(chuàng)建一個(gè)新的節(jié)點(diǎn),放在鏈表的頭部;如果緩存已滿,刪除鏈表的最后一個(gè)節(jié)點(diǎn)。訪問數(shù)據(jù)時(shí),如果數(shù)據(jù)項(xiàng)存在于鏈表中,則將節(jié)點(diǎn)移動(dòng)到鏈表的頭部,否則返回-1。這樣,鏈表末尾的節(jié)點(diǎn)就是最長時(shí)間沒有被訪問的最后一個(gè)數(shù)據(jù)項(xiàng)。