CN109857740B - 字符串的存储方法、匹配方法、电子设备及可读存储介质 - Google Patents

字符串的存储方法、匹配方法、电子设备及可读存储介质 Download PDF

Info

Publication number
CN109857740B
CN109857740B CN201910075267.XA CN201910075267A CN109857740B CN 109857740 B CN109857740 B CN 109857740B CN 201910075267 A CN201910075267 A CN 201910075267A CN 109857740 B CN109857740 B CN 109857740B
Authority
CN
China
Prior art keywords
character string
data block
dimension
length
preset
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
Application number
CN201910075267.XA
Other languages
English (en)
Other versions
CN109857740A (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.)
Shanghai Zerui Information Technology Co ltd
Original Assignee
Shanghai Zerui Information 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 Shanghai Zerui Information Technology Co ltd filed Critical Shanghai Zerui Information Technology Co ltd
Priority to CN201910075267.XA priority Critical patent/CN109857740B/zh
Publication of CN109857740A publication Critical patent/CN109857740A/zh
Application granted granted Critical
Publication of CN109857740B publication Critical patent/CN109857740B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明实施例公开了一种字符串的存储方法、匹配方法、电子设备及可读存储介质,通过将字符串的各字符的二进制数序列排列形成的位图按照预定的方式分为多个数据块,并将所述多个数据块分别存储至对应的存储单元,以存储所述字符串,由此,可以通过选择至少一个目标字符串对应的位图的数据块分别与对应的存储单元中的各待匹配字符串对应的数据块进行匹配,以获取字符串备选集,由此,可以通过较少的数据交换滤除大量与目标字符串不匹配的字符串,提高了数据的访问效率和字符串的匹配效率。

Description

