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

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

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

    posts - 9, comments - 4, trackbacks - 0, articles - 21
    Java]用OSCache進(jìn)行緩存對象

    1、OSCache是什么?
         OSCache標(biāo)記庫由OpenSymphony設(shè)計,它是一種開創(chuàng)性的緩存方案,它提供了在現(xiàn)有JSP頁面之內(nèi)實(shí)現(xiàn)內(nèi)存緩存的功能。OSCache是個 一個被廣泛采用的高性能的J2EE緩存框架,OSCache還能應(yīng)用于任何Java應(yīng)用程序的普通的緩存解決方案。
    2、OSCache的特點(diǎn)
        (1) 緩存任何對象:你可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。
        (2) 擁有全面的API:OSCache API允許你通過編程的方式來控制所有的OSCache特性。
        (3) 永久緩存:緩存能被配置寫入硬盤,因此允許在應(yīng)用服務(wù)器的多次生命周期間緩存創(chuàng)建開銷昂貴的數(shù)據(jù)。
        (4) 支持集群:集群緩存數(shù)據(jù)能被單個的進(jìn)行參數(shù)配置,不需要修改代碼。
        (5) 緩存過期:你可以有最大限度的控制緩存對象的過期,包括可插入式的刷新策略(如果默認(rèn)性能不能滿足需要時)。
    3、OSCache的安裝與配置
        網(wǎng)上已經(jīng)有一個不錯的使用教程:http://blog.csdn.net/ezerg/archive/2004/10/14/135769.aspx
    4、有關(guān)“用OSCache進(jìn)行緩存對象”的研究
        這個是我今天要說的東西。網(wǎng)上對于OSCache緩存Web頁面很多說明和例子,但對于緩存對象方面說得不多,我就把自已寫得一些東西放出來,讓大家看一看是怎樣緩存對象的!
        我基于GeneralCacheAdministrator類來寫的BaseCache類
       
    1. package com.klstudio.cache;   
    2.   
    3. import java.util.Date;   
    4.   
    5. import com.opensymphony.oscache.base.NeedsRefreshException;   
    6. import com.opensymphony.oscache.general.GeneralCacheAdministrator;   
    7.   
    8. public class BaseCache extends GeneralCacheAdministrator {   
    9.     //過期時間(單位為秒);   
    10.     private int refreshPeriod;   
    11.     //關(guān)鍵字前綴字符;   
    12.     private String keyPrefix;   
    13.        
    14.     private static final long serialVersionUID = -4397192926052141162L;   
    15.        
    16.     public BaseCache(String keyPrefix,int refreshPeriod){   
    17.         super();   
    18.         this.keyPrefix = keyPrefix;   
    19.         this.refreshPeriod = refreshPeriod;   
    20.     }   
    21.     //添加被緩存的對象;   
    22.     public void put(String key,Object value){   
    23.         this.putInCache(this.keyPrefix+"_"+key,value);   
    24.     }   
    25.     //刪除被緩存的對象;   
    26.     public void remove(String key){   
    27.         this.flushEntry(this.keyPrefix+"_"+key);   
    28.     }   
    29.     //刪除所有被緩存的對象;   
    30.     public void removeAll(Date date){   
    31.         this.flushAll(date);   
    32.     }   
    33.        
    34.     public void removeAll(){   
    35.         this.flushAll();   
    36.     }   
    37.     //獲取被緩存的對象;   
    38.     public Object get(String key) throws Exception{   
    39.         try{   
    40.             return this.getFromCache(this.keyPrefix+"_"+key,this.refreshPeriod);   
    41.         } catch (NeedsRefreshException e) {   
    42.             this.cancelUpdate(this.keyPrefix+"_"+key);   
    43.             throw e;   
    44.         }   
    45.   
    46.     }   
    47.        
    48. }   
    49.   
    50.   

       通過CacheManager類來看怎樣緩存對象的,這個類中所用的News只是具體功能的類,我就不貼出來了,你可以自己寫一個!
       
    1. package com.klstudio;   
    2.   
    3. import com.klstudio.News;   
    4. import com.klstudio.cache.BaseCache;   
    5.   
    6. public class CacheManager {   
    7.        
    8.     private BaseCache newsCache;   
    9.   
    10.        
    11.     private static CacheManager instance;   
    12.     private static Object lock = new Object();   
    13.        
    14.     public CacheManager() {   
    15.         //這個根據(jù)配置文件來,初始BaseCache而已;   
    16.         newsCache = new BaseCache("news",1800);        
    17.     }   
    18.        
    19.     public static CacheManager getInstance(){   
    20.         if (instance == null){   
    21.             synchronized( lock ){   
    22.                 if (instance == null){   
    23.                     instance = new CacheManager();   
    24.                 }   
    25.             }   
    26.         }   
    27.         return instance;   
    28.     }   
    29.   
    30.     public void putNews(News news) {   
    31.         // TODO 自動生成方法存根   
    32.         newsCache.put(news.getID(),news);   
    33.     }   
    34.   
    35.     public void removeNews(String newsID) {   
    36.         // TODO 自動生成方法存根   
    37.         newsCache.remove(newsID);   
    38.     }   
    39.   
    40.     public News getNews(String newsID) {   
    41.         // TODO 自動生成方法存根   
    42.         try {   
    43.             return (News) newsCache.get(newsID);   
    44.         } catch (Exception e) {   
    45.             // TODO 自動生成 catch 塊   
    46.             System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage());   
    47.             News news = new News(newsID);   
    48.             this.putNews(news);   
    49.             return news;   
    50.         }   
    51.     }   
    52.   
    53.     public void removeAllNews() {   
    54.         // TODO 自動生成方法存根   
    55.         newsCache.removeAll();   
    56.     }   
    57.   
    58. }   
    59.   
    主站蜘蛛池模板: 亚洲国产香蕉人人爽成AV片久久| 色窝窝免费一区二区三区| 又粗又硬免费毛片| 久久精品熟女亚洲av麻豆| 四虎www免费人成| 亚洲成av人片在www鸭子| 国产成人免费永久播放视频平台| 亚洲精华国产精华精华液| 国产中文字幕免费| 一级a性色生活片久久无少妇一级婬片免费放 | h视频在线观看免费| 亚洲性久久久影院| 久久精品成人免费网站| 亚洲高清资源在线观看| 国产麻豆视频免费观看| 激情婷婷成人亚洲综合| 中文字幕亚洲不卡在线亚瑟| 国产偷伦视频免费观看| 亚洲精品熟女国产| 国产美女精品久久久久久久免费 | 中文字幕无码播放免费| 亚洲中文字幕久久精品无码VA| 精品久久久久久久免费人妻| 免费在线观看的网站| 亚洲国产精品日韩av不卡在线| 男人的天堂亚洲一区二区三区| 亚洲av无码av在线播放| 国产亚洲成归v人片在线观看| 午夜理伦剧场免费| 亚洲精品国产高清在线观看| 亚洲成a人片在线观看国产| 一区二区三区无码视频免费福利| 91嫩草亚洲精品| 99久久免费精品视频| 亚洲最大的成人网| 亚洲三区在线观看无套内射| 一区二区无码免费视频网站| 中文字幕的电影免费网站| 久久精品亚洲AV久久久无码 | 亚洲AV乱码久久精品蜜桃| 成人毛片免费观看视频在线|