短网址服务的两个核心功能,
- 把原始的长网址转化成短网址。
- 当用户点击短网址的时候,短网址服务会将浏览器重定向为原始网址。
输入source_url,返回short_url
访问短网址服务,输入source_url,返回short_url
首先使用hash函数,将其转换为32位的数字
之后对32位数字进行62进制编码,在网址 URL 中,常用的合法字符有 0~9、a~z、A~Z 这样 62 个字符。
关键问题在于处理hash冲突
如:http://xxxxxxx与http://ooooooo以及http://kkkkkkk,这三个source_url其hash冲突了。
如果冲突了,思路是给source_url,拼接一串特殊字符,比如“[DUPLICATED]”,然后跟再重新计算哈希值,如果继续冲突,那么继续计算(连续冲突的概率很小)
输入short_url,返回source_url
当用户点击短网址的时候,短网址服务会将浏览器重定向为原始网址。
其流程图