专栏首页Java架构师历程给你代码:短链接生成原理

给你代码:短链接生成原理

8 次查看

短链接,顾名思义就是在形式上比较短的链接。最早存在于微博(如新浪微博,t.cn,url.cn)分享网址中。比如这样的:t.cn/Aidjddvo

短链接的好处

内容需要(比如短信,微博中链接字数的限制);便于管理(方便后台跟踪点击量,便于统计);用户友好(看起来很Cool,提升用户体验)大致思路是定义一个URL映射算法,将长的URL映射到短的URL,使用数据库或缓存文件存储映射关系,实现映射算法。其中关键部分在于映射算法,接下来我们就详细说下映射算法。

映射算法

function shorturl($url) {

$x = sprintf(‘%u’, crc32($url));

$str = ”;

while($x > 0) {

$s = $x % 62;

if($s > 35) {

$s = chr($s + 61);

} elseif ($s > 9 && $s <= 35) {

$s = chr($s + 55);

}

$str .= $s;

$x = floor($x/62);

}

return $str;

}

专属中转服务器

如果自己想搭建一个类似于http://url.cn的短链接生成服务器,需要将所有请求重写到处理脚本:

RewriteEngineOn

RewriteBase/

RewriteRule. index.php

短链接存储方案

因为存储后端实现方式不一,主要思路是将生成的短链接标识存储到数据库:

$url =’https://www.kunquer.com’;

$key = shorturl($url);

insert into url(`key`, url) values($key, $url);// 插入到数据库

查询思路如下:

$uri = trim($_SERVER[‘REQUEST_URI’],’/’);// 短链接标识

$data =select*from url where`key`= $uri // 从数据库中读取结果header(‘Location: ‘.$data->url);// 重定向到真实链接

以上。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JAVA学习大纲

    第一节 JAVA概念与JDK的安装 1.1JAVA语言的特点: 1.1.1简单性                      1.1.2面向对象:封装、继承、...

    Java架构师历程
  • Git—具体实例讲解Git用法以及提交PR

    Git作为目前比较流行的版本控制系统,被各个互联网公司广泛使用着,使用git可以很方便地进行多人协作和版本控制,大多数时候我们也需要把别人的代码进行整合和修改,...

    Java架构师历程
  • TCP连接的状态详解以及故障排查

    我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。(总结网络上的内容)

    Java架构师历程
  • 新浪短网址生成器等短链接工具的原理(第二章)

    短网址顾名思义就是一个很短的链接和网址,常用于将一个长连接缩短成一个短链接,方便利于推广。  url.cn短网址,可能很多朋友都已经不再陌生,特别是在微博、微信...

    南昌谢大脚
  • PHP实现长网址与短网址

    示例代码下载地址:http://pan.baidu.com/s/1jI9oLxG

    A梦多啦A
  • Python基础学习09天

    你好我是森林
  • 业界 | 百度提出Deep Speaker:可用于端到端的大规模说话人识别

    选自Baidu.Research 作者:Chao Li、Ajay Kannan 和 Zhenyao Zhu 机器之心编译 参与:吴攀 对话常常涉及到多个说话人,...

    机器之心
  • CNCF案例研究:​诺基亚通过Kubernetes在电信公司实现5G和DevOps

    诺基亚的核心业务是端到端建设电信网络;其主要产品涉及基础设施,如天线、交换设备和路由设备。“作为电信供应商,我们必须将软件交付给几家电信运营商,并将软件放入他们...

    CNCF
  • 目标-行动-自信

    一个人在追梦的路上,总会周期性地怀疑自己,如何在这条路上,坚守,坚持,坚信? ? How to know your life purpose in ...

    杨熹
  • 利用Python批量下载自己喜欢听得音乐

    文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    python学习教程

扫码关注云+社区

领取腾讯云代金券