掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及内存持久化控制技术领域,特别涉及一种内存持久化方法及系统。

背景技术

本部分的陈述仅仅是提供了与本发明相关的背景技术,并不必然构成现有技术。

程序内存中的运行数据(堆、栈数据等)为易丢失数据,为了保证数据不丢失,需要利用某种持久化方法,将数据保存到硬盘上,在程序启动时,再将数据读取到内存中。

现行的持久化方法有以下几种:

(1)将数据按某种格式(如ini、json、xml等)保存到文件中,程序启动时将数据解析后,保存到内存中;此方法,一般只适用于数据不做修改的配置类信息;

(2)将数据保存到数据库中(mysql、sqlserver、sqlite等),此方法适合于大多数的运行数据,缺点是读/写数据时需要第三方工具。

发明内容

为了解决现有技术的不足,本发明提供了一种内存持久化方法及系统,采用文件映射方式来处理内存数据持久化的方法,将文件的一部分内容,映射到内存中,程序对此部分映射内存所做的修改,可自动保存到文件中;方便读写的同时,又不需引入第三方工具。

为了实现上述目的,本发明采用如下技术方案:

本发明第一方面提供了一种内存持久化方法。

一种内存持久化方法,包括以下过程:

获取结构体的大小X;

创建dat文件,确保文件大小不少于X;

调用系统API将dat文件中X大小的部分,映射到内存中,得到映射地址;

对从映射地址开始的X大小的内存进行读或写,对该内存的修改自动保存到dat文件中。

作为可选的一种实现方式,Linux系统下,文件映射的API为mmap;window系统下,文件映射的API为CreateFileMapping。

本发明第二方面提供了一种内存持久化系统。

一种内存持久化系统,包括:

数据获取模块,被配置为:获取结构体的大小X;

dat文件创建模块,被配置为:创建dat文件,确保文件大小不少于X;

映射模块,被配置为:调用系统API将dat文件中X大小的部分,映射到内存中,得到映射地址;

修改存储模块,被配置为:对从映射地址开始的X大小的内存进行读或写,对该内存的修改自动保存到dat文件中。

本发明第三方面提供了一种内存持久化方法。

一种内存持久化方法,应用于列表数据,包括以下过程:

控制数据大小为Y,列表中每个实例的大小为X,则需映射的大小为:M=Y+nX,其中n为列表中实例个数,第i个数据位置内存地址为:P

创建dat文件,使得文件大小不小于M;

将文件M大小的内容,映射到内存中,得到映射地址为0X123456;

过遍历使用位图表,计算出第1个空闲位置的地址,将数据拷贝到此位置上,更新位图和已用计数。

作为可选的一种实现方式,第i个数据为即将删除的数据,将第i个数据内存地址开始的Y大小的内存空间清零,更新位图和已用计数。

作为可选的一种实现方式,如更新第i个位置上人员对象的数据,首先获取第i个位置的内存地址P

作为可选的一种实现方式,根据使用位图,确定存在有效数据的位置,对于每个存在有效数据的位置,检查数据,确定是否是待查找的数据。

本发明第四方面提供了一种内存持久化系统。

一种内存持久化系统,应用于列表数据,包括:

数据获取模块,被配置为:控制数据大小为Y,列表中每个实例的大小为X,则需映射的大小为:M=Y+nX,其中,n为列表中实例个数,第i个数据位置内存地址为:P

dat文件创建模块,被配置为:创建dat文件,使得文件大小不小于M;

映射模块,被配置为:将文件M大小的内容,映射到内存中,得到映射地址为0X123456;

数据插入模块,被配置为:过遍历使用位图表,计算出第1个空闲位置的地址,将数据拷贝到此位置上,更新位图和已用计数。

本发明第五方面提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如第一方面或第三方面所述的内存持久化方法中的步骤。

本发明第六方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如第一方面或第三方面所述的内存持久化方法中的步骤。

与现有技术相比,本发明的有益效果是:

1、本发明采用文件映射方式来处理内存数据持久化的方法,将文件的一部分内容,映射到内存中,程序对此部分映射内存所做的修改,可自动保存到文件中;方便读写的同时,又不需引入第三方工具。

