10-2 系统设计真题解析:短网址系统的设计与实现

本文详细解析了短网址系统的考点,包括系统功能、存储设计和算法实现。介绍了将长网址转换为不超过特定长度的短网址的需求,讨论了数据存储的解决方案,如使用数据库,并提出了自增序列算法作为短网址生成的优选策略。文章还提供了相应的Python框架实现示例和数据库表结构。
摘要由CSDN通过智能技术生成
一、考点聚焦

如何设计与实现一个短网址系统
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.两个APIlong2short_urlshort2long_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 ''.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值