码迷,mamicode.com
首页 > 其他好文 > 详细

【文章阅读】短链接服务系统开发

时间:2018-06-18 22:42:29      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:进制   文章   优化   order   性能   一个   content   post   自己   

一、短链接服务系统开发

https://www.javadoop.com/post/url-shortener?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

二、思路说明

文章很棒,不过最重要的是思路,在可实现的思路下,你会发现每一步都不难。
本文目的就是整理思路,然后让自己实现。

1、功能:

长链转短链,短链跳转到长链。

2、如何保证短链唯一:

短链是一个字符串,只需由一个唯一的ID,可以根据某种规则,转换出唯一的字符串即可。所以问题变成了如果找到一个长链对应的唯一ID。
而对于唯一标识,莫过于数据库自增ID了。

这里需区分单表和多表。单表,数据库自增 id 肯定唯一;多库多表,肯定有一全局发号器来生成唯一 id。

3、生成key(短链)的逻辑:进制转换;

文中使用的是62进制转换,因为字符 a-z、A-Z 和 0-9 共 62 个字符,可以用于生成短链。
只需将十进制ID转换为62进制即可。进制转换详情可以参考:除基倒取余法。

4、长链转短链

数据库中查询;

5、优化:增加随机码,防止短链被破译:

5.1 打乱 BASE 字符串
5.2 加随机字符串,如固定在开头或结尾加 2 位随机字符串

算法的安全性保证:两个不一样的数,在固定位置都插入随机位,结果一定不一样。

5.3 其他细节:

  1. 高位为 0 就不再插入,是为了不至于一开始就往高位插入了 1 导致刚开始值就特别大,转换出来需要更长的字符串。
  2. 建议 id 从一个中等模式的大小开始,如 100w,而不是从 1 开始;
  3. 可以增加缓存提升性能。
  4. 数据库大小写注意事项。

三、结束

【文章阅读】短链接服务系统开发

标签:进制   文章   优化   order   性能   一个   content   post   自己   

原文地址:https://www.cnblogs.com/buwuliao/p/9196538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!