当前位置: 首页 > 编程日记 > 正文

ehcache 简介

hCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

下图是 Ehcache 在应用程序中的位置:

ehcache部署起来很简单,主要分两步:

1.首先要给他写个核心配置XML文件

<ehcache><diskStore path="java.io.tmpdir"/><defaultCachemaxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"diskPersistent="false"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"/><cache name="cache1"maxElementsInMemory="10000"eternal="false"        maxElementsOnDisk="1000"overflowToDisk="true"timeToIdleSeconds="300"timeToLiveSeconds="600"memoryStoreEvictionPolicy="LFU"/></ehcache>

属性解释:

简单配置,在ehcache.xml文件中有此配置,在使用Ehcache前最好将其删除掉,自己配置。

缓存名cache1,内存中最多可缓存10000个Element,其中的element会在闲置5分钟或是存活10分钟之后失效。

超过10000element时,element将会输出到磁盘中,输出路径是java.io.tmpdir。

从其他文章找到其详细解释:

·   Cache配置

·           name:Cache的唯一标识

·           maxElementsInMemory:内存中最大缓存对象数。

·           maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大。

·           eternal:Element是否永久有效,一但设置了,timeout将不起作用。

·           overflowToDisk:配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中。

·           timeToIdleSeconds:设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。

·           timeToLiveSeconds:设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大。

·           diskPersistent:是否缓存虚拟机重启期数据。(这个虚拟机是指什么虚拟机一直没看明白是什么,有高人还希望能指点一二)。

·           diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。

·           diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。

·           memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。这里比较遗憾,Ehcache并没有提供一个用户定制策略的接口,仅仅支持三种指定策略,感觉做的不够理想。

2.实际要缓存的类调用

写一个实例类,这样大家就明白差不多了:

 import java.io.Serializable;import net.sf.ehcache.Cache;import net.sf.ehcache.CacheManager;import net.sf.ehcache.Element;public class Demo {static CacheManager manager= new CacheManager();/***##############################################################################* * @DESCRIBE    * @param args* @throws InterruptedException*                         *##############################################################################*/public static void main(String[] args) throws InterruptedException {String[] cacheNames = manager.getCacheNames();System.out.println("读取的缓存列表为:");for(int i=0;i<cacheNames.length;i++){ System.out.println("-- "+(i+1)+" "+cacheNames[i]);}Cache cache = manager.getCache("cache1");Element element = new Element("key1", "value1");cache.put(element);element = cache.get("key1");Serializable value = element.getValue();System.out.println("序列化后的值为:"+value.toString());element = cache.get("key1");Object value1 = element.getObjectValue();System.out.println("未序列化的值为:"+value1.toString());int elementsInMemory = cache.getSize();System.out.println("得到缓存的对象数量:"+elementsInMemory);long elementsInMemory1 = cache.getMemoryStoreSize();System.out.println("得到缓存对象占用内存的数量:"+elementsInMemory1);long elementsInMemory2 = cache.getDiskStoreSize();System.out.println("得到缓存对对象占用磁盘的数量:"+elementsInMemory2);        int hits = cache.getHitCount();System.out.println("得到缓存读取的命中次数:"+hits);        int hits1 = cache.getMemoryStoreHitCount();System.out.println("得到内存中缓存读取的命中次数:"+hits1);        int hits2 =cache.getDiskStoreHitCount();System.out.println("得到磁盘中缓存读取的命中次数:"+hits2);        int hits3 = cache.getMissCountNotFound();System.out.println("得到缓存读取的丢失次数:"+hits3);        int hits4 = cache.getMissCountExpired();System.out.println("得到缓存读取的已经被销毁的对象丢失次数:"+hits4);    }}

相关文章:

【leetcode】30. Substring with Concatenation of All Words

