Java中缓存之内存缓存

1.缓存为什么要存在

应用服务器资源是有限的,数据库每秒中接受请求的次数也是有限的。如果利用有限的资源来提供尽可能大的吞吐量呢,一个办法:减少计 算量,缩短请求流程(减少网络io或者硬盘io),这时候缓存就可以大展手脚了

2.什么样的数据可以存到缓存中

一段时间内不变的数据

3.为什么要有本地缓存

在 系统中,有些数据,数据量小,但是访问十分频繁(例如国家标准行政区域数据),针对这种场景,需要将数据搞到应用的本地缓存中,以提升系统的访问效率,减 少无谓的数据库访问(数据库访问占用数据库连接,同时网络消耗比较大),但是有一点需要注意,就是缓存的占用空间以及缓存的失效策略。

4.内存缓存或本地缓存的原理

实现缓存的方式就是使用Map,而缓存的实现则主要分为三大步骤:第一:先到缓存里面查找是否有我们需要的对象,若是存在,则直接返回。第二:若是缓存里面没有该对象,则将其数据添加到缓存中去。以备下次使用。第三:如果找到了相应的数据,或者是创建了相应的数据,那就直接使用这个数据。     然而,java中Map对象的key设置为String类型,也是为了查找的方便。

实际上是建立一个Map集合类实现把缓存的内容保存到内存里面,只要服务器没有关闭缓存就不会被清除,除非人为清除

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;public class CacheClass {private static Map<String,String> cache = new ConcurrentHashMap<String, String>();public static void setCache(String key, String obj, long seconds){cache.put(key,obj);}public static String getCache(String key){return cache.get(key);}public static  void removeCache(String key){cache.remove(key);}public static void main(String args[]){removeCache("China");String name = getCache("China");System.out.println("name="+name);setCache("China","中国",60*60*24*30);name = getCache("China");System.out.println("第二次取值name="+name);removeCache("China");name = getCache("China");System.out.println("第三次取值name="+name);}}

运行结果:

name=null
第二次取值name=中国
第三次取值name=null

Java中缓存之内存缓存相关推荐

  1. 一位面试官询问我:Java中的JVM内存溢出和内存泄露是什么?我这么回答成功拿到了offer

    一位面试官询问我:Java中的JVM内存溢出和内存泄露是什么?我这么回答成功拿到了offer. 墨眉无锋墨家代码 2020-11-22 20:16:50 10525 收藏 56 分类专栏: Java ...

  2. Java 中对象占用内存大小计算

    原文地址 mp.weixin.qq.com byte 与 bit bit:位,比特.信息的最小单位,二进制数中的一个位数 (二进制位),其值为"0" 或"1": ...

  3. 图片缓存之内存缓存技术LruCache,软引用

    图片缓存之内存缓存技术LruCache,软引用 每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常, 这个 问题曾经让我觉得很烦恼 ,后来终于得到了解决, 那么现在就让我和大家一起分享 ...

  4. Glide 缓存策略 内存缓存和磁盘缓存

    感恩原创:http://www.cnblogs.com/baiqiantao/p/6808457.html Glide 缓存策略 内存缓存和磁盘缓存 官方文档:https://github.com/b ...

  5. Android 图片缓存之内存缓存技术LruCache,软引用

    Android 图片缓存之内存缓存技术LruCache,软引用

  6. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnblogs.com/yinzhengjie/p/9 ...

  7. JAVA中堆栈和内存分配原理

    JAVA中堆栈和内存分配原理 1.栈.堆 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在 ...

  8. 在java中会存在内存泄漏吗?

    ● 请问,在java中会存在内存泄漏吗?请简单描述一下. 考察点:内存 参考回答: Java中的确存在Java的内存泄漏, 并且事态可以变得相当严重 Java garbage collector自动释 ...

  9. java的栈区 堆区存放什么_简单整理java中的栈内存, 堆内存是什么?

    上一篇文章简单整理了栈(stack), 堆(heap), 队列(queue)的结构 这一篇继续整理java中的 占内存,堆内存. Java把内存划分成两种:一种是栈内存,一种是堆内存. 这里需要解释一 ...

最新文章

  1. CTFshow 信息收集 web10
  2. 老男孩Python全栈开发(92天全)视频教程 自学笔记07
  3. java pinyin4j 首字母_通讯录之按汉字首字母排序 --java--pinyin4J
  4. linux pivot root,[mydocker]---通过例子理解chroot 和 pivot_root
  5. 有序数组原地删除重复出现的元素问题(js)
  6. luogu2320 鬼谷子的钱袋
  7. c语言利用fun求最小值,c语言:请编写函数fun(),他的功能是:求f(0)到f(50)的最小值,已知:f(0)=f(1)=1,f(2)=0,f...
  8. 《高等数学》练习题库含答案(大学期末复习资料)
  9. mysql拼接字符串
  10. Mac上的全局翻译利器 : Bob + PopClip
  11. 3.7V锂电池升压到5V1A,FS2114升压转换芯片设计布局
  12. 英语——句子结构和成分大全【学习笔记】
  13. 用计算机控制人造卫星属于,用计算机控制人造卫星属于 为什么人造卫星在高层大气...
  14. 大数据分析引擎-Doris简要介绍
  15. 四大主流新闻App竞品分析
  16. 《数学之美》读后感与商榷
  17. xshell6使用技巧_Xshell 6怎么设置为中文-Xshell 6设置为中文的方法 - 河东软件园
  18. 全球及中国二手车贷款行业运行分析及项目动态研究报告2021年版
  19. java 连接 websphere_本地java类访问websphere的JNDI
  20. 送给女朋友的3D立体动态相册的实现代码

热门文章

  1. 模型论电子版教材,何处寻?
  2. 目前最火热的IT技术有哪些?
  3. Python学习笔记:通过Headers字段模拟浏览器访问亚马逊界面爬取
  4. 如何锁定 input 内容不可修改
  5. drl 规则语言 语法_C语言基本语法规则
  6. 火车头采集细节(二)
  7. ansys六个应力的物理意义
  8. 获取本地与服务器地址
  9. iOS经典讲解之判断App是否第一次启动
  10. Tomcat 支持的Java版本对照