一、什么是短链接

  含义:就是把普通网址,转换成比较短的网址。比如:http://t.cn/RlB2PdD 这种,比如:微博;这些限制字数的应用里都用到这种技术。

  优点:短、字符少、美观、便于发布、传播。

  百度短网址:http://dwz.cn/

  google短网址: https://goo.gl/

二、原理分析

  当我们在浏览器里输入 http://t.cn/RlB2PdD 时会经历以下及格步骤:

  1.浏览器解析DNS,获取域名对应的IP;

  2.当获取到IP时,会往这个IP地址发送http的get请求以获取到RlB2PdD对应的长链接地址;

  3.HTTP通过301转到对应的长链接URL;

  注意:这里为什么使用301?301是永久性转移(重定向),也就是说,这个短地址一经生成就不会发生变化了,所以符合http中301的一个语义;

三、算法实现

  短地址一般都是由0-9A-Za-z这62个字符随机组合而成,所以我们可以生成一个62进制的串,可以根据10进制数转成62进制数;比如咱们存储数据库的时候自增的id,就可以根据这个id来生成对应的62进制的短码,作为短链接的码数,最长6位、最短1位,以下是实现的方法仅供参考: 

/***
* 10进制转为62进制
* @param $num
* @return string
*/
function from10_to62($num) {
$to = 62; // 0-9a-zA-Z总计62个字符
$dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; // 这个可以打乱顺序
$ret = '';
do {
$ret = $dict[$num%$to] . $ret; // 取模
$num = floor($num/$to); // 取余数
} while ($num > 0);
return $ret;
} /***
* 62进制转为10进制
* @param $num
* @return int|string
*/
function from62_to10($num)
{
$from = 62;
$num = strval($num);
$dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$len = strlen($num);
$dec = 0;
for ($i = 0; $i < $len; $i++) {
$pos = strpos($dict, $num[$i]); // 查找字符出现得位置 16
$bcpow = bcpow($from, $len - $i - 1); // 取62得N次方(保留整数)
$bcmul = bcmul($bcpow, $pos); // 计算每个62进制字符得10进制值
$dec = bcadd($bcmul, $dec); // 计算的值累加
}
return $dec;
} var_dump(from10_to62(1000));
var_dump(from62_to10('g8'));

  内容参考自:https://hufangyun.com/2017/short-url/

short url短链接原理的更多相关文章

  1. short URL 短网址实现原理剖析

    short URL 短网址实现原理剖析 意义,简短便于分享,避免出现超长 URL 的字符长度限制问题 原理分析, 使用 HashMap 存储对应的映射关系 (长度不超过7的字符串,由大小写字母加数字共 ...

  2. 短网址(short URL)系统的原理及其实现

    短网址(short URL)系统的原理及其实现 https://hufangyun.com/2017/short-url/?hmsr=toutiao.io&utm_medium=toutiao ...

  3. URL及short URL短网址

    URL,uniform resource locator,经常被称为网址,尤其是在使用HTTP的时候.通常是一个指向某个资源的字符串.   URLs经常被用于网页(http),但也可以用于文件传输(f ...

  4. 短网址url接口api,url短链接(t.cn、url.cn)生成

    简要说明 短网址api接口有很多格式,不同的接口生成的短网址格式也不同,比如常见的t.cn.url.cn.w.url.cn等格式.总而言之短网址接口就是用来将一个冗长的链接缩短成10个字符以内的短链接 ...

  5. 百度 谷歌 Twitter,这么多短链接服务(Short Url)究竟哪家强?

    一.短链接是什么 url=HPqdQ5VR3vA39x7ZWoWyNzwWnsDhTbh66BTpdzsJLroBDzFRm4JV-G818Zc027uZrwe7zxtxnD4H2FUahftpUK& ...

  6. 如何做系列(4)-微博URL短网址生成算法原理(java版、php版实现实例)

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

  7. C#如何实现url短地址?C#短网址压缩算法与短网址原理入门

    c# url短地址压缩算法与短网址原理的例子,详细介绍了短网址的映射算法,将长网址md5生成32位签名串,分为4段,每段8个字节,然后生成短网址,具体见文本实例. 短网址映射算法: 将长网址md5生成 ...

  8. 生成短链接的URL

    假设你想做一个像微博短链接那样的短链接服务,短链接服务生成的URL都非常短例如: http://t.cn/E70Piib, 我们应该都能想到链接中的E70Piib对应的就是存储长链接地址的数据记录的I ...

  9. 【转】C# URL短地址压缩算法及短网址原理解析

    这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下 短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaur ...

随机推荐

  1. junit的简单用法

    之前测试一个方法总要写一个main函数来调用,感觉既费事又有点low.今天来简单研究一下怎么使用junit来进行单元测试. 1. 依赖包 <dependency> <groupId& ...

  2. Win10 取消桌面快捷键图标

    新建文本文档 --- 写入如下内容 --- 改名为 .bat 并运行 @echo off color 2 reg delete HKCR\lnkfile /v IsShortcut /f reg de ...

  3. DexArchiveBuilderException

    出现这个问题大概是因为版本资源问题 比如把TextView  改为CompatTextView 解决方法一: 在项目的build.gradle文件中查看自己导入的依赖,看看是否有重复的,如果有的话删除 ...

  4. codeforces水题100道 第二十三题 Codeforces Beta Round #77 (Div. 2 Only) A. Football (strings)

    题目链接:http://www.codeforces.com/problemset/problem/96/A题意:判断一个0-1字符串中出现的最长的0字串或者1字串的长度是否大于等于7.C++代码: ...

  5. Englis - 英文字母和音标

    英语学习基础基础是一切的根本 学习是一个长期积累知识的过程,正确掌握各科学习方法显得尤其重要!很多孩子学习成绩不好.记忆力不佳都是因为没有掌握正确的学习方法而造成的. 最基本的是:26个英文字母 48 ...

  6. apk反编译看包名什么的

    首先默认你是装了java环境的 到google code里面下载apktool1.5.2.tar.bz2和apktool-install-windows-r05-ibot.tar.bz2(地址:htt ...

  7. WP8.1学习系列(第二十二章)——在页面之间导航

    在本文中 先决条件 创建导航应用 Frame 和 Page 类 页面模板中的导航支持 在页面之间传递信息 缓存页面 摘要 后续步骤 相关主题 重要的 API Page Frame Navigation ...

  8. 【转】strlen源码

    strlen源码剖析 学习高效编程的有效途径之一就是阅读高手写的源代码,CRT(C/C++ Runtime Library)作为底层的函数库,实现必然高效.恰好手中就有glibc和VC的CRT源代码, ...

  9. 【大数据系列】MapReduce示例一年之内的最高气温

    一.项目采用maven构建,如下为pom.xml中引入的jar包 <project xmlns="http://maven.apache.org/POM/4.0.0" xml ...

  10. vue笔记 - 生命周期第二次学习与理解

    对于刚接触vue一两个月.才仅仅独立做过一两个vue项目的小白来说,以前一直自我感觉自己知道vue的生命周期, 直到前两天去面试,面试官让我说一下vue的生命周期... 其实我的心中是有那张图的,但是 ...