一、考点聚焦
如何设计与实现一个短网址系统
1.什么是短网址系统?包含哪些功能(接口)
2.短网址系统的存储设计?需要存储哪些字段?
3.如何设计算法生成短网址?
二、什么是短网址系统?
TinyUrl Service
1.把一个长网址转成短网址的服务
2.比如 https://bitly.com/
3.转换之后网址的后缀不超过7
位(字符或者数字)
场景和限制
使用场景:提供短网址服务为公司其他各业务服务
1.功能:一个长网址转成短网址并存储;根据短网址还原长url
2.要求短网址的后缀不超过7
位(大小写字母和数字)
3.预估峰值插入请求数量级:数百;查询请求数量级:数千
数据存储设计:
根据需求设计数据存储方式
1.使用Mysql
即可满足
2.需要的字段有哪些?
Mysql
数据表:
字段 | 说明 |
---|---|
id | ID |
token | token |
url | 原网址 |
created_at | 创建时间 |
三、算法实现设计
短网址生成算法有哪些?对比优缺点
1.两个API
:long2short_url
、short2long_url
2.常用算法:hash
算法截取;自增序列算法
3.对比多种算法,我们采取自增序列算法实现
思路解析图:
进制转换:不断取余,倒序输出
def mybin(num): # 10进制--> 2进制串
if num == 0:
return 0
res = []
while num:
num, rem = divmod(num, 2) # divmode()函数返回 num//2, num%2
res.append(str(rem))
return ''.