`
august_000
  • 浏览: 34038 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

自己编写泛型通用 Ehcache入门

阅读更多
今天周末在家,无聊中看了下Ehcache,把我的Hello world 发表出了,呵呵:
1.下载Ehcache包
   [url]http://nchc.dl.sourceforge.net/project/ehcache/ehcache/ehcache-2.4.2/ehcache-2.4.2-distribution.tar.gz
[/url]

2.ECLIPSE 创建java工程
(见附件)

GeneralCacheLoader.java
3.主要类

package com.sm.test;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

/**
 * 通用CacheLoader
 * @author Share Mu
 * @param <T>
 */
public class GeneralCacheLoader<T> {
	private static final CacheManager  cacheManager  = new CacheManager(GeneralCacheLoader.class.getResource("ehcache.xml"));
	private String cacheName=null;
	public void setCacheName(String cacheName) {
		this.cacheName = cacheName;
	}
	public void setIdp(ICacheDataProvider idp) {
		this.idp = idp;
	}

	public GeneralCacheLoader(){
	}
	private ICacheDataProvider idp;
	public GeneralCacheLoader(String cacheName ,  ICacheDataProvider idp){
		this.cacheName = cacheName;
		this.idp = idp;
	}
	public T load(String id){
		if((T)getCache().get(id)==null)
		{
			
			T t =(T)idp.get(id);
			if(t!=null)
			{
				getCache().put(new Element(id,t));
			}
			return t;
		}
		T p  = (T)getCache().get(id).getValue();
		return p;
	}
	
	public Cache getCache(){
		return cacheManager.getCache(cacheName);
	}
	
	public void clear(){
		cacheManager.getCache(cacheName).removeAll();
	}
	
	public void remove(String id){
		cacheManager.getCache(cacheName).remove(id);
	}
	
	
}

ICacheDataProvider.java
public interface ICacheDataProvider {
	public Object get(String id);
}


PersonDataProviderImpl.java
package com.sm.test;

import java.util.HashMap;
import java.util.Map;

/**
 * 为Person cache提供数据
 * @author Share Mu
 *
 */
public class PersonDataProviderImpl implements  ICacheDataProvider{
	private Map<Long,Person> source = new HashMap<Long,Person>();
	public PersonDataProviderImpl(){
		for(Long i = 0L ; i<100;i++)
		{
			Person ps = new Person();
			ps.setId(i);
			ps.setCode("code_"+i);
			ps.setName("name_"+i);
			source.put(i,ps);
		}
	}
	public Object get(String id) {
		System.out.println("aaaaaaaaaaaaaa");
		return source.get(new Long(id));
	}

}


PersonEhcacheTest.java
package com.sm.test;

/**
 * 测试类
 * @author Share Mu
 *
 */
public class PersonEhcacheTest {
	public static void main(String[] args)
	{
		PersonDataProviderImpl pdp = new PersonDataProviderImpl();
		GeneralCacheLoader<Person> pelps = new GeneralCacheLoader<Person>("mypersoncache",pdp);
		long c1 = System.currentTimeMillis();
		Person p = pelps.load("88");
		long c2 = System.currentTimeMillis();
		System.out.print("耗时"+(c2-c1));
		if(p==null)
		{
			System.out.println("没发现....");
		}else{
			System.out.println("发现了...."+p.getName()+"--"+p.getCode());
		}
		
		long c3 = System.currentTimeMillis();
		p = pelps.load("88");
		long c4 = System.currentTimeMillis();
		System.out.print("耗时"+(c4-c3));
		if(p==null)
			{
				System.out.println("没发现....");
			}else{
				System.out.println("发现了...."+p.getName()+"--"+p.getCode());
			}
	}
}

分享到:
评论

相关推荐

    java开源包1

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包11

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包2

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包3

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包6

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包5

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包10

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包4

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包8

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包7

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包9

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包101

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    Java资源包01

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    JAVA上百实例源码以及开源项目源代码

    将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示...

Global site tag (gtag.js) - Google Analytics