1.为什么用短链

短网址应用已经在各大微博上开始流行了起来。例如QQ微博的url.cn,新郎的sinaurl.cn等。

我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://url.cn/0nAcBW

为什么要这样做的,原因我想有这样几点:

1、微博限制字数为140字一条,那么如果我们需要发一些连接上去,但是这个连接非常的长,以至于将近要占用我们内容的一半篇幅,这肯定是不能被允许的,所以短网址应运而生了。

2、短网址可以在我们项目里可以很好的对开放级URL进行管理。有一部分网址可以会涵盖色情,暴力,广告等信息,这样我们可以通过用户的举报,完全管理这个连接将不出现在我们的应用中,应为同样的URL通过加密算法之后,得到的地址是一样的。

3、我们可以对一系列的网址进行流量,点击等统计,挖掘出大多数用户的关注点,这样有利于我们对项目的后续工作更好的作出决策。

2.如何实现

下面先来看看短网址映射算法的理论(网上找到的资料)

1)将长网址md5生成32位签名串,分为4段, 每段8个字节;

2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;

3)这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;

4)总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;

下面是PHP代码:

function shorturl($input) {$base32 = array ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h','i', 'j', 'k', 'l', 'm', 'n', 'o', 'p','q', 'r', 's', 't', 'u', 'v', 'w', 'x','y', 'z', '0', '1', '2', '3', '4', '5');$hex = md5('prefix'.$input.'surfix');$hexLen = strlen($hex);$subHexLen = $hexLen / 8;$output = array();for ($i = 0; $i < $subHexLen; $i++) {$subHex = substr ($hex, $i * 8, 8);$int = 0x3FFFFFFF & (1 * ('0x'.$subHex));$out = '';for ($j = 0; $j < 6; $j++) {$val = 0x0000001F & $int;$out .= $base32[$val];$int = $int >> 5;}$output[] = $out;}return $output;
}

3.  输出结果

执行下面代码的结果如下,会产生4 组6 位字符串,任意一组都可以作为当前字符串的短链接地址。

print_r (shorturl(‘http://www.coosnow.com/shorturl.html’));

结果:

Array ( [0] => tytskv [1] => zrmsoa [2] => gwofej [3] => b2lyyr )

4.  跳转原理

当我们生成短链接之后,只需要在表中(数据库或者NoSql )存储原始链接与短链接的映射关系即可。当我们访问短链接时,只需要从映射关系中找到原始链接,即可跳转到原始链接。

微博短链接解析ShortUrl相关推荐

  1. php 短网址 算法,微博短链接算法PHP版本_php

    思路: 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3 ...

  2. 微博短链接的生成算法(Java版本)

    最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...

  3. java短链接原理_微博短链接的生成算法(Java版本)

    最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...

  4. 微博短链接的生成算法(Java 版本)

    最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责就 ...

  5. Java实现还原微博短链接

    依赖 <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp --><dependency>&l ...

  6. URL短链接压缩算法 微博短链接原理解析

    短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaurl.cn,六度短网址6du.in等. 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如: ...

  7. php短连接解析,微博短链接算法php版本实现代码

    思路: 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3 ...

  8. php版本算法,微博短链接算法PHP版本

    )将长网址md 生成 位签名串 分为 段 每段 个字节 )对这四段循环处理 取 个字节 将他看成 进制串与 x fffffff( 位 )与操作 即超过 位的忽略处理 )这 位分成 段 每 位的数字作为 ...

  9. php解析短链接,PHP微博中短链接的算法举例

    本节内容: 微博 短链接 实现思路: 1).将长网址md5生成32位签名串,分为4段, 每段8个字节: 2).对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操 ...

最新文章

  1. 2019 ACM - ICPC 全国邀请赛(南昌) 题解(9 / 12)
  2. Java基础:由JVM内存模型详解线程安全
  3. ecs 对比 本地服务器_ECS训练营Day03_SLB负载均衡实践 - 魔笔钨丝浣
  4. 喜报!第四范式助力宁波银行荣获2020 IDC数字化转型大奖
  5. boost::geometry::detail::overlay::get_ring用法的测试程序
  6. mc服务器音乐文件夹在哪,添加自定义音乐图文教程 我的世界怎么添加音乐
  7. 深度学习——02、深度学习入门 15-18
  8. python 遍历字典嵌套_Python 字典嵌套循环遍历
  9. python 自动点击上传以后上传文件,python使用selenium模拟点击网页实现自动导入上传文件功能...
  10. 我们是谁?前端开发者!
  11. [LeetCode]Power
  12. 使用useEffect常见问题!
  13. python pandas dataframe 不显示索引_python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)...
  14. java服务器测速_服务器测速,php在线测速
  15. Flink 与 Storm的对比
  16. systemctl重新加载_CentOS7利用systemctl添加自定义系统服务【转】
  17. 学计算机高中应该学什么科目,@所有高中生!新高考怎么选科?计算机类专业该怎么选科?...
  18. 计算机制作不同数据数据图表,数据图表与分析.doc
  19. 吴恩达团队盘点2019AI大势:自动驾驶寒冬、Deepfake已成魔
  20. 大学生电子设计大赛(内容有点多,细细看看,应该会有收获)

热门文章

  1. gear2刷Android n,gear2 Root完整教程
  2. 好客租房173-地图找房createCircle方法
  3. 创龙TI AM437x ARM Cortex-A9RGMII千兆以太网口
  4. Windows 网络命令
  5. 种群优化算法:细菌觅食优化
  6. ssh-keygen ssh-add
  7. 零基础入门产品经理(视频课程),有需要的请加微信或qq
  8. 运营商 html劫持 原理,细数宽带运营商常见的几种http劫持行为
  9. python123注册需要输入真实姓名和学校吗_Python 校园选课系统
  10. H5页面开发的touchmove事件