当前位置: 首页 > 工具软件 > bboss-gencode > 使用案例 >

bboss文件缓存组件FileContentCache介绍

闻人飞白
2023-12-01
bboss文件缓存组件FileContentCache介绍

[size=large][b]bboss文件缓存组件FileContentCache作用[/b][/size]

我们经常需要在程序中频繁地读取文件内容,如果在高并发情况下频繁地访问文件系统会导致频繁的IO操作或者超出linux允许访问的最大文件句柄数;那么通过缓存文件内容可以很好地解决这个问题,同时如果文件内容有变化还需要将最新内容更新到缓存区。

三种不同的获取文件内容的机制示意图:
[img]http://dl2.iteye.com/upload/attachment/0115/3464/1e9e9ef6-b8d0-3638-89b0-fd28b541c84a.gif[/img]
方式一 每次都访问物理文件
方式二 第一次读物理文件,以后都从缓存区获取文件内容
方式三 第一次读物理文件,以后都从缓存区获取文件内容,但是后台会开启一个守护进程定时探测所有已经加载的文件是否有变动,有变动则将最新的文件内容加载到缓存区,确保后续读取到的文件内容是最新的内容。
FileContentCache采用方式三对文件内容进行缓存,同时提供了对文件内容进行格式化处理的实用方法。

[size=large][b]bboss文件缓存组件FileContentCache使用[/b][/size]
bboss文件缓存组件FileContentCache使用非常简单,直接看[url=https://github.com/bbossgroups/bboss/blob/master/bboss-util/test/org/frameworkset/util/FileContentCacheTest.java]示例[/url]代码:

try {
//创建一个文件内容缓存组件并初始化,一般采用单列模式创建,根据需要可以创建多个单列实例。
FileContentCache fileContentCache = new FileContentCache();
fileContentCache.setRefreshInterval(5000);//设置定时探测扫描文件时间间隔,单位:毫秒,每个组件只会以daemon模式启动一个线程。
fileContentCache.start("测试缓存组件");

//使用组件方法获取文件内容:第一次从缓存读取
String content = fileContentCache.getFileContent( "/opt/source/Test.java", "UTF-8",FileContentCache.PLAINEncode);//对内容不做任何处理
content = fileContentCache.getFileContent( "/opt/source/Test.java", "UTF-8",FileContentCache.HTMLEncodej);//对html转义存储的文件内容进行还原处理
content = fileContentCache.getFileContent( "/opt/source/Test.java", "UTF-8",FileContentCache.HTMLNoBREncode);//对内容进行html转义处理,忽略回车换行处理
content = fileContentCache.getFileContent( "/opt/source/Test.java", "UTF-8",FileContentCache.HTMLEncode);//对内容进行html转义处理

//后续从缓存读取
content = fileContentCache.getFileContent( "/opt/source/Test.java", "UTF-8",FileContentCache.PLAINEncode);//对内容不做任何处理
content = fileContentCache.getFileContent( "/opt/source/Test.java", "UTF-8",FileContentCache.HTMLEncodej);//对html转义存储的文件内容进行还原处理
content = fileContentCache.getFileContent( "/opt/source/Test.java", "UTF-8",FileContentCache.HTMLNoBREncode);//对内容进行html转义处理,忽略回车换行处理
content = fileContentCache.getFileContent( "/opt/source/Test.java", "UTF-8",FileContentCache.HTMLEncode);//对内容进行html转义处理
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


[size=large][b]bboss文件缓存组件FileContentCache包下载[/b][/size]
bboss文件缓存组件FileContentCache jar包下载地址:[url=https://github.com/bbossgroups/bboss/blob/master/bboss-core/lib/frameworkset-util.jar?raw=true]下载[/url]

运行时需要的依赖包可以到以下地址找到:
[url]https://github.com/bbossgroups/bboss/tree/master/bboss-util/lib[/url]

[size=large][b]bboss文件缓存组件FileContentCache应用案例[/b][/size]
bboss文件缓存组件FileContentCache在bboss相关的应用中得到很好的应用:
应用1:[url=http://www.bbossgroups.com/detail.htm?demoname=index]bboss官网中查看demo程序文件源码功能[/url]

应用2:[url=http://gencode.bbossgroups.com]自动代码生成工程在线查看生成的文件源码功能[/url]

bboss持久层sql配置文件热加载机制、bboss国际化属性配置文件热加载机制、bboss平台模块菜单配置文件热加载机制也是基于文件缓存组件使用的daemon扫描线程组件实现的。
 类似资料: