hash - Google URL Shortener 如何在没有冲突的情况下生成 5 位哈希

标签 hash url-shortener goo.gl

Google URL 缩短器如何生成 唯一五个字符的散列没有 碰撞。似乎肯定会有冲突,不同的 url 生成相同的哈希。

stackoverflow.com => http://goo.gl/LQysz

同样有趣的是,相同的 URL 每次生成完全不同的哈希:
stackoverflow.com => http://goo.gl/Dl7sz

所以,做一些数学计算,使用小写字符、大写字符和数字,组合总数为 62^5 = 916,132,832显然,碰撞必然会发生。

谷歌是如何做到这一点的?

最佳答案

他们有一个数据库,可以跟踪所有以前生成的 URL 和每个映射到的较长 URL。易于确保该表中不存在新生成的 URL。横向扩展有点棘手(它们肯定有多个服务器,因此每个服务器都需要分配一桶值,从中可以将其分发给用户)。如果他们达到生成 916,132,832 个 URL 的地步,他们只会添加另一个字符。

关于hash - Google URL Shortener 如何在没有冲突的情况下生成 5 位哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7989476/

相关文章:

将 uint8_t 数组转换为 c 中的 char 数组

http - 对动态短网址使用 301/303/307 重定向

.htaccess - 无法一点一点地验证域

javascript - 在 Google Chrome 扩展程序中使用 javascript 访问 Google 的 URL shortener API

php - twilio 短信,无法在消息中发送 goo.gl 链接

Java比较带哈希和不带哈希的字符串

swift - 计算哈希值

ruby-on-rails - 无法修改rails3中的卡住哈希

wordpress - 如何为我的帖子设置自定义 URL 缩短器?

php - Goo.gl URL 缩短器停止工作 (php/curl)