一种支持并发的文件事务方法技术

技术编号:6625132 阅读:260 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种支持并发的文件事务方法,该方法的实现步骤如下:文件加载,从文件路径上获取文件并将文件反序列化为对象,将对象保存在内存中;文件操作、保存,对文件的操作都是基于对对象的操作,文件对象是支持并发操作的,文件保存是将内存中的对象重新写入文件中。本发明专利技术的有益效果是解决了应用使用数据库带来的难以跨平台、安装复杂、高昂的购买费用等问题,解决多线程读写操作的安全,解决了文件操作中的多人并发操作时的文件冲突问题,使文件操作易于标准化,易于规范化,可以更好的并行操作;提高了文件的安全性,可以有效防止有人恶意篡改数据。

【技术实现步骤摘要】

本专利技术涉及一种文件事务方法,尤其涉及。
技术介绍
传统技术中,对于文件的读写都是基于操作系统中的文件系统实现的,数据以文件为单位存储,且由操作系统统一管理,文件的逻辑结构和物理结构脱钩,程序和数据分离,是数据和程序有了一定的独立性,用户的程序和数据可以分别存放,各个应用程序可以共享一组数据,可以实现以文件为单位的数据共享。但由于数据的组织仍然是面向程序,所以基于操作系统的文件的读写有种种限制,如不能进行并发操作、无法远程操作文件等。当某个应用面临终端分布广、需要并发操作、对数据共享有很高要求时,可能就需要选用数据库来完成,数据库能够统一管理和共享数据,数据冗余很少,程序和数据有很高的独立性, 数据库对数据进行统一管理和控制,提供了数据的安全性、完整性以及并发控制。但是可能由于各种历史条件的限制,各个部门或者地区根据自身的信息需求和特定的应用可能选择了各自的软硬件环境,所以应用面临的数据库版本各异,开发出来的应用无法直接复制到另一个平台中使用,同时使用数据库还面临着高昂的购买费用、复杂的安装等问题。
技术实现思路
本专利技术的目的就是为了解决上述问题,提供,它提高了文件的安全性,并可以在多个平台上使用且不需要安装。为了实现上述目的,本专利技术采用如下技术方案 ,该方法的实现步骤如下步骤1 初始化数据库系统服务器,并判断原文件是否存在,如存在则转入步骤3,如不存在则转入步骤2 ;步骤2 判断原文件的备份文件是否存在,如存在,则转入步骤3,如备份文件不存在则抛出异常;步骤3 反序列化原文件或备份文件为对象;步骤4:判断对象的消息鉴别码Mac是否正确,如果正确则跳至步骤5,如错误则抛出异常;步骤5:将对象保存在内存中;步骤6 对文件进行并发操作并进行保存。所述的步骤6中对文件进行并发操作的实现步骤如下1)深拷贝备份文件对象到临时文件对象中;2)判断临时对象的Mac是否正确,如果正确则跳至步骤3),如果错误则判断原文件是否存在,如原文件存在则拷贝给备份文件,如原文件不存在则抛出异常;3)用户对临时对象进行写操作;4)从磁盘重新读取原文件到临时对象中;5)判断临时对象的Mac是否正确,如果正确,转向步骤6),如果错误则抛出异常;6)将临时对象写入备份文件中;7)完成文件的并发操作。所述反序列化是将字节序列恢复为对象的过程。所述步骤3)中对文件进行写操作时,每次执行完文件写操作后调用操作系统的刷新文件缓存方法强制刷新缓存文件内容到磁盘上,保证每次写文件都能及时写到磁盘上。本专利技术的有益效果1、一种支持并发的文件事务系统可以使用java语言进行开发,开发完成后因为java 语言跨平台的特性使得支持并发的文件事务系统也可以在多个平台使用,一种支持并发的文件事务系统安装方便只需进行拷贝安装即可,无需进行复杂的配置,故解决了应用使用数据库带来的难以跨平台、安装复杂、高昂的购买费用等问题,采用该方法的应用具有很好的复制性,可以在多个平台上使用,并且不需要安装。2、修改原先文件事务设计上存在的死锁问题,将所有的对文件的访问统一到一个对象来操作,解决多线程读写操作的安全,解决了文件操作中的多人并发操作时的文件冲突问题,使文件操作易于标准化,易于规范化,可以更好的并行操作。3、提高了文件的安全性,方法中所有操作都以拷贝的文件对象来执行,可以有效确保数据版本安全,并且在每次打开、保存对象的时候都对其Mac值进行验证,可以有效防止有人恶意篡改数据。附图说明图1为支持并发的文件事务方法流程图; 图2为文件加载步骤图3为文件操作步骤图。具体实施例方式下面结合附图与实施例对本专利技术作进一步说明。如图1所示,为支持并发的文件事务方法流程图,该方法的实现步骤如下A.文件加载,从文件路径上获取文件并将文件反序列化为对象,将对象保存在内存中;B.文件操作、保存,对文件的操作都是基于对对象的操作,文件对象是支持并发操作的,文件保存是将内存中的对象重新写入文件中。如图2所示为文件加载流程图,加载步骤如下 Al.首先将获取的相对路径转为绝对路径;A2.判断文件是否存在,如文件存在则跳至A3,如文件不存在则判断备份文件是否存在,如备份文件存在,则将备份文件反序列化为对象并跳至步骤A4 ; A3.反序列化文件为对象;A4.判断对象的Mac是否正确,如果正确则跳至步骤A5,如错误则判断备份文件是否存在,如备份文件存在,则将备份文件反序列化为对象,判断备份文件对象的Mac是否正确, 如果正确则跳至步骤A5,如果错误则抛出异常;A5.将反序列化后的对象返回。如图3所示,文件操作包含以下步骤Bi.深拷贝备份文件对象到临时文件对象中,每次事务写操作前先从要写的文件对象深拷贝出一个临时文件对象,后面的所有写操作均以此拷贝的文件对象来执行,防止计算 Mac值后其他线程对此文件对象进行修改;B2.判断临时对象Mac是否正确,如果正确则跳至步骤B3,如果错误则判断原文件是否存在,并将原文件拷贝给备份文件;B3.用户对对象进行操作,因为对象的特性可以允许多个用户对同一对象操作,创建 Mac码,并将经过操作后的对象写入原文件,在进行文件写操作时,每次执行完文件写操作后调用操作系统的刷新文件缓存方法强制刷新缓存文件内容到磁盘上,保证每次写文件都能及时写到磁盘上;B4.从磁盘重新读取原文件到临时对象中;B5.判断临时对象的Mac是否正确,如果正确,转向步骤B6,如果错误则抛出异常; B6.将临时对象写入备份文件中。在本专利技术中,Mac指的是消息鉴别码(Message Authentication Code),消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的数据块,即MAC,并将其加入到消息中,然后传输;接收方利用与发送方共享的密钥进行鉴别认证等。实施例1:在线考试系统中,考生的答卷一般以文件的形式储存在服务器上,考生答题时对服务器上的答题文件进行在线访问,答完一个题目后即进行写操作。但在使用在线考试系统中存在一个特殊需求,即在考试过程中如监考老师发现某个学生作弊需要将其作弊信息写入到其答题文件中,这就涉及到了文件的并发访问问题,以往会使用数据库来解决这个问题,数据库可以很好的对并发访问进行控制分配。但如果这个考试是大范围性的,因为各地的服务器操作系统各异就会造成无法对数据库进行统一安装,即使能够统一数据库版本也存在着安装复杂、费用较高的问题,使用本专利技术则可以很好地解决这种轻量级的文件并发访问问题。利用本专利技术所开发的系统不需要进行安装,只需要将其跟考试系统一块部署在服务器上即可,例如AnswerFile、AnswerFile. bak为服务器上考生的两个答题文件,其中AnswerFile为原文件,AnswerFile. bak为备份文件,在系统初始化时会首先判断AnswerFile文件是否存在,如果AnswerFile文件存在就将其反序列化为对象,如果 AnswerFile文件不存在就将AnswerFile. bak反序列化为对象,反序列化后会判断对象的 Mac值是不是正确,如果原文件AnswerFile对象的Mac值不正确就将备份AnswerFile. bak 文件反序列化为对象并判断其Mac值。本文档来自技高网...

【技术保护点】
1.一种支持并发的文件事务方法,其特征是,该方法的实现步骤如下:步骤1:初始化数据库系统服务器,并判断原文件是否存在,如存在则转入步骤3,如不存在则转入步骤2;步骤2:判断原文件的备份文件是否存在,如存在,则转入步骤3,如备份文件不存在则抛出异常;步骤3:反序列化原文件或备份文件为对象;步骤4:判断对象的消息鉴别码Mac是否正确,如果正确则跳至步骤5,如错误则抛出异常;步骤5:将对象保存在内存中;步骤6:对文件进行并发操作并进行保存。

【技术特征摘要】

【专利技术属性】
技术研发人员:郑永清肖宗水任国珍何伟
申请(专利权)人:山东地纬计算机软件有限公司
类型:发明
国别省市:88

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1