algorithm - Youtube 生成视频片段的算法是什么?
问题描述
当我们在 YouTube 上打开视频时,我们会在 URL 中看到一些随机字符,例如https://www.youtube.com/watch?v=cpp69ghR1IM
.
这项工作是否有算法,或者它只是创建随机字符串并检查它是否在数据库中?既然 YouTube 有大量的视频,那么检查这个生成的随机字符串的唯一性不会浪费时间吗?
另外,为什么 YouTube 不使用由视频标题生成的更好的 slug?例如:https://www.youtube.com/watch/Some-Dummy-Video-Title
提前致谢。
解决方案
11 个字符的 base64 字符串只是一个编码的长整数。
很难确定,但我怀疑它们以序列号开头,并使用类似于我在https://stackoverflow.com/a/34420445/56778中描述的乘法逆运算的东西来混淆它。然后,他们对结果进行 base64 编码。
有关更详细的处理方法,请参阅我的博客文章http://blog.mischel.com/2017/06/20/how-to-generate-random-looking-keys/。
至于为什么他们不使用更好看的蛞蝓,你得问他们。我想出了一些可能性。
- 很容易确保它们的 base64 编码数字是唯一的。强制标题的唯一性是困难的。
- 他们可能不得不对那些看起来更好看的标题运行某种“淘气词”过滤器。这是一个令人惊讶的难题。
- 使视频标题的编辑更加困难。
- 有时视频标题包含垃圾。
- 现有的蛞蝓很容易生成,没有争议,反正没人看。为什么要在他们身上浪费时间?
- 因为他们一直都是这样做的。
推荐阅读
- java - 为什么我从同一个图像(Android Studio 和 Netbeans)中得到 2 个不同的 base64 编码字符串?
- php - 为什么 .htaccess 不能在现场工作?
- ssl - 我需要在服务器/客户端中使用 X509 运行 GnuTLS(有疑问并需要修复)
- dom-events - 有没有办法捕获 Element.scrollIntoView() 事件的结束?
- hadoop - 我的 hadoop 集群上不需要的辅助名称节点
- python - 如何使用python获取默认浏览器名称?
- r - R - 带有替换的 Sample() 产生具有相同索引的观察值
- windows - 使用 Set-String (Powershell) 从另一个文件中删除给定字符串的文本文件中的行
- c# - linq 查询的问题
- docker - 无法设置 kubernetes,因为“清单列表条目中没有匹配的清单未知”