Cache4J--缓存策略
来源:互联网 发布:深圳快乐彩开奖数据 编辑:程序博客网 时间:2024/05/21 08:44
原文: http://blog.sina.com.cn/s/blog_48a45b950100f3ht.html
Cache4J目前支持三种缓存策略:FIFO、LFU和LRU,利用FIFOComparator、LFUComparator和LRUComparator这三个比较器进行实现。这三个实现了java.util.Comparator接口
利用该接口提供的compare方法对缓冲器中的缓存对象进行比较、选择和淘汰。可以通过实现Comparator接口来实现自定义的缓存策略。
LRU - Least Recently Used, 没有被使用时间最长的。
LFU - Least Frequenty Used, 一定时间段内使用次数最少的。
FIFO - First In First Out, 先进先出策略。
FIFOComparator:先进先出策略是根据缓存对象的创建时间来比较的。
public class FIFOComparator implements Comparator {
public int compare(Object o1, Object o2) {
CacheObject co1 = (CacheObject)o1;
CacheObject co2 = (CacheObject)o2;
returnco1.getCreateTime()<co2.getCreateTime() ? -1:
co1.getCreateTime()==co2.getCreateTime() ?
(co1.getId()<co2.getId()?-1:(co1.getId()==co2.getId()?0:1)):1;
}
public boolean equals(Object obj) {
return obj==null ? false : (obj instanceof FIFOComparator);
}
}
LFUComparator:最近最不常用使用是根据总的访问次数进行比较的。
public class LFUComparator implements Comparator {
public int compare(Object o1, Object o2) {
CacheObject co1 = (CacheObject)o1;
CacheObject co2 = (CacheObject)o2;
returnco1.getAccessCount()<co2.getAccessCount() ? -1 :
co1.getAccessCount()==co2.getAccessCount() ?
(co1.getId()<co2.getId()? -1:(co1.getId()==co2.getId()?0:1)):1;
}
public boolean equals(Object obj) {
return obj==null ? false : (obj instanceof LFUComparator);
}
}
LRUComparator:最近最少使用是根据上次访问的时间进行比较的。
public class LRUComparator implements Comparator {
public int compare(Object o1, Object o2) {
CacheObject co1 = (CacheObject)o1;
CacheObject co2 = (CacheObject)o2;
returnco1.getLastAccessTime()<co2.getLastAccessTime() ? -1 :
co1.getLastAccessTime()==co2.getLastAccessTime() ?
(co1.getId()<co2.getId()?-1:(co1.getId()==co2.getId()?0:1)):1;
}
public boolean equals(Object obj) {
return obj==null ? false : (obj instanceof LRUComparator);
}
}
- Cache4J--缓存策略
- 缓存策略;
- 缓存策略
- 缓存策略
- 缓存策略
- 缓存系列--缓存策略
- 缓存Memcached以及缓存策略
- 缓存Memcached以及缓存策略
- 缓存Memcached以及缓存策略
- 缓存Memcached以及缓存策略
- 缓存策略的改动
- 页面缓存策略
- Ehcache缓存回收策略
- squid缓存策略
- 双存储缓存策略
- ibatis 数据缓存策略
- Hibernate数据缓存策略
- Sprite缓存策略总结
- 暑假C语言学习总结之二
- asp 分页代码,asp简单分页代码
- 涡流系统测试之读文件画图模块
- android
- 查看数据库、表、索引的物理存储情况
- Cache4J--缓存策略
- 暑假C语言学习总结之三
- vc自定义消息的发送与接收的方法实现
- 每天读一遍,坚持27天,你的英语水平就可以达到跟美国人交流的水平啦
- 百日祭
- 用qt SDK 构建meego touch 开发环境
- 快速排序思想分析
- Linux 2.6.19.x 内核编译配置选项简介
- Dynamic Instance Resizing and log buffer