上代码:

 package com.utils.cacheutils;

 import com.situopenapi.constant.EhcacheConstants;
import com.situopenapi.constant.GestureImageConstants;
import com.situopenapi.data.systemUtils.ExecResult;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element; import java.util.List; /**
* 使用ehcache进行数据的缓存
*
*/
public class EhcacheManager { private static CacheManager cacheManager; static {
cacheManagerInit();
} /**
* EhcacheConstants.CACHE_NAME, cache name
* EhcacheConstants.MAX_ELEMENTS_MEMORY, 缓存最大个数
* EhcacheConstants.WHETHER_OVERFLOW_TODISK, 内存不足时是否启用磁盘缓存
* EhcacheConstants.WHETHER_ETERNAL, 缓存中的对象是否为永久的,如果是,超过设置将被忽略,对象从不过期
* EhcacheConstants.timeToLiveSeconds, 缓存数据的生存时间;元素从构建到消亡的最大时间间隔值,只在元素不是永久保存时生效;若该值为0表示该元素可以停顿无穷长的时间
* EhcacheConstants.timeToIdleSeconds 对象在失效前的允许闲置时间,仅当eternal=false对象不是永久有效时使用;可选属性,默认值是0可闲置时间无穷大;
*/
private static CacheManager cacheManagerInit() {
if (cacheManager == null) { //创建一个缓存管理器
cacheManager = CacheManager.create();
//建立一个缓存实例
Cache memoryOnlyCache = new Cache(EhcacheConstants.CACHE_NAME, EhcacheConstants.MAX_ELEMENTS_MEMORY, EhcacheConstants.WHETHER_OVERFLOW_TODISK, EhcacheConstants.WHETHER_ETERNAL, EhcacheConstants.timeToLiveSeconds, EhcacheConstants.timeToIdleSeconds);
//在内存管理器中添加缓存实例
cacheManager.addCache(memoryOnlyCache);
return cacheManager;
}
return cacheManager;
} /**
* 向缓存中添加元素
*
* @param key
* @param value
*/
public static void put(String ehcacheInstanceName, String key, ExecResult<Object> value) {
Cache cache = cacheManager.getCache(ehcacheInstanceName);
cache.put(new Element(key, value)); } /**
* 根据key获取对应的value值
*
* @param key
* @return
*/
public static Object getValue(String ehcacheInstanceName, Object key) {
Cache cache = cacheManager.getCache(ehcacheInstanceName);
Object value = cache.get(key).getObjectValue();
return value;
} /**
*获取缓存中最新的结果
*
* @return 最后一次添加的结果集
*/
public static Object getLastValue(String ehcacheInstanceName) {
boolean flag = true; Cache cache = cacheManager.getCache(ehcacheInstanceName);
List keys = cache.getKeys();
String string = getMaxKey(keys).toString();
return getValue(ehcacheInstanceName, string);;
} /**
* 在缓存管理器中获取一个缓存实例
* 返回缓存数据个数
*
* @return
*/
public static int getCacheSize(String ehcacheInstanceName) {
Cache cache = cacheManager.getCache(ehcacheInstanceName);
return cache.getSize();
} private static Object getMaxKey(List source) { long[] target = new long[source.size() - 1];
for (int i = 0; i < source.size() - 1; i++) {
target[i] = Long.parseLong((String) source.get(i));
}
long maxKey = target[0];
for (int i = 0; i < target.length; i++) {
if (maxKey < target[i]) {
maxKey = target[i];
}
}
return maxKey;
} }

顺利完毕!!!

有疑惑请留言,如若不对之处,感谢提出;

Ehcache基于java API实现的更多相关文章

  1. spark 中的RDD编程 -以下基于Java api

    1.RDD介绍:     RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动 ...

  2. 基于Java API for WebSocket (JSR-356)的标准websocket客户端

    maven依赖 springboot <dependency> <groupId>org.springframework.boot</groupId> <ar ...

  3. SpringMVC常用配置-Controller中的各种配置(基于Java API和注解)

  4. SpringMVC操作指南-MVC-搭建SpringMVC项目结构(基于Java API和注解)

  5. MyBatis操作指南-搭建项目基础环境(基于Java API)含log4j2配置

  6. 基于Guava API实现异步通知和事件回调

    本文节选自<设计模式就该这样学> 1 基于Java API实现通知机制 当小伙伴们在社区提问时,如果有设置指定用户回答,则对应的用户就会收到邮件通知,这就是观察者模式的一种应用场景.有些小 ...

  7. WebDriver基本API使用(基于Java)V1.0

    WebDriver基本API使用(基于Java)V1.0http://www.docin.com/p-803032877.html

  8. WebDriver基本API使用手册(基于Java和C#)

    WebDriver基本API使用手册(基于Java和C#) http://www.docin.com/p-747728551.html

  9. 转载 基于JAVA每月运势api调用代码实例

    代码描述:基于JAVA每月运势api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/58 原文链接:http://outofmemory.cn/code-snip ...

随机推荐

  1. Spring MVC 参数必填项导致客户端报 HTTP 400 并且无法进入断点的问题

    1.问题 Spring MVC 在参数上设置了必填项,post 请求时报 HTTP 400 并且未进入断点,如将“年龄”设置为了必填项: @RequestParam( value="age& ...

  2. Web站点如何防范XSS、CSRF、SQL注入攻击

    XSS跨站脚本攻击 XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie,导 ...

  3. HTML表单(form)的“enctype”属性

    Form元素的语法中,EncType表明提交数据的格式 属性值: application/x-www-form-urlencoded:在发送前编码所有字符(默认) multipart/form-dat ...

  4. SelectedItems的用法讲解

    在做俄罗斯方块的时候写了下面一段代码: private void listView1_SelectedIndexChanged(object sender, EventArgs e)         ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO

    1.前言 移动GIS项目开发中点线面的要素绘制及编辑是最常用的操作,在ArcGIS Runtime SDK for iOS 自带AGSSketchLayer类可以帮助用户快速实现要素的绘制,图形编辑. ...

  6. requireJS基本配置相关

    requireJS: (1)实现js文件的异步加载,避免页面失去响应: (2)管理模块之间的依赖性,便于代码的编写和维护. 加载: <script src="js/require.js ...

  7. 64位MATLAB和C混合编程以及联合调试

    [环境说明] 电脑操作系统:win 7 旗舰版,64位 MATLAB版本:R2013b VS版本:Microsoft Visual Studio 2010 [操作说明] 1.在原来工程的基础上添加下列 ...

  8. 使用embeded tomcat进行嵌入式javaee开发-启动tomcat

    昨天在网上研究了下关于将tomcat嵌入到主程序中进行运行,而不是像以前将一个web项目copy到tomcat中进行运行.之所以这样做的原因,即是因为项目部署到客户方,在进行更新的时候,需要手动地进行 ...

  9. 林锐:5 C++/C程序的基本概念

    5.1.1 main 不能重载 不能内联 不能定义为static 不能取其地址 不能由用户直接调用 5.1.3内部名称 struct Sample_1 { int count; }; struct S ...

  10. Android(java)学习笔记41:Map集合功能概述

    1. 下面通过代码引入Map集合: 如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生 ...