我想创建一个URL缩短服务,您可以在其中将长URL写入输入字段,该服务将URL缩短为“http://www.example.org/abcdef
”。
而不是“abcdef
”,可以有任何其他包含a-z, A-Z and 0-9
的六个字符的字符串。这使得56~570亿可能的字符串。
我的方法:
我有一个包含三列的数据库表:
然后我会将长URL插入表中。然后我会选择“id
”的自动增量值并构建它的哈希值。然后应该将此哈希值插入为“short
”。但是我应该构建什么样的哈希值呢?像MD5这样的哈希算法会创建太长的字符串。我不使用这些算法,我想。自建算法也可以。
我的想法:
对于“http://www.google.de/
”,我获得自动增量id239472
。然后我执行以下步骤:
short = '';
if divisible by 2, add "a"+the result to short
if divisible by 3, add "b"+the result to short
... until I have divisors for a-z and A-Z.
这可以一直重复,直到这个数不能再整除为止。你认为这是一个好方法吗?你有更好的主意吗?
由于对这个话题的持续兴趣,我已经发布了一个有效的解决方案到GitHub,实现JavaScript,PHP,Python和Java