浏览 2999 次
锁定老帖子 主题:实现一个简单的hash型对象缓存管理池
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-18
最后修改:2009-12-18
实现的功能: 1. 将对象按唯一的标识ID存入缓存池(池内部用hashMap 实现); 2. 通过唯一标示ID高速读取池中的对象,如果对象已经失效,返回空; 3. 自动计算对象的存取时间,使用频率,使用次数,缓存命中次数和访问次数; 4. 对于使用频率低,使用次数少,空闲时间长的对象,自动从缓存池中删除; 5. 参数可配置,监视器自己实现,不依赖其他包,功能简单;
把源码包发上来,抛砖引玉哈,希望大家多多批评!
下面的代码是初始化和使用方法!
ObjectCachePool<String, Object> dataCache = new ObjectCachePool<String, Object>( CacheConfig.getIntProperty("cache", "maxSize"), CacheConfig.getIntProperty("cache", "minSize") ); //是否自动清理 dataCache.setAutoClean(CommonUtils.parseBoolean(CacheConfig.getGameProperty("cache", "isAutoClean"),true)); //状态报告间隔 dataCache.setStateTimes(CacheConfig.getIntProperty("cache", "stateTimes")); //清理工作临界值 dataCache.setCriticalSize(CacheConfig.getIntProperty("cache", "criticalSize")); //最大清除数量 dataCache.setMaxCleanSize(CacheConfig.getIntProperty("cache", "maxCleanSize")); //最大允许空闲时间 大于此值,将被列入清除范围 dataCache.setMaxFreeTime(CacheConfig.getIntProperty("cache", "maxFreeTime")); //最小允许访问率 小于此值,将被列入清除范围 dataCache.setMinAccFrq(CacheConfig.getDoubleProperty("cache", "minAccFrq")); //最小允许访问次数 小于此值,将被列入清除范围 dataCache.setMinAccNum(CacheConfig.getIntProperty("cache", "minAccNum")); //设置缓存监视器 dataCache.setMonitor(new CacheMonitor()); dataCache.startMonitor(); 一些参数的意义如下:
stateTimes 状态信息输出间隔时间 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-18
其中暴露 get() put() 和 remove() 三个方法
不允许被迭代操作; remove() 并不马上生效,而是被列入清除范围; 当一个对象被 remove 以后,如果还没有真正被删除,那么任然可以缓存命中! |
|
返回顶楼 | |
发表时间:2009-12-23
请问, 并发是什么考虑的
|
|
返回顶楼 | |
发表时间:2009-12-27
暂未考虑并发,线程非安全的~~~
|
|
返回顶楼 | |