一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

域名匹配方法及装置、树形结构构建方法及装置与流程

2023-02-04 16:35:58 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,具体而言,涉及一种域名匹配方法及装置、树形结构构建方法及装置。


背景技术:

2.随着互联网技术的飞速发展,域名的访问流量也迅速增加,需要将发起访问的域名与域名数据库中的域名进行匹配,以根据匹配结果确定是否允许客户端对资源进行访问和使用。
3.在现有的域名匹配方案中,先将域名数据库中的n个域名字串经过运算生成树状结构体(如tire树),而后沿着树状结构体的根节点往下进行顺序匹配即可。
4.然而,由于在构建树状结构体时大多采用遍历每个字符的方式创建树树节点,这需要后续遍历各字符所对应树节点进行匹配,效率低下。


技术实现要素:

5.本公开实施例至少提供一种域名匹配方法及装置、树形结构构建方法及装置,以通过域名分割实现域名匹配,显著提升了匹配效率。
6.第一方面,本公开实施例提供了一种域名匹配方法,包括:
7.获取待匹配域名;
8.对所述待匹配域名进行分割,得到分割后的多个子域字串;
9.循环执行如下步骤,直至得到最终域名匹配结果:
10.针对待匹配的当前子域字串,基于预先构建的域名树形结构查找是否存在与所述当前子域字串匹配的源子域字串;所述域名树形结构由多个源子域字串构建得到;
11.若是,则将所述当前子域字串添加至当前域名匹配结果,并将下一个子域字串作为当前子域字串进行匹配。
12.在一种可能的实施方式中,所述方法还包括:
13.若否,则将所述当前子域字串之前匹配成功的子域字串所构成的当前域名匹配结果,确定为所述最终域名匹配结果。
14.在一种可能的实施方式中,所述基于预先构建的域名树形结构查找是否存在与所述当前子域字串匹配的源子域字串,包括:
15.从预先构建的域名树形结构包括的多个结构层级中确定与所述当前子域字串对应的当前结构层级;
16.从当前结构层级对应的至少一个源子域字串中,查找是否存在与所述当前子域字串匹配的源子域字串。
17.在一种可能的实施方式中,所述查找是否存在与所述当前子域字串匹配的源子域字串,包括:
18.基于二分查找方式查找是否存在与所述当前子域字串匹配的源子域字串。
19.在一种可能的实施方式中,按照如下方式中的一种对所述待匹配域名进行分割:
20.基于预设分割长度对所述待匹配域名进行分割;
21.基于特殊字符对所述待匹配域名进行分割;
22.基于字符识别结果对所述待匹配域名进行分割。
23.在一种可能的实施方式中,按照如下步骤预先构建域名树形结构:
24.获取多个源域名;
25.对所述多个源域名分别进行分割,得到每个源域名分割后的源子域字串;
26.基于每个源域名分割后的源子域字串构建域名树形结构。
27.在一种可能的实施方式中,所述对所述多个源域名分别进行分割,包括:
28.对所述多个源域名进行排序,得到排序后的多个源域名;
29.对所述排序后的多个源域名分别进行分割,得到每个源域名分割后的源子域字串。
30.在一种可能的实施方式中,在所述多个源域名包括多个字符及对应的多个字符位置的情况下,所述对所述多个源域名进行排序,得到排序后的多个源域名,包括:
31.确定在每个所述字符位置处所述多个源域名分别对应的字符;
32.按照所述多个源域名分别对应的字符之间的排序对所述多个源域名进行排序。
33.在一种可能的实施方式中,所述基于每个源域名分割后的源子域字串构建域名树形结构,包括:
34.对所述排序后的多个源域名循环执行如下步骤,直至构建得到域名树形结构:
35.针对遍历的当前源域名中的当前源子域字串,将所述当前源子域字串与所在节点对应的节点动态数组的最后一个元素进行比较;
36.若取值不同,则将所述当前源子域字串添加至所述节点动态数组;若取值相同,则创建新的子节点,并将下一个源子域字串添加至所述新的子节点对应的第一个元素,直至到最后一个源子域字串。
37.第二方面,本公开还提供了一种树形结构构建方法,包括:
38.获取多个源域名;
39.对所述多个源域名分别进行分割,得到每个源域名分割后的源子域字串;
40.基于每个源域名分割后的源子域字串构建域名树形结构。
41.第三方面,本公开还提供了一种域名匹配装置,包括:
42.获取模块,用于获取待匹配域名;
43.分割模块,用于对所述待匹配域名进行分割,得到分割后的多个子域字串;
44.匹配模块,用于循环执行如下步骤,直至得到最终域名匹配结果:
45.针对待匹配的当前子域字串,基于预先构建的域名树形结构查找是否存在与所述当前子域字串匹配的源子域字串;所述域名树形结构由多个源子域字串构建得到;
46.若是,则将所述当前子域字串添加至当前域名匹配结果,并将下一个子域字串作为当前子域字串进行匹配。
47.第四方面,本公开还提供了一种树形结构构建装置,包括:
48.获取模块,用于获取多个源域名;
49.分割模块,用于对所述多个源域名分别进行分割,得到每个源域名分割后的源子
域字串;
50.构建模块,用于基于每个源域名分割后的源子域字串构建域名树形结构。
51.第五方面,本公开还提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如第一方面及其各种实施方式中任一项所述的域名匹配方法,或者执行如第二方面所述的树形结构构建方法。
52.第六方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面及其各种实施方式中任一项所述的域名匹配方法,或者执行如第二方面所述的树形结构构建方法。
53.采用上述域名匹配方法及装置、树形结构构建方法及装置,其域名匹配方法在获取到待匹配域名的情况下,首先对该待匹配域名进行分割,而后能够循环针对分割后的多个子域字串执行域名匹配,在针对当前子域字串进行匹配的过程中,可以基于预先构建的域名树形结构直接查找从而得到最终域名匹配结果。由于域名树形结构是基于源子域字串构建得到,相比现有技术中是基于字符方式来创建而言,显著提升了构建效率,除此之外,在进行域名匹配过程中,同样是基于分割后的子域字串进行匹配,相比相关技术中是基于字符遍历进行匹配,这显著提升了匹配效率。
54.本公开的其他优点将配合以下的说明和附图进行更详细的解说。
55.应当理解,上述说明仅是本公开技术方案的概述,以便能够更清楚地了解本公开的技术手段,从而可依照说明书的内容予以实施。为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本公开的具体实施方式。
附图说明
56.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
57.图1示出了相关技术中传统trie树的示例图;
58.图2示出了本公开实施例所提供的一种域名匹配方法的流程图;
59.图3示出了本公开实施例所提供的域名匹配方法中,构建域名树形结构具体方法的流程图;
60.图4示出了本公开实施例所提供的域名匹配方法中,构建的域名树形结构的示例图;
61.图5示出了本公开实施例所提供的域名匹配方法中,查找域名具体方法的流程图;
62.图6示出了本公开实施例所提供的一种树形结构构建方法的流程图;
63.图7示出了本公开实施例所提供的一种域名匹配装置的示意图;
64.图8示出了本公开实施例所提供的一种树形结构构建装置的示意图;
65.图9示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
66.下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
67.在本公开实施方式的描述中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
68.除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
69.术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个这一特征。在本公开实施方式的描述中,除非另有说明,“多个”的含义是两个或两个以上。
70.经研究发现,在现有的域名匹配方案中,先将域名数据库中的n个域名字串经过运算生成树状结构体(如tire树),而后沿着树状结构体的根节点往下进行顺序匹配即可。
71.为了便于进一步理解现有的域名匹配方案,接下来结合trie树的构建来说明。
72.传统trie树,也称为字典树,前缀树,其特点包括:
73.1、根节点不包含字符,除根节点外每一个节点都只包含一个字符;
74.2、从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;
75.3、每个节点的所有子节点包含的字符都不相同。
76.4、每个节点根据字典大小创建指针数组,用指向子节点。
77.假设有b,abc,abd,bcd,abcd,efg,hii这6个单词,构建的树如图1所示,其查询过程是遍历字符串每个字节,在trie树结构体中逐层遍历比较,若命中节点则跳转到下一层,使用下一个字节进行遍历比较。
78.可知的是,由于相关技术中需要遍历每个字符创建节点,这使得构建效率极低,此外,在实际进行树结构体构建的过程中,每个节点都需要搭配一个基于字符集大小的数组来存储子节点指针,链表结构存储分散,空间复杂度高,这导致内存开销大。与此同时,由于在查找过程中同样需要节点遍历,这使得查询效率极低。
79.为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开提供了至少一种基于域名分割而后进行分割后的多个子域字串的域名匹配方案,在构建的过程中,以划分后的子域字串为操作原子,无需遍历所有字符,构建效率较高,此外,每个节点的所有子节点收缩为一个动态有序数组,这显著降低了空间复杂度。在匹配的过程中,同样基于划分后的子域字串进行匹配,这显著提升了匹配效率。
80.为便于对本实施例进行理解,首先对本公开实施例所公开的一种域名匹配方法进行详细介绍,本公开实施例所提供的域名匹配方法的执行主体一般为具有一定计算能力的电子设备,该电子设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(user equipment,ue)、移动设备、用户终端、蜂窝电话、计算设备、车载设备、可穿戴设
备等。在一些可能的实现方式中,该域名匹配方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
81.参见图2所示,为本公开实施例提供的域名匹配方法的流程图,所述方法包括步骤s201~s205,其中:
82.s201:获取待匹配域名;
83.s202:对待匹配域名进行分割,得到分割后的多个子域字串;
84.s203:针对待匹配的当前子域字串,基于预先构建的域名树形结构查找是否存在与当前子域字串匹配的源子域字串;域名树形结构由多个源子域字串构建得到;
85.若是,则执行s204;若否,则执行s205。
86.s204:将当前子域字串添加至当前域名匹配结果,并将下一个子域字串作为当前子域字串进行匹配;
87.s205:将当前子域字串之前匹配成功的子域字串所构成的当前域名匹配结果,确定为最终域名匹配结果。
88.为了便于理解本公开实施例提供的域名匹配方法,接下来首先对该方法的应用场景进行详细说明。本公开实施例中的域名匹配方法主要可以应用于需要进行域名匹配的各种应用场景中,例如,在入微项目中,微信接入银联二维码平台,在域名信息表可以同时配置商户码域名和个人码域名的情况下,其中个人码域名格式为https://weixin/com,商户码格式为https://weixin.com/qr/,即在个人码域名基础上,增加后缀域“qr”。在具体应用中,可以对商户码域名进行匹配以验证商户,还可以对个人码域名进行匹配以验证个人用户。
89.需要说明的是,本公开实施例虽然主要应用于域名匹配的相关场景中,但考虑到域名作为一种特殊的字符串(亦称为字串),在实际应用中,还可以实现基于字符串匹配的各种应用场景,这里不做具体的限制。
90.这里,在获取到待匹配域名的情况下,首先可以先进行分割,而后基于分割后的多个子域字串进行遍历匹配,直至确定最终域名匹配结果。
91.其中,待匹配域名作为一种特殊的字符串,可以基于各种分割方式进行分割。以“https://weixin/com”这一待匹配域名为例,可以基于特殊字符对待匹配域名进行分割,这里的特殊字符可以是’/’,分割为“https”、“weixin”、“com”这三个子域字串;再如,可以基于预设分割长度对待匹配域名进行分割,可以以固定的预设分割长度n依次截取字符串前缀作为子串,作为一个节点,这里以n=5为例,可以分割为“https”、“weixi”、“ncom”这三个子域字串;还如,可以基于字符识别结果对待匹配域名进行分割,这里的可以分割为“https”、“weixin”、“com”这三个子域字串。
92.在实际应用中,可以基于不同的分割需求选取不同的分割方式,这里不做具体的限制。
93.针对分割后的多个子域字串,可以依次进行域名匹配。针对第一个子域字串可以基于预先构建的域名树形结构查找是否存在与第一个子域字串匹配的源子域字串,如果查找到存在与第一个子域字串匹配的源子域字串,很大程度上说明在域名数据库中存在第一个子域字串,这时将第一个子域字串作为当前域名匹配结果,而后,针对第二个子域字串同理可以按照上述步骤查找是否存在匹配的源子域字串,而后更新当前域名匹配结果,依此
循环,直至得到最终域名匹配结果。
94.与此同时,如果查找不到与当前子域字串匹配的源子域字串,则说明当前匹配不成功,此时可以将当前域名匹配结果,确定为最终域名匹配结果。
95.本公开实施例中的源子域字串可以是域名树形结构的组成原子,其中,源子域字串同样可以是分割得到的,这样,在进行匹配时,可以基于子域字串进行查找,相比相关技术中基于字符方式的查找而言,显著提升了查找效率。
96.考虑到域名树形结构的构建对于进行域名匹配的关键作用,接下来可以着重对构建域名树形结构的过程进行具体说明。
97.本公开实施例中,可以按照如下步骤构建域名树形结构:
98.步骤一、获取多个源域名;
99.步骤二、对多个源域名分别进行分割,得到每个源域名分割后的源子域字串;
100.步骤三、基于每个源域名分割后的源子域字串构建域名树形结构。
101.这里获取的多个源域名可以是从源数据库中提取的,不同的应用场景对应获取的源域名也不同,这里不做具体的限制。
102.与针对待匹配域名进行分割类似的是,这里可以对多个源域名分别进行分割,也即,针对每个源域名可以分割得到对应的多个源子域字串。基于各个源域名分割后的源子域字串可以构建域名树形结构。
103.其中,有关源域名的分割方法可以参见有关待匹配域名的分割方法,在此不做赘述。
104.为了进一步的提升构建效率,在域名分割之前,可以对多个源域名进行排序,而后对排序后的多个源域名分别进行分割,从而得到每个源域名分割后的源子域字串。
105.可知的是,基于排序结果,多个源域名之间具有了先后顺序,这样,可以结合排序后的多个源域名的分割结果,实现域名树形结构的创建。
106.在实际应用中,可以按照多个源域名的排列顺序依次遍历各个源域名,针对每个源域名而言,则可以基于该源域名分割得到的多个源子域字串依次进行域名树形结构的扩展。例如,首先可以基于第一个源域名扩展域名树形结构,而后基于第二个源域名扩展域名树形结构,依次进行,直至遍历到最后一个源域名。其中,针对每个源域名而言,均可以按照如下步骤实现具体的域名树形结构的构建:
107.步骤一、针对遍历的当前源域名中的当前源子域字串,将当前源子域字串与所在节点对应的节点动态数组的最后一个元素进行比较;
108.步骤二、若取值不同,则将当前源子域字串添加至节点动态数组;若取值相同,则创建新的子节点,并将下一个源子域字串添加至新的子节点对应的第一个元素,直至到最后一个源子域字串。
109.这里,基于当前源域名中的当前源子域字串,在当前源子域字串未曾添加到域名树形结构之前,可以进行添加,当已经添加之后,可以新增新的子节点,从而实现当前源域名至域名树形结构的各层节点的填充。
110.在实际应用中,如图3所示,可以按照如下步骤构建域名树形结构:
111.1、对多条源数据(对应多个源域名)进行整体排序,并将每一条源数据按照特定分隔符或者固定长度进行子域划分,而后遍历每一条源数据填入缩点trie树;
112.2、遍历源数据的每一个子域(对应一个子域字串),并将子域字符与节点动态数组的最后一个元素比较,若取值不同,则可以直接添加,若取值相同,则创建一个新的动态数组作为子节点(已存在则跳过),并将下一个子域字串填入子节点第一个元素,继续遍历下一个子域;
113.3、若遍历达到最后一个子域,则将该节点的该元素位置标记为叶子节点位置,继续遍历下一条源数据,直至结束,建树完成。
114.本公开实施例提供的域名匹配方法可以按照如下步骤对多个源域名进行排序:
115.步骤一、确定在每个字符位置处多个源域名分别对应的字符;
116.步骤二、按照多个源域名分别对应的字符之间的排序对多个源域名进行排序。
117.这里,可以采用逐字符的方式实现各个源域名之间的排序。对于排序在前的源域名可以靠前参与到域名树形结构的构建,反之,对于排序在后的源域名可以靠后参与到域名树形结构的构建,这样在针对每个层级是按照先后顺序填充的节点动态数组,而在节点动态数组扩展的过程中,仅需进行对应的一次比较即可,使得整个构建过程更为省时。
118.为了便于进一步理解上述排序过程,可以结合如下示例进行说明。
119.如下表格所示,为初始的源数据结合,共计有8个源域名。
120.序号源域名1http://www.abc.com/1232http://www.def.com3http://abcdef.cn/aaa/9994https://weixin.com5https://weixin.com/qr6https://weixin.com/up/17https://kkkk/111/2228https://up
121.在按照上述逐字符比对方法进行排序后,可以得到排序后的8个源域名,如下表所示:
122.序号域名1http://abcdef.cn/aaa/9992http://www.abc.com/1233http://www.def.com4https://kkkk/111/2225https://up6https://weixin.com7https://weixin.com/qr8https://weixin.com/up/1
123.对于排序后的8个源域而言,可以分别进行分割,并依次进行域名树形结构的构建,构建得到的有序缩点tire树结构如图4所示。
124.基于构建的域名树形结构可以实现针对待匹配域名的匹配,具体可以通过如下步骤来实现:
125.步骤一、从预先构建的域名树形结构包括的多个结构层级中确定与当前子域字串对应的当前结构层级;
126.步骤二、从当前结构层级对应的至少一个源子域字串中,查找是否存在与当前子域字串匹配的源子域字串。
127.这里,可以逐层级进行匹配,且在一个层级内进行匹配时,可以是基于字符字串之间的匹配度实现的,若匹配一致,则说明在当前层级匹配成功,若匹配不一致,则说明在当前层级匹配失败。
128.在实际应用中,针对分割后的多个字符字串,每个子域在相应层级的动态数组中执行二分查找,若查找成功则继续在子节点查找下一个子域,若查找失败则返回查找过程中最后一次报错的路径作为最大前缀匹配结果,如图5所示的流程图所示。
129.为了便于进一步理解上述域名匹配的过程,可以结合图4示例的有序缩点tire树结构具体说明有关域名匹配过程。
130.若输入:https://weixin.com/qrpay/12345678,求其最大前缀,则匹配顺序如下:
131.1、用分隔符’/’对输入字符串进行拆解,依次对拆解的子域字串进行匹配;
132.2、对第一个子域字串https进行第一层匹配,二分查找,命中;
133.3、对第二个子域字串weixin.com进行第二层匹配,二分查找,命中,并且识别到命中的节点为叶子节点,将此节点代表的域名’https://weixin.com’,记录到当前域名匹配结果中;
134.4、对第三个子域字串qrpay进行第三层匹配,二分查找,未命中,递归结束,最终结果为第三步记录的值:’https://weixin.com’,返回。
135.可知的是,本公开实施例提供的域名匹配方法具有如下优点:
136.1、对构建树的字符串按照特殊字符(本例为’/’)进行分隔,每个分隔的子串作为一个节点,从而达到收缩trie树节点数量的目的;
137.2、构建树的所有源字符串是有序的,每一层的节点排列也是有序的,进而,每一层的节点使用动态有序数组进行存储;
138.3、对待匹配字符串使用同样的方式进行分割,并在每一层节点递归查找分割后的子域,显著提升后续的匹配效率;
139.4、假设缩点倍率为n,字符集大小为m,则构建总遍历次数降低n倍,树形结构广度降低m倍,深度降低n倍,整体空间复杂度降低m*n倍。
140.参见图6所示,为本公开实施例提供的树形结构构建方法的流程图,方法包括步骤s601~s603,其中:
141.s601:获取多个源域名;
142.s602:对多个源域名分别进行分割,得到每个源域名分割后的源子域字串;
143.s603:基于每个源域名分割后的源子域字串构建域名树形结构。
144.采用上述树形结构构建方法,其在获取到多个源域名的情况下,可以对多个源域名分别进行分割,而后基于每个源域名分割后的源子域字串构建域名树形结构,其构建效率较高。
145.其中,有关构建域名树形结构的具体方法可以参见上述实施例的相关描述,在此不做赘述。
146.在本说明书的描述中,参考术语“一些可能的实施方式”、“一些实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施方式或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施方式或示例以及不同实施方式或示例的特征进行结合和组合。
147.关于本公开实施方式的方法流程图,将某些操作描述为以一定顺序执行的不同的步骤。这样的流程图属于说明性的而非限制性的。可以将在本文中所描述的某些步骤分组在一起并且在单个操作中执行、可以将某些步骤分割成多个子步骤、并且可以以不同于在本文中所示出的顺序来执行某些步骤。可以由任何电路结构和/或有形机制(例如,由在计算机设备上运行的软件、硬件(例如,处理器或芯片实现的逻辑功能)等、和/或其任何组合)以任何方式来实现在流程图中所示出的各个步骤。
148.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
149.基于同一发明构思,本公开实施例中还提供了与方法对应的装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
150.参照图7所示,为本公开实施例提供的一种域名匹配装置的示意图,装置包括:获取模块701、分割模块702、匹配模块703;其中,
151.获取模块701,用于获取待匹配域名;
152.分割模块702,用于对待匹配域名进行分割,得到分割后的多个子域字串;
153.匹配模块703,用于循环执行如下步骤,直至得到最终域名匹配结果:
154.针对待匹配的当前子域字串,基于预先构建的域名树形结构查找是否存在与当前子域字串匹配的源子域字串;域名树形结构由多个源子域字串构建得到;
155.若是,则将当前子域字串添加至当前域名匹配结果,并将下一个子域字串作为当前子域字串进行匹配。
156.采用上述域名匹配装置,在获取到待匹配域名的情况下,首先对该待匹配域名进行分割,而后能够循环针对分割后的多个子域字串执行域名匹配,在针对当前子域字串进行匹配的过程中,可以基于预先构建的域名树形结构直接查找从而得到最终域名匹配结果。由于域名树形结构是基于源子域字串构建得到,相比现有技术中是基于字符方式来创建而言,显著提升了构建效率,除此之外,在进行域名匹配过程中,同样是基于分割后的子域字串进行匹配,相比相关技术中是基于字符遍历进行匹配,这显著提升了匹配效率。
157.在一种可能的实施方式中,匹配模块703,还用于:
158.若否,则将当前子域字串之前匹配成功的子域字串所构成的当前域名匹配结果,确定为最终域名匹配结果。
159.在一种可能的实施方式中,匹配模块703,用于按照如下步骤基于预先构建的域名树形结构查找是否存在与当前子域字串匹配的源子域字串:
160.从预先构建的域名树形结构包括的多个结构层级中确定与当前子域字串对应的当前结构层级;
161.从当前结构层级对应的至少一个源子域字串中,查找是否存在与当前子域字串匹配的源子域字串。
162.在一种可能的实施方式中,匹配模块703,用于按照如下步骤查找是否存在与当前子域字串匹配的源子域字串:
163.基于二分查找方式查找是否存在与当前子域字串匹配的源子域字串。
164.在一种可能的实施方式中,分割模块702,用于按照如下方式中的一种对待匹配域名进行分割:
165.基于预设分割长度对待匹配域名进行分割;
166.基于特殊字符对待匹配域名进行分割;
167.基于字符识别结果对待匹配域名进行分割。
168.在一种可能的实施方式中,还包括:
169.构建模块704,用于按照如下步骤预先构建域名树形结构:
170.获取多个源域名;
171.对多个源域名分别进行分割,得到每个源域名分割后的源子域字串;
172.基于每个源域名分割后的源子域字串构建域名树形结构。
173.在一种可能的实施方式中,构建模块704,用于按照如下步骤对多个源域名分别进行分割:
174.对多个源域名进行排序,得到排序后的多个源域名;
175.对排序后的多个源域名分别进行分割,得到每个源域名分割后的源子域字串。
176.在一种可能的实施方式中,在多个源域名包括多个字符及对应的多个字符位置的情况下,构建模块704,用于按照如下步骤对多个源域名进行排序,得到排序后的多个源域名:
177.确定在每个字符位置处多个源域名分别对应的字符;
178.按照多个源域名分别对应的字符之间的排序对多个源域名进行排序。
179.在一种可能的实施方式中,构建模块704,用于按照如下步骤基于每个源域名分割后的源子域字串构建域名树形结构:
180.对排序后的多个源域名循环执行如下步骤,直至构建得到域名树形结构:
181.针对遍历的当前源域名中的当前源子域字串,将当前源子域字串与所在节点对应的节点动态数组的最后一个元素进行比较;
182.若取值不同,则将当前源子域字串添加至节点动态数组;若取值相同,则创建新的子节点,并将下一个源子域字串添加至新的子节点对应的第一个元素,直至到最后一个源子域字串。
183.参照图8所示,为本公开实施例提供的一种树形结构构建装置的示意图,装置包括:获取模块801、分割模块802、构建模块803;其中,
184.获取模块801,用于获取多个源域名;
185.分割模块802,用于对多个源域名分别进行分割,得到每个源域名分割后的源子域字串;
186.构建模块803,用于基于每个源域名分割后的源子域字串构建域名树形结构。
187.需要说明的是,本公开实施方式中的装置可以实现前述方法的实施方式的各个过程,并达到相同的效果和功能,这里不再赘述。
188.本公开实施例还提供了一种电子设备,如图9所示,为本公开实施例提供的电子设备结构示意图,包括:处理器901、存储器902、和总线903。存储器902存储有处理器901可执行的机器可读指令(比如,图7中的装置中获取模块701、分割模块702、匹配模块703对应的执行指令等;再如,图8中的装置中获取模块801、分割模块802、构建模块803对应的执行指令等),当电子设备运行时,处理器901与存储器902之间通过总线903通信,机器可读指令被处理器901执行时执行如图2所示的域名匹配方法,或者如图6所示的树形结构构建方法。
189.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
190.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的方法的步骤,具体可参见上述方法实施例,在此不再赘述。
191.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
192.本公开中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,对于装置、设备和计算机可读存储介质实施方式而言,由于其基本相似于方法实施方式,所以其描述进行了简化,相关之处可参见方法实施方式的部分说明即可。
193.本公开实施方式提供的装置、设备和计算机可读存储介质与方法是一一对应的,因此,装置、设备和计算机可读存储介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置、设备和计算机可读存储介质的有益技术效果。
194.本领域内的技术人员应明白,本公开的实施方式可提供为方法、装置(设备或系统)、或计算机可读存储介质。因此,本公开可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机可读存储介质的形式。
195.本公开是参照根据本公开实施方式的方法、装置(设备或系统)、和计算机可读存储介质的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
196.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
197.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
198.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
199.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
200.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
201.虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献