Google Guava 基礎知識

2021-09-10 12:03:32 字數 2445 閱讀 2914

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) 類

類,是物件導向語言的基礎。類的三大特性 封裝 繼承 多型。最基本的特性就是封裝性。程式設計師用程式描述世界,將世界的所有事物都看成物件,怎麼描述這個物件?那就是類了。也就是用類來封裝物件。用書上的話說,類是具有相同屬性和行為的物件的抽象。寶馬汽車 別克汽車 五菱之光汽車.基本具有相同的屬性和行為,所...

電腦的基礎知識 電腦的基礎知識

電腦的組成部分與其作用 一 軟體系統 軟體系統的組成分別是 作業系統 應用軟體等。其應用軟體是指特定領域開發 並為特定目的服務的一類軟體。而作業系統是位於底層硬碟與使用者之間溝通的橋梁。使用者可以通過作業系統的使用者頁面,輸入命令,實現使用者需求。二 硬體系統 硬體系統是指構成計算機的物理裝置,即由...