下载最怕什么,那绝对是进度条:99%。
这是一个充满魔力的数字,曾让我狂躁、焦虑,甚至激动得想砸键盘锤电脑扔手机。结果半小时过去了,进度条死死卡在99%,任你千兆光纤,专线宽带,愣是一丝不动,稳如泰山。你不禁开始疑惑:为什么进度条总要卡在99%?为什么最后1%永远加载不动?
今天,要为大家破解这一千古谜题,揭开背后不可告人的真相。 技术原理导致
其实这种 1% 随时都在发生,但我们只对最后的 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%不动,别傻楞去充白金会员,大声告诉你:钛金会员都没用!推荐阅读:
字节跳动涉代码抄袭被诉陪22.74亿,连错误的函数都搬?
程序员必须清楚的 10 个高级 SQL 概念!
内容包含Java基础、JavaWeb、MySQL性能优化、JVM、锁、百万并发、消息队列、高性能缓存、反射、Spring全家桶原理、微服务、Zookeeper、数据结构、限流熔断降级......等技术栈!
⬇戳阅读原文领取! 朕已阅