本申请涉及计算机领域,特别是涉及增量数据获取的方法、系统、电子装置和存储介质。
背景技术:
在游戏服务器开发过程中,经常需要收集被修改的游戏数据的增量数据,比如,在存储游戏玩家数据,或是游戏战斗服在客户端中向玩家同步显示可见数据等情况下,都需要收集修改的游戏数据的增量数据,以刷新服务器内存储的游戏数据,获取最新的游戏信息。
在相关技术中,增量数据通过程序员手动收集或者手动编码实现,工作量比较大,且收集粒度粗糙,难以在其它项目中复用。
目前针对相关技术中,通过手动收集增量数据,导致的工作量大、效率低和开发复用率低的问题,尚未提出有效的解决方案。
技术实现要素:
本申请实施例提供了增量数据获取的方法、系统、电子装置和存储介质,至少解决相关技术中通过手动收集增量数据,导致的工作量大、效率低和开发复用率低的问题。
第一方面,本申请实施例提供了一种增量数据获取的方法,所述方法包括:
获取数据结构描述文件,其中,所述描述文件的成员变量包含基础类型和结构体类型;
通过所述描述文件生成可标脏数据结构,并在所述可标脏数据结构中嵌入一颗n叉树;
通过所述n叉树追踪获取所述可标脏数据结构中的增量数据。
在其中一些实施例中,所述结构体类型对应根节点,所述结构体类型中的基础类型成员变量对应叶子节点,所述结构体类型中的结构体类型成员变量对应非叶子节点,所述通过所述n叉树标记追踪所述可标脏数据结构中的增量数据包括:
所述叶子节点标记所述增量数据,并通知所述非叶子节点;
所述非叶子节点标记所述增量数据,并通知所述根节点;
所述根节点标记所述增量数据。
在其中一些实施例中,在所述叶子节点标记所述增量数据之前,所述方法包括:
调用set函数修改所述叶子节点中的成员函数,得到所述增量数据。
在其中一些实施例中,所述获取数据结构描述文件包括:
获取网络游戏的数据结构描述文件。
第二方面,本申请实施例提供了一种增量数据获取的系统,所述系统包括:
获取模块,用于获取数据结构描述文件,其中,所述描述文件的成员变量包含基础类型和结构体类型;
生成模块,用于通过所述描述文件生成可标脏数据结构,并在所述可标脏数据结构中嵌入一颗n叉树;
追踪模块,用于通过所述n叉树追踪获取所述可标脏数据结构中的增量数据。
在其中一些实施例中,所述结构体类型对应根节点,所述结构体类型中的基础类型成员变量对应叶子节点,所述结构体类型中的结构体类型成员变量对应非叶子节点,
所述追踪模块还用于所述叶子节点标记所述增量数据,并通知所述非叶子节点;
所述非叶子节点标记所述增量数据,并通知所述根节点;
所述根节点标记所述增量数据。
在其中一些实施例中,所述系统还包括调用模块,在所述叶子节点标记所述增量数据之前,
所述调用模块,用于调用set函数修改所述叶子节点中的成员函数,得到所述增量数据。
在其中一些实施例中,所述获取模块还用于获取网络游戏的数据结构描述文件。
第三方面,本申请实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项所述的增量数据获取的方法。
第四方面,本申请实施例提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项所述的增量数据获取的方法。
相比于相关技术,本申请实施例提供的一种增量数据获取的方法,获取数据结构描述文件,其中,该描述文件的成员变量包含基础类型和结构体类型;接着通过描述文件生成可标脏数据结构,并在可标脏数据结构中嵌入一颗n叉树;最后,通过n叉树追踪获取可标脏数据结构中的增量数据,解决了相关技术中通过手动收集增量数据,导致的工作量大、效率低和开发复用率低的问题,提高了开发效率和复用率,降低了开发成本。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种增量数据获取的方法的应用环境示意图;
图2是根据本申请实施例的增量数据获取方法的流程图;
图3是根据本申请实施例的可标脏数据结构中嵌入的n叉树的示意图;
图4是根据本申请实施例的增量数据获取系统的结构框图;
图5是根据本申请实施例的增量数据获取系统的另一种结构框图;
图6是根据本申请实施例的电子设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本申请提供的增量数据获取的方法,可以应用于如图1所示的应用环境中,图1是根据本申请实施例的一种增量数据获取的方法的应用环境示意图,如图1所示,其中,该应用环境的系统包括服务器10和智能终端设备11,其中,服务器10获取数据结构描述文件,其中,该描述文件的成员变量包含基础类型和结构体类型;接着通过描述文件生成可标脏数据结构,并在可标脏数据结构中嵌入一颗n叉树;最后,通过n叉树追踪获取可标脏数据结构中的增量数据,以更新服务器10内存储的游戏数据,获取最新的游戏信息,应用于安装在智能终端设备11上的网络游戏中,解决了相关技术中通过手动收集增量数据,导致的工作量大、效率低和开发复用率低的问题,提高了开发效率和复用率,降低了开发成本。
本实施例提供了一种增量数据获取的方法,图2是根据本申请实施例的增量数据获取方法的流程图,如图2所示,该流程包括如下步骤:
步骤s201,获取数据结构描述文件,其中,描述文件的成员变量包含基础类型和结构体类型,可选的,本实施例中获取包含有基础类型变量和结构体类型变量的数据结构描述文件,例如,基础类型变量有整数、浮点数和字符串,结构体类型变量有数组、字典和由基本类型组成的复合结构体类型,其中,具体的数据结构描述文件生成代码示例如下所示:
步骤s202,通过描述文件生成可标脏数据结构,并在可标脏数据结构中嵌入一颗n叉树,其中,脏是指被修改过,标脏数据是指标记这个数据被修改过。可选的,本实施例中通过描述文件生成可标脏数据结构,并在该数据结构中嵌入一颗n叉树,用于标记追踪该数据结构中被修改的成员变量,其中,具体生成的的可标脏数据结构和内嵌的n叉树的代码示例如下所示:
步骤s203,通过n叉树追踪获取可标脏数据结构中的增量数据,可选的,本实施例中通过n叉树的遍历追踪获取可标脏数据结构中的增量数据的具体测试代码示例如下所示:
本实施例通过在生成的数据结构中嵌入一颗n叉树标记追踪增量数据,达到可以自动标记和收集增量数据对象的目的,相比于相关技术中通过手动收集增量数据,导致的工作量大、效率低和开发复用率低的问题,本实施例减少了手动编码收集脏数据的工作量,提高了开发复用率,能应用于多种语言、项目、场景下。
通过上述步骤s201至步骤s203,相对于现有技术中,增量数据通过程序员手动收集或者手动编码实现,工作量比较大,且收集粒度粗糙,难以在其它项目中复用的问题。本实施例通过在生成的数据结构中嵌入一颗n叉树的方法,获取数据结构描述文件,其中,该描述文件的成员变量包含基础类型和结构体类型;接着通过描述文件生成可标脏数据结构,并在可标脏数据结构中嵌入一颗n叉树;最后,通过n叉树追踪获取可标脏数据结构中的增量数据,以更新服务器10内存储的游戏数据,获取最新的游戏信息,应用于安装在智能终端设备11上的网络游戏中,解决了相关技术中通过手动收集增量数据,导致的工作量大、效率低和开发复用率低的问题,提高了开发效率和复用率,降低了开发成本。
在其中一些实施例中,结构体类型对应根节点,结构体类型中的基础类型成员变量对应叶子节点,结构体类型中的结构体类型成员变量对应非叶子节点,通过n叉树标记追踪可标脏数据结构中的增量数据包括:叶子节点标记增量数据,并通知所述非叶子节点;接着非叶子节点标记该增量数据,并通知根节点;最后根节点标记该增量数据,这个标记过程一直传递到根节点为止,最终获取增量数据。图3是根据本申请实施例的可标脏数据结构中嵌入的n叉树的结构示意图,如图3所示,可选的,由步骤s202中的具体生成的的可标脏数据结构和内嵌的n叉树的代码示例可知,playerdata是根节点,也是非叶子节点playerbase和非叶子节点playerpack的父节点;playerbase是叶子节点level和name的父节点;playerpack是叶子节点item的父节点,此外,本实施例中叶子节点的特征是不可再分的。本实施例通过内嵌n叉树将数据结构中的成员函数进行分类,形成层级关系,再对其中的增量数据进行自动标记和追踪,有效提高了开发效率。
在其中一些实施例中,在叶子节点标记增量数据之前,调用set函数修改叶子节点中的成员函数,得到增量数据,其中,set函数在java语言中主要用于设置操作private型数据中的属性值。可选的,本实施例中叶子节点的成员函数只能通过set函数进行修改,其中,只有叶子节点中有以set开头的成员函数。如果set函数被调用,说明叶子节点中有成员函数的值被修改了,产生了增量数据,那么叶子节点就会标记这个增量数据,并通知它的父节点,即非叶子节点。
在其中一些实施例中,获取数据结构描述文件包括:获取网络游戏的数据结构描述文件。可选的,本实施例的数据主要从游戏服务器中获取,应用于存储游戏玩家数据,或是游戏战斗服在客户端中向玩家同步显示可见数据等情况下,以刷新游戏服务器内存储的游戏数据,获取最新的游戏和玩家信息资源。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种增量数据获取的系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图4是根据本申请实施例的增量数据获取系统的结构框图,如图4所示,该系统包括获取模块41、生成模块42和追踪模块43:
获取模块41,用于获取数据结构描述文件,其中,描述文件的成员变量包含基础类型和结构体类型;生成模块42,用于通过描述文件生成可标脏数据结构,并在可标脏数据结构中嵌入一颗n叉树;追踪模块43,用于通过n叉树追踪获取可标脏数据结构中的增量数据。
通过上述系统,获取模块41获取包含有基础类型变量和结构体类型变量的数据结构描述文件,例如,基础类型变量有整数、浮点数和字符串,结构体类型变量有数组、字典和由基本类型组成的复合结构体类型;生成模块42通过描述文件生成可标脏数据结构,并在该数据结构中嵌入一颗n叉树,用于标记追踪该数据结构中被修改的成员变量;追踪模块43通过在生成的数据结构中嵌入一颗n叉树标记追踪增量数据,达到可以自动标记和收集增量数据对象的目的,减少了手动编码收集脏数据的工作量,提高了开发复用率,能应用于多种语言、项目、场景下。整个系统解决了相关技术中通过手动收集增量数据,导致的工作量大、效率低和开发复用率低的问题,提高了开发效率和复用率,降低了开发成本。
在其中一些实施例中,结构体类型对应根节点,结构体类型中的基础类型成员变量对应叶子节点,结构体类型中的结构体类型成员变量对应非叶子节点,追踪模块43还用于叶子节点标记增量数据,并通知所述非叶子节点;接着非叶子节点标记该增量数据,并通知根节点;最后根节点标记该增量数据,这个标记过程一直传递到根节点为止,最终获取增量数据。可选的,由步骤s202中的具体生成的的可标脏数据结构和内嵌的n叉树的代码示例可知,playerdata是根节点,也是非叶子节点playerbase和非叶子节点playerpack的父节点;playerbase是叶子节点level和name的父节点;playerpack是叶子节点item的父节点,此外,本实施例中叶子节点的特征是不可再分的。本实施例通过内嵌n叉树将数据结构中的成员函数进行分类,形成层级关系,再对其中的增量数据进行自动标记和追踪,有效提高了开发效率。
在其中一些实施例中,获取模块41还用于获取网络游戏的数据结构描述文件。可选的,本实施例的数据主要从游戏服务器中获取,应用于存储游戏玩家数据,或是游戏战斗服在客户端中向玩家同步显示可见数据等情况下,以刷新游戏服务器内存储的游戏数据,获取最新的游戏和玩家信息资源。
在其中一些实施例中,系统还包括调用模块,图5是根据本申请实施例的增量数据获取系统的另一种结构框图,如图5所示,该系统包括获取模块41、生成模块42、调用模块51和追踪模块43,调用模块51,用于在叶子节点标记增量数据之前,调用set函数修改叶子节点中的成员函数,得到增量数据,其中,set函数在java语言中主要用于设置操作private型数据中的属性值。可选的,本实施例中叶子节点的成员函数只能通过set函数进行修改,其中,只有叶子节点中有以set开头的成员函数。如果set函数被调用,说明叶子节点中有成员函数的值被修改了,产生了增量数据,那么叶子节点就会标记这个增量数据,并通知它的父节点,即非叶子节点。
下面结合应用场景对本发明进行详细的说明。
本发明的目的是提供一种增量数据获取的方法和系统,本实施例中的增量数据获取的方法的技术方案的流程步骤包括:
s1,获取数据结构描述文件,描述文件中包含基本类型和结构体类型,其中基本类型有整数、浮点数和字符串,结构体类型有由基本类型组成的复合结构体类型、数组和字典;
s2,通过描述文件生成具体语言的可标脏数据结构,比如java、c ,生成的代码中除了描述文件描述的成员变量外,嵌入了一颗n叉树,用于标记该数据结构中修改的成员变量;
s3,n叉树中结构体类型对应根节点,结构体类型中的基本类型成员变量对应叶子节点,结构体类型中的结构体类型成员变量对应非叶子节点,其中,叶子节点的成员函数的修改只能通过set函数进行。调用set函数修改叶子节点的成员函数,得到增量数据,同时该叶子节点会通知它的父节点,即非叶子节点,父节点会标记这个增量数据并通知向它的父节点,即根节点,这个标记追踪过程会一直传递到根节点为止;
s4,通过n叉树的遍历来追踪获取叶子节点中的增量数据。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
另外,结合上述实施例中的增量数据获取的方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种增量数据获取的方法。
在一个实施例中,图6是根据本申请实施例的电子设备的内部结构示意图,如图6所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图6所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的数据库用于存储数据。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种增量数据获取的方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
1.一种增量数据获取的方法,其特征在于,所述方法包括:
获取数据结构描述文件,其中,所述描述文件的成员变量包含基础类型和结构体类型;
通过所述描述文件生成可标脏数据结构,并在所述可标脏数据结构中嵌入一颗n叉树;
通过所述n叉树追踪获取所述可标脏数据结构中的增量数据。
2.根据权利要求1所述的方法,其特征在于,所述结构体类型对应根节点,所述结构体类型中的基础类型成员变量对应叶子节点,所述结构体类型中的结构体类型成员变量对应非叶子节点,所述通过所述n叉树标记追踪所述可标脏数据结构中的增量数据包括:
所述叶子节点标记所述增量数据,并通知所述非叶子节点;
所述非叶子节点标记所述增量数据,并通知所述根节点;
所述根节点标记所述增量数据。
3.根据权利要求2所述的方法,其特征在于,在所述叶子节点标记所述增量数据之前,所述方法包括:
调用set函数修改所述叶子节点中的成员函数,得到所述增量数据。
4.根据权利要求1所述的方法,其特征在于,所述获取数据结构描述文件包括:
获取网络游戏的数据结构描述文件。
5.一种增量数据获取的系统,其特征在于,所述系统包括:
获取模块,用于获取数据结构描述文件,其中,所述描述文件的成员变量包含基础类型和结构体类型;
生成模块,用于通过所述描述文件生成可标脏数据结构,并在所述可标脏数据结构中嵌入一颗n叉树;
追踪模块,用于通过所述n叉树追踪获取所述可标脏数据结构中的增量数据。
6.根据权利要求5所述的系统,其特征在于,所述结构体类型对应根节点,所述结构体类型中的基础类型成员变量对应叶子节点,所述结构体类型中的结构体类型成员变量对应非叶子节点,
所述追踪模块还用于所述叶子节点标记所述增量数据,并通知所述非叶子节点;
所述非叶子节点标记所述增量数据,并通知所述根节点;
所述根节点标记所述增量数据。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括调用模块,在所述叶子节点标记所述增量数据之前,
所述调用模块,用于调用set函数修改所述叶子节点中的成员函数,得到所述增量数据。
8.根据权利要求5所述的系统,其特征在于,
所述获取模块还用于获取网络游戏的数据结构描述文件。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至4中任一项所述的增量数据获取的方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至4中任一项所述的增量数据获取的方法。
技术总结