短链是什么

短链就是普通的长链(普通URL网址)经过一定的处理得到的一个简短且唯一的网址字符串。

短链跳转的基本原理

客户端访问短链网址服务器,短链网址服务器返回对应长链地址和302响应码,客户端收到响应后重定向访问长链地址服务器。以腾讯云的短链为例,访问短链:https://url.cn/5y3z8VK

可以很清晰的看到整个短链跳转的过程。

这里说一下301响应码和302响应码:

301代表永久重定向,也就是第一次重定向以后就会从浏览器缓存中获取重定向地址,下次直接访问;

302代表临时重定向,客户端每次都会重新请求后端获取重定向地址。

短链实现的步骤

了解短链跳转的基本原理以后,实现短链就很简单了。

  1. 部署一个短链域名解析服务(也可以是系统中的一个模块)用来生成短链并存储短链和长链的映射关系
  2. 客户端请求短链域名解析服务,服务拿到短链后取出对应的长链返回给客户端即可
  3. 客户端拿到长链后进行重定向访问

使用哈希算法生成短链

短链格式:固定短链域名+哈希值(在https://url.cn/5y3z8VK中,url.cn就是短链域名,5y3z8VK就是哈希值)

固定短链域名就是我们部署的短链域名解析服务的请求地址,哈希值就是请求参数,也就是长链经过某种hash运算之后算出来的一个唯一的hash字符串,短链域名解析服务拿到这个哈希值找到对应的长链返回。

我们在对长链做hash运算的时候,因为它仅仅只一个网址而已,所以不用关心反向解密的难度,不需要使用MD5等加密算法,关注点应该放在哈希的运算速率和哈希冲突概率(两个不同的链接算出的hash值如果一样就需要一些其他额外的处理手段),这里哈希算法的的选择可以自己调研一下然后进行选择。

拿Google的MurmurHash算法举例,MurmurHash算法的说明:http://en.wikipedia.nym.tw/wiki/MurmurHash#cite_note-4

MurmurHash算法当前的最新版本是MurmurHash3,提供了32bit和128bit两种长度的hash值。MurmurHash运算出来hash值是无符号的十进制数,为了进一步缩短哈希值的长度,可以将MurmurHash运算出来的结果转为62进制(数字 + 小写字母 + 大写字母)。

 解决哈希冲突:如果使用MySQL存储长链和短链的映射关系,可以给短链加上唯一索引,将长链和由长链生成的短链插入到数据库中时,如果失败,就说明短链已经存在,hash冲突了,此时可以在长链地址末尾加上一个预先定义好的字符串,再次算出短链,如果还是冲突就继续拼接再次运算直到不冲突为止,取出长链的时候再把末尾拼接的字符串去掉即可。

其他方法生成短链

  • 使用snowflake算法,然后再转为62进制
  • 使用MySQL全局数据库自增主键,然后再转为62进制(存在单机瓶颈问题)
  • 使用MySQL相同步长自增主键方案
  • 使用UUID
  • 使用redis做全局自增(redis宕机自增数据丢失)
  • 其他自定义算法

为什么要使用短链

  • 短链更短,在一些对内容长度有限制的平台上发文的时候,可编辑的文字就多了
  • 链接太长在某些平台上会出现识别不完整或者无法识别为超链接的问题
  • 短信中的长链接可能会导致短信被拆分发送,用短链可以降低成本
  • 短链生成的二维码相对松散,更加容易识别

短链的基本工作原理描述与实现方案相关推荐

  1. 韦德电热板的产品特点及工作原理描述

    电热板特点: 韦德电热板通常是扁薄的一种板状设计,结构简单同时散热也比较均匀,易于安装和使用.电热板加热的 板面是采用优质的陶瓷材料,陶瓷材料具有抗腐蚀性.耐老化.安全可靠.耐用坚固.电热丝则被封闭在 ...

  2. 点歌服务器工作原理,KTV点歌系统方案概述

    <KTV点歌系统方案概述>由会员分享,可在线阅读,更多相关<KTV点歌系统方案概述(7页珍藏版)>请在人人文库网上搜索. 1.一)目前点歌系统的主流方式目前,可以实现的KTV系 ...

  3. 8259A工作原理描述

    8259A的主要功能如下: ①一片8259A可以接受并管理8级可屏蔽中断请求,通过9片8259A级联可扩展至64级可屏蔽中断优先控制. ②对每一级中断都可以通过程序来屏蔽或允许. ③在中断响应周期,8 ...

  4. 小车自动往返工作原理_请把小车自动往返控制线路的工作原理描述一下。

    [判断题]AMPS,属于数字移动通信系统. [判断题]在数字移动通信系统中,切换过程控制采用"移动台辅助的越区切换(MAHO)"方式实现. [判断题]严格来说,LTE基础版本Rel ...

  5. 增益控制AGC | 雷达接收机 | 原理描述

    雷达接收机在增益控制方面可采用的技术 可以达到怎样的技术及运用 工作原理描述 1. 灵敏度时间控制 STC 描述 灵敏度时间控制(STC, Sensitivity Time Control) 也称为近 ...

  6. MOS管(场效应管)工作原理,就是这么简单

    摘要: MOS管又称场效应管,即在集成电路中绝缘性场效应管.MOS英文全称为Metal-Oxide-Semiconductor即金属-氧化物-半导体,确切的说,这个名字描述了集成电路中MOS管的结构, ...

  7. 什么是浪涌保护器,浪涌保护器(SPD)的工作原理科普

    什么是浪涌保护器(SPD)电涌保护器(防雷器)? 浪涌保护装置 (SPD) 或简称浪涌保护器(防雷器)是用于保护电子设备免受电源浪涌或瞬态电压影响的装置. 该设备与它必须保护的负载的电源电路并联在电路 ...

  8. [react] 简要描述下你知道的react工作原理是什么?

    [react] 简要描述下你知道的react工作原理是什么? 我理解的核心部分: 通过虚拟DOM表达真实DOM 通过数据驱动更新虚拟DOM进而更新真实DOM(MVVM) 有一套完整并且合理的 DOM ...

  9. 简单的描述电荷泵的工作原理

    简单的描述电荷泵的工作原理 电荷泵工作原理 电荷泵工作原理 电荷泵的工作原理:主要是利用电容两端电压不能突变的特性,将输出电压给抬高.如下是一个电容式电荷泵内部结构图: 从图中可以看出,C+引脚和C- ...

