漫话:为什么你下载小电影的时候进度总是卡在99%就不动了?
進度條
其實,早在計算機發(fā)明之前,就已經(jīng)有了進度條的概念。1896 年,波蘭經(jīng)濟學(xué)家 Karol Adamiecki發(fā)明了一種叫做harmonogram(波蘭語,時間表)的圖表;同一時間,亨利·甘特(Henry Gantt)提出類似的方法并在西方普及。Adamiecki的圖表就被叫做為甘特圖。
后來,計算機出現(xiàn),甘特圖這個概念后來被用于計算領(lǐng)域。主要用來計算機在處理任務(wù)時,實時的,以圖片形式顯示處理任務(wù)的速度,完成度,剩余未完成任務(wù)量的大小,和可能需要處理時間等,一般以長方形條狀顯示。
人類史上的第一個在計算機中進度條,出現(xiàn)在 Mitchell Model 1979 年的博士論文。Model 使用進度條來表達電腦執(zhí)行任務(wù)的進度,這也是我們現(xiàn)在常看到的進度條。
計算機領(lǐng)域中引入進度條,主要是通過圖形化的形式告知用戶計算機正在努力工作中,試想下,如果沒有進度條,那么用戶就無法知道程序是處理中,還是失去了響應(yīng)。也無法知道程序處理的大概進展。
所以,進度條更多的是為了滿足用戶心理,緩解用戶焦慮而設(shè)計。
但是,計算機中顯示的進度條其實并不是真正的進度,而是預(yù)估出來的。通常的計算方式是:
操作數(shù)量/總操作數(shù)量=進度條百分比比如我們進行文件拷貝,當文件總大小事100M的時候,計算機可以根據(jù)已經(jīng)拷貝的文件大小和時間,預(yù)估出文件全部拷貝完需要的總時長,然后就可以根據(jù)已用時長和總時長的對比,計算出進度了。
99%的時候在干什么?
我們在《如何給女朋友解釋什么是P2P?》中其實介紹過,現(xiàn)在的下載軟件都是采用P2P技術(shù)進行文件下載的。
在P2P模式下,當我們想要下載一個電影的時候,并不是從一個資源處串行下載的。而是會從多個P2P節(jié)點上分別多線程的進行下載,然后再把下載后的資源整合到一起。
這個過程就像我們組裝電腦一樣,我們同時從不同的店鋪購買不同的電腦配件,然后自己組裝電腦。
但是,我們知道 ,由于受到發(fā)貨地、發(fā)貨時間、物流等影響,所有配件的到達時間肯定不是一樣的。有一些會先到達,有一些會后到達。
所以,如果有一些配件先到達的時候,我們就需要繼續(xù)等到后到達的配件。
如果我們組裝一個電腦需要100個配件,其中99個已經(jīng)到達了,但是最后一個由于庫存原因還未發(fā)貨,那么,整體電腦組裝的進度應(yīng)該就是99%,并且這個99%的狀態(tài)還會維持很長一段時間。
所以,因為采用P2P的下載方式,文件從多個節(jié)點下載,由于從各個節(jié)點下載的速度不一致,有些節(jié)點的資源會相較于其他資源慢一些,就會出現(xiàn)進度卡在99%的情況。
另外,除了以上這種原因以外,還有一種情況。
那就是我們已經(jīng)收到了所有的電腦配件,開始組裝的時候,發(fā)現(xiàn)其中有一個配件出現(xiàn)了問題,運輸過程中有損壞,這時候我們就需要聯(lián)系商家進行換貨。這個過程電腦組裝的整體進度也會卡在99%。
所以,因為資源進行分塊下載,在下載的最后階段,就需要進行組合及校驗,而在校驗時發(fā)現(xiàn)某塊出現(xiàn)問題,就需要重新下載。這個過程進度也會一直卡在99%。
關(guān)于作者:漫話編程,是一個通過漫畫+音頻的形式講解枯燥的編程知識的公眾號。致力于讓編程變得更有樂趣。
Java工程師成神之路系列文章
在 GitHub 更新中,歡迎關(guān)注,歡迎star。
?
直面Java第311期:什么是運行時常量池?
深入并發(fā)第013期:拓展synchronized——鎖優(yōu)化
- MORE | 更多精彩文章 -
劉強東“退位”,東哥的"兄弟們"怎么辦?| 文末送書
GitHub上12kStar的《Java工程師成神之路》中終于開放閱讀了!
一口氣說出4種“附近的人”實現(xiàn)方式,面試官笑了
一次螞蟻金服的辛酸面試歷程
如果你喜歡本文,
請長按二維碼,關(guān)注?Hollis.
轉(zhuǎn)發(fā)至朋友圈,是對我最大的支持。
好文章,我在看??
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的漫话:为什么你下载小电影的时候进度总是卡在99%就不动了?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AUC、Precision、Recall
- 下一篇: Dubbo 新增本地 IDE 插件,快速