Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
  • 如何设计一个短链系统
    • 为什么需要短链?
    • 短链原理
    • 唯一短链生成
  • 新Get的开发技巧
  • 项目通用工具

  • 用户模块

  • 短链模块

  • 流量风控
  • 如何获取用户IP?
  • SaaS短链接系统
Nreal
2023-12-04
目录

如何设计一个短链系统

# 为什么需要短链?

  1. 简洁,方便传播;
  2. 方便对链接后续追踪,如访问量,访问来源...
  3. 某些消息平台对字数有限制;

# 短链原理

通过短链接,重定向到长链接地址;

为什么用 302 状态码?

301为永久重定向,浏览器拿到长链接之后就会对其缓存,无法进行后续追踪;

# 唯一短链生成

非加密型哈希算法:MurmurHash,比加密型算法MD5,SHA效率更高;

如何解决哈希冲突?

在哈希生成的短链后再拼接一个分布式 ID,给存放短链的字段添加唯一索引;

新Get的开发技巧

新Get的开发技巧→

Theme by Vdoing | Copyright © 2021-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式