youtube如何计算每个视频的唯一11位数代码

Ant*_*ony 7 java youtube algorithm

Youtube似乎每个视频都有一个独特的11位数代码.代码包括1-9,A-Z,a-z,和一些符号等+_*.

他们如何计算每个视频的唯一代码?我正在做一些我想为每条记录分配一个唯一代码的东西,因此问题就在于此.

我的问题/疑虑是:

  1. 如果他们在运行中(当提交视频时),那么他们必须检查为视频准备的代码是否已经存在?对于像他们这样的巨大数据集来说,这将是一项昂贵的操作.
  2. 他们会在每晚或每个月运行批处理作业,创建唯一代码并将其存储在数据库中.然后,当提交视频时,它只需要一个代码并将其标记为"已使用"
  3. ID为数据库中的每条记录采用自动生成和自动递增的列是否有意义,然后以某种方式将该唯一ID列转换为11位数代码?

我的目标是:

  • 为表中的记录创建唯一代码.
  • 用户可以与任何人共享具有该唯一代码的URL.
  • 当有人通过唯一代码进来时.然后他们的"进入"与使用唯一代码共享网址的原始用户绑定.

Tim*_*m B 3

一般阅读 GUID 和 UID。

大多数情况下,如果您使用的数据库将为您生成唯一的 ID,然后可以将该唯一的 ID 编码为数字和字母以缩短生成的字符串。

http://en.wikipedia.org/wiki/Globally_unique_identifier

缩短字符串与编码值的方式有关,它实际上并没有改变它。

例如,以 10 为基数的数字 15 使用两位数字,在十六进制中使用一位数字 (f),在二进制中使用 4 (1111)。

以同样的方式,您可以使用 az、AZ、0-9 和 get base 62 将数字编码为字符串,使用的数字比使用 base 10 少得多。

这不是唯一的方法,但(特别是如果您已经有数据库行)它是最简单的。除非您确实想要,否则您甚至不需要填充到 11 - 但是在编码字符串的开头添加任意数量的 0 不会改变其值。

Java 甚至提供了函数来为您执行此操作,尽管这些函数的最大基数是 36:

http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#toString%28int,%20int%29