字符串的存储方法、匹配方法、电子设备及可读存储介质
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种字符串的存储方法、匹配方法、电子设备及可读存储介质。
背景技术
字符串的匹配是指在对应的数据库中获取与目标字符串完全匹配的字符串,是一种数据库的常见操作。随着现代数据量的急剧增长,字符串的数据规模也越来越大,现有技术对字符串的匹配效率已不能与越来越大的数据量相适配,因此,如何更加高效进行字符串的匹配成为了目前亟待解决的问题。
发明内容
有鉴于此,本发明实施例提供一种字符串的存储方法、匹配方法、电子设备及可读存储介质,以通过较少的数据交换滤除大量与目标字符串不匹配的字符串,提高数据的访问效率和字符串的匹配效率。
第一方面,本发明实施例提供一种字符串的存储方法,所述方法包括:
获取待存储的字符串,其中,所述字符串的各字符为对应的二进制数序列;
根据各字符的二进制数序列获取所述字符串对应的第一位图;
将所述第一位图按照第一预定长度和第一预定宽度分为多个数据块,并将所述多个数据块分别存储至对应的存储单元中。
进一步地,所述根据所述各字符的二进制数序列获取所述字符串对应的第一位图包括:
将所述各字符的二进制数序列按照预定维度进行排列以获取所述字符串对应的第一位图,所述预定维度包括第一维度和第二维度。
进一步地,所述第一预定宽度为1,所述第一预定长度为处理器的寄存器位数的整数倍,其中,所述第一预定宽度对应的维度与所述预定维度相同,所述第一预定长度对应的维度与所述预定维度相反。
进一步地,所述第一维度为列,所述第二维度为行。
进一步地,所述将所述各字符的二进制数序列按照预定维度进行排列以获取所述字符串对应的第一位图包括:
响应于所述字符串的长度不满足所述第一预定长度的整数倍,在所述第一预定长度对应的维度上填充0,以使得所述第一预定长度对应的维度上的二进制数序列的长度满足所述第一预定长度的整数倍,从而获取所述字符串对应的第一位图。
进一步地,所述存储单元存储有在已存储的字符串对应的第一位图的相同位置上的数据块。
第二方面,本发明实施例提供一种字符串的匹配方法,所述方法包括:
获取目标字符串,其中,所述目标字符串的各字符为对应的二进制数序列;
根据所述目标字符串中的各字符的二进制数序列获取所述目标字符串对应的第一位图;
将所述目标字符串对应的第一位图按照第一预定长度和第一预定宽度分为多个第一数据块;
选择至少一个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块进行匹配,以获取字符串备选集,所述存储单元中的各第二数据块为已存储的各待匹配字符串对应的第一位图在第一位置上的数据块;
其中,所述第一数据块处于所述目标字符串对应的第一位图的第一位置上。
进一步地,所述选择至少一个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块进行匹配,以获取字符串备选集包括:
采用不同的线程并行处理每个所述第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块的匹配过程。
进一步地,所述选择至少一个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块进行匹配,以获取字符串备选集包括:
将各所述第一数据块按照第二预定长度分为多个第三数据块,其中,所述第一预定长度为所述第二预定长度的整数倍,所述第二预定长度为所述处理器的寄存器位数的整数倍;
采用不同的线程并行处理每个所述第三数据块分别与所述对应的存储单元中的各待匹配字符串对应的第二数据块中对应数据的匹配过程。
进一步地,所述处理器为CPU处理器或GPU处理器。
进一步地,所述方法还包括:
将所述目标字符串的各字符分别与所述字符串备选集中的字符串的各字符逐一匹配以获取匹配结果,所述匹配结果为与所述目标字符串完全匹配的字符串。
进一步地,所述将所述目标字符串对应的第一位图按照第一预定长度和第一预定宽度分为多个第一数据块包括:
将所述目标字符串的各字符的二进制数序列按照预定维度进行排列以获取所述目标字符串对应的第一位图,所述预定维度包括第一维度和第二维度。
进一步地,所述第一预定宽度为1,所述第一预定长度为处理器的寄存器位数的整数倍,其中,所述第一预定宽度对应的维度与所述预定维度相同,所述第一预定长度对应的维度与所述预定维度相反。
进一步地,所述第一维度为列,所述第二维度为行。
进一步地,所述将所述目标字符串的各字符的二进制数序列按照预定维度进行排列以获取所述目标字符串对应的第一位图包括:
响应于所述目标字符串的长度不满足所述第一预定长度的整数倍,在所述第一预定长度对应的维度上填充0,以使得所述第一预定长度对应的维度上的二进制数序列的长度满足所述第一预定长度的整数倍,从而获取所述目标字符串对应的第一位图。
第三方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行用以实现如本发明实施例的第一方面所述的方法和/或如本发明实施例的第二方面所述的方法。
进一步地,所述处理器为CPU处理器或GPU处理器。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行以实现如本发明实施例的第一方面所述的方法和/或如本发明实施例的第二方面所述的方法。
本发明实施例的技术方案通过将字符串的各字符的二进制数序列排列形成的位图按照预定的方式分为多个数据块,并将所述多个数据块分别存储至对应的存储单元,以存储所述字符串,由此,可以通过选择至少一个目标字符串对应的位图的数据块分别与对应的存储单元中的各待匹配字符串对应的数据块进行匹配,以获取字符串备选集,由此,可以通过较少的数据交换滤除大量与目标字符串不匹配的字符串,提高了数据的访问效率和字符串的匹配效率。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本发明实施例的字符串的存储方法的流程图;
图2是本发明实施例的字符串对应的第一位图的示意图;
图3是本发明实施例的一种实施方式的存储列表的示意图;
图4是本发明实施例的字符串的匹配方法的流程图;
图5是本发明实施例的一种实施方式的目标字符串对应的第一位图的示意图;
图6是本发明实施例的一种实施方法的字符串的匹配方法的流程图;
图7是本发明实施例的另一种实施方式的目标字符串对应的第一位图的示意图;
图8是本发明实施例的另一种实施方式的存储列表的示意图;
图9和图10是本发明实施例的获取的字符串备选集中的字符串对应的第一位图;
图11是本发明实施例的电子设备的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1是本发明实施例的字符串的存储方法的流程图。如图1所示,本发明实施例的字符串的存储方法包括以下步骤:
步骤S110,获取待存储的字符串。其中,待存储的字符串的各字符为对应的二进制数序列。在一种可选的实现方式中,待存储的字符串的各字符的二进制数序列是基于ASCII码(American Standard Code for Information Intrechange,美国信息交换标准代码)获取的。在本实施例中,以8位ASCII码为例进行描述,例如,字符串string中的各字符的二进制数序列分别为01110011、01110100、01110010、01101001、01101110、01100111。应理解,其他能够实现上述功能的编码方式均能够应用于本实施例中。
步骤S120,根据待存储的字符串中的各字符的二进制数序列获取待存储字符串对应的第一位图。在一种可选的实现方式中,将待存储的字符串中的各字符的二进制数序列按照预定维度进行排列以获取待存储的字符串对应的第一位图。其中,预定维度包括第一维度和第二维度。第一维度为列,第二维度为行。
步骤S130,将待存储的字符串对应的第一位图按照第一预定长度和第一预定宽度分为多个数据块,并将多个数据块分别存储至对应的存储单元中。其中,存储单元用于存储字符串对应的第一位图的相同位置上的数据块,所有的存储单元组成存储列表。
在一种可选的实现方式中,第一预定宽度为1,第一预定长度为处理器的寄存器位数的整数倍。其中,第一预定宽度对应的维度与预定维度相同,第一预定长度对应的维度与预定维度相反。也就是说,在预定维度为列时,上述数据块的列的长度为1,行的长度为处理器的寄存器位数的整数倍。在预定维度为行时,上述数据块的行的长度为1,列的长度为处理器的寄存器位数的整数倍。例如,对应的寄存器位数为8位,则第一预定长度为8的整数倍。
例如,预定维度为列,第一预定长度为8,第一预定宽度为1,则可以将第i行、第8*j-8*(j+1)-1列二进制数组成的数据块分别存储至存储列表中的第i行、第j列的存储单元中。其中,i大于等于0小于等于7,j大于等于0。
在一种可选的实现方式中,将待存储的字符串中的各字符的二进制数序列按照预定维度进行排列以获取待存储的字符串对应的第一位图具体为:响应于待存储的字符串的长度不满足第一预定长度的整数倍,在第一预定长度对应的维度上填充0,以使得第一预定长度对应的维度上的二进制数序列的长度满足第一预定长度的整数倍,从而获取待存储的字符串对应的第一位图。例如,以预定维度为列为例,也就是说,将待存储的字符串中的各字符的二进制数序列依次作为对应的第一位图的列,在对应的第一位图的行的长度(也即待存储的字符串的长度)不满足第一预定长度的整数倍时,增加二进制数均为0二进制数序列以使得对应的第一位图的行的长度满足第一预定长度的整数倍,从而获取待存储的字符串对应的第一位图。也就是说,在每一行的末尾添加二进制数0,直至第一位图中每行的二进制序列的长度为第一预定长度的整数倍。由此,在第一预定宽度为1时,以预定维度为列为例,则可以依次将待存储字符串对应的第一位图中的第i行、第N*j列到N*(j+1)-1列的二进制数序列组成的数据块存储至存储列表中的第i行、第j列的存储单元中。其中,i为大于等于0小于等于7的整数,N为第一预定长度,j为大于等于0的整数。应理解,N为预定值,其为处理器的寄存器位数的整数倍。
图2是本发明实施例的字符串对应的第一位图的示意图。在本实施例中,以字符串中的各字符为基于8位ASCII码的二进制数序列,预定维度为列为例进行描述。也即,在本实施例中,第一预定宽度对应的维度为列,第一预定长度对应的维度为行。如图2所示,将字符串huangmingming的各字符的二进制数序列按列依次排列形成了位图21。其中,字符串huangmingming的各字符的二进制数序列分别为01101000、01110101、01100001、01101110、01100111、01101101、01101001、01101110、01100111、01101101、01101001、01101110、0110011。如图2所示,位图21的行的长度为13,不满足第一预定长度的整数倍,则可以通过在位图21中增加3列均为0的二进制数序列,以使得待存储的字符串对应的第一位图的每行的长度均满足第一预定长度的整数倍。如图2所示,位图22为字符串huangmingming对应的第一位图。
图3是本发明实施例的一种实施方式的存储列表的示意图。其中,存储列表3用于存储字符串对应的第一位图。存储列表3包括多个存储单元,分别用于存储字符串对应的第一位图按照第一预定长度和第一预定宽度划分的多个数据块。也就是说,每个存储单元用于存储各字符串对应的第一位图的相同位置上的数据块。本实施例以处理器的寄存器位数为8位,第一预定宽度为1,第一预定长度为8位为例,依次将位图22中的第i行、第8*j列到8*(j+1)-1列的二进制数列组成的数据块存储至存储列表中的第i行、第j列的存储单元中。容易得出,本实施例中的i为大于等于0小于等于7的整数,j为大于等于0小于等于1的整数。
如图3所示,将位图22中的数据块Segment(00)为00000000(也即i=0,j=0,位图22中的第0行、第0-7列)存储至存储列表3中的第0行第0列的存储单元block(00)中,将位图22中的数据块Segment(01)为00000000(i=0,j=1)存储至存储列表3中的第0行第1列的存储单元block(01)中,将位图22中的数据块Segment(10)为11111111(i=1,j=0)存储至存储列表3中的第1行第0列的存储单元block(10)中,由此,可以将位图22中的所有数据存储至存储列表3中对应的存储单元中。
在本实施例中,通过将字符串的各字符的二进制数序列排列形成的位图按照预定的方式分为多个数据块,并将这多个数据块分别存储至对应的存储单元,以存储所述字符串,因此,本实施例可以通过选择至少一个目标字符串对应的位图的数据块分别与对应的存储单元中的各待匹配字符串对应的数据块进行匹配,以获取字符串备选集,由此,可以通过较少的数据交换滤除大量与目标字符串不匹配的字符串,提高了数据的访问效率和字符串的匹配效率。
图4是本发明实施例的字符串的匹配方法的流程图。如图4所示,本实施例的字符串的匹配方法包括以下步骤:
步骤S210,获取待匹配的目标字符串。其中,目标字符串的各字符为对应的二进制数序列。在一种可选的实现方式中,目标字符串的各字符的二进制数序列是基于ASCII码获取的。
步骤S220,根据目标字符串中的各字符的二进制数序列获取目标字符串对应的第一位图。在一种可选的实现方式中,将目标字符串中的各字符的二进制数序列按照预定维度进行排列以获取目标字符串对应的第一位图。其中,预定维度包括第一维度和第二维度。第一维度为列,第二维度为行。容易理解,获取目标字符串对应的第一位图的方式应与存储字符串时获取待存储的字符串对应的第一位图的方式保持一致。也就是说,在存储字符串时,采用的预定维度为列,则将目标字符串中的各字符的二进制数序列按列进行排列以获取待目标字符串对应的第一位图。存储字符串时,采用的预定维度为行,则将目标字符串中的各字符的二进制数序列按行进行排列以获取待目标字符串对应的第一位图。
步骤S230,将目标字符串对应的第一位图按照第一预定长度和第一预定宽度分为多个第一数据块。容易理解,第一预定长度和第一预定宽度应与字符串存储中采用的第一预定长度和第一预定宽度保持一致。在一种可选的实现方式中,第一预定宽度为1,第一预定长度为处理器的寄存器位数的整数倍。其中,第一预定宽度对应的维度与预定维度相同,第一预定长度对应的维度与预定维度相反。也就是说,在预定维度为列时,上述数据块的列的长度为1,行的长度为处理器的寄存器位数的整数倍。在预定维度为行时,上述数据块的行的长度为1,列的长度为处理器的寄存器位数的整数倍。例如,对应的寄存器位数为8位,则第一预定长度为8的整数倍。
在一种可选的实现方式中,将目标字符串中的各字符的二进制数序列按照预定维度进行排列以获取目标字符串对应的第一位图具体为:响应于目标字符串的长度不满足第一预定长度的整数倍,在第一预定长度对应的维度上填充0,以使得第一预定长度对应的维度上的二进制数序列的长度满足第一预定长度的整数倍,从而获取目标字符串对应的第一位图。例如,以预定维度为列为例,也就是说,将目标字符串中的各字符的二进制数序列依次作为对应的第一位图的列,在对应的第一位图的行的长度(也即待存储的字符串的长度)不满足第一预定长度的整数倍时,增加二进制数均为0的二进制数序列以使得对应的第一位图的每行的长度满足第一预定长度的整数倍,从而获取目标字符串对应的第一位图。
图5是本发明实施例的一种实施方式的目标字符串对应的第一位图的示意图。本实施例以将目标字符串的各字符为基于8位ASCII码的二进制数序列,第一预定宽度为1,第一预定长度为8,预定维度为列,也即第一预定宽度对应的维度为列,第一预定长度对应的维度为行为例进行描述。如图5所示,目标字符串huangmingmingsat的各字符的二进制数序列按列排列以获取第一位图5。其中,目标字符串huangmingmingsat的长度为16,是第一预定长度的整数倍,因此,不需要在第一预定长度对应的维度上填充二进制数0。由此,将目标字符串对应的第一位图5按照第一预定长度和第一预定宽度分为多个第一数据块后如图5所示。其中,目标字符串对应的第一位图中的第i行、第8*j列到8*(j+1)-1列的二进制数序列组成第一数据块Segment(ij)。其中,i为大于等于0小于等于7的整数,j为大于等于0小于等于1的整数。应理解,本实施例以目标字符串为huangmingmingsat进行举例,其并不对本实施例的目标字符串的类型和长度进行限制。
步骤S240,选择至少一个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块进行匹配,以获取字符串备选集。其中,存储单元中的各第二数据块为已存储的各待匹配字符串对应的第一位图在第一位置上的数据块。容易理解,被选择的第一数据块处于目标字符串对应的第一位图的第一位置上。例如,如图5所述,选择目标字符串huangmingmingsat对应的第一位图5中的第一数据块Segment(40)和Segment(60)做匹配,则其对应存储列表3中的存储单元为block(40)和block(60)。在存储单元block(40)中,存储有已存储的字符串对应的第一位图在第6行、第0-7列上的数据组成的数据块。
在一种可选的实现方式中,选择至少一个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块进行匹配,以获取字符串备选集具体为:采用不同的线程并行处理每个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块的匹配过程,以获取字符串备选集。其中,可以采用CPU处理器或GPU处理器等执行上述步骤。在采用GPU处理器执行上述步骤之前,还需要先将目标字符串对应的至少一个第一数据块与对应的存储单元中的各待匹配字符串对应的第二数据块导入GPU处理器。例如,将图5中的第一位图5对应的第一数据块Segment(40)、Segment(60)以及图3中的存储单元block(40)和block(60)中的各待匹配字符串对应的第二数据块导入GPU处理器。采用不同线程处理第一数据块Segment(40)分别和存储单元block(40)中的各第二数据块依次匹配的过程、以及第一数据块Segment(60)分别和存储单元block(60)中的各第二数据块依次匹配的过程。由此,可以进一步提高字符串匹配的效率。
也就是说,在一个线程中,第一数据块Segment(40)中的二进制序列“10010111”分别与图3中的存储单元中block(40)中的各第二数据块(例如“1001011”、“00001001”等)进行逐一匹配。在另一线程中,第一数据块Segment(60)中的二进制序列“00011001”分别与图3中的存储单元block(60)中的各第二数据块(例如“00011001”、“00100100”等)进行逐一匹配。如图3所示,使得第一数据块Segment(40)、Segment(60)分别与图3中的存储单元block(40)和block(60)中的各待匹配字符串对应的第二数据块进行匹配,字符串标识为01和10的字符串与目标字符串匹配成功,也就是说,字符串备选集中包括字符串标识为01和10的字符串。
图6是本发明实施例的一种实施方法的字符串的匹配方法的流程图。如图6所示,选择至少一个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块进行匹配,以获取字符串备选集具体包括以下步骤:
步骤S241,将各第一数据块按照第二预定长度分为多个第三数据块。其中,第二预定长度对应的维度与第一预定长度对应的维度相同,第一预定长度为第二预定长度的整数倍,第二预定长度为处理器的寄存器位数的整数倍。
步骤S242,采用不同的线程并行处理每个第三数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块中的对应数据的匹配过程,以获取字符串备选集。
其中,可以采用CPU处理器或GPU处理器等执行步骤S241-S242。在采用GPU处理器执行步骤S241之前,还需要先将目标字符串对应的至少一个数据块与对应的存储单元中的各待匹配字符串对应的第二数据块导入GPU处理器。
本实施方式以第一预定长度为16、第二预定长度为8来描述匹配过程。图7是本发明实施例的另一种实施方式的目标字符串对应的第一位图的示意图。图8是本发明实施例的另一种实施方式的存储列表的示意图。如图7所示,目标字符串huangmingmingsat对应的第一位图7中,第i行、第16*j至16*(j+1)-1列的二进制序列组成第一数据块Segment(ij)。其中,i为大于等于0小于等于7的整数,j等于0。也就是说,在本实施方式中,目标字符串huangmingmingsat对应的第一位图7中,每行为一个第一数据块。选取目标字符串huangmingmingsat对应的两个第一数据块Segment(40)和Segment(60)分别与图8中的存储单元block(40)和block(60)中的各待匹配字符串对应的第二数据块做匹配。将第一数据块Segment(40)和Segment(60)按照第二预定长度分为多个第三数据块。容易得到,将第一数据块Segment(40)和Segment(50)可以按照第二预定长度分为4个第三数据块,分别为10010111、01110000、00011001和10011100。将存储单元block(40)和block(60)中的数据同样按照第二预定长度划分数据组。如图8所示,存储单元block(40)和block(60)中的数据中前8列和后8列分别为不同的数据组。则采用四个线程分别处理第三数据块10010111与存储单元block(40)中的前8列数据的每行数据的匹配过程、第三数据块01110000与存储单元block(40)中的后8列数据的每行数据的匹配过程、第三数据块00011001与存储单元block(60)中的前8列数据的每行数据的匹配过程以及第三数据块10011100与存储单元block(60)中的后8列数据的每行数据的匹配过程。
在本实施例中,可以采用GPU处理器多线程并行执行字符串的匹配过程,来提高字符串匹配的效率。
在处理器执行完所有线程后输出与目标字符串huangmingmingsat对应的第三数据块10010111、01110000、00011001和10011100完全匹配的字符串的标识,根据字符串的标识获取该字符串对应的第一位图,并根据第一位图获取原字符串,从而获得字符串备选集。其中,字符串的标识在存储字符串时设置,例如按字符串的存储顺序设置字符串的标识等。
图9和图10是本发明实施例的获取的字符串备选集中的字符串对应的第一位图。如图8所示,与目标字符串huangmingmingsat对应的第三数据块10010111、01110000、00011001和10011100完全匹配的字符串的标识包括01和10,根据字符串的标识01和10获取的字符串对应的第一位图如图9和图10所示。根据第一位图9和第一位图10获取的对应的字符串分别为huangmingming和huangmingmingsat。由此,目标字符串huangmingmingsat对应的字符串备选集为{huangmingming,huangmingmingsat}。
进一步地,本发明实施例的字符串的匹配方法还包括步骤S250:将目标字符串中的各字符分别与字符串备选集中的字符串的各字符逐一匹配以获取匹配结果。其中,匹配结果包括与目标字符完全匹配的字符串。例如,将目标字符串huangmingmingsat与获取的字符串备选集{huangmingming,huangmingmingsat}中的字符串中的各字符逐一匹配,获取有一个字符串huangmingmingsat与目标字符串完全相同。
在本实施例中,通过将字符串的各字符的二进制数序列排列形成的位图按照预定的方式分为多个数据块,并将这多个数据块分别存储至对应的存储单元,以存储所述字符串,因此,本实施例可以通过选择至少一个目标字符串对应的位图的数据块分别与对应的存储单元中的各待匹配字符串对应的数据块进行匹配,以获取字符串备选集,由此,可以通过较少的数据交换滤除大量与目标字符串不匹配的字符串,提高了数据的访问效率和字符串的匹配效率。
图11是本发明实施例的电子设备的示意图。如图11所示,该电子设备11:至少包括一个处理器111;以及,与至少一个处理器111通信连接的存储器112;以及,与扫描装置通信连接的通信组件113,通信组件113在处理器111的控制下接收和发送数据;其中,存储器112存储有可被至少一个处理器111执行的指令,指令被至少一个处理器111执行以实现:
获取待存储的字符串,其中,所述字符串的各字符为对应的二进制数序列;
根据各字符的二进制数序列获取所述字符串对应的第一位图;
将所述第一位图按照第一预定长度和第一预定宽度分为多个数据块,并将所述多个数据块分别存储至对应的存储单元中。
进一步地,指令被至少一个处理器111执行用以实现:
获取目标字符串,其中,所述目标字符串的各字符为对应的二进制数序列;
根据所述目标字符串中的各字符的二进制数序列获取所述目标字符串对应的第一位图;
将所述目标字符串对应的第一位图按照第一预定长度和第一预定宽度分为多个第一数据块;
选择至少一个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块进行匹配,以获取字符串备选集,所述存储单元中的各第二数据块为已存储的各待匹配字符串对应的第一位图在第一位置上的数据块;
其中,所述第一数据块处于所述目标字符串对应的第一位图的第一位置上。
具体地,该电子设备包括:一个或多个处理器111以及存储器112,图11中以两个处理器111为例,其中一个处理器111为CPU处理器,另一个处理器为GPU处理器,其中CPU处理器和/或GPU处理器用于执行本实施例中的字符串存储方法及匹配方法的至少一个步骤。容易理解,本实施例也可以只包括一个或多个CPU处理器,或多个CPU处理器以及多个GPU处理器。处理器111、存储器112可以通过总线或者其他方式连接,图11中以通过总线连接为例。存储器112作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器111通过运行存储在存储器112中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现本发明实施例的字符串的存储方法和/或字符串的匹配方法。
存储器112可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器112可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器112可选包括相对于处理器112远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器112中,当一个或者多个模块被一个或者多个处理器111执行时,执行上述任意方法实施方式中的字符串的存储方法和/或字符串的匹配方法。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的方法。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种字符串的存储方法,其特征在于,所述方法包括:
获取待存储的字符串,其中,所述字符串的各字符为对应的二进制数序列;
根据各字符的二进制数序列获取所述字符串对应的第一位图,包括将所述各字符的二进制数序列按照预定维度进行排列以获取所述字符串对应的第一位图,所述预定维度包括第一维度和第二维度;
将所述第一位图按照第一预定长度和第一预定宽度分为多个数据块,并将所述多个数据块分别存储至对应的存储单元中,所述第一预定宽度为1,所述第一预定长度为处理器的寄存器位数的整数倍,其中,所述第一预定宽度对应的维度与所述预定维度相同,所述第一预定长度对应的维度与所述预定维度相反,在所述预定维度为列时,所述数据块的列的长度为1,所述数据块的行的长度为所述处理器的寄存器位数的整数倍,在所述预定维度为行时,所述数据块的行的长度为1,所述数据块的列的长度为所述处理器的寄存器位数的整数倍。
2.根据权利要求1所述的方法,其特征在于,所述将所述各字符的二进制数序列按照预定维度进行排列以获取所述字符串对应的第一位图包括:
响应于所述字符串的长度不满足所述第一预定长度的整数倍,在所述第一预定长度对应的维度上填充0,以使得所述第一预定长度对应的维度上的二进制数序列的长度满足所述第一预定长度的整数倍,从而获取所述字符串对应的第一位图。
3.根据权利要求1所述的方法,其特征在于,所述存储单元存储有在已存储的字符串对应的第一位图的相同位置上的数据块。
4.一种字符串的匹配方法,其特征在于,所述方法包括:
获取目标字符串,其中,所述目标字符串的各字符为对应的二进制数序列;
根据所述目标字符串中的各字符的二进制数序列获取所述目标字符串对应的第一位图;
将所述目标字符串对应的第一位图按照第一预定长度和第一预定宽度分为多个第一数据块;
选择至少一个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块进行匹配,以获取字符串备选集,所述存储单元中的各第二数据块为已存储的各待匹配字符串对应的第一位图在第一位置上的数据块,所述第一数据块与所述第二数据块基于权利要求1至3中任意一项所述的字符串的存储方法获得;
其中,所述第一数据块处于所述目标字符串对应的第一位图的第一位置上。
5.根据权利要求4所述的方法,其特征在于,所述选择至少一个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块进行匹配,以获取字符串备选集包括:
采用不同的线程并行处理每个所述第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块的匹配过程。
6.根据权利要求4所述的方法,其特征在于,所述选择至少一个第一数据块分别与对应的存储单元中的各待匹配字符串对应的第二数据块进行匹配,以获取字符串备选集包括:
将各所述第一数据块按照第二预定长度分为多个第三数据块,其中,所述第一预定长度为所述第二预定长度的整数倍,所述第二预定长度为处理器的寄存器位数的整数倍;
采用不同的线程并行处理每个所述第三数据块分别与所述对应的存储单元中的各待匹配字符串对应的第二数据块中对应数据的匹配过程。
7.根据权利要求6所述的方法,其特征在于,所述处理器为CPU处理器或GPU处理器。
8.根据权利要求4所述的方法,其特征在于,所述方法还包括:
将所述目标字符串的各字符分别与所述字符串备选集中的字符串的各字符逐一匹配以获取匹配结果,所述匹配结果为与所述目标字符串完全匹配的字符串。
9.一种电子设备,包括存储器和处理器,其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行用以实现如权利要求1-3中任一项所述的方法和/或如权利要求4-8中任一项所述的方法。
10.根据权利要求9所述的电子设备,其特征在于,所述处理器为CPU处理器或GPU处理器。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行以实现如权利要求1-3中任一项所述的方法和/或如权利要求4-8中任一项所述的方法。
CN201910075267.XA 2019-01-25 2019-01-25 字符串的存储方法、匹配方法、电子设备及可读存储介质 Active CN109857740B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910075267.XA CN109857740B (zh) 2019-01-25 2019-01-25 字符串的存储方法、匹配方法、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910075267.XA CN109857740B (zh) 2019-01-25 2019-01-25 字符串的存储方法、匹配方法、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN109857740A CN109857740A (zh) 2019-06-07
CN109857740B true CN109857740B (zh) 2021-06-04

