java 中的缓存的原理
来源:互联网 发布:逆战混沌16连炮数据 编辑:程序博客网 时间:2024/06/04 18:06
利用HashMap实现下java的缓存机制
java缓存也就是将数据存放于方便取出的地方。 这里用hashMap 模拟下, 说下其他的, List和Map的数据检索速度问题,不知道大家有没有研究过,可能面试中会问到。 直接上例子
package cache;import java.util.*;/** * cache的模拟 * 定义一个map 对象 * @author ninihao * */public class MyCache { /** * 创建一个map模拟下 */private Map<String, Object> cacheMap = new HashMap<String, Object>();public Object getValue(String key) {Object obj = cacheMap.get(key);/** * 判断下 如果是空的话获取值 存放于map中 */if(obj == null){obj = new SingletonUtils().getIntance().getValues("name");cacheMap.put("name", obj);}return obj;}}这边是一个MyCache类, 就是将properties文件中的name属性值的读取, 关于properties的解析工具类运用单例模式
package cache;import java.io.InputStream;import java.util.Properties;/** * 单例模式解析配置文件 * * @author YanD * */public class SingletonUtils {private static SingletonUtils singletonUtils;private static Properties prop;public SingletonUtils() {try {prop = new Properties();InputStream in = this.getClass().getClassLoader().getResourceAsStream("cache/YanD.properties");prop.load(in);// 这边会抛异常 捕捉下in.close();} catch (Exception e) {e.printStackTrace();}}public static SingletonUtils getIntance() {if (singletonUtils == null) {singletonUtils = new SingletonUtils();}return singletonUtils;}public String getValues(String key) {return prop.getProperty(key);}}YanD.properties
name = YanD测试类
package cache;public class Test {/** * @param args */public static void main(String[] args) {MyCache myCache = new MyCache();System.out.println(System.currentTimeMillis());String name = (String)myCache.getValue("name"); System.out.println(System.currentTimeMillis() + ":"+name); String name2 = (String)myCache.getValue("name"); System.out.println(System.currentTimeMillis() +":"+name2);}}
运行程序输出结果
1465129991008
1465129991016:YanD
1465129991017:YanD
1465129991016:YanD
1465129991017:YanD
从毫秒数看快了很多,
真正的开发中的缓存实现比这个复杂太多, 也有许多成熟的框架以及第三方工具供我们使用例如Ehcache,本篇只是运用缓存的思想写个小例子,算是抛砖引玉吧
0 0
- java 中的缓存的原理
- 缓存机制:java中缓存的原理
- java中缓存的原理
- java中缓存的原理
- java 缓存机制 实现的原理?
- CPU中的缓存技术原理
- CPU中的缓存技术原理
- PHP 中的数据库缓存原理
- java中的hashmap的原理
- ListView的缓存原理
- ListView的缓存原理
- http的缓存原理
- Java中的缓存容器
- java中的缓存
- Java 中的缓存
- Java虚拟机中的缓存
- java中的缓存
- java中的本地缓存
- android手写注解
- Element uses-permission duplicated with element declared at AndroidManifest.xml 错误
- 一对一对多关系与购物车、订单设计
- Hibernate与Mybatis对比(转)
- 面试小问题
- java 中的缓存的原理
- ASp.net
- input 子系统开发
- multipath 路径切换
- centos6 伪分布式模式安装hadoop
- C++第七次实验-素数和回文
- openstack m:CentOS 虚拟机动态IP
- 二叉树的层次遍历
- 配置Tomcat8