当前位置: 首页 > news >正文

【面试真题拆解】平时会收发短信吧?你知道短信里那种 `CodeEdge` 的短链接,点击之后是怎么跳转到长链接的?它是怎么生成的?

面试官问:

“平时会收发短信吧?你知道短信里那种xxxxx的短链接,点击之后是怎么跳转到长链接的?它是怎么生成的?”

点击短链接后发生了什么?

两个字:重定向

  1. 用户点击短链接

比如用户点击t.cn/xu0324

  1. 浏览器请求短链接服务器

浏览器向t.cn的服务器发送HTTP请求,要访问/xu0324这个路径;

  1. 服务器查映射关系

服务器去数据库或者Redis里查,发现xu0324对应的原始长链接是https://www.CodeEdge.com/xxx

  1. 服务器返回重定向响应

服务器不返回网页内容,而是返回一个 HTTP 302状态码,并在响应头Location里填上原始长链接;

  1. 浏览器自动跳转

浏览器收到302状态码,看到Location里的长链接,自动发起新的请求,访问原始长链接;

之后,用户就看到了原始长链接的页面。

那个短链接是怎么生成的?

目前主流的生成算法有3种:

自增ID + Base62编码

用分布式ID生成器(比如雪花算法),生成一个全局唯一的自增数字ID(比如 1, 2, 3, …),再把这个10进制的数字ID,转换成62进制的字符串(Base62)。

这种方案因为是自增ID,每个ID对应唯一的Base62字符串,所以绝对唯一,没有哈希冲突,而且不涉及复杂的哈希计算,生成速度极快。

小贴士

什么是Base62呢?平时用的是10进制(0-9),Base62其实是0-9(10个)、a-z(26个)、A-Z(26个),加起来总共62个字符,所以叫Base62。

哈希算法+截取

对原始长链接做MD5或SHA-1哈希,得到一个32位(或更长)的哈希字符串,再截取哈希字符串的前6位或8位,作为短链接后缀。

这种方案对于两个不同的长链接,哈希后的前6位可能会一样,从而导致映射错误;如果发现了冲突,需要换一种截取方式(比如截取中间6位),或者加盐重新哈希,但这样也增加了复杂度。

随机字符串生成

直接随机生成一个6位的Base62字符串,再去数据库里查,如果这个字符串已经被占用了,就重新生成,直到生成一个没有被占用的。

这种方案会随着链接越来越多,冲突概率越来越大,可能要重试很多次才能生成一个可用的;并且高并发下,多个请求可能会同时生成同一个随机字符串,导致数据库唯一键冲突,所以不适合高并发场景。

为什么要用短链接?

1. 短信的字数限制

因为一条短信最多只能发70个汉字(或160个英文字符),如果直接发一个几百个字符的长链接,一条短信根本发不下,要拆成好几条,成本也会相应增加;如果用短链接,只需要十几个字符,就能完美解决字数限制的问题。

2. 防拦截、防屏蔽

长链接里经常包含很多参数,很容易被运营商、手机安全软件识别为“营销链接”或“钓鱼链接”,直接拦截,但如果用短链接的话,看起来很干净,被拦截的概率就会大大降低。

3. 数据统计和追踪

短链接服务器可以记录谁在什么时候、通过什么设备、点击了这个链接,企业通过这些数据,可以分析营销效果、用户画像、转化率等等。

http://www.jsqmd.com/news/534213/

相关文章:

  • 显卡驱动清理专家:DDU全方位应用指南
  • 从MS12-020漏洞看企业内网安全:老旧Windows服务器RDP服务的风险与加固实战
  • 如何用Spec Kit规范驱动开发彻底改变你的编程方式:终极指南
  • 3步解决Ubuntu 24.04 ROCm安装的Release文件错误
  • 万物识别模型在SpringBoot项目中的集成指南:Java开发者实战
  • 别再只用FastDFS了!手把手教你用Docker Compose快速部署MinIO集群(附Java客户端实战代码)
  • BEYOND REALITY Z-Image智能助手:面向摄影师的AI布光+肤质增强辅助工具
  • PR音频处理避坑指南:为什么你的淡入淡出听起来不自然?
  • 倍速链装配线正规厂家放心选:5家靠谱品牌全解析 - 丁华林智能制造
  • 如何用Python脚本轻松下载Gofile文件:完整实战教程
  • OpenClaw 2026.3.23:安全、插件、生态三重升级,AI助手进入新纪元
  • [技术探讨] 网页 2D 高刷屏防穿模碰撞检测的实践
  • 零代码部署微信机器人:10分钟上手的自动化构建指南
  • 20252911 2025-2026-2 《网络攻防实践》 第2次作业
  • 农作物病害数据集全景导航:从入门到实战的精选指南
  • 融合需求侧虚拟储能系统的楼宇微网优化调度附Matlab代码
  • 实战解密:7个高效提升nanomsg代码质量的静态分析策略
  • 2026年国内口碑好的框架式汽车配件拉伸成型液压机实力厂家口碑排行榜,框架式结构/汽车钣金拉伸/零部件成型/自动化生产线,框架式汽车配件拉伸成型液压机制造企业哪家好 - 品牌推广师
  • 深入解读T113 RGB屏幕设备树:从时序参数到PWM背光,一篇搞定驱动配置
  • 2026北京房产继承难题解析:专业民商诉讼团队助力权益维护 - 品牌2026
  • 告别盲调:用IO命令和DEVMEM高效调试RK3566/RK3568的GPIO与外围设备
  • 开源项目国际化实现指南:从架构设计到实践落地
  • 四川牙科铅门安全合规怎么选?2026年聚焦风险规避与长期价值的工程服务商参考 - 速递信息
  • 圆形钢模板租赁厂家怎么评估?2026年西南区域服务商的项目履约与技术保障能力拆解 - 速递信息
  • 硕士论文降AI率用哪个软件好?亲测推荐这3款降AIGC工具 - 我要发一区
  • 粒子群算法调参避坑指南:惯性权重和学习因子到底怎么设?看这篇就够了
  • 函数的声明和定义都在头文件中注意事项
  • codex(三)配置rulescommandsubagent
  • 深度解析XUnity.AutoTranslator:Unity游戏实时文本翻译引擎架构与实践
  • 2026经典文丘里品牌实力来了,谁能脱颖而出?静压液位计/插入式双文丘里/管道式电磁流量计,经典文丘里制造商分析 - 品牌推荐师