2、以往开发人员对配置类数据或部分运行数据修改后,需要手动将修改后的数据进行持久化保存,以防程序重启导致数据的丢失;本发明利用文件映射方法处理此类数据时,开发人员对映射部分内存的修改,即为对相应文件的修改,使开发人员不必考虑修改后数据的持久化问题,而专注于功能方面的开发,提高了开发效率。

附图说明

构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。

图1为本发明实施例1提供的映射固定大小数据示意图。

图2为本发明实施例2提供的映射不固定大小数据示意图。

图3为本发明实施例2提供的插入一个数据示意图。

具体实施方式

下面结合附图与实施例对本发明作进一步说明。

应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

实施例1:

如图1所示,本发明实施例1提供了一种内存持久化方法,包括以下过程:

定义一个结构体:人,计算出结构体的大小X;

Linux系统下,文件映射的API为mmap;window系统下,该API为CreateFileMapping。

创建文件test.dat,确保文件大小不少于X,调用系统API将文件test.dat中X大小的部分,映射到内存中,得到映射地址为0x123456。程序可以对从0x123456开始X大小的内存进行读/写,其中对该内存的修改,自动保存到文件test.dat中。

实施例2:

本发明实施例2提供了一种内存持久化系统,包括:

数据获取模块,被配置为:获取结构体的大小X;

dat文件创建模块,被配置为:创建dat文件,确保文件大小不少于X;

映射模块,被配置为:调用系统API将dat文件中X大小的部分,映射到内存中,得到映射地址;

修改存储模块,被配置为:对从映射地址开始的X大小的内存进行读或写,对该内存的修改自动保存到dat文件中。

实施例3:

如图2和图3所示,本发明实施例1提供了一种内存持久化方法,对于数据大小不固定的数据,如列表数据,以图2为例进行说明,包括以下过程:

如控制数据大小为Y,列表中每个人员实例的大小为X,则需映射的大小为:M=Y+5X;第i个数据位置内存地址为:P

创建文件test.dat,确保文件大小不少于M,将文件M大小的内容,映射到内存中,得到映射地址为0X123456;

插入数据:通过遍历使用位图表得知,第1个位置未被使用,计算出第1个位置的地址P1。将数据拷贝到第1个位置上,更新位图和已用计数,得到图3;

删除数据:如经过计算得知,第1个数据为即将删除的数据,由图3到图2,即可得到删除第1个数据的情况;将第1个数据内存地址P1开始的Y大小的内存空间清0,更新位图和已用计数;

更新数据:如更新第2个位置上人员对象的年龄为31岁,首先获取第2个位置的内存地址P

查询数据:根据使用位图,确定存在有效数据的位置,对于每个存在有效数据的位置,检查其姓名、年龄,确定是否是待查找的数据。

实施例4:

本发明实施例4提供了一种内存持久化系统,应用于列表数据,包括:

数据获取模块,被配置为:控制数据大小为Y,列表中每个实例的大小为X,则需映射的大小为:M=Y+nX,其中,n为列表中实例个数,第i个数据位置内存地址为:P

dat文件创建模块,被配置为:创建dat文件,使得文件大小不小于M;

映射模块,被配置为:将文件M大小的内容,映射到内存中,得到映射地址为0X123456;

数据插入模块,被配置为:过遍历使用位图表,计算出第1个空闲位置的地址,将数据拷贝到此位置上,更新位图和已用计数。

还包括:

数据删除模块,被配置为:如经过计算得知,第1个数据为即将删除的数据,由图3到图2,即可得到删除第1个数据的情况。将第1个数据内存地址P1开始的Y大小的内存空间清0,更新位图和已用计数。

数据更新模块,被配置为:如更新第2个位置上人员对象的年龄为31岁,首先获取第2个位置的内存地址P

数据查询模块,被配置为:根据使用位图,确定存在有效数据的位置,对于每个存在有效数据的位置,检查其姓名、年龄,确定是否是待查找的数据。

实施例5:

本发明实施例5提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如实施例1或实施例3所述的内存持久化方法中的步骤。

实施例6:

本发明实施例6提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如实施例1或实施例3所述的内存持久化方法中的步骤。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 异步写回持久化内存的事务持久化方法及系统
  • 持久化内存文件系统数据组织方法、系统及存储介质
技术分类

06120114725935