Family

ID=66896307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910075267.XA Active CN109857740B (zh) 2019-01-25 2019-01-25 字符串的存储方法、匹配方法、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN109857740B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857740B (zh) * 2019-01-25 2021-06-04 上海赜睿信息科技有限公司 字符串的存储方法、匹配方法、电子设备及可读存储介质
CN111552716A (zh) * 2020-07-10 2020-08-18 支付宝(杭州)信息技术有限公司 保护隐私的公共子串确定方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023968A (zh) * 2012-11-15 2013-04-03 中科院成都信息技术有限公司 一种网络分布式文件存储与读取方法
CN103559018A (zh) * 2013-10-23 2014-02-05 东软集团股份有限公司 基于gpu计算的字符串匹配方法和系统
CN104899204A (zh) * 2014-03-05 2015-09-09 腾讯科技(深圳)有限公司 数据存储方法及装置
WO2017017738A1 (ja) * 2015-07-24 2017-02-02 富士通株式会社 符号化プログラム、符号化装置、及び符号化方法
CN107590019A (zh) * 2016-07-07 2018-01-16 北京金山云网络技术有限公司 一种数据存储的方法和装置
CN109857740A (zh) * 2019-01-25 2019-06-07 上海赜睿信息科技有限公司 字符串的存储方法、匹配方法、电子设备及可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7925652B2 (en) * 2007-12-31 2011-04-12 Mastercard International Incorporated Methods and systems for implementing approximate string matching within a database

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023968A (zh) * 2012-11-15 2013-04-03 中科院成都信息技术有限公司 一种网络分布式文件存储与读取方法
CN103559018A (zh) * 2013-10-23 2014-02-05 东软集团股份有限公司 基于gpu计算的字符串匹配方法和系统
CN104899204A (zh) * 2014-03-05 2015-09-09 腾讯科技(深圳)有限公司 数据存储方法及装置
WO2017017738A1 (ja) * 2015-07-24 2017-02-02 富士通株式会社 符号化プログラム、符号化装置、及び符号化方法
CN107590019A (zh) * 2016-07-07 2018-01-16 北京金山云网络技术有限公司 一种数据存储的方法和装置
CN109857740A (zh) * 2019-01-25 2019-06-07 上海赜睿信息科技有限公司 字符串的存储方法、匹配方法、电子设备及可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种基于二进制编码处理的数字保序匹配算法;罗国辉 等;《广东工业大学学报》;20171113;第2017年卷(第34(5)期);第56-59页 *
二进制代码函数相似度匹配技术研究;肖雅娟;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170215;第2017年卷(第02期);第I138-162页 *