题目如下&#xff1a; 解题思路&#xff1a;本题题干中有一个非常关键的前提&#xff0c;就是words中的所有word的长度一样&#xff0c;并且都要被使用到。所以&#xff0c;我们可以把输入的s按word的长度进行等分&#xff0c;以s "barfoothefoobarman",words [&qu…

图像配准----SIFT

SIFT算子(Scale Invariant Feature Transform)是David Lowe提出的一种基于尺度空间的、对图像缩放、旋转甚至仿射变换保持不变性的图像局部特征描述算子。SIFT特征提取的是极其细微、大量的特征点&#xff0c;即时少数物体、物体的一小部分也可以产生大量特征向量。 SIFT算法如…

终于把微软BING搜索-SPTAG算法的原理搞清了

作者 | beyondma转载自 CSDN 博客近日&#xff0c;微软在GitHub上开源了其BING的搜索算法SPTAG&#xff0c;github地址&#xff1a;https://github.com/microsoft/SPTAG。这个算法笔者简单看了一下&#xff0c;的确是很有价值可以看大家介绍下&#xff0c;这种称为SPTAG &#…

把握每天的第一个钟头

当我十七岁的时候&#xff0c;我读到一段话&#xff0c;它是这么说的&#xff1a;“如果你把每天都当做最后一天来活着&#xff0c;那么有一天你将会是对的。”这句话让我留下了深刻的印象&#xff0c;从那时候开始&#xff0c;过去的 33 年来&#xff0c;我每天早上都对着镜子…

向量叉积计算法

如果向量A为{a, b, c}&#xff0c;向量B为{m, n, p}&#xff0c;如何计算向量A与向量B的叉积呢&#xff1f; 用行列式&#xff1a; |i j k| |a b c| |m n p| (bp-cn)i (mc-pa)j (an-bm)k 例如用matlab实现两个向量的叉积&#xff1a; a [1 2 3]; …

你是个成熟的C位检测器了,应该可以自动找C位了

作者 | 李翔转载自视说AI&#xff08;ID:techtalkai&#xff09;写在前面C位是近年网络上一个比较热门的词&#xff0c;最早来源于DOTA等游戏领域&#xff0c;是核心位置&#xff08;Carry位&#xff09;的简称&#xff0c;代表的是能够在游戏前中期打钱发育并在游戏后期带领队…

Data Artisans发布支持ACID事务的流式处理框架Streaming Ledger

data Artisans宣布推出Streaming Ledger&#xff0c;它扩展了Apache Flink&#xff0c;提供了跨表、键和事件流执行可序列化ACID事务的功能。这项正在申请专利的技术是Flink的专有附加技术&#xff0c;超越了当前一次只能在一个键上实现一致性的标准。\\在发布Streaming Ledger…

The Life Cycle of a Servlet

为什么80%的码农都做不了架构师&#xff1f;>>> Servlet的生命周期由Servlet容器管理&#xff0c;包含如下几个步骤&#xff1a; 1. 装载Servlet类; 2. 创建Servlet的实例; 3. 调用Servlet的init()方法; 4. 调用Servlet的service()方法; 5. 调用Servlet的destroy()…

矩阵奇异值分解

转自&#xff1a;http://www.madio.net/forum-redirect-goto-nextnewset-tid-47409.html 奇异值分解是线性代数中一种重要的矩阵分解&#xff0c;在信号处理、统计学等领域有重要应用。定义&#xff1a;设A为m*n阶矩阵&#xff0c;AHA的n个特征值的非负平方根叫作A的奇异值。记…

智课雅思词汇---十、pend是什么意思

智课雅思词汇---十、pend是什么意思 一、总结 一句话总结&#xff1a;【词根含义】&#xff1a;悬挂,垂;称量;支付 词根&#xff1a;-pend-, -pens- 【词根含义】&#xff1a;悬挂,垂;称量;支付 【词根来源】&#xff1a;来源于拉丁语动词pendeo, pendere, pependi, - (悬挂,下…

新技术“红”不过十年,半监督学习为什么是个例外?

