缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。
缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期。
Hibernate的缓存包括Session的缓存和SessionFactory的缓存,其中SessionFactory的缓存又可以分为两类:内置缓存和外置缓存。Session的缓存是内置的,不能被卸载,也被称为Hibernate的第一级缓存。SessionFactory的内置缓存和 Session的缓存在实现方式上比较相似,前者是SessionFactory对象的一些集合属性包含的数据,后者是指Session的一些集合属性包含的数据。SessionFactory的内置缓存中存放了映射元数据和预定义SQL语句,映射元数据是映射文件中数据的拷贝,而预定义SQL语句是在 Hibernate初始化阶段根据映射元数据推导出来,SessionFactory的内置缓存是只读的,应用程序不能修改缓存中的映射元数据和预定义 SQL语句,因此SessionFactory不需要进行内置缓存与映射文件的同步。SessionFactory的外置缓存是一个可配置的插件。在默认情况下,SessionFactory不会启用这个插件。外置缓存的数据是数据库数据的拷贝,外置缓存的介质可以是内存或者硬盘。 SessionFactory的外置缓存也被称为Hibernate的第二级缓存。
Hibernate的这两级缓存都位于持久化层,存放的都是数据库数据的拷贝,那么它们之间的区别是什么呢?为了理解二者的区别,需要深入理解持久化层的缓存的两个特性:缓存的范围和缓存的并发访问策略。
持久化层的缓存的范围
缓存的范围决定了缓存的生命周期以及可以被谁访问。缓存的范围分为三类。
1 事务范围:缓存只能被当前事务访问。缓存的生命周期依赖于事务的生命周期,当事务结束时,缓存也就结束生命周期。在此范围下,缓存的介质是内存。事务可以是数据库事务或者应用事务,每个事务都有独自的缓存,缓存内的数据通常采用相互关联的的对象形式。
2 进程范围:缓存被进程内的所有事务共享。这些事务有可能是并发访问缓存,因此必须对缓存采取必要的事务隔离机制。缓存的生命周期依赖于进程的生命周期,进程结束时,缓存也就结束了生命周期。进程范围的缓存可能会存放大量的数据,所以存放的介质可以是内存或硬盘。缓存内的数据既可以是相互关联的对象形式也可以是对象的松散数据形式。松散的对象数据形式有点类似于对象的序列化数据,但是对象分解为松散的算法比对象序列化的算法要求更快。
3 集群范围:在集群环境中,缓存被一个机器或者多个机器的进程共享。缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致性,缓存中的数据通常采用对象的松散数据形式。
对大多数应用来说,应该慎重地考虑是否需要使用集群范围的缓存,因为访问的速度不一定会比直接访问数据库数据的速度快多少。
持久化层可以提供多种范围的缓存。如果在事务范围的缓存中没有查到相应的数据,还可以到进程范围或集群范围的缓存内查询,如果还是没有查到,那么只有到数据库中查询。事务范围的缓存是持久化层的第一级缓存,通常它是必需的;进程范围或集群范围的缓存是持久化层的第二级缓存,通常是可选的。
持久化层的缓存的并发访问策略
当多个并发的事务同时访问持久化层的缓存的相同数据时,会引起并发问题,必须采用必要的事务隔离措施。
在进程范围或集群范围的缓存,即第二级缓存,会出现并发问题。因此可以设定以下四种类型的并发访问策略,每一种策略对应一种事务隔离级别。
事务型:仅仅在受管理环境中适用。它提供了Repeatable Read事务隔离级别。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读和不可重复读这类的并发问题。
读写型:提供了Read Committed事务隔离级别。仅仅在非集群的环境中适用。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读这类的并发问题。
非严格读写型:不保证缓存与数据库中数据的一致性。如果存在两个事务同时访问缓存中相同数据的可能,必须为该数据配置一个很短的数据过期时间,从而尽量避免脏读。对于极少被修改,并且允许偶尔脏读的数据,可以采用这种并发访问策略。 只读型:对于从来不会修改的数据,如参考数据,可以使用这种并发访问策略。
事务型并发访问策略是事务隔离级别最高,只读型的隔离级别最低。事务隔离级别越高,并发性能就越低。
什么样的数据适合存放到第二级缓存中?
1、很少被修改的数据
2、不是很重要的数据,允许出现偶尔并发的数据
3、不会被并发访问的数据
4、参考数据
不适合存放到第二级缓存的数据?
1、经常被修改的数据
2、财务数据,绝对不允许出现并发
3、与其他应用共享的数据。
Hibernate的二级缓存
如前所述,Hibernate提供了两级缓存,第一级是Session的缓存。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必需的,不允许而且事实上也无法比卸除。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
第二级缓存是一个可插拔的的缓存插件,它是由SessionFactory负责管理。由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此第二级缓存是进程范围或者集群范围的缓存。这个缓存中存放的对象的松散数据。第二级对象有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。缓存适配器用于把具体的缓存实现软件与Hibernate集成。第二级缓存是可选的,可以在每个类或每个集合的粒度上配置第二级缓存。
Hibernate的二级缓存策略的一般过程如下:
1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。
2) 把获得的所有数据对象根据ID放入到第二级缓存中。
3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。
4) 删除、更新、增加数据的时候,同时更新缓存。
Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query缓存。
Hibernate的Query缓存策略的过程如下:
1) Hibernate首先根据这些信息组成一个Query Key,Query Key包括条件查询的请求一般信息:SQL, SQL需要的参数,记录范围(起始位置rowStart,最大记录个数maxRows),等。
2) Hibernate根据这个Query Key到Query缓存中查找对应的结果列表。如果存在,那么返回这个结果列表;如果不存在,查询数据库,获取结果列表,把整个结果列表根据Query Key放入到Query缓存中。
3) Query Key中的SQL涉及到一些表名,如果这些表的任何数据发生修改、删除、增加等操作,这些相关的Query Key都要从缓存中清空。
分享到:
相关推荐
亲测正常使用版,代码精简,压缩包也小,程序运行速度更快,效率更高,服务器抗攻击能力更强 功能方面: 仿天涯论坛模板的免费论坛系统在功能方面也很强大!程序本身包含一个PC版网站和一个手机版网站 支持打包APP安装包,开放式PHP原生态模板在线编译,音频视频发布直接生成HTML5代码,能够适应各种界面浏览器
三自由度机械臂神经网络自适应控制,径向基函数逼近动力学与未知反馈状态的高增益观测器应用,机械臂自适应神经网络控制,机械臂为三自由度,神经网络逼近系统的动力学和滞回非线性。 利用径向基函数的神经网络近似机器人的动力学。 对于系统状态未知的输出反馈,采用高增益观测器估计系统状态。 ,核心关键词:机械臂; 自适应神经网络控制; 三自由度; 神经网络逼近; 动力学; 滞回非线性; 径向基函数; 输出反馈; 高增益观测器。,基于神经网络的自适应控制:三自由度机械臂的滞回非线性动力学逼近研究
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
西门子中央空调智能控制程序:标准化冷水机组运行,模糊控制开启与切换策略,自动均衡磨损与故障管理,西门子中央空调程序。 冷水机组程序,标准化很好的程序,内部用的函数封装成标准块。 采用模糊控制,根据需求及制冷量来确定开启冷水机组及冷冻泵,冷却泵的台数。 夏季开启冷水机组,冬季开启锅炉制热 均衡磨损(为了专利保护只可调用,):水泵均衡磨损,冷机均衡磨损,故障,时间到了自动切,根据需求自动启动停止水泵。 需要的老板滴滴中央空调程序。 冷水机组程序,标准化很好的程序, 注:内部用的函数封装成标准块。 可以直接调用,部分源文件有保护, ,西门子中央空调程序; 冷水机组程序; 模糊控制; 开启/关闭机制; 标准化; 函数封装; 均衡磨损; 自动切换; 保护源文件; 老板滴滴中央空调程序,西门子中央空调冷水机组标准化程序:智能控制与均衡磨损管理
三相逆变器并联系统功率均分研究:VSG控制策略下的LCL滤波与预同步技术,多台三相逆变器并联(本模型为三台并联,市面上多为两台并联)matlab simulink仿真。 功能:实现并联系统中各逆变器输出功率均分。 (有能力的话还可以研究下垂特性、功率指令以及静态功工作点三者之间的联系) 控制策略:VSG控制策略(同步机控制) 逆变器主电路:三相逆变器,LCL滤波电路,VSG控制模块。 VSG控制模块:定、转子方程,dq变,电压电流双闭环,预同步,pwm发生器。 ,基于VSG控制的LCL滤波三相逆变器并联系统仿真研究:多台逆变器功率均分与下垂特性分析
2025年高级经济师笔试真题及答案.docx
三相维也纳整流器的双闭环控制仿真模型:电压PI与电流Bang Bang滞后控制器实现单位功率因数与低谐波运行,三相维也纳整流器的仿真模型。 控制算法采用电压和电流双闭环控制。 外部电压环路为PI控制器,内部电流环路为bang bang滞后控制器。 网侧单位功率因数运行,电网电流谐波非常小。 ,三相维也纳整流器; 仿真模型; 电压和电流双闭环控制; PI控制器; bang bang滞后控制器; 网侧单位功率因数运行; 电流谐波。,三相维也纳整流器仿真模型:双闭环控制算法与网侧单位功率因数运行下的电流谐波优化
资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:29页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:配套答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于 B/S 网络结构,在 IDEA 中开发。服务端用 Java 并借 Spring Boot 框架搭建后台。前台采用支持 HTML5 的 VUE 框架。用 MySQL 存储数据,可靠性强。 能学到什么: 使用Spring Boot搭建后台。VUE 框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1737204114470.jpg
Nuclei使用手册,语法,命令,操作,都在其中
汇川PLC三轴简易示教系统:强大可编程,触摸屏操作,四组工艺路径保存,源码可修改,离线仿真学习体验,三轴示教 可编程 触摸屏程序 功能强大 触摸屏 PLC 程序 汇川plc 三轴简易示教系统,学习性强,程序简单易用。 支持工艺路径保存,可以保存四组工艺路径。 每个工艺路径支持示教100步。 汇川H5U与 mcgs触摸屏简易示教系统,支持离线仿真。 有较好的学习性,可以在源码基础上任意修改,注释明确。 注意:源码程序文件。 ,三轴示教; 可编程; 触摸屏程序; 功能强大; PLC程序; 汇川PLC; 工艺路径保存; 离线仿真; 注释明确; 源码程序文件。,"汇川简易示教系统:多轴编程,触摸操作,强大功能与易用性并存"
资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档切片混合解析和叠加展示风格,请放心使用。 2:29页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解),旨在为更多的人甚至零基础的人也能运行、使用和学习。 3:配套毕业论文,万字长文,word文档,支持二次编辑。 4:范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关电子教程、视频教学资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于 B/S 网络结构,在 IDEA 中开发。服务端用 Java 并借 Spring Boot 框架搭建后台。前台采用支持 HTML5 的 VUE 框架。用 MySQL 存储数据,可靠性强。 能学到什么: 使用Spring Boot搭建后台。VUE 框架构建前端交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。
"风能储电系统模糊逻辑控制仿真模型研究:通过蓄电池变换器驱动,实现电网惯量供应与功率平滑输出的有效整合",风-储系统仿真模型;通过模糊逻辑控制策略驱动蓄电池变器运行,以达到为电网提供惯量的目的。 可以实现功率平滑输出 ,"模糊逻辑驱动的风储系统模型:提升电网惯量与功率平滑输出的仿真研究"
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
永磁同步电机谐波注入补偿与Simulink模型仿真:电流谐波抑制技术研究,永磁同步电机的谐波注入补偿simulink模型仿真 5次7次电流谐波抑制;^_^ ,核心关键词: 永磁同步电机;谐波注入补偿;Simulink模型仿真;5次7次电流谐波抑制;谐波抑制。,"Simulink模型仿真:永磁同步电机谐波注入补偿策略及5/7次电流谐波抑制"
滑模控制策略在永磁同步电机PMSM模型预测转矩控制中的性能仿真分析:转速与负载条件下的鲁棒性评估,基于滑模控制器的模型预测转矩永磁同步电机PMSM控制仿真 [1]将原有的PI控制器成了滑模控制器,一定程度提高了电机的鲁棒性。 与传统DTC相比,基于滑模控制策略的永磁同步电机直接转矩控制系统中电磁转矩脉动幅值更低,且具有更好的动态性能和抗扰动能力, [2]传统矢量控制存在系统计算量大、动态响应慢等缺陷,直接转矩控制则存在谐波损耗大、磁链脉动大、低速性能差等问题。 因此,结合了模型预测控制技术以提高永磁同步电机的性能。 [蓝圆]仿真工况:给定转速为500rpm,仿真时间为0.5s。 空载启动,在0.25s时,施加0.5Nm的负载 配有滑模控制器参考资料 ,关键词:滑模控制器; 模型预测控制; 永磁同步电机(PMSM); 转矩控制; 鲁棒性; 动态性能; 抗扰动能力; 空载启动; 仿真工况。,基于滑模控制与模型预测的PMSM控制仿真研究:提升鲁棒性与动态性能
mmexport1736921254924.jpg
模块化多电平直流变压器仿真模型:三相MMC配置、高效运行参数与完美电压波形分析,模块化多电平直流变压器仿真模型 三相MMC面对面配置,40kV到60kV,额定输出功率15MW,运行频率250Hz,交流侧对地相电压为准两电平方波,单移相控制,输出电压电流波形完美 ,核心关键词:模块化多电平直流变压器;仿真模型;三相MMC面对面配置;40kV到60kV;额定输出功率15MW;运行频率250Hz;交流侧对地相电压;准两电平方波;单移相控制;输出电压电流波形完美。,"高精度仿真:40-60kV模块化多电平直流变压器运行于250Hz,准两电平方波输出"
内容概要:本文提供了全球InfiniBand技术市场的详细预测与分析(2006-2011)。研究指出,随着对高性能计算(HPC)、扩展型数据库环境、共享虚拟I/O的需求增加以及金融应用对类似特性的工作负载需求提升,InfiniBand正逐渐成为满足低延迟高带宽网络连接的关键解决方案。此外,随着向更快双倍速率传输方案转变速度比预期更快,数据中心内部署InfiniBand的成本优势也在推动它逐步超越Ethernet。文章还介绍了OpenIB联盟、InfiniBand贸易协会及其他行业组织为推动Interconnect标准统一及多平台兼容所作的努力。 适用人群:对于关注IT基础设施建设,尤其是高性能服务器集群管理及云计算架构感兴趣的决策层和技术人员来说非常有价值。 使用场景及目标:帮助数据中心管理者选择合适的网络连接方案来支持高并发处理能力和服务质量保障;为企业提供制定未来硬件采购计划所需的数据支持,使其能够更好地规划长期投资并评估新旧技术之间的过渡方案。 其他说明:尽管当前大多数企业数据中心仍以太网为主要连接方式,但作者认为在未来几年间,在性能要求更高的场合下将更多地采用InfiniBand协议作为骨干通讯链路之一。因此文中特别提到了几个关键因素:1) 带宽需求持续增长使得传统布线方式不再适用;2) 更高的性价比使InfiniBand相较于其它同类产品更具吸引力;3)开放性的软件栈有利于跨平台集成;最后则探讨了虚拟化环境下利用该技术支持高效能运算的可能性。