短网址

 

新浪短网址:https://sina.lt/

百度短网址: http://dwz.cn/ , goog也有。

 

短网址: 由一个长网址转换而来,可以利用改短网址访问原网址。例如,http://t.cn/xx1xx 这种在微博这些限制字数的应用里,便于发布、传播。


原理:

当在浏览器里输入http://t.cn/xx1xx

DNS(域名系统服务)首先解析获得 http://t.cnIP 地址, 当 DNS 获得 IP 地址以后(比如:112.125.225.172),会向这个地址发送 HTTP GET 请求,查询短码 RlB2PdD

http://t.cn 服务器会通过短码 RlB2PdD 获取对应的长 URL

通过 HTTP 301 转到对应的长 URL https://m.helijia.com


算法实现

网上比较流行的算法有两种 自增序列算法、 摘要算法

算法一

自增序列算法 也叫永不重复算法

设置 id 自增,用62进制表示这个id,1对1,也就不会出现重复的情况。这个利用的就是低进制转化为高进制时,字符数会减少的特性。如下图:十进制 10000,对应不同进制的字符表示。

图片描述

短址的长度一般设为 6 位,而每一位是由 [a - z, A - Z, 0 - 9] 总共 62 个字母组成的,所以 6 位的话,总共会有 62^6 ~= 568亿种组合,基本上够用了。

@@进制转换工具 http://tool.lu/hexconvert/

 

算法二

  1. 将长网址 md5 生成 32 位签名串,分为 4 段, 每段 8 个字节
  2. 对这四段循环处理, 取 8 个字节, 将他看成 16 进制串与 0x3fffffff(30位1) 与操作, 即超过 30 位的忽略处理
  3. 这 30 位分成 6 段, 每 5 位的数字作为字母表的索引取得特定字符, 依次进行获得 6 位字符串
  4. 总的 md5 串可以获得 4 个 6 位串,取里面的任意一个就可作为这个长 url 的短 url 地址

这种算法存在重复几率。

md5: https://www.zhihu.com/topic/19619705/hot

 

 

Ref:

https://segmentfault.com/a/1190000012088345

https://hufangyun.com/2017/short-url/

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

First Snowflakes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值