`

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

    博客分类:
  • java
阅读更多

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

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

# DEFAULT CACHE REGION
# sets the default aux value for any non configured caches
jcs.default=
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=2000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.default.elementattributes.IsEternal=false
jcs.default.elementattributes.MaxLifeSeconds=3600
jcs.default.elementattributes.IdleTime=1800
jcs.default.elementattributes.IsSpool=true
jcs.default.elementattributes.IsRemote=true
jcs.default.elementattributes.IsLateral=true

# CACHE REGIONS AVAILABLE
# Regions preconfigured for caching
jcs.region.bookCache=
jcs.region.bookCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.bookCache.cacheattributes.MaxObjects=1200
jcs.region.bookCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.bookCache.elementattributes.IsEternal=false
jcs.region.bookCache.elementattributes.MaxLifeSeconds=7200
jcs.region.bookCache.elementattributes.IdleTime=1800
jcs.region.bookCache.elementattributes.IsSpool=true
jcs.region.bookCache.elementattributes.IsRemote=true
jcs.region.bookCache.elementattributes.IsLateral=true
# AUXILIARY CACHES AVAILABLE
# Primary Disk Cache -- faster than the rest because of memory key storage
jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DC.attributes.DiskPath=/usr/opt/bookstore/raf
jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000
jcs.auxiliary.DC.attributes.MaxKeySize=10000
jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000
jcs.auxiliary.DC.attributes.MaxRecycleBinSize=7500

 

 

然后新建两个类,

import java.io.Serializable;
import java.util.List;
public class Student implements Serializable{
    /**
	 * 
	 */
	public static final long serialVersionUID = 1L;
	public int sno;
	public String sname;
	
	
	public Student()
	{}
	public int getSno(){
     return this.sno;
    }
    public void setSno(int no){
     this.sno=no;
    }
    public String getSname(){
     return this.sname;
    }
    public void setSname(String name){
     this.sname=name;
    }
}

 

 

import org.apache.jcs.JCS;
public class StuObjManager {
	private static StuObjManager instance;
	private static int checkedOut=0;
	public static JCS stuCache;
	private StuObjManager()
	{
		try
		{
			stuCache=JCS.getInstance("stuCache");
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public static StuObjManager getInstance()
	{
		synchronized(StuObjManager.class)
		{
			if(instance==null)
			{
				instance=new StuObjManager();
			}
			
		}
		synchronized(instance)
		{
			instance.checkedOut++;
		}
		return instance;
	}
	
	public Student getStu(int sno)
	{
	  return getStu(sno,true);	
	}
	public Student getStu(int sno,boolean a)
	{
		Student stu=null;
		if(a)
		{
			stu=(Student)stuCache.get("Stu"+sno);
		}
		if(stu==null)
		{
              stu=loadStu(sno);
		}
		return stu;
	}
	public Student loadStu(int sno)
	{
		Student stu=new Student();
		stu.sno=sno;
		try
		{
			boolean found=false;
			found=true;
			if(found)
			{
				stuCache.put("Stu"+sno, stu);
			}
		}
		catch(Exception e)
		{System.out.println("又报错了!");}
		return stu;
	}
	
	public void storeStu(Student stu)
	{
		try
		{
			if(stu.sno!=0)
			{
				stuCache.remove("Stu"+stu.sno);
			}
			stuCache.put("Stu"+stu.sno, stu);
		}
		catch(Exception e)
		{}
	}
	public static void main(String [] args)
	{
		long last=System.currentTimeMillis();
		StuObjManager stu=StuObjManager.getInstance();
		for(int i = 0; i < 2000; i++){
			stu.loadStu(i);
		}
		Student stu1=stu.getStu(8,true);
		System.out.println(stu1.sno);
		System.out.println("所需时间:"+(System.currentTimeMillis()-last));
	}
}

 

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

8
所需时间:1250

分享到:
评论

相关推荐

    java caching system完整项目例子(包括用到的JAR包)

    Java 缓存系统(Java Caching System,简称JCS)是一种高效的、可扩展的缓存解决方案,主要用于提高应用程序性能,减少对数据库的访问频率。它通过存储数据在内存中,使得重复请求的数据能够快速获取,从而降低了...

    JCS1.3开源的缓存架构

    JCS(Java Caching System)是一个开源的、高性能的缓存框架,它主要用于提高应用的性能和响应速度,通过将常用数据存储在内存中,避免了频繁地访问数据库或文件系统。JCS 1.3 版本在早期的版本基础上进行了优化和...

    oscache缓存配置

    osCache基于JCS(Java Caching System)设计,提供了一个灵活的缓存策略,包括设置缓存过期时间、最大容量、内存分配方式等。osCache可以通过XML配置文件或者编程方式进行配置,使得开发者可以根据实际需求定制缓存...

    web_nav

    2. jcs-1.3.jar:Java Caching System (JCS) 是一个内存缓存系统,用于提高Web应用的性能。开发者可以通过JCS存储和检索频繁使用的数据,避免了重复计算或数据库查询,从而降低响应时间。 3. jettison-1.3.3.jar:这...

    CacheManager.zip

    例如,Java中的`Guava Cache`,.NET Framework的`System.Runtime.Caching`,或者分布式缓存如Redis、Memcached等。 3. **缓存穿透**:当请求的数据既不在缓存中也不在数据库中时,可能会导致大量的数据库查询,这...

    hibernate例子

    5. **Caching(缓存)**:提高性能,分为一级缓存(Session 内部缓存)和二级缓存(可配置的外部缓存,如 Ehcache)。 **三、Hibernate 实例应用** 以 `hibernate测试.txt` 和 `hibernatetest` 文件为例,假设我们...

    rest-example:REST应用程序示例

    【REST(Representational State Transfer)】 ... 在"rest-example:REST应用程序示例...通过分析这个REST示例,开发者可以学习到如何使用Java来设计和实现RESTful服务,理解REST的基本原则,并熟悉相关开发工具和框架。

    hibernate-core-4.3.5.final-javadocs-chm

    Javadoc 是一种用于生成关于 Java 类、接口、构造函数、方法等详细信息的工具,通常包含注释、参数、返回值、异常、示例代码等,对于开发者理解和使用 Hibernate 非常有帮助。 **详细知识点:** 1. **Hibernate ...

    GC感知生存时间缓存

    4. **设计模式**:在C#开发中,可以使用如`System.Runtime.Caching`命名空间下的`MemoryCache`类来实现GC感知缓存。这个类提供了内置的过期策略,并且能够集成到.NET的内存管理中。 5. **缓存替换策略**:除了TTL...

    hiberinateapi

    Hibernate API 是一个强大的Java持久化框架,用于简化数据库操作。这个API主要针对关系型数据库,提供了对象-关系映射(ORM)功能,使得开发者可以用面向对象的方式来操作数据库,而无需直接编写SQL语句。在...

    speedframework-开源

    此外,Speedframework 内置了JCS(Java Caching System)缓存系统。JCS是一个高度可配置的、分布式的缓存解决方案,它可以极大地提高应用的性能,减少对数据库的直接访问。通过将频繁访问的数据存储在内存中,JCS...

    DNS测试

    在处理`DNSTest-master`这个压缩包时,我们可以假设它包含了一个示例项目或者测试框架,用于演示如何在Java中进行DNS测试。项目可能包含以下部分: 1. `src/main/java`:源代码目录,可能有一个名为`DNSTest`的类,...

    Manning Zend Framework in Action

    - **使用示例**:为每个组件提供使用示例,帮助开发者更好地理解和使用这些组件。 通过上述内容,我们可以看到,《Manning Zend Framework in Action》是一本全面介绍了 Zend Framework 的书籍,不仅适合初学者快速...

    RestAPI

    开发REST API时,开发者可以使用各种工具和技术,如Node.js的Express框架、Python的Flask或Django框架、Java的Spring Boot等。同时,对于API文档的编写,Swagger或OpenAPI规范可以生成交互式的API文档,方便开发者和...

Global site tag (gtag.js) - Google Analytics