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

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

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

    期待更好更穩(wěn)定的開源FrameWork的出現(xiàn),讓我們一起努力吧!  
    日歷
    <2007年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234
    統(tǒng)計
    • 隨筆 - 78
    • 文章 - 1
    • 評論 - 29
    • 引用 - 0

    導航

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案(42)

    文章檔案(37)

    相冊

    搜索

    •  

    積分與排名

    • 積分 - 45521
    • 排名 - 1064

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

     

    今天下午,想了好久,終于決定要用OSCache來緩存我的報表統(tǒng)計了,要不覺得效率很低。呵呵,當然我是選擇了opensymphony的OSCache,它可以緩存任何Java對象以及JSP程序,以下是今天下午的成果,寫了一個通用類,再在action里面緩存一下。試了一下,效果還算不錯。
    package com.finegold.digimus.comm;

    import com.opensymphony.oscache.base.persistence.CachePersistenceException;

    /**
     * @author 汪心利 2007-7-5
    *@copyRight WWW.FINEGOLD.COM.CN
    *
    */
    public interface Cache {
     /**
      * 根據(jù)key獲取cache里的對象
      *
      * @param key
      * @return
      * @throws CachePersistenceException
      */
     Object get(Object key) throws CachePersistenceException;

     /**
      * 根據(jù)key以及time獲取cache里的對象,對應 inputOSCache(Object key, Object value, int
      * i)方法添加進去的對象
      *
      * @param key
      * @param time
      * @return
      * @throws CachePersistenceException
      */
     Object get(Object key, int time) throws CachePersistenceException;

     /**
      * 將object添加cache
      *
      * @param key
      * @param value
      * @throws CachePersistenceException
      */
     void inputOSCache(Object key, Object value)
       throws CachePersistenceException;

     /**
      * 將object添加cache
      *
      * @param key
      * @param value
      * @param i
      * @throws CachePersistenceException
      */
     void inputOSCache(Object key, Object value, int i)
       throws CachePersistenceException;

     /**
      * 根據(jù)key刪除object
      *
      * @param key
      * @throws CachePersistenceException
      */
     void remove(Object key) throws CachePersistenceException;

     /**
      * 清空cache
      *
      * @throws CachePersistenceException
      */
     void clear() throws CachePersistenceException;

     /**
      * 銷毀cache
      *
      * @throws CachePersistenceException
      */
     void destroy() throws CachePersistenceException;

     /**
      * 根據(jù)time 獲取key
      *
      * @param time
      * @return
      * @throws CachePersistenceException
      */
     Object getkey(int time) throws CachePersistenceException;
    }

    接口的實現(xiàn)類:
    package com.finegold.digimus.comm;

    /**
     * @author BlueSKy_itwangxinli 2007-7-5
    *@copyRight WWW.FINEGOLD.COM.CN
     */
    import java.util.Properties;

    import org.apache.commons.lang.RandomStringUtils;

    import com.opensymphony.oscache.base.EntryRefreshPolicy;
    import com.opensymphony.oscache.base.NeedsRefreshException;
    import com.opensymphony.oscache.base.persistence.CachePersistenceException;
    import com.opensymphony.oscache.general.GeneralCacheAdministrator;
    import com.opensymphony.oscache.web.filter.ExpiresRefreshPolicy;

    /**
     * OSCache 緩存共用類
     *
     * @author 汪心利 2007-7-5
     */
    public class OSCache implements Cache {
     /**
      * 通用緩存管理類 administrator
      */
     private GeneralCacheAdministrator cache;

     private static OSCache instance;

     public OSCache() {
      this.cache = new GeneralCacheAdministrator();
     }

     /**
      * 指定加載加載cache.propeties fiel 默認情況下加載classes目錄下的OScache.properties
      *
      * @param prop
      */
     public OSCache(Properties prop) {
      this.cache = new GeneralCacheAdministrator(prop);
     }

     /**
      * 返回OSCache 的Instance 單態(tài)模式
      *
      * @return
      */
     public synchronized static OSCache getInstance() {

      if (instance == null) {
       instance = new OSCache();
      }
      return instance;
     }

     /**
      * 設(shè)置緩存容量 default value 請查看oscache配置文件,OSCache系統(tǒng)本身默認值unlimited
      *
      * @param cacheCapacity
      */
     public void setCacheCapacity(int cacheCapacity) {
      this.cache.setCacheCapacity(cacheCapacity);
     }

     /**
      * 根據(jù)Key獲取cache里緩存的object
      *
      * @param key
      *            查找關(guān)鍵字
      */
     public Object get(Object key) throws CachePersistenceException {
      try {
       return this.cache.getFromCache(String.valueOf(key));
      } catch (NeedsRefreshException e) {
       cache.cancelUpdate(String.valueOf(key));
       return null;
      }
     }

     /**
      * 根據(jù)key和time獲取緩存的object
      *
      * @param key
      *            查找的key
      * @param time
      *            (最準確的含義-->)How long the object can stay in cache in seconds
      */
     public Object get(Object key, int time) throws CachePersistenceException {
      try {
       return this.cache.getFromCache(String.valueOf(key), time);
      } catch (NeedsRefreshException e) {
       cache.cancelUpdate(String.valueOf(key));
       return null;
      }
     }

     /**
      * 盡量不要使用該方法 根據(jù)time 獲取key
      *
      * @param time
      *            時間
      */
     public Object getkey(int time) throws CachePersistenceException {
      String key = RandomStringUtils.randomAlphanumeric(10);
      try {
       while (this.cache.getFromCache(key) != null) {
        key = RandomStringUtils.randomAlphanumeric(10);
       }
       return key;
      } catch (NeedsRefreshException e) {
       return key;
      }
     }

     /**
      * 緩存對象
      */
     public void inputOSCache(Object key, Object value)
       throws CachePersistenceException {
      this.cache.putInCache(String.valueOf(key), value);
     }

     /**
      * 緩存對象
      *
      * @param key
      *            緩存對象的key
      * @param value
      *            緩存對象的value
      * @param n
      *            緩存對象有效時間
      */
     public void inputOSCache(Object key, Object value, int n)
       throws CachePersistenceException {
      EntryRefreshPolicy Policy = new ExpiresRefreshPolicy(n);
      this.cache.putInCache(String.valueOf(key), value, Policy);
     }

     /**
      * 根據(jù)key從cache里 刪除object
      *
      * @param 要刪除緩存對象的key
      */
     public void remove(Object key) throws CachePersistenceException {
      this.cache.flushEntry(String.valueOf(key));
     }

     /**
      * 清空所有的緩存
      */
     public void clear() throws CachePersistenceException {
      this.cache.flushAll();
     }

     /**
      * 銷毀緩存
      */
     public void destroy() throws CachePersistenceException {
      this.cache.destroy();
     }
    }
    配置web.xml
     <filter>
          <filter-name>CacheFilter</filter-name>
    <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
     <init-param>
             <param-name>time</param-name>
             <param-value>600</param-value>
          </init-param>
          <init-param>
             <param-name>scope</param-name>
             <param-value>session</param-value>
          </init-param>
    </filter>



    posted on 2007-07-05 17:53 BlueSky_itwangxinli 閱讀(665) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
     
    Copyright © BlueSky_itwangxinli Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 一个人免费视频在线观看www| 成人免费视频试看120秒| 99re在线这里只有精品免费| 亚洲码在线中文在线观看| 国产免费MV大全视频网站| 国产又黄又爽又猛的免费视频播放| 一级成人毛片免费观看| 亚洲欧洲日韩在线电影| 777爽死你无码免费看一二区| 亚洲色欲色欲www在线播放| 国产成人精品久久亚洲| 看Aⅴ免费毛片手机播放| 久久久无码精品亚洲日韩蜜桃| 免费h视频在线观看| 亚洲人成色在线观看| 在线观看视频免费国语| 亚洲日本VA午夜在线影院| 国产亚洲成av片在线观看| 99在线免费视频| 亚洲日韩精品无码专区| 亚洲国产高清视频| 亚洲?v女人的天堂在线观看| 1000部夫妻午夜免费| 久久免费视频一区| 亚洲精品国产suv一区88| 亚洲一区二区三区四区在线观看| 国产免费人成视频在线观看| 777爽死你无码免费看一二区 | 免费人成黄页在线观看日本| 亚洲av永久无码| 久久夜色精品国产亚洲av| 嫩草影院在线免费观看| 8888四色奇米在线观看免费看| 看一级毛片免费观看视频| 一本色道久久综合亚洲精品蜜桃冫| 亚洲国产成人久久综合碰碰动漫3d| 四虎影库久免费视频| 成人免费在线视频| 黄色永久免费网站| 99久9在线|免费| 久久国产精品国产自线拍免费|