缓存是将数据在整个程序生命周期中存储的内存;
作用:
(1)能够提升获取数据的效率,避免IO读取耗时操作;
(2)被大量的读取,更新频率低;
(3)经常变化,但是不会被持久化的;
方式:
使用static关键字开辟内存与搜索时间复杂度为O(1)的HashMap来存储数据提高读取效率;然后实现相应的缓存写入、更新、读取、删除等逻辑;
问题:
(1)上述提到缓存存活在程序应用的生命周期中,在程序应用迭代的过程中,在传统上会经历程序的重启;
spring-boot实现了热部署的功能,即在不需要对程序进行重启的情况下对程序进行迭代;
其原理就是监听class文件是否发生改变,如果改变则使用类加载其将字节码重新读入到内存中;缺点在于这种方式会占用大量的内存造成程序的卡顿,常用于本地开发中;
spring-boot提供了一个spring-boot-devtools包,其作用就是在不重启服务的情况下将服务重新部署到服务器上。原理是使用两个类加载器,一个用于加载变化的类文件,一个用于加载未发生变化的类文件,直接对未改变的类文件进行加载极大的提高整个效率。
使用第三方软件作为缓存,例如redis;
相对于hashMap的优势:
按照内外置缓存的优劣:(1)避免了程序重启导致缓存存储数据的消失。(2)在存储结构上,相对于hashMap,有更多的数据结构无模式的存储更方便;
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91308 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!