WO2023028833A1 - 一种数据处理的方法、装置、设备、程序及介质 - Google Patents

一种数据处理的方法、装置、设备、程序及介质 Download PDF

Info

Publication number
WO2023028833A1
WO2023028833A1 PCT/CN2021/115670 CN2021115670W WO2023028833A1 WO 2023028833 A1 WO2023028833 A1 WO 2023028833A1 CN 2021115670 W CN2021115670 W CN 2021115670W WO 2023028833 A1 WO2023028833 A1 WO 2023028833A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
linked list
sub
linked
search
Prior art date
Application number
PCT/CN2021/115670
Other languages
English (en)
French (fr)
Inventor
罗甜甜
吴穹蔗
Original Assignee
深圳市大疆创新科技有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 深圳市大疆创新科技有限公司 filed Critical 深圳市大疆创新科技有限公司
Priority to PCT/CN2021/115670 priority Critical patent/WO2023028833A1/zh
Publication of WO2023028833A1 publication Critical patent/WO2023028833A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Abstract

在本发明实施例中提供了一种数据处理的方法、装置、设备、程序及介质,所述方法包括:预置一个或多个数据链表;其中,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同;接收用户提交的数据查找请求;根据数据查找请求,在一个或多个数据链表中进行查找,并根据查找的结果,向用户进行反馈。通过本发明实施例,实现了基于数据链表的跳表的数据存储和查询,既不需要申请连续的内存,也降低了数据查询的时间复杂度。

Description

