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

java缓存(1、概述)

时间:2015-07-31 16:14:37      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

概述

        对于程序员来说,听到缓存,一定会非常的亢奋,因为这年代,你去找工作,说不知道缓存,没用过缓存,都不好意思说自己是程序员,所以说缓存时一个非常热的话题,今天就讲一下自己关于缓存的理解,希望对于对大家有相应的帮助。


缓存概念

        学习一个东西,我们首先应该清楚他是什么,那么,缓存到底是什么呢?缓存就是内存里面用于存放数据的空间,即,缓存就是内存。缓存的目的是什么呢?缓存就是为了优化程序查询IO数据,将程序经常从IO中查询的数据,保存到内存中,使程序直接操作内存即可获得数据,优化了程序等待IO数据的时间。


缓存的分类

        缓存的分类可以有多种,这里讲的是以程序为中心进行划分的,缓存可分为:线程级缓存,进程级缓存,进程外缓存。
        线程级缓存的生命周期是运行程序的一个线程的生命周期,jdk提供了相应的类,即ThreadLocal<T>。
        进程级缓存的生成周期是运行程序的生命周期,程序启动就存在,程序停止,则缓存数据消失,这个sun公司没有提供相应的具体实现,不过,第三方提供了很多这样的框架,如:ehcache,oscache。
        进程外缓存的生命周期是缓存服务器的生命周期,它的生命周期完全独立应用程序的,即使我们的应用程序停止运行了,只要我们的缓存服务器换运行者,那么,缓存数据就不会丢失,我们的程序再启动后,仍可以使用相应的缓存数据,现在缓存服务器也有很多,如:redis,memcached


缓存和对象池的区别

        对象池这个概念相应大家不陌生,如果你做过和数据库交互的项目,一定会用到的,那就是jdbc的连接池,即数据库的连接池,常用的数据库连接的连接池框架有:c3p0,dbcp,proxool,druid,tomcat等服务器提供的连接池,对于这部分的内容大家可以看这篇博客:JDBC数据库连接池
       上面以数据库连接池简单的说了一下池的概念,从上面,我们可以知道,对象池也是存放对象的内存,缓存也是,那么,为什么还要其来个不同的名字呢?这是因为这两个虽然在具体形式上一样,但是,其本质是不一样。
       缓存存的对象都是轻量级的,一般都是数据对象,并且,这些对象是不同的,而对象池中的对象一般都是操作对象,重量级对象,并且都是相同的,之前没有搞懂缓存的对象怎么是不同的呢,后来想明白了,缓存中的数据是不同的,这个不同不是说他们的类型或者引用地址是不同的,而是说对象里面的数据是不同的。


java缓存和.net缓存

        之前学习.net的时候,也学习过这块的内容,所以,在学习java的过程中,思想方面是没有什么问题的,主要的一些问题是在实现上,因为,在.net平台上,微软做了很好的集成,其提供了很多方面的缓存,如:页面缓存(局部,全部),线程缓存,进程缓存,以及进程外session缓存,都提供了相应的实现,我们只需要调用就行了,不要引入太多第三方的东西,但是,在java这块,动不动就需要引用第三方的东西,所以,在刚开始学习java的这块内容的时候,有点不太习惯,造成这个的因为是,.net是不开源的,java是开源的,当然,开源有开源带来的问题,不开源也有不开源的好处,再次不做评论。关于.net缓存的东西,大家可以查看我之前的博客。


总结

        关于缓存,我们可以使用第三方的框架,也可自定义缓存,不论哪个级别的缓存,我们都可以自定义实现,之后的几篇博客,直接使用这些框架,做相应的demo。


版权声明:本文为博主原创文章,未经博主允许不得转载。

java缓存(1、概述)

标签:

原文地址:http://blog.csdn.net/jiben2qingshan/article/details/47170153

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