漫話:爲何你下載小電影的時候進度老是卡在99%就不動了?


​進度條

其實,早在計算機發明以前,就已經有了進度條的概念。1896 年,波蘭經濟學家 Karol Adamiecki發明了一種叫作harmonogram(波蘭語,時間表)的圖表;同一時間,亨利·甘特(Henry Gantt)提出相似的方法並在西方普及。Adamiecki的圖表就被叫作爲甘特圖bash

後來,計算機出現,甘特圖這個概念後來被用於計算領域。主要用來計算機在處理任務時,實時的,以圖片形式顯示處理任務的速度,完成度,剩餘未完成任務量的大小,和可能須要處理時間等,通常以長方形條狀顯示。多線程

人類史上的第一個在計算機中進度條,出如今 Mitchell Model 1979 年的博士論文。Model 使用進度條來表達電腦執行任務的進度,這也是咱們如今常看到的進度條。spa

計算機領域中引入進度條,主要是經過圖形化的形式告知用戶計算機正在努力工做中,試想下,若是沒有進度條,那麼用戶就沒法之道程序是處理中,仍是失去了響應。也沒法知道程序處理的大概進展。線程

因此,進度條更多的是爲了知足用戶心理,緩解用戶焦慮而設計。設計

可是,計算機中顯示的進度條其實並非真正的進度,而是預估出來的。一般的計算方式是:3d

操做數量/總操做數量=進度條百分比複製代碼

好比咱們進行文件拷貝,當文件總大小事100M的時候,計算機能夠根據已經拷貝的文件大小和時間,預估出文件所有拷貝完須要的總時長,而後就能夠根據已用時長和總時長的對比,計算出進度了。code

99%的時候在幹什麼?

咱們在《如何給女友解釋什麼是P2P?》中其實介紹過,如今的下載軟件都是採用P2P技術進行文件下載的。cdn

在P2P模式下,當咱們想要下載一個電影的時候,並非從一個資源處串行下載的。而是會從多個P2P節點上分別多線程的進行下載,而後再把下載後的資源整合到一塊兒。blog

這個過程就像咱們組裝電腦同樣,咱們同時從不一樣的店鋪購買不一樣的電腦配件,而後本身組裝電腦。圖片

可是,咱們知道 ,因爲受到發貨地、發貨時間、物流等影響,全部配件的到達時間確定不是同樣的。有一些會先到達,有一些會後到達。

因此,若是有一些配件先到達的時候,咱們就須要繼續等到後到達的配件。

若是咱們組裝一個電腦須要100個配件,其中99個已經到達了,可是最後一個因爲庫存緣由還未發貨,那麼,總體電腦組裝的進度應該就是99%,而且這個99%的狀態還會維持很長一段時間。

因此,由於採用P2P的下載方式,文件從多個節點下載,因爲從各個節點下載的速度不一致,有些節點的資源會相較於其餘資源慢一些,就會出現進度卡在99%的狀況。

另外,除了以上這種緣由之外,還有一種狀況。

那就是咱們已經收到了全部的電腦配件,開始組裝的時候,發現其中有一個配件出現了問題,運輸過程當中有損壞,這時候咱們就須要聯繫商家進行換貨。這個過程電腦組裝的總體進度也會卡在99%。

因此,由於資源進行分塊下載,在下載的最後階段,就須要進行組合及校驗,而在校驗時發現某塊出現問題,就須要從新下載。這個過程進度也會一直卡在99%。

相關文章
相關標籤/搜索