作者 | 严林来源 | 授权转载自知乎&#xff08;ID:严林&#xff09;这一波深度学习的发展&#xff0c;以2006年Hinton发表Deep Belief Networks的论文为起点&#xff0c;到今年已经超过了10年。从过往学术界和产业界对新技术的追捧周期&#xff0c;超过10年的是极少数。从深度学…

常用Linux路由命令(route、ip、ifconfig等等)

第一组命令&#xff1a; ifconfig, ifup, ifdown 1) ifconfig 作用&#xff1a;手动启动、观察与修改网络接口的相关参数&#xff0c;包括IP地址以及MTU大小等。 例1.1&#xff1a;暂时修改IP地址 # ifconfig eth0 192.168.100.100 例1.2&#xff1a;修改IP地址、掩码和MTU # i…

洛谷P1074 靶形数独(跳舞链)

传送门 坑着&#xff0c;等联赛之后再填&#xff08;联赛挂了就不填了233&#xff09; 1 //minamoto2 #include<iostream>3 #include<cstdio>4 #include<cstring>5 using namespace std;6 #define getc() (p1p2&&(p2(p1buf)fread(buf,1,1<<21,…

直播写代码|英伟达工程师亲授如何加速YOLO目标检测

NVIDIA TensorRT是一种高性能深度学习推理优化器和运行时加速库&#xff0c;可以为深度学习推理应用程序提供低延时和高吞吐量。通过TensorRT&#xff0c;开发者可以优化神经网络模型&#xff0c;以高精度校对低精度&#xff0c;最后将模型部署到超大规模数据中心、嵌入式平台或…

OpenCV的cvLoadImage函数

转自&#xff1a;http://lijian2005lj.blog.163.com/blog/static/2569113720091111104856644/ 一直不太懂得cvLoadImage的第二个参数&#xff0c;今天知道&#xff0c;原来第二个参数是指定读入图像的颜色和深度。 指定的颜色可以将输入的图片转为3信道(CV_LOAD_IMAGE_COLOR)也…

DX11 preprocessor Dynamic shader linkage

&#xff08;参照例子DXSDK sample&#xff1a;DynamicShaderLinkage11&#xff09; 一、preprocessor 实现shader静态分支的经典方法&#xff0c;代码示例如下 shader中(如果显卡不支持DX11&#xff0c;则STATIC_PERMUTE为True)&#xff1a; #if !defined( STATIC_PERMUTE )iB…

OpenCV中与matlab中相对应的函数

1、matlab中的imread相当于OpenCV中的cvLoadImage(imageName, CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR)&#xff1a;读出的图像信息保持了原有图像的信息(包括通道信息和位深信息)&#xff1b; rgb2gray相当于cvLoadImage(imageName, CV_LOAD_IMAGE_GRAYSCALE)&…

AI假新闻满天飞,打假神器GROVER帮你看清一切

最近AI换脸术与AI假新闻叠加在一起&#xff0c;造成了不少乌龙事件&#xff0c;比如最近美国的议长南希佩洛西就的一段醉酒视频就在Facebook上流传甚广&#xff0c;视频中的议长明显是状态晕沉&#xff0c;醉意十足&#xff0c;不过这后来被证明是一段是由deepfake生成的假视频…

NYOJ 93

汉诺塔&#xff08;三&#xff09; 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述在印度&#xff0c;有这么一个古老的传说&#xff1a;在世界中心贝拿勒斯&#xff08;在印度北部&#xff09;的圣庙里&#xff0c;一块黄铜板上插着三根宝…

C/C++中二维数组作函数形参时,调用函数时,可传递的实参类型的小结

转自&#xff1a;http://blog.163.com/tianhityeah/blog/static/165747821201052195212719/ #include<iostream>using namespace std;int fun(int a[][3],int n) // 其中二维数组形参必须确定数组的第二维的长度&#xff0c;第一维长度可以不定//int fun(int (*a)[…

