码迷,mamicode.com
首页 > 编程语言 > 详细

java缓存(下)

时间:2018-03-01 14:53:15      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:cpu   运算   生命周期   操作   bsp   交换   value   线程   strong   

  外存:除计算机内存和CPU缓存以外的存储器,如常见的C、D、E、F盘,还有U盘,软盘,硬盘,光盘之类。断电后仍能保存数据的完整性。

  内存:用于与CPU沟通。计算机中所有程序的进行都是在内存中进行,CPU中所有的运算数据以及和外存之间交换的数据都存储在其中。数据断电不保存。

  高速缓冲:一般情况下,CPU的处理数据速度非常快,而内存的速度相对非常慢,易造成性能问题,为解决这个问题采用高速缓冲。原理:系统在高速缓冲区存储CPU经常访问的数据,当CPU访问某数据时,先在缓冲区找,找不到再到内存中找,极大的提高了CPU的运算效率。

  当某些资源或者数据会被频繁的使用,而这些资源或数据存储在系统外部,比如数据库、硬盘文件等,那么每次操作这些数据的时候都从数据库或者硬盘上去获取,速度会很慢,会造成性能问题。

  大多时候我们做开发的都在无意识与缓存打交道,常见的多线程内存可见,字符流以及IOC都是缓存

  1、Map

  基于内存缓存,一个map可以搞定引用对象的缓存,存在的问题是保存对象的有效性和生命周期无法控制,处理不当会导致内存急剧上升,不适合用于大数据量的缓存。

  需要定义一个缓存管理器,用于实现缓存逻辑,实现对象的增删改查,支持值对象的泛型,实际就是将数据放在Map里面

    技术分享图片

  在service层导入上面CacheContext

    技术分享图片

  2、springCache  注解@Cacheable(value = "accountCache")

  这个注释的意思是,当调用这个方法的时候,会从一个名叫 accountCache 的缓存中查询,如果没有,则执行实际的方法(即查询数据库),并将执行的结果存入缓存中, 否则返回缓存中的对象。这里的缓存中的 key 就是参数 accountName,value 就是 Account 对象。“accountCache”缓存是在 spring*.xml 中定义的名称。我们还需要一个spring 的配置文件来支持基于注释的缓存

  在上面的基础上添加AccountService2

    技术分享图片

  spring 中需要配置CachMenager,bean里面需要配置accountCache

  注意这个 spring 配置文件有一个关键的支持缓存的配置项:

 <cache:annotation-driven /> 

    技术分享图片

 

java缓存(下)

标签:cpu   运算   生命周期   操作   bsp   交换   value   线程   strong   

原文地址:https://www.cnblogs.com/shuzhongruyu/p/8488000.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!