一种数据处理的方法、装置、设备、程序及介质 技术领域
本发明涉及数据处理技术领域,特别是涉及一种数据处理的方法、装置、设备、程序及介质。
背景技术
随着科学技术的发展,需要进行存储和查询的数据量逐渐增多,对于海量的数据,通常可以采用数组进行数据存储,但采用数组的方式需要申请连续的内存,也可以采用单向链表、双向链表进行数据存储,但采用单向链表、双向链表的方式,在进行数据查询时的时间复杂度较高,查询效率低。
发明内容
鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种数据处理的方法、装置、设备、程序及介质,包括:
一种数据处理的方法,所述方法包括:
预置一个或多个数据链表;其中,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,所述第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同;
接收用户提交的数据查找请求;
根据所述数据查找请求,在所述一个或多个数据链表中进行查找,并根据查找的结果,向用户进行反馈。
可选地,所述根据所述数据查找请求,在所述一个或多个数据链表中进行查找,包括:
根据所述数据查找请求,确定待查找的第一数据元素;
按照级别顺序对目标数据链表中多级子链表进行查找,直至查找到所述第一数据元素或完成对所述目标数据链表中多级子链表查找。
可选地,所述按照级别顺序对目标数据链表中多级子链表进行查找,直至查找到所述第一数据元素或完成对所述目标数据链表中多级子链表查找, 包括:
从目标数据链表中最上级子链表开始进行查找;
在所述目标数据链表中当前子链表中未查找到所述第一数据元素时,确定所述当前子链表中第一数据结点,并在当前子链表的下一级子链表中,确定所述第一数据结点的第一指针指向的第二数据结点;
从所述第二数据结点开始,在当前子链表的下一级子链表进行查找,直至查找到所述第一数据元素或完成对所述目标数据链表中多级子链表查找。
可选地,还包括:
在查找到所述第一数据元素的情况下,从存储所述第一数据元素的数据结点开始,查找满足所述数据查找请求中数据元素条件的第二数据元素。
可选地,所述最下级子链表为双向链表,除最下级子链表外的其他子链表还具有指向前驱数据结点的第二指针和用于指向后继数据结点的第三指针。
可选地,每级子链表中前后两个数据结点存储的数据元素为按照顺序排序的,所述第一数据结点为满足以下条件的数据结点:
数据结点存储的数据元素排序在所述第一数据元素之前;
且,数据结点的第三指针指向的数据结点存储的数据元素排序在所述第一数据元素之后或数据结点的第三指针指向的数据结点为空。
可选地,每个数据链表对应一状态值,所述根据查找的结果,向用户进行反馈,包括:
在存在多个目标数据链表的情况下,确定查找到所述第一数据元素的第一数据链表,并确定所述第一数据链表对应的第一状态值;
向用户反馈所述第一状态值。
可选地,每个数据链表对应一状态值,在所述按照级别顺序对目标数据链表中多级子链表进行查找,直至查找到所述第一数据元素或完成对所述目标数据链表中多级子链表查找之前,还包括:
根据所述数据查找请求,确定第二状态值;
根据所述第二状态值,确定目标数据链表。
可选地,所述根据查找的结果,向用户进行反馈,包括:
向用户反馈所述第二数据元素。
可选地,每个数据链表对应一状态值,且,存储在所述状态值对应的数组中。
可选地,所述一个或多个数据链表中数据结点存储的数据元素包括时序信息。
一种数据处理的装置,所述装置包括:
数据链表预置模块,用于预置一个或多个数据链表;其中,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,所述第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同;
数据查找请求接收模块,用于接收用户提交的数据查找请求;
查找和反馈模块,用于根据所述数据查找请求,在所述一个或多个数据链表中进行查找,并根据查找的结果,向用户进行反馈。
一种计算处理设备,包括:
存储器,其中存储有计算机可读代码;
一个或多个处理器,当所述计算机可读代码被所述一个或多个处理器执行时,所述计算处理设备执行如上所述的数据处理的方法。
一种计算机程序,其特征在于,包括计算机可读代码,当所述计算机可读代码在计算处理设备上运行时,导致所述计算处理设备执行根据上的数据处理的方法。
一种计算机可读介质,其中存储了如上所述的计算机程序。
在本发明实施例中,通过预置一个或多个数据链表,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,所述第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同,在接收到用户提交的数据查找请求时,根据数据查找请求,在一个或多个数据链表中进行查找,并根据查找的结果,向用户进行反馈,实现了基于数据链表的跳表的数据存储和查询,既不需要申请连续的内存,也降低了数据查询的时间复杂度,提升查询效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种数字信号处理系统的架构图;
图2是本发明一实施例提供的一种数据处理的方法的步骤流程图;
图3是本发明一实施例提供的一种基于双向链表的跳表的示意图;
图4是本发明一实施例提供的另一种数据处理的方法的步骤流程图;
图5是本发明一实施例提供的一种数组存储的示意图;
图6是本发明一实施例提供的一种Cycle值和PC值的关系示意图;
图7是本发明一实施例提供的另一种数据处理的方法的步骤流程图;
图8是本发明一实施例提供的一种Cycle值查找的步骤流程图;
图9是本发明一实施例提供的另一种数据处理的方法的步骤流程图;
图10是本发明一实施例提供的一种数据处理的装置的结构框图;
图11是本发明一实施例提供的一种用于执行根据本发明的方法的计算处理设备的结构框图;
图12是本发明一实施例提供的一种用于保持或者携带实现根据本发明的方法的程序代码的存储单元的结构框图。
具体实施例
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在数字信号处理(DSP,Digital Signal Processing)系统中,如图1,包括硬件系统和软件系统,软件系统包括模拟器(Simulator)和工具链。
其中,模拟器可以用于模拟硬件系统的行为,对模拟器的开发优先于硬 件系统,其能够对数字信号处理系统进行更好的建模。
工具链可以包括编译器(Compiler)和集成开发环境(IDE,Integrated Development Environment),编译器可以用于将C代码、汇编代码编译成机器语言,集成开发环境可以用于提供图形化的编程界面,在该界面中可以实现工程的创建、编译、调试、性能分析等功能。
在使用集成开发环境开发软件代码时,集成开发环境需要依赖编译器来编译工程,并需要依赖模拟器来调试工程,以及进行性能分析。
在进行性能分析时,模拟器可以将其各个组成(Component)模块在不同时序下的状态值(工作状态)、不同时序下的指令信息进行统计、压缩,然后写入文件,集成开发环境可以获得模拟器生产的文件,将文件中的内容解压缩,然后将解压缩后的内容以图形化的方式显示给用户,进而使得用户可以根据显示的信息优化代码,提高代码的并行度,减少代码的运行时间。
其中,时序信息可以为Cycle值,Cycles值是度量时间的一种方式,Cycle值以1为步长单调递增,Cycles值的取值范围为0-4294967295。
指令信息可以为PC(Program Counter,指令计数器)值,PC值为程序指针,在一定的时序范围内,PC值是以1为步长单调递增的,PC值的取值范围为0-4294967295。
模拟器的组成模块是数字信号处理系统中的执行单元,如组成模块可以包括精简指令集(Risc,Reduced instruction set computer)、矢量执行单元(VEU,Vector Execution Unit)、矢量浮点处理单元(VFPU,Vector Float Process Unit)、内存(Memory)。
组成模块的状态值可以包括正在运行状态(Process)、空闲状态(Idle)、正在读数据状态(Read)、正在写数据状态(Write),具体的,可以采用数值0表征正在运行状态、采用数值1表征空闲状态、采用数值2表征正在读数据状态、采用数值3表征正在写数据状态。
具体的,模拟器可以对每个Cycle值下的PC值、每个Cycle值下的各个组成模块的状态值进行统计,如下表1所示:
其中,每个组成模块下的数字0、1、2、3表征其工作状态。
Cycles PC Risc VEU VFPU Memory
0 0 0 2 2 1
1 1 1 3 2 1
2 2 1 3 2 1
3 3 1 3 2 2
... ... ... ... ... ...
500 101 0 0 1 3
501 102 0 0 1 3
... ... ... ... ... ...
表1
由于模拟器生成压缩文件的大小随着程序代码的增加而增加,当程序代码很大时生成的压缩文件也很大,相应的解压后的数据也很大,当集成开发环境中的分析器(Profiler)进行代码性能分析时,需要显示的数据也很多,只将解压后的数据以图像化的方式展现给用户是远远不够的,海量数据将导致用户不能快捷、准确地定位出工作状态等信息。
在实际应用中,可以采用以下方式在解压后的数据中快速查找用户指定的工作状态、指定的PC值等数据:
方式一:将数据(如状态值、PC值)保存在数组中,数组的下标为Cycles值,则能够快速地根据Cycles值查找状态值和PC值,但采用这种方式,根据Cycles值下标进行查找的时间复杂度为O(1),其余的查找方式的时间复杂度为O(n),时间复杂度高,且使用数组保存数据时需要申请一片连续的内存(O()为用于计算时间复杂度的函数,O(1)表征时间复杂度较低,O(n)表征时间复杂度较高)。
方式二:将数据(如状态值、PC值及Cycles值)保存在数据链表中,采用这种方式不需要申请连续的内存空间,但是查找状态值和PC值的时间复杂度是O(n),时间复杂度高。
方式三:将数据(如状态值、PC值及Cycles值)保存到哈希表中,使用链表法规避哈希碰撞。采用这种方式不需要申请连续的内存空间,但是查找状态值和PC值的时间复杂度是O(n),时间复杂度高。
可见,上述方法既不能同时满足在存储书时不需要申请连续的内存空间,且,以较低的时间复杂度实现查找功能。
基于此,本发明实施例提供了基于双向链表的跳表,对于状态值,可以 使用数组与基于双向链表的跳表组合进行存储,对于指令信息(PC值),可以对单调递增区间中的数据封装后存储到基于双向链表的跳表中,实现了不需要申请连续的内存,且在进行数据查找时,由于基于双向链表的跳表的特性,又能以O(logn)的时间复杂度查询数据,时间复杂度低。
以下进行详细说明:
参照图2,示出了本发明一实施例提供的一种数据处理的方法的步骤流程图,具体可以包括如下步骤:
步骤201,预置一个或多个数据链表;其中,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同;
为了避免采用单向链表、双向链表进行数据存储的情况下数据查询的时间复杂度较高的问题,可以建立基于数据链表的跳表。
具体的,基于数据链表的跳表可以设置多级子链表,最下级子链表为原始链表,从最下级子链表的原始链表开始,可以将每两个数据结点提取一个数据结点到上一级子链表,上一级子链表可以作为对下一级子链表中数据结点的索引,进而得到多级子链表,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量。
而且,对于提取到上一级子链表的数据结点,其可以具有指向下一级子链表中数据结点的第一指针,即Down指针,且每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同。
在一示例中,最下级子链表可以为双向链表,即原始链表为双向链表,双向链表中的数据结点具有记录上一个数据结点的地址的前继指针,即prev指针,还具有记录下一个数据结点地址的后继指针,即next指针。
如图3,原始链表作为最下级子链表,将原始链表中每两个数据结点提取一个数据结点到上一级子链表,再将上一级子链表中每两个数据结点提取一个数据结点到其的上一级子链表,以此类推,上一级子链表可以作为对下一级子链表中数据结点的索引,进而可以到如图3 中第一级索引、第二级索引、第三级索引。
在一示例中,由于最下级子链表为双向链表,除最下级子链表外的其他子链表还可以具有指向前驱数据结点的第二指针,即prev指针,还可以具有于指向后继数据结点的第三指针,即next指针,也即是其为在双向链表的基础上增加了指向下一级子链表中数据结点的指针。
步骤202,接收用户提交的数据查找请求;
在需要进行数据查询时,用户可以提交数据查询请求。
步骤203,根据数据查找请求,在一个或多个数据链表中进行查找,并根据查找的结果,向用户进行反馈。
在接收到数据查询请求的情况下,可以在一个或多个数据链表中进行查找满足数据查询请求的数据,并可以根据查询到结果,向用户进行反馈,如反馈是否查询到数据、查询到的数据是什么。
在一示例中,由于一个或多个数据链表可以为基于双向链表的跳表,对于双向链表,相对于单向链表占用更多的内存空间,但可支持双向遍历,带来了更多的灵活性,当双向链表中保存的数据大量增加时,查询的时间复杂度仍然很大,其查找数据只能从头到尾遍历,或从尾到头遍历,其时间复杂度为O(n),而基于双向链表的跳表既能保持双向遍历的灵活性,又能减少查询的时间复杂度,其时间复杂度O(logn),数据查询的时间复杂度明显降低。
在本发明一实施例中,根据数据查找请求,在一个或多个数据链表中进行查找,可以包括如下子步骤:
子步骤11,根据数据查找请求,确定待查找的第一数据元素;
在实际应用中,数据链表中可以存储大量的数据,在接收到数据查询请求后,可以从数据查询请求中,确定待查找的第一数据元素。
子步骤12,按照级别顺序对目标数据链表中多级子链表进行查找,直至查找到第一数据元素或完成对目标数据链表中多级子链表查找;
由于多级子链表具有级别顺序,上一级子链表可以作为下一级子链表的索引,则在确定待查找的第一数据元素后,可以按照级别顺序,先在上级子链表中进行查找,在上级子链表中未查找到第一数据元素的情况下,再往下级子链表中进行查找,直到在某个子链表中查找到第一数据元素则停止查找,或者,将所有的子链表全部查找完。
在本发明实施例中,通过预置一个或多个数据链表,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同,在接收到用户提交的数据查找请求时,根据数据查找请求,在一个或多个数据链表中进行查找,并根据查找的结果,向用户进行反馈,实现了基于数据链表的跳表的数据存储和查询,既不需要申请连续的内存,也降低了数据查询的时间复杂度,提升查询效率。
参照图4,示出了本发明一实施例提供的一种数据处理的方法的步骤流程图,具体可以包括如下步骤:
步骤401,预置一个或多个数据链表;其中,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同;
在一示例中,数据链表中数据结点存储的数据元素可以包括时序信息,如时序信息可以为Cycle值,Cycle值以1为步长单调递增,Cycles的取值范围为0-4294967295。
由于在不同的时序下模拟器中组成模块有对应的工作状态,为了实现对不同时序下的状态值(工作状态)的存储,可以设置每个数据链表对应一状态值,如采用数值0表征正在运行状态、采用数值1表征空闲状态、采用数值2表征正在读数据状态、采用数值3表征正在写数据状态,并将数据链表可以存储在状态值对应的数组中。
具体的,可以对于每种类型的状态值建立一数组,在每个数组下设置一个数据链表,该数据链表中存储同一类型的状态值对应的时序信息
如图5,存在状态值0、1、2、3,分别为每种类型的状态值申请一个长度为4的数组a[0]、a[1]、a[2]、a[3],数组中存储基于双向链表的跳表,当解析到组成模块的状态值为0,则向数组a[0]添加当前的Cycle值,当解析到组成模块的状态值为1,则向数组a[1]添加当前的Cycle值,以此类推。
在一示例中,数据链表中数据结点存储的数据元素可以包括时序 信息和指令信息封装的对象,如时序信息可以为Cycle值,Cycle值以1为步长单调递增,Cycles的取值范围为0-4294967295,指令信息可以为PC值,在一定的时序范围内,PC值是以1为步长单调递增的,PC值的取值范围为0-4294967295。
由于在不同的时序下模拟器中组成模块有对应的指令信息,为了实现对不同时序下的指令信息的存储,对于单调递增区间中指令信息,可以将其与时序信息封装为一个对象保存在数据链表中。
如图6,Cycle值为0-20之间的PC值,其中,Cycle值在0到8、9到20这两个区间里PC值是单调递增的,则可以把Cycle值为0到8之间的Cycle值和PC值封装为一个对象,并保存到基于双向链表的跳表中,将Cycle值为9到20之间的Cycle值和PC值封装为另一个对象,保存到基于双向链表的跳表中。
步骤402,接收用户提交的数据查找请求;
步骤403,根据数据查找请求,确定待查找的第一数据元素;
步骤404,从目标数据链表中最上级子链表开始进行查找;
对于不同时序下的状态值(工作状态),由于针对不同类型的状态值建立了不同的数组,且每个数组具有至少一个数据链表,则其存在有多个数据链表,在存在多个数据链表的情况下,可以根据数据查找请求,从多个数据链表中确定待查找的目标数据链表,如根据数据查找请求中指定的状态值,确定状态值对应的数组,进而可以确定该数组中的数据链表为目标数据链表。
对于不同时序下的指令信息,由于是将单调递增区间中指令信息与时序信息封装为一个对象保存在数据链表中,其可以仅存在一个数据链表(也可以为了避免数据量过大划分为多个数据链表,但其本质可以作为一个数据链表),在仅存在一个数据链表的情况下,则可以直接将该数据链表作为目标数据链表。
在确定目标数据链表后,可以从目标数据链表中最上级子链表开始依次对多级子链表进行查找,直到在某个子链表中查找到第一数据元素则停止查找,或者,将所有的子链表全部查找完。
步骤405,在目标数据链表中当前子链表中未查找到第一数据元素时,确定当前子链表中第一数据结点,并在当前子链表的下一级子链表中,确定第一数据结点的第一指针指向的第二数据结点;
当在某个子链表(称为当前子链表)进行查找时,若未查找到第一数据元素时,则可以从当前子链表中确定第一数据结点,由于第一数据结点中的第一指针指向下一级子链表中数据结点,则可以根据第一数据结点的第一指针,确定下一级子链表中的第二数据结点,进而可以进入当前子链表的下一级子链表进行查找。
步骤406,从第二数据结点开始,在当前子链表的下一级子链表进行查找,直至查找到第一数据元素或完成对目标数据链表中多级子链表查找;
在确定第二数据结点后,可以进一步从第二数据结点开始,在当前子链表的下一级子链表进行查找,以此类推,直到在某个子链表中查找到第一数据元素则停止查找,或者,将所有的子链表全部查找完。
实际上,一个或多个数据链表中数据结点存储的存储的数据元素具有一定的顺序性,例如,数据结点存储的数据元素可以包括时序信息,如Cycle值,其具有时序先后顺序,则每级子链表中前后两个数据结点存储的数据元素为按照顺序排序的,如每级子链表中前后两个数据结点存储的数据元素为按照时序先后的顺序排序的。
相应地,第一数据结点可以为满足以下条件的数据结点:
数据结点存储的数据元素排序在第一数据元素之前;且,数据结点的第三指针指向的数据结点存储的数据元素排序在第一数据元素之后或数据结点的第三指针指向的数据结点为空。
其中,第三指针为用于指向后继数据结点的指针,即Down指针。
如图3,数据结点中存储的数据元素为Cycle值,当需要查找值为Cycle值为8的数据结点时,先从第三级索引(即最上级子链表)开始遍历,第三级索引中不具有存储Cycle值为8的数据结点,而Cycle值为1排序在Cycle值为8之前,且其next指针(即第三指针)指向的数据结点存储的Cycle值为9,排序在Cycle值为8之后,则确定存储Cycle值为1的数据结点即为第一数据结点。
由第三级索引中存储Cycle值为1的第一数据结点的Down指针(即第一指针),确定其指向的第二级索引(即下一级子链表)中第二数据结点为存储Cycle值为1的数据结点,第二级索引中不具有存储Cycle值为8的数据结点,以此类推,确定第一数据结点为存储Cycle 值为5的数据结点。
由第二级索引中存储Cycle值为5的数据结点的Down指针(即第一指针),确定其指向的第一级索引(即下一级子链表)中第二数据结点为存储Cycle值为5的数据结点,第一级索引中不具有存储Cycle值为8的数据结点,以此类推,确定第一数据结点为存储Cycle值为7的数据结点。
由第一级索引中存储Cycle值为7的数据结点的Down指针(即第一指针),确定其指向的原始链表(即最下级子链表)中第二数据结点为存储Cycle值为7的数据结点,存储Cycle值为7的数据结点的下一数据结点即为存储Cycle值为8的数据结点,即查找到存储Cycle值为8的数据结点。
在本发明一实施例中,还可以包括如下步骤:
在查找到第一数据元素的情况下,从存储第一数据元素的数据结点开始,查找满足数据查找请求中数据元素条件的第二数据元素。
实际上,部分数据查找请求仅仅需要查找到第一数据元素即可。
例如,在存储的数据元素为Cycle值时,数据查找请求中第一数据元素为指定Cycle值,其要查找指定Cycle值对应的状态值,即在查找到指定Cycle值,确定存储该Cycle值的数据链表对应的状态值。
又如,在存储的数据元素为Cycle值和PC值封装的对象时,数据查找请求中第一数据元素为指定Cycle值,其要查找指定Cycle值对应的PC值,即在查找到指定Cycle值,确定该Cycle值对应的PC值。
另外,还有部分数据查找请求,在查找到第一数据元素的基础上,还指定了数据元素条件,即在查找到第一数据元素的基础上,可以进一步用数据元素条件从中筛选符合条件的第二数据元素。
作为一示例,该数据查找请求可以包括以下几种:
1、从当前选中的Cycle值向前查找指定PC值,即在选中某个Cycle值后(即查找到第一数据元素),进一步在小于选中Cycle值的Cycle值中,查找指定PC值(即预设元素条件);
2、从当前选中的Cycle值向后查找指定PC值,即在选中某个Cycle值后(即查找到第一数据元素),进一步在大于选中Cycle值的Cycle值中,查找指定PC值(即预设元素条件);
3、从指定的Cycle值范围(待查找的第一数据元素可以为指定的Cycle值范围的边界值)内指定PC值,即在查找到某个Cycle值后(即查找到第一数据元素),在指定的Cycle值范围的Cycle值中,查找指定PC值(即预设元素条件)。
步骤407,根据查找的结果,向用户进行反馈。
参照图7,示出了本发明一实施例提供的一种数据处理的方法的步骤流程图,具体可以包括如下步骤:
步骤701,预置一个或多个数据链表;其中,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同;
步骤702,接收用户提交的数据查找请求;
步骤703,根据数据查找请求,确定待查找的第一数据元素;
步骤704,按照级别顺序对目标数据链表中多级子链表进行查找,直至查找到第一数据元素或完成对目标数据链表中多级子链表查找;
步骤705,在存在多个目标数据链表的情况下,确定查找到第一数据元素的第一数据链表,并确定第一数据链表对应的第一状态值;其中,每个数据链表对应一状态值;
对于不同时序下的状态值(工作状态),由于针对不同类型的状态值建立了不同的数组,且每个数组具有至少一个数据链表,则其存在有多个数据链表,在存在多个数据链表的情况下,可以根据数据查找请求,从多个数据链表中确定待查找的目标数据链表。
对于部分数据查找请求,其需要获得第一数据元素对应的状态值,如查找指定时序下的状态值,不确定待查找的第一数据元素在哪个数据链表中,则其需要确定多个目标数据链表,如图8,可以依次在状态值为0、1、2、3的数据链表中查找是否存在指定Cycle值。
在查找到第一数据元素后,可以确定查找到第一数据元素的第一数据链表,进而可以确定第一数据链表对应的第一状态值。
步骤706,向用户反馈第一状态值。
由于该类的数据查询请求,其本质是为了查找第一数据元素对应的状态值,则在确定第一数据元素所在的第一数据链表后,可以确定第一数据链表所存储的数组,进而确定数组对应的第一状态值,向用户反馈第一状态值。
参照图9,示出了本发明一实施例提供的一种数据处理的方法的步骤流程图,具体可以包括如下步骤:
步骤901,预置一个或多个数据链表;其中,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同;
步骤902,接收用户提交的数据查找请求;
步骤903,根据数据查找请求,确定待查找的第一数据元素;
步骤904,根据数据查找请求,确定第二状态值;其中,每个数据链表对应一状态值;
对于部分数据查找请求,其在指定待查找的第一数据元素的基础上,还指定了第二状态,即只筛选状态值为第二状态值的数据元素。
步骤905,根据第二状态值,确定目标数据链表;
由于针对不同类型的状态值建立了不同的数组,且每个数组具有至少一个数据链表,在确定第二状态值后,可以根据第二状态值,确定其对应的数组的索引,进而可以确定数据中存储的数据链表为目标数据链表。
步骤906,按照级别顺序对目标数据链表中多级子链表进行查找,直至查找到第一数据元素或完成对目标数据链表中多级子链表查找;
步骤907,在查找到第一数据元素的情况下,从存储第一数据元素的数据结点开始,查找满足数据查找请求中数据元素条件的第二数据元素;
对于部分数据查找请求,其在指定待查找的第一数据元素和第二状态值的基础上,还指定了数据元素条件,即在第二状态值对应的数据链表中查找到第一数据元素的基础上,可以进一步用数据元素条件从中筛选符合条件的第二数据元素。
作为一示例,该数据查找请求可以包括以下几种:
1、从当前选中Cycle值处向前查找指定的状态值(即第二状态值),即即在选中某个Cycle值后(即查找到第一数据元素),进一步在小于选中Cycle值的Cycle值中,查找具有指定的状态值的Cycle值(即预设元素条件);
2、从当前选中Cycle值处向后查找指定的状态值(即第二状态值),即在选中某个Cycle值后(即查找到第一数据元素),进一步在大于选中Cycle值的Cycle值中,查找具有指定的状态值的Cycle值(即预设元素条件);
3、从指定的Cycle值范围(待查找的第一数据元素可以为指定的Cycle值范围的边界值)内查找指定的状态值(即第二状态值),即在查找到某个Cycle值后(即查找到第一数据元素),在指定的Cycle值范围的Cycle值中,查找具有指定的状态值的Cycle值(即预设元素条件)。
步骤908,向用户反馈第二数据元素。
由于该类的数据查询请求,其本质是为了查找符合条件的第二数据元素,则在获得第二数据元素后,可以向用户反馈第二数据元素。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图10,示出了本发明一实施例提供的一种数据处理的装置的结构示意图,具体可以包括如下模块:
数据链表预置模块1001,用于预置一个或多个数据链表;其中,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据 元素相同;
数据查找请求接收模块1002,用于接收用户提交的数据查找请求;
查找和反馈模块1003,用于根据数据查找请求,在一个或多个数据链表中进行查找,并根据查找的结果,向用户进行反馈。
在本发明一实施例中,查找和反馈模块1003,包括:
第一数据元素确定子模块,用于根据数据查找请求,确定待查找的第一数据元素;
按照级别顺序查找子模块,用于按照级别顺序对目标数据链表中多级子链表进行查找,直至查找到第一数据元素或完成对目标数据链表中多级子链表查找。
在本发明一实施例中,按照级别顺序查找子模块,包括:
最上级子链表开始查找单元,用于从目标数据链表中最上级子链表开始进行查找;
当前子链表查找单元,用于在目标数据链表中当前子链表中未查找到第一数据元素时,确定当前子链表中第一数据结点,并在当前子链表的下一级子链表中,确定第一数据结点的第一指针指向的第二数据结点;
下一级子链表查找单元,用于从第二数据结点开始,在当前子链表的下一级子链表进行查找,直至查找到第一数据元素或完成对目标数据链表中多级子链表查找。
在本发明一实施例中,还包括:
数据元素条件查找模块,用于在查找到第一数据元素的情况下,从存储第一数据元素的数据结点开始,查找满足数据查找请求中数据元素条件的第二数据元素。
在本发明一实施例中,最下级子链表为双向链表,除最下级子链表外的其他子链表还具有指向前驱数据结点的第二指针和用于指向后继数据结点的第三指针。
在本发明一实施例中,每级子链表中前后两个数据结点存储的数据元素为按照顺序排序的,第一数据结点为满足以下条件的数据结点:
数据结点存储的数据元素排序在第一数据元素之前;
且,数据结点的第三指针指向的数据结点存储的数据元素排序在第一数据元素之后或数据结点的第三指针指向的数据结点为空。
在本发明一实施例中,每个数据链表对应一状态值,查找和反馈模块1003,包括:
第一状态值确定子模块,用于在存在多个目标数据链表的情况下,确定查找到第一数据元素的第一数据链表,并确定第一数据链表对应的第一状态值;
第一状态值反馈子模块,用于向用户反馈第一状态值。
在本发明一实施例中,每个数据链表对应一状态值,还包括:
第二状态值确定模块,用于根据数据查找请求,确定第二状态值;
目标数据链表确定模块,用于根据第二状态值,确定目标数据链表。
在本发明一实施例中,查找和反馈模块1003,包括:
第二数据元素反馈子模块,用于向用户反馈第二数据元素。
在本发明一实施例中,每个数据链表对应一状态值,且,存储在状态值对应的数组中。
在本发明一实施例中,一个或多个数据链表中数据结点存储的数据元素包括时序信息。
在本发明实施例中,通过预置一个或多个数据链表,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同,在接收到用户提交的数据查找请求时,根据数据查找请求,在一个或多个数据链表中进行查找,并根据查找的结果,向用户进行反馈,实现了基于数据链表的跳表的数据存储和查询,既不需要申请连续的内存,也降低了数据查询的时间复杂度,提升查询效率。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的计算处理设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
例如,图11示出了可以实现根据本发明的方法的计算处理设备。该计算处理设备传统上包括处理器1110和以存储器1120形式的计算机程序产品或者计算机可读介质。存储器1120可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。存储器1120具有用于执行上述方法中的任何方法步骤的程序代码1131的存储空间1130。例如,用于程序代码的存储空间1130可以包括分别用于实现上面的方法中的各种步骤的各个程序代码1131。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为如参考图12所述的便携式或者固定存储单元。该存储单元可以具有与图11的计算处理设备中的存储器1120类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元包括计算机可读代码1131’,即可以由例如诸如1110之类的处理器读取的代码,这些代码当由计算处理设备运行时,导致该计算处理设备执行上面所描述的方法中的各个步骤。
本文中所称的“一个实施例”、“实施例”或者“一个或者多个实施例”意味着,结合实施例描述的特定特征、结构或者特性包括在本发明的至少一个实施例中。此外,请注意,这里“在一个实施例中”的词语例子不一定全指同一个实施例。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (15)

  1. 一种数据处理的方法,其特征在于,所述方法包括:
    预置一个或多个数据链表;其中,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,所述第一指针用于指向下一级子链表中数据结点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同;
    接收用户提交的数据查找请求;
    根据所述数据查找请求,在所述一个或多个数据链表中进行查找,并根据查找的结果,向用户进行反馈。
  2. 根据权利要求1所述的方法,其特征在于,所述根据所述数据查找请求,在所述一个或多个数据链表中进行查找,包括:
    根据所述数据查找请求,确定待查找的第一数据元素;
    按照级别顺序对目标数据链表中多级子链表进行查找,直至查找到所述第一数据元素或完成对所述目标数据链表中多级子链表查找。
  3. 根据权利要求2所述的方法,其特征在于,所述按照级别顺序对目标数据链表中多级子链表进行查找,直至查找到所述第一数据元素或完成对所述目标数据链表中多级子链表查找,包括:
    从目标数据链表中最上级子链表开始进行查找;
    在所述目标数据链表中当前子链表中未查找到所述第一数据元素时,确定所述当前子链表中第一数据结点,并在当前子链表的下一级子链表中,确定所述第一数据结点的第一指针指向的第二数据结点;
    从所述第二数据结点开始,在当前子链表的下一级子链表进行查找,直至查找到所述第一数据元素或完成对所述目标数据链表中多级子链表查找。
  4. 根据权利要求3所述的方法,其特征在于,还包括:
    在查找到所述第一数据元素的情况下,从存储所述第一数据元素的数据结点开始,查找满足所述数据查找请求中数据元素条件的第二数据元素。
  5. 根据权利要求3或4所述的方法,其特征在于,所述最下级子链表为双向链表,除最下级子链表外的其他子链表还具有指向前驱数 据结点的第二指针和用于指向后继数据结点的第三指针。
  6. 根据权利要求5所述的方法,其特征在于,每级子链表中前后两个数据结点存储的数据元素为按照顺序排序的,所述第一数据结点为满足以下条件的数据结点:
    数据结点存储的数据元素排序在所述第一数据元素之前;
    且,数据结点的第三指针指向的数据结点存储的数据元素排序在所述第一数据元素之后或数据结点的第三指针指向的数据结点为空。
  7. 根据权利要求1-3任一项所述的方法,其特征在于,每个数据链表对应一状态值,所述根据查找的结果,向用户进行反馈,包括:
    在存在多个目标数据链表的情况下,确定查找到所述第一数据元素的第一数据链表,并确定所述第一数据链表对应的第一状态值;
    向用户反馈所述第一状态值。
  8. 根据权利要求4所述的方法,其特征在于,每个数据链表对应一状态值,在所述按照级别顺序对目标数据链表中多级子链表进行查找,直至查找到所述第一数据元素或完成对所述目标数据链表中多级子链表查找之前,还包括:
    根据所述数据查找请求,确定第二状态值;
    根据所述第二状态值,确定目标数据链表。
  9. 根据权利要求8所述的方法,其特征在于,所述根据查找的结果,向用户进行反馈,包括:
    向用户反馈所述第二数据元素。
  10. 根据权利要求1所述的方法,其特征在于,每个数据链表对应一状态值,且,存储在所述状态值对应的数组中。
  11. 根据权利要求1所述的方法,其特征在于,所述一个或多个数据链表中数据结点存储的数据元素包括时序信息。
  12. 一种数据处理的装置,其特征在于,所述装置包括:
    数据链表预置模块,用于预置一个或多个数据链表;其中,每个数据链表由多级子链表构成,上一级子链表中数据结点的数量少于下一级子链表中数据结点的数量,除最下级子链表外的其他子链表中数据结点具有第一指针,所述第一指针用于指向下一级子链表中数据结 点,每个数据结点与其所具有的第一指针指向的数据结点存储的数据元素相同;
    数据查找请求接收模块,用于接收用户提交的数据查找请求;
    查找和反馈模块,用于根据所述数据查找请求,在所述一个或多个数据链表中进行查找,并根据查找的结果,向用户进行反馈。
  13. 一种计算处理设备,其特征在于,包括:
    存储器,其中存储有计算机可读代码;
    一个或多个处理器,当所述计算机可读代码被所述一个或多个处理器执行时,所述计算处理设备执行如权利要求1-11中任一项所述的数据处理的方法。
  14. 一种计算机程序,其特征在于,包括计算机可读代码,当所述计算机可读代码在计算处理设备上运行时,导致所述计算处理设备执行根据权利要求1-11中任一项所述的数据处理的方法。
  15. 一种计算机可读介质,其特征在于,其中存储了如权利要求14所述的计算机程序。
