<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一葉笑天
    雄關漫道真如鐵, 而今邁步從頭越。 從頭越, 蒼山如海, 殘陽如血。
    posts - 73,comments - 7,trackbacks - 0
    原文地址:http://www.uusam.com/uu/blog/article.asp?id=60

    EHCache 是一個純java的,在Hibernate2.1充當可插入的的在進程中的緩存,它具有以下緩存,最小的依賴性,全面的文特性:快速,簡單,豐富的文檔和測試用例。

        官方網站 http://ehcache.sourceforge.net/

    --------------------------
    ----------使用簡介------------
    --------------------------
        ehcache-1.2 cacheNames 列表的取得;

        方法一:
            CacheManager.create();
            String[] cacheNames = CacheManager.getInstance().getCacheNames();

        方法二:
            CacheManager manager = new CacheManager();
            String[] cacheNames = manager.getCacheNames();

        方法三:
            CacheManager manager1 = new CacheManager("src/config/ehcache1.xml");
            CacheManager manager2 = new CacheManager("src/config/ehcache2.xml");
            String[] cacheNamesForManager1 = manager1.getCacheNames();
            String[] cacheNamesForManager2 = manager2.getCacheNames();


        ehcache-1.2 管理器各種建立的方法:

        方法一:
             CacheManager manager = new CacheManager();

        方法二:
            CacheManager manager = new CacheManager("src/config/ehcache.xml");

        方法三:
            URL url = getClass().getResource("/anotherconfigurationname.xml");
            CacheManager manager = new CacheManager(url);

        方法四:
            InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());
            try {
                CacheManager manager = new CacheManager(fis);
            } finally {
                fis.close();
            }


        添加和刪除緩存元素

            設置一個名為test 的新cache,test屬性為默認
            CacheManager singletonManager = CacheManager.create();
            singletonManager.addCache("testCache");
            Cache test = singletonManager.getCache("testCache");

            設置一個名為test 的新cache,并定義其屬性
            CacheManager singletonManager = CacheManager.create();
            Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
            manager.addCache(memoryOnlyCache);
            Cache test = singletonManager.getCache("testCache");
            
            Cache 屬性說明:

                構造函數:
                public Cache(java.lang.String name,
                             int maxElementsInMemory,
                             boolean overflowToDisk,
                             boolean eternal,
                             long timeToLiveSeconds,
                             long timeToIdleSeconds)

                參數說明:
                name                          - 元素名字。
                    maxElementsInMemory           - 設定內存中創建對象的最大值。
                    overflowToDisk                - 設置當內存中緩存達到 maxInMemory 限制時元素是否可寫到磁盤
                                                           上。
                    eternal                       - 設置元素(譯注:內存中對象)是否永久駐留。如果是,將忽略超
                                                          時限制且元素永不消亡。
                    timeToIdleSeconds             - 設置某個元素消亡前的停頓時間。
                                                          也就是在一個元素消亡之前,兩次訪問時間的最大時間間隔值。
                                                          這只能在元素不是永久駐留時有效(譯注:如果對象永恒不滅,則
                                                          設置該屬性也無用)。
                                                          如果該值是 0 就意味著元素可以停頓無窮長的時間。
                    timeToLiveSeconds             - 為元素設置消亡前的生存時間。
                                                           也就是一個元素從構建到消亡的最大時間間隔值。
                                                           這只能在元素不是永久駐留時有效。

            刪除緩存元素:
            CacheManager singletonManager = CacheManager.create();
            singletonManager.removeCache("test");


        關閉緩存管理器 CacheManager
            
            CacheManager.getInstance().shutdown();


        對于緩存對象的操作:
            放入一個簡單的對象到緩存元素;
            Cache cache = manager.getCache("sampleCache1");
            Element element = new Element("key1", "value1");
            cache.put(element);

            得到一個序列化后的對象屬性值;
            Cache cache = manager.getCache("sampleCache1");
            Element element = cache.get("key1");
            Serializable value = element.getValue();

            得到一個沒有序列化后的對象屬性值;
            Cache cache = manager.getCache("sampleCache1");
            Element element = cache.get("key1");
            Object value = element.getObjectValue();
            
            刪除一個對象從元素;
            Cache cache = manager.getCache("sampleCache1");
            Element element = new Element("key1", "value1"
            cache.remove("key1");

        對于永固性磁盤存儲,立即存儲到磁盤:

            Cache cache = manager.getCache("sampleCache1");
            cache.flush();


        獲得緩存大小:
            得到緩存的對象數量;
            Cache cache = manager.getCache("sampleCache1");
            int elementsInMemory = cache.getSize();

            得到緩存對象占用內存的數量
            Cache cache = manager.getCache("sampleCache1");
            long elementsInMemory = cache.getMemoryStoreSize();

            得到緩存對對象占用磁盤的數量
            Cache cache = manager.getCache("sampleCache1");
            long elementsInMemory = cache.getDiskStoreSize();

        關于緩存的讀取和丟失的記錄
            得到緩存讀取的命中次數;
            Cache cache = manager.getCache("sampleCache1");
            int hits = cache.getHitCount();
            
            得到內存中緩存讀取的命中次數;
            Cache cache = manager.getCache("sampleCache1");
            int hits = cache.getMemoryStoreHitCount();

            得到磁盤中緩存讀取的命中次數;
            Cache cache = manager.getCache("sampleCache1");
            int hits = cache.getDiskStoreCount();
            
            得到緩存讀取的丟失次數;
            Cache cache = manager.getCache("sampleCache1");
            int hits = cache.getMissCountNotFound();

            得到緩存讀取的已經被銷毀的對象丟失次數;
            Cache cache = manager.getCache("sampleCache1");
            int hits = cache.getMissCountExpired();

    --------------------------
    ----------簡單例子------------
    --------------------------

        實戰:
            XML文件格式:

                <ehcache>

                    <diskStore path="java.io.tmpdir"/>

                    <defaultCache
                            maxElementsInMemory="10000"
                            eternal="false"
                            timeToIdleSeconds="120"
                            timeToLiveSeconds="120"
                            overflowToDisk="true"
                            diskPersistent="false"
                            diskExpiryThreadIntervalSeconds="120"
                            memoryStoreEvictionPolicy="LRU"
                            />

                    <cache name="cache1"
                           maxElementsInMemory="10000"
                           eternal="false"
                           overflowToDisk="true"
                           timeToIdleSeconds="2"
                           timeToLiveSeconds="3"
                           memoryStoreEvictionPolicy="LFU"
                            />
                            
                </ehcache>

        源碼:

            import java.io.Serializable;

            import net.sf.ehcache.Cache;
            import net.sf.ehcache.CacheManager;
            import net.sf.ehcache.Element;

            /**
             #############################################################################
             # DESCRIBE ehcache 緩存操作DEMO
             # AUTHOR   悠~游
             # DATE     2006-7-10
             # COMPANY  FLX
             # PORJECT  ehcache-demo
             #############################################################################
             */

            public class Demo {
                
                static CacheManager manager= new CacheManager();

                /**
                 *##############################################################################
                 *
                 * @DESCRIBE    
                 * @param args
                 * @throws InterruptedException
                 *                        
                 *##############################################################################
                 */
                public static void main(String[] args) throws InterruptedException {
                    
                    String[] cacheNames = manager.getCacheNames();
                    System.out.println("讀取的緩存列表為:");
                    for(int i=0;i<cacheNames.length;i++){
                        System.out.println("-- "+(i+1)+" "+cacheNames[i]);
                    }
                    
                    Cache cache = manager.getCache("cache1");
                    Element element = new Element("key1", "value1");
                    cache.put(element);
                    
                    element = cache.get("key1");
                    Serializable value = element.getValue();
                    System.out.println("序列化后的值為:"+value.toString());

                    element = cache.get("key1");
                    Object value1 = element.getObjectValue();
                    System.out.println("未序列化的值為:"+value1.toString());
                    
                    int elementsInMemory = cache.getSize();
                    System.out.println("得到緩存的對象數量:"+elementsInMemory);
                    
                    long elementsInMemory1 = cache.getMemoryStoreSize();
                    System.out.println("得到緩存對象占用內存的數量:"+elementsInMemory1);
                    
                    long elementsInMemory2 = cache.getDiskStoreSize();
                    System.out.println("得到緩存對對象占用磁盤的數量:"+elementsInMemory2);        
                    
                    int hits = cache.getHitCount();
                    System.out.println("得到緩存讀取的命中次數:"+hits);        
                    
                    int hits1 = cache.getMemoryStoreHitCount();
                    System.out.println("得到內存中緩存讀取的命中次數:"+hits1);        
                    
                    int hits2 =cache.getDiskStoreHitCount();
                    System.out.println("得到磁盤中緩存讀取的命中次數:"+hits2);        
                    
                    int hits3 = cache.getMissCountNotFound();
                    System.out.println("得到緩存讀取的丟失次數:"+hits3);        
                    
                    int hits4 = cache.getMissCountExpired();
                    System.out.println("得到緩存讀取的已經被銷毀的對象丟失次數:"+hits4);    
                }

            }

    posted on 2008-08-14 16:59 一葉笑天 閱讀(258) 評論(0)  編輯  收藏 所屬分類: 開源技術
    主站蜘蛛池模板: 看成年女人免费午夜视频| 亚洲人成网亚洲欧洲无码| 亚洲精品无码专区久久同性男| 亚洲自国产拍揄拍| 久久久久久亚洲av无码蜜芽| 最近免费中文字幕视频高清在线看| 国产一区二区三区在线免费观看| 亚洲伊人久久大香线蕉AV| 无码视频免费一区二三区| 亚洲欧美日韩综合久久久| 免费jjzz在线播放国产| 男女交性无遮挡免费视频| 国产亚洲成归v人片在线观看 | 亚欧日韩毛片在线看免费网站| 中文字幕亚洲日本岛国片| 最近中文字幕大全免费版在线 | 亚洲激情黄色小说| 久久经典免费视频| 国产精品久久久亚洲| 亚洲国产精品一区二区三区在线观看| 大地资源免费更新在线播放| 色窝窝亚洲av网| 国产精品亚洲аv无码播放| 日韩免费电影网址| 久久久久精品国产亚洲AV无码| 成在人线av无码免费高潮喷水| 久久亚洲美女精品国产精品| 五月天婷婷免费视频| 亚洲夜夜欢A∨一区二区三区| 无码日韩精品一区二区三区免费 | 国产免费一区二区三区| 自拍偷区亚洲国内自拍| 亚洲国产精品尤物yw在线 | 国产成人精品无码免费看| 亚洲成人黄色在线观看| 国产成人免费片在线观看| 亚洲综合色一区二区三区| 一级毛片直播亚洲| 美女黄频免费网站| 免费大学生国产在线观看p| 久久精品国产免费|