ps: 範例
loadingcachegraphs = cachebuilder.newbuilder()
.maximumsize(1000)
.expireafterwrite(10, timeunit.minutes)
.removallistener(my_listener)
.build(
new cacheloader()
});
1、建立1)loadingcache是附帶cacheloader構建而成的快取實現。建立cacheloader通常只需要簡單地實現v load(k key) throws exception方法
2、查詢
1)get(k) :從loadingcache查詢的正規方式。這個方法要麼返回已經快取的值,要麼使用cacheloader向快取原子地載入新值。
ps:
loadingcachegraphs = cachebuilder.newbuilder()
.maximumsize(1000)
.build(
new cacheloader()
});...try catch (executionexception e)
2)getunchecked(k):定義的cacheloader沒有宣告任何檢查型異常,則可以通過getunchecked(k)查詢快取
ps:
loadingcachegraphs = cachebuilder.newbuilder()
.expireafteraccess(10, timeunit.minutes)
.build(
new cacheloader()
});...return graphs.getunchecked(key);
3)getall(iterable<? extends k>):用來執行批量查詢。單獨呼叫cacheloader.load來載入快取項。
3、新增
1)put(key, value):直接覆蓋掉給定鍵之前對映的值。
1、基於容量的**(size-based eviction)
cachebuilder.maximumsize(long):快取將嘗試**最近沒有使用或總體上很少使用的快取項(lru),**在快取項的數目逼近限定值時。
cachebuilder.weigher(weigher):指定乙個權重函式
ps:
loadingcachegraphs = cachebuilder.newbuilder()
.maximumweight(100000)
.weigher(new weigher()
}).build(
new cacheloader()
});
2、定時**(timed eviction)
expireafteraccess(long, timeunit):快取項在給定時間內沒有被讀/寫訪問,則**。請注意這種快取的**順序和基於大小**一樣。
expireafterwrite(long, timeunit):快取項在給定時間內沒有被寫訪問(建立或覆蓋),則**。
3、基於引用的**(reference-based eviction)
顯式清除
任何時候,你都可以顯式地清除快取項,而不是等到它被**:
個別清除:cache.invalidate(key)
批量清除:cache.invalidateall(keys)
清除所有快取項:cache.invalidateall()
移除***
cachebuilder.removallistener(removallistener):快取項被移除時做一些額外操作。快取項被移除時,removallistener會獲取移除通知[removalnotification],其中包含移除原因[removalcause]、鍵和值。
cacheloaderloader = new cacheloader() };
removallistenerremovallistener = new removallistener() };
return cachebuilder.newbuilder()
.expireafterwrite(2, timeunit.minutes)
.removallistener(removallistener)
.build(loader);
警告:
預設情況下,***方法是在移除快取時同步呼叫的。因為快取的維護和請求響應通常是同時進行的,代價高昂的***方法在同步模式下會拖慢正常的快取請求。在這種情況下,你可以使用removallisteners.asynchronous(removallistener, executor)把***裝飾為非同步操作。
C 基礎知識整理 基礎知識(2) 類
類,是物件導向語言的基礎。類的三大特性 封裝 繼承 多型。最基本的特性就是封裝性。程式設計師用程式描述世界,將世界的所有事物都看成物件,怎麼描述這個物件?那就是類了。也就是用類來封裝物件。用書上的話說,類是具有相同屬性和行為的物件的抽象。寶馬汽車 別克汽車 五菱之光汽車.基本具有相同的屬性和行為,所...
C 基礎知識整理 基礎知識(2) 類
類,是物件導向語言的基礎。類的三大特性 封裝 繼承 多型。最基本的特性就是封裝性。程式設計師用程式描述世界,將世界的所有事物都看成物件,怎麼描述這個物件?那就是類了。也就是用類來封裝物件。用書上的話說,類是具有相同屬性和行為的物件的抽象。寶馬汽車 別克汽車 五菱之光汽車.基本具有相同的屬性和行為,所...
電腦的基礎知識 電腦的基礎知識
電腦的組成部分與其作用 一 軟體系統 軟體系統的組成分別是 作業系統 應用軟體等。其應用軟體是指特定領域開發 並為特定目的服務的一類軟體。而作業系統是位於底層硬碟與使用者之間溝通的橋梁。使用者可以通過作業系統的使用者頁面,輸入命令,實現使用者需求。二 硬體系統 硬體系統是指構成計算機的物理裝置,即由...