2019独角兽企业重金招聘Python工程师标准>>>

今天的整点儿新闻主要是想让大家学点东西用来泡妹子。想看段子和吐槽的现在可以退出了!我们明天整点儿新闻再见~!

留下来的朋友们,小手放在膝盖上准备听讲。

PSY 的《江南 Style》MV 这两天在 YouTube 上的点击量超过了 2,147,483,647,逼着谷歌升级了计数服务——

谷歌说我们从来没有想到有个视频的观看量会超过 2,147,483,647,直到 PSY 的《江南 Style》出现……

为什么超过这个看起来毫无规律的数会让 YouTube 的计数器出现问题呢?这个数字到底有什么神秘力量?是亲情?是仇恨?下面请收看特别节目《走进大计基》。

(以下科普来自知乎日报后端工程师老孙,有任何错误请指出,我们会把老孙赶回花果山。)

我们在页面上看到一个数字——1。

在服务器上这个 1 可不是 1 了,而是 1。

页面上一个看到一个数字——2。

在服务器可不是 2,也不是 2,而是 10。

如果是 30 呢?服务器上会存着 11110。

是的,电脑是很笨的,它只认识 0 或者 1。这样很 2,所以又叫二进制。

这些数据存在哪呢?存在一个计数器里,就像这样——

这是一个有四个位置的计数器,管它叫四位计数器。

假如它是二进制的,那么能显示的数值范围就是 0000-1111,转换成 10 进制就是 0-15(0 到 2 的 4 次方减 1)。

那我想记录 16 怎么办?不能够,这个不能够的学名叫冒漾(数据溢出)。

我们需要换一个更多位的计数器。

电脑上的计数器的大小一般是字节(Byte)的倍数,一个字节有 8 位(8 bits,每一 bit 只能显示 0 或者 1)。

我们取一个字节来给我们计数,所以我们就拥有了一个八位计数器,终于能记录 16 了!16 在这个计数器上会显示为——

00010000

这个计数器最多能记录到哪呢?11111111,10 进制为 2 的 8 次方减去 1 = 255,超过这个数也会冒漾。

好吧,看来我们只好再用 2 字节来做计数器,就是 16 位。能记录到 1111111111111111(二进制)= 65,535(十进制)。

十六位计数器可以记录这么大的数字,大家都很开心,攻城师觉得十六位计数器是好的。

不过有个问题,负数怎么记录?没有负号哇。

有一个聪明的攻城师说了,没关系,那我们就用最高位来表示正负,最高位是 1 这个数就是负的,最高位是 0 这个数就是正的。

01111111 再加 1 就是 10000000,为了便于计算,攻城师把这值定义为最小值,也就是 -128。

于是这个带正负的 1 字节八位计数器能记录的值为 -128 到 127。能记录的最大数变小了,但我们能记录负数啦,攻城师又开心了,

「我们再做一个 4 字节的计数器吧!」「好啊好啊好啊好啊……」

4 字节是 32 位,能记录的最大值是——

01111111111111111111111111111111

换算成 10 进制是多少?

2,147,483,647……

攻城师看见这个数字愣了,脑海中浮现出这样一张脸——

是的,鸟叔的《江南 Style》MV 观看量超过的就是这么一个数字。

所以聪明的你现在应该知道了,YouTube 给视频做计数的计数器是一个带正负的 4 字节三十二位计数器。

被鸟叔爆掉了。

回到谷歌这个声明,现在你看到他们说「我们从没想到有人能超过 2,147,483,647」就明白他们在说什么了吧?他们本来以为这个有符号的 4 字节三十二位计数器够用了。

也是,估计 YouTube 当年在刚开始创建网站的时候,不可能想到自己站上会有个视频被播放了二十几亿次吧,所以可能对计数器最大值这个东西也没当回事。

举个例子,优酷热播视频《小苹果》的播放数也只有 1968 万次。

而这已经是相当不错的成绩了。

谷歌修复这个问题的手段也很粗暴,他们直接把这个计数器升级成了带正负的 8 字节六十四位计数器,最大计数到 9,223,372,036,854,775,808。来,鸟叔,你再试试。

不过谷歌在修复这个问题的时候除了粗暴,也玩了一点情怀。

先说下,鸟叔超过了这个数字会发生什么呢?

计数器的第一位会变成 1——

10000000000000000000000000000000(二进制)= -2,147,483,648(十进制),然后这个数字会继续变大。

谷歌保留了这个错误结果,并且提醒大家可以把鼠标放在已经修复好的数字上面,「看一个数学小魔术(a little math magic)」

所以现在,鼠标没放在数字上面的时候,这个数字会显示视频的实际播放结果——

鼠标放在上面——

谷歌会显示一个错误的结果。

恩是的你可以给妹子展示这个小魔术,并且告诉她这背后的原理。

其实计算机界有很多问题都是由这个看起来很好解决的「冒漾问题」引起的。

比如有很多软件用来记录时间的计数器也是带正负的 4 字节 32 位计数器,只能记录从 1970 年 1 月 1 日之后的 2,147,483,647 秒,也就是到 2038 年 1 月 19 日凌晨 03:14:07。

然后这个数值会跳到最小的负数,然后计算机就疯了。

你看,你又有一样新的知识可以拿去泡妹子了。

「你知道 2038 年 1 月 19 日凌晨 03:14:07 是世界末日吗?」

