文档章节

Map在Java中构造缓存对象的原理及实现

gzh412163
 gzh412163
发布于 2014/06/13 10:05
字数 533
阅读 229
收藏 1

Map在Java中构造缓存对象的原理及实现

在实际的项目中,当我们对于某些数据需要经常去访问的时候,我们一般的做法都是将其数据放置到一个缓存(Cache)对象中去,可以达到使用空间节省时间的效果。同时,缓存的使用,也可以减少我们对硬盘或者数据库的频繁访问。达到了比较理想的效果。

     这就是为什么我们在java中需要对某个对象设置缓存的原因(也即原理)。在Java中最常见的一种实现缓存的方式就是使用Map,而缓存的实现则主要分为三大步骤:

第一:先到缓存里面查找是否有我们需要的对象,若是存在,则直接返回。

第二:若是缓存里面没有该对象,则将其数据添加到缓存中去。以备下次使用。

第三:如果找到了相应的数据,或者是创建了相应的数据,那就直接使用这个数据。

     然而,java中Map对象的key设置为String类型,也是为了查找的方便。   

/**
* Java中缓存的基本实现示例
*/
public class JavaCache {
/**
* 缓存数据的容器,定义成Map是方便访问,直接根据Key就可以获取Value了
* key选用String是为了简单,方便演示
*/
private Map<String,Object> map = new HashMap<String,Object>();

private ObjectDao objectDao = null;//一般这个*Dao对象需要我们注入
/**
* 从缓存中获取值

* @param  key 设置时候的key值
* @return  key对应的Value值
*/
public Object getValue(String key){
/
/先从缓存里面取值
Object obj = map.get(key);

//判断缓存里面是否有值
if(obj == null){
//如果没有,那么就去获取相应的数据,比如读取数据库或者文件
obj = objectDao.getObjectByKey(key);//这个方法是*Dao实现具体数据库查询的时候调用的方法
//把获取的值设置回到缓存里面
map.put(key, obj);
}

//如果有值了,就直接返回使用
return obj;

}
}


本文转载自:http://blog.csdn.net/caolipeng_918/article/details/13274775

共有 人打赏支持
gzh412163
粉丝 1
博文 69
码字总数 12796
作品 0
深圳
私信 提问
Java并发之ThreadLocal使用和源码分析

本篇文章首先给出了ThreadLocal常用的方法,并举例来说明ThreadLocal的使用。然后分析了ThreadLocal的源代码中的get()方法,初始化方法,ThreadLocalMap的实现等来理解ThreadLocal的原理。 ...

第四单元
2018/12/24
0
0
Java 源码解析实战 - ThreadLocal 原理

说起CS游戏,应该是每个中二少年的年少回忆了. 游戏开始时,每个人能够领到一把枪,枪把上有三个数字:子弹数、杀敌数、自己的命数,为其设置的初始值分别为1500、0、10. 设战场上的每个人都是一...

芥末无疆
01/17
0
0
探究ThreadLocal原理(基于Java8)

线程封闭 避免并发最简单的方法就是线程封闭。 即把对象封装到一个线程里,只有这一个线程能看到此对象。那么这个对象就算不是线程安全的也不会出现任何安全问题。 使用ThreadLocal是实现线程...

芥末无疆
2018/02/10
0
0
ThreadLocal源码分析

阅读原文请访问我的博客 BrightLoong's Blog 一. 简介 提醒篇幅较大需耐心。 简介来自ThreadLocal类注释 ThreadLocal类提供了线程局部 (thread-local) 变量。这些变量与普通变量不同,每个线...

BrightLoong
2018/05/28
0
0
分享一份非常强势的Android面试题

马上步入金九银十了,是时候看一些面试题去鹅厂了,接下来我将分享一些面试题,每天总结一点点,希望对大家有所帮助! ListView和RecyclerView区别 参考链接: blog.csdn.net/shu_lance/a… ...

codeGoogle
2018/08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Navicat使用教程:使用Navicat Premium 12自动执行数据库复制(二)

下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。 与...

电池盒
22分钟前
1
0
简单聊聊Linux学习经历

学习,是我们一生中都规避不了的一个话题,人的一生中都是在不断的学习,无论是功成名就的人士,还是一无是处的小混混,始终都处在一个不断学习的环境中,只是学习的内容千差万别,有的人是为...

linux-tao
22分钟前
1
0
如何才能从程序员成长为实战型架构师?必掌握这7大实战技能经验

想成为一名架构师,但是架构师对应的技能,我应该掌握哪些啊?以及掌握的程度是什么样的?如何成为一名真正的实战性架构师? 我简要分为以下7点来谈谈,从技能的角度抛砖引玉,希望你对你架构...

mikechen优知
33分钟前
2
0
vue里实现echarts中国地图

echartsDemo.vue <template> <div> <div id="chart_example"></div> </div></template><script> // 首先要 cnpm install echarts import echarts from 'echarts' import ......

Danni3
45分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部