java缓存范围的分析
来源:互联网 发布:云南省卫生网络直报 编辑:程序博客网 时间:2024/05/16 10:34
以下内容 ,纯属个人见解,如有疑问请联系我
因个人工作范围均是是java/web项目,所以一下是在web项目下比较的,此外需要阅读者拥有一定的java知识
缓存(Cache)在java项目的应用极为普遍,可以说一直都在,可能码代码的都没有在意,但它一直都在。
缓存的作用(百度):缓存就是数据交换的缓冲区,当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。
如果要说缓存的范围,倒不如说对象的作用域。先向码代码的诸位强调一点:对象不只是存在于代码间(虽然我们都知道,但我们习惯性的却是“代码”,这里我们需要跳出去)。我们天天说 session缓存,一级缓存(H),二级缓存(H),cacahe等等,但这些都是具体缓存或者定义缓存,狭隘且宽广。缓存的正确认识应该是:操作系统磁盘缓存->减少磁盘机械操作数据库缓存->减少文件系统I/O应用程序缓存->减少对数据库的查询Web服务器缓存->减少应用服务器请求客户端浏览器缓存->减少对网站的访问。由此我们的缓存对象其作用域就以及完全跳出了“程序代码”。操作系统主要是指的是应用服务器/web服务器/数据库服务器(包括相关集群设备);应用程序自然是我们的程序代码(包括其他部署程序,例如memcache、tomcat等);客户端则主要是指用户的浏览器部分。
那么,根据缓存的范围,我们可以针对性的考虑,缓存对象位于不同级别的位置,其作用是什么。
缓存对象在操作系统中,一般有以下种方式:1.系统子提供的,像文件系统提供的Disk Cache等等,我们一般是不干预的,或者我们没有对此作出具体的操作,我们通常的方式是给予充足的物理内存/存储,强大的CPU,较干净的操作系统等等。2.物理层面的,像我们做集群时,如hadoop,我们需要HDFS物理层面的缓存时,需要借助mmap,mlock等。具体请百度/Google》“HDFS缓存机制”。3.内存层面的,这个比较好理解,包括数据库的连接请求等等。那么,操作系统中的缓存对象其作用范围较大,理论上可以影响整个的服务进程。
应用程序的缓存,是我们最常用的,我们对缓存对象的初始化位置进行定义,使其可以有不同的作用范围,如写入硬盘/内存、全局、独立进程、部分程序、单独的类/页面等等,可以说是极为丰富全面。其具体内容,请百度/Google》“java缓存机制”。
客户端缓存主要是http缓存(请参考HTTP协议中的缓存控制头)、cookie、session缓存等,其作用范围,当然只有当前用户的浏览器。一般的像cookie,session等,我们是可以再应用程序中进行操作,或者进行页面的刷新。我们都知道客户浏览器的缓存是我们项目评价的重要影响因素,也是造成投诉的重要原因之一,这使我们又爱又恨。其具体请百度/Google》“浏览器缓存”。
综上,我们能看出 操作系统缓存>=应用程序缓存>=客户端缓,然后让我们回归代码,缓存对象的作用范围:内存/硬盘>=全局>=局部>=进程>=功能,程序、数据、浏览器都在其范围之内,我们需要关注的是:缓存对象的整个生命周期位置。
因个人工作范围均是是java/web项目,所以一下是在web项目下比较的,此外需要阅读者拥有一定的java知识
缓存(Cache)在java项目的应用极为普遍,可以说一直都在,可能码代码的都没有在意,但它一直都在。
缓存的作用(百度):缓存就是数据交换的缓冲区,当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。
如果要说缓存的范围,倒不如说对象的作用域。先向码代码的诸位强调一点:对象不只是存在于代码间(虽然我们都知道,但我们习惯性的却是“代码”,这里我们需要跳出去)。我们天天说 session缓存,一级缓存(H),二级缓存(H),cacahe等等,但这些都是具体缓存或者定义缓存,狭隘且宽广。缓存的正确认识应该是:操作系统磁盘缓存->减少磁盘机械操作数据库缓存->减少文件系统I/O应用程序缓存->减少对数据库的查询Web服务器缓存->减少应用服务器请求客户端浏览器缓存->减少对网站的访问。由此我们的缓存对象其作用域就以及完全跳出了“程序代码”。操作系统主要是指的是应用服务器/web服务器/数据库服务器(包括相关集群设备);应用程序自然是我们的程序代码(包括其他部署程序,例如memcache、tomcat等);客户端则主要是指用户的浏览器部分。
那么,根据缓存的范围,我们可以针对性的考虑,缓存对象位于不同级别的位置,其作用是什么。
缓存对象在操作系统中,一般有以下种方式:1.系统子提供的,像文件系统提供的Disk Cache等等,我们一般是不干预的,或者我们没有对此作出具体的操作,我们通常的方式是给予充足的物理内存/存储,强大的CPU,较干净的操作系统等等。2.物理层面的,像我们做集群时,如hadoop,我们需要HDFS物理层面的缓存时,需要借助mmap,mlock等。具体请百度/Google》“HDFS缓存机制”。3.内存层面的,这个比较好理解,包括数据库的连接请求等等。那么,操作系统中的缓存对象其作用范围较大,理论上可以影响整个的服务进程。
应用程序的缓存,是我们最常用的,我们对缓存对象的初始化位置进行定义,使其可以有不同的作用范围,如写入硬盘/内存、全局、独立进程、部分程序、单独的类/页面等等,可以说是极为丰富全面。其具体内容,请百度/Google》“java缓存机制”。
客户端缓存主要是http缓存(请参考HTTP协议中的缓存控制头)、cookie、session缓存等,其作用范围,当然只有当前用户的浏览器。一般的像cookie,session等,我们是可以再应用程序中进行操作,或者进行页面的刷新。我们都知道客户浏览器的缓存是我们项目评价的重要影响因素,也是造成投诉的重要原因之一,这使我们又爱又恨。其具体请百度/Google》“浏览器缓存”。
综上,我们能看出 操作系统缓存>=应用程序缓存>=客户端缓,然后让我们回归代码,缓存对象的作用范围:内存/硬盘>=全局>=局部>=进程>=功能,程序、数据、浏览器都在其范围之内,我们需要关注的是:缓存对象的整个生命周期位置。
阅读全文
0 0
- java缓存范围的分析
- Java里面int范围对应的二进制举例分析
- JAVA 数据类型的范围
- java数据类型的范围
- Android中的java基础(一)——Integer等数字基本类型的-128到127范围的缓存
- 网页缓存的分析
- WebView的缓存分析
- java 变量范围的测试
- Java各数据类型的范围:
- Java的基本数据类型范围:
- Java变量的作用范围
- Java 各类型的范围
- Java变量的作用范围
- java-机器人的运动范围
- java修饰符的范围
- Java编程:Integer的取值范围(-2^31~2^31-1)分析
- 持久层缓存范围
- MySQL中int值范围的分析
- C++ STL string对象操作汇总
- WebStorm支持ES6语法设置
- 用原生HTML5控件实现输入框自动提示(下拉列表补全)功能
- js splice()的用法
- 抽屉
- java缓存范围的分析
- java-FtpClient 503
- URAL 1748. The Most Complex Number(反素数)
- UML类图几种关系的总结
- 《内外兼修:程序员的成长之路》读后感
- C++中构造函数
- hibernate+struts2+spring框架整合
- mysql5.6, mysql5.7什么时候该创建索引?
- 操作系统ucore lab5实验报告