最新文章

  1. lodash 工具库
  2. boot jpa mysql postman spring_听说过spring-data-jdbc么?来个最佳实践
  3. 您有新的订单提示音_《胡闹厨房:全都好吃》PS5新手柄专属功能细节揭露
  4. node.js require 自动执行脚本 并生成html,利用node.js实现自动生成前端项目组件的方法详解...
  5. php与java安全之争
  6. android url回调json,【求助】本地页面如何取某个URL返回的json
  7. android 导航动画,安利一个Android导航库
  8. ur机械臂 控制器_OnRobot末端执行器和统一接口已通过UR +计划认证
  9. 贪心——买卖股票的最佳时机(Leetcode 122)
  10. 201521123009 《Java程序设计》第1周学习总结
  11. Apache服务安全加固及Apache优化
  12. 小程序开发小结-线下服务器域名部署等
  13. GeoQuiz初体验
  14. 在endnote中制作GB/T7714《文后参考文献著录规则》的输出格式
  15. HDU 4699 对顶栈
  16. 素材网下载图片要 VIP ? 不存在的
  17. 扬声器程序设计(微机原理实验四)
  18. 常用小波基函数以及多尺度多分辨率的理解
  19. 华为matepad切换电脑模式_华为MatePad Pro关于PC模式常用操作指南
  20. A process in the process pool was terminated abruptly while the future was running or pending

热门文章

  1. flash写保护原理_【转】NOR Flash擦写和原理分析
  2. 使用VBA设置数字格式
  3. python 投票统计
  4. 为什么房价只涨不跌惊人内幕! [转]
  5. 鼠标的工作原理,鼠标是如何定位的,DPI的作用
  6. 房产管理系统中CAD图形管理分析
  7. 深度学习求解一维burgers方程和Galerkin求解泊松方程
  8. OpenLayers中线拆分
  9. 学生选课系统(模拟)
  10. Revit开发柱附着和分离