CN114443044A - 数据处理方法和装置、电子设备、存储介质 - Google Patents
数据处理方法和装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN114443044A CN114443044A CN202111597952.2A CN202111597952A CN114443044A CN 114443044 A CN114443044 A CN 114443044A CN 202111597952 A CN202111597952 A CN 202111597952A CN 114443044 A CN114443044 A CN 114443044A
- Authority
- CN
- China
- Prior art keywords
- queue
- access
- random
- elements
- access speed
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
- G06F8/434—Pointers; Aliasing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据处理方法和装置、电子设备、存储介质,该方法包括:获取待插入至第一元素之后的第二元素,第一元素位于容器中保存的元素队列的队尾,第一元素具有H个随机指针,H为大于1的自然数;在对元素队列中元素的访问速度未发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素;在对元素队列中元素的访问速度发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素。本申请解决了相关技术中由于数据量较大造成随机下标访问的访问效率较低的技术问题。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理方法和装置、电子设备、存储介质。
背景技术
随着大数据时代的蓬勃发展,区块链技术在数据存储上的应用日益广泛。现阶段在区块链上进行类似变长数组的存储一般依赖智能合约,随机下标访问可以在合约内部用数组完成,但由于智能合约的固有缺陷,随着数据越来越大,访问的效率会越来越低。
针对上述由于数据量较大造成随机下标访问的访问效率较低的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供了一种数据处理方法和装置、电子设备、存储介质,以至少解决相关技术中由于数据量较大造成随机下标访问的访问效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种数据处理方法,包括:获取待插入至第一元素之后的第二元素,其中,第一元素位于容器中保存的元素队列的队尾,第一元素具有H个随机指针,第一元素的每个随机指针指向元素队列中的一个位于第一元素之前的元素,H为大于1的自然数;在对元素队列中元素的访问速度未发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素;在对元素队列中元素的访问速度发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素。
根据本申请实施例的另一方面,还提供了一种数据处理装置,包括:元素获取模块,用于获取待插入至第一元素之后的第二元素,其中,第一元素位于容器中保存的元素队列的队尾,第一元素具有H个随机指针,第一元素的每个随机指针指向元素队列中的一个位于第一元素之前的元素,H为大于1的自然数;第一插入模块,用于在对元素队列中元素的访问速度未发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素;第二插入模块,用于在对元素队列中元素的访问速度发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本申请实施例的另一方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法中任一实施例的步骤。
在本申请实施例中,采用获取待插入至第一元素之后的第二元素,其中,第一元素位于容器中保存的元素队列的队尾,第一元素具有H个随机指针,第一元素的每个随机指针指向元素队列中的一个位于第一元素之前的元素,H为大于1的自然数;在对元素队列中元素的访问速度未发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素;在对元素队列中元素的访问速度发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素的方式;通过为元素队列中每个元素设置指定数量的随机指针,进行随机下标访问,在访问速度发生下降的情况下,将下一个元素的随机指针设置为均匀分布的指针,改善随机化导致的性能下降,达到了加快访问速度的目的,进而解决了由于数据量较大造成随机下标访问的访问效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的数据处理方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的数据处理方法的流程图;
图3是根据本申请实施例的一种可选的数据处理装置的示意图;以及,
图4是根据本申请实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
容器:在本申请中,容器是指容纳、包含一组元素的对象。
元素队列:在本申请中,元素队列是相同类型数据的有序集合,按照一定的先后次序排列组合而成,其中,每一个数据称作一个元素,每个元素则可以通过一个索引(下标)来访问。
随机指针:在本申请中,每个元素所在的节点包含指定数量的随机指针,该指针可以指向元素队列中在该元素之前的元素所在的节点。
根据本申请实施例的一方面,提供了一种数据处理的方法实施例。
可选地,在本实施例中,上述数据处理方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供数据处理服务,可在服务器上或独立于服务器设置数据库105,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于PC、手机、平板电脑等。本申请实施例的数据处理方法可以由服务器103来执行,也可以由终端101来执行,还可以是由服务器103和终端101共同执行。其中,终端101执行本申请实施例的数据处理方法也可以是由安装在其上的客户端来执行。后续以在服务器上执行本申请实施例的一种数据处理方法为例进行说明。
图2是根据本申请实施例的一种可选的数据处理方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,服务器获取待插入至第一元素之后的第二元素,其中,第一元素位于容器中保存的元素队列的队尾,第一元素具有H个随机指针,第一元素的每个随机指针指向元素队列中的一个位于第一元素之前的元素,H为大于1的自然数;
步骤S204,在对元素队列中元素的访问速度未发生下降的情况下,服务器将第二元素插入至第一元素之后,并将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素;
步骤S206,在对元素队列中元素的访问速度发生下降的情况下,服务器将第二元素插入至第一元素之后,并将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素。
通过上述步骤S202至步骤S206,为每个元素设置指定数量的随机指针,进行随机下标访问,在访问速度发生下降的情况下,将下一个元素的随机指针设置为均匀分布的指针,改善随机化导致的性能下降,达到了加快访问速度的目的,进而解决了由于数据量较大造成随机下标访问的访问效率较低的技术问题。
在步骤S202提供的技术方案中,服务器获取待插入至第一元素之后的第二元素,其中,第一元素位于容器中保存的元素队列的队尾,第一元素具有H个随机指针,第一元素的每个随机指针指向元素队列中的一个位于第一元素之前的元素,H为大于1的自然数。
服务器可以在每一次插入元素时执行步骤S202,若插入第二元素前元素队列中的元素个数为L,则第一元素是元素队列中的第L个元素,L≤H时,第一元素具有的随机指针数量小于H,随机指针指向位于第L个元素之前的元素,可以包括第一元素的前一个元素,也可以不包括第一元素的前一个元素,因为不使用随机指针也可以在元素队列中实现一个元素对其前一个元素的访问。
例如,若元素队列中有4个元素,H=4,第一元素是元素队列中第4个元素,第一元素具有的H个随机指针可以是分别指向第1、2个元素的2个随机指针,也可以是分别指向第1、2、3个元素的3个随机指针。
服务器可以在元素队列的元素个数超过指定阈值时再开始执行步骤S202。每个元素具有的随机指针分别指向H个不同的元素。例如,服务器在元素队列中元素个数超过H时再开始执行步骤S202,H=9时,第一元素是元素队列中的第10个元素,第一元素具有9个随机指针,分别指向元素队列中第一元素之前的9个不同的元素。
在步骤S204提供的技术方案中,在对元素队列中元素的访问速度未发生下降的情况下,服务器将第二元素插入至第一元素之后,并将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素。
对元素队列中元素的访问速度可以根据多种方式确定,包括但不限于以下方式:①根据某一次访问的访问速度确定,例如,根据最近一次访问记录的访问速度确定;②根据多次访问的平均访问速度确定,例如,根据最近5次访问记录的平均访问速度确定。
访问速度是否发生下降可以采用多种判断方式,包括但不限于以下方式:①将访问时间在后的访问与访问时间在前的访问进行访问速度对比;②预设标准访问速度,当访问速度低于标准访问速度时,判断访问速度发生下降。
作为一种可选的实施例,服务器将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素,第二元素的H个随机指针中的每个指针指向元素队列中第N个元素,其中,N为不大于L的正整数,L为插入第二元素之前元素队列中的元素个数。
为了避免存储相同的随机指针,可以采用如下方式设置随机指针:以严格小于L的正整数为第一次取值范围(由于不使用随机指针也可以在元素队列中实现一个元素对其前一元素的直接访问,取值范围可以不包括L),随机从第一取值范围中取出1个值,并将剩余的值记录为第二次取值范围,再随机从第二取值范围中取出1个值,并将剩余的值记录为第二次取值范围……经过H次取值后得到H个不重复的严格小于L的正整数N1、N2……NH;将H个随机指针设置为分别指向元素队列中第N1、N2……NH个元素的随机指针。
在步骤S206提供的技术方案中,在对元素队列中元素的访问速度发生下降的情况下,服务器将第二元素插入至第一元素之后,并将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素。
作为一种可选的实施例,服务器将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素,第二元素的H个随机指针中的每个指针指向元素队列中第N个元素,其中,N=k*floor(L/H),k为正整数且k≤H,L为插入第二元素之前元素队列中的元素个数,floor(L/H)表示对L除以H的商向下取整。
在本实施例中,H个随机指针分别设置为指向元素队列中第N1、N2……NH个元素,floor(L/H)表示相邻随机指针指向的元素之间的间隔,例如,L=100,H=9,则floor(L/H)=11,H个随机指针分别设置为指向元素队列中第11、22、33、44、55、66、77、88、99个元素。
服务器确定N的取值可以采用包括但不限于N=k*floor(L/H)的运算方式,只要H个随机指针均匀指向元素队列中的元素即可。
作为一种可选的实施例,服务器可以按照如下方式访问元素队列中的元素:在需要访问元素队列中第i个元素的情况下,从元素队列中最后一个元素开始,在元素的H个随机指针中查找目标随机指针,其中,一个元素的H个随机指针中的每个指针指向元素队列中第N个元素,目标随机指针是H个随机指针中指向的元素最接近第i个元素、且不在第i个元素之前的随机指针;跳过元素队列中的部分元素访问目标随机指针指向的第j个元素,其中,j∈N、且j为不小于i的正整数;从目标随机指针指向的第j个元素开始,继续在元素的H个随机指针中查找目标随机指针,直至找到第i个元素。
例如,元素队列中有13个元素,H=3,现在需要访问第5个元素,若第13个元素的3个随机指针分别指向第4、8、12个元素,则按4、8、12从小到大的顺序找到第一个不小于5的值,得到目标随机指针是指向第8个元素的随机指针,访问到第8个元素,若第8个元素的3个随机指针分别指向第1、3、6个元素,则按1、3、6从小到大的顺序找到第一个不小于5的值,得到目标随机指针是指向6的随机指针,访问到第6个元素,若第6个元素的3个随机指针分别指向第2、3、4个元素,没有满足条件的目标随机指针,则从第6个元素向前访问,访问到第5个元素,完成本次元素访问。
可选地,记录本次对第i个元素进行访问的访问信息,其中,访问信息包括访问速度信息;根据访问速度信息确定本次对第i个元素进行访问的访问速度指标,访问速度指标用于表示对元素队列中第i个元素的访问速度是否发生下降。
访问速度信息包含访问步数,在访问步数大于指定阈值的情况下确定访问速度指标为对元素队列中元素的访问速度发生下降,在访问步数不大于指定阈值的情况下确定访问速度指标为对元素队列中元素的访问速度未发生下降。访问步数是指从最后一个元素开始到访问到第i个元素的过程中,总计访问的元素数量。例如,i=5,从第13个元素开始,通过随机指针访问到第8个元素,再通过随机指针访问到第6个元素,最后向前访问一次完成对第5个元素的访问,依次访问了第8、6、5个元素,访问步数为3。
访问速度信息也可以包含访问时长,在访问时长大于指定阈值的情况下确定访问速度指标为对元素队列中元素的访问速度发生下降,在访问时长不大于指定阈值的情况下确定访问速度指标为对元素队列中元素的访问速度未发生下降。访问时长是指从最后一个元素开始到访问到第i个元素所用的总时长。
服务器在每一次插入新元素之前,查询现有的随机指针是否能够满足随机下标访问的速度需求、以大于一定阈值的访问速度实现对元素的访问,如果目前的访问速度较慢,则说明目前的随机指针可能分布过于集中,需要在插入新元素时将其随机指针设置为均匀指向其他元素,以提升访问速度。
可选地,服务器在将第一元素插入至第二元素之前,可以采用如下方式获取关于对元素队列中元素的访问速度是否发生下降的信息:查找目标访问信息,其中,访问信息还包括访问起点,目标访问信息是以第一元素为访问起点的最后一次访问的访问信息,访问起点为对元素进行访问时元素队列中的最后一个元素;根据目标访问信息中的访问速度指标,确定对元素队列中元素的访问速度是否发生下降。
例如,第一元素是元素队列中的第50个元素,服务器中保存有多条访问信息,包括插入第一元素之前的访问信息和插入第一元素之后的访问信息,其中,插入第一元素之后的访问信息以第50个元素(访问时元素队列中的最后一个元素)为访问起点,以第50个元素为访问起点的最后一次访问中,访问速度指标为“对元素队列中第i个元素的访问速度发生下降”,得到查找结果,结果为“对元素队列中元素的访问速度发生下降”。
作为一种可选的实施例,下文结合具体实施方式示意性的描述本申请的技术方案:
定义下标访问为针对某一个容器A,能访问到A[i]的值,其中i为整数。
本方案对容器的操作提供以下两种方法:令容器的元素个数为L,1、提供插入下标为L+1的值的方法,2、提供访问1到L下标值的方法。
合约内部记录一个哈希值,用于指向最后一个元素的交易哈希,记为T,然后用f记录上次查找是否偏慢,初始值为假。
令存储阈值为H,其中每个交易存储单元内部存储有存储值(即元素)和H个随机指针,指向H个不同的下标小于这个存储单元的交易哈希。
1、插入新元素X:
从合约获得最新的T,令当前插入元素的下标为L。
如果f为假,则随机取H个严格小于L个的正数(如果L-1<H,则全取即可)。然后沿着T找到这H个下标值的哈希,并存储到新的交易中,获得新的交易哈希T'更新到合约中。
如果f为真,令D=L/H,则此次插入的H个哈希的下标为1,D,2D,...,D*H,此步骤主要用于确定化下标,防止随机化导致的性能下降。
2、查找下标id的值:
获得T,即最后一个下标的交易信息,按照H个哈希的下标的从小到大的顺序,找到第一个大于id的下标哈希t,然后沿着t重复上述步骤,直到找到下标为t的交易体里面存储的值即可。在本次查询过程中,如果发现查询的时间或者索引访问的次数大于阈值,则用访问本次将f的值设置为真,留给下次插入时进行调整,否则f设为假。
采用上述两种方法,①可高效追加,追加性能衰减非常慢,且索引访问的时间和次数是有机会动态调整的;②读取效率衰减非常慢,且可以自适应调整;③合约存储不能多线程读取,这里有最后一个元素的交易哈希即可并行查询,读取可以多线程,提高了多线程读取效率。
本方案为元素队列中每个元素设置指定数量的随机指针,消耗的存储空间可控,未设置为均匀分布的随机指针在某些访问中可以加快访问速度,但可能会由于集中分布在某些范围而对其他范围内的元素无法起到加速作用,在访问速度发生下降的情况下,将下一个元素的随机指针设置为均匀分布的指针,改善随机化导致的性能下降;在每一次追加新元素并为其设置随机指针时,对目前的访问速度进行判断,根据判断结果采用不同的随机指针设置方式,实现自适应调整,使索引访问的时间和次数是有机会动态调整的;将数据存储在区块链的每个交易存储单元中而不是合约中,通过合约获取最后一个元素的交易哈希,再由最后一个元素的交易哈希实现对其他元素的多线程访问,从而实现了多线程读取,提高了对数据读取速度。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述数据处理方法的数据处理装置。图3是根据本申请实施例的一种可选的数据处理装置的示意图,如图3所示,该装置可以包括:
元素获取模块32,用于获取待插入至第一元素之后的第二元素,其中,第一元素位于容器中保存的元素队列的队尾,第一元素具有H个随机指针,第一元素的每个随机指针指向元素队列中的一个位于第一元素之前的元素,H为大于1的自然数;
第一插入模块34,用于在对元素队列中元素的访问速度未发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素;
第二插入模块36,用于在对元素队列中元素的访问速度发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素。
需要说明的是,该实施例中的元素获取模块32可以用于执行本申请实施例中的步骤S202,该实施例中的第一插入模块34可以用于执行本申请实施例中的步骤S204,该实施例中的第二插入模块36可以用于执行本申请实施例中的步骤S206。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,为元素队列中每个元素设置指定数量的随机指针,进行随机下标访问,在访问速度发生下降的情况下,将下一个元素的随机指针设置为均匀分布的指针,改善随机化导致的性能下降,达到了加快访问速度的目的,进而解决了由于数据量较大造成随机下标访问的访问效率较低的技术问题。
作为一种可选的实施例,第一插入模块34还用于:将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素,第二元素的H个随机指针中的每个指针指向元素队列中第N个元素,其中,N为不大于L的正整数,L为插入第二元素之前元素队列中的元素个数。
作为一种可选的实施例,第二插入模块36还用于:将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素,第二元素的H个随机指针中的每个指针指向元素队列中第N个元素,其中,N=k*floor(L/H),k为正整数且k≤H,L为插入第二元素之前元素队列中的元素个数,floor(L/H)表示对L除以H的商向下取整。
作为一种可选的实施例,该数据处理装置还用于:在需要访问元素队列中第i个元素的情况下,从元素队列中最后一个元素开始,在元素的H个随机指针中查找目标随机指针,其中,一个元素的H个随机指针中的每个指针指向元素队列中第N个元素,目标随机指针是H个随机指针中指向的元素最接近第i个元素、且不在第i个元素之前的随机指针;跳过元素队列中的部分元素访问目标随机指针指向的第j个元素,其中,j∈N、且j为不小于i的正整数;从目标随机指针指向的第j个元素开始,继续在元素的H个随机指针中查找目标随机指针,直至找到第i个元素。
可选地,该数据处理装置还用于:在找到第i个元素之后,记录本次对第i个元素进行访问的访问信息,其中,访问信息包括访问速度信息;根据访问速度信息确定本次对第i个元素进行访问的访问速度指标,访问速度指标用于表示对元素队列中第i个元素的访问速度是否发生下降。
可选地,该数据处理装置还用于:根据访问速度信息确定访问速度指标,访问速度信息包含访问步数,在访问步数大于指定阈值的情况下确定访问速度指标为对元素队列中元素的访问速度发生下降,在访问步数不大于指定阈值的情况下确定访问速度指标为对元素队列中元素的访问速度未发生下降。
可选地,该数据处理装置还用于:在将第一元素插入至第二元素之前,查找目标访问信息,其中,访问信息还包括访问起点,目标访问信息是以第一元素为访问起点的最后一次访问的访问信息,访问起点为对元素进行访问时元素队列中的最后一个元素;根据目标访问信息中的访问速度指标,确定对元素队列中元素的访问速度是否发生下降。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的另一个方面,还提供了一种用于实施上述数据处理方法的服务器或终端。
图4是根据本申请实施例的一种终端的结构框图,如图4所示,该终端可以包括:一个或多个(图4中仅示出一个)处理器401、存储器403、以及传输装置405,如图4所示,该终端还可以包括输入输出设备407。
其中,存储器403可用于存储软件程序以及模块,如本申请实施例中的数据处理方法和装置对应的程序指令/模块,处理器401通过运行存储在存储器403内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据处理方法。存储器403可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器403可进一步包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置405用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置405包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置405为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器403用于存储应用程序。
处理器401可以通过传输装置405调用存储器403存储的应用程序,以执行下述步骤:获取待插入至第一元素之后的第二元素,其中,第一元素位于容器中保存的元素队列的队尾,第一元素具有H个随机指针,第一元素的每个随机指针指向元素队列中的一个位于第一元素之前的元素,H为大于1的自然数;在对元素队列中元素的访问速度未发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素;在对元素队列中元素的访问速度发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素。
采用本申请实施例,提供了一种数据处理的方案。通过为元素队列中每个元素设置指定数量的随机指针,进行随机下标访问,在访问速度发生下降的情况下,将下一个元素的随机指针设置为均匀分布的指针,改善随机化导致的性能下降,达到了加快访问速度的目的,进而解决了由于数据量较大造成随机下标访问的访问效率较低的技术问题。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图4所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图4其并不对上述电子设备的结构造成限定。例如,终端还可包括比图4中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图4所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行数据处理方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,获取待插入至第一元素之后的第二元素,其中,第一元素位于容器中保存的元素队列的队尾,第一元素具有H个随机指针,第一元素的每个随机指针指向元素队列中的一个位于第一元素之前的元素,H为大于1的自然数;
S2,在对元素队列中元素的访问速度未发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针中的每个指针,随机设为指向元素队列中的一个位于第一元素之前的元素;
S3,在对元素队列中元素的访问速度发生下降的情况下,将第二元素插入至第一元素之后,并将第二元素的H个随机指针,设为均匀地指向元素队列中位于第一元素之前的H个元素。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
获取待插入至第一元素之后的第二元素,其中,所述第一元素位于容器中保存的元素队列的队尾,所述第一元素具有H个随机指针,所述第一元素的每个随机指针指向所述元素队列中的一个位于所述第一元素之前的元素,H为大于1的自然数;
在对所述元素队列中元素的访问速度未发生下降的情况下,将所述第二元素插入至所述第一元素之后,并将所述第二元素的H个随机指针中的每个指针,随机设为指向所述元素队列中的一个位于所述第一元素之前的元素;
在对所述元素队列中元素的访问速度发生下降的情况下,将所述第二元素插入至所述第一元素之后,并将所述第二元素的H个随机指针,设为均匀地指向所述元素队列中位于所述第一元素之前的H个元素。
2.根据权利要求1所述的方法,其特征在于,将所述第二元素的H个随机指针中的每个指针,随机设为指向所述元素队列中的一个位于所述第一元素之前的元素,包括:
所述第二元素的H个随机指针中的每个指针指向所述元素队列中第N个元素,其中,N为不大于L的正整数,L为插入所述第二元素之前所述元素队列中的元素个数。
3.根据权利要求1所述的方法,其特征在于,将所述第二元素的H个随机指针,设为均匀地指向所述元素队列中位于所述第一元素之前的H个元素,包括:
所述第二元素的H个随机指针中的每个指针指向所述元素队列中第N个元素,其中,N=k*floor(L/H),k为正整数且k≤H,L为插入所述第二元素之前所述元素队列中的元素个数,floor(L/H)表示对L除以H的商向下取整。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括按照如下方式访问元素队列中的元素:
在需要访问所述元素队列中第i个元素的情况下,从所述元素队列中最后一个元素开始,在元素的H个随机指针中查找目标随机指针,其中,一个元素的H个随机指针中的每个指针指向所述元素队列中第N个元素,所述目标随机指针是所述H个随机指针中指向的元素最接近所述第i个元素、且不在所述第i个元素之前的随机指针;
跳过所述元素队列中的部分元素访问所述目标随机指针指向的第j个元素,其中,j∈N、且j为不小于i的正整数;
从所述目标随机指针指向的第j个元素开始,继续在元素的H个随机指针中查找目标随机指针,直至找到所述第i个元素。
5.根据权利要求4所述的方法,其特征在于,在找到所述第i个元素之后,所述方法还包括:
记录本次对所述第i个元素进行访问的访问信息,其中,所述访问信息包括访问速度信息;
根据所述访问速度信息确定本次对所述第i个元素进行访问的访问速度指标,所述访问速度指标用于表示对所述元素队列中第i个元素的访问速度是否发生下降。
6.根据权利要求5所述的方法,其特征在于,根据所述访问速度信息确定访问速度指标,所述方法还包括:
所述访问速度信息包含访问步数,在所述访问步数大于指定阈值的情况下确定所述访问速度指标为对元素队列中元素的访问速度发生下降,在所述访问步数不大于指定阈值的情况下确定所述访问速度指标为对元素队列中元素的访问速度未发生下降。
7.根据权利要求5所述的方法,其特征在于,在将所述第二元素插入至所述第一元素之后之前,所述方法还包括:
查找目标访问信息,其中,所述访问信息还包括访问起点,所述目标访问信息是以所述第一元素为访问起点的最后一次访问的访问信息,所述访问起点为对元素进行访问时元素队列中的最后一个元素;
根据所述目标访问信息中的访问速度指标,确定对所述元素队列中元素的访问速度是否发生下降。
8.一种数据处理装置,其特征在于,包括:
元素获取模块,用于获取待插入至第一元素之后的第二元素,其中,所述第一元素位于容器中保存的元素队列的队尾,所述第一元素具有H个随机指针,所述第一元素的每个随机指针指向所述元素队列中的一个位于所述第一元素之前的元素,H为大于1的自然数;
第一插入模块,用于在对所述元素队列中元素的访问速度未发生下降的情况下,将所述第二元素插入至所述第一元素之后,并将所述第二元素的H个随机指针中的每个指针,随机设为指向所述元素队列中的一个位于所述第一元素之前的元素;
第二插入模块,用于在对所述元素队列中元素的访问速度发生下降的情况下,将所述第二元素插入至所述第一元素之后,并将所述第二元素的H个随机指针,设为均匀地指向所述元素队列中位于所述第一元素之前的H个元素。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至7任一项中所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项中所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111597952.2A CN114443044A (zh) | 2021-12-24 | 2021-12-24 | 数据处理方法和装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111597952.2A CN114443044A (zh) | 2021-12-24 | 2021-12-24 | 数据处理方法和装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114443044A true CN114443044A (zh) | 2022-05-06 |
Family
ID=81364083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111597952.2A Pending CN114443044A (zh) | 2021-12-24 | 2021-12-24 | 数据处理方法和装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114443044A (zh) |
-
2021
- 2021-12-24 CN CN202111597952.2A patent/CN114443044A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106657213B (zh) | 文件传输方法和装置 | |
CN103491152A (zh) | 分布式文件系统中元数据获取方法、装置及系统 | |
CN110659151A (zh) | 数据校验方法及装置,存储介质 | |
CN109801693B (zh) | 病案分组方法及装置、终端和计算机可读存储介质 | |
CN112954244A (zh) | 监控录像的存储实现方法、装置、设备及存储介质 | |
CN111930305A (zh) | 数据的存储方法和装置、存储介质、电子装置 | |
CN108334460A (zh) | 数据缓存方法及装置 | |
CN111694703A (zh) | 缓存区管理方法、装置和计算机设备 | |
CN113573134A (zh) | 弹幕数据的处理方法及装置、存储介质、电子设备 | |
CN117473011A (zh) | 数据同步方法、装置以及混合缓存系统 | |
CN114443044A (zh) | 数据处理方法和装置、电子设备、存储介质 | |
CN112966005B (zh) | 定时消息发送方法、装置、计算机设备以及存储介质 | |
CN107977381B (zh) | 数据配置方法、索引管理方法、相关装置以及计算设备 | |
CN106446080B (zh) | 数据查询的方法、查询服务设备、客户端设备和数据系统 | |
CN114995770A (zh) | 一种数据处理方法、装置、设备、系统及可读存储介质 | |
CN112312514B (zh) | 一种接入网络的方法、装置、设备和计算机可读存储介质 | |
CN114884936A (zh) | 终端设备的数据处理方法、装置、设备及介质 | |
CN111240843B (zh) | 一种数据获取方法、装置、电子设备及存储介质 | |
CN114187037A (zh) | 信息推送方法、装置及非易失性存储介质 | |
US7873747B2 (en) | Device and method for transmitting data | |
CN113010454A (zh) | 数据读写方法、装置、终端及存储介质 | |
CN112188562A (zh) | 中继基站的多播调度方法和装置、存储介质及电子装置 | |
CN114385628A (zh) | 数据处理方法和装置、电子设备、存储介质 | |
CN111641959A (zh) | 一种网络环境信息的检测方法和装置 | |
CN113744013A (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 |