CN108345470B - 一种数据处理、存储的方法、装置及电子设备 - Google Patents
一种数据处理、存储的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN108345470B CN108345470B CN201710054672.4A CN201710054672A CN108345470B CN 108345470 B CN108345470 B CN 108345470B CN 201710054672 A CN201710054672 A CN 201710054672A CN 108345470 B CN108345470 B CN 108345470B
- Authority
- CN
- China
- Prior art keywords
- data
- dependency
- layer
- stack
- chain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种数据处理、存储的方法、装置及电子设备,该数据处理方法包括:将数据存储于依赖栈中,依赖栈包含多层,存储在依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,相同数据在依赖栈中存储一次;从依赖栈的第一层并行读取顶层存储的目标数据,并根据从依赖栈中在前读取数据的执行结果,对其执行处理操作并存储执行结果;在第一层数据被读取后,删除依赖栈原第一层的数据,依赖栈原第一层的下一层更新为依赖栈的第一层。通过上述方案,解决了现有技术中具有依赖关系的数据读取耗时过多的技术问题,减少数据读取的时间。
Description
技术领域
本申请涉及软件技术领域,特别涉及一种数据处理、存储的方法、装置及电子设备。
背景技术
随着科学技术的不断发展,电子设备的数据处理能力得到了飞速的发展,能够很好的并行处理大量数据。为了提高电子设备的处理速度,在提高电子设备的运算速度同时,还需要提高电子设备读取数据的速度,现如今大多采用并发读取数据的方式来提高数据读取速度。
针对并发获取不同数据源的数据情景中,常常存在某些数据源之间存在先后依赖关系的情况(即存在先后执行顺序),而且可能存在重复依赖的情况。针对这种情况,现有技术通过独立的串行方式解决各个数据源依赖关系,即获取需要的每个数据源数据时只关心自己的上游依赖,通过串行的方式解决各个数据源依赖关系,但有些数据源具有相同的依赖关系,不关心其他数据源是否存在相同的依赖,会导致相同的依赖重复调用,使调用次数增加,导致整个数据读取过程的耗时过多。
可见,现有技术中对具有依赖关系的数据进行读取时存在耗时过多的技术问题。
发明内容
本申请实施例提供一种数据处理、存储的方法、装置及电子设备,用于解决现有技术中对具有依赖关系的数据进行读取时耗时过多的技术问题,减少数据读取的时间。
本申请实施例提供一种数据的处理方法,所述方法包括:
将数据存储于依赖栈中,所述依赖栈包含N层,N大于等于2,存储在依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,相同数据在所述依赖栈中存储一次;
从所述依赖栈的所述第一层并行读取所述第一层存储的目标数据;
根据从所述依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果;
在所述依赖栈的所述目标数据被读取后,删除依赖栈原第一层的数据,所述依赖栈原第一层的下一层更新为所述依赖栈的第一层。
可选的,所述根据从所述依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果,包括:
从所述依赖栈中在前读取数据中,获取当前读取到的所述目标数据所依赖的参考数据的参考执行结果;
根据所述参考执行结果,对当前读取到的各个数据执行处理操作并存储执行结果。
可选的,所述将数据存储于依赖栈中,包括:
获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果;
获得由存在所述依赖关系的数据连接构成的依赖链;
若所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储。
可选的,所述根据所述依赖关系和所述数据建立依赖栈并存储,包括:
获得所述依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数;
以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置;
根据所述存储层位置,对所有的数据进行分层存储。
可选的,以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置,包括:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不被任何数据依赖的第一数据确定存储于所述依赖栈的底层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
可选的,所述根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置,包括:
从所述第一数据依赖的上层数据开始,判断所述上层数据是否与任一所述已有数据相同;
若相同,确定所述上层数据已分配存储层;若不相同,确定所述上层数据的存储层为其下层数据存储的上一层依赖栈。
可选的,所述根据所述依赖关系和所述数据建立依赖栈并存储,包括:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不依赖任何数据的第二数据确定存储于所述依赖栈的顶层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
可选的,所述根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置,包括:
从所述第二数据依赖的下层数据开始,判断所述下层数据是否与任一所述已有数据相同;
若相同,确定所述下层数据已分配存储层;若不相同,确定所述下层数据的存储层为其上层数据存储的下一层依赖栈。
本申请实施例还提供一种数据存储方法,所述方法包括:
获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果;
获得由存在所述依赖关系的数据连接构成的依赖链;
若所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储,其中,所述依赖栈包含N层,N大于等于2,存储于依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,不同依赖链中的相同数据在所述依赖栈中存储一次,所述依赖栈中允许读取数据的位置为所述第一层。
可选的,所述根据所述依赖关系和所述数据建立依赖栈并存储,包括:
获得所述依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数;
以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置;
根据所述存储层位置,对所有的数据进行分层存储。
可选的,以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置,包括:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不被任何数据依赖的第一数据确定存储于所述依赖栈的底层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
可选的,所述根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置,包括:
从所述第一数据依赖的上层数据开始,判断所述上层数据是否与任一所述已有数据相同;
若相同,确定所述上层数据已分配存储层;若不相同,确定所述上层数据的存储层为其下层数据存储的上一层依赖栈。
可选的,所述根据所述依赖关系和所述数据建立依赖栈并存储,包括:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不依赖任何数据的第二数据确定存储于所述依赖栈的顶层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
可选的,所述根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置,包括:
从所述第二数据依赖的下层数据开始,判断所述下层数据是否与任一所述已有数据相同;
若相同,确定所述下层数据已分配存储层;若不相同,确定所述下层数据的存储层为其上层数据存储的下一层依赖栈。
本申请实施例还提供一种数据的处理装置,包括:
存储单元,用于将数据存储于依赖栈中,所述依赖栈包含N层,N大于等于2,存储在依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,相同数据在所述依赖栈中存储一次;
读取单元,用于从所述依赖栈的所述第一层并行读取所述第一层存储的目标数据;
执行单元,用于根据从所述依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果;
更新单元,用于在所述依赖栈的所述目标数据被读取后,删除依赖栈原第一层的数据,依赖栈原第一层的下一层更新为依赖栈的第一层
可选的,所述执行单元,包括:
结果获取子单元,用于从所述依赖栈中在前读取数据中,获取当前读取到的所述目标数据所依赖的参考数据的参考执行结果;
执行子单元,用于根据所述参考执行结果,对当前读取到的各个数据执行处理操作并存储执行结果。
可选的,所述存储单元,包括:
获取模块,用于获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果,以及,获得由存在所述依赖关系的数据连接构成的依赖链;
存储模块,用于在所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储。
可选的,所述存储模块,包括:
第一获取子模块,用于获得所述依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数;
第二获取子模块,用于以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置;
存储子模块,用于根据所述存储层位置,对所有的数据进行分层存储。
可选的,所述第二获取子模块,用于:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不被任何数据依赖的第一数据确定存储于所述依赖栈的底层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
可选的,所述第二获取子模块,用于:
从所述第一数据依赖的上层数据开始,判断所述上层数据是否与任一所述已有数据相同;
若相同,确定所述上层数据已分配存储层;若不相同,确定所述上层数据的存储层为其下层数据存储的上一层依赖栈。
可选的,所述第二获取子模块,用于:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不依赖任何数据的第二数据确定存储于所述依赖栈的顶层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
可选的,所述第二获取子模块,用于:
从所述第二数据依赖的下层数据开始,判断所述下层数据是否与任一所述已有数据相同;
若相同,确定所述下层数据已分配存储层;若不相同,确定所述下层数据的存储层为其上层数据存储的下一层依赖栈。
本申请实施例还提供一种数据存储装置,包括:
获取模块,用于获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果,以及,获得由存在所述依赖关系的数据连接构成的依赖链;
存储模块,用于在所述依赖链的条数大于等于2时,根据所述依赖关系和所述数据建立依赖栈并存储,其中,所述依赖栈包含N层,N大于等于2,存储于依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,不同依赖链中的相同数据在所述依赖栈中存储一次,所述依赖栈中允许读取数据的位置为所述第一层。
可选的,所述存储模块,包括:
第一获取子模块,用于获得所述依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数;
第二获取子模块,用于以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置;
存储子模块,用于根据所述存储层位置,对所有的数据进行分层存储。
可选的,所述第二获取子模块,用于:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不被任何数据依赖的第一数据确定存储于所述依赖栈的底层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
可选的,所述第二获取子模块,用于:
从所述第一数据依赖的上层数据开始,判断所述上层数据是否与任一所述已有数据相同;
若相同,确定所述上层数据已分配存储层;若不相同,确定所述上层数据的存储层为其下层数据存储的上一层依赖栈。
可选的,所述第二获取子模块,还用于:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不依赖任何数据的第二数据确定存储于所述依赖栈的顶层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
可选的,所述第二获取子模块,还用于:
从所述第二数据依赖的下层数据开始,判断所述下层数据是否与任一所述已有数据相同;
若相同,确定所述下层数据已分配存储层;若不相同,确定所述下层数据的存储层为其上层数据存储的下一层依赖栈。
本申请实施例还提供一种电子设备,包括:存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
将数据存储于依赖栈中,所述依赖栈包含N层,N大于等于2,存储在依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,相同数据在所述依赖栈中存储一次;
从所述依赖栈的所述第一层并行读取所述第一层存储的目标数据;
根据从所述依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果;
在所述依赖栈的所述目标数据被读取后,删除依赖栈原第一层的数据,所述依赖栈原第一层的下一层更新为所述依赖栈的第一层。
本申请实施例还提供一种电子设备,包括:存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果;
获得由存在所述依赖关系的数据连接构成的依赖链;
若所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储,其中,所述依赖栈包含N层,N大于等于2,存储于依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,不同依赖链中的相同数据在所述依赖栈中存储一次,所述依赖栈中允许读取数据的位置为所述第一层。
本申请实施例中的上述一个或多个技术方案,至少具有如下技术效果:
通过将数据存储于依赖栈中,其中,存储在依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,相同数据在依赖栈中存储一次;并从依赖栈的所述第一层并行读取第一层存储的目标数据;根据从依赖栈中在前读取数据的执行结果,对当前读取到的目标数据执行处理操作并存储执行结果,在依赖栈的目标数据被读取后,删除依赖栈原第一层的数据,依赖栈原第一层的下一层更新为依赖栈的第一层,即从依赖栈中读取数据时遵从了已有的依赖关系避免无效读取,相同数据在依赖栈中存储一次,且依赖栈从第一层读取数据,第一层数据被读取删除后才能进行下一层数据的读取,从而避免被重复依赖的数据的重复调用、相同数据的重复读取,解决了现有技术中对具有依赖关系的数据进行读取时耗时过多的技术问题,减少了数据读取的时间。
附图说明
图1为本申请实施例一提供的一种数据存储方法的流程图;
图2为本申请实施例一提供的依赖关系示意图;
图3为本申请实施例一提供的第一种依赖栈的示意图;
图4为本申请实施例一提供的第二种依赖栈的示意图;
图5为本申请实施例一提供的一种数据处理方法的流程图;
图6为本申请实施例二提供的一种数据存储装置的示意图;
图7为本申请实施例二提供的一种数据处理装置的示意图;
图8为本申请实施例二提供的一种电子设备的示意图。
具体实施方式
在本申请实施例提供的技术方案中,通过将数据存储于第二层数据依赖于第一层数据的依赖栈中,并对相同数据进行一次存储,每次从依赖栈的第一层读取数据,存储第一数据的执行结果以供下层数据执行时调用,使得数据被读取时按照依赖关系进行,相同数据只需读取一次,避免重复读取,解决了现有技术中对具有依赖关系的数据进行读取时耗时过多的技术问题,减少了数据读取的时间。
下面结合附图对本申请实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。
实施例一
为了实现本申请实施例提供的一种数据处理方法,本申请实施例针对待处理的数据,提供一种数据存储方法,请参考图1,该方法包括:
S101:获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果;
S102:获得由存在所述依赖关系的数据连接构成的依赖链;
S103:若所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储,其中,所述依赖栈包含N层,N大于等于2,存储于依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,不同依赖链中的相同数据在所述依赖栈中存储一次,所述依赖栈中允许读取数据的位置为所述第一层。
本申请实施例提供一种依赖栈,并通过该依赖栈来存储具有依赖关系的数据。其中,依赖栈是根据依赖关系建立的运算受限的线性表,依赖栈包含多层,只允许从依赖栈的第一层(即栈顶或顶层)操作数据,包括:读取、插入及删除数据。
在通过依赖栈来存储具有依赖关系的数据时,先执行S101获得数据之间的依赖关系。例如:若执行数据A时,需要获取数据H进行处理、再获取数据E进行处理,那么A就依赖于E,E依赖于H,这便是A、E、H之间的依赖关系;同时,若执行数据D时也需要获取数据H进行处理,那么如图2所示,H既被E依赖又被D依赖,存在重复依赖的情况,同样的图2中F也存在重复依赖的情况。
在S101之后,进一步执行S102获得由存在所述依赖关系的数据连接构成的依赖链。该依赖链由第一数据、执行所述第一数据所依赖的所有数据及其依赖关系构成,所述第一数据为不被任何数据依赖的数据,即一条依赖链包含不被任何数据依赖的第一数据、既被依赖又依赖其他数据的中间数据以及不依赖任何数据的第二数据构成。例如:若获取数据A时,需要获取数据H进行处理、再获取数据E进行处理后执行数据A,那么A→E→H就构成一条依赖链。数据构成的依赖链可能是一条,也可能是多条,当依赖链多条时各条依赖链中可能存在相同的数据。当依赖链为一条时,可以直接串行存储数据即可;当依赖链为多条时,执行S103。
S103:若获得的依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储。其中,所述依赖栈包含N层,N大于等于2,依赖栈的一层可以存储多个不同的数据,存储于依赖栈第二层的数据依赖于依赖栈第一层存储的数据,不同依赖链中的相同数据在所述依赖栈中只存储一次。例如:假设目标数构成的依赖链为A→E→H和D→H,可以建立三层的依赖栈,H置于依赖栈的顶层、E置于中间层、A置于底层,而D只要位于H的下层即可,可以在中间层,也可以在底层,在该依赖栈中,当读取数据时,只调用了4次数据,执行数据D时已经执行过数据H,不需要再重复调用H。
需要说明的是,本申请中依赖栈的第一层可以是依赖栈的顶层,第二层可以为依赖栈的中间层为第二层,以此类推,但本申请的第一层也可以是底层,第二层为底层的上一次层,只要依赖栈中的层级之间满足第二层中的数据执行依赖于第一层的数据执行结果的关系即可。
下面以第一层为顶层为例,说明依赖栈的建立过程。建立依赖栈的具体实施过程包含如下三个步骤:
第一步、获得依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数。
其中,依赖层级是指依赖链中依赖节点,例如:若依赖链为:A→E→H,数据A、E、H分别为一个依赖节点,若依赖链为:A→E、G→H,数据A、H分别为一个依赖节点、数据E、G为一个依赖节点。如图2所示的依赖关系,则获得A→E→H为第一依赖链,该第一依赖链的层级数为3,那么可以建立3层的依赖栈。
第二步,以获得的第一依赖链中数据为参考,确定各依赖链中的数据在该依赖栈中的存储层位置。
存储层位置的确定可以通过多种方式进行,只要保证下层数据依赖上层数据的关系不变,各依赖链中的相同数据只存储一次即可。下面通过以下两种方式来进行举例说明:
方式一、将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不被任何数据依赖的第一数据确定存储于依赖栈的底层;根据各依赖链的依赖关系和依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的数据在依赖栈中的存储层位置。具体的,从第一数据依赖的上层数据开始,判断上层数据是否与任一依赖栈中的已有数据相同;若相同,确定该上层数据已分配存储层;若不相同,确定该上层数据的存储层为其下层数据存储的上一层依赖栈。例如:针对图2所示的数据,先确定第一数据A、B、C、D存储于依赖栈的底层,进一步的,将第一依赖链A→E→H中的各数据分别作为依赖栈各层的初始数据,B依赖于F,但F不与任一已有数据相同,那么将可将F存储与底层的上层即可,如E所在的中间层,进一步,C依赖于F,F在中间层已有相同数据存在,确定分配存储层,不再重复存储,同样D依赖于H,H与第一依赖链中的顶层数据相同,那么确定其已分配存储层,不再另行存储,最后形成依赖栈如图3所示。
方式二、将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不依赖任何数据的第二数据确定存储于所述依赖栈的顶层;根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。具体的,从第二数据依赖的下层数据开始,判断下层数据是否与任一依赖栈中已有数据相同;若相同,确定所述下层数据已分配存储层;若不相同,确定所述下层数据的存储层为其上层数据存储的下一层依赖栈。例如:针对图2所示的数据,先确定第二数据H、F存储于依赖栈的顶层,进一步的,将第一依赖链:A→E→H中的各数据分别作为依赖栈各层的初始数据,B和C依赖于F,但B和C不与任一已有数据相同,那么将可将B和C存储于顶层的下层即可,如E所在的中间层,D依赖于H,D不与依赖栈中任一已有数据相同,那么将D存储于顶层的下层即可,如E所在的中间层,最后形成依赖栈如图4所示。
通过上述两种方式建立依赖栈,能够进行有序的数据存储,保证计算机处理的稳定性。其中,通过方式二建立依赖栈还能保证短的依赖链能够被尽快执行完,腾出内存空间加速后续数据的处理速度。当然,还可以采用其它方式建立依赖栈,如若一条依赖链的依赖层级小于第一依赖链,其中包含的数据又没有与第一依赖链相同的数据时,该条依赖链中的第一数据可以不存储与底层、第二数据也不存储与顶层,只要各层级的数据分别存储于依赖栈的各层并满足上下依赖关系即可。
第三步,根据第二步确认的存储层位置,对所有的数据进行分层存储。
基于上述实施例提供的一种数据存储方法,本申请实施例在对具有依赖关系的数据进行处理时,提供一种数据处理方法,请参考5,该方法包括:
S501:将数据存储于依赖栈中,所述依赖栈包含N层,N大于等于2,存储在依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,相同数据在所述依赖栈中存储一次;
S502:从所述依赖栈的所述第一层并行读取所述第一层存储的目标数据;
S503:根据从所述依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果;
S504:在所述依赖栈的所述目标数据被读取后,删除依赖栈原第一层的数据,所述依赖栈原第一层的下一层更新为所述依赖栈的第一层。
在具体实施过程中,通过上述实施例提供的一种数据存储方法来执行S501将数据存储于依赖栈中。在S501之后,并发获取数据的过程中,执行S502并行读取依赖栈的顶层存储的目标数据。进一步的,由于依赖栈第一层存储的数据不依赖于下层数据即第二层数据,而第一层中的目标数据所依赖的数据已在前被读取,或者目标数据不依赖于任何数据,所以在读取目标数据后,执行503根据从依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果。当目标数据不依赖于任何数据时,目标数据对应的在前读取数据的执行结果即为空。
在第一层数据被读取后,需要读取下一层的数据,由于依赖栈为了避免重复读取调用只允许在依赖栈的第一层进行操作,为此执行S504删除依赖栈原第一层的数据,依赖栈原第一层的下一层更新为依赖栈的第一层。需要说明的是,步骤S502~S504可以循环往复的执行,直到依赖栈的所有数据被处理完。
具体的,执行S503时可以先从在前读取数据的执行结果中,获取当前读取到的目标数据所依赖的参考数据的参考执行结果;然后,根据参考执行结果,对当前读取到的各个数据执行处理操作并存储执行结果。例如:图3中的数据A执行时,需要获取被其直接依赖的数据E的执行结果,而数据D执行时,则需要获取被其直接依赖的数据H的执行结果,即在前读取数据的执行结果可能由位于当前数据的上一层数据执行获得,也可能由位于当前数据的上几层数据执行获得,无论是上一层数据还是上几层数据的执行结果均已由在前读取的数据执行获得,无需再重复读取调用相同的数据,相对于现有的串行方式图3中的数据需要调用9次(H和F均存在重复调用),本申请提供的数据处理方法对图3中的数据调用达到了调用次数最少的7次,避免了重复调用。
实施例二
基于上述实施例提供的数据存储方法,本申请实施例还对应提供一种数据存储装置,请参考图6,该装置包括:
获取模块61,用于获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果,以及,获得由存在所述依赖关系的数据连接构成的依赖链;
存储模块62,用于在所述依赖链的条数大于等于2时,根据所述依赖关系和所述数据建立依赖栈并存储,其中,所述依赖栈包含N层,N大于等于2,存储于依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,不同依赖链中的相同数据在所述依赖栈中存储一次,所述依赖栈中允许读取数据的位置为所述第一层。
作为一种可选的实施方式,所述存储模块62,包括:第一获取子模块、第二获取子模块及存储子模块。第一获取子模块用于:获得所述依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数。第二获取子模块用于:以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置。存储子模块用于:根据所述存储层位置,对所有的数据进行分层存储。
其中,所述第二获取子模块可以通过以下两种方式来确定各数据的存储层位置:
方式一:将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不被任何数据依赖的第一数据确定存储于所述依赖栈的底层;根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。具体的,可以从所述第一数据依赖的上层数据开始,判断所述上层数据是否与任一所述已有数据相同;若相同,确定所述上层数据已分配存储层;若不相同,确定所述上层数据的存储层为其下层数据存储的上一层依赖栈。
方式二:将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不依赖任何数据的第二数据确定存储于所述依赖栈的顶层;根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。具体的,从所述第二数据依赖的下层数据开始,判断所述下层数据是否与任一所述已有数据相同;若相同,确定所述下层数据已分配存储层;若不相同,确定所述下层数据的存储层为其上层数据存储的下一层依赖栈。
请参考图7,基于上述实施例一提供的一种数据处理方法,本申请实施例还对应提供本申请实施例还提供一种数据的处理装置,包括:
存储单元71,用于将数据存储于依赖栈中,所述依赖栈包含N层,N大于等于2,存储在依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,相同数据在所述依赖栈中存储一次;
读取单元72,用于从所述依赖栈的所述第一层并行读取所述第一层存储的目标数据;
执行单元73,用于根据从所述依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果;
更新单元74,用于在所述依赖栈的所述目标数据被读取后,删除依赖栈原第一层的数据,所述依赖栈原第一层的下一层更新为所述依赖栈的第一层。
在具体实施过程中,所述执行单元73,包括:结果获取子单元和执行子单元。结果获取子单元,用于从在前读取数据的直接结果中,获取当前读取到的目标数据所依赖的参考数据的参考执行结果;执行子单元,用于根据所述参考执行结果,对当前读取到的各个数据执行处理操作并存储执行结果。
所述存储单元71包括:获取模块61和存储模块62。获取模块61,用于获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果,以及,获得由存在所述依赖关系的数据连接构成的依赖链;存储模块62,用于在所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储,其中,所述依赖栈只允许从顶层读取数据。
其中,所述存储模块62,包括:第一获取子模块,用于获得所述依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数;第二获取子模块,用于以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置;存储子模块,用于根据所述存储层位置,对所有的数据进行分层存储。
作为一种可选的实施例,所述第二获取子模块可以通过以下两种方式来确认各数据的存储层位置:
方式一、将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不被任何数据依赖的第一数据确定存储于所述依赖栈的底层;根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。具体的,可以从所述第一数据依赖的上层数据开始,判断所述上层数据是否与任一所述已有数据相同;若相同,确定所述上层数据已分配存储层;若不相同,确定所述上层数据的存储层为其下层数据存储的上一层依赖栈。
方式二、将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不依赖任何数据的第二数据确定存储于所述依赖栈的顶层;根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。具体的,从所述第二数据依赖的下层数据开始,判断所述下层数据是否与任一所述已有数据相同;若相同,确定所述下层数据已分配存储层;若不相同,确定所述下层数据的存储层为其上层数据存储的下一层依赖栈。
关于上述实施例中的装置,其中各个单元、模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图8是根据一示例性实施例示出的一种用于实现数据存储和/或处理方法的电子设备800的框图。例如,电子设备800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图4,电子设备800可以包括以下一个或多个组件:处理器802,存储器804,以及输入/输出(I/O)的接口806。处理器802通常控制电子设备800的整体操作。处理器802可以包括一个或多个,以完成上述的方法的全部或部分步骤。存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。I/O接口806为处理器802和外围接口模块之间提供接口,该外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
在示例性实施例中,当存储器804中的指令由电子设备的处理器执行时,使得电子设备能够执行一种数据存储方法,所述方法包括:获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果;获得由存在所述依赖关系的数据连接构成的依赖链;若所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储,其中,所述依赖栈包含N层,N大于等于2,存储于依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,不同依赖链中的相同数据在所述依赖栈中存储一次,所述依赖栈中允许读取数据的位置为所述第一层。
在示例性实施例中,当存储器804中的指令由电子设备的处理器执行时,使得电子设备能够执行一种数据处理方法,所述方法包括:将数据存储于依赖栈中,所述依赖栈包含N层,N大于等于2,存储在依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,相同数据在所述依赖栈中存储一次;从所述依赖栈的所述第一层并行读取所述第一层存储的目标数据;对读取到的各个数据执行处理操作并存储执行结果;在所述依赖栈的顶层数据被读取后,删除依赖栈原顶层的数据,依赖栈原顶层的下一层更新为依赖栈的顶层;并行读取所述依赖栈更新后的顶层存储的所有数据;根据在前读取数据的执行结果和当前读取到的各个数据执行处理操作并存储执行结果。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (26)
1.一种数据的处理方法,其特征在于,所述方法包括:
将数据存储于依赖栈中,所述依赖栈包含N层,N大于等于2,存储在所述依赖栈第二层的数据执行时依赖于存储在所述依赖栈第一层的数据的执行结果,相同数据在所述依赖栈中存储一次,所述依赖栈是存在依赖关系的数据构成的依赖链大于或等于2时,根据所述依赖关系建立;
从所述依赖栈的所述第一层并行读取所述第一层存储的目标数据;
根据从所述依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果;
在所述依赖栈的所述目标数据被读取后,删除依赖栈原第一层的数据,所述依赖栈原第一层的下一层更新为所述依赖栈的第一层。
2.如权利要求1所述的方法,其特征在于,所述根据从所述依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果,包括:
从所述依赖栈中在前读取数据中,获取当前读取到的所述目标数据所依赖的参考数据的参考执行结果;
根据所述参考执行结果,对当前读取到的各个数据执行处理操作并存储执行结果。
3.如权利要求1所述的方法,其特征在于,所述将数据存储于依赖栈中,包括:
获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果;
获得由存在所述依赖关系的数据连接构成的依赖链;
若所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储。
4.如权利要求3所述的方法,其特征在于,所述根据所述依赖关系和所述数据建立依赖栈并存储,包括:
获得所述依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数;
以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置;
根据所述存储层位置,对所有的数据进行分层存储。
5.如权利要求4所述的方法,其特征在于,以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置,包括:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不被任何数据依赖的第一数据确定存储于所述依赖栈的底层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
6.如权利要求5所述的方法,其特征在于,所述根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置,包括:
从所述第一数据依赖的上层数据开始,判断所述上层数据是否与任一所述已有数据相同;
若相同,确定所述上层数据已分配存储层;若不相同,确定所述上层数据的存储层为其下层数据存储的上一层依赖栈。
7.如权利要求4所述的方法,其特征在于,所述根据所述依赖关系和所述数据建立依赖栈并存储,包括:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不依赖任何数据的第二数据确定存储于所述依赖栈的顶层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
8.如权利要求7所述的方法,其特征在于,所述根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置,包括:
从所述第二数据依赖的下层数据开始,判断所述下层数据是否与任一所述已有数据相同;
若相同,确定所述下层数据已分配存储层;若不相同,确定所述下层数据的存储层为其上层数据存储的下一层依赖栈。
9.一种数据存储方法,其特征在于,所述方法包括:
获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果;
获得由存在所述依赖关系的数据连接构成的依赖链;
若所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储,其中,所述依赖栈包含N层,N大于等于2,存储于依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,不同依赖链中的相同数据在所述依赖栈中存储一次,所述依赖栈中允许读取数据的位置为所述第一层。
10.如权利要求9所述的方法,其特征在于,所述根据所述依赖关系和所述数据建立依赖栈并存储,包括:
获得所述依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数;
以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置;
根据所述存储层位置,对所有的数据进行分层存储。
11.如权利要求10所述的方法,其特征在于,以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置,包括:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不被任何数据依赖的第一数据确定存储于所述依赖栈的底层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
12.如权利要求11所述的方法,其特征在于,所述根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置,包括:
从所述第一数据依赖的上层数据开始,判断所述上层数据是否与任一所述已有数据相同;
若相同,确定所述上层数据已分配存储层;若不相同,确定所述上层数据的存储层为其下层数据存储的上一层依赖栈。
13.如权利要求10所述的方法,其特征在于,所述根据所述依赖关系和所述数据建立依赖栈并存储,包括:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不依赖任何数据的第二数据确定存储于所述依赖栈的顶层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
14.如权利要求13所述的方法,其特征在于,所述根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置,包括:
从所述第二数据依赖的下层数据开始,判断所述下层数据是否与任一所述已有数据相同;
若相同,确定所述下层数据已分配存储层;若不相同,确定所述下层数据的存储层为其上层数据存储的下一层依赖栈。
15.一种数据的处理装置,其特征在于,所述装置包括:
存储单元,用于将数据存储于依赖栈中,所述依赖栈包含N层,N大于等于2,存储在依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,相同数据在所述依赖栈中存储一次,所述依赖栈是存在依赖关系的数据构成的依赖链大于或等于2时,根据所述依赖关系建立;
读取单元,用于从所述依赖栈的所述第一层并行读取所述第一层存储的目标数据;
执行单元,用于根据从所述依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果;
更新单元,用于在所述依赖栈的所述目标数据被读取后,删除依赖栈原第一层的数据,依赖栈原第一层的下一层更新为依赖栈的第一层。
16.如权利要求15所述的装置,其特征在于,所述执行单元,包括:
结果获取子单元,用于从所述依赖栈中在前读取数据中,获取当前读取到的所述目标数据所依赖的参考数据的参考执行结果;
执行子单元,用于根据所述参考执行结果,对当前读取到的各个数据执行处理操作并存储执行结果。
17.如权利要求15所述的装置,其特征在于,所述存储单元,包括:
获取模块,用于获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果,以及,获得由存在所述依赖关系的数据连接构成的依赖链;
存储模块,用于在所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储。
18.如权利要求17所述的装置,其特征在于,所述存储模块,包括:
第一获取子模块,用于获得所述依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数;
第二获取子模块,用于以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置;
存储子模块,用于根据所述存储层位置,对所有的数据进行分层存储。
19.一种数据存储装置,其特征在于,所述装置包括:
获取模块,用于获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果,以及,获得由存在所述依赖关系的数据连接构成的依赖链;
存储模块,用于在所述依赖链的条数大于等于2时,根据所述依赖关系和所述数据建立依赖栈并存储,其中,所述依赖栈包含N层,N大于等于2,存储于依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,不同依赖链中的相同数据在所述依赖栈中存储一次,所述依赖栈中允许读取数据的位置为所述第一层。
20.如权利要求19所述的装置,其特征在于,所述存储模块,包括:
第一获取子模块,用于获得所述依赖链中依赖层级最多的第一依赖链,并以所述第一依赖链的层级数作为所述依赖栈的层数;
第二获取子模块,用于以所述第一依赖链中数据为参考,确定各依赖链中的所述数据在所述依赖栈中的存储层位置;
存储子模块,用于根据所述存储层位置,对所有的数据进行分层存储。
21.如权利要求20所述的装置,其特征在于,所述第二获取子模块,用于:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不被任何数据依赖的第一数据确定存储于所述依赖栈的底层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,从下到上确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
22.如权利要求21所述的装置,其特征在于,所述第二获取子模块,用于:
从所述第一数据依赖的上层数据开始,判断所述上层数据是否与任一所述已有数据相同;
若相同,确定所述上层数据已分配存储层;若不相同,确定所述上层数据的存储层为其下层数据存储的上一层依赖栈。
23.如权利要求20所述的装置,其特征在于,所述第二获取子模块,还用于:
将所述第一依赖链中各层级的数据作为所述依赖栈各层的初始数据,将所有的数据中不依赖任何数据的第二数据确定存储于所述依赖栈的顶层;
根据各依赖链的依赖关系和所述依赖栈各层中的已有数据,上到下确定各依赖链中剩余的所述数据在所述依赖栈中的存储层位置。
24.如权利要求23所述的装置,其特征在于,所述第二获取子模块,还用于:
从所述第二数据依赖的下层数据开始,判断所述下层数据是否与任一所述已有数据相同;
若相同,确定所述下层数据已分配存储层;若不相同,确定所述下层数据的存储层为其上层数据存储的下一层依赖栈。
25.一种电子设备,其特征在于,包括:存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
将数据存储于依赖栈中,所述依赖栈包含N层,N大于等于2,存储在依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,相同数据在所述依赖栈中存储一次,所述依赖栈是存在依赖关系的数据构成的依赖链大于或等于2时,根据所述依赖关系建立;
从所述依赖栈的所述第一层并行读取所述第一层存储的目标数据;
根据从所述依赖栈中在前读取数据的执行结果,对当前读取到的所述目标数据执行处理操作并存储执行结果;
在所述依赖栈的所述目标数据被读取后,删除依赖栈原第一层的数据,所述依赖栈原第一层的下一层更新为所述依赖栈的第一层。
26.一种电子设备,其特征在于,包括:存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
获得数据之间的依赖关系,所述依赖关系表征一数据的执行依赖于另一数据的执行结果;
获得由存在所述依赖关系的数据连接构成的依赖链;
若所述依赖链的条数大于等于2,根据所述依赖关系和所述数据建立依赖栈并存储,其中,所述依赖栈包含N层,N大于等于2,存储于依赖栈第二层的数据执行时依赖于存储在依赖栈第一层的数据的执行结果,不同依赖链中的相同数据在所述依赖栈中存储一次,所述依赖栈中允许读取数据的位置为所述第一层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710054672.4A CN108345470B (zh) | 2017-01-24 | 2017-01-24 | 一种数据处理、存储的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710054672.4A CN108345470B (zh) | 2017-01-24 | 2017-01-24 | 一种数据处理、存储的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108345470A CN108345470A (zh) | 2018-07-31 |
CN108345470B true CN108345470B (zh) | 2021-10-08 |
Family
ID=62961946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710054672.4A Active CN108345470B (zh) | 2017-01-24 | 2017-01-24 | 一种数据处理、存储的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108345470B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111147691B (zh) * | 2019-12-31 | 2022-07-05 | 上海联影医疗科技股份有限公司 | 图像处理方法、装置、设备和可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101548332A (zh) * | 2007-03-07 | 2009-09-30 | 桑迪士克股份有限公司 | 非易失性存储器和用于高速缓存页复制的方法 |
CN101571810A (zh) * | 2009-05-31 | 2009-11-04 | 清华大学 | 执行程序的方法、验证程序结果的方法、装置及系统 |
CN101739348A (zh) * | 2008-11-26 | 2010-06-16 | 威刚科技股份有限公司 | 内存系统及其控制方法 |
CN103559069A (zh) * | 2013-11-18 | 2014-02-05 | 中国科学院声学研究所 | 一种基于代数系统的跨文件过程间优化方法 |
US8769230B2 (en) * | 2011-02-08 | 2014-07-01 | International Business Machines Corporation | Parallel, single-pass compaction in a region-based garbage collector |
CN104834599A (zh) * | 2015-04-24 | 2015-08-12 | 百度在线网络技术(北京)有限公司 | Web安全检测方法和装置 |
CN105224323A (zh) * | 2015-09-29 | 2016-01-06 | 北京畅游天下网络技术有限公司 | 一种三维动画引擎的资源打包方法及装置 |
CN105808211A (zh) * | 2013-02-11 | 2016-07-27 | 想象力科技有限公司 | 推测性加载分发 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090307523A1 (en) * | 2008-06-06 | 2009-12-10 | Allison Brian D | System Performance Through Invalidation of Speculative Memory Scrub Commands |
-
2017
- 2017-01-24 CN CN201710054672.4A patent/CN108345470B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101548332A (zh) * | 2007-03-07 | 2009-09-30 | 桑迪士克股份有限公司 | 非易失性存储器和用于高速缓存页复制的方法 |
CN101739348A (zh) * | 2008-11-26 | 2010-06-16 | 威刚科技股份有限公司 | 内存系统及其控制方法 |
CN101571810A (zh) * | 2009-05-31 | 2009-11-04 | 清华大学 | 执行程序的方法、验证程序结果的方法、装置及系统 |
US8769230B2 (en) * | 2011-02-08 | 2014-07-01 | International Business Machines Corporation | Parallel, single-pass compaction in a region-based garbage collector |
CN105808211A (zh) * | 2013-02-11 | 2016-07-27 | 想象力科技有限公司 | 推测性加载分发 |
CN103559069A (zh) * | 2013-11-18 | 2014-02-05 | 中国科学院声学研究所 | 一种基于代数系统的跨文件过程间优化方法 |
CN104834599A (zh) * | 2015-04-24 | 2015-08-12 | 百度在线网络技术(北京)有限公司 | Web安全检测方法和装置 |
CN105224323A (zh) * | 2015-09-29 | 2016-01-06 | 北京畅游天下网络技术有限公司 | 一种三维动画引擎的资源打包方法及装置 |
Non-Patent Citations (1)
Title |
---|
面向数据库模式变更的代码演化推荐方法;张武能等;《计算机科学》;20160229;第43卷(第2期);第216-223页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108345470A (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102208186B1 (ko) | 블록체인 합의 방법 및 디바이스 | |
KR102125177B1 (ko) | 블록체인 기반 데이터 처리 방법 및 장치 | |
CN111223036B (zh) | 一种gpu虚拟化共享方法、装置及电子设备和存储介质 | |
US8335997B2 (en) | Electronic device and method for sorting menu options of a program menu in the electronic device | |
EP2565786A1 (en) | Information processing device and task switching method | |
CN111240834B (zh) | 任务执行方法、装置、电子设备和存储介质 | |
CN112817657B (zh) | 一种应用程序启动项加载方法、装置、系统及存储介质 | |
WO2021057811A1 (zh) | 网络节点处理方法、装置、存储介质及电子设备 | |
CN107766528B (zh) | 瀑布流页面的数据加载方法、终端和计算机可读存储介质 | |
CN108345470B (zh) | 一种数据处理、存储的方法、装置及电子设备 | |
CN109032685A (zh) | 一种加速安卓系统启动的方法及终端 | |
CN111221650A (zh) | 基于进程类型关联的系统资源回收方法及装置 | |
CN106940714A (zh) | 一种数据处理方法、装置及电子设备 | |
CN116932175B (zh) | 一种基于序列生成的异构芯片任务调度方法以及装置 | |
CN106775889B (zh) | 利用对象池实现Flash播放器资源加载的方法及系统 | |
CN116841713A (zh) | 任务扫描方法、装置、电子设备以及存储介质 | |
CN116048757A (zh) | 任务处理方法、装置、电子设备和存储介质 | |
CN112925804B (zh) | 数据库维护方法和装置 | |
CN111930691B (zh) | 一种模型调用方法、装置及系统 | |
CN114564924A (zh) | 数据插入方法、装置、设备及存储介质 | |
CN108984426B (zh) | 用于处理数据的方法和装置 | |
CN106934555B (zh) | 工作流的组织方法及装置、计算机设备及存储介质 | |
CN111880922A (zh) | 并发任务的处理方法、装置及设备 | |
CN109194734A (zh) | 消息推送方法、装置、服务器及可读存储介质 | |
CN108897639A (zh) | 文件处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |