卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

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

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

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

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

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

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

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

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

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

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

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

如果要多線程,請(qǐng)使用線程池;

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

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

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

LRU算法:最近最少使用。簡(jiǎn)單來(lái)說(shuō),就是把數(shù)據(jù)塊中每次使用過(guò)的數(shù)據(jù)放在數(shù)據(jù)塊的前端,然后它會(huì)存在最長(zhǎng)的時(shí)間。剔除長(zhǎng)數(shù)據(jù),即數(shù)據(jù)塊末尾的數(shù)據(jù)。這是LRU算法。

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

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

實(shí)施LRU:

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

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

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)。訪問(wèn)數(shù)據(jù)時(shí),如果數(shù)據(jù)項(xiàng)存在于鏈表中,則將節(jié)點(diǎn)移動(dòng)到鏈表的頭部,否則返回-1。這樣,鏈表末尾的節(jié)點(diǎn)就是最長(zhǎng)時(shí)間沒(méi)有被訪問(wèn)的最后一個(gè)數(shù)據(jù)項(xiàng)。