CN109992701A - 一种链表实现方法、装置、设备及可读存储介质 - Google Patents
一种链表实现方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN109992701A CN109992701A CN201910290925.7A CN201910290925A CN109992701A CN 109992701 A CN109992701 A CN 109992701A CN 201910290925 A CN201910290925 A CN 201910290925A CN 109992701 A CN109992701 A CN 109992701A
- Authority
- CN
- China
- Prior art keywords
- chained list
- node
- virtual disk
- index value
- disk index
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种链表实现方法,包括:获取当前存储***中待实现的链表数量,每个链表包括的节点数量,以及每个链表中各个节点存储的虚拟盘索引值;记录每个链表中的首节点存储的虚拟盘索引值,获得第一数组;根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,获得第二数组;将第一数组和第二数组确定为当前存储***中的链表。该方法用第一数组和第二数组代替了存储***中的链表结构,从而简化了链表结构,提高了存储***的性能,还为链表维护操作提供了便利。相应地,本发明公开的一种链表实现装置、设备及可读存储介质,也同样具有上述技术效果。
Description
技术领域
本发明涉及数据存储技术领域,更具体地说,涉及一种链表实现方法、装置、设备及可读存储介质。
背景技术
链表是存储***中的缓存模块在存储数据时所使用的主要数据结构之一。在存储***中,一般存在多条链表,每个链表包括多个节点;当想要查找某个节点时,需要首先确定要查找的节点所属的链表,并从该条链表的首节点开始,按照next指针一个接一个地查找,直至查找到要查找的节点。也就是说,存储***中的链表一般为单向链表。
存储***中的虚拟盘的数量较多,且每个虚拟盘需要对应不同的链表,而链表的个数又有限,因此每个链表包括的节点个数一般比较多。所以传统的链表实现方式不利于链表的修改、删除和查找等维护操作,因为每次都需要从一个链表的首节点开始遍历查找。如此不仅会占用大量的内存,还使链表很难维护,并且,对指针进行操作时很容易出错,因此会降低存储***的性能。
其中,每个节点中存储的是虚拟盘索引值,因此每个节点对应一个虚拟盘,且每条链表中的节点对应的虚拟盘一般不同。虚拟盘是对物理磁盘的软件抽象。
因此,如何在存储***中实现便于维护的链表结构,是本领域技术人员需要解决的问题。
发明内容
本发明的目的在于提供一种链表实现方法、装置、设备及可读存储介质,以在存储***中实现便于维护的链表结构。
为实现上述目的,本发明实施例提供了如下技术方案:
一种链表实现方法,包括:
获取当前存储***中待实现的链表数量,每个链表包括的节点数量,以及每个链表中各个节点存储的虚拟盘索引值;
记录每个链表中的首节点存储的虚拟盘索引值,获得第一数组;
根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,获得第二数组;
将所述第一数组和所述第二数组确定为当前存储***中的链表。
其中,所述根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,包括:
从每个链表的首节点开始,将当前节点的下一个节点存储的虚拟盘索引值作为所述参考值,并计算当前节点存储的虚拟盘索引值与所述参考值的差值,将所述差值作为当前节点对应的偏移量;
将每个链表的尾节点对应的偏移量确定为当前尾节点存储的虚拟盘索引值与预设的目标值的差值。
其中,所述根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,包括:
将每个链表的首节点对应的偏移量确定为当前首节点存储的虚拟盘索引值与预设的目标值的差值;
从每个链表的第二个节点开始,将当前节点的上一个节点存储的虚拟盘索引值作为所述参考值,并计算当前节点存储的虚拟盘索引值与所述参考值的差值,将所述差值作为当前节点对应的偏移量。
其中,所述根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,包括:
将每个链表的首节点对应的偏移量确定为当前首节点存储的虚拟盘索引值与预设的目标值的差值;
从每个链表的第二个节点开始,将每个链表的首节点存储的虚拟盘索引值作为当前链表的参考值,并计算当前节点存储的虚拟盘索引值与当前链表的参考值的差值,并将所述差值作为当前节点对应的偏移量。
其中,所述将所述第一数组和所述第二数组作为当前存储***中的链表之前,还包括:
将每个链表中的尾节点存储的虚拟盘索引值记录至所述第一数组。
其中,所述将每个链表中的尾节点存储的虚拟盘索引值记录至所述第一数组之后,还包括:
将每个链表包括的节点数量记录至所述第二数组。
一种链表实现装置,包括:
获取模块,用于获取当前存储***中待实现的链表数量,每个链表包括的节点数量,以及每个链表中各个节点存储的虚拟盘索引值;
记录模块,用于记录每个链表中的首节点存储的虚拟盘索引值,获得第一数组;
计算模块,用于根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,获得第二数组;
确定模块,用于将所述第一数组和所述第二数组确定为当前存储***中的链表。
其中,所述计算模块具体用于:
从每个链表的首节点开始,将当前节点的下一个节点存储的虚拟盘索引值作为所述参考值,并计算当前节点存储的虚拟盘索引值与所述参考值的差值,将所述差值作为当前节点对应的偏移量;
将每个链表的尾节点对应的偏移量确定为当前尾节点存储的虚拟盘索引值与预设的目标值的差值。
一种链表实现设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任意一项所述的链表实现方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的链表实现方法的步骤。
通过以上方案可知,本发明实施例提供的一种链表实现方法,包括:获取当前存储***中待实现的链表数量,每个链表包括的节点数量,以及每个链表中各个节点存储的虚拟盘索引值;记录每个链表中的首节点存储的虚拟盘索引值,获得第一数组;根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,获得第二数组;将所述第一数组和所述第二数组确定为当前存储***中的链表。
可见,所述方法基于第一数组和第二数组实现了链表结构,其中,第一数组用于记录每个链表中的首节点存储的虚拟盘索引值;第二数组用于记录所有节点对应的偏移量。如此将存储***中的链表结构用两个数组代替,不仅简化了链表结构,还便于对链表进行维护。例如:当需要查找节点A存储的虚拟盘索引值时,可以直接在第二数组中查找节点A对应的偏移量,并基于偏移量的计算方式进行逆运算,便可获得节点A存储的虚拟盘索引值;如此便省略了指针遍历过程,从而提高了查找效率。同时,第一数组和第二数组实现的链表结构不会大量占用***内存,能够提高存储***的性能。
相应地,本发明实施例提供的一种链表实现装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种链表实现方法流程图;
图2为本发明实施例公开的一种nodes数组示意图;
图3为本发明实施例公开的一种链表实现装置示意图;
图4为本发明实施例公开的一种链表实现设备示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种链表实现方法、装置、设备及可读存储介质,以在存储***中实现便于维护的链表结构。
参见图1,本发明实施例提供的一种链表实现方法,包括:
S101、获取当前存储***中待实现的链表数量,每个链表包括的节点数量,以及每个链表中各个节点存储的虚拟盘索引值;
例如:若当前存储***中待实现的链表数量为3,分别用A、B、C表示,且每个链表包括2个节点,则有:
链表A包括:节点A1,其中存储的虚拟盘索引值为5;节点A2,其中存储的虚拟盘索引值为8;
链表B包括:节点B1,其中存储的虚拟盘索引值为10;节点B2,其中存储的虚拟盘索引值为9;
链表C包括:节点C1,其中存储的虚拟盘索引值为4;节点C2,其中存储的虚拟盘索引值为2。
S102、记录每个链表中的首节点存储的虚拟盘索引值,获得第一数组;
结合上述举例,获得的第一数组N即为:N=(5,10,4)。
S103、根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,获得第二数组;
具体的,根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,包括:从每个链表的首节点开始,将当前节点的下一个节点存储的虚拟盘索引值作为参考值,并计算当前节点存储的虚拟盘索引值与参考值的差值,将差值作为当前节点对应的偏移量;将每个链表的尾节点对应的偏移量确定为当前尾节点存储的虚拟盘索引值与预设的目标值的差值。
结合上述举例,若预设的目标值为0,那么针对链表A,则有:-3,8;针对链表B,则有:1,9;针对链表C,则有:2,2,那么获得的第二数组M即为:
S104、将第一数组和第二数组确定为当前存储***中的链表。
其中,将第一数组和第二数组作为当前存储***中的链表之前,还包括:将每个链表中的尾节点存储的虚拟盘索引值记录至第一数组。
其中,将每个链表中的尾节点存储的虚拟盘索引值记录至第一数组之后,还包括:将每个链表包括的节点数量记录至第二数组。
可见,本实施例提供了一种链表实现方法,所述方法基于第一数组和第二数组实现了链表结构,其中,第一数组用于记录每个链表中的首节点存储的虚拟盘索引值;第二数组用于记录所有节点对应的偏移量。如此将存储***中的链表结构用两个数组代替,不仅简化了链表结构,还便于对链表进行维护。例如:当需要查找节点A存储的虚拟盘索引值时,可以直接在第二数组中查找节点A对应的偏移量,并基于偏移量的计算方式进行逆运算,便可获得节点A存储的虚拟盘索引值;如此便省略了指针遍历过程,从而提高了查找效率。同时,第一数组和第二数组实现的链表结构不会大量占用***内存,能够提高存储***的性能。
基于上述实施例,需要说明的是,若需要对链表进行维护,则有:
将每个链表中的尾节点存储的虚拟盘索引值记录至第三数组;
当接收到查询目标节点对应的虚拟盘的请求时,通过第二数组确定目标节点所属的目标链表;
判断目标节点是否为目标链表的首节点;
若是,则在第一数组中查询目标节点存储的目标虚拟盘索引值,并通过目标虚拟盘索引值确定目标节点对应的目标虚拟盘;
若否,则判断目标节点是否为目标链表的尾节点;若是,则在第三数组中查询目标节点存储的目标虚拟盘索引值,并执行通过目标虚拟盘索引值确定目标节点对应的目标虚拟盘的步骤;若否,则在第二数组中确定目标节点对应的偏移量,并基于当前偏移量的计算方式进行逆运算,获得目标节点存储的目标虚拟盘索引值,并执行通过目标虚拟盘索引值确定目标节点对应的目标虚拟盘的步骤。
其中,若目标节点为目标链表的尾节点,且当前偏移量的计算方式为:将当前节点的下一个节点存储的虚拟盘索引值作为参考值,将当前节点存储的虚拟盘索引值与参考值的差值作为当前节点对应的偏移量,那么:
当接收到在目标节点后添加对象节点的请求时,对象节点存储的是对象虚拟盘索引值;将目标节点对应的偏移量更新为目标虚拟盘索引值和对象虚拟盘索引值的差值,并将对象节点对应的偏移量记录为对象节点存储的虚拟盘索引值与预设的目标值的差值;将目标链表的尾节点更改为对象节点,并将第三数组中的目标虚拟盘索引值更新为对象虚拟盘索引值。
当接收到删除目标节点的请求时,删除第二数组中的目标节点对应的偏移量;将目标链表的尾节点更改为目标节点的上一个节点,并将第三数组中的目标虚拟盘索引值更新为上一个节点存储的虚拟盘索引值。
当接收到修改目标节点存储的虚拟盘索引值的请求时,修改第二数组中目标节点对应的偏移量,并修改第三数组中记录的目标链表的尾节点存储的虚拟盘索引值。
需要说明的是,当目标节点为目标链表的首节点或其他节点时,添加、删除、修改等维护操作需要依照链表实现方式灵活调整。也就是说,上述维护操作局限于链表的实现方式,因此若基于本发明的核心思想更改链表的实现方式,相应地维护操作也需要发生变化。
基于上述实施例,需要说明的是,根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,包括:将每个链表的首节点对应的偏移量确定为当前首节点存储的虚拟盘索引值与预设的目标值的差值;从每个链表的第二个节点开始,将当前节点的上一个节点存储的虚拟盘索引值作为参考值,并计算当前节点存储的虚拟盘索引值与参考值的差值,将差值作为当前节点对应的偏移量。
结合上述举例,若预设的目标值为0,那么针对链表A,则有:5,3;针对链表B,则有:10,-1;针对链表C,则有:4,-2;那么获得的第二数组M即为:
基于上述实施例,需要说明的是,根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,包括:将每个链表的首节点对应的偏移量确定为当前首节点存储的虚拟盘索引值与预设的目标值的差值;从每个链表的第二个节点开始,将每个链表的首节点存储的虚拟盘索引值作为当前链表的参考值,并计算当前节点存储的虚拟盘索引值与当前链表的参考值的差值,并将差值作为当前节点对应的偏移量。
例如:若当前存储***中待实现的链表数量为3,分别用A、B、C表示,且每个链表包括3个节点,则有:
链表A包括:节点A1,其中存储的虚拟盘索引值为5;节点A2,其中存储的虚拟盘索引值为8;节点A3,其中存储的虚拟盘索引值为11;
链表B包括:节点B1,其中存储的虚拟盘索引值为10;节点B2,其中存储的虚拟盘索引值为9;节点B3,其中存储的虚拟盘索引值为12;
链表C包括:节点C1,其中存储的虚拟盘索引值为4;节点C2,其中存储的虚拟盘索引值为2;节点C3,其中存储的虚拟盘索引值为13。
若预设的目标值为0,那么针对链表A,则有:5,3,6;针对链表B,则有:10,-1,2;针对链表C,则有:4,-2,9;那么获得的第二数组M即为:
本发明实施例公开了另一种链表实现方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。
本发明实施例提供的另一种链表实现方法,包括:first数组、last数组、count数组和nodes数组,其中:
first数组,用于存储每个链表的首节点存储的虚拟盘索引值;
last数组,用于存储每个链表的尾节点存储的虚拟盘索引值;
count数组,用于存储每个链表中的节点个数;
nodes数组,用于存储每个链表中的各个节点对应的偏移量。
若存储***中包括4条链表,用传统链表实现方式表示如下:
链表0包括2个节点,首节点存储的虚拟盘索引值为1,尾节点存储的虚拟盘索引值为15;
链表1包括3个节点,首节点存储的虚拟盘索引值为5,第二个节点存储的虚拟盘索引值为8,尾节点存储的虚拟盘索引值为7;
链表2包括3个节点,首节点存储的虚拟盘索引值为11,第二个节点存储的虚拟盘索引值为17,尾节点存储的虚拟盘索引值为9;
链表3包括4个节点,首节点存储的虚拟盘索引值为20,第二个节点存储的虚拟盘索引值为3,第三个节点存储的虚拟盘索引值为12,尾节点存储的虚拟盘索引值为16。
若用本实施例提供的实现方式进行表示,则first数组为:1,5,11,20;last数组为:15,7,9,16;count数组为:2,3,3,4;nodes数组请参见图2。其中,对于每个链表的尾节点对应的偏移量来说,预设的参考值为-1。
可见,利用first数组、last数组、count数组和nodes数组实现链表结构时,并不需要创建真正的链表结构,一方面可以节省创建链表所需的内存,另一方面将对指针的操作转换为对整数的加减操作,很大程度上降低了编码出错的风险。
下面对本发明实施例提供的一种链表实现装置进行介绍,下文描述的一种链表实现装置与上文描述的一种链表实现方法可以相互参照。
参见图3,本发明实施例提供的一种链表实现装置,包括:
获取模块301,用于获取当前存储***中待实现的链表数量,每个链表包括的节点数量,以及每个链表中各个节点存储的虚拟盘索引值;
记录模块302,用于记录每个链表中的首节点存储的虚拟盘索引值,获得第一数组;
计算模块303,用于根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,获得第二数组;
确定模块304,用于将第一数组和第二数组确定为当前存储***中的链表。
其中,计算模块具体用于:
从每个链表的首节点开始,将当前节点的下一个节点存储的虚拟盘索引值作为参考值,并计算当前节点存储的虚拟盘索引值与参考值的差值,将差值作为当前节点对应的偏移量;
将每个链表的尾节点对应的偏移量确定为当前尾节点存储的虚拟盘索引值与预设的目标值的差值。
其中,计算模块具体用于:
将每个链表的首节点对应的偏移量确定为当前首节点存储的虚拟盘索引值与预设的目标值的差值;
从每个链表的第二个节点开始,将当前节点的上一个节点存储的虚拟盘索引值作为参考值,并计算当前节点存储的虚拟盘索引值与参考值的差值,将差值作为当前节点对应的偏移量。
其中,计算模块具体用于:
将每个链表的首节点对应的偏移量确定为当前首节点存储的虚拟盘索引值与预设的目标值的差值;
从每个链表的第二个节点开始,将每个链表的首节点存储的虚拟盘索引值作为当前链表的参考值,并计算当前节点存储的虚拟盘索引值与当前链表的参考值的差值,并将差值作为当前节点对应的偏移量。
其中,还包括:
第一记录模块,用于将每个链表中的尾节点存储的虚拟盘索引值记录至第一数组。
其中,还包括:
第二记录模块,用于将每个链表中的尾节点存储的虚拟盘索引值记录至第一数组之后,将每个链表包括的节点数量记录至第二数组。
可见,本实施例提供了一种链表实现装置,包括:获取模块、记录模块、计算模块以及确定模块。首先由获取模块获取当前存储***中待实现的链表数量,每个链表包括的节点数量,以及每个链表中各个节点存储的虚拟盘索引值;然后记录模块记录每个链表中的首节点存储的虚拟盘索引值,获得第一数组;进而计算模块用于根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,获得第二数组;最后确定模块用于将第一数组和第二数组确定为当前存储***中的链表。如此各个模块之间分工合作,各司其职,从而简化了链表结构,提高了存储***的性能,还为链表维护操作提供了便利。
下面对本发明实施例提供的一种链表实现设备进行介绍,下文描述的一种链表实现设备与上文描述的一种链表实现方法及装置可以相互参照。
参见图4,本发明实施例提供的一种链表实现设备,包括:
存储器401,用于存储计算机程序;
处理器402,用于执行所述计算机程序时实现上述任意实施例所述的链表实现方法的步骤。
下面对本发明实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种链表实现方法、装置及设备可以相互参照。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意实施例所述的链表实现方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种链表实现方法,其特征在于,包括:
获取当前存储***中待实现的链表数量,每个链表包括的节点数量,以及每个链表中各个节点存储的虚拟盘索引值;
记录每个链表中的首节点存储的虚拟盘索引值,获得第一数组;
根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,获得第二数组;
将所述第一数组和所述第二数组确定为当前存储***中的链表。
2.根据权利要求1所述的链表实现方法,其特征在于,所述根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,包括:
从每个链表的首节点开始,将当前节点的下一个节点存储的虚拟盘索引值作为所述参考值,并计算当前节点存储的虚拟盘索引值与所述参考值的差值,将所述差值作为当前节点对应的偏移量;
将每个链表的尾节点对应的偏移量确定为当前尾节点存储的虚拟盘索引值与预设的目标值的差值。
3.根据权利要求1所述的链表实现方法,其特征在于,所述根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,包括:
将每个链表的首节点对应的偏移量确定为当前首节点存储的虚拟盘索引值与预设的目标值的差值;
从每个链表的第二个节点开始,将当前节点的上一个节点存储的虚拟盘索引值作为所述参考值,并计算当前节点存储的虚拟盘索引值与所述参考值的差值,将所述差值作为当前节点对应的偏移量。
4.根据权利要求1所述的链表实现方法,其特征在于,所述根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,包括:
将每个链表的首节点对应的偏移量确定为当前首节点存储的虚拟盘索引值与预设的目标值的差值;
从每个链表的第二个节点开始,将每个链表的首节点存储的虚拟盘索引值作为当前链表的参考值,并计算当前节点存储的虚拟盘索引值与当前链表的参考值的差值,并将所述差值作为当前节点对应的偏移量。
5.根据权利要求1-4任意一项所述的链表实现方法,其特征在于,所述将所述第一数组和所述第二数组作为当前存储***中的链表之前,还包括:
将每个链表中的尾节点存储的虚拟盘索引值记录至所述第一数组。
6.根据权利要求5所述的链表实现方法,其特征在于,所述将每个链表中的尾节点存储的虚拟盘索引值记录至所述第一数组之后,还包括:
将每个链表包括的节点数量记录至所述第二数组。
7.一种链表实现装置,其特征在于,包括:
获取模块,用于获取当前存储***中待实现的链表数量,每个链表包括的节点数量,以及每个链表中各个节点存储的虚拟盘索引值;
记录模块,用于记录每个链表中的首节点存储的虚拟盘索引值,获得第一数组;
计算模块,用于根据预设的参考值和每个链表中各个节点存储的虚拟盘索引值计算每个链表中各个节点对应的偏移量,获得第二数组;
确定模块,用于将所述第一数组和所述第二数组确定为当前存储***中的链表。
8.根据权利要求7所述的链表实现装置,其特征在于,所述计算模块具体用于:
从每个链表的首节点开始,将当前节点的下一个节点存储的虚拟盘索引值作为所述参考值,并计算当前节点存储的虚拟盘索引值与所述参考值的差值,将所述差值作为当前节点对应的偏移量;
将每个链表的尾节点对应的偏移量确定为当前尾节点存储的虚拟盘索引值与预设的目标值的差值。
9.一种链表实现设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1-6任意一项所述的链表实现方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-6任意一项所述的链表实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910290925.7A CN109992701B (zh) | 2019-04-11 | 2019-04-11 | 一种链表实现方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910290925.7A CN109992701B (zh) | 2019-04-11 | 2019-04-11 | 一种链表实现方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109992701A true CN109992701A (zh) | 2019-07-09 |
CN109992701B CN109992701B (zh) | 2020-05-15 |
Family
ID=67133314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910290925.7A Active CN109992701B (zh) | 2019-04-11 | 2019-04-11 | 一种链表实现方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109992701B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5915260A (en) * | 1997-05-28 | 1999-06-22 | Western Digital Corporation | Disk drive with cache having entry table prioritized to reduce scanning time for sequential streams |
CN101094179A (zh) * | 2007-07-16 | 2007-12-26 | 中兴通讯股份有限公司 | 一种多级索引路由查找方法及装置 |
CN101276334A (zh) * | 2007-03-29 | 2008-10-01 | 上海新跃仪表厂 | 一种快速检索数据的链表实现方法 |
CN104199966A (zh) * | 2014-09-22 | 2014-12-10 | 杭州电魂网络科技股份有限公司 | 一种桶式链表结构的实现方法 |
CN108183893A (zh) * | 2017-12-25 | 2018-06-19 | 东软集团股份有限公司 | 一种分片包检测方法、检测装置、存储介质和电子设备 |
CN109522306A (zh) * | 2018-09-21 | 2019-03-26 | 苏州蜗牛数字科技股份有限公司 | 一种全局空间及数据共享方法 |
-
2019
- 2019-04-11 CN CN201910290925.7A patent/CN109992701B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5915260A (en) * | 1997-05-28 | 1999-06-22 | Western Digital Corporation | Disk drive with cache having entry table prioritized to reduce scanning time for sequential streams |
CN101276334A (zh) * | 2007-03-29 | 2008-10-01 | 上海新跃仪表厂 | 一种快速检索数据的链表实现方法 |
CN101094179A (zh) * | 2007-07-16 | 2007-12-26 | 中兴通讯股份有限公司 | 一种多级索引路由查找方法及装置 |
CN104199966A (zh) * | 2014-09-22 | 2014-12-10 | 杭州电魂网络科技股份有限公司 | 一种桶式链表结构的实现方法 |
CN108183893A (zh) * | 2017-12-25 | 2018-06-19 | 东软集团股份有限公司 | 一种分片包检测方法、检测装置、存储介质和电子设备 |
CN109522306A (zh) * | 2018-09-21 | 2019-03-26 | 苏州蜗牛数字科技股份有限公司 | 一种全局空间及数据共享方法 |
Non-Patent Citations (1)
Title |
---|
BELIEVEXFR: ""数组如何模拟链表"", 《HTTPS://BLOG.CSDN.NET/BELIEVEXFR/ARTICLE/DETAILS/78309567》 * |
Also Published As
Publication number | Publication date |
---|---|
CN109992701B (zh) | 2020-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11789925B2 (en) | System and method for conditionally updating an item with attribute granularity | |
CN107247778B (zh) | 用于实施可扩展数据存储服务的***和方法 | |
CN103544285B (zh) | 一种数据加载方法及装置 | |
CN104156380B (zh) | 一种分布式存储器哈希索引方法及*** | |
US20210200446A1 (en) | System and method for providing a committed throughput level in a data store | |
US9189506B2 (en) | Database index management | |
CN102521406B (zh) | 海量结构化数据复杂查询任务的分布式查询方法和*** | |
CN111597015B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
CN104239417B (zh) | 一种分布式数据库数据分片后动态调整方法及装置 | |
CN103561133B (zh) | 一种ip地址归属信息索引方法及快速查询方法 | |
CN103914399B (zh) | 一种并行计算***中的磁盘缓存方法及装置 | |
CN102609446B (zh) | 一种分布式Bloom过滤***及其使用方法 | |
CN103020204A (zh) | 一种对分布式顺序表进行多维区间查询的方法及其*** | |
CN106407224A (zh) | 一种键值存储***中文件压实的方法和装置 | |
EP3961431B1 (en) | Method and apparatus for grouping transactions that need to be serially executed based on a sequence of transactions in one block of a blockchain | |
CN104035925B (zh) | 数据存储方法、装置和存储*** | |
US9110820B1 (en) | Hybrid data storage system in an HPC exascale environment | |
CN110704438B (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN107203532A (zh) | 索引***的构建方法、搜索的实现方法及装置 | |
CN107169009A (zh) | 一种分布式存储***的数据***方法及装置 | |
CN105159616A (zh) | 一种磁盘空间管理方法及装置 | |
CN109521962A (zh) | 一种元数据查询方法、装置、设备及计算机可读存储介质 | |
CN110471944A (zh) | 指标统计方法、***、设备及存储介质 | |
CN109299111A (zh) | 一种元数据查询方法、装置、设备及计算机可读存储介质 | |
Von der Weth et al. | Multiterm keyword search in NoSQL systems |
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 |