随处可见的缓存思想(有补充的欢迎留言交流)

简介: 本文介绍了多种缓存技术及其应用场景,包括面向对象编程中的对象缓存、String对象池、浏览器缓存、CPU指令寄存器、数据库连接池、库表内存化、线程池、JIT即时编译器、字符串常量池以及MyBatis的一级和二级缓存,旨在提高程序的性能和效率。

一、【事先将要使用到的数据缓存好,以便使用的时候给予更快速的响应】

面向对象编程创建和销毁对象费时费力。因此减少创建和销毁对象的次数,如果可以对现存对象重复使用,尤其对于那些非常耗资源的对象,将会有效提高程序效率。

二、String对象(常量)池:

1创建String对象时采用直接赋值的匿名对象方式,可以自动将字符串存入到字符串对象(常量)池中供后续重复使用.
2采用new的构造方法方式,若调用String intern()方法也可也实现手工入池.

三、浏览器缓存:

在首次访问网站服务器时,浏览器会从服务器获取所有资源,在传输过程中,浏览器会通过一些约定好的响应头,从而确定是否需要将这个资源保存一份到本地作为缓存。当用户第二次访问该网站的时候,浏览器就会优先从缓存中加载资源,不用向服务器请求资源,从而提高了网站的访问速度。

四、CPU中的指令寄存器:

它是芯片上的指令仓库,有了它CPU就不必停下来查找计算机内存中的指令,从而大幅提高了CPU的运算速度。

五、数据库连接池:

有了它,就不必在操作数据库时每次都创建新的数据库连接,已有的连接可以被循环重复使用,减少了开销同时也提高了效率。

六、Java程序中的库表内存化:

程序需要频繁操作的数据库表,可以预先存放到内存中,这样的话,程序可以直接从内存操作数据,而且也不必使用数据库连接资源,速度得到提升,资源消耗也降低。

七、线程池:

有了线程池,就不必每次都创建一个新的线程,已有的线程可以被循环重复使用,既降低的开销也提高了效率。

八、JIT Just-in-time Java即时编译器:

一般Java程序运行过程是由编译器将源码编译成class字节码文件,字节码文件可以被JVM识别和转换成计算机识别的机器码指令。在JVM将字节码转换成机器码时,有两种方式配合一起完成:解释器(负责将字节码一条条翻译成机器指令)和JIT即时编译器(当JVM发现部分代码经常被运行时,就会把这些热点代码翻译为与本地平台相关的机器码指令,还会将这些机器指令保存起来,再此执行时就不必翻译了)。

九、字符串常量池:

已经创建过的字符串常量,会被缓存在字符串常量池中,再次使用就不必再次创建了。

十、MyBatis中的一级缓存/二级缓存:

SQL及参数一致,则直接读取缓存数据,而不用再去数据库中查询
MyBatis的Configuration对象:程序启动初始化时,会从xml配置文件读取所有配置信息,并存入到Configuration对象中,配置信息中的各个子节点(如映射器节点/插件节点等)的信息也会相应的存入到配置对象的相应属性中,以便后续取用。比如插件:在解析配置文件时,在MyBatis的上下文初始化过程中,就开始读入插件节点和配置的参数,同时使用反射技术生成对应的插件实例,然后调用插件方法中的setProperties方法来设置我们配置的参数,将插件实例保存到配置对象中,以便读取和使用它。所以插件的实例对象是一开始就被初始化的,而不是用到时才初始化,我们使用它时,直接拿出来就可以了,这样有助于性能的提高。interceptorChain在Configuration里面有一个属性,它里面有一个addInterceptor方法。

目录
相关文章
|
6月前
|
算法
二分查找算法的细节刨析 --适合有基础的朋友阅读
二分查找算法的细节刨析 --适合有基础的朋友阅读
|
前端开发
前端小知识点扫盲笔记记录8
前端小知识点扫盲笔记记录8
40 0
|
前端开发 JavaScript
前端小知识点扫盲笔记记录6
前端小知识点扫盲笔记记录2
62 0
|
存储 移动开发 前端开发
前端小知识点扫盲笔记记录3
前端小知识点扫盲笔记记录3
83 0
|
前端开发
前端小知识点扫盲笔记记录13
前端小知识点扫盲笔记记录13
70 0
|
前端开发 JavaScript
前端小知识点扫盲笔记记录2
前端小知识点扫盲笔记记录2
76 0
|
存储 缓存 移动开发
前端小知识点扫盲笔记记录
前端小知识点扫盲笔记记录
85 0
|
前端开发
前端小知识点扫盲笔记记录6
前端小知识点扫盲笔记记录6
50 0
|
前端开发
前端小知识点扫盲笔记记录9
前端小知识点扫盲笔记记录9
54 0
|
前端开发 容器
前端小知识点扫盲笔记记录10
前端小知识点扫盲笔记记录10
59 0