Also Published As

Publication number Publication date
CN109857740A (zh) 2019-06-07

Similar Documents

Publication Publication Date Title
US8255701B2 (en) File encryption method
US9361307B2 (en) Rejecting rows when scanning a collision chain that is associated with a page filter
CN109857740B (zh) 字符串的存储方法、匹配方法、电子设备及可读存储介质
CN112074818A (zh) 用于能够在区块链网络中访问过去的交易的方法及节点
CN112085644B (zh) 多列数据排序方法、装置、可读存储介质和电子设备
CN108154232A (zh) 人工神经网络的剪枝方法、装置、设备及可读存储介质
CN114220479B (zh) 一种蛋白质结构预测方法、蛋白质结构预测装置及介质
CN113568836B (zh) 多时间序列的样本特征提取方法以应用其的软件检测方法
CN107798117B (zh) 一种数据存储与读取的方法和装置
CN117251471A (zh) 数据查询方法、装置、电子设备及存储介质
CN110825953A (zh) 数据查询方法、装置和设备
US20210202038A1 (en) Memory Allocation to Optimize Computer Operations of Seeding for Burrows Wheeler Alignment
US11449499B1 (en) System and method for retrieving data
CN112100446B (zh) 搜索方法、可读存储介质和电子设备
CN113360522B (zh) 一种快速识别敏感数据的方法及装置
CN110460634B (zh) 边缘计算共识请求管理方法和系统
CN101196910B (zh) 一种确定网络资源的方法和装置
CN113709099A (zh) 混合云防火墙规则下发方法、装置、设备及存储介质
US10263638B2 (en) Lossless compression method for graph traversal
CN112596770B (zh) 一种数据处理方法、装置、电子设备和存储介质
CN110083583A (zh) 流式事件处理方法及装置
CN112069366B (zh) 召回确定方法、装置、设备及存储介质
CN113596097B (zh) 一种日志的传输方法及电子设备
CN110190934B (zh) 一种数据打孔的方法及设备
CN110022242B (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