浅谈我对JCS 的理解
JCS 是Java 中缓存的一种实现,支持将数据缓存到内存和硬盘中,支持设置缓存对象的有效时长。
我认为可以这么理解JCS:客户端向服务器发出请求,服务器就先去缓存中查一下有没有客户端请求的数据,有则直接使用;没有则服务器去连接数据库查询数据,然后将数据传给用户的同时也存到缓存中,供下一次使用。若是缓存满了就根据所设置的调度算法(如:最近最少算法)去删除缓存中的对象,若是缓存中的对象过了有效时长,也将被删除。
JCS 在项目中的实现
1、所需要使用到的架包如下:
commons-collections-3.2.jar
commons-lang-2.5.jar
commons-logging-1.1..jar
concurrent-1.3..jar
jcs-1.2.7.9.jar
2、JCS 配置文件
配置JCS 就是简单地创建和填充一个cache.ccf 文件,这个文件定义缓存应该使用哪些区域,以及这些区域的属性或选项。根据应用程序的需求,配置这个文件可以快速扩展缓存。在JCS的配置文件中(WEB-INF/classes/cache.ccf),有一个默认配置(default),也可以对每个缓冲区(region)单独配置,没有单独配置特性的缓冲区将使用默认的配置
例如cache.ccf
# optional region "testCache1" specific configuration settings
jcs.region.testCache1=
jcs.region.testCache1.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.testCache1.cacheattributes.MaxObjects=
jcs.region.testCache1.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.testCache1.cacheattributes.UseMemoryShrinker=false
jcs.region.testCache1.elementattributes.IsEternal=false
jcs.region.testCache1.elementattributes.MaxLifeSeconds=
jcs.region.testCache1.elementattributes.IsSpool=false
jcs.region.testCache1.elementattributes.IsLateral=false
jcs.region.testCache1.elementattributes.IsRemote=false
3、JCS 的实现
可以将JCS当做是一个特殊的Map来理解,其赋值、取值、移除值的方式均与Map相同。
import org.apache.jcs.JCS;
import org.apache.jcs.access.exception.CacheException;
public class CacheManage
{
public static void main(String[] args)
{
JCS cache=null;
try
{
cache = JCS.getInstance("testCache1");
String key = "test";
String value = "abcd";
for(int i =0; i<1000;i++)
{
cache.put(key+i, value+i);
}
}
catch (CacheException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("test100:"+cache.get("test100"));
System.out.println("test300:"+cache.get("test300"));
System.out.println("test1000:"+cache.get("test1000"));
}
}
从上述实现的例子中,我们可以看出,使用JCS.getInstance()取的一个在cache.ccf 定义过得缓存域即可使用该缓存了。在多个类中是会共享缓存中的数据的。
浅谈我对JCS 的理解的更多相关文章
- 浅谈.NET中AppDomain的理解
一.走进.NET AppDomain 天哪,.NET Framwork的CLR真是巧妙呢!随着越来越多的对.Net底层编程的了解,一些诸如架构,处理过程的复杂难懂的细节完全的让我叹服,所以呢,再次错过 ...
- 浅谈对Js闭包的理解
理解Js的闭包,首先让我们先看几个概念 执行环境(executive environment)每个函数都有自己的执行环境,匿名函数默认为全局环境. 作用域链(scope chain)子函数继承父函数, ...
- 浅谈对ionic项目的理解
在思考怎么将客户端app连接到服务器的时候,就在想ionic项目的本质是什么,一开始因为ionic serve这一命令,我以为它自己就是个服务器,但是后来一细想又感觉不是这样,不然客户端又该怎么和服务 ...
- 浅谈Cordova框架的一些理解
前言 因为工作原因,最近需要研究Cordova框架,看了其中的源码和实现方式,当场在看的时候马上能理解,但是事后再回去看相关源码时候却发现之前理解的内容又忘记了,又不得不重新开始看,所以总觉得需要记录 ...
- 浅谈对js原型的理解
一. 在JavaScript中,一切皆对象,每个对象都有一个原型对象(prototype),而指向该原型对象的内部指针则是__proto__.当我们对对象进行for in 或者for of遍历时,就 ...
- 浅谈对JIT编译器的理解。
1. 什么是Just In Time编译器? Hot Spot 编译 当 JVM 执行代码时,它并不立即开始编译代码.这主要有两个原因: 首先,如果这段代码本身在将来只会被执行一次,那么从本质上看,编 ...
- 浅谈HTTP和TCP的理解
TCP协议对应于传输层,而Http协议对应于应用层,Http协议是建立在TCP协议之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.HTTP会通过TCP建立一个连接通道,当HTT ...
- 浅谈js中继承的理解和实现
一.前言 java.C#等正统面向对象语言都会提供类似extend之类的处理类的继承的方法,而javascript并没有提供专门的方法用于继承,在javascript中使用继承需要一点技巧.js中实例 ...
- 腾讯云“动态加速”与“CDN”的区别——浅谈对“动态加速”的理解(可能有误)
CDN的劣势及“动态加速”产生背景 通常CDN对静态内容支持较好,若使用其加速动态内容,可能会导致异常(如导致无法登录).当然,可以将动态内容的在CDN节点上的缓存时间设置为0秒来解决.但这毕竟是用户 ...
随机推荐
- Castle IOC容器与Spring.NET配置之比较
我本人对于Spring.NET并不了解,本文只是通过一个简单的例子来比较一下两者配置之间的区别.在Castle IOC容器中,提出了自动装配(Auto-Wiring)的概念,即由容器自动管理组件之间的 ...
- 50个查询系列-第13个查询:把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;
UPDATE tblscore SET tblscore.Score= ( -- 这里开始算叶平的平均值 SELECT AVG(tt.aa) FROM ( SELECT tblscore.Score ...
- NOI2018准备Day3
noip2016成绩出来了,199,268名 noip2017需要考过6个女生才能进省队,不包括明年会突然跳出来的大神...... 今天晚上玩了一晚上,做了2道题. 这事儿只干今晚一次
- 解决Package illuminate/html is abandoned, you should avoid using it. Use laravelcollective/html instead.问题
解决步骤: 1.分析问题是因为laravel5.1不赞成使用illuminate/html而推荐使用laravelcollective/html包,所以我们利用composer命令移除illumina ...
- K-means算法和矢量量化
语音信号的数字处理课程作业——矢量量化.这里采用了K-means算法,即假设量化种类是已知的,当然也可以采用LBG算法等,不过K-means比较简单.矢量是二维的,可以在平面上清楚的表示出来. 1. ...
- parsing XML document from class path resource
遇到问题:parsing XML document from class path resource [spring/resources] 解决方法:项目properties— source—remo ...
- ModernUI教程:定义一个Logo
ModernWindow的标题栏包含了一块区域用来显示自定义的窗体Logo: 这个窗体logo通过ModernWindow.LogoData属性来设置.这个属性是几何类型数据支持Path.Data m ...
- 在SSIS 2012中使用CDC(数据变更捕获)
最新项目稍有空隙,开始研究SQL Server 2012和2014的一些BI特性,参照(Matt)的一个示例,我们开始体验SSIS中的CDC(Change Data Capture,变更数据捕获). ...
- 最短判断IE的办法
if(!!-[1,]){ return }; 无意中看到这样一行代码,经查是用来判断IE的代码,非常精简,原理如下: [1,],这是一个数组,IE和标准浏览器对这样一个数组的解析是不一样的 alert ...
- Sublime轻量级编辑器
对于从事计算机的小伙伴,好用的编辑器等效于手里的利器!可说为,砍柴不误,磨刀工! 手有神器,游走四方! sublime,记得好像是支持跨平台的 家乡的情绪 http://pan.baidu.com/s ...