CN114756591A - 一种基于双向链表的数据筛选方法和系统 - Google Patents

一种基于双向链表的数据筛选方法和系统 Download PDF

Info

Publication number
CN114756591A
CN114756591A CN202210394936.1A CN202210394936A CN114756591A CN 114756591 A CN114756591 A CN 114756591A CN 202210394936 A CN202210394936 A CN 202210394936A CN 114756591 A CN114756591 A CN 114756591A
Authority
CN
China
Prior art keywords
node
partition
count value
target node
target
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
Application number
CN202210394936.1A
Other languages
English (en)
Other versions
CN114756591B (zh
Inventor
眭新光
关创创
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hefei Zhuoxin Cloud Technology Co ltd
Original Assignee
Chengdu Zhuoxun Zhian Technology Co ltd
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 Chengdu Zhuoxun Zhian Technology Co ltd filed Critical Chengdu Zhuoxun Zhian Technology Co ltd
Priority to CN202210394936.1A priority Critical patent/CN114756591B/zh
Publication of CN114756591A publication Critical patent/CN114756591A/zh
Application granted granted Critical
Publication of CN114756591B publication Critical patent/CN114756591B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24562Pointer or reference processing operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于双向链表的数据筛选方法和系统,预先按指定长度从全词规则集中提取去重后的最少公共子串集合,并建立各最少公共子串与原始字符串的映射关系,该方法包括:根据最少公共子串集合构造出采用连续内存数组存放的数据集,数据集中各数据成员为结构体;根据各计数值将各数据成员作为节点划分到预设双向链表指针数组的各个分区;从各分区中依次取出第一目标节点,并根据与第一目标节点关联的第二目标节点的索引值更新预设双向链表指针数组;在各分区中不存在节点时,确认完成数据筛选,从而避免了多次重新对数据集的完整排序,提高了对最少公共子串集合的筛选效率。

Description

一种基于双向链表的数据筛选方法和系统
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种基于双向链表的数据筛选方法和系统。
背景技术
基于FPGA实现的硬件防火墙特征匹配引擎由一个全词匹配引擎和预筛引擎,预筛引擎的输入需由预处理程序将规则预处理后加载到引擎中。
在为预筛引擎预处理规则时需要从全词规则集提取指定长度的最少公共子串集合,较大的规则集去重后的子串可达到1000万个。数据集中每个子串都会映射1条或者多条原始规则字符串,不同子串可能映射相同原始规则字符串。
现有技术中,一般的选取最少公共子串的方式是,根据子串映射原始规则的条数进行排序,从排序最高的子串开始取出,取出后则消除与之对应的原始规则,同时被消除的原始规则所含的子串的映射原始规则计数应减1,子串集的成员值大小排序将发生改变。再选取下一个映射原始规则计数最大值的子串时,需要对整个集合进行扫描。在最少公共子串达到4万个的场景下,假设每次选出最大值以后对变化后的数据集进行传统的排序算法或者从头遍历取最大值,平均遍历深度为800万+,2.5GHZ 的CPU需要耗时0.03s,4万次则需要运算1200s左右。在庞大的数据规模下,现有技术的筛选效率低、耗时长。
如何进一步提高对最少公共子串集合的筛选效率,是目前有待解决的技术问题。
发明内容
本发明公开了一种基于双向链表的数据筛选方法,用以解决现有技术中对最少公共子串集合的筛选效率低的技术问题。该方法预先按指定长度从全词规则集中提取去重后的最少公共子串集合,并建立各最少公共子串与原始字符串的映射关系,该方法包括:
根据所述最少公共子串集合构造出采用连续内存数组存放的数据集,所述数据集中各数据成员为结构体,各所述数据成员中包括计数值、与其他数据成员之间的关联信息、双向链表指针头节点和自身在数组中的索引值;
根据各所述计数值将各所述数据成员作为节点划分到预设双向链表指针数组的各个分区;
从各所述分区中依次取出第一目标节点,并根据与所述第一目标节点关联的第二目标节点的索引值更新所述预设双向链表指针数组;
在各所述分区中不存在节点时,确认完成数据筛选;
其中,所述第一目标节点为最大计数值所在分区的首个节点,所述计数值表征了所述数据成员映射的原始字符串的条数。
相应的,本发明还提供了一种基于双向链表的数据筛选系统,预先按指定长度从全词规则集中提取去重后的最少公共子串集合,并建立各最少公共子串与原始字符串的映射关系,所述系统包括:
构造模块,用于根据所述最少公共子串集合构造出采用连续内存数组存放的数据集,所述数据集中各数据成员为结构体,各所述数据成员中包括计数值、与其他数据成员之间的关联信息、双向链表指针头节点和自身在数组中的索引值;
划分模块,用于根据各所述计数值将各所述数据成员作为节点划分到预设双向链表指针数组的各个分区;
筛选模块,用于从各所述分区中依次取出第一目标节点,并根据与所述第一目标节点关联的第二目标节点的索引值更新所述预设双向链表指针数组;
确认模块,用于在各所述分区中不存在节点时,确认完成数据筛选;
其中,所述第一目标节点为最大计数值所在分区的首个节点,所述计数值表征了所述数据成员映射的原始字符串的条数。
通过应用以上技术方案,预先按指定长度从全词规则集中提取去重后的最少公共子串集合,并建立各最少公共子串与原始字符串的映射关系,根据最少公共子串集合构造出采用连续内存数组存放的数据集,数据集中各数据成员为结构体,各数据成员中包括计数值、与其他数据成员之间的关联信息、双向链表指针头节点和自身在数组中的索引值;根据各计数值将各数据成员作为节点划分到预设双向链表指针数组的各个分区;从各分区中依次取出第一目标节点,并根据与第一目标节点关联的第二目标节点的索引值更新预设双向链表指针数组;在各分区中不存在节点时,确认完成数据筛选;其中,第一目标节点为最大计数值所在分区的首个节点,计数值表征了数据成员映射的原始字符串的条数,从而避免了多次重新对数据集的完整排序,提高了对最少公共子串集合的筛选效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例提出的一种基于双向链表的数据筛选方法的流程示意图;
图2示出了本发明实施例中数据分区流程示意图;
图3示出了本发明实施例中更新预设双向链表指针数组的流程示意图;
图4示出了本发明实施例中动态数据集和双向链表指针数组映射关系示意图;
图5示出了本发明实施例提出的一种基于双向链表的数据筛选系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种基于双向链表的数据筛选方法,旨在解决动态数据集筛选过程中多次对动态变化的大规模数据集进行完整排序或扫描取最大值的操作造成处理效率低、耗时长的缺点,预先按指定长度从全词规则集中提取去重后的最少公共子串集合,并建立各最少公共子串与原始字符串的映射关系,如图1所示,该方法包括以下步骤:
步骤S101,根据所述最少公共子串集合构造出采用连续内存数组存放的数据集,所述数据集中各数据成员为结构体,各所述数据成员中包括计数值、与其他数据成员之间的关联信息、双向链表指针头节点和自身在数组中的索引值。
本实施例中,最少公共子串为划分次数最少的公共子串。在进行步骤S101之前,预先按指定长度从全词规则集中提取最少公共子串集合并去重,指定长度可以为2-4,然后建立各最少公共子串与原始字符串的映射关系。在步骤S101中,根据最少公共子串集合构造出数据集,该数据集采用连续内存数组存放,数据集中各数据成员为结构体。有序排列的同类数据元素的集合称为数组,结构体是由一批数据组合而成的结构型数据。
各数据成员中包括计数值、与其他数据成员之间的关联信息、双向链表指针头节点和自身在数组中的索引值。计数值表征了数据成员映射的原始字符串的条数,计数值为整形数值。
步骤S102,根据各所述计数值将各所述数据成员作为节点划分到预设双向链表指针数组的各个分区。
本实施例中,预先构造预设双向链表指针数组,该预设双向链表指针数组包括多个分区,根据各数据成员计数值将各数据成员作为链表的节点划分到各分区。
为了准确的将数据成员划分到各分区,在本申请一些实施例中,各所述分区带有表征数组深度的下标,根据各所述计数值将各所述数据成员作为节点划分到预设双向链表指针数组的各个分区,具体为:
依次将各所述数据成员作为当前数据成员,并将当前数据成员的当前计数值减一后确定目标下标,并基于目标下标确定目标分区;
若所述目标分区是所述预设双向链表指针数组上最后一个分区,从头遍历所述预设双向链表指针数组并确定第一个小于当前计数值的第三目标节点,将当前数据成员作为节点插入所述第三目标节点之前;
若所述目标分区不是所述预设双向链表指针数组上最后一个分区,基于尾部插入法将当前数据成员作为节点插入;
其中,最后一个分区中各节点的计数值不小于最后一个分区的下标。
本实施例中,预设双向链表指针数组是按照预设数组深度构造的,预设数组深度由数据集的规模确定,该预设数组深度不超过预设深度。每个分区带有表征数组深度的下标,各分区的下标从零开始,该下标加一代表分区中数据成员(也即各节点)的计数值,最后一个分区中各节点的计数值不小于最后一个分区的下标,举例来说,若预设双向链表指针数组的数组深度为128,下标为127的分区中的各节点的计数值不小于127。
在对各数据成员进行划分时,依次将各数据成员作为当前数据成员,并将当前数据成员的当前计数值减一后确定目标下标,并基于目标下标确定目标分区,然后判断目标分区是否为最后一个分区,若是,则基于插入排序法将当前数据成员作为节点插入,也即从头遍历预设双向链表指针数组并确定第一个小于当前计数值的第三目标节点,将当前数据成员作为节点插入第三目标节点之前;若否,则基于尾部插入法将当前数据成员作为节点直接插入。
可选的,预设深度为512。
需要说明的是,以上实施例的方案仅为本申请所提出的一种具体实现方案,其他根据各计数值将各数据成员作为节点划分到预设双向链表指针数组的各个分区的方式均属于本申请的保护范围。
步骤S103,从各所述分区中依次取出第一目标节点,并根据与所述第一目标节点关联的第二目标节点的索引值更新所述预设双向链表指针数组。
本实施例中,第一目标节点为最大计数值所在分区的首个节点,在取出第一目标节点后,将消除对应的原始字符串,与第一目标节点关联的第二目标节点的计数值将发生变化,因此需要更新预设双向链表指针数组。具体的,根据与第一目标节点对应的与其他数据成员之间的关联信息确定关联的第二目标节点,然后根据第二目标节点的索引值(即自身在数组中的索引值)更新预设双向链表指针数组。
可以理解的是,可存在一个或多个与第一目标节点关联的第二目标节点,若第二目标节点为多个,依次根据各第二目标节点的索引值更新所述预设双向链表指针数组。
可以理解的是,若第一目标节点不存在关联的第二目标节点,则取出第一目标节点,不再根据第二目标节点的索引值更新预设双向链表指针数组。
为了准确的更新预设双向链表指针数组,在本申请一些实施例中,根据与所述第一目标节点关联的第二目标节点的索引值更新所述预设双向链表指针数组,具体为:
根据所述第二目标节点的索引值确定所述第二目标节点的计数值;
将所述计数值减一并确定所述第二目标节点的新计数值;
若所述新计数值为零,在所述预设双向链表指针数组中删除所述第二目标节点;
若所述新计数值不为零,根据所述新计数值调整所述第二目标节点在所述预设双向链表指针数组中的位置。
本实施例中,先根据第二目标节点的索引值确定第二目标节点的计数值,然后将该计数值减一,确定第二目标节点的新计数值,判断新计数值是否为零,若为零,则在预设双向链表指针数组中删除第二目标节点;若不为零,则新计数值调整第二目标节点在预设双向链表指针数组中的位置。
需要说明的是,以上实施例的方案仅为本申请所提出的一种具体实现方案,其他根据与第一目标节点关联的第二目标节点的索引值更新预设双向链表指针数组的方式均属于本申请的保护范围。
为了在新计数值不为零时准确调整第二目标节点的位置,在本申请一些实施例中,若所述新计数值不为零,根据所述新计数值调整所述第二目标节点在所述预设双向链表指针数组中的位置,具体为:
若所述第二目标节点处于最后一个分区且存在所述第二目标节点的后继节点,将所述新计数值和所述后继节点的计数值进行比较,并根据比较结果使所述第二目标节点保持不动或与所述后继节点交换位置;
若所述第二目标节点处于最后一个分区且不存在所述后继节点,将所述第二目标节点保持不动或将所述第二目标节点挪动到当前所处分区的前一个分区;
若所述第二目标节点不处于最后一个分区,将所述第二目标节点挪动到当前所处分区的前一个分区。
本实施例中,判断第二目标节点是否处于最后一个分区,若处于最后一个分区,则判断是否存在后继节点,若存在,则将新计数值和后继节点的计数值进行比较,并根据比较结果使第二目标节点保持不动或与后继节点交换位置;若不存在,则将第二目标节点保持不动或将第二目标节点挪动到当前所处分区的前一个分区;若不处于最后一个分区,则将第二目标节点挪动到当前所处分区的前一个分区。
步骤S104,在各所述分区中不存在节点时,确认完成数据筛选。
为了准确的获取筛选结果,在本申请一些实施例中,在确认完成数据筛选之后,所述方法还包括:
将取出的各第一目标节点用结果集数组的形式存储为筛选结果。
通过应用以上技术方案,预先按指定长度从全词规则集中提取去重后的最少公共子串集合,并建立各最少公共子串与原始字符串的映射关系,根据最少公共子串集合构造出采用连续内存数组存放的数据集,数据集中各数据成员为结构体,各数据成员中包括计数值、与其他数据成员之间的关联信息、双向链表指针头节点和自身在数组中的索引值;根据各计数值将各数据成员作为节点划分到预设双向链表指针数组的各个分区;从各分区中依次取出第一目标节点,并根据与第一目标节点关联的第二目标节点的索引值更新预设双向链表指针数组;在各分区中不存在节点时,确认完成数据筛选;其中,第一目标节点为最大计数值所在分区的首个节点,计数值表征了数据成员映射的原始字符串的条数,从而避免了多次重新对数据集的完整排序,提高了对最少公共子串集合的筛选效率。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
本申请实施例提供一种基于双向链表的数据筛选方法,为字符串匹配引擎的预筛引擎提取准备预筛规则数据。预筛引擎输入的是字符串集合的最少公共子串集合,最少公共子串长度可指定,一般指定长度为2-4。本实施例应用于最少公共子串筛选阶段,预先处理拆分出指定长度去重后的最少公共子串集合,并建立每个最少公共子串与其映射的原始字符串之间的映射关系。本实施例将动态数据集进行分区,在数据筛选阶段根据数据变化动态处理,避免了多次重新对数据集的排序。
该方法包括以下步骤:
步骤1,初始化构造数据集,数据集采用连续内存数组存放。数据集中各数据成员为结构体,各数据成员中包括计数值、与其他数据成员之间的关联信息、双向链表指针头节点和自身在数组中的索引值。
步骤2,构造一个双向链表指针数组,用于数据分区排序。双向链表指针数组的数组深度根据数据集的规模设定,一般设在512以下,(分区下标从0开始)分区下标加1代表当前分区所链的数据成员的计数值的大小,最后一个分区中各节点的计数值不小于最后一个分区的下标。
步骤3,数据集数据分区,如图2所示,包括以下步骤:
步骤S201,开始。
步骤S202,遍历数据集中各数据成员并确定当前数据成员的数据结构。
步骤S203,基于当前数据成员的当前计数值查找目标下标并确定目标分区。
具体的,当前计数值减一即为目标下标,基于目标下标确定目标分区。
步骤S204,目标分区是否为最后一个分区,若是执行步骤S205,否则执行步骤S206。
步骤S205,插入排序法插入。
具体的,从头遍历双向链表指针数组并确定第一个小于当前计数值的第三目标节点,将当前数据成员作为节点插入第三目标节点之前。
步骤S206,尾部插入法插入。
具体的,将当前数据成员直接插入。
步骤S207,当前数据成员是否为最后一个数据成员,若是执行步骤S208,否则执行步骤S202。
步骤S208,结束。
步骤4,数据筛选。从各分区中依次取出第一目标节点,将取出的各第一目标节点用结果集数组的形式存储为筛选结果。
步骤5,数据动态变化处理。如图3所示,包括以下步骤:
步骤S301,开始。
步骤S302,取出第一目标节点,确定与第一目标节点关联的第二目标节点的索引值。
步骤S303,根据索引值确定第二目标节点的数据结构。
步骤S304,将数据结构中的计数值减一。
步骤S305,是否计数值=0,若是执行步骤S306,否则执行步骤S307。
步骤S306,删除第二目标节点。
步骤S307,是否在最后一个分区,若是执行步骤S308,否则执行步骤S309。
步骤S308,若存在后继节点,则与后继节点比较后保持不动或交换位置;若不存在后继节点,则保持不动或挪动到前一个分区。
步骤S309,挪动到当前分区的前一分区。
步骤S310,是否是最后一个第二目标节点,若是执行步骤S311,否则执行步骤S302。
步骤S311,结束。
步骤6,重复步骤4,直到双向链表指针数组中各分区中不在有节点,完成数据筛选。
如图4所示为动态数据集和双向链表指针数组映射关系示意图。
通过应用以上技术方案,具有以下有益效果:
(1)仅需要在第一次对数据集的数据成员进行分区时对数据集进行一次遍历,且仅在最后一个分区中进行插入排序,其它区间数据排序复杂度为O(1)。
(2)筛选过程中数据集动态变化,处于最后一个分区的节点数值变化只需与其后继节点比较一次即可确定调整位置,无需对全集进行排序。
(3)索引复杂度为O(1),节点中存储的索引值即为该节点在数组中的下标。
(4)双向量表指针节点从双向链表指针分区迁移,位置调整,删除,只需操作当前节点,复杂度为O(1)。
本申请实施例还提出了一种基于双向链表的数据筛选系统,预先按指定长度从全词规则集中提取去重后的最少公共子串集合,并建立各最少公共子串与原始字符串的映射关系,如图5所示,该系统包括:
构造模块10,用于根据所述最少公共子串集合构造出采用连续内存数组存放的数据集,所述数据集中各数据成员为结构体,各所述数据成员中包括计数值、与其他数据成员之间的关联信息、双向链表指针头节点和自身在数组中的索引值;
划分模块20,用于根据各所述计数值将各所述数据成员作为节点划分到预设双向链表指针数组的各个分区;
筛选模块30,用于从各所述分区中依次取出第一目标节点,并根据与所述第一目标节点关联的第二目标节点的索引值更新所述预设双向链表指针数组;
确认模块40,用于在各所述分区中不存在节点时,确认完成数据筛选;
其中,所述第一目标节点为最大计数值所在分区的首个节点,所述计数值表征了所述数据成员映射的原始字符串的条数。
在具体的应用场景中,各所述分区带有表征数组深度的下标,划分模块20,具体用于:
依次将各所述数据成员作为当前数据成员,并将当前数据成员的当前计数值减一后确定目标下标,并基于目标下标确定目标分区;
若所述目标分区是所述预设双向链表指针数组上最后一个分区,从头遍历所述预设双向链表指针数组并确定第一个小于当前计数值的第三目标节点,将当前数据成员作为节点插入所述第三目标节点之前;
若所述目标分区不是所述预设双向链表指针数组上最后一个分区,基于尾部插入法将当前数据成员作为节点插入;
其中,最后一个分区中各节点的计数值不小于最后一个分区的下标。
在具体的应用场景中,筛选模块30,具体用于:
根据所述第二目标节点的索引值确定所述第二目标节点的计数值;
将所述计数值减一并确定所述第二目标节点的新计数值;
若所述新计数值为零,在所述预设双向链表指针数组中删除所述第二目标节点;
若所述新计数值不为零,根据所述新计数值调整所述第二目标节点在所述预设双向链表指针数组中的位置。
在具体的应用场景中,若所述新计数值不为零,筛选模块30,还具体用于:
若所述第二目标节点处于最后一个分区且存在所述第二目标节点的后继节点,将所述新计数值和所述后继节点的计数值进行比较,并根据比较结果使所述第二目标节点保持不动或与所述后继节点交换位置;
若所述第二目标节点处于最后一个分区且不存在所述后继节点,将所述第二目标节点保持不动或将所述第二目标节点挪动到当前所处分区的前一个分区;
若所述第二目标节点不处于最后一个分区,将所述第二目标节点挪动到当前所处分区的前一个分区。
在具体的应用场景中,所述系统还包括存储模块,用于:
将取出的各第一目标节点用结果集数组的形式存储为筛选结果。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种基于双向链表的数据筛选方法,其特征在于,预先按指定长度从全词规则集中提取去重后的最少公共子串集合,并建立各最少公共子串与原始字符串的映射关系,所述方法包括:
根据所述最少公共子串集合构造出采用连续内存数组存放的数据集,所述数据集中各数据成员为结构体,各所述数据成员中包括计数值、与其他数据成员之间的关联信息、双向链表指针头节点和自身在数组中的索引值;
根据各所述计数值将各所述数据成员作为节点划分到预设双向链表指针数组的各个分区;
从各所述分区中依次取出第一目标节点,并根据与所述第一目标节点关联的第二目标节点的索引值更新所述预设双向链表指针数组;
在各所述分区中不存在节点时,确认完成数据筛选;
其中,所述第一目标节点为最大计数值所在分区的首个节点,所述计数值表征了所述数据成员映射的原始字符串的条数。
2.如权利要求1所述的方法,其特征在于,各所述分区带有表征数组深度的下标,根据各所述计数值将各所述数据成员作为节点划分到预设双向链表指针数组的各个分区,具体为:
依次将各所述数据成员作为当前数据成员,并将当前数据成员的当前计数值减一后确定目标下标,并基于目标下标确定目标分区;
若所述目标分区是所述预设双向链表指针数组上最后一个分区,从头遍历所述预设双向链表指针数组并确定第一个小于当前计数值的第三目标节点,将当前数据成员作为节点插入所述第三目标节点之前;
若所述目标分区不是所述预设双向链表指针数组上最后一个分区,基于尾部插入法将当前数据成员作为节点插入;
其中,最后一个分区中各节点的计数值不小于最后一个分区的下标。
3.如权利要求1所述的方法,其特征在于,根据与所述第一目标节点关联的第二目标节点的索引值更新所述预设双向链表指针数组,具体为:
根据所述第二目标节点的索引值确定所述第二目标节点的计数值;
将所述计数值减一并确定所述第二目标节点的新计数值;
若所述新计数值为零,在所述预设双向链表指针数组中删除所述第二目标节点;
若所述新计数值不为零,根据所述新计数值调整所述第二目标节点在所述预设双向链表指针数组中的位置。
4.如权利要求3所述的方法,其特征在于,若所述新计数值不为零,根据所述新计数值调整所述第二目标节点在所述预设双向链表指针数组中的位置,具体为:
若所述第二目标节点处于最后一个分区且存在所述第二目标节点的后继节点,将所述新计数值和所述后继节点的计数值进行比较,并根据比较结果使所述第二目标节点保持不动或与所述后继节点交换位置;
若所述第二目标节点处于最后一个分区且不存在所述后继节点,将所述第二目标节点保持不动或将所述第二目标节点挪动到当前所处分区的前一个分区;
若所述第二目标节点不处于最后一个分区,将所述第二目标节点挪动到当前所处分区的前一个分区。
5.如权利要求1所述的方法,其特征在于,在确认完成数据筛选之后,所述方法还包括:
将取出的各所述第一目标节点用结果集数组的形式存储为筛选结果。
6.一种基于双向链表的数据筛选系统,其特征在于,预先按指定长度从全词规则集中提取去重后的最少公共子串集合,并建立各最少公共子串与原始字符串的映射关系,所述系统包括:
构造模块,用于根据所述最少公共子串集合构造出采用连续内存数组存放的数据集,所述数据集中各数据成员为结构体,各所述数据成员中包括计数值、与其他数据成员之间的关联信息、双向链表指针头节点和自身在数组中的索引值;
划分模块,用于根据各所述计数值将各所述数据成员作为节点划分到预设双向链表指针数组的各个分区;
筛选模块,用于从各所述分区中依次取出第一目标节点,并根据与所述第一目标节点关联的第二目标节点的索引值更新所述预设双向链表指针数组;
确认模块,用于在各所述分区中不存在节点时,确认完成数据筛选;
其中,所述第一目标节点为最大计数值所在分区的首个节点,所述计数值表征了所述数据成员映射的原始字符串的条数。
7.如权利要求6所述的系统,其特征在于,各所述分区带有表征数组深度的下标,所述划分模块,具体用于:
依次将各所述数据成员作为当前数据成员,并将当前数据成员的当前计数值减一后确定目标下标,并基于目标下标确定目标分区;
若所述目标分区是所述预设双向链表指针数组上最后一个分区,从头遍历所述预设双向链表指针数组并确定第一个小于当前计数值的第三目标节点,将当前数据成员作为节点插入所述第三目标节点之前;
若所述目标分区不是所述预设双向链表指针数组上最后一个分区,基于尾部插入法将当前数据成员作为节点插入;
其中,最后一个分区中各节点的计数值不小于最后一个分区的下标。
8.如权利要求6所述的系统,其特征在于,所述筛选模块,具体用于:
根据所述第二目标节点的索引值确定所述第二目标节点的计数值;
将所述计数值减一并确定所述第二目标节点的新计数值;
若所述新计数值为零,在所述预设双向链表指针数组中删除所述第二目标节点;
若所述新计数值不为零,根据所述新计数值调整所述第二目标节点在所述预设双向链表指针数组中的位置。
9.如权利要求8所述的系统,其特征在于,若所述新计数值不为零,所述筛选模块,还具体用于:
若所述第二目标节点处于最后一个分区且存在所述第二目标节点的后继节点,将所述新计数值和所述后继节点的计数值进行比较,并根据比较结果使所述第二目标节点保持不动或与所述后继节点交换位置;
若所述第二目标节点处于最后一个分区且不存在所述后继节点,将所述第二目标节点保持不动或将所述第二目标节点挪动到当前所处分区的前一个分区;
若所述第二目标节点不处于最后一个分区,将所述第二目标节点挪动到当前所处分区的前一个分区。
10.如权利要求6所述的系统,其特征在于,所述系统还包括存储模块,用于:
将取出的各所述第一目标节点用结果集数组的形式存储为筛选结果。
CN202210394936.1A 2022-04-15 2022-04-15 一种基于双向链表的数据筛选方法和系统 Active CN114756591B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210394936.1A CN114756591B (zh) 2022-04-15 2022-04-15 一种基于双向链表的数据筛选方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210394936.1A CN114756591B (zh) 2022-04-15 2022-04-15 一种基于双向链表的数据筛选方法和系统

Publications (2)

Publication Number Publication Date
CN114756591A true CN114756591A (zh) 2022-07-15
CN114756591B CN114756591B (zh) 2022-10-14

Family

ID=82330475

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210394936.1A Active CN114756591B (zh) 2022-04-15 2022-04-15 一种基于双向链表的数据筛选方法和系统

Country Status (1)

Country Link
CN (1) CN114756591B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115374299A (zh) * 2022-10-24 2022-11-22 杭州悦数科技有限公司 分布式图数据库中可达性索引的分层构建方法和系统
CN115794838A (zh) * 2023-02-07 2023-03-14 深圳开源互联网安全技术有限公司 双向链表的存储方法、装置、终端设备及存储介质

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040034656A1 (en) * 2002-08-13 2004-02-19 Xerox Corporation Information retrieval and encoding via substring-number mapping
US20060095480A1 (en) * 2004-10-29 2006-05-04 Microsoft Corporation Method and subsystem for performing subset computation for replication topologies
CN101944119A (zh) * 2010-09-21 2011-01-12 国网电力科学研究院 一种智能电子设备的实时事件管理方法
CN105426408A (zh) * 2015-11-02 2016-03-23 北京锐安科技有限公司 一种多索引的数据处理方法及装置
US20170116238A1 (en) * 2015-10-26 2017-04-27 Intelliresponse Systems Inc. System and method for determining common subsequences
CN108280085A (zh) * 2017-01-06 2018-07-13 工业和信息化部电信研究院 数据去重的方法及装置
CN110929103A (zh) * 2019-11-20 2020-03-27 车智互联(北京)科技有限公司 为数据集合构建索引的方法、数据查询方法及计算设备
CN111177491A (zh) * 2019-12-31 2020-05-19 奇安信科技集团股份有限公司 正则表达式的匹配方法、装置、电子设备及存储介质
CN111737263A (zh) * 2020-06-30 2020-10-02 中国平安财产保险股份有限公司 筛选信息的方法、装置和计算机设备
CN112463542A (zh) * 2020-12-15 2021-03-09 深圳供电局有限公司 日志异常原因诊断方法、装置、计算机设备和存储介质
CN112699155A (zh) * 2020-12-28 2021-04-23 北京明朝万达科技股份有限公司 数据筛选方法和装置
CN113138859A (zh) * 2020-01-17 2021-07-20 北京中软万维网络技术有限公司 一种基于共享内存池的通用数据存储方法
CN113190623A (zh) * 2021-05-14 2021-07-30 京东数科海益信息科技有限公司 数据处理方法、装置、服务器和存储介质
WO2021258848A1 (zh) * 2020-06-24 2021-12-30 平安科技(深圳)有限公司 数据字典生成方法、数据查询方法、装置、设备及介质
CN114020822A (zh) * 2021-11-16 2022-02-08 深圳平安综合金融服务有限公司 基于接口数据造数的数据测试方法、装置、设备及介质
CN114238709A (zh) * 2021-12-02 2022-03-25 阿里巴巴(中国)有限公司 字符串匹配方法、装置、设备和可读存储介质

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040034656A1 (en) * 2002-08-13 2004-02-19 Xerox Corporation Information retrieval and encoding via substring-number mapping
US20060095480A1 (en) * 2004-10-29 2006-05-04 Microsoft Corporation Method and subsystem for performing subset computation for replication topologies
CN101944119A (zh) * 2010-09-21 2011-01-12 国网电力科学研究院 一种智能电子设备的实时事件管理方法
US20170116238A1 (en) * 2015-10-26 2017-04-27 Intelliresponse Systems Inc. System and method for determining common subsequences
CN105426408A (zh) * 2015-11-02 2016-03-23 北京锐安科技有限公司 一种多索引的数据处理方法及装置
CN108280085A (zh) * 2017-01-06 2018-07-13 工业和信息化部电信研究院 数据去重的方法及装置
CN110929103A (zh) * 2019-11-20 2020-03-27 车智互联(北京)科技有限公司 为数据集合构建索引的方法、数据查询方法及计算设备
CN111177491A (zh) * 2019-12-31 2020-05-19 奇安信科技集团股份有限公司 正则表达式的匹配方法、装置、电子设备及存储介质
CN113138859A (zh) * 2020-01-17 2021-07-20 北京中软万维网络技术有限公司 一种基于共享内存池的通用数据存储方法
WO2021258848A1 (zh) * 2020-06-24 2021-12-30 平安科技(深圳)有限公司 数据字典生成方法、数据查询方法、装置、设备及介质
CN111737263A (zh) * 2020-06-30 2020-10-02 中国平安财产保险股份有限公司 筛选信息的方法、装置和计算机设备
CN112463542A (zh) * 2020-12-15 2021-03-09 深圳供电局有限公司 日志异常原因诊断方法、装置、计算机设备和存储介质
CN112699155A (zh) * 2020-12-28 2021-04-23 北京明朝万达科技股份有限公司 数据筛选方法和装置
CN113190623A (zh) * 2021-05-14 2021-07-30 京东数科海益信息科技有限公司 数据处理方法、装置、服务器和存储介质
CN114020822A (zh) * 2021-11-16 2022-02-08 深圳平安综合金融服务有限公司 基于接口数据造数的数据测试方法、装置、设备及介质
CN114238709A (zh) * 2021-12-02 2022-03-25 阿里巴巴(中国)有限公司 字符串匹配方法、装置、设备和可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115374299A (zh) * 2022-10-24 2022-11-22 杭州悦数科技有限公司 分布式图数据库中可达性索引的分层构建方法和系统
CN115794838A (zh) * 2023-02-07 2023-03-14 深圳开源互联网安全技术有限公司 双向链表的存储方法、装置、终端设备及存储介质

Also Published As

Publication number Publication date
CN114756591B (zh) 2022-10-14

Similar Documents

Publication Publication Date Title
CN114756591B (zh) 一种基于双向链表的数据筛选方法和系统
US7697518B1 (en) Integrated search engine devices and methods of updating same using node splitting and merging operations
CN111143368B (zh) 一种关系型数据库数据对比方法及系统
CN109522428B (zh) 一种基于索引定位的图计算系统的外存访问方法
US7054994B2 (en) Multiple-RAM CAM device and method therefor
CN111126625B (zh) 一种可扩展的学习索引方法及系统
Awad et al. Dynamic graphs on the GPU
CN113268459A (zh) 基于fastq基因大数据的批量分布式压缩方法
CN112085644A (zh) 多列数据排序方法、装置、可读存储介质和电子设备
CN108875914B (zh) 对神经网络数据进行预处理和后处理的方法和装置
EP0318985A2 (en) Interrogating device and method
CN110097581B (zh) 基于点云配准icp算法构建k-d树的方法
CN116485629A (zh) 一种多gpu并行几何处理的图形处理方法及系统
CN110222055B (zh) 一种动态图下多边更新的单轮核值维护方法
CN112651488A (zh) 一种改善大型图卷积神经网络的训练效率的方法
CN109741421B (zh) 一种基于gpu的动态图着色方法
CN112269784A (zh) 一种基于硬件实现的哈希表结构以及插入、查询和删除方法
CN111985366A (zh) 一种道路中心线及桩号识别方法、装置
EP0318984A2 (en) Interrogating device
CN115206434A (zh) 一种基于De Bruijn图的多序列比对方法
CN110149234B (zh) 图数据压缩方法、装置、服务器及存储介质
CN114490799A (zh) 单个图的频繁子图挖掘方法及装置
CN112100446A (zh) 搜索方法、可读存储介质和电子设备
CN112328629B (zh) 实体对象处理方法、装置和电子设备
CN110825846A (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
TR01 Transfer of patent right

Effective date of registration: 20240719

Address after: 230008 Hefei High tech Zone Innovation Industrial Park Phase II J2A Building 1203, Anhui Province

Patentee after: Hefei Zhuoxin cloud Technology Co.,Ltd.

Country or region after: China

Address before: 610000 room 1, floor 7, unit 1, building 3, No. 10, Keyuan Second Road, Chengdu high tech Zone, Chengdu, Sichuan Province

Patentee before: Chengdu zhuoxun Zhian Technology Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right