不过不用害怕这些,因为攻城师是不会让这种事情发生的,他们已经无数次拯救地球了。比如之前的 IPv4 互联网协议,是给各位分配 IP 地址的。前一阵大家发现 IP 地址不够用了,于是攻城师说大家开始遵循新的 IPv6 服务吧,问题就解决了。

这些问题大部分出现的原因是什么呢?其实和 YouTube 刚开始建立的时候的想法一样——没当回事,「谁能知道我做这个东西居然会这么多人用、活这么久啊!」

这就不得不提知乎日报的前瞻性了!敝报从上线第一天,就用的是六十四位计数器!性能刚刚的!

不信你点一下这篇的赞试试,超过 21 亿个赞也不会坏掉。

转载于:https://my.oschina.net/stefanzhlg/blog/352807

江南Style是怎么把youtobe的计数器弄坏的相关推荐

  1. 互联网大事件:《江南style》如何蹿红?(转)

    互联网社区化的威力啊(liupin) "oppa kangnan style--"这可能是某条胡同里玩耍的小孩在随便哼唱,可能是办公室里突然响起的手机铃声,也可能是大饭店里一场发布 ...

  2. 谷歌发布2012年搜索上升最快关键词 江南style上榜

    DoNews 12月13日消息 谷歌于昨日晚间公布了2012年度全球热门搜索关键字排行榜(Zeitgeist),从独特的视角解读2012年人们关注的热点事件和社会潮流.搜索榜单汇集全世界50多个国家( ...

  3. 江南Style之---西塘

    江南Style之---西塘 西塘历史悠久,人文资源丰富,自然风景优美,是古代吴越文化的发祥地之一.早在春秋战国时期就是吴越两国的相交之地,故有"吴根越角"和"越角人家&q ...

  4. 江南style印证法国大预言家诺查丹玛斯世界末日预言?

    南韩歌手Psy的成名曲<江南Style>怎么会与末日预言扯上关系? 江南style 一名法国网友宣称,16世纪时,法国大预言家诺查丹玛斯写了一首短诗,预言世界将因Psy而毁灭: 诺查丹玛斯 ...

  5. 江南Style/江南风格/GANGNAM STYLE 歌曲罗马音 中文注音

    很辛苦的,卤煮一个韩文不识,由于喜欢韩文歌,之前音译了一篇trouble maker的歌词学会唱了 <wbr></wbr> 地址:http://blog.sina.com.cn ...

  6. Android倚天剑之Notification之江南style

    传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 上回我们提到在4.0ICS之后,Google为Android平台的Notificati ...

  7. [置顶] Android倚天剑之Notification之江南style

    上回我们提到在4.0ICS之后,Google为Android平台的Notification这把"倚天剑"注入了更多新鲜的元素,使其更加实用美观.Notification的样式从此变 ...

  8. 江南Style之---乌镇

    江南Style之---乌镇 乌镇位于浙江省桐乡市北端,距桐乡市区13公里,与周庄.同里.甪直.西塘.南浔并称为江南六大古镇,素有"鱼米之乡,丝绸之府"美称.作为典型江南水乡,乌镇完 ...

  9. 江南Style之---西湖

    西湖古称"钱塘湖",又名"西子湖",古代诗人苏轼就对它评价道:"欲把西湖比西子,淡妆浓抹总相宜.西湖,是一首诗,一幅天然图画,一个美丽动人的故事,不论 ...

最新文章

  1. 基于OpenCV的车辆变道检测
  2. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案
  3. android 入门-android自定义控件
  4. typeorm_Nestjs 热更新 + typeorm 配置
  5. PHP 性能分析: Xhprof Xhgui
  6. c语言 文件加密头文件,[C语言]文件加密
  7. 遇冷的斗鱼直播,还“斗”得动吗?| 畅言
  8. iOS_SN_详解沙河(转载)
  9. 批处理添加允许弹出临时窗口站点
  10. 2018-2019-2 20165221 【网络对抗技术】-- Exp6 信息搜集与漏洞扫描
  11. 深度探索C++对象模型第一章第一节重点
  12. hbase 性能优化
  13. window10+cuda+cudnn下载
  14. oracle sap 英克,中普审计软件内置350多个财务软件接口(新)-2015.9.16
  15. 读懂这三本书,才算真懂大数据!(套装共3册) (如何读懂大数据主题系列) - 电子书下载(高清版PDF格式+EPUB格式)...
  16. 个人数字证书免费申请
  17. 哥德巴赫猜想c#语言,哥德巴赫猜想算法c#实现方法
  18. ERROR】Unable to open underlying table which is differently defined or of non-MyISAM type or ...
  19. python程序语言和机器人控制系统_机器人系统设计与制作:Python语言实现
  20. 趣味小问题2——规律型勾股数

热门文章

  1. 海康威视、大华摄像头RTSP视频流嵌入到谷歌Chrome等VUE页面中实时播放方案(图文教程)
  2. 科学心理学类毕业论文文献有哪些?
  3. Python爬虫以及数据可视化分析(最新B站番剧排行榜数据)
  4. 原生js简单实现五指棋
  5. 单通道数据转换为多通道数据(记录)
  6. webview跳转外部浏览器以及https
  7. docker(10、日志管理4)5、Graylog 日志系统(1、部署Graylog日志系统,2、Graylog管理日志)
  8. 微信小程序html2canvas,微信小程序之Canvas填坑
  9. Easyui 使用 datagrid-export.js 导出数据证件号转换成科学计数法的问题,解决方案
  10. 如何从证件号中提取员工籍贯区号?