一种长域名与短域名互相转化的方法及装置的制作方法

文档序号:7912247阅读:511来源:国知局
专利名称:一种长域名与短域名互相转化的方法及装置的制作方法
技术领域
本申请涉及域名处理的技术领域,特别是涉及一种长域名转换为短域名的方法,一种短域名转换为长域名的方法,一种长域名转换为短域名的装置,以及,一种短域名转换为长域名的装置。
背景技术
域名(Domain Name)是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。其中,长域名是指1993年来互联网中出现WWW协议后,应用的常规的域名,通常由几十个英文字母或数字符号组成。短域名是相对于常规的域名而言,通常是由常规域名通过哈希(hash)算法等映射出的对应的更为节省空间的,且非常简短的域名。
现今网络中很多微博类型的网站都要应用到长域名与短域名转换技术。这是因为一条微博传达的信息内容十分有限(通常为一百多个字符),为了使用户能有更多的信息展示空间,尽量多地表达用户想要传递的信息,此时需要将长域名转化成短域名。例如当用户上传长域名http://tech.1feng. com/telecom/detail 201107/17/77458460. shtml时,会将其转化成短域名http://t. cn/aOkscW,然后再出现在微博中。如前所述,现有技术中,主要是通过hash算法将长域名转化为短域名。具体而言,hash算法是一种快速存取数据的方法,简单地说,就是一种将任意内容的输入转换成相同长度输出的加密方式。它用一种算法建立键值与真实值之间的对应关系,每一个真实值只能有一个键值,但是一个键值可以对应多个真实值,这样可以快速在数组等数据结构中存取数据。hash算法就是把任意长度的输入(又叫做预映射,pre-1mage),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,即散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。普通的hash算法一般是考虑字符均匀分布的,在应用hash算法将长域名转化为短域名时,将不可避免产生hash冲突问题。具体而言,一般长域名中所包含的常用字符在80个字符左右,因此如果按照普通的hash算法,在生成hash值的过程中会产生比较多的重复。这容易导致不同的长域名生成相同的hash值。如果要生成的hash值的范围越小,那么冲突的概率也就越大。而且,即使在hash数组开到很大的时候,也会不可避免的出现“生日效应”。生日效应是指,在一个10人的团体中,能找到生日相同的人的概率是2.4%,而在同一团体中,有2人生日相同的概率是11.7%。类似的,当预映射的空间很大的情况下,算法必须有足够的强度来保证不能轻易找到"相同生日"的人。如果刚才这个短域名是访问热点的时候处理就更麻烦,这是因为访问热点的访问量和转载量都往往很高,相应长域名转化短域名和反向查找的数量也相应提高冲突,而hash冲突就会更多的产生。所以hash冲突在长域名转换为短域名的过程中表现出来的问题就是不同的长域名有可能转化成相同的短域名,长域名越多这种冲突越明显,导致使用短域名查找不一定能找到需要的相应长域名链接。因此,目前需要本领域技术人员解决的一个技术问题就是,如何创造性地提出一种长域名与短域名的互相转化机制,用以避免出现hash冲突,保证长域名与短域名的一一映射,并提高长短域名的转化速度。