打破欧美垄断,国防科大斩获“航天界奥林匹克”大赛首冠

整理 | Jane责编 | 一一出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;近日&#xff0c;第十届国际空间轨道设计大赛&#xff08;GTOC X&#xff09;结束并公布最终成绩&#xff0c;中国参赛队国防科技大学与西安卫星测控中心联队&#xff08;NUDT&X…

Hive 中的变量

Hive的变量前面有一个命名空间&#xff0c;包括三个hiveconf&#xff0c;system&#xff0c;env&#xff0c;还有一个hivevar hiveconf的命名空间指的是hive-site.xml下面的配置变量值。system的命名空间是系统的变量&#xff0c;包括JVM的运行环境。env的命名空间&#xff0c;…

你必须非常努力,才能看起来毫不费力

有一群人&#xff0c;他们积极自律&#xff0c;每天按计划行事&#xff0c;有条不紊&#xff1b;他们不张扬&#xff0c;把自己当成最卑微的小草&#xff0c;等待着人生开出花朵的那天。他们早晨5点多起来健身&#xff0c;你在睡觉&#xff1b;7点开始享受丰盛的早餐&#xff0…

cvGetSubRect与cvMul用法

1、对于cvGetSubRect(mat1, mat2, rect)&#xff0c;当用cvGetSubRect函数时&#xff0c;不能事先对mat2申请内存&#xff0c;否则会产生内存泄漏。 只要这样定义mat2即可&#xff1a;CvMat *mat2; mat2 cvCreateMatHeader(imgHeight, imgWidth, CV_64FC1); 2、对于cvGetSubR…

浅谈WPF的VisualBrush

原文:浅谈WPF的VisualBrush首先看看VisualBrush的解释&#xff0c;msdn上面的解释是使用 Visual 绘制区域&#xff0c;那么我们再来看看什么是Visual呢&#xff1f;官方的解释是&#xff1a;获取或设置画笔的内容&#xff0c;Visual 是直接继承自DependencyObject&#xff0c;U…

AI换脸技术再创新高度,DeepMind发布的VQ-VAE二代算法有多厉害?

作者 | beyondma转载自CSDN网站近日DeepMind发布VQ-VAE-2算法&#xff0c;也就是之前VQ-VAE算法2代&#xff0c;这个算法从感观效果上来看比生成对抗神经网络&#xff08;GAN)的来得更加真实&#xff0c;堪称AI换脸界的大杀器&#xff0c;如果我不说&#xff0c;相信读者也很难…

cisco设备常用命令

router> enable 从用户模式进入特权模式 router# disable or exit 从特权模式退出到用户模式router# show sessions 查看本机上的TELNET会话router# disconnect …

opencv图像处理梯度边缘和角点

转自&#xff1a;http://blog.sina.com.cn/s/blog_4b9b714a0100c9f7.html 梯度、边缘和角点 Sobel 使用扩展 Sobel 算子计算一阶、二阶、三阶或混合图像差分 void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size3 ); src 输入图像. dst …

性能全面超数据库专家,腾讯提基于机器学习的性能优化系统 | SIGMOD 2019

腾讯与华中科技大学合作的最新研究成果入选了国际数据库顶级会议SIGMOD的收录论文&#xff0c;并将于6月30日在荷兰阿姆斯特丹召开SIGMOD 2019国际会议上公开发表。入选论文的题目为“An End-to-End Automatic Cloud Database Tuning System Using Deep Reinforcement Learning…

swift 语言评价

杂而不精&#xff0c;一团乱麻&#xff01;模式乱套&#xff0c;不适合作为一门学习和研究语言。 谢谢 LZ 介绍&#xff0c;看完之后更不想用 Swift 了。从 C那里抄个 V-Table 来很先进嘛&#xff1f;别跟 C一样搞什么 STL 就好了&#xff0c;整这么复杂&#xff0c;入个门都需…