字符串编码方法、装置、设备及存储介质与流程

未命名 10-08 阅读:114 评论:0


1.本公开涉及计算机技术领域,尤其涉及一种字符串编码方法、装置、设备及存储介质。


背景技术:

2.为了提高对于增删改查等操作的处理速度,计算机在硬件编码时会将待处理的字符串映射到特定的索引值,并基于该索引值构建映射关系表,这种映射过程一般采用哈希函数实现,但对不同的字符串进行哈希处理可能得到相同的索引值,从而产生哈希碰撞冲突,降低了系统的整体处理速度,因此,如何对字符串进行编码以避免哈希冲突,提高处理速度是需要解决的技术问题。


技术实现要素:

3.为了解决上述技术问题,本公开提供了一种字符串编码方法、装置、设备及存储介质。
4.本公开实施例的第一方面提供了一种字符串编码方法,该方法包括:
5.获取至少两个待处理字符串;
6.基于所述至少两个待处理字符串,确定目标哈希函数,其中,基于所述目标哈希函数对所述至少两个待处理字符串进行哈希计算得到的至少两个索引值不存在哈希冲突;
7.基于所述目标哈希函数对编码器中的至少两个并行执行的乘法器进行参数配置,以使所述编码器实现基于所述目标哈希函数的编码处理;
8.响应于接收到对目标字符串的编码请求,则将所述目标字符串输入所述编码器进行编码,所述目标字符串为所述待处理字符串的其中之一。
9.本公开实施例的第二方面提供了一种字符串编码装置,该装置包括:
10.获取模块,用于获取至少两个待处理字符串;
11.确定模块,用于基于所述至少两个待处理字符串,确定目标哈希函数,其中,基于所述目标哈希函数对所述至少两个待处理字符串进行哈希计算得到的至少两个索引值不存在哈希冲突;
12.配置模块,用于基于所述目标哈希函数对编码器中的至少两个并行执行的乘法器进行参数配置,以使所述编码器实现基于所述目标哈希函数的编码处理;
13.编码模块,用于响应于接收到对目标字符串的编码请求,则将所述目标字符串输入所述编码器进行编码,所述目标字符串为所述待处理字符串的其中之一。
14.本公开实施例的第三方面提供了一种计算机设备,包括存储器和处理器,以及计算机程序,其中,存储器中存储有计算机程序,当计算机程序被处理器执行时,实现如上述第一方面的字符串编码方法。
15.本公开实施例的第四方面提供了一种计算机可读存储介质,存储介质中存储有计算机程序,当计算机程序被处理器执行时,实现如上述第一方面的字符串编码方法。
16.本公开实施例提供的技术方案与现有技术相比具有如下优点:
17.在本公开实施例提供的字符串编码方法、装置、设备及存储介质中,通过获取至少两个待处理字符串,基于所述至少两个待处理字符串,确定目标哈希函数,其中,基于所述目标哈希函数对所述至少两个待处理字符串进行哈希计算得到的至少两个索引值不存在哈希冲突,基于所述目标哈希函数对编码器中的至少两个并行执行的乘法器进行参数配置,以使所述编码器实现基于所述目标哈希函数的编码处理,响应于接收到对目标字符串的编码请求,则将所述目标字符串输入所述编码器进行编码,所述目标字符串为所述待处理字符串的其中之一,能够基于已知的至少两个待处理字符串,确定出针对至少两个待处理字符串,不存在哈希冲突的目标哈希函数,进而在基于该目标哈希函数对编码器进行参数配置后,由编码器对接收到的目标字符串进行编码,使得编码结果之间不存在哈希冲突,从而避免对冲突后的编码结果进行进一步寻址,提高整体的处理速度。
附图说明
18.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
19.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
20.图1是本公开实施例提供的一种字符串编码方法的流程图;
21.图2是本公开实施例提供的一种确定无冲突的哈希函数的方法的流程图;
22.图3是本公开实施例提供的另一种确定无冲突的哈希函数的方法的流程图;
23.图4是本公开实施例提供的一种进行哈希计算的方法的流程图;
24.图5是本公开实施例提供的一种利用编码器编码的方法的流程图;
25.图6是本公开实施例提供的一种字符串编码装置的结构示意图;
26.图7是本公开实施例提供的一种计算机设备的结构示意图。
具体实施方式
27.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
28.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
29.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
30.图1是本公开实施例提供的一种字符串编码方法的流程图,该方法可以由一种字符串编码装置执行。如图1所示,本实施例提供的字符串编码方法包括如下步骤:
31.s101、获取至少两个待处理字符串。
32.本公开实施例中的待处理字符串可以理解为提前获取的需要编码的字符串。
33.本公开实施例中,字符串编码装置可以获取至少两个待处理字符串。
34.在本公开实施例的一种示例性的实施方式中,字符串编码装置可以获取用户输入的至少两个待处理字符串,也可以从预设的表单中提取其中存储的至少两个待处理字符串。
35.s102、基于所述至少两个待处理字符串,确定目标哈希函数,其中,基于所述目标哈希函数对所述至少两个待处理字符串进行哈希计算得到的至少两个索引值不存在哈希冲突。
36.本公开实施例中的哈希冲突可以理解为对不同对象进行哈希计算得到相同的索引值的情况,目标哈希函数可以理解为基于该函数对至少两个待处理字符串进行哈希计算后,得到的至少两个索引值各不相同,不存在哈希冲突的哈希函数。
37.本公开实施例中,字符串编码装置可以在获得至少两个待处理字符串后,基于这些待处理字符串,确定一个不存在哈希冲突的目标哈希函数。
38.在本公开实施例的一种示例性的实施方式中,字符串编码装置可以预先获取多个哈希函数,并将各个待处理字符串代入该哈希函数进行哈希计算,得到各个待处理字符串对应的索引值,并在预先建立的哈希表中记录该索引值,验证各个待处理字符串对应的索引值是否发生哈希冲突,如果发生哈希冲突,则对下一个哈希函数执行上述验证过程,如果未发生哈希冲突,则将该哈希函数确定为目标哈希函数。
39.s103、基于所述目标哈希函数对编码器中的至少两个并行执行的乘法器进行参数配置,以使所述编码器实现基于所述目标哈希函数的编码处理。
40.本公开实施例中的目标哈希函数包括至少两次乘法运算,用于实现目标哈希函数的编码器包括至少两个并行执行的乘法器。
41.本公开实施例中,字符串编码装置可以在确定目标哈希函数后,基于该目标哈希函数中的参数对编码器中的至少两个并行执行的乘法器进行参数配置,以使该编码器能够实现该目标哈希函数,从而实现基于目标哈希函数的编码处理。
42.在本公开实施例的一种示例性的实施方式中,字符串编码装置可以提取目标哈希函数中确定的系数参数,并将该系数作为乘数之一对乘法器进行配置。
43.s104、响应于接收到对目标字符串的编码请求,则将所述目标字符串输入所述编码器进行编码,所述目标字符串为所述待处理字符串的其中之一。
44.本公开实施例中,字符串编码装置可以在接收到对于待处理字符串的其中之一的目标字符串的编码请求后,将目标字符串输入编码器,由编码器对目标字符串编码,得到输出的编码结果。
45.本公开实施例通过获取至少两个待处理字符串,基于所述至少两个待处理字符串,确定目标哈希函数,其中,基于所述目标哈希函数对所述至少两个待处理字符串进行哈希计算得到的至少两个索引值不存在哈希冲突,基于所述目标哈希函数对编码器中的至少两个并行执行的乘法器进行参数配置,以使所述编码器实现基于所述目标哈希函数的编码处理,响应于接收到对目标字符串的编码请求,则将所述目标字符串输入所述编码器进行编码,所述目标字符串为所述待处理字符串的其中之一,能够基于已知的至少两个待处理字符串,确定出针对至少两个待处理字符串,不存在哈希冲突的目标哈希函数,进而在基于
该目标哈希函数对编码器进行参数配置后,由编码器对接收到的目标字符串进行编码,使得编码结果之间不存在哈希冲突,从而避免对冲突后的编码结果进行进一步寻址,提高整体的处理速度。
46.在本公开一些实施例中,所述待处理字符串为变长字符串。
47.具体地,待处理字符串可以为长度可变的变长字符串,目标哈希函数可以对变长字符串进行哈希计算。
48.图2是本公开实施例提供的一种确定无冲突的哈希函数的方法的流程图,如图2所示,在上述实施例的基础上,可以通过如下方法确定无冲突的哈希函数。
49.s201、获取存在一个未知参数的预设哈希函数,以及至少两个备选参数取值。
50.本公开实施例中,字符串编码装置可以在确定目标哈希函数时,获取存在一个未知参数的预设哈希函数,以及针对该未知参数的至少两个备选参数取值。
51.在本公开实施例的一种示例性的实施方式中,字符串编码装置可以获取用户输入的预设哈希函数和/或备选参数取值,也可以从预设数据库中获取预设哈希函数和/或被选参数取值,在此不做限定。
52.s202、基于所述预设哈希函数和所述备选参数取值,通过枚举的方式确定相对于所述至少两个待处理字符串不存在哈希冲突的目标哈希函数。
53.本公开实施例中,字符串编码装置可以在获得预设哈希函数和备选参数取值后,通过枚举的方式将备选参数取值代入预设哈希函数,并将至少两个待处理字符串依次带入该参数确定的预设哈希函数,计算得到至少两个索引值,判断至少两个索引值是否存在哈希冲突,如果不存在则将该参数确定的预设哈希函数,确定为目标函数函数,如果存在,则将下一个备选参数取值代入存在未知参数的预设哈希函数,并执行上述过程,直到找到针对至少两个待处理字符串不存在哈希冲突的目标哈希函数。
54.本公开实施例通过获取存在一个未知参数的预设哈希函数,以及至少两个备选参数取值,基于所述预设哈希函数和所述备选参数取值,通过枚举的方式确定相对于所述至少两个待处理字符串不存在哈希冲突的目标哈希函数,能够通过枚举和代入的方式快速确定目标哈希函数。
55.图3是本公开实施例提供的另一种确定无冲突的哈希函数的方法的流程图,如图3所示,在上述实施例的基础上,可以通过如下方法确定无冲突的哈希函数。
56.s301、将最小的备选参数取值代入所述预设哈希函数,得到备选哈希函数。
57.本公开实施例中的备选哈希函数可以理解为将备选参数取值代入预设哈希函数的未知参数后,得到的各个参数均已确定的哈希函数。
58.本公开实施例中,字符串编码装置可以在通过枚举的方式确定目标哈希函数时,首先将最小的备选参数取值代入预设哈希函数,得到参数确定的备选哈希函数。
59.s302、基于所述备选哈希函数,判断各个待处理字符串对应的索引值之间是否存在哈希冲突。
60.本公开实施例中,字符串编码装置可以在确定备选哈希函数后,基于备选哈希函数计算各个待处理字符串对应的索引值,进而判断各个索引值之间是否存在哈希冲突。
61.在本公开实施例的一种示例性的实施方式中,字符串编码装置可以在计算得到其中一个待处理字符串对应的索引值后,在预先建立的哈希表中查找该索引值对应的状态参
数,判断该状态参数的取值是否为初始值0,若为0,则将其取值修改为1,若为1,则确定存在哈希冲突,直到针对所有待处理字符串都执行完毕上述过程。
62.s303、若存在,则按照数值从小到大的顺序,将下一个备选参数取值代入所述预设哈希函数,得到新的备选哈希函数,并执行上述判断过程。
63.本公开实施例中,字符串编码装置可以在确定存在哈希冲突时,对备选参数的取值按照从小到大的顺序排序,并将下一个备选参数取值代入预设哈希函数,得到新的备选哈希函数,并执行s302中的判断过程,直至找到不存在哈希冲突的备选哈希函数。
64.s304、若不存在,则将所述备选哈希函数确定为所述目标哈希函数。
65.本公开实施例中,字符串编码装置可以在确定不存在哈希冲突时,将不存在哈希冲突的备选哈希函数确定为目标哈希函数。
66.本公开实施例通过将最小的备选参数取值代入所述预设哈希函数,得到备选哈希函数,基于所述备选哈希函数,判断各个待处理字符串对应的索引值之间是否存在哈希冲突,若存在,则按照数值从小到大的顺序,将下一个备选参数取值代入所述预设哈希函数,得到新的备选哈希函数,并执行上述判断过程,若不存在,则将所述备选哈希函数确定为所述目标哈希函数,能够确定参数最小的不存在哈希冲突的目标哈希函数,降低编码时的计算量,进一步提升编码速度。
67.图4是本公开实施例提供的一种进行哈希计算的方法的流程图。如图4所示,在上述实施例的基础上,可以通过如下方法进行哈希计算。
68.s401、对所述至少两个待处理字符串进行拆分,得到多个第一字符。
69.本公开实施例中的第一字符可以理解为对待处理字符串进行按位拆分得到的字符。
70.本公开实施例中,字符串编码装置可以在对至少两个待处理字符串进行哈希计算时,针对各个待处理字符串进行拆分,得到多个第一字符。
71.在本公开实施例的一种示例性的实施方式中,字符串编码装置可以在对至少两个待处理字符串进行哈希计算时,针对各个待处理字符串进行拆分,得到多组第一字符,每个待处理字符串分别对应一组第一字符,从而得到多个第一字符。
72.s402、对于同一待处理字符串中的各个第一字符,基于各个第一字符在所述待处理字符串中的位置以及预设常数,确定各个第一字符对应的第一乘数。
73.本公开实施例中的第一乘数可以理解为基于目标哈希函数进行哈希计算的过程中,其中一步乘法运算的乘数,第一乘数与第一字符之间存在一一对应关系。
74.本公开实施例中的预设常数可以理解为用于确定第一乘数的一个参数,示例地,预设常数可以有多个,字符串编码装置可以通过枚举的方式确定构建目标哈希函数所需的预设常数。
75.本公开实施例中,字符串编码装置可以在对至少两个待处理字符串拆分得到多个第一字符后,确定同一待处理字符串拆分得到的各个第一字符在字符串中的位置,并基于该位置和提前获取的预设常数,确定各个位置的第一字符对应的第一乘数。
76.s403、计算同一待处理字符串中各个第一字符与对应的第一乘数的第一乘积之和。
77.本公开实施例中的第一乘积可以理解为第一字符与第一乘数的乘积,示例地,第
一字符的取值可以为其对应的ascii码,在计算第一乘积时,可以计算第一字符对应的ascii码与第一乘数的乘积。
78.本公开实施例中,字符串编码装置可以计算同一个待处理字符串中的各个第一字符与其对应的第一乘数的第一乘积,并对该待处理字符串的所有第一乘积进行求和处理。
79.s404、基于预设模值对所述第一乘积之和进行取模运算。
80.本公开实施例中的预设模值可以理解为预先设定的进行取模运算时的模值。
81.本公开实施例中,字符串编码装置可以在得到待处理字符串的第一乘积之和后,基于预设模值对第一乘积之和进行取模运算,并将取模结果确定为该待处理字符串的索引值,从而实现哈希计算。
82.在本公开实施例的一种示例性的实施方式中,字符串编码装置可以对待处理字符串拆分得到多个字符,比如对字符串“abcde”拆分得到字符“a”、“b”、“c”、“d”、“e”,依次写入数组s[5],基于预设常数p和各个字符在数组中的位置,确定s[0]对应的第一乘数为p0,即1,s[1]对应的第一乘数为p1,以此类推,结合预设模值m,计算哈希函数hash(s)=(s[0]+s[1]*p+s[2]*p2+s[3]*p3+s[4]*p4)mod m。
[0083]
本公开实施例通过对所述至少两个待处理字符串进行拆分,得到多个第一字符,对于同一待处理字符串中的各个第一字符,基于各个第一字符在所述待处理字符串中的位置以及预设常数,确定各个第一字符对应的第一乘数,计算同一待处理字符串中各个第一字符与对应的第一乘数的第一乘积之和,基于预设模值对所述第一乘积之和进行取模运算,能够实现对字符串的哈希计算,从而基于哈希计算得到的索引值确定无冲突的目标哈希函数。
[0084]
在本公开另一些实施例中,字符串编码装置可以将所述预设常数写入所述乘法器。
[0085]
具体地,字符串编码装置可以在确定目标哈希函数后,将该目标哈希函数对应的预设常数写入乘法器,以使乘法器能够基于该预设常数确定第一乘数,实现乘法运算,进而使得编码器实现基于目标哈希函数的编码。
[0086]
图5是本公开实施例提供的一种利用编码器编码的方法的流程图,如图5所示,在上述实施例的基础上,可以通过如下方法利用编码器编码。
[0087]
s501、获取所述编码器中并行执行的乘法器的数量。
[0088]
本公开实施例中,字符串编码装置可以在通过编码器对目标字符串进行编码时,首先获取编码器中并行执行的乘法器的数量。
[0089]
在本公开实施例的一种示例性的实施方式中,字符串编码装置可以从编码器的配置文件中获取并行执行的乘法器的数量。
[0090]
s502、基于所述乘法器的数量对所述目标字符串进行切分,得到子字符串,所述子字符串的字符数量均小于或等于所述乘法器的数量。
[0091]
本公开实施例中,字符串编码装置可以在确定并行执行的乘法器的数量后,对目标字符串进行切分得到多个子字符串,以使各个子字符串中包含的字符数量均小于或等于乘法器的数量,即子字符串的最大长度小于或等于乘法器的数量。
[0092]
在本公开实施例的一种示例性的实施方式中,字符串编码装置可以对目标字符串进行拆分,得到多个字符,并按照各个字符在目标字符串中的原始顺序,依次选择与乘法器
的数量相同的多个字符,组合为一个子字符串,直到剩余的字符小于或等于乘法器的数量,将剩余的字符组合为一个子字符串,比如,在并行执行的乘法器的数量为3时,对于字符串“abcdefg”可以拆分为子字符串“abc”、“def”、“g”。
[0093]
s503、对各个子字符串进行拆分,得到多个第二字符。
[0094]
本公开实施例中的第二字符可以理解为对子字符串进行按位拆分得到的字符。
[0095]
本公开实施例中,字符串编码装置可以在得到多个子字符串后,对各个子字符串进行拆分,得到多个子字符串对应的多组第二字符。
[0096]
s504、对于同一子字符串中的各个第二字符,将各个第二字符依次输入所述编码器中并行执行的乘法器,以使所述乘法器基于所述子字符串在所述目标字符串中的序数、所述乘法器的数量、各个乘法器的序数以及所述预设常数,确定各个第二字符对应的第二乘数,并对各个第二字符与对应的第二乘数进行乘法运算,输出第二乘积。
[0097]
本公开实施例中,字符串编码装置可以根据第二字符所属的子字符串在目标字符串中的序数、乘法器的数量、第二字符输入的乘法器的序数以及预设常数,确定该第二字符对应的第二乘数,并将各个第二字符依次输入编码器中并行执行的乘法器,与其对应的第二乘数进行乘法运算,输出第二乘积。
[0098]
s505、将所述第二乘积输入所述编码器中的加法器,以使所述加法器对各个第二乘积进行加法运算,输出第二乘积之和。
[0099]
本公开实施例中,字符串编码装置可以在得到第二乘积后,将同一子字符串对应的各个第二乘积输入编码器中的加法器,对各个第二乘积进行加法运算,输出子字符串对应的第二乘积之和。
[0100]
s506、在得到各个子字符串对应的第二乘积之和后,对各个第二乘积之和进行求和处理,并基于预设模值对求和结果进行取模运算,得到所述目标字符串的编码数据。
[0101]
本公开实施例中,字符串编码装置可以在得到各个子字符串对应的第二乘积之和后,对各个第二乘积之和进行求和处理,并基于预设模值对求和结果进行取模运算,将运算结果确定为目标字符串的编码数据。
[0102]
在本公开实施例的一种示例性的实施方式中,子字符串在目标字符串中的序数、乘法器的数量、第二字符输入的乘法器的序数以及预设常数、预设模值可以分别用h、l、n、p、m表示,第二乘数则为p
(h-1)*l+n-1
,示例的,字符串编码装置可以在p取3,m取8,编码器中存在三个并行执行的乘法器时,对字符串“abcdefg”拆分得到字符子字符串“abc”、“def”、“g”,对于在目标字符串中序数为1的子字符串“abc”,拆分得到第二字符“a”、“b”、“c”,分别输入序数为1、2、3的乘法器,并确定第二字符“a”对应的第二乘数为1,第二字符“b”对应的第二乘数为3,第二字符“c”对应的第二乘数为9,以此类推,对于在目标字符串中序数为3的子字符串“g”,拆分得到第二字符“g”,第二字符“g”对应的第二乘数为36,子字符串“abc”对应的第二乘积之和为a+b*3+c*32,字符串“abcdefg”对应的取模运算结果为(a+3b+32c+33d+34e+35f+36g)mod 8,并将其确定为字符串“abcdefg”对应的编码结果。
[0103]
本公开实施例通过获取所述编码器中并行执行的乘法器的数量,基于所述乘法器的数量对所述目标字符串进行切分,得到子字符串,所述子字符串的字符数量均小于或等于所述乘法器的数量,对各个子字符串进行拆分,得到多个第二字符,对于同一子字符串中的各个第二字符,将各个第二字符依次输入所述编码器中并行执行的乘法器,以使所述乘
法器基于所述子字符串在所述目标字符串中的序数、所述乘法器的数量、各个乘法器的序数以及所述预设常数,确定各个第二字符对应的第二乘数,并对各个第二字符与对应的第二乘数进行乘法运算,输出第二乘积,将所述第二乘积输入所述编码器中的加法器,以使所述加法器对各个第二乘积进行加法运算,输出第二乘积之和,在得到各个子字符串对应的第二乘积之和后,对各个第二乘积之和进行求和处理,并基于预设模值对求和结果进行取模运算,得到所述目标字符串的编码数据,能够通过硬件编码器进行编码计算,通过并行执行的乘法器提高编码速度。
[0104]
图6是本公开实施例提供的一种字符串编码装置的结构示意图。如图6所示,该字符串编码装置600包括:获取模块610,确定模块620,配置模块630,编码模块640,其中,获取模块,用于获取至少两个待处理字符串;确定模块,用于基于所述至少两个待处理字符串,确定目标哈希函数,其中,基于所述目标哈希函数对所述至少两个待处理字符串进行哈希计算得到的至少两个索引值不存在哈希冲突;配置模块,用于基于所述目标哈希函数对编码器中的至少两个并行执行的乘法器进行参数配置,以使所述编码器实现基于所述目标哈希函数的编码处理;编码模块,用于响应于接收到对目标字符串的编码请求,则将所述目标字符串输入所述编码器进行编码,所述目标字符串为所述待处理字符串的其中之一。
[0105]
可选的,所述待处理字符串为变长字符串。
[0106]
可选的,所述确定模块620,包括:第一获取单元,用于获取存在一个未知参数的预设哈希函数,以及至少两个备选参数取值;第一确定单元,用于基于所述预设哈希函数和所述备选参数取值,通过枚举的方式确定相对于所述至少两个待处理字符串不存在哈希冲突的目标哈希函数。
[0107]
可选的,所述第一确定单元,包括:代入子单元,用于将最小的备选参数取值代入所述预设哈希函数,得到备选哈希函数;判断子单元,用于基于所述备选哈希函数,判断各个待处理字符串对应的索引值之间是否存在哈希冲突;执行子单元,用于若存在,则按照数值从小到大的顺序,将下一个备选参数取值代入所述预设哈希函数,得到新的备选哈希函数,并执行上述判断过程;确定子单元,用于若不存在,则将所述备选哈希函数确定为所述目标哈希函数。
[0108]
可选的,所述确定模块620,包括:第一拆分单元,用于对所述至少两个待处理字符串进行拆分,得到多个第一字符;第二确定单元,用于对于同一待处理字符串中的各个第一字符,基于各个第一字符在所述待处理字符串中的位置以及预设常数,确定各个第一字符对应的第一乘数;乘法单元,用于计算同一待处理字符串中各个第一字符与对应的第一乘数的第一乘积之和;取模单元,用于基于预设模值对所述第一乘积之和进行取模运算。
[0109]
可选的,所述配置模块630,具体用于将所述预设常数写入所述乘法器。
[0110]
可选的,所述编码模块640,包括:第二获取单元,用于获取所述编码器中并行执行的乘法器的数量;切分单元,用于基于所述乘法器的数量对所述目标字符串进行切分,得到子字符串,所述子字符串的字符数量均小于或等于所述乘法器的数量;第二拆分单元,用于对各个子字符串进行拆分,得到多个第二字符;第一输入单元,用于对于同一子字符串中的各个第二字符,将各个第二字符依次输入所述编码器中并行执行的乘法器,以使所述乘法器基于所述子字符串在所述目标字符串中的序数、所述乘法器的数量、各个乘法器的序数以及所述预设常数,确定各个第二字符对应的第二乘数,并对各个第二字符与对应的第二
乘数进行乘法运算,输出第二乘积;第二输入单元,用于将所述第二乘积输入所述编码器中的加法器,以使所述加法器对各个第二乘积进行加法运算,输出第二乘积之和;编码单元,用于在得到各个子字符串对应的第二乘积之和后,对各个第二乘积之和进行求和处理,并基于预设模值对求和结果进行取模运算,得到所述目标字符串的编码数据。
[0111]
本实施例提供的字符串编码装置能够执行上述任一实施例所述的方法,其执行方式和有益效果类似,在这里不再赘述。
[0112]
图7是本公开实施例提供的一种计算机设备的结构示意图。
[0113]
如图7所示,该计算机设备可以包括处理器710以及存储有计算机程序指令的存储器720。
[0114]
具体地,上述处理器710可以包括中央处理器(cpu),或者特定集成电路(application specific integrated circuit,asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
[0115]
存储器720可以包括用于信息或指令的大容量存储器。举例来说而非限制,存储器720可以包括硬盘驱动器(hard disk drive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,usb)驱动器或者两个及其以上这些的组合。在合适的情况下,存储器720可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器720可在综合网关设备的内部或外部。在特定实施例中,存储器720是非易失性固态存储器。在特定实施例中,存储器720包括只读存储器(read-only memory,rom)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmable rom,prom)、可擦除prom(electrical programmable rom,eprom)、电可擦除prom(electrically erasable programmable rom,eeprom)、电可改写rom(electrically alterable rom,earom)或闪存,或者两个或及其以上这些的组合。
[0116]
处理器710通过读取并执行存储器720中存储的计算机程序指令,以执行本公开实施例所提供的字符串编码方法的步骤。
[0117]
在一个示例中,该计算机设备还可包括收发器730和总线740。其中,如图7所示,处理器710、存储器720和收发器730通过总线740连接并完成相互间的通信。
[0118]
总线740包括硬件、软件或两者。举例来说而非限制,总线可包括加速图形端口(accelerated graphics port,agp)或其他图形总线、增强工业标准架构(extended industry standard architecture,eisa)总线、前端总线(front side bus,fsb)、超传输(hyper transport,ht)互连、工业标准架构(industrial standard architecture,isa)总线、无限带宽互连、低引脚数(low pin count,lpc)总线、存储器总线、微信道架构(micro channel architecture,mca)总线、外围控件互连(peripheral component interconnect,pci)总线、pci-express(pci-x)总线、串行高级技术附件(serial advanced technology attachment,sata)总线、视频电子标准协会局部(video electronics standards association local bus,vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线740可包括一个或多个总线。尽管本技术实施例描述和示出了特定的总线,但本技术考虑任何合适的总线或互连。
[0119]
本公开实施例还提供了一种计算机可读存储介质,该存储介质可以存储有计算机程序,当计算机程序被处理器执行时,使得处理器实现本公开实施例所提供的字符串编码
方法。
[0120]
上述的存储介质可以例如包括计算机程序指令的存储器720,上述指令可由字符串编码设备的处理器710执行以完成本公开实施例所提供的字符串编码方法。可选的,存储介质可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是rom、随机存取存储器(random access memory,ram)、光盘只读存储器(compact disc rom,cd-rom)、磁带、软盘和光数据存储设备等。上述计算机程序可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
[0121]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0122]
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种字符串编码方法,其特征在于,包括:获取至少两个待处理字符串;基于所述至少两个待处理字符串,确定目标哈希函数,其中,基于所述目标哈希函数对所述至少两个待处理字符串进行哈希计算得到的至少两个索引值不存在哈希冲突;基于所述目标哈希函数对编码器中的至少两个并行执行的乘法器进行参数配置,以使所述编码器实现基于所述目标哈希函数的编码处理;响应于接收到对目标字符串的编码请求,则将所述目标字符串输入所述编码器进行编码,所述目标字符串为所述待处理字符串的其中之一。2.根据权利要求1所述的方法,其特征在于,所述待处理字符串为变长字符串。3.根据权利要求1所述的方法,其特征在于,所述基于所述至少两个待处理字符串,确定目标哈希函数,包括:获取存在一个未知参数的预设哈希函数,以及至少两个备选参数取值;基于所述预设哈希函数和所述备选参数取值,通过枚举的方式确定相对于所述至少两个待处理字符串不存在哈希冲突的目标哈希函数。4.根据权利要求3所述的方法,其特征在于,所述基于所述预设哈希函数和所述备选参数取值,通过枚举的方式确定相对于所述至少两个待处理字符串不存在哈希冲突的目标哈希函数,包括:将最小的备选参数取值代入所述预设哈希函数,得到备选哈希函数;基于所述备选哈希函数,判断各个待处理字符串对应的索引值之间是否存在哈希冲突;若存在,则按照数值从小到大的顺序,将下一个备选参数取值代入所述预设哈希函数,得到新的备选哈希函数,并执行上述判断过程;若不存在,则将所述备选哈希函数确定为所述目标哈希函数。5.根据权利要求1所述的方法,其特征在于,所述基于所述目标哈希函数对所述至少两个待处理字符串进行哈希计算,包括:对所述至少两个待处理字符串进行拆分,得到多个第一字符;对于同一待处理字符串中的各个第一字符,基于各个第一字符在所述待处理字符串中的位置以及预设常数,确定各个第一字符对应的第一乘数;计算同一待处理字符串中各个第一字符与对应的第一乘数的第一乘积之和;基于预设模值对所述第一乘积之和进行取模运算。6.根据权利要求5所述的方法,其特征在于,所述基于所述目标哈希函数对编码器中的至少两个并行执行的乘法器进行参数配置,包括:将所述预设常数写入所述乘法器。7.根据权利要求6所述的方法,其特征在于,所述将所述目标字符串输入所述编码器进行编码,包括:获取所述编码器中并行执行的乘法器的数量;基于所述乘法器的数量对所述目标字符串进行切分,得到子字符串,所述子字符串的字符数量均小于或等于所述乘法器的数量;对各个子字符串进行拆分,得到多个第二字符;
对于同一子字符串中的各个第二字符,将各个第二字符依次输入所述编码器中并行执行的乘法器,以使所述乘法器基于所述子字符串在所述目标字符串中的序数、所述乘法器的数量、各个乘法器的序数以及所述预设常数,确定各个第二字符对应的第二乘数,并对各个第二字符与对应的第二乘数进行乘法运算,输出第二乘积;将所述第二乘积输入所述编码器中的加法器,以使所述加法器对各个第二乘积进行加法运算,输出第二乘积之和;在得到各个子字符串对应的第二乘积之和后,对各个第二乘积之和进行求和处理,并基于预设模值对求和结果进行取模运算,得到所述目标字符串的编码数据。8.一种字符串编码装置,其特征在于,包括:获取模块,用于获取至少两个待处理字符串;确定模块,用于基于所述至少两个待处理字符串,确定目标哈希函数,其中,基于所述目标哈希函数对所述至少两个待处理字符串进行哈希计算得到的至少两个索引值不存在哈希冲突;配置模块,用于基于所述目标哈希函数对编码器中的至少两个并行执行的乘法器进行参数配置,以使所述编码器实现基于所述目标哈希函数的编码处理;编码模块,用于响应于接收到对目标字符串的编码请求,则将所述目标字符串输入所述编码器进行编码,所述目标字符串为所述待处理字符串的其中之一。9.一种计算机设备,其特征在于,包括:存储器;处理器;以及计算机程序;其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1-7中任一项所述的方法。10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1-7中任一项所述的方法。

技术总结
本公开涉及一种字符串编码方法、装置、设备及存储介质,该方法包括:获取至少两个待处理字符串;基于所述至少两个待处理字符串,确定目标哈希函数,其中,基于所述目标哈希函数对所述至少两个待处理字符串进行哈希计算得到的至少两个索引值不存在哈希冲突;基于所述目标哈希函数对编码器中的至少两个并行执行的乘法器进行参数配置,以使所述编码器实现基于所述目标哈希函数的编码处理;响应于接收到对目标字符串的编码请求,则将所述目标字符串输入所述编码器进行编码,所述目标字符串为所述待处理字符串的其中之一。本公开通过为编码器配置不存在哈希冲突的参数,并由编码器对目标字符串编码,能够避免字符串间出现哈希冲突,提高处理速度。提高处理速度。提高处理速度。


技术研发人员:耿嘉 杨鹏 陈岩 张宇 鄢贵海
受保护的技术使用者:中科驭数(北京)科技有限公司
技术研发日:2023.07.03
技术公布日:2023/10/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