【问题标题】:How does the google short url works?谷歌短网址如何运作?
【发布时间】:2010-01-06 18:07:46
【问题描述】:

即使字母区分大小写,Google 短网址如何才能满足网络中如此多的只有四个字符的网址?

http://goo.gl/SUWp

说 fn(some url)-> url 的四个字母,他们怎么会突然使用相同的函数,在某个时间后给 url 给出五个字母?他们如何知道它是来自 url 的四个字母还是五个字母的 url?

【问题讨论】:

  • 我很难理解更新后的问题。
  • 我想问一些带有五个字母 url 的 url,John Rasch 回答了我的问题

标签: url short-url


【解决方案1】:

26 个字母 * 2(大写/小写)= 52 ^ 4(4 次方)= 7311616 个网址

如果他们添加数字,它将是 62^4 = 14776336 个网址。

所以他们在添加第 5 个字母/数字之前还有一些时间

【讨论】:

  • 如果他们达到这个最大值,他们可以再增加一个空间,使其达到 380,204,032
【解决方案2】:

它的工作方式与所有其他缩短器相同 - 字符是已缩短 URL 的唯一 ID。有 52 个字母(大写和小写)加上数字和特殊字符,有很多组合可以使用。

【讨论】:

  • 我不认为它真的是一个哈希,而是增量并存储在一个表中。您可能会争辩说,是某种意义上的哈希,但它们并不是一回事。
  • 它可能不是散列,因为 4 位数字/字母太短而不能成为散列(它会经常发生冲突)。
  • @Joel/reiner:我想知道它的短...你说得对,不可能是“传统”哈希。
【解决方案3】:

是这样的:

Google URL Shortener 目前是 适用于 Google 产品,但不适用于 供更广泛的消费者使用。

我不相信即使是 Google 也有 700 万页值得缩短。

编辑:

显然是you can shorten URLs using the Google Toolbar:

Google 网址缩短器不是 独立服务;你不能使用它 直接缩短链接。目前, Google URL Shortener 仅可用 从 Google 工具栏和 饲料燃烧器。如果服务证明 有用,我们最终可能会成功 可供更广泛的受众使用 未来。

不过,这并不是“广泛”的消费者用途。如果用完了,他们会添加更多的字母。

对更新问题的回应:

说 fn(some url)-> url 的四个字母,他们怎么会突然使用相同的函数,在某个时间后给出五个字母的 url?

Google 不是简单地对 URL 进行哈希处理,然后只是使用它(请记住,哈希只是一种方式,因此无论如何您都无法从中获取原始 URL - 它必须存储在数据库中)。它们可能从哈希开始,然后在数据库中执行查找以查看该键是否已经存在。如果没有,它将被用作密钥。如果它已经存在,他们将使用其他方法来执行散列,或以使其唯一的方式操纵散列。

他们如何知道它是来自 url 的四个字母还是五个字母的 url?

如果 URL 的末尾有 4 个字母,那么他们就是这样知道的……

【讨论】:

  • +1 回答我的第二个问题,但这是我的主要问题
  • 我想知道它是否真的是这样工作的。取 JCasso 提出的潜在 URL 的数量:52 * 52 * 52 * 52 = 7.311.616。这似乎不是很多。随着现有哈希表开始填满,您很可能会一遍又一遍地生成副本。
  • @yesraaj - 只有 Google 开发人员才能准确告诉您(它甚至可能不是他们使用的传统“哈希”。但是,一旦创建了短 URL,就会在数据库中存储一条记录映射这两者,以便您可以轻松地互换它们。
  • @Jeff - 一个简单的解决方法是将散列视为一个整数并递增它,直到找到唯一的。谷歌非常聪明,他们可以计算出生日悖论开始损害函数的时间,然后开始使用 5 个字母。
【解决方案4】:

英文字母有 26 个字母。下 + 上是 52。

52 * 52 * 52 * 52 = 7.311.616 他们受限于这个数字。如果他们用完 4 个字母的 url,他们可以毫无问题地升级到 5 个,不是吗?

我不认为添加数字是一个好主意,因为 0(零)和 O、1(一)和 l(L)、I(大写 i)和 l(小写 L)非常相似.

【讨论】:

    【解决方案5】:

    (26 + 26 + 10) * (26 + 26 + 10) * (26 + 26 + 10) * (26 + 26 + 10) = 14776336

    即 26 个小写字母、26 个大写字母和 10 个数字,代表 62 个可能的字符。实际上我认为它可能是其他值的 base-64 编码表示,所以这个数字可能更像 16777216。

    【讨论】:

    • 谢谢 :) 从第一篇文章开始,我以为他们只使用字母,而 Joel 还没有提到数字。
    【解决方案6】:

    我不知道 Google 是如何做到的。但我想你可以实现一个短 URL 的一种方法是使用字符 0-9a-zA-Z 增加值 - 本质上是使用基数 62 数字系统。因此,生成值的方法可能会查找最近使用的值,然后将其加一。例如:abcz + 1 = abcA。或者:ZZZZ + 1 = 00000。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 2013-04-11
      • 2011-07-18
      • 2010-12-06
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      相关资源
      最近更新 更多