为什么下载那种小电影时,经常会卡在99%?

互联网架构师

共 2354字,需浏览 5分钟

 ·

2021-06-01 19:22


上一篇:3600万中国人在抖音“上清华”

来源:综合自网络


下载最怕什么,那绝对是进度条:99%。

这是一个充满魔力的数字,曾让我狂躁、焦虑,甚至激动得想砸键盘锤电脑扔手机。


比如下载学习资料或看动作大片,苦苦等待2小时,好不容易下到99%,以为2秒后就能享受大片的美妙,步入极乐世界。

结果半小时过去了,进度条死死卡在99%,任你千兆光纤,专线宽带,愣是一丝不动,稳如泰山。


再去检查路由器,狂按重启键,发现网络一切正常,网页秒开,唯独进度条上的99%永恒不变。

即使你重启电脑,重新打开下载软件,重新开始那99%的下载任务,它依旧还是99%,不增不减。


你不禁开始疑惑:为什么进度条总要卡在99%?为什么最后1%永远加载不动?

今天,要为大家破解这一千古谜题,揭开背后不可告人的真相。


 技术原理导致 


关于进度条99%的问题,得从它的诞生说起。

1896年,波兰经济学家Karol Adamiecki制作了一种名叫时间表的图,提出了早期的进度条概念,但是当时没有具体的应用。


等到1979年,这哥们Mitchell Model在他的博士论文中提出了进度条。


论文里他表示:进度条能在复杂的计算机环境中监视系统行为。

说白了就是:进度条能直观展现电脑在做什么,做到哪种程度。


正因为进度条能用最简单的图案和数字,表达电脑复杂的计算过程的特性,于是渐渐在各大操作系统流行起来,成为了电脑的经典标志之一。

但问题来了,人不是电脑更不是神,再牛X的程序员也无法预测电脑什么时候完成工作。

所以程序员开发出来的进度条,根本不能精准地反映出电脑情况,所谓的50%、80%、90%,仅是大概的数字,预测而已。

可以说你看到的进度条,和实际的进度是两个东西。


对于一些可定量的项目,进度条基本可以和实际相符,但不同的硬件资源和后台程序都会相互占据资源,计算机很难恒定分配运行,当你影片下载到 99% 时又打开了大型游戏,或者哪个小任务卡住了,就到了艰难的「1% 时刻」。

其实这种 1% 随时都在发生,但我们只对最后的 1% 印象深刻。



它有时候前面很快,后面很慢。


就像 U 盘复制文件,系统会根据文件数量和传输速度算好大概时间,但并不是每个百分比都执行相同的工作,因为每个文件大小都不一样,而最后 1% 可能因为还要验证文件、全盘扫描、整理数据等等,所以耗时也最久。



它也可能一直不快不慢,因为它整条都是假的。


虽然卡在 99% 的等待并不让人愉快,但也不得不承认,没有 0% 到 99%,我们的情绪会更焦躁,因为不知道尽头在哪里。

这就是进度条的厉害之处 —— 让你心甘情愿地等待。



 产品经理的恶意 


1985 年,卡内基梅隆大学人机交互研究所教授 Brad Myers 还是一位研究生,当时他就在论文里提出了这个观点。

只要看到进度条,人们就会感觉好点,它能让人放松,让人在等待时间去干点别的 —— 去花 5 分钟发个传真,或者干些在 1985 年的办公室会干的事。


虽然进度条由程序员开发,但真正设计进度条的人,是产品经理,包括功能、样式、图案等。
很多产品经理在设计进度条时,会特意要求程序员制作一个“虚假进度条”。

可能你会问,产品经理为什么无缘无故搞个假东西骗人呢?

给你们举个栗子,看完就懂了。

假设现在有2个相同下载速度的进度条,A和B,它们的下载完成时间都是100秒。


A是经过产品经理特殊调教的虚假进度条,它很套路,用了20秒下载到99%,最后1%花了80秒完成。

B是老实进度条,没被调教,10秒加载到10%,100秒100%,一分不差。

此时因为A前十秒加载到99%,而同样时间B却仅有10%,在强烈的对比下,大部分人会认为A比B更快,A比B更好用。

在优胜劣汰的规则下,用户肯定更多会选择A这种方式的软件,而产品经理想要留住用户,采用这种虚假进度条那是必须的。


现在明白了吧,有时候不是进度条不准,而是产品经理在搞事。



 下载完成后的块校验 


根据我多年的经验,导致这种情况发生的原因主要还是因为资源块校验的机制。


迅雷下载采用P2P协议加速,P2P的优点在于有多个数据来源。

每个下载过该文件的人,相当于一台服务器,当别人下载时自动在后台上传数据,提供速度。

说白了就是下的人越多,你所下载的资源能被拼凑时间越短。

但缺点同样也有,因为数据来源多,质量参差不齐外加上传不稳定,容易导致文件乱码出错。

因此迅雷定下了一个规则:在下载到99.9%的时候,会对文件进行块检验,如果某个块出现问题,无法重新下载,则会一直卡在当前进度不动。

下面这个图很好的说明了问题

兄弟你的形状怎么跟我们不一样啊?

如果哪天卡在99.9%不动,别傻楞去充白金会员,大声告诉你:钛金会员都没用!



看完这篇文章,你有什么收获?欢迎在留言区与10w+Java开发者一起讨论~

关注微信公众号:互联网架构师,在后台回复:2T,可以获取我整理的教程,都是干货。


猜你喜欢

1、GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结

2、如何才能成为优秀的架构师?

3、从零开始搭建创业公司后台技术栈

4、程序员一般可以从什么平台接私活?

5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6、滴滴业务中台构建实践,首次曝光

7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

8、15张图看懂瞎忙和高效的区别

9、2T架构师学习资料干货分享


浏览 36
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报