java快取框架Ehcache學習筆記
阿新 • • 發佈:2018-11-26
今天第二個要學習的是: Ehcache快取框架。 目標仍然是三個: 1.有什麼用; 2.怎麼用; 3.大致原理;
1.什麼是Ehcahce:
這個英語有些複雜看不懂了,但是這是官網給出的解釋。 總之,它就是做快取的。 快取與記憶體密切相關。 我的一點理解就是: 快取與程式在執行時都代表了程序的抽象。 對於那些具有嚴格結構關係的就是程式,或者說上上下文。 而對於那些結構不那麼嚴謹的,或者相關性不強的就可以稱為快取。 它本身就是一個儲存,但是由於它的速度極快。 所以用作快取,它的出現是為了協調CPU與硬體間的速度上的巨大差距。
百度百科的釋義是:
2.Ehcache如何使用:
導包之類的準備操作略過,官網給出的程式碼:
package com.automannn; import org.ehcache.Cache; import org.ehcache.CacheManager; import org.ehcache.config.builders.CacheConfigurationBuilder; import org.ehcache.config.builders.CacheManagerBuilder; import org.ehcache.config.builders.ResourcePoolsBuilder; /** * @author
[email protected] * @time 2018/11/25 13:58 */ public class Main { public static void main(String[] args) { //1.快取管理器 CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() .withCache("preConfigured", CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(100)) .build()) .build(true); //2.快取 Cache<Long, String> preConfigured = cacheManager.getCache("preConfigured", Long.class, String.class); Cache<Long, String> myCache = cacheManager.createCache("myCache", CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(100)).build()); //3.網快取中存 myCache.put(1L, "da one!"); String value = myCache.get(1L); System.out.println(value); cacheManager.close(); } }
執行結果:
注意,這個環境下也是需要slf4j日誌框架來支撐的。 當沒有具體的日誌實現時,它的核心業務邏輯任然能跑通。這是與quartz不一樣的地方。
3.大致原理:
大致原理我不想看原始碼了,我現在很想放縱。
舉個例子:
package com.automannn;
import java.util.HashMap;
import java.util.Map;
/**
* @author [email protected]
* @time 2018/11/25 14:50
*/
public class Main1 {
public static final Map cache = new HashMap();
public static void main(String[] args) {
cache.put("key","hello cache!");
String value= (String) cache.get("key");
System.out.println(value);
}
}
執行結果:
要知道,這個時候,這個變數既可以充當上下文環境,也可以充當 快取。 效果還是很強大的。 只不過它沒有一些 外延的功能。 如效能優化,儲存方案的適配,不同狀態儲存策略等等。 加上這些應該就是一個框架了吧。