PCT/CN2021/115670 2021-08-31 2021-08-31 一种数据处理的方法、装置、设备、程序及介质 WO2023028833A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/115670 WO2023028833A1 (zh) 2021-08-31 2021-08-31 一种数据处理的方法、装置、设备、程序及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/115670 WO2023028833A1 (zh) 2021-08-31 2021-08-31 一种数据处理的方法、装置、设备、程序及介质

Publications (1)

Publication Number Publication Date
WO2023028833A1 true WO2023028833A1 (zh) 2023-03-09

Family

ID=85410697

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/115670 WO2023028833A1 (zh) 2021-08-31 2021-08-31 一种数据处理的方法、装置、设备、程序及介质

Country Status (1)

Country Link
WO (1) WO2023028833A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252421A (ja) * 2005-03-14 2006-09-21 Seagate Technology Llc 適応マッピング
CN110138661A (zh) * 2019-04-02 2019-08-16 天津大学 基于神经网络的命名数据网内容存储池
CN113065964A (zh) * 2021-04-13 2021-07-02 上证所信息网络有限公司 一种采用可变步长跳表的数据存储系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252421A (ja) * 2005-03-14 2006-09-21 Seagate Technology Llc 適応マッピング
CN110138661A (zh) * 2019-04-02 2019-08-16 天津大学 基于神经网络的命名数据网内容存储池
CN113065964A (zh) * 2021-04-13 2021-07-02 上证所信息网络有限公司 一种采用可变步长跳表的数据存储系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Master Thesis", 1 May 2011, XI'AN UNIVERSITY OF ARCHITECTURE AND TECHNOLOGY, CN, article GAO, SONG: "Study of Mass Storage Security System Framework and Fast Location Algorithm", pages: 1 - 58, XP009543986 *

