写了一个Java的简单缓存模型
来源:互联网 发布:网络固定电话软件 编辑:程序博客网 时间:2024/06/05 20:07
缓存操作接口
/** * 缓存操作接口 * * @author xiudong * * @param <T> */public interface Cache<T> {/** * 刷新缓存数据 * * @param key 缓存key * @param target 新数据 */void refresh(String key, T target);/** * 获取缓存 * * @param key 缓存key * @return 缓存数据 */T getCache(String key);/** * 判断缓存是否过期 * * @param key 缓存key * @return 如果缓存过期返回true, 否则返回false */Boolean isExpired(String key);/** * 设置缓存过期时间 * * @param key 缓存key * @param millsec 缓存过期时间,单位:毫秒 */void setExpired(Long millsec);/** * 是否存在缓存对象 * * @param key 缓存key * @return 存在返回true,不存在返回false */Boolean exist(String key);}
import java.util.Date;/** * 缓存实体 * * @author xiudong * * @param <T> */public class LastCache<T> {/** * 上次缓存的数据 */private T data;/** * 最后刷新时间 */private long refreshtime;public LastCache(T data) {this(data, new Date().getTime());}public LastCache(T data, long refreshtime) {this.data = data;this.refreshtime = refreshtime;}public T getData() {return data;}public void setData(T data) {this.data = data;}public long getRefreshtime() {return refreshtime;}public void setRefreshtime(long refreshtime) {this.refreshtime = refreshtime;}}
import java.util.Date;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;/** * 简单的缓存模型 * * @author xiudong * * @param <T> */public class SimpleCached<T> implements Cache<T> {/** * 缓存数据索引 */private Map<String, LastCache<T>> cache = new ConcurrentHashMap<String, LastCache<T>>();/** * 缓存超时时间,单位:毫秒 */private Long expired = 0L;public SimpleCached() {this(5 * 1000 * 60L);}public SimpleCached(Long expired) {this.expired = expired;}@Overridepublic void refresh(String key, T target) {if (cache.containsKey(key)) {cache.remove(key);}cache.put(key, new LastCache<T>(target));}@Overridepublic T getCache(String key) {if (!this.exist(key)) {return null;}return cache.get(key).getData();}@Overridepublic Boolean isExpired(String key) {if (!this.exist(key)) {return null;}long currtime = new Date().getTime();long lasttime = cache.get(key).getRefreshtime();return (currtime - lasttime) > expired;}@Overridepublic void setExpired(Long millsec) {this.expired = millsec;}@Overridepublic Boolean exist(String key) {return cache.containsKey(key);}}
0 0
- 写了一个Java的简单缓存模型
- 用java写了一个非常简单的网页爬虫
- 无奈自己写了一个简单的JDBC查询缓存,分享一下
- 闲来无事,用Java的软引用写了一个山寨的缓存
- 写了一个简单的日期检测工具
- 写了一个简单的AJAX程序
- 写了一个简单的FireFox插件
- 今天写了一个简单的Shell
- 写了一个简单ResideMenu的Demo
- 写了一个简单的数据库连接池
- java 60 行代码写一个简单可用的并且带过期时间的内存缓存
- 多线程学习--写一个简单的缓存系统
- 一个简单的JAVA 缓存实现
- 一个简单的java缓存实现
- Java实现一个简单的缓存
- 一个简单的java缓存类
- 利用Java的反射机制,写了一个简单的仿Gson的解析器
- 用JAVA写了一个简单的JS代码格式化工具
- 潍坊地产营销进入微时代
- 虚拟方法 对比 动态方法
- 注意Unity的API文档中既有类(引用)又有结构(值)
- 你在哪里用MessageBox?
- Linux上机笔记(2) vim 下编写C语言
- 写了一个Java的简单缓存模型
- nodejs 网址收集
- ZOJ 3466 The Hive II
- 【mongoDB】 备份
- build.xml:278: Unable to find a javac compiler;
- 本人的cocos2d-x之路
- 天空的心事,只有云懂
- 如何建立独立博客
- 借助TPM实现软件的版权保护和授权体系