说明:

java本地缓存的使用,方便快捷

代码:

1、新建一个Cache实体

package com.jdc.cache;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; }
} 

2、管理缓存

package com.jdc.cache;
import java.util.HashMap;//Description: 管理缓存 //可扩展的功能:当chche到内存溢出时必须清除掉最早期的一些缓存对象,这就要求对每个缓存对象保存创建时间 public class CacheManager { private volatile static  HashMap cacheMap ;//单实例构造方法 private CacheManager() { super(); } public static HashMap getCache() {  if (cacheMap == null) {  synchronized (HashMap.class) {  if (cacheMap == null) { cacheMap = new HashMap();  }  }  }  return cacheMap;  }//得到缓存。同步静态方法 private synchronized static Cache getCache(String key) { return (Cache) getCache().get(key); } //判断是否存在一个缓存 public synchronized static boolean hasCache(String key) { return getCache().containsKey(key); } //获取缓存信息 public static Cache getCacheInfo(String key) { if (hasCache(key)) { Cache cache = getCache(key); if (cacheExpired(cache)) { //调用判断是否终止方法 cache.setExpired(true); return null;} return cache; }else return null; } //重写载入缓存信息方法 public static void putCacheInfo(String key,Object obj,long dt){ Cache cache = new Cache(); cache.setKey(key);if(dt<0){cache.setTimeOut(dt);}else {cache.setTimeOut(dt+System.currentTimeMillis());}cache.setValue(obj);cache.setExpired(false); getCache().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; } }} 

3、测试缓存

package com.jdc.cache;public class Test {public static void main(String[] args){CacheManager.putCacheInfo("pda", "test", 1000*60*60);System.out.println("缓存已存入");Cache cache = CacheManager.getCacheInfo(String.valueOf("pda"));String value = (String)cache.getValue();System.out.println(value);}}

java本地Cache缓存的使用相关推荐

  1. java中Cache缓存的使用

    java中Cache缓存 1.JSR107 缓存的整体架构: 2.SpringBoot的缓存抽象 几个重要概念以及缓存注解 其中想要使用缓存直接,就必须开启**@EnableCaching**注解 开 ...

  2. Java本地高性能缓存的几种实现方式

    Java缓存技术可分为远端缓存和本地缓存,远端缓存常用的方案有著名的redis和memcache,而本地缓存的代表技术主要有HashMap,Guava Cache,Caffeine和Encahche. ...

  3. java本地定时缓存,单例可执行外部接口

    环境: 有些对外提供的工具模块不是很好引用reids依赖,需要使用本地缓存,本来行想省事直接使用hutool的超时缓存-TimedCache,但是这个工具是真的坑逼,到时间调用get方法还是能获取到数 ...

  4. Caffeine Cache~高性能 Java 本地缓存之王

    前面刚说到Guava Cache,他的优点是封装了get,put操作:提供线程安全的缓存操作:提供过期策略:提供回收策略:缓存监控.当缓存的数据超过最大值时,使用LRU算法替换.这一篇我们将要谈到一个 ...

  5. java本地缓存简介

    java中的本地缓存,工作后陆续用到,一直想写,一直无从下手,最近又涉及到这方面的问题了,梳理了一下.自己构造单例.guava.ehcache基本上涵盖了目前的大多数行为了. 为什么要有本地缓存? 在 ...

  6. java本地缓存_java缓存——(五)LocalCache本地缓存分享

    LocalCache本地缓存分享 前言 一.本地缓存应用场景 二.java本地缓存标准 三.java开源缓存框架 四.LocalCache实现 结束语 前言 本次分享探讨java平台的本地缓存,是指占 ...

  7. java 本地缓存框架_5个强大的Java分布式缓存框架推荐

    在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的 缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了 ...

  8. 聊一聊JAVA中的缓存规范 —— 虽迟但到的JCache API与天生不俗的Spring Cache

    为何需要规范 上一章中构建的最简化版本的缓存框架,虽然可以使用,但是也存在一个问题,就是它对外提供的实现接口都是框架根据自己的需要而自定义的.这样一来,项目集成了此缓存框架,后续如果想要更换缓存框架的 ...

  9. java cache缓存_涨姿势:为什么Java中“1000==1000”为false,而”100==100“为true?

    为什么 Java 中"1000==1000"为false,而"100==100"为true?  这是一个挺有意思的讨论话题. 如果你运行下面的代码: Integ ...

最新文章

  1. 【随记】hexo文章加密
  2. Springboot整合RabbitMq-用心看完这一篇就够了(最新)
  3. mysql emoji 显示不出来_解决 Mysql 存取 emoji 表情的问题
  4. Teamcenter 入门开发系列问答(3)
  5. 【jQuery笔记Part1】12-jQuery元素的角标
  6. STM32F103基于固件库创建工程模板
  7. 高效记忆/形象记忆(13)110数字编码表 71-80
  8. BFS算法解题套路框架(附习题)
  9. window-批量创建文件夹
  10. keil函数和变量无法跳转到定义处的原因有哪些
  11. 电驴 链接不到服务器
  12. ArcGIS\QGIS无插件加载(无偏移)MapBox高清影像图
  13. 推广网店的12个秘诀
  14. 低频(LF)RFID 智能终端
  15. dedeCMS采集规则各大CMS采集规则通用
  16. 转:电子邮件的工作原理
  17. 施耐德Galaxy VX-数据中心模块化UPS的理想选择
  18. 数据库管理系统实验及答案
  19. 如何使用ArcGIS制作三维地形图
  20. bat脚本学习(一)

热门文章

  1. Android集成百度语音识别
  2. 流媒体-H264协议-编码-x264学习-相关概念x264编译及文件解析(一)
  3. 第二届“大数据在清华”高峰论坛,敬请期待!
  4. JAVA架构之路(设计模式之观察者模式)
  5. get the sack
  6. 【ES】一、ES入门及JavaAPI使用
  7. MarkDown: 为字体添加颜色
  8. OpenMP编程指南
  9. Android 后台开发
  10. 中文汉字数字转罗马数字方法