java 缓存框架java caching system使用示例

来源:互联网 发布:coreidraw是什么软件 编辑:程序博客网 时间:2024/05/29 18:52
javacachingsystem框架exceptionstring

  要使用java caching system,需要下面这几个包:jcs.jar,concurrent.jar,commons-logging.jar, commons-lang.jar,commons-collection.jar这几个包,在java工程里面,

首先新建一个使用jcs的配置文件:cache.ccf,文件名不能改。

[java] view plaincopyprint?
  1. # DEFAULT CACHE REGION  
  2. # sets the default aux value for any non configured caches  
  3. jcs.default=  
  4. jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes  
  5. jcs.default.cacheattributes.MaxObjects=2000  
  6. jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache  
  7. jcs.default.elementattributes.IsEternal=false  
  8. jcs.default.elementattributes.MaxLifeSeconds=3600  
  9. jcs.default.elementattributes.IdleTime=1800  
  10. jcs.default.elementattributes.IsSpool=true  
  11. jcs.default.elementattributes.IsRemote=true  
  12. jcs.default.elementattributes.IsLateral=true  
  13.   
  14. # CACHE REGIONS AVAILABLE  
  15. # Regions preconfigured for caching  
  16. jcs.region.bookCache=  
  17. jcs.region.bookCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes  
  18. jcs.region.bookCache.cacheattributes.MaxObjects=1200  
  19. jcs.region.bookCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache  
  20. jcs.region.bookCache.elementattributes.IsEternal=false  
  21. jcs.region.bookCache.elementattributes.MaxLifeSeconds=7200  
  22. jcs.region.bookCache.elementattributes.IdleTime=1800  
  23. jcs.region.bookCache.elementattributes.IsSpool=true  
  24. jcs.region.bookCache.elementattributes.IsRemote=true  
  25. jcs.region.bookCache.elementattributes.IsLateral=true  
  26. # AUXILIARY CACHES AVAILABLE  
  27. # Primary Disk Cache -- faster than the rest because of memory key storage  
  28. jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory  
  29. jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes  
  30. jcs.auxiliary.DC.attributes.DiskPath=/usr/opt/bookstore/raf  
  31. jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000  
  32. jcs.auxiliary.DC.attributes.MaxKeySize=10000  
  33. jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000  
  34. jcs.auxiliary.DC.attributes.MaxRecycleBinSize=7500  

 

然后新建两个类,

[java] view plaincopyprint?
  1. import java.io.Serializable;  
  2. import java.util.List;  
  3. public class Student implements Serializable{  
  4.     /** 
  5.      *  
  6.      */  
  7.     public static final long serialVersionUID = 1L;  
  8.     public int sno;  
  9.     public String sname;  
  10.       
  11.       
  12.     public Student()  
  13.     {}  
  14.     public int getSno(){  
  15.      return this.sno;  
  16.     }  
  17.     public void setSno(int no){  
  18.      this.sno=no;  
  19.     }  
  20.     public String getSname(){  
  21.      return this.sname;  
  22.     }  
  23.     public void setSname(String name){  
  24.      this.sname=name;  
  25.     }  
  26. }  

 

[java] view plaincopyprint?
  1. import org.apache.jcs.JCS;  
  2. public class StuObjManager {  
  3.     private static StuObjManager instance;  
  4.     private static int checkedOut=0;  
  5.     public static JCS stuCache;  
  6.     private StuObjManager()  
  7.     {  
  8.         try  
  9.         {  
  10.             stuCache=JCS.getInstance("stuCache");  
  11.         }  
  12.         catch(Exception e)  
  13.         {  
  14.             e.printStackTrace();  
  15.         }  
  16.     }  
  17.       
  18.     public static StuObjManager getInstance()  
  19.     {  
  20.         synchronized(StuObjManager.class)  
  21.         {  
  22.             if(instance==null)  
  23.             {  
  24.                 instance=new StuObjManager();  
  25.             }  
  26.               
  27.         }  
  28.         synchronized(instance)  
  29.         {  
  30.             instance.checkedOut++;  
  31.         }  
  32.         return instance;  
  33.     }  
  34.       
  35.     public Student getStu(int sno)  
  36.     {  
  37.       return getStu(sno,true);    
  38.     }  
  39.     public Student getStu(int sno,boolean a)  
  40.     {  
  41.         Student stu=null;  
  42.         if(a)  
  43.         {  
  44.             stu=(Student)stuCache.get("Stu"+sno);  
  45.         }  
  46.         if(stu==null)  
  47.         {  
  48.               stu=loadStu(sno);  
  49.         }  
  50.         return stu;  
  51.     }  
  52.     public Student loadStu(int sno)  
  53.     {  
  54.         Student stu=new Student();  
  55.         stu.sno=sno;  
  56.         try  
  57.         {  
  58.             boolean found=false;  
  59.             found=true;  
  60.             if(found)  
  61.             {  
  62.                 stuCache.put("Stu"+sno, stu);  
  63.             }  
  64.         }  
  65.         catch(Exception e)  
  66.         {System.out.println("又报错了!");}  
  67.         return stu;  
  68.     }  
  69.       
  70.     public void storeStu(Student stu)  
  71.     {  
  72.         try  
  73.         {  
  74.             if(stu.sno!=0)  
  75.             {  
  76.                 stuCache.remove("Stu"+stu.sno);  
  77.             }  
  78.             stuCache.put("Stu"+stu.sno, stu);  
  79.         }  
  80.         catch(Exception e)  
  81.         {}  
  82.     }  
  83.     public static void main(String [] args)  
  84.     {  
  85.         long last=System.currentTimeMillis();  
  86.         StuObjManager stu=StuObjManager.getInstance();  
  87.         for(int i = 0; i < 2000; i++){  
  88.             stu.loadStu(i);  
  89.         }  
  90.         Student stu1=stu.getStu(8,true);  
  91.         System.out.println(stu1.sno);  
  92.         System.out.println("所需时间:"+(System.currentTimeMillis()-last));  
  93.     }  
  94. }  

 

运行类StuObjManager里面的main函数,结果如下:

8
所需时间:1250

原创粉丝点击