- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NCV5-内存级缓存的技术红皮书
内存级缓存技术红皮书
NC-UAP 5.0
用友NC-UAP
2011-03-21
目 录
第一章 前言 1
第二章 内存占用3
第三章 数据更新6
1. VersionSensitiveMap 6
2. ElementVersionSensitiveMap 7
2.1 ICacheVersionMonitor 8
第四章 结论 10
第 2 页
第一章前言
NC 中的效率问题的通常是由于程序所采用的算法中需要频繁地访问数据库所致.
对于这类问题,通过使用合适的缓存往往能使问题得到根本解决. 这类方法的本
质就是用空间来换取时间,把多次的数据库访问合成少数几次或者一次,批量地
取回数据存放在内存中,把大部分数据库访问转换成对内存的访问,从而显著地
提升程序运行效率.为了使程序运行得更快,通常会采用一定的索引机制,最常见
的就是使用哈希表.下面的代码示例对同样的业务逻辑给出两种不同的实 现方
法,显而易见,使用缓存的算法将比不使用缓存的算法要快很多.
listing 1
/*
*需要频繁访问数据库的算法
*
*/
private void doSomething(String [] pk_deptdocs)
{
for(int i=0;ipk_deptdocs;i++)
{
DeptdocVO vo = (DeptdocVO)
getDeptdocVOFromDB(pk_deptdocs[i]);
dealWithDeptdocVO(vo);
}
}
/*
*使用缓存的算法
*
*/
private void doSomething(String [] pk_deptdocs)
{
DeptdocVO[] vos = getDeptdocVOsFromDB(pk_deptdocs);
Map cache = new HashMap();
for(int i=0;ivos.length;i++)
{
cache.put(vos[i].getPrimaryKey(),vos[i])
}
for(int i=0;ipk_deptdocs;i++)
{
DeptdocVO vo = (DeptdocVO)cache.get(pk_deptdocs[i]);
dealWithDeptdocVO(vo);
}
第 1 页
}
上面的例子对缓存的使用是有效但朴素的.如果doSomething 不是频繁被调用的
话,这样的做法就足够了.但如果这段代码是在服务器端运行,那就有可能频繁地
被多个线程调用,那么就需要考虑更多的问题.上面的实现中缓存是在堆栈中的,
每次调用都要建立缓存.如果每次调用的传入的数组中有相同的元素的话,那么
还是 有很多的数据库访问是可以避免.因此这种情形下就不再适合采用堆栈级
的缓存,而是需要更长生命周期的缓存.一般来说最容易想到的,有时也是唯一的
办法就是 把缓存对象做静态的(static)的.NCV5,在服务器端,还有一种办法就
是把缓存对象注册为一个组件(component),并把其 singleton 属性设置为
true.
但是对于这样长效的缓存又带来另外两个问题.首先是内存占用的问题.对于上
面提到实现方法,缓存的内存无法被虚拟机自动回收,如果有一段时期,该缓存没
有被用到,那么缓存占用的内存实质是一种浪费.而且如果缓存占用的内存过于
巨大甚至会拖垮整个应用,导致性能急剧下降,甚至内存耗尽,产生OutofMemory
异常.
另一个问题是就是数据有效性问题.数据从数据库中加载到内存中之后,很可能
又被修改了.如果缓存没有更新机制,经过一段时间之后,缓存中的数据可能大
您可能关注的文档
- LTE-EP的C网络介绍.ppt
- LTE RF优化的介绍.ppt
- LoRa物联网应的用解决方案.pptx
- LTE基本概念的及体系结构.pptx
- LTE-基的础知识全解.ppt
- LTE基本原理的和系统架构.ppt
- Linu的x虚拟内存管理进阶4.pdf
- LTE的系统消息.ppt
- LTE大话务冲击应对的措施.ppt
- LTE规划参数方案及的讲解.pptx
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)