package com.citics.crm.customerwidget.utils; /** * <p>Description: 缓存DTO</p> * @version 1.0 */ public class Cache { private String key;//缓存ID private Object value;//缓存数据 private long timeOut;//更新时间 private boolean expired; //是否终止 public Cache() { super(); } public Cache(String key, Object value, long timeOut, boolean expired) { this.key = key; this.value = value; this.timeOut = timeOut; this.expired = expired; } public String getKey() { return key; } public long getTimeOut() { return timeOut; } public Object getValue() { return value; } public void setKey(String string) { key = string; } public void setTimeOut(long l) { timeOut = l; } public void setValue(Object object) { value = object; } public boolean isExpired() { return expired; } public void setExpired(boolean b) { expired = b; } } package com.citics.crm.customerwidget.utils; import java.util.*; /** * <p>Title: </p> * * <p>Description: 管理缓存</p> * Deep blue 2008-11-28 think * 可扩展的功能:当chche到内存溢出时必须清除掉最早期的一些缓存对象,这就要求对每个缓存对象保存创建时间 * @version 1.0 */ public class CacheUtil { private static HashMap cacheMap = new HashMap(); //单实例构造方法 private CacheUtil() { super(); } //获取布尔值的缓存 public static boolean getSimpleFlag(String key){ try{ return (Boolean) cacheMap.get(key); }catch(NullPointerException e){ return false; } } public static long getServerStartdt(String key){ try { return (Long)cacheMap.get(key); } catch (Exception ex) { return 0; } } //设置布尔值的缓存 public synchronized static boolean setSimpleFlag(String key,boolean flag){ if (flag && getSimpleFlag(key)) {//假如为真不允许被覆盖 return false; }else{ cacheMap.put(key, flag); return true; } } public synchronized static boolean setSimpleFlag(String key,long serverbegrundt){ if (cacheMap.get(key) == null) { cacheMap.put(key,serverbegrundt); return true; }else{ return false; } } //得到缓存。同步静态方法 private synchronized static Cache getCache(String key) { return (Cache) cacheMap.get(key); } //判断是否存在一个缓存 private synchronized static boolean hasCache(String key) { return cacheMap.containsKey(key); } //清除所有缓存 public synchronized static void clearAll() { cacheMap.clear(); } //清除某一类特定缓存,通过遍历HASHMAP下的所有对象,来判断它的KEY与传入的TYPE是否匹配 public synchronized static void clearAll(String type) { Iterator i = cacheMap.entrySet().iterator(); String key; ArrayList<String> arr = new ArrayList<String>(); try { while (i.hasNext()) { java.util.Map.Entry entry = (java.util.Map.Entry) i.next(); key = (String) entry.getKey(); if (key.startsWith(type)) { //如果匹配则删除掉 arr.add(key); } } for (int k = 0; k < arr.size(); k++) { clearOnly(arr.get(k)); } } catch (Exception ex) { ex.printStackTrace(); } } //清除指定的缓存 public synchronized static void clearOnly(String key) { cacheMap.remove(key); } //载入缓存 public synchronized static void putCache(String key, Cache obj) { cacheMap.put(key, obj); } //获取缓存信息 public static Cache getCacheInfo(String key) { if (hasCache(key)) { Cache cache = getCache(key); if (cacheExpired(cache)) { //调用判断是否终止方法 cache.setExpired(true); } return cache; }else return null; } //载入缓存信息 public static void putCacheInfo(String key, Cache obj, long dt,boolean expired) { Cache cache = new Cache(); cache.setKey(key); cache.setTimeOut(dt + System.currentTimeMillis()); //设置多久后更新缓存 cache.setValue(obj); cache.setExpired(expired); //缓存默认载入时,终止状态为FALSE cacheMap.put(key, cache); } //重写载入缓存信息方法 public static void putCacheInfo(String key,Cache obj,long dt){ Cache cache = new Cache(); cache.setKey(key); cache.setTimeOut(dt+System.currentTimeMillis()); cache.setValue(obj); cache.setExpired(false); cacheMap.put(key,cache); } //判断缓存是否终止 public static boolean cacheExpired(Cache cache) { if (null == cache) { //传入的缓存不存在 return false; } long nowDt = System.currentTimeMillis(); //系统当前的毫秒数 long cacheDt = cache.getTimeOut(); //缓存内的过期毫秒数 if (cacheDt <= 0||cacheDt>nowDt) { //过期时间小于等于零时,或者过期时间大于当前时间时,则为FALSE return false; } else { //大于过期时间 即过期 return true; } } //获取缓存中的大小 public static int getCacheSize() { return cacheMap.size(); } //获取指定的类型的大小 public static int getCacheSize(String type) { int k = 0; Iterator i = cacheMap.entrySet().iterator(); String key; try { while (i.hasNext()) { java.util.Map.Entry entry = (java.util.Map.Entry) i.next(); key = (String) entry.getKey(); if (key.indexOf(type) != -1) { //如果匹配则删除掉 k++; } } } catch (Exception ex) { ex.printStackTrace(); } return k; } //获取缓存对象中的所有键值名称 public static ArrayList<String> getCacheAllkey() { ArrayList a = new ArrayList(); try { Iterator i = cacheMap.entrySet().iterator(); while (i.hasNext()) { java.util.Map.Entry entry = (java.util.Map.Entry) i.next(); a.add((String) entry.getKey()); } } catch (Exception ex) {} finally { return a; } } //获取缓存对象中指定类型 的键值名称 public static ArrayList<String> getCacheListkey(String type) { ArrayList a = new ArrayList(); String key; try { Iterator i = cacheMap.entrySet().iterator(); while (i.hasNext()) { java.util.Map.Entry entry = (java.util.Map.Entry) i.next(); key = (String) entry.getKey(); if (key.indexOf(type) != -1) { a.add(key); } } } catch (Exception ex) {} finally { return a; } } }
相关推荐
Java ibatis缓存技术,ibatis缓存的详细解释 值得学习!
关于java程序员发展需要学习的路线整理集合 技术 应用技术 计算机基础知识 cpu mem disk net 线程,进程 第三方库 poi Jsoup zxing Gson 数据结构 树 栈 链表 队列 图 操作系统 linux 代码控制...
Java全能学习面试手册——Java面试题库.zip 01 7道消息队列ActiveMQ面试题!.pdf 02 10道Java高级必备的Netty面试题!.pdf 03 10道Java面试必备的设计模式面试题!.pdf 04 10个Java经典的List面试题!.pdf 05 10个...
使用java编写代码,应用非常流行的spring mvc框架,引入ckeditor插件,并加入localStorage缓存技术,最终利用Eclipse完成。非常适合Java学习者用于练手。 4、Java编辑器 使用Eclipse开发,配合Java语言完成一个...
这是Redis缓存技术的一些运用。代码简洁明了,通俗易懂。可以加深你对redis缓存技术的学习。
Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang...
Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang...
缓存是什么,解决什么问题?可下载下来学习一下。希望能帮到大家。
Java全能学习面试手册——Java架构师进阶资料面试资料.zip 01 7道消息队列ActiveMQ面试题!.pdf 02 10道Java高级必备的Netty面试题!.pdf 03 10道Java面试必备的设计模式面试题!.pdf 04 10个Java经典的List面试题!...
*第十四阶段:Hibernate框架学习,三大框架之一,包括检索映射技术,多表查询技术,缓存技术以及性能方面的优化; *第十五阶段:Spring框架的学习,三大框架之一,包括了IOC,AOP,DataSource,事务,SSH集成以及...
同时整合缓存技术及算法优化,提升交易时效。其次,针对并发高的业务场景需求,新系统对数据库及应用服务的架构进行了优化设计,使之可以根据业务交易量的并发大小,做到动态的弹性扩展, 即当交易量增大时,及时...
入坑了 ,内容主要是对Java SE,Java Web,Java EE框架,Java 高级,面试就业和学习编程进行总结整理思考,适合了解 Java ,想进一步深入Java开发的人。 如果觉得不错,请在这个仓库上点个 star 吧,这也是对我的肯定...
课程除了用到了JAVA的技术栈之外,还包括了kubesphere,K8S,Docker容器与集群,ElasticSearch全栈技术,还有各类缓存技术,控制技术等等,是架构师路上的宝典级课程。 录太长了,达到了1200多集,随机列出了中间...
1.目录 2.JVM 3.JAVA集合 4.JAVA多线程并发 5.JAVA基础 6.Spring 原理 7.微服务 8.Netty 与RPC 9.网络10....11.Zookeeper ...24.分布式缓存 25.Hadoop 26.Spark 27.Storm 28.YARN 29.机器学习 30.云计算
Java高级架构进阶 思维导图 面试真题 架构视频 更多Java架构进阶视频.jpg 0.4MB ...深入理解Redis缓存.zip 494.4MB 千万级并发美团订单处理技术实战.zip 890.8MB 高性能接口单机实现.zip 1.1GB
持久层框架技术 ORM概念、Hibernate核心API、Hibernate实体映射技术、Hibernate关系映射技巧、HQL查询、OSCache及Hibernate缓存技术; 掌握JQuery核心API;了解JQuery基本设计原则;了解多种JQuery插件;掌握DWR的...
本科毕业设计:java基于Springboot框架开发的酒店管理系统(源码+数据库),适合初学者参考学习,项目经过严格测试,确保可以运行! 技术栈 Springboot框架 前端页面采用thymeleaf模板引擎,bootstrap+semantic框架...
本仓库为【Java工程师技术指南】力求打造最完整最实用的Java工程师学习指南!这些文章和总结都是我近几年学习Java总结和整理出来的,非常实用,对于学习Java后端的朋友来说应该是最全面最完整的技术仓库。我靠着这些...
用一千多行Java代码实现的斗地主游戏,后端使用的技术栈是Springboot+SpringCache+Websocket,项目中运用了Java基础及面向对象的各类技术,类、接口、对象、枚举、集合、Map、数组、排序、算法、缓存等都有使用........
Java技术栈:java tech stack,记录相关Java技术,包含学习系列教程,常见面试题,编程思考题,同时会收录我的博客文章,以及业界优秀文章。 关于我的博客: 关于Java技术栈:可以在线访问: 在线思维导图::horse: ...