短链接,顾名思义就是在形式上比较短的链接。最早存在于微博(如新浪微博,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);// 重定向到真实链接

以上。

java 短链跳转原理_给你代码:短链接生成原理相关推荐

  1. 快速理解简单的短链接生成原理

    快速理解简单的短链接生成原理 原理 计算长链接整体为一个十进制数,将其映射成一个62进制数.这个62进制由26个小写字母,26个大写字母和10个数字表示. 假设有long-url这么一个长网址,其10 ...

  2. python find函数实现原理_非常干货:Python 探针实现原理

    △点击上方"Python猫"关注 ,回复" 1 "领取电子书 剧照 | <棋魂> 原文:https://segmentfault.com/a/119 ...

  3. java eventbus 原理_本文为 Android 开源项目实现原理解析 EventBus 部分,从源码分析 EventBus 的实现原理...

    之前太忙导致 Android 开源项目实现原理解析 一度搁浅,目前一期进行中,我也完成了 EventBus 分析的初稿,大家可以稍微看看后面会继续润色下. PS:本文直接复制 Markdown,格式有 ...

  4. java中的熔断机制_微服务熔断机制与Hystrix原理

    微服务是由多个子系统构成的系统,每个子系统分别负责自己的业务,各个服务之间通过HTTP请求进行通讯,所以保证每个服务的可用性是整体可用性的前提,因此在一些服务提供者不可用的情况下,导致大量请求阻塞到此 ...

  5. java 网页应用 原理_【转载】Web应用工作原理

    问题描述: Web应用工作原理 问题解决: 前言 什么是web应用程序?web应用程序又是如何进行工作的呢?什么是动态网页技术?又有 哪些动态网页技术呢?这次这篇文章需要探求总结的. Web应用 我们 ...

  6. Java页面跳转失效_求助各位java大神,为什么表单提交之后跳转页面失灵

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人java菜鸟一枚请各位java大神帮忙看看为什么我的表单能提交,但是就是跳转不到处理页面,跳转功能时灵时不灵的.小女子在此先谢过了! 这下面是JQue ...

  7. java语言写常驻服务_让程序常驻后台运行的原理和方法

    linux中进程组织结构为session包含一个前台进程组及一个或多个后台进程组,一个进程组包含多个进程. 一个session可能会有一个session首进程,而一个session首进程可能会有一个控 ...

  8. jdbc 自增id 原理_给“小白”漫画+图示讲解MyBatis原理,就问香不香!

    MyBatis一款后起之秀的持久层框架ORM,支持自定义SQL.存储过程和高级映射,相对于Hibernate算是半自动化的框架,在国内行业内非常流行. 常规的JDBC操作,配置相应的数据库连接的信息, ...

  9. mybatis 原理_图解源码 | MyBatis的Mapper原理

    提到看源码,很多同学内心的恐惧的,其实这个从人性的角度来说是非常正常的,因为人们对未知的事物,都是非常恐惧的,其次,你内心可能始终觉得,好像不会原理也还是能工作啊,你的潜意识里没有强烈的欲望.从阅读源 ...

最新文章

  1. 开启机器学习的第一课:用Pandas进行数据分析
  2. ASP.NET MVC 右键点击添加没有区域(Area)、控制器、试图等选项
  3. 从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的?
  4. codevs1521 华丽的吊灯
  5. java中文文档官方下载
  6. Linux中锁的总结
  7. Emacs Lisp 15 分钟入门
  8. 目标跟踪理论方法小结
  9. resnet的瓶颈层的子层res4b22的命名规则
  10. 郭天祥的10天学会51单片机_第一节
  11. 键盘拆开重新安装步骤_笔记本键盘按键安装拆卸详解
  12. 关于英特尔® 处理器显卡技术
  13. 解决AudioCont...HTMLMediaElement already connected previously to a different MediaElementSourceNode.问题
  14. 彻底搞懂原生事件流和 React 事件流
  15. 对QT5信号与槽的认识
  16. 华为OD机试真题2023(JAVA)
  17. 谷歌:昔日屠龙者正在成为“恶龙”?
  18. mysql数据库表中插入中文字段时报错 ‘\xCD\xF5\xBB\xAA‘
  19. c/c++ 有n个人围成一圈, 顺序排号。从第1个人开始报数(从1~3报数), 凡报到3的人退出圈子, 问最后留下的人原来排在第几号。
  20. 19年NAACL纪实:自然语言处理的实用性见解

热门文章

  1. 引用管理器没有程序集_Microsoft弃用远程桌面连接管理器
  2. mysql 5.0 php_PHP 5.0的新特性
  3. html桌面雪花,html5 canvas雪花形状在线生成器
  4. java html 生成 pdf_Java实现HTML代码生成PDF文档
  5. Pytorch详解NLLLoss和CrossEntropyLoss、以及softmax和log_softmax
  6. Github | 备战秋招,最全面试题集合!
  7. 智能门锁芯片V12_智能门锁方案应用开发的组成结构
  8. xctf secret galaxy_三星SMARTTHINGS FIND正式发布 可帮助轻松查找GALAXY设备
  9. retrofit 会请求两次_Retrofit2+Rxjava-Rxjava2.x-篇二-依次执行多个请求-flatMap/map
  10. aspectj表达式如何书写_化学平衡常数的表达式书写