数据更新方法、装置、设备及存储介质与流程

文档序号:25542891发布日期:2021-06-18 20:39阅读:42来源:国知局
本申请实施例涉及应用开发领域,特别涉及一种数据更新方法、装置、设备及存储介质。
背景技术
::在应用开发过程中,开发人员经常需要对应用中的某些数据进行更新。比如,在开发游戏应用过程中,开发人员需要对游戏应用中人物的攻击力、防御力、回复值等数据进行更新。相关技术中,对应用中的数据进行更新后,开发人员需要重新启动应用,并手动操作应用运行至涉及数据更新的应用场景,从而根据应用运行情况验证数据更新是否合理。比如,当对游戏应用中人物的攻击力进行更新后,开发人员需要重新启动游戏应用,并手动开启一场对局,从而控制人物在对局中进行攻击,进而根据攻击效果验证攻击力的更新是否合理。然而,采用上述方式进行数据更新时,每次更新后都需要重启应用,当数据需要进行多次更新时,频繁重启应用将耗费大量时间,导致应用开发的效率较低。技术实现要素:本申请实施例提供了一种数据更新方法、装置、设备及存储介质,可以解决相关技术中在应用开发阶段对应用进行数据更新时,需要频繁重启应用,导致应用开发的效率较低的问题。所述技术方案如下:一方面,本申请实施例提供了一种数据更新方法,所述方法应用于运行有目标应用的计算机设备,所述方法包括:所述目标应用运行过程中,监听对数据档文件的更新操作,所述数据档文件存储有所述目标应用的应用数据;当监听到对所述数据档文件中第一数据档文件的所述更新操作时,获取更新后的所述第一数据档文件;对更新后的所述第一数据档文件进行数据结构转换,生成目标数据档文件,所述目标数据档文件的数据结构为所述目标应用的可用数据结构;通过所述目标应用加载所述目标数据档文件。另一方面,本申请实施例提供了一种数据更新装置,所述装置应用于运行有目标应用的计算机设备,所述装置包括:监听模块,用于在所述目标应用运行过程中,监听对数据档文件的更新操作,所述数据档文件存储有所述目标应用的应用数据;第一获取模块,用于当监听到对所述数据档文件中第一数据档文件的所述更新操作时,获取更新后的所述第一数据档文件;生成模块,用于对更新后的所述第一数据档文件进行数据结构转换,生成目标数据档文件,所述目标数据档文件的数据结构为所述目标应用的可用数据结构;第一加载模块,用于通过所述目标应用加载所述目标数据档文件。另一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述方面所述的数据更新方法。另一方面,提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述方面所述的数据更新方法。另一方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如上述方面所述的数据更新方法。本申请实施例提供的技术方案带来的有益效果至少包括:目标应用运行过程中,通过监听对目标应用对应数据档文件的更新操作,并在监听到对数据档文件的更新操作时,获取更新后的数据档文件,从而对更新后的第一数据档文件进行数据结构转换,生成目标数据档文件,由于目标数据档文件的数据结构是目标应用的可用数据结构,因此目标应用可以直接加载该目标数据档文件,实现应用运行过程中的数据更新;相较于相关技术中每次进行数据更新后都需要重启应用,本申请实施例中通过在目标应用中增加更新操作监听以及数据结构转换机制,使得目标应用能够在运行过程中进行数据热更新,无需进行应用重启,缩短了数据更新后进行更新效果验证的时长,进而提高了应用开发的效率。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1示出了本申请一个示例性实施例提供的实施环境的示意图;图2示出了本申请一个示例性实施例提供的数据更新方法的流程图;图3是一个示例性实施例提供的数据更新方法实施过程的界面示意图;图4示出了本申请另一个示例性实施例提供的数据更新方法的流程图;图5示出了本申请另一个示例性实施例提供的数据更新方法的流程图;图6是一个示例性实施例提供的数据更新方法的原理示意图;图7是一个示例性实施例示出的数据更新方法的实施示意图;图8是一个示例性实施例示出的c#侧启动过程的流程图;图9是一个示例性实施例示出的c++侧启动过程的流程图;图10是本申请一个示例性实施例提供的数据更新装置的结构框图;图11示出了本申请一个示例性实施例提供的计算机设备的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。请参考图1,其示出了本申请一个示例性实施例提供的实施环境的示意图。该实施环境中包括至少一台终端110和服务器120,其中,各台终端110与服务器120之间通过通信网络进行数据通信,可选地,通信网络可以是有线网络也可以是无线网络,且该通信网络可以是局域网、城域网以及广域网中的至少一种。终端110是用于开发应用的电子设备,该电子设备可以是台式计算机或个人便携式计算机等设备。终端110中安装有待开发的目标应用以及应用开发工具,可选的,该应用开发工具可以包括数据编辑工具,该数据编辑工具用于对目标应用中的应用数据进行编辑。此外,待开发的目标应用可以是游戏应用、即时通信应用、社交应用、视频应用、购物应用等等,本申请实施例并不对目标应用的具体类型进行限定。由于存在大量应用开发者共同参与应用开发,因此为了保证应用开发过程中,各个应用开发者所使用终端110中目标应用的版本一致性,在一种可能的实施方式中,各台终端110中还安装有版本控制(subversion,svn)客户端,从而借助svn客户端实现各台终端110中目标应用的版本一致性。服务器120是一台服务器、由若干台服务器构成的服务器集群或云计算中心。在一种可能的实施方式中,服务器120为svn服务器,其中运行有svn系统,用于控制各个终端110中目标应用的版本一致性。可选的,snv系统的管理模式,包括锁-修改-解锁(lock-modify-unlock)和拷贝-修改-合并(copy-modify-merge)。在一种可能的应用场景下,如图1所示,各台终端110是数据策划人员(负责对应用中的应用数据进行调整)使用的终端,其中安装有待开发的目标应用111、数据编辑工具112以及svn客户端113,且服务器120中运行有svn系统121。当需要进行数据更新时,数据策划人员可在目标应用111的运行过程中,使用数据编辑工具112对数据档文件中的应用数据进行更新,相应的,目标应用111即根据更新后的数据档文件进行数据热更新,并使用更新后的应用数据。更新后的应用数据通过验证后,数据策划人员可以使用svn客户端113,将更新后的数据档文件上传至服务器120,由服务器120中的svn系统121对各台终端110上传的数据档文件进行处理,并将处理后的数据档文件同步至各台终端110。为了方便表述,下述各个实施例以数据更新方法应用于图1所示的计算机设备(即终端110)为例进行说明。相关技术中,开发人员使用应用开发工具对待开发应用中的应用数据进行更新后,为了对更新后的应用数据进行验证,开发人员需要重启待开发应用,并手动操作待开发应用运行至涉及数据更新的应用场景。然而,每次重启应用和操作应用都需要花费较长时间,而开发人员往往需要对数据进行反复调整,导致数据更新过程消耗大量时间,影响应用的整体开发效率。而本申请实施例中,通过在待开发的目标应用中增加“更新操作监听”以及“数据结构转换”机制,在目标应用运行过程中,监听开发人员对数据档文件的更新操作,并在监听到更新操作时,对更新后的数据档文件进行数据结构转换,得到符合目标应用可用数据结构的目标数据档文件,进而通过运行中的目标应用加载该目标数据档文件。整个数据更新过程中,目标应用在无需重启的情况下实现了数据热更新,方便开发人员在目标应用运行过程中实时进行应用数据更新,并能够实时对数据更新结果进行验证,缩短了数据更新过程的耗时,提高了应用的整体开发效率。请参考图2,其示出了本申请一个示例性实施例提供的数据更新方法的流程图。本实施例以该方法应用于图1所示计算机设备(即终端110)为例进行说明,该方法包括如下步骤。步骤201,目标应用运行过程中,监听对数据档文件的更新操作,数据档文件存储有目标应用的应用数据。本申请实施例中的数据更新方法能够实现数据热更新,即在不中断应用运行的情况下,实现对应用数据的更新。因此,为了使目标应用能够发现开发人员对数据档文件的更新操作,从而在运行过程中重新加载更新后的数据档文件,本申请实施例中目标应用设置有监听机制,通过该监听机制,目标应用能够监听到对数据档文件的更新操作。在一种可能的实施方式中,计算机设备中安装有数据编辑工具,该数据编辑工具用于对目标应用的数据档文件进行更新操作。其中,该更新操作包括修改操作、删除操作和新增操作中的至少一种,修改操作用于对已有数据档文件中的数据进行修改,删除操作用于删除已有的数据档文件,新增操作用于新增数据档文件。可选的,目标应用对应多个数据档文件,且各个数据档文件用于存储不同类型的应用数据。在一个示意性的例子中,目标应用为游戏应用,游戏应用对应有英雄信息数据档文件,该英雄信息数据档文件用于存储游戏中各个应用对应的英雄信息(包括英雄名称、定位、英文名、绰号、生命值、防御值等等);游戏应用还对应有技能信息数据档文件,该技能信息数据档文件用于存储各个应用的技能信息(包括技能名称、技能伤害值、技能范围等等)。本申请实施例并不对的数据档文件中包含的具体应用数据类型进行限定。步骤202,当监听到对数据档文件中第一数据档文件的更新操作时,获取更新后的第一数据档文件。当监听到对任一数据档文件(比如第一数据档文件)的更新操作时,计算机设备(中的目标应用)即获取更新后的第一数据档文件,以便后续对第一数据档文件中的数据进行热更新。示意性的,如图3所示,计算机设备运行游戏应用(即目标应用)时,显示游戏应用界面31(英雄选择界面),该游戏应用界面31中显示有已选择英雄的英雄名称311“a英雄”;当开发人员需要对英雄名称进行修改时,可以开启数据编辑工具,相应的,计算机设备运行数据编辑工具,并显示数据编辑界面32。当用户选择开启包含英雄信息的数据档文件时,数据编辑界面32中以列表的形式显示英雄信息,开发人员可以在列表中选择需要修改的列表项,并输入新的英雄姓名(图3中,开发人员将英雄名称“a英雄”修改为“aa英雄”)。当开发人员点击保存控件321时,游戏应用即监听到数据文档的更新操作。步骤203,对更新后的第一数据档文件进行数据结构转换,生成目标数据档文件,目标数据档文件的数据结构为目标应用的可用数据结构。由于数据档文件采用的数据结构无法直接被目标应用加载应用,因此相关技术中,开发人员需要手动将更新后的数据档文件转换为二进制(bytes)文件,然后对二进制文件进行加载应用。然而,对数据档文件进行二进制转换需要花费大量时间,影响数据更新的效率。本申请实施例中,目标应用中增加了数据结构转换机制,获取到更新后的第一数据档文件后,目标应用即读取第一数据档文件中的数据,并生成符合目标应用可用数据结构的目标数据档文件。在一个示意性的例子中,当目标应用采用c++语言编写时,目标应用根据第一数据档文件中的数据生成c++可用的数据对象(即目标数据档文件)。可选的,对于未发生更新的数据档文件,目标应用可以采用上述方式对其进行数据结构转换,以便目标应用后续直接加载。示意性的,如图3所示,当开发人员点击保存控件321时,游戏应用即对更新后的数据档文件进行数据结构转换,生成目标数据档文件。步骤204,通过目标应用加载目标数据档文件。在一种可能的实施方式中,完成数据结构转换后,计算机设备通过目标应用加载生成的目标数据档文件,从而根据目标数据档文件中的应用数据,改变应用界面中的显示内容,方便开发人员对数据更新效果进行实时验证。示意性的,如图3所示,开发人员将数据档文件中英雄名称“a英雄”修改为“aa英雄”后,游戏应用即根据生成的目标数据档文件,在英雄选择界面31中显示更新后的英雄名称311“aa英雄”。结合上述图3,若采用相关技术中提供的数据更新方法,每次进行数据更新后都需要重启游戏应用,并手动操作游戏应用至英雄选择界面,才能完成对数据更新效果的验证;而采用上述实施例提供的数据更新方法,开发人员可以在游戏应用运行过程中,对英雄选择界面中的数据进行更新,并从英雄选择界面中实时查看数据更新效果,无需重启游戏应用,尤其是在需要对数据进行反复更新的场景下,能够显著降低数据更新的耗时,提高数据更新效率。综上所述,本申请实施例中,目标应用运行过程中,通过监听对目标应用对应数据档文件的更新操作,并在监听到对数据档文件的更新操作时,获取更新后的数据档文件,从而对更新后的第一数据档文件进行数据结构转换,生成目标数据档文件,由于目标数据档文件的数据结构是目标应用的可用数据结构,因此目标应用可以直接加载该目标数据档文件,实现应用运行过程中的数据更新;相较于相关技术中每次进行数据更新后都需要重启应用,本申请实施例中通过在目标应用中增加更新操作监听以及数据结构转换机制,使得目标应用能够在运行过程中进行数据热更新,无需进行应用重启,缩短了数据更新后进行更新效果验证的时长,进而提高了应用开发的效率。在一种可能的实施方式中,为了加快目标应用加载数据档文件的速率,每次对数据档文件进行数据格式转换后,计算机设备对转换得到的文件进行缓存,后续数据更新时,对于未更新的数据档文件,目标应用可以直接加载该数据档文件对应的缓存文件,而无需对未更新的数据档文件进行数据结构转换。下面采用示例性的实施例进行说明。请参考图4,其示出了本申请另一个示例性实施例提供的数据更新方法的流程图。本实施例以该方法应用于图1所示计算机设备(即终端110)为例进行说明,该方法包括如下步骤。步骤401,监听对数据档文件目录下数据档文件的编辑保存操作。在一种可能的实施方式中,目标应用对应的数据档文件均存储在指定数据档文件目录下,相应的,目标应用在运行过程中,监听对数据档文件目录下各个数据档文件的编辑保存操作。若监听到对数据档文件的编辑保存操作,表明数据档文件中的应用数据可能发生更新,从而执行步骤402;若未监听到对数据档文件的编辑保存操作,表明数据档文件中的应用数据未发生更新,并继续对数据档文件目录进行监听。步骤402,当监听到对第一数据档文件的编辑保存操作时,获取第一数据档文件的当前信息摘要(messagedigest,md)值,其中,不同内容的数据档文件具有不同的md值。在一种可能的应用场景下,开发人员对数据档文件中的数据进行更新后,再次将更新后的数据恢复为原始数据,即数据档文件中的数据并未发生变化,若在这种情况下进行保存,该数据档文件实际上并未发生更新。因此,为了准确识别编辑保存后的数据档文件是否发生数据更新,在一种可能的实施方式中,当监听到第一数据档文件的编辑保存操作时,目标应用首先获取第一数据档文件的md值。其中,该md值可以为md5值、md4值等等,本申请实施例并不对md值的具体类型进行限定。由于md值与数据档文件的内容相关,当数据档文件的内容发生变化时,该数据档文件的md5值也会发生变化,因此目标应用可以基于第一数据档文件的当前md值,确定编辑保存后的第一数据档文件是否发生内容更新。步骤403,若当前md值与日志文件中第一数据档文件对应的历史md值不匹配,则确定监听到对第一数据档文件的更新操作,日志文件用于存储数据档文件目录下各个数据档文件的历史更新信息。在一种可能的实施方式中,目标应用维护有日志文件,该日志文件中记录有各个数据档文件的历史更新信息。本实施例中,历史更新信息包含各个数据档文件对应的历史md值。相应的,在确定第一数据档文件是否更新时,目标应用获取第一数据档文件对应的历史md值(比如,根据第一数据档文件的文件名称进行查找),并检测当前md值与历史md值是否匹配。若两者匹配,则确定第一数据档文件的内容并未发生更新;若两者不匹配,则确定第一数据档文件的内容发生更新,即第一数据档文件接收到更新操作。需要说明的是,除了对已有数据档文件进行更新外,开发人员也可以删除已有数据档文件或者新增数据档文件,其中,当第一数据档文件为新增数据档文件时,目标应用无法从日志文件中查找到第一数据档文件对应的历史md值,可选的,若未查找到第一数据档文件对应的历史md值,目标应用确定第一数据档文件为新增数据档文件,并确定接收到更新操作。在一个示例性的例子中,目标应用根据第一数据档文件的文件名称“英雄信息表”从日志文件中查找到历史md5值为“0ca175b9c0f726a831d895e269332461”,由于当前md5值为“0de24818a00947e351c7651a24660331”,因此目标应用确定第一数据档文件发生更新。步骤404,当监听到对数据档文件中第一数据档文件的更新操作时,获取更新后的第一数据档文件。本步骤的实施方式可以参考上述步骤202,本实施例在此不再赘述。在一种可能的实施方式中,为了实现数据热更新,获取更新后的第一数据档文件后,计算机设备获取更新后的第一数据档文件的目标内存地址,并将目标应用中智能指针指向的原始内存地址(为更新前的第一数据档文件分配的内存地址)修改为该目标内存地址,使得后续目标应用能够根据智能指针指向的目标内存地址,读取到更新后的第一数据档文件中的应用数据,实现更新数据的热加载。步骤405,删除第一数据档文件对应的第一缓存文件,并清理日志文件中第一缓存文件对应的第一缓存文件信息。在一种可能的实施方式中,每次对数据档文件进行数据结构转换后(转化为目标应用的可用数据结构),目标应用都会将转换后得到的文件进行缓存,以便在数据档文件未更新的情况下直接加载缓存文件。相应的,各个数据档文件对应缓存文件的缓存文件信息即存储在日志(log)文件中。可选的,该缓存文件信息中包括缓存文件的存储路径。若第一数据档文件发生更新,第一数据档文件对应的第一缓存文件将失效,因此目标应用需要对第一缓存文件进行删除,从而释放失效缓存文件占用的存储空间。相应的,目标应用需要对日志文件中第一缓存文件对应的第一缓存文件信息进行清理。可选的,删除第一缓存文件并清理第一缓存文件信息后,目标应用对更新后的第一数据档文件进行预处理,并将第一数据档文件的关键信息记录到日志文件中,该关键信息可以包括更新后的第一数据档文件的md值。在一种可能的实施方式中,目标应用根据当前md值更新第一数据档文件对应的历史md值。步骤406,对更新后的第一数据档文件进行数据结构转换,生成目标数据档文件,目标数据档文件的数据结构为目标应用的可用数据结构。在一种可能的实施方式中,目标应用具有数据拼装功能,通过该功能,目标应用可以将第一数据档文件中的数据拼装为目标应用可用的数据对象(即可用数据结构)。可选的额,本步骤可以包括如下步骤:一、对更新后的第一数据档文件进行结构体拼装,生成第一目标数据档文件。可选的,目标应用对第一数据档文件中的数据进行结构体(struct)拼装,拼装得到的结构体即为目标应用可用的数据对象,最终得到包含结构体的第一目标数据档文件(cache文件)。在一种可能的实施方式中,生成的第一目标数据档文件的后缀名为.cache。二、根据结构体拼装过程中产生的字符串标识,生成第二目标数据档文件,第二目标数据档文件用于表示第一目标数据档文件中字符串标识与字符串之间的对应关系。在一种可能的实施方式中,第一目标数据档文件中通常包含整型(int)和字符串型(string)数据,且在结构体拼装过程中,第一数据档文件中的字符串经过处理,得到相应的字符串标识(stringid),并对字符串标识进行结构体拼装生成第一目标数据档文件。因此为了确定第一目标数据档文件中各个字符串标识对应的实际字符串,目标应用还需要根据结构体拼装过程中产生的字符串标识,生成第二目标数据档文件(stringid文件),以便后续基于第二目标数据档文件中字符串标识与字符串之间的对应关系(即stringid与string之间的对应关系),确定结构体中各个字符串标识对应的字符串。可选的,字符串标识通过对字符串进行哈希(hash)处理得到,或者,字符串标识通过自增处理得到(即每个新增字符串对应的字符串标识递增)。在一种可能的实施方式中,生成的第二目标数据档文件的后缀名为.stringid三、将第一目标数据档文件和第二目标数据档文件确定为目标数据档文件。进一步的,目标应用将生成的第一目标数据档文件和第二目标数据档文件确定为第一数据档文件对应的目标数据档文件。步骤407,将目标数据档文件确定为第一数据档文件对应的第一缓存文件,并进行缓存。为了提高后续加载应用数据的速率,目标应用将生成的目标数据档文件确定为第一缓存文件,并对第一缓存文件进行落地。可选的,落地的第一缓存文件存储至指定的缓存文件目录下。步骤408,更新日志文件中第一数据档文件对应的第一缓存文件信息。进一步的,为了使后续加载过程中能够准确加载缓存文件,目标应用获取第一缓存文件的第一缓存文件信息(比如包括缓存文件存储路径、缓存文件名称等信息),并将该第一缓存文件信息更新至日志文件中。步骤409,通过目标应用加载目标数据档文件。本步骤的实施方式可以参考上述步骤204,本实施例在此不再赘述。步骤410,根据日志文件中第二数据档文件对应的第二缓存文件信息,通过目标应用加载第二缓存文件,第二缓存文件是第二数据档文件对应的缓存文件,第二数据档文件是未更新的数据档文件。目标应用对应大量数据档文件,而在开发人员通常每次仅对其中少量数据档文件进行更新,对于未更新的数据档文件,目标应用在运行过程中仍旧需要对其进行加载。本申请实施例中,由于目标应用存储有数据档文件对应的缓存文件,因此对于未更新的数据档文件,目标应用可以直接加载该数据档文件对应的缓存文件,而无需对再次对数据档文件进行数据结构转换。可选的,目标应用根据日志文件中第二数据档文件(未更新)对应的第二缓存文件信息,从缓存文件目录下查找对应的第二缓存文件,并加载,其中,目标应用加载的第二缓存文件中包含cache文件(保存拼装得到的结构体)以及stringid文件(保存结构体拼装时生成的stringid)。在一种可能的实施方式中,根据第二缓存文件信息加载第二缓存文件时,目标应用还需要对加载到的第二缓存文件进行过期校验,并在第二缓存文件通过过期校验时,确定第二缓存文件有效。若第二缓存文件未通过过期校验,目标应用则对第二数据档文件进行数据结构转换。其中,过期校验包括校验结构体字节(即检测结构体每行的字节数是否目标字节数一致)。需要说明的是,上述步骤410与409之间并不存在严格的先后时序,即更新的数据档文件和未更新的数据档文件可以同时加载,本实施例对此不做限定。本实施例中,监听到对数据档文件的编辑保存操作后,进一步根据数据档文件的md值确定数据档文件的内容是否发生变化,避免对未发生内容变化的数据档文件进行数据结构转换造成的处理资源浪费。此外,本实施例中,通过维护日志文件,并基于日志文件中记录的缓存文件信息实现缓存文件加载,免去对未更新的数据档文件进行数据结构转换,有助于提高目标应用的数据加载速率。相关技术中,开发人员通常使用excel表格存储应用数据,即相关技术中的数据档文件为excel文件。开发人员在修改应用数据后,需要将excel文件转化为二进制文件才能使用。并且,为了保证不同计算机设备之间的数据统一性,当更新后的数据通过验证后,计算机设备需要将excel文件上传至svn系统,由svn系统对不同计算机设备上传的更新数据进行合并(可能存在多个开发人员对同一数据档文件的不同数据进行更新的情况),并最终下发至各个svn客户端。然而,svn系统会将excel文件识别为二进制文件,从而导致无法合并,此时需要人工进行对excel文件进行转表,耗费大量时间。而本申请实施例中,计算机设备中还运行有数据编辑工具,该数据编辑工具用于将excel表格转换为自定义的可扩展标记语言(extensiblemarkuplanguage,xml)格式文件(非二进制文件),相应的,计算机设备将自定义xml文件上传至svn系统,从而解决svn系统无法进行合并的问题。在一种可能的实施方式中,在图4的基础上,如图5所示,步骤401之前还可以包括步骤411和412,步骤404之后还可以包括步骤413和414。步骤411,将第一数据格式的第一数据档文件转换为第二数据格式,并在数据编辑工具的编辑界面中显示第二数据格式的第一数据档文件,第二数据格式与第一数据格式不同。在一种可能的实施方式中,目标应用的数据档文件均采用第一数据格式进行存储,其中,该第一数据格式可以为xml格式。为了方便开发人员进行数据编辑,在进行数据编辑时,计算机需要通过数据编辑工具将第一数据格式的数据档文件转换为第二数据格式,从而在编辑界面中显示第二数据格式的第一数据档文件。其中,该第二数据格式可以为excel格式。示意性的,如图3所示,数据编辑界面32中采用excel表格显示数据档文件中的应用数据。步骤412,当接收到对第一数据档文件中应用数据的编辑保存操作时,将更新后的第一数据档文件由第二数据格式转换为第一数据格式。当接收到对数据档文件中应用数据的编辑保存操作时,为了使更新后的数据档文件能够被svn系统合并,计算机设备需要通过数据编辑工具将更新后的第一数据档文件重新转换为第一数据格式。在一个示意性的例子中,采用第二数据格式(excel表格)的数据档文件中包含表一所示的数据。表一列名a列名b列名c数值a1数值b1数值c1数值a2数值b2数值c2将第二数据格式的数据档文件转换为第一数据格式(xml)后,生成数据档文件的内容如下:步骤413,是否接收到文件上传指令。在一种可能的实施方式中,计算机设备检测是否接收到文件上传指令,若接收到该指令,则确定需要将更新后的第一数据档文件上传至svn系统,并执行步骤414;若未接收到该指令,则确定无需将更新后的第一数据档文件上传至svn系统并执行步骤405。步骤414,将更新后的第一数据格式的第一数据档文件上传至svn系统,其中,svn系统不支持对第二数据格式的文件进行合并操作,且svn系统支持对第一数据格式的文件进行合并操作。可选的,获取到更新后第一数据档文件(采用第一数据格式)后,计算机设备通过svn客户端将第一数据档文件上传至svn系统,由于svn系统能够对第一数据格式的文件进行合并操作,因此当存在多个开发人员对同一数据档文件进行修改时,svn系统可以直接对不同的数据更新内容进行合并,无需对数据档文件进行转表,从而提高了svn系统的合并效率。本实施例中,计算机设备通过数据编辑工具对数据档文件进行数据格式转换,从而生成能够被svn系统识别的xml文件,避免直接将excel文件上传至svn系统,导致svn系统无法进行合并操作的问题。在一种可能的实施方式中,目标应用中包括c#侧(即通过c#实现的逻辑)和c++侧(即通过c++实现的逻辑),其中,c#侧用于实现数据档文件监听以及日志文件维护,而c++侧用于实现应用内部逻辑、数据结构转换以及数据档文件加载。示意性的,如图6所示,目标应用61中的c#逻辑用于监听数据编辑工具62对数据档文件夹63下数据档文件的更新操作。当监听到数据编辑工具62对数据档文件进行更新时,c#逻辑即通知c++逻辑数据档文件发生更新。c++逻辑接收到通知后,即对更新后的数据档文件进行数据格式转换以及数据加载,实现应用内数据的热更新。下面结合c#和c++各自的逻辑,对数据更新过程进行说明。在一个示意性的例子中,该数据更新过程如图7所示。步骤701,数据编辑工具获取xml格式的数据档文件。步骤702,数据编辑工具对数据档文件进行编辑并保存。步骤703,c#侧监听到对数据档文件的编辑保存操作。步骤704,c#侧根据md5值检测是否数据档文件是否需要加载(即检测数据档文件的内容是否更新)。若需要加载,则执行步骤705,若不需要加载,则结束更新流程。步骤705,c#侧检测是否存在数据档文件对应的历史缓存信息和缓存文件。若存在,则执行步骤706,若不存在,则执行步骤707。步骤706,c#侧清理历史缓存信息和缓存文件。可选的,c#的对日志文件中的缓存文件信息(更新的数据档文件对应的缓存文件)进行清理,并根据缓存文件信息删除相应的缓存文件。步骤707,c#侧预处理数据档文件并记录关键信息。可选的,c#侧将关键信息写入日志文件。步骤708,c#侧通知c++侧加载数据档文件(即通知c++侧存在数据档文件更新)。步骤709,c++侧拼装结构体并生成.cache文件。步骤710,c++侧根据拼装产生的stringid生成.stringid文件。步骤711,c++侧通知c#侧保存更新记录。步骤712,c#侧将更新记录保存至日志文件。可选的,c#侧将.cache文件以及.stringid文件的存储路径写入日志文件。步骤713,c++侧清空数据表(databintable),并重新加载数据。在一种可能的实施方式中,如图8所示,c#侧在启动阶段时包括如下步骤:步骤801,c#侧确定目标应用的用表信息。可选的,在c#启动阶段,c#侧过滤非目标应用使用的用表信息(即目标应用运行过程中无需使用的数据档文件),从而确定目标应用的用表信息。步骤802,c#侧计算并记录各个数据档文件的md5值。步骤803,c#侧加载日志文件。可选的,该日志文件中包含c#最近一次关闭时,各个数据档文件对应的相关信息。比如各个数据档文件的文件标识、md5值、缓存文件信息(包括.cache文件和stringid文件的相关信息)。步骤804,c#侧记录日志文件中不存在的数据档文件。可选的,c#侧通过比较日志文件中记载的数据档文件以及获取到的各个数据档文件(步骤802中获取),确定出日志文件中不存在的数据档文件(在目标应用未启动时,开发人员手动添加的数据档文件),并将该数据档文件记录至日志文件。步骤805,c#侧清理日志文件中过期的.cache文件和.stringid文件。可选的,c#侧通过比较日志文件中记载的数据档文件以及获取到的各个数据档文件(步骤802中获取),确定出日志文件中存在,但是实际已删除的数据档文件(在目标应用未启动时,开发人员手动删除的数据档文件),并清理该数据档文件对应的.cache文件和.stringid文件。在一种可能的实施方式中,如图9所示,c++侧在启动阶段时包括如下步骤:步骤901,加载数据表。可选的,c++侧通过databintable.load记载数据表。步骤902,宏定义是否允许加载xml格式的数据档文件。若允许加载,则执行步骤903;若不允许加载,则结束更新流程。步骤903,向c#发送数据档文件信息的查询请求。可选的,c++侧通过databintable.filename获取数据档文件名,以数据档文件名为键(key)向c#侧发送查询请求,查询该数据档文件对应的数据档文件信息。步骤904,是否存在数据档文件信息。若存在,则执行步骤906,若不存在,则执行步骤905。步骤905,加载二进制文件。若不存在数据档文件信息,则采用常规的加载二进制文件的方式进行数据加载。步骤906,接收c#侧的通知。可选的,c#侧向c++侧发送更新通知,指示c++侧进行数据加载。步骤907,向c#侧请求缓存文件信息。可选的,c++侧向c#侧发送缓存文件信息获取请求,请求c#侧反馈数据档文件对对能够缓存文件的缓存文件信息。步骤908,检测是否存在缓存文件。可选的,c++侧根据获取到的缓存文件信息,检测缓存文件是否存在,若存在,则执行步骤909,若不存在,则执行步骤911。步骤909,加载.cache文件。可选的,在加载.cache文件的过程中,c++侧对其进行过期校验。步骤910,加载.stringid文件。可选的,在加载.stringid文件的过程中,c++侧对其进行过期校验。步骤911,加载xml格式的数据档文件。步骤912,拼装结构体并生成.cache文件。若不存在缓存文件,c++侧即通过上述实施例示出的数据结构转换方式,生成.cache文件。步骤913,根据拼装产生的stringid生成.stringid文件。可选的,c++侧根据结构体拼装过程中产生的stringid,生成指示stringid与string对应关系的.stringid文件。步骤914,通知c#侧更新记录至日志文件。可选的,c++侧生成缓存文件后,通知c#侧将缓存文件的缓存文件信息更新至日志文件。步骤915,侧清空数据表,并重新加载数据。图10是本申请一个示例性实施例提供的数据更新装置的结构框图,该装置可以设置于上述实施例所述的计算机设备,如图10所示,该装置包括:监听模块1001,用于在所述目标应用运行过程中,监听对数据档文件的更新操作,所述数据档文件存储有所述目标应用的应用数据;第一获取模块1002,用于当监听到对所述数据档文件中第一数据档文件的所述更新操作时,获取更新后的所述第一数据档文件;生成模块1003,用于对更新后的所述第一数据档文件进行数据结构转换,生成目标数据档文件,所述目标数据档文件的数据结构为所述目标应用的可用数据结构;第一加载模块1004,用于通过所述目标应用加载所述目标数据档文件。可选的,所述监听模块1001,包括:监听单元,用于监听对数据档文件目录下所述数据档文件的编辑保存操作;第一获取单元,用于当监听到对所述第一数据档文件的所述编辑保存操作时,获取所述第一数据档文件的当前信息摘要md值,其中,不同内容的数据档文件具有不同的md值;确定单元,用于若所述当前md值与日志文件中所述第一数据档文件对应的历史md值不匹配,则确定监听到对所述第一数据档文件的所述更新操作,所述日志文件用于存储所述数据档文件目录下各个数据档文件的历史更新信息;所述装置还包括:第一更新模块,用于根据所述当前md值更新所述第一数据档文件对应的所述历史md值。可选的,所述日志文件中还包括缓存文件对应的缓存文件信息,所述缓存文件是对所述数据档文件进行数据结构转换后生成并缓存的文件;所述装置还包括:清理模块,用于删除所述第一数据档文件对应的第一缓存文件,并清理所述日志文件中所述第一缓存文件对应的第一缓存文件信息;缓存模块,用于将所述目标数据档文件确定为所述第一数据档文件对应的所述第一缓存文件,并进行缓存;第二更新模块,用于更新所述日志文件中所述第一数据档文件对应的所述第一缓存文件信息。可选的,所述装置还包括:第二加载模块,用于根据所述日志文件中所述第二数据档文件对应的第二缓存文件信息,通过所述目标应用加载所述第二缓存文件,所述第二缓存文件是所述第二数据档文件对应的缓存文件。可选的,所述生成模块1003,包括:第一生成单元,用于对更新后的所述第一数据档文件进行结构体拼装,生成第一目标数据档文件;第二生成单元,用于根据结构体拼装过程中产生的字符串标识,生成第二目标数据档文件,所述第二目标数据档文件用于表示所述第一目标数据档文件中所述字符串标识与字符串之间的对应关系;确定单元,用于将所述第一目标数据档文件和所述第二目标数据档文件确定为所述目标数据档文件。可选的,所述装置还包括:第二获取模块,用于获取为更新后的所述第一数据档文件分配的目标内存地址;地址修改模块,用于将所述目标应用中智能指针指向的原始内存地址修改为所述目标内存地址,所述原始内存地址是为更新前的所述第一数据档文件分配的内存地址。可选的,所述计算机设备还运行有数据编辑工具;所述装置还包括:显示模块,用于将第一数据格式的所述第一数据档文件转换为第二数据格式,并在所述数据编辑工具的编辑界面中显示所述第二数据格式的所述第一数据档文件,所述第二数据格式与所述第一数据格式不同;转换模块,用于当接收到对所述第一数据档文件中应用数据的编辑保存操作时,将更新后的所述第一数据档文件由所述第二数据格式转换为所述第一数据格式;上传模块,用于将更新后的所述第一数据格式的所述第一数据档文件上传至版本控制svn系统,其中,所述svn系统不支持对所述第二数据格式的文件进行合并操作,且所述svn系统支持对所述第一数据格式的文件进行合并操作。可选的,所述目标应用包括c#侧以及c++侧,所述c#侧用于实现数据档文件监听,所述c++侧用于实现应用内部逻辑、数据结构转换以及数据档文件加载。综上所述,本申请实施例中,目标应用运行过程中,通过监听对目标应用对应数据档文件的更新操作,并在监听到对数据档文件的更新操作时,获取更新后的数据档文件,从而对更新后的第一数据档文件进行数据结构转换,生成目标数据档文件,由于目标数据档文件的数据结构是目标应用的可用数据结构,因此目标应用可以直接加载该目标数据档文件,实现应用运行过程中的数据更新;相较于相关技术中每次进行数据更新后都需要重启应用,本申请实施例中通过在目标应用中增加更新操作监听以及数据结构转换机制,使得目标应用能够在运行过程中进行数据热更新,无需进行应用重启,缩短了数据更新后进行更新效果验证的时长,进而提高了应用开发的效率。本实施例中,监听到对数据档文件的编辑保存操作后,进一步根据数据档文件的md值确定数据档文件的内容是否发生变化,避免对未发生内容变化的数据档文件进行数据结构转换造成的处理资源浪费。此外,本实施例中,通过维护日志文件,并基于日志文件中记录的缓存文件信息实现缓存文件加载,免去对未更新的数据档文件进行数据结构转换,有助于提高目标应用的数据加载速率。本实施例中,计算机设备通过数据编辑工具对数据档文件进行数据格式转换,从而生成能够被svn系统识别的xml文件,避免直接将excel文件上传至svn系统,导致svn系统无法进行合并操作的问题。需要说明的是:上述实施例提供的装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据更新装置与数据更新方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。请参考图11,其示出了本申请一个示例性实施例提供的计算机设备的结构示意图。具体来讲:所述计算机设备1400包括中央处理单元(cpu)1401、包括随机存取存储器(ram)1402和只读存储器(rom)1403的系统存储器1404,以及连接系统存储器1404和中央处理单元1401的系统总线1405。所述计算机设备1400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)1406,和用于存储操作系统1413、应用程序1414和其他程序模块1415的大容量存储设备1407。所述基本输入/输出系统1406包括有用于显示信息的显示器1408和用于用户输入信息的诸如鼠标、键盘之类的输入设备1409。其中所述显示器1408和输入设备1409都通过连接到系统总线1405的输入输出控制器1410连接到中央处理单元1401。所述基本输入/输出系统1406还可以包括输入输出控制器1410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1410还提供输出到显示屏、打印机或其他类型的输出设备。所述大容量存储设备1407通过连接到系统总线1405的大容量存储控制器(未示出)连接到中央处理单元1401。所述大容量存储设备1407及其相关联的计算机可读介质为计算机设备1400提供非易失性存储。也就是说,所述大容量存储设备1407可以包括诸如硬盘或者cd-roi驱动器之类的计算机可读介质(未示出)。不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括随机存取记忆体(ram,randomaccessmemory)、只读存储器(rom,readonlymemory)、闪存或其他固态存储技术,紧凑型光盘只读储存器(compactdiscread-onlymemory,cd-rom)、数字通用光盘(digitalversatiledisc,dvd)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1404和大容量存储设备1407可以统称为存储器。存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元1401执行,一个或多个程序包含用于实现上述方法的指令,中央处理单元1401执行该一个或多个程序实现上述各个方法实施例提供的方法。根据本申请的各种实施例,所述计算机设备1400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1400可以通过连接在所述系统总线1405上的网络接口单元1411连接到网络1412,或者说,也可以使用网络接口单元1411来连接到其他类型的网络或远程计算机系统(未示出)。所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本申请实施例提供的方法中由计算机设备所执行的步骤。本申请实施例还提供一种计算机可读存储介质,该可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述任一实施例所述的数据更新方法。本申请还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述各个方法实施例提供的数据更新方法。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任一方法实施例所述的数据更新方法。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本申请的示意性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1