发明内容
本申请所要解决的技术问题是,提供一种长域名与短域名的互相转化机制,以避免出现hash冲突,保证长域名与短域名的--映射,并提高长短域名的转化速度。为了解决上述问题,本申请公开了一种长域名转换为短域名的方法,包括获取用户提交的长域名; 逐个遍历所述长域名中的每个字符,确定各字符在预置的二维数组中对应的写入 值以及对应的行列位置;根据所述长域名在二维数组中的遍历路径,生成短域名标识值;将所述短域名标识值转换为短域名。优选的是,所述逐个遍历长域名中的每个字符,确定各字符在预置的二维数组中对应的行列位置包括若当前遍历字符具有在先确定的行列位置,则采用该行列位置;所述逐个遍历长域名中的每个字符,确定各字符在预置的二维数组中对应的写入值的步骤包括若当前遍历字符具有在先确定的写入值,则采用该写入值。优选的是,所述二维数组中包括单字符行标识,由所述单字符行标识分别标记对应的行;所述逐个遍历长域名中的每个字符,确定各字符在预置的二维数组中的写入值包括若当前遍历字符没有在先确定的写入值,则根据二维数组已分配的列数确定当前遍历字符对应的写入值;所述逐个遍历长域名中的每个字符,确定各字符在预置的二维数组中对应的行列位置包括若当前遍历字符没有在先确定的行列位置,则依据所述单字符行标识,确定当前遍历字符在所述二维数组中对应的行位置;以及,根据上一遍历字符对应的写入值,确定当前遍历字符在所述二维数组中对应的列位置。优选的是,所述二维数组中还包括行号标识PR和列号标识PC,还包括在所述行号标识PR对应的行中依次记录所遍历各字符的行位置;在所述列号标识PC对应的行中依次记录所遍历各字符的列位置。优选的是,所述根据二维数组已分配的列数确定当前遍历字符对应的写入值进一步包括获取二维数组已分配的列数η ;根据所述已分配列数η,确定当前遍历字符对应的写入值为η+1 ;
所述根据上一遍历字符对应的写入值,确定当前遍历字符在所述二维数组中对应的列位置的步骤进一步包括获取上一遍历字符对应的写入值I ;根据所述写入值I,确定当前遍历字符在所述二维数组中对应的列位置为第I列。优选的是,所述二维数组中包括短域名标识值行标识,用于标识记录短域名标识值的行;所述根据长域名在二维数组中的遍历路径,生成短域名标识值包括读取上一次写入的短域名标识值;根据所述上一次写入的短域名标识值,生成当次写入的短域名标识值;根据短域名标识值行标识,确定所述当次写入的短域名标识值的行位置; 根据长域名遍历的最末字符在二维数组中的列位置,确定所述当次写入的短域名标识值的列位置。优选的是,所述根据上一次写入的短域名标识值,生成当次写入的短域名标识值进一步包括根据上一次写入的短域名标识值Index,生成当次写入的短域名标识值为Index+Ι ;所述根据长域名遍历的最末字符在二维数组中的列位置,确定所述当次写入的短域名标识值的列位置的步骤进一步包括根据长域名遍历的最末字符在二维数组中的列位置j,确定所述当次写入的短域名标识值的列位置为j+1。优选的是,所述将短域名标识值转换为短域名的步骤为,通过进制转换将短域名标识值转换为对应的短域名。本申请实施例还公开了一种长域名转换为短域名的方法,还包括提取短域名;将所述短域名转换为短域名标识值,并获取所述短域名标识值在预置的二维数组中的位置;依据所述短域名标识值在二维数组中的列位置,查找相应列中预先记录的行列位
置信息;根据所述行列位置信息逐步从二维数组的对应位置提取字符,直到某个提取字符对应的列位置中没有预先记录的行列位置信息;将所提取的所有字符组成长域名。优选的是,所述根据行列位置信息逐步从二维数组的对应位置提取字符,直到某个提取字符对应的列位置中没有预先记录的行列位置信息包括根据第一行列位置信息从二维数组的对应位置提取第一目标字符;判断所述第一目标字符所在的列位置是否存在对应的预先记录的第二行列位置信息;若是,则依据所述第二行列位置信息,从二维数组的对应位置提取第二目标字符;若否,则判定字符反向遍历完毕。本申请实施例还公开了一种长域名转换为短域名的装置,包括
长域名获取模块,用于获取用户提交的长域名;写入值确定模块,用于逐个遍历所述长域名中的每个字符,确定各字符在预置的二维数组中对应的写入值;行列位置确定模块,用于逐个遍历所述长域名中的每个字符,确定各字符在预置的二维数组中对应的行列位置;短域名标识值生成模块,用于根据所述长域名在二维数组中的遍历路径,生成短域名标识值;转换模块,用于将所述短域名标识值转换为短域名。本申请实施例还公开了一种长域名转换为短域名的装置,还包括短域名获取模块,用于提取短域名;短域名标识值转换模块,用于将所述短域名转换为短域名标识值;短域名标识值定位模块,用于获取所述短域名标识值在预置的二维数组中的位置;行列位置信息查找模块,用于依据所述短域名标识值在二维数组中的列位置,查找相应列中预先记录的行列位置信息;字符提取模块,用于根据所述行列位置信息逐步从二维数组的对应位置提取字符,直到某个提取字符对应的列位置中没有预先记录的行列位置信息;长域名组成模块,用于将所提取的所有字符组成长域名。与现有技术相比,本申请具有以下优点由于本申请长域名转换短域名的方式,除了在先确定的字符,各个字符逐一遍历,并记录在唯一的数组位置中,以字符的行位置,列位置和写入值为要素,转换成一个短域名,得到出唯一的计算转换的路径;同时这个路径可以反向操作运算,通过行位置,列位置和写入值要素找回每一个相应的字符,这样短域名找长域名也是唯一路径和唯一结果。所以避免出现hash冲突,保证长域名与短域名的一一映射,并提高长短域名的转化速度。


图1示出了本申请的一种长域名转换为短域名的方法实施例1的流程图;图2示出了本申请的一种长域名转换为短域名的方法实施例2的流程图;图3示出了本申请的一种短域名转换为长域名的方法实施例的流程图;图4示出了本申请的一种长域名转换为短域名的装置实施例的结构框图;图5示出了本申请的一种短域名转换为长域名的装置实施例的结构框图。
具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。参考图1,其示出了本申请的一种长域名转换为短域名的方法实施例1的流程图,具体可以包括以下步骤步骤101,获取用户提交的长域名;在本申请实施例中,长域名是指1993年来互联网中出现WWW协议后,应用的常规的域名,通常由几十个英文字母或数字符号组成。步骤102,逐个遍历所述长域名中的每个字符,确定各字符在预置的二维数组中对应的写入值以及对应的行列位置;公知的是,数组是一个由若干同类型变量组成的集合,引用这些变量时可用同一名字。数组均由连续的存储单元组成,最低地址对应于数组的第一个元素,最高地址对应于最后一个元素,数组可以是一维的,也可以是多维的。
本申请实施例中所称二维数组就是一种多维数组,又称为矩阵,具体可以采用如下定义二维数组A[m] [η],每个元素的长度为t个字节,设a[p] [q]为A的第一个元素,即二维数组的行下标从P到m,列下标从q到η。按“行优先顺序”存储时,则元素a[i] [j]的地址计算可以采用如下公式LOC(a[i] (j [i] [j]) = L0C(a[p] [q]) + ((i_p)*n+(j-q))*t按“列优先顺序”存储时,则元素a[i] [j]的地址计算可以采用如下公式LOC (a[i] [j]]) = LOC (a[p] [q]) + ((j_q) *m+(i_p)) *t通过以上公式可以获知,存放该数组至少需要的单元数为(m-p+l)*(n-q+l)*t个字节。在具体实现中,所述行列位置即指二维数组中的元素所对应的行列位置。在本申请的一种优选实施例中,可以在遍历长域名各字符的过程中,通过以下子步骤确定各字符在预置的二维数组中对应的写入值和行列位置子步骤S21,若当前遍历字符具有在先确定的写入值和行列位置,则直接采用该写入值和行列位置;例如,当前有长域名www. ABC. com,对长域名中的“ABC”三个字符进行从长域名到短域名的转化,以下结合表I进一步说明本实施例表I
权利要求
1.一种长域名转换为短域名的方法,其特征在于,包括 获取用户提交的长域名; 逐个遍历所述长域名中的每个字符,确定各字符在预置的二维数组中对应的写入值以及对应的行列位置; 根据所述长域名在二维数组中的遍历路径,生成短域名标识值; 将所述短域名标识值转换为短域名。
2.如权利要求1所述的方法,其特征在于,所述逐个遍历长域名中的每个字符,确定各字符在预置的二维数组中对应的行列位置的步骤包括 若当前遍历字符具有在先确定的行列位置,则采用该行列位置; 所述逐个遍历长域名中的每个字符,确定各字符在预置的二维数组中对应的写入值的步骤包括 若当前遍历字符具有在先确定的写入值,则采用该写入值。
3.如权利要求1所述的方法,其特征在于,所述二维数组中包括单字符行标识,由所述单字符行标识分别标记对应的行; 所述逐个遍历长域名中的每个字符,确定各字符在预置的二维数组中的写入值的步骤包括 若当前遍历字符没有在先确定的写入值,则根据二维数组已分配的列数确定当前遍历字符对应的写入值; 所述逐个遍历长域名中的每个字符,确定各字符在预置的二维数组中对应的行列位置的步骤包括 若当前遍历字符没有在先确定的行列位置,则依据所述单字符行标识,确定当前遍历字符在所述二维数组中对应的行位置;以及, 根据上一遍历字符对应的写入值,确定当前遍历字符在所述二维数组中对应的列位置。
4.如权利要求1或2或3所述的方法,其特征在于,所述二维数组中还包括行号标识PR和列号标识PC,还包括 在所述行号标识PR对应的行中依次记录所遍历各字符的行位置; 在所述列号标识PC对应的行中依次记录所遍历各字符的列位置。
5.如权利要求3所述的方法,其特征在于,所述根据二维数组已分配的列数确定当前遍历字符对应的写入值的步骤进一步包括 获取二维数组已分配的列数η ; 根据所述已分配列数η,确定当前遍历字符对应的写入值为η+1 ; 所述根据上一遍历字符对应的写入值,确定当前遍历字符在所述二维数组中对应的列位置的步骤进一步包括 获取上一遍历字符对应的写入值I ; 根据所述写入值I,确定当前遍历字符在所述二维数组中对应的列位置为第I列。
6.如权利要求1所述的方法,其特征在于,所述二维数组中包括短域名标识值行标识,用于标识记录短域名标识值的行;所述根据长域名在二维数组中的遍历路径,生成短域名标识值的步骤包括读取上一次写入的短域名标识值;根据所述上一次写入的短域名标识值,生成当次写入的短域名标识值;根据短域名标识值行标识,确定所述当次写入的短域名标识值的行位置;根据长域名遍历的最末字符在二维数组中的列位置,确定所述当次写入的短域名标识值的列位置。
7.如权利要求6所述的方法,其特征在于,所述根据上一次写入的短域名标识值,生成当次写入的短域名标识值的步骤进一步包括根据上一次写入的短域名标识值Index,生成当次写入的短域名标识值为Index+Ι ;所述根据长域名遍历的最末字符在二维数组中的列位置,确定所述当次写入的短域名标识值的列位置的步骤进一步包括根据长域名遍历的最末字符在二维数组中的列位置j,确定所述当次写入的短域名标识值的列位置为j+1。
8.如权利要求1所述的方法,其特征在于,所述将短域名标识值转换为短域名的步骤为,通过进制转换将短域名标识值转换为对应的短域名。
9.一种短域名转换为长域名的方法,其特征在于,包括提取短域名;将所述短域名转换为短域名标识值,并获取所述短域名标识值在预置的二维数组中的位置;依据所述短域名标识值在二维数组中的列位置,查找相应列中预先记录的行列位置信根据所述行列位置信息逐步从二维数组的对应位置提取字符,直到某个提取字符对应的列位置中没有预先记录的行列位置信息;将所提取的所有字符组成长域名。
10.如权利要求9所述的方法,其特征在于,所述根据行列位置信息逐步从二维数组的对应位置提取字符,直到某个提取字符对应的列位置中没有预先记录的行列位置信息的步骤包括根据第一行列位置信息从二维数组的对应位置提取第一目标字符;判断所述第一目标字符所在的列位置是否存在对应的预先记录的第二行列位置信若是,则依据所述第二行列位置信息,从二维数组的对应位置提取第二目标字符;若否,则判定字符反向遍历完毕。
11.一种长域名转换为短域名的装置,其特征在于,包括长域名获取模块,用于获取用户提交的长域名;写入值确定模块,用于逐个遍历所述长域名中的每个字符,确定各字符在预置的二维数组中对应的写入值;行列位置确定模块,用于逐个遍历所述长域名中的每个字符,确定各字符在预置的二维数组中对应的行列位置;短域名标识值生成模块,用于根据所述长域名在二维数组中的遍历路径,生成短域名标识值;转换模块,用于将所述短域名标识值转换为短域名。
12. —种短域名转换为长域名的装置,其特征在于,包括短域名获取模块,用于提取短域名;短域名标识值转换模块,用于将所述短域名转换为短域名标识值;短域名标识值定位模块,用于获取所述短域名标识值在预置的二维数组中的位置;行列位置信息查找模块,用于依据所述短域名标识值在二维数组中的列位置,查找相应列中预先记录的行列位置信息;字符提取模块,用于根据所述行列位置信息逐步从二维数组的对应位置提取字符,直到某个提取字符对应的列位置中没有预先记录的行列位置信息;长域名组成模块,用于将所提取的所有字符组成长域名。
全文摘要
本申请提供了一种长域名与短域名互相转化的方法及装置,其中,所述长域名转换为短域名的方法包括获取用户提交的长域名;逐个遍历所述长域名中的每个字符,确定各字符在预置的二维数组中对应的写入值以及对应的行列位置;根据所述长域名在二维数组中的遍历路径,生成短域名标识值;将所述短域名标识值转换为短域名。本申请可以避免出现hash冲突,保证长域名与短域名的一一映射,并提高长短域名的转化速度。
文档编号H04L29/12GK103002061SQ20111027619
公开日2013年3月27日 申请日期2011年9月16日 优先权日2011年9月16日
发明者郭志通 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1