Java学习教程Java中常用缓存Cache机制实现

文章描述:-2022年4月13日发(作者:施氏)百度文库-让每个人平等地提升自我Cache所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。缓存主要可分为二大类:一、通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式;二、内存缓存,也就是实现一个类中静

-

Java学习教程Java中常用缓存Cache机制实现
2022年4月13日发
(作者:施氏)

百度文库-让每个人平等地提升自我

Cache

所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,

不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。

缓存主要可分为二大类:

一、通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序

列化文件DAT格式还是其它文件格式;

二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查.

代码如下:

;

2.

.*;

4.

5.//Description:管理缓存

6.

7.//可扩展的功能:当chche到内存溢出时必须清除掉最早期的一些缓存对象,

这就要求对每个缓存对象保存创建时间

8.

classCacheManager{

estaticHashMapcacheMap=newHashMap();

11.

12.//单实例构造方法

eCacheManager(){

();

10

百度文库-让每个人平等地提升自我

15.}

16.//获取布尔值的缓存

staticbooleangetSimpleFlag(Stringkey){

{

(Boolean)(key);

20.}catch(ullPointerExceptione){

false;

22.}

23.}

staticlonggetServerStartdt(Stringkey){

{

(Long)(key);

27.}catch(Exceptionex){

0;

29.}

30.}

31.//设置布尔值的缓存

synchronizedstaticbooleansetSimpleFlag(Stringke

y,booleanflag){

(flag&&getSimpleFlag(key)){//假如为真

不允许被覆盖

false;

35.}else{

(key,flag);

true;

38.}

39.}

synchronizedstaticbooleansetSimpleFlag(Stringke

y,longserverbegrundt){

((key)==null){

(key,serverbegrundt);

true;

44.}else{

false;

10

百度文库-让每个人平等地提升自我

46.}

47.}

48.

49.

50.//得到缓存。同步静态方法

esynchronizedstaticCachegetCache(Stringkey){

(Cache)(key);

53.}

54.

55.//判断是否存在一个缓存

esynchronizedstaticbooleanhasCache(Stringkey){

nsKey(key);

58.}

59.

60.//清除所有缓存

synchronizedstaticvoidclearAll(){

();

63.}

64.

65.//清除某一类特定缓存,通过遍历HASHMAP下的所有对象,来判断它的

KEY与传入的TYPE是否匹配

synchronizedstaticvoidclearAll(Stringtype){

ori=et().iterator();

key;

istarr=newArrayList();

{

(t()){

ntry=(

)();

=(String)();

(With(type)){//如果匹

配则删除掉

10

百度文库-让每个人平等地提升自我

(key);

76.}

77.}

(intk=0;k<();k++){

nly((k));

80.}

81.}catch(Exceptionex){

tackTrace();

83.}

84.}

85.

86.//清除指定的缓存

synchronizedstaticvoidclearOnly(Stringkey){

(key);

89.}

90.

91.//载入缓存

synchronizedstaticvoidputCache(Stringkey,Cach

eobj){

(key,obj);

94.}

95.

96.//获取缓存信息

staticCachegetCacheInfo(Stringkey){

98.

(hasCache(key)){

ache=getCache(key);

(cacheExpired(cache)){//调用判断是否终

止方法

ired(true);

103.}

cache;

105.}else

10

百度文库-让每个人平等地提升自我

null;

107.}

108.

109.//载入缓存信息

staticvoidputCacheInfo(Stringkey,Cacheobj,

longdt,booleanexpired){

ache=newCache();

(key);

eOut(dt+tTimeMillis());

//设置多久后更新缓存

ue(obj);

ired(expired);//缓存默认载入时,终止状态

为FALSE

(key,cache);

117.}

118.//重写载入缓存信息方法

staticvoidputCacheInfo(Stringkey,Cacheobj,longdt){

ache=newCache();

(key);

eOut(dt+tTimeMillis());

ue(obj);

ired(false);

(key,cache);

126.}

127.

128.//判断缓存是否终止

staticbooleancacheExpired(Cachecache){

(null==cache){//传入的缓存不存在

false;

132.}

wDt=tTimeMillis();//系统当

前的毫秒数

10

百度文库-让每个人平等地提升自我

cheDt=eOut();//缓存内的过期

毫秒数

(cacheDt<=0||cacheDt>nowDt){//过期时

间小于等于零时,或者过期时间大于当前时间时,则为FALSE

false;

137.}else{//大于过期时间即过期

true;

139.}

140.}

141.

142.//获取缓存中的大小

staticintgetCacheSize(){

();

145.}

146.

147.//获取指定的类型的大小

staticintgetCacheSize(Stringtype){

=0;

ori=et().iterator();

key;

{

(t()){

ntry=(java.u

)();

=(String)();

(f(type)!=-1){//

如果匹配则删除掉

157.k++;

158.}

159.}

160.}catch(Exceptionex){

tackTrace();

162.}

163.

10

百度文库-让每个人平等地提升自我

k;

165.}

166.

167.//获取缓存对象中的所有键值名称

staticArrayListgetCacheAllkey(){

ista=newArrayList();

{

ori=et().iterator()

;

(t()){

ntry=(java.u

)();

((String)());

175.}

176.}catch(Exceptionex){}finally{

a;

178.}

179.}

180.

181.//获取缓存对象中指定类型的键值名称

staticArrayListgetCacheListkey(Stringtype){

ista=newArrayList();

key;

{

ori=et().iterator()

;

(t()){

ntry=(java.u

)();

=(String)();

(f(type)!=-1){

(key);

192.}

193.}

10

百度文库-让每个人平等地提升自我

194.}catch(Exceptionex){}finally{

a;

196.}

197.}

198.

199.}

200.

201.

;

203.

classCache{

eStringkey;//缓存ID

eObjectvalue;//缓存数据

elongtimeOut;//更新时间

ebooleanexpired;//是否终止

Cache(){

();

211.}

212.

Cache(Stringkey,Objectvalue,

Out,booleanexpired){

=key;

=value;

t=timeOut;

d=expired;

218.}

219.

StringgetKey(){

key;

222.}

223.

longgetTimeOut(){

timeOut;

226.}

10timelong

百度文库-让每个人平等地提升自我

227.

ObjectgetValue(){

value;

230.}

231.

voidsetKey(Stringstring){

=string;

234.

235.

236.

237.

238.

239.

240.

241.

242.

243.

244.

245.

246.

247.

248.

249.

250.

251.}

252.

253.//测试类,

est{

256.

);

257.//

258.//

259.//

10

}

publicvoidsetTimeOut(longl){timeOut=l;

}

publicvoidsetValue(Objectobject){value=object;

}

publicbooleanisExpired(){returnexpired;

}

publicvoidsetExpired(booleanb){expired=b;

}

staticvoidmain(String[]args){

n(pleFlag("alksd")he("abc",newCache());he("def",newCache());he("ccc",newCache());

百度文库-让每个人平等地提升自我

260.//nly("");

261.//Cachec=newCache();

262.//for(inti=0;i<10;i++){

263.//he(""+i,c);

264.//}

265.//he("aaaaaaaa",c);

266.//he("abchcy;alskd",c);

267.//he("cccccccc",c);

268.//he("abcoqiwhcy",c);

269.//n("删除前的大小:

"+heSize());

270.//heAllkey();

271.//ll("aaaa");

272.//n("删除后的大小:

"+heSize());

273.//heAllkey();

274.

275.

276.}

277.}

10

-

Java学习教程Java中常用缓存Cache机制实现

发布时间:2022-04-13 03:32:45
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 5 条评论,895人围观)

最近发表

随便看看

热门文章

标签列表