当前位置 : IT培训网 > 常见问题 > 详解短网址算法之进制算法、随机数算法和HASH算法

详解短网址算法之进制算法、随机数算法和HASH算法

时间:2019-04-09 13:31:51  来源:技能培训网  作者:IT培训网  已有:名学员访问该课程
什么是短网址算法?短网址,顾名思义,就是把长的URL转成短的URL,现在提供这种服务的有很多公司。比如百度的,新浪的,谷歌的等。短网址算法实现方法有三种,即进制算法、随机算法、HASH算法,究竟是如何实现的呢?

什么是短网址算法?短网址,顾名思义,就是把长的URL转成短的URL,现在提供这种服务的有很多公司。比如百度的,新浪的,谷歌的等。短网址算法实现方法有三种,即进制算法、随机算法、HASH算法,究竟是如何实现的呢?

短网址服务对应的算法,大致分为三类:进制算法、随机数算法和HASH算法。下面IT培训网分别说说它们的实现原理。

详解短网址算法之进制算法、随机数算法和HASH算法_www.itpxw.cn

进制算法、随机数算法和HASH算法实现原理:

1、短网址进制算法

算法简述:一个以数字、大小写字母共62个字符的任意进制的算法。

数据库中ID递增,当ID为233,则对应短网址计算过程如下:

设置序列为“0123456789abcdefghijklmnopqrstuvwxyz”

233/36=6

233%36= 17

依次取上述字符的6位,17位,则为6h

其生成之后的短网址为xx.xx/6h 。

2、短网址随机数算法

算法简述:每次对候选字符进行任意次随机位数选择,拼接之后检查是否重复

若要求位数为2,则其对应短地址为计算过程如下:

设置字符序列“0123456789abcdefghijklmnopqrstuvwxyz”

根据字符个数设置最大值为35,最小值为0,取2次随机数假设为:6,17

依次取上述字符的6位和17位,则为6h

其生成之后的短网址为xx.xx/6h 。

3、短网址HASH算法

算法简述:对id进行hash操作( 可选:利用随机数进行加盐),并检查是否重复

设置ID自增,若ID=233,则其对应短地址为计算过程如下:

取随机数为盐

对233进行sha1加密为: aaccb8bb2b4c442a7c16a9b209c9ff448c6c5f35:2

要求位数为7,直接取上述加密结果的前7位为:aaccb8

其生成之后的短网址为xx.xx/2e8c027 。

短网址的本质

短网址本质上是实现了一个映射函数 f: X -> Y 。而这个映射函数必须同时具有两个特点:

如果 x1 != x2, 则 f (x1) != f(x2);

对于每一个 y, 能够找到唯一的一个 x 使得 f(x) = y;

对于任何的线性函数,比如 f(x) = 2x,都满足这样的条件。

java实现短网址

根据上面的解释,下面我来实现一个简单的短网址算法!

public class ShortUrlTest {

private static final String ALPHABET =

"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

private static final int BASE = ALPHABET.length();

public static String encode(int num) {

StringBuilder sb = new StringBuilder();

while ( num > 0 ) {

sb.append( ALPHABET.charAt( num % BASE ) );

num /= BASE;

}

return sb.reverse().toString();

}

public static int decode(String str) {

int num = 0;

for ( int i = 0; i < str.length(); i++ )

num = num * BASE + ALPHABET.indexOf(str.charAt(i));

return num;

}

public static void main(String[] args) {

// 假设 www.xttblog.com 对应的ID是1

encode(1);

}

}

短网址重定向

关于短网址的重定向,建议使用302。不建议使用301。因为302方便统计和分析用户属性等数据。大家可以参考百度、新浪、谷歌等是否都使用的是302状态!

最后提醒大家一下,实现短网址一定要注意安全问题。比如,短网址常见的SSRF安全问题、XSS、SQL注入等问题。

顶一下
(0)
0%
踩一下
(0)
0%

IT培训0元试听 每期开班座位有限.0元试听抢座开始! IT培训0元试听

  • 姓名 : *
  • 电话 : *
  • QQ : *
  • 留言 :
  • 验证码 : 看不清?点击更换请输入正确的验证码

在线咨询在线咨询

温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。

------分隔线----------------------------
------分隔线----------------------------

推荐内容

相关热点