Similar Documents

Publication Publication Date Title
US10114908B2 (en) Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data
US9712646B2 (en) Automated client/server operation partitioning
US9983978B1 (en) Querying an indexed time-travel trace
CN107239392B (zh) 一种测试方法、装置、终端及存储介质
US9940369B1 (en) Searching an indexed time-travel trace
US20190220387A1 (en) Unexplored branch search in hybrid fuzz testing of software binaries
US9823911B2 (en) Method and apparatus for compiling code based on a dependency tree
WO2018164975A1 (en) Indexing a trace by insertion of reverse lookup data structures
US20080288529A1 (en) System to organize data for visualizing performance characteristics in dynamic perspectives using relational database
US9195730B2 (en) Verifying correctness of a database system via extended access paths
US20200125584A1 (en) Reorganization of partition by growth space with lob columns
US8037058B2 (en) Reducing access time for data in file systems when seek requests are received ahead of access requests
US9959215B2 (en) Efficient address-to-symbol translation of stack traces in software programs
US20170091070A1 (en) Identifying and visualizing suboptimal memory layouts in software programs
Lim et al. Lazy and eager approaches for the set cover problem
WO2023028833A1 (zh) 一种数据处理的方法、装置、设备、程序及介质
CN109918074B (zh) 编译链接优化方法
US7096462B2 (en) System and method for using data address sequences of a program in a software development tool
US20130097357A1 (en) Method for identifying memory of virtual machine and computer system thereof
CN110119351B (zh) 一种测试用例执行方法及装置
Das Principles of data structures using C and C++
US10642876B1 (en) Query processing pipeline for semi-structured and unstructured data
US8296336B2 (en) Techniques for efficient dataloads into partitioned tables using swap tables
US8983979B2 (en) Controlling access to stored information
CN110750251B (zh) 读写通信方法、读写器装置及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21955401

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE