黑马程序员技术交流社区
标题:
什么是java的缓存?
[打印本页]
作者:
刘朋朋
时间:
2011-10-8 20:43
标题:
什么是java的缓存?
查了下缓存的概念,就是比内存还快的一片存储区域。那么java的缓存技术又是什么呢?把数据放到内存中算是缓存吗?还是必须放到缓存中?相当迷糊,请高手指点!
该贴已经同步到
刘朋朋的微博
作者:
成杰
时间:
2011-10-8 20:45
Java的缓存机制是通过JVM(Java虚拟机)提供的运行时缓存来实现的,由于JVM是不跨平台的(Java的跨平台正是通过JVM的不跨平台来实现的),所以JVM的缓存机制没有实现本地临时存储,因此你找不到所谓Java的缓存文件夹。
作者:
鲁蒙
时间:
2011-10-8 20:59
JAVA缓存有两种:
一、文件缓存,是指把数据存储在磁盘上,可以XML格式,也可以序列化文件DAT格式还是其它文件格式。
二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查。
浏览器---浏览器和app之间---分过层的app-数据库
论上来将,请求的任何一个环节都是缓存可以作用的地方.第一个环节,浏览器,如果数据存在浏览器上,那么对用户来说速度是最快的,因为这个时候根本无需网络请求.第二个环节,浏览器和app之间,如果缓存加在这个地方,那么缓存对app来说是透明的.而且这个缓存中存放的是完整的页面.第三个节点,app中本身就有几个层次,那么缓存也可以放在不同的层次上,这一部分是情况或者场景比较复杂的部分.选择缓存时需要谨慎.第四个环节,数据库中也可以有缓存,比如说mysql的querycache.
那么也就是说在整个请求流程的任何一点,我们都可以加缓存.但是是所有的数据都可以放进缓存的吗.当然不是,需要放进缓存的数据总是有一些特征的,要清楚的判断数据是否可以被缓存,可以被怎样缓存就必须要从数据的变化特征下手.
数据有哪些变化特征?最简单的就是两种,变和不变.我们都知道,不会变化的数据不需要每次都进行计算.问题是难道所有的数据理论上来讲都会变化,变化是世界永恒的主题.也就是说我们把数据分为变和不变两种是不对的,那么就让我们再加一个条件:时间.那么我们就可以把数据特征总结为一段时间内变或者不变.那么根据这个数据特征,我们就可以在合适的位置和合适的缓存类型中缓存该数据.
作者:
林国锋
时间:
2011-10-8 21:04
首先要先理解什么叫缓存:
缓存是指临时文件交换区,电脑把最常用的文件从存储器里提出来临时放在缓存里,就像把工具和材料搬上工作台一样,这样会比用时现去仓库取更方便。因为缓存往往使用的是RAM(断电即掉的非永久储存),所以在忙完后还是会把文件送到硬盘等存储器里永久存储。电脑里最大的缓存就是内存条了,最快的是CPU上镶的L1和L2缓存,显卡的显存是给GPU用的缓存,硬盘上也有16M或者32M的缓存。千万不能把缓存理解成一个东西,它是一种处理方式的统称!
JAVA缓存有两种:
一、文件缓存,是指把数据存储在磁盘上,可以XML格式,也可以序列化文件DAT格式还是其它文件格式。
二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查。
作者:
刘朋朋
时间:
2011-10-8 21:06
なるほど,楼上的都谢谢了。。。。
作者:
王家虎
时间:
2011-10-8 23:19
缓存就是临时把将要使用的数据先从原来的地方搬运到将要被使用的地方,这样就可以达到在使用这些数据时直接拿来用而不用再到遥远的地方取了,以此达到高效的目的。例如IO中的BufferedReader类就是把要读取的数据先存放在这个缓存区中,当要读取数据时就可以直接从这个缓存区里去数据了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2