博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
长网站 转换为 短网址 的原理
阅读量:4041 次
发布时间:2019-05-24

本文共 1153 字,大约阅读时间需要 3 分钟。

 

短网址简介

短网址(Short URL) ,顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。

算法原理

算法一
1)将长网址md5生成32位签名串,分为4段, 每段8个字节;
2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
3)这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
4)总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;
算法二
把数字和字符组合做一定的映射,就可以产生唯一的字符串,如第62个组合就是aaaaa9,第63个组合就是aaaaba,再利用洗牌算法,把原字符串打乱后保存,那么对应位置的组合字符串就会是无序的组合。
把长网址存入数据库,取返回的id,找出对应的字符串,例如返回ID为1,那么对应上面的字符串组合就是bbb,同理 ID为2时,字符串组合为bba,依次类推,直至到达62种组合后才会出现重复的可能,所以如果用上面的62个字符,任意取6个字符组合成字符串的话,你的数据存量达到500多亿后才会出现重复的可能。
 

短网址还原

以http://url.cn/2hytQx为例:
       点击后,请求肯定是发给http://url.cn这个服务器的,这个服务器会解析得到参数2hytQx,然后查服务器那边数据库中2hytQx对应的网址为http://ditu.google.com/?q=22.974669,114.316089,然后服务器将你的请求转向到http://ditu.google.com/?q=22.974669,114.316089即可。
       问题是:http://url.cn这个服务器是谁的?
       打开http://url.cn可以看到,将转向到腾讯徽博,因此,这个服务器应该是腾讯提供的。
       其实,谁都可以提供一个这样的服务,比如:你可以申请一个域名:xxx.yyy.com,并提供一个接口,将一个网址转换成一个唯一的短地址(可以由MD5来生成),如将http://www.baidu.com转换成a3sf(我乱写的),然后你在你服务器上的数据库中存下a3sf与http://www.baidu.com的对应关系。如果某人通过http://xxx.yyy.com/a3sf来访问你的网站,你的服务器解析参数得到a3sf,然后从数据库中查到对应的网址为http://www.baidu.com,然后将请求转向到http://www.baidu.com即可。

转载地址:http://ialdi.baihongyu.com/

你可能感兴趣的文章
条件变量之虚假唤醒
查看>>
从零实现简易播放器-合集
查看>>
从零实现简易播放器-0.音视频基本概念
查看>>
从零实现简易播放器-1.模拟视频播放
查看>>
从零实现简易播放器-2.opengl渲染yuv图像
查看>>
Windows下编译可调试的ffmpeg, 包含ffplay
查看>>
意外消息:ppsjy:[MyHookProc]__read web cfg: success ------ :
查看>>
从零实现简易播放器:4.ffmpeg 解码视频为yuv数据-使用avcodec_send_packet与avcodec_receive_frame
查看>>
56个民族的C++ map定义
查看>>
Yotta企业云盘如何实现保护文件安全
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
yotta企业云盘助力制造行业创高峰
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力旅游行业新发展
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
教育数字智能化能为现有体系带来新的起点
查看>>