本發(fā)明涉及計(jì)算機(jī)
技術(shù)領(lǐng)域:
:,尤其涉及一種數(shù)據(jù)文件的增量更新方法和服務(wù)器、客戶端以及系統(tǒng)。
背景技術(shù):
::在客戶端進(jìn)行軟件更新時(shí),需要通過互聯(lián)網(wǎng)從服務(wù)器端下載該軟件的新版本安裝包,客戶端需要為新版本安裝包的下載付出相應(yīng)的下載時(shí)間及流量。然而新版本安裝包中的文件和客戶端已安裝的版本的安裝包中的文件有較大部分是沒有變化的,因此客戶端付出的下載時(shí)間和流量中較大部分是為這些相同的文件付出的。而增量更新方式僅需要從服務(wù)器端下載與客戶端已安裝的版本不同的補(bǔ)丁包,減少了客戶端下載付出的時(shí)間和流量,因此,增量更新方法成為重要的更新方法?,F(xiàn)有技術(shù)中采用的增量更新方法為:服務(wù)器端將新版本安裝包進(jìn)行壓縮,將壓縮后的新版本安裝包分別與各個(gè)壓縮后的歷史版本安裝包生成新版本與該歷史版本對(duì)應(yīng)的補(bǔ)丁包,找出壓縮后的新版本安裝包中與該壓縮后的歷史版本安裝包中不同的多個(gè)文件,將各個(gè)不同的文件打包生成一個(gè)補(bǔ)丁包。例如現(xiàn)有技術(shù)提供的bsDiff/bsPatch方案中,存在執(zhí)行速度慢、內(nèi)存占用高的缺點(diǎn)。具體的,bsDiff執(zhí)行速度比較慢,且生成增量補(bǔ)丁包時(shí)對(duì)內(nèi)存消耗十分巨大,bsDiff在生成N與M大小的補(bǔ)丁包時(shí)需要消耗MAX(17*N,9*N+M)+O(1)的內(nèi)存空間。其中,N是指原始數(shù)據(jù)文件,M是指補(bǔ)丁包大小,當(dāng)生成超過100M文件的補(bǔ)丁包需要專門使用64位的bsDiff工具。又如,bsPatch執(zhí)行速度也比較慢,在進(jìn)行補(bǔ)丁升級(jí)時(shí)需要消耗內(nèi)存為N+M,這個(gè)內(nèi)存消耗量并不適用于移動(dòng)設(shè)備。比如Android版本中的游戲資源包超過200M大小,在游戲運(yùn)行時(shí)進(jìn)行打補(bǔ)丁操作,會(huì)容易耗盡移動(dòng)設(shè)備的內(nèi)存?,F(xiàn)有技術(shù)中的增量更新方法中使用多個(gè)版本安裝包進(jìn)行壓縮后生成補(bǔ)丁包,這也存在版本管理困難的問題,例如bsDiff/bsPatch在進(jìn)行升級(jí)時(shí)需要對(duì)不同的版本之間生成補(bǔ)丁包,造成版本管理困難。假設(shè)目前先后開發(fā)了6個(gè)版本,分別為1.0~6.0,運(yùn)營過程中如果是線性升級(jí)需要制作如下表1所示的5個(gè)版本,分別從當(dāng)前版本1.0升級(jí)到目標(biāo)版本2.0,當(dāng)前版本2.0升級(jí)到目標(biāo)版本3.0等等,以此類推,若有N個(gè)版本,此種情況下就需要配置(N-1)個(gè)補(bǔ)丁包。表1如果需要任意版本直接進(jìn)行更新,如下表2所示,就需要生成15個(gè)補(bǔ)丁包,例如從當(dāng)前版本1.0升級(jí)到目標(biāo)版本2.0,當(dāng)前版本1.0升級(jí)到目標(biāo)版本3.0,當(dāng)前版本2.0升級(jí)到目標(biāo)版本3.0、目標(biāo)版本4.0、目標(biāo)版本5.0、目標(biāo)版本6.0,以此類推,若有N個(gè)版本,此種情況下需要配置N*(N-1)/2個(gè)補(bǔ)丁包。表2在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)上述的增量更新方法至少存在以下缺點(diǎn):1)、執(zhí)行速度慢、移動(dòng)設(shè)備內(nèi)存占用高。2)、當(dāng)安裝包的版本越多時(shí)需要生成的補(bǔ)丁包就越多,由前述舉例可知,無論線性升級(jí)還是任意版本的直接升級(jí)都會(huì)存在大量的補(bǔ)丁包,增加了安裝包的版本管理復(fù)雜度,降低了版本管理的效率。3)、由于服務(wù)器端在生成補(bǔ)丁包前會(huì)將各個(gè)版本的安裝包進(jìn)行壓縮,因此客戶端在下載補(bǔ)丁包時(shí)也需要先對(duì)補(bǔ)丁包進(jìn)行解壓縮,使得整個(gè)增量更新的過程復(fù)雜化。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供了一種數(shù)據(jù)文件的增量更新方法和服務(wù)器、客戶端以及系統(tǒng),用于提高增量更新的效率,減少版本管理復(fù)雜度,簡化增量更新的過程。為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供以下技術(shù)方案:第一方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)文件的增量更新方法,包括:獲取新版本數(shù)據(jù)文件,以及根據(jù)所述新版本數(shù)據(jù)文件獲取所述新版本數(shù)據(jù)文件對(duì)應(yīng)的多個(gè)文件分塊;根據(jù)所述多個(gè)文件分塊分別計(jì)算各個(gè)文件分塊的新版本分塊校驗(yàn)值;將所述各個(gè)文件分塊的新版本分塊校驗(yàn)值、所述新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址都寫入配置文件中,以及向客戶端提供所述配置文件,以使所述客戶端根據(jù)所述配置文件完成增量更新。第二方面,本發(fā)明實(shí)施例還提供一種數(shù)據(jù)文件的增量更新方法,包括:獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件,以及從所述配置文件中解析出新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址、所述新版數(shù)據(jù)文件中多個(gè)文件分塊的新版本分塊校驗(yàn)值;根據(jù)所述文件名稱獲取當(dāng)前版本數(shù)據(jù)文件,以及使用與所述文件分塊的分塊大小相等的滑動(dòng)窗口從所述當(dāng)前版本數(shù)據(jù)文件中選擇出所述滑動(dòng)窗口滑動(dòng)至不同位置所對(duì)應(yīng)的窗口數(shù)據(jù)塊;根據(jù)選擇出的所述窗口數(shù)據(jù)塊計(jì)算所述窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值,以及判斷所述當(dāng)前版本分塊校驗(yàn)值是否與所述新版本分塊校驗(yàn)值相同;若所述當(dāng)前版本分塊校驗(yàn)值與所述新版本分塊校驗(yàn)值相同,獲取相同校驗(yàn)值對(duì)應(yīng)的窗口數(shù)據(jù)塊相對(duì)于所述當(dāng)前版本數(shù)據(jù)文件的偏移量,并繼續(xù)判斷所述滑動(dòng)窗口滑動(dòng)至下一個(gè)位置時(shí)對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值是否與所述新版本分塊校驗(yàn)值相同;若所述當(dāng)前版本分塊校驗(yàn)值與所述新版本分塊校驗(yàn)值不相同,繼續(xù)判斷所述滑動(dòng)窗口滑動(dòng)至下一個(gè)位置時(shí)對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值是否與所述新版本分塊校驗(yàn)值相同;當(dāng)所述滑動(dòng)窗口滑動(dòng)至最后一個(gè)位置對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值判斷完畢之后,創(chuàng)建新版本數(shù)據(jù)文件對(duì)應(yīng)的臨時(shí)文件,對(duì)于所述臨時(shí)文件中匹配到所述相同校驗(yàn)值的分塊,則根據(jù)所述偏移量從所述當(dāng)前版本數(shù)據(jù)文件獲取到重復(fù)數(shù)據(jù)塊,對(duì)于所述臨時(shí)文件中沒有匹配到所述相同校驗(yàn)值的分塊,根據(jù)所述下載地址從所述數(shù)據(jù)文件提供服務(wù)器下載到差異數(shù)據(jù)塊,將所述臨時(shí)文件中的差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊進(jìn)行合并,得到增量更新數(shù)據(jù)文件。第三方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)文件提供服務(wù)器,包括:分塊獲取模塊,用于獲取新版本數(shù)據(jù)文件,以及根據(jù)所述新版本數(shù)據(jù)文件獲取所述新版本數(shù)據(jù)文件對(duì)應(yīng)的多個(gè)文件分塊;校驗(yàn)值計(jì)算模塊,用于根據(jù)所述多個(gè)文件分塊分別計(jì)算各個(gè)文件分塊的新版本分塊校驗(yàn)值;配置文件提供模塊,用于將所述各個(gè)文件分塊的新版本分塊校驗(yàn)值、所述新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址都寫入配置文件中,以及向客戶端提供所述配置文件,以使所述客戶端根據(jù)所述配置文件完成增量更新。第四方面,本發(fā)明實(shí)施例提供一種客戶端,包括:文件解析模塊,用于獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件,以及從所述配置文件中解析出新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址、所述新版數(shù)據(jù)文件中多個(gè)文件分塊的新版本分塊校驗(yàn)值;窗口數(shù)據(jù)選擇模塊,用于根據(jù)所述文件名稱獲取當(dāng)前版本數(shù)據(jù)文件,以及使用與所述文件分塊的分塊大小相等的滑動(dòng)窗口從所述當(dāng)前版本數(shù)據(jù)文件中選擇出所述滑動(dòng)窗口滑動(dòng)至不同位置所對(duì)應(yīng)的窗口數(shù)據(jù)塊;校驗(yàn)值判斷模塊,用于根據(jù)選擇出的所述窗口數(shù)據(jù)塊計(jì)算所述窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值,以及判斷所述當(dāng)前版本分塊校驗(yàn)值是否與所述新版本分塊校驗(yàn)值相同;校驗(yàn)結(jié)果處理模塊,用于若所述當(dāng)前版本分塊校驗(yàn)值與所述新版本分塊校驗(yàn)值相同,獲取相同校驗(yàn)值對(duì)應(yīng)的窗口數(shù)據(jù)塊相對(duì)于所述當(dāng)前版本數(shù)據(jù)文件的偏移量,并繼續(xù)判斷所述滑動(dòng)窗口滑動(dòng)至下一個(gè)位置時(shí)對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值是否與所述新版本分塊校驗(yàn)值相同;若所述當(dāng)前版本分塊校驗(yàn)值與所述新版本分塊校驗(yàn)值不相同,繼續(xù)判斷所述滑動(dòng)窗口滑動(dòng)至下一個(gè)位置時(shí)對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值是否與所述新版本分塊校驗(yàn)值相同;數(shù)據(jù)塊合并模塊,用于當(dāng)所述滑動(dòng)窗口滑動(dòng)至最后一個(gè)位置對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值判斷完畢之后,創(chuàng)建新版本數(shù)據(jù)文件對(duì)應(yīng)的臨時(shí)文件,對(duì)于所述臨時(shí)文件中匹配到所述相同校驗(yàn)值的分塊,則根據(jù)所述偏移量從所述當(dāng)前版本數(shù)據(jù)文件獲取到重復(fù)數(shù)據(jù)塊,對(duì)于所述臨時(shí)文件中沒有匹配到所述相同校驗(yàn)值的分塊,根據(jù)所述下載地址從所述數(shù)據(jù)文件提供服務(wù)器下載到差異數(shù)據(jù)塊,將所述臨時(shí)文件中的差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊進(jìn)行合并,得到增量更新數(shù)據(jù)文件。第五方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)文件的增量更新系統(tǒng),包括:如前述第三方面中任一項(xiàng)所述的數(shù)據(jù)文件提供服務(wù)器和如前述第四方面中任一項(xiàng)所述的客戶端。從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):在本發(fā)明的一種實(shí)施例中,新版本數(shù)據(jù)文件的每個(gè)文件分塊都計(jì)算有新版本分塊校驗(yàn)值,在配置文件中寫入有各個(gè)文件分塊的新版本分塊校驗(yàn)值、新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址,向客戶端提供配置文件,不需要管理多種不同版本的數(shù)據(jù)文件,也不需要針對(duì)版本差異來生成補(bǔ)丁包,因此可以提高增量更新的效率,減少版本管理復(fù)雜度,簡化增量更新的過程。在本發(fā)明的另一種實(shí)施例中,根據(jù)配置文件提供的文件名稱獲取到當(dāng)前版本數(shù)據(jù)文件,通過滑動(dòng)窗口滑動(dòng)至不同位置獲取到多個(gè)窗口數(shù)據(jù)塊,計(jì)算出窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值,通過當(dāng)前版本分塊校驗(yàn)值和新版本分塊校驗(yàn)值的判斷確定出差異校驗(yàn)值,從該數(shù)據(jù)文件提供服務(wù)器獲取到差異數(shù)據(jù)塊,通過差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊的合并操作可以得到增量更新數(shù)據(jù)文件。因此從數(shù)據(jù)文件提供服務(wù)器獲取到的只是差異數(shù)據(jù)塊,而無需下載整個(gè)新版本數(shù)據(jù)文件,也不需要管理多種不同版本的數(shù)據(jù)文件,因此可以提高增量更新的效率,減少版本管理復(fù)雜度,簡化增量更新的過程。附圖說明為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)文件的增量更新方法的流程方框示意圖;圖2為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)文件的增量更新方法的流程方框示意圖;圖3為本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法的一種應(yīng)用場景下交互流程示意圖;圖4為本發(fā)明實(shí)施例提供的新版本數(shù)據(jù)文件的文件分塊示意圖;圖5-a為本發(fā)明實(shí)施例提供的構(gòu)建目標(biāo)文件校驗(yàn)表的處理過程示意圖;圖5-b為本發(fā)明實(shí)施例提供的校驗(yàn)值的處理過程示意圖;圖6為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)文件提供服務(wù)器的組成結(jié)構(gòu)示意圖;圖7-a為本發(fā)明實(shí)施例提供的一種客戶端的組成結(jié)構(gòu)示意圖;圖7-b為本發(fā)明實(shí)施例提供的另一種客戶端的組成結(jié)構(gòu)示意圖;圖7-c為本發(fā)明實(shí)施例提供的另一種客戶端的組成結(jié)構(gòu)示意圖;圖7-d為本發(fā)明實(shí)施例提供的一種校驗(yàn)值判斷模塊的組成結(jié)構(gòu)示意圖;圖8為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)文件的增量更新系統(tǒng)的組成結(jié)構(gòu)示意圖;圖9為本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法應(yīng)用于服務(wù)器的組成結(jié)構(gòu)示意圖;圖10為本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法應(yīng)用于終端的組成結(jié)構(gòu)示意圖。具體實(shí)施方式本發(fā)明實(shí)施例提供了一種數(shù)據(jù)文件的增量更新方法和服務(wù)器、客戶端以及系統(tǒng),用于提高增量更新的效率,減少版本管理復(fù)雜度,簡化增量更新的過程。為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域的技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它單元。首先對(duì)本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法應(yīng)用的系統(tǒng)架構(gòu)進(jìn)行說明,本發(fā)明實(shí)施例提供的上述系統(tǒng)可以包括:數(shù)據(jù)文件提供服務(wù)器和客戶端,數(shù)據(jù)文件提供服務(wù)器向可以提供新版本數(shù)據(jù)文件和配置文件,客戶端通過數(shù)據(jù)文件提供服務(wù)器可以下載到差異數(shù)據(jù)塊,數(shù)據(jù)文件提供服務(wù)器和客戶端之間可以建立通信連接。具體的,數(shù)據(jù)文件提供服務(wù)器在生成配置文件之后,數(shù)據(jù)文件提供服務(wù)器可以直接向客戶端提供配置文件的下載。另外,數(shù)據(jù)文件提供服務(wù)器在生成配置文件之后,數(shù)據(jù)文件提供服務(wù)器也可以向文件管理服務(wù)器上存儲(chǔ)新版本數(shù)據(jù)文件,客戶端從該文件管理服務(wù)器中下載到差異數(shù)據(jù)塊,數(shù)據(jù)文件提供服務(wù)器、客戶端分別可以和文件管理服務(wù)器建立通信連接。在實(shí)際應(yīng)用中,數(shù)據(jù)文件提供服務(wù)器具體可以是新版本數(shù)據(jù)文件的操作方,例如可以文本操作方使用的電腦設(shè)備,客戶端是需要使用數(shù)據(jù)文件的程序安裝方,該客戶端具體可以是手機(jī)等移動(dòng)設(shè)備,文件管理服務(wù)器具體可以是文件分發(fā)系統(tǒng),例如可以是常用的內(nèi)容分發(fā)網(wǎng)絡(luò)(ContentDeliveryNetwork,CDN)。本發(fā)明實(shí)施例中數(shù)據(jù)文件提供服務(wù)器不需要管理多種版本的數(shù)據(jù)文件,也需要制作針對(duì)各種版本具有差異的補(bǔ)丁包,該數(shù)據(jù)文件提供服務(wù)器只需要根據(jù)新版本數(shù)據(jù)文件制作配置文件,向文件管理服務(wù)器上傳配置文件和新版本數(shù)據(jù)文件,客戶端可以從文件管理服務(wù)器獲取到配置文件,通過該配置文件獲取到該客戶端當(dāng)前正在使用的版本數(shù)據(jù)文件,通過滑動(dòng)窗口計(jì)算出多個(gè)窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值,從而通過當(dāng)前版本分塊校驗(yàn)值和新版本分塊校驗(yàn)值的比較判斷確定出差異校驗(yàn)值,只需要從數(shù)據(jù)文件提供服務(wù)器獲取到差異數(shù)據(jù)塊,就可以通過差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊的合并得到增量更新數(shù)據(jù)文件。接下來分別從數(shù)據(jù)文件提供服務(wù)器和客戶端來介紹本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法。以下分別進(jìn)行詳細(xì)說明。首先從數(shù)據(jù)文件提供服務(wù)器一側(cè)進(jìn)行說明,請(qǐng)參閱圖1所示,本發(fā)明一個(gè)實(shí)施例提供的數(shù)據(jù)文件的增量更新方法,可以包括如下步驟:101、獲取新版本數(shù)據(jù)文件,以及根據(jù)新版本數(shù)據(jù)文件獲取新版本數(shù)據(jù)文件對(duì)應(yīng)的多個(gè)文件分塊。在本發(fā)明實(shí)施例中,先獲取到新版本數(shù)據(jù)文件,該新版本數(shù)據(jù)文件可以是新版本的應(yīng)用程序安裝包,也可以是新版本的音視頻數(shù)據(jù)流,本發(fā)明實(shí)施例提供的新版本數(shù)據(jù)文件可以指的是二進(jìn)制數(shù)據(jù)流,包括有大量的二進(jìn)制數(shù)據(jù)。獲取到新版本數(shù)據(jù)文件之后,根據(jù)新版本數(shù)據(jù)文件獲取新版本數(shù)據(jù)文件對(duì)應(yīng)的多個(gè)文件分塊,多個(gè)文件分塊構(gòu)成新版本數(shù)據(jù)文件,舉例說明如下,假設(shè)新版本數(shù)據(jù)文件為A文件,A文件大小為100M,分塊大小為1KB,則該A文件對(duì)應(yīng)的多個(gè)文件分塊可以為:[0]~[1023]、[1024]~[2047]、[2048]~[3071]等數(shù)據(jù)塊。102、根據(jù)多個(gè)文件分塊分別計(jì)算各個(gè)文件分塊的新版本分塊校驗(yàn)值。在本發(fā)明實(shí)施例中,獲取到新版本數(shù)據(jù)文件的多個(gè)文件分塊之后,針對(duì)不同的文件分塊,可以計(jì)算出每個(gè)文件分塊對(duì)應(yīng)的分塊校驗(yàn)值,為了區(qū)別不同版本數(shù)據(jù)文件的分塊校驗(yàn)值,將新版本數(shù)據(jù)文件的分塊校驗(yàn)值也稱為“新版本分塊校驗(yàn)值”,在實(shí)際應(yīng)用中,計(jì)算校驗(yàn)值的方式可以有多種,例如可以采用多種類型的校驗(yàn)和算法來計(jì)算每個(gè)文件分塊的分塊校驗(yàn)值,例如采用消息摘要算法第五版(MessageDigestAlgorithm5,MD5)算法。在本發(fā)明的一些實(shí)施例中,步驟102根據(jù)多個(gè)文件分塊分別計(jì)算各個(gè)文件分塊的新版本分塊校驗(yàn)值,包括:A1、根據(jù)多個(gè)文件分塊分別計(jì)算各個(gè)文件分塊的新版本弱校驗(yàn)值和新版本強(qiáng)校驗(yàn)值。其中,為了提供校驗(yàn)值的判斷效率,本發(fā)明實(shí)施例中計(jì)算的分塊校驗(yàn)值可以同時(shí)采用兩種校驗(yàn)值的計(jì)算方式,具體的,可以計(jì)算各個(gè)文件分塊的新版本弱校驗(yàn)值和新版本強(qiáng)校驗(yàn)值,新版本弱校驗(yàn)值可以指的是采用具有高執(zhí)行效率的校驗(yàn)和算法,例如Adler32,是MarkAdler提出的一種校驗(yàn)和算法,與同等長度的CRC校驗(yàn)算法相比,它具有更好的執(zhí)行效率,新版本強(qiáng)校驗(yàn)值可以指的是具有高準(zhǔn)確度的校驗(yàn)和算法,例如MD5,一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128位(16字節(jié))的散列值(hashvalue),用于確保信息傳輸完整一致的信息摘要算法。因此本發(fā)明實(shí)施例中,針對(duì)每個(gè)分塊文件,可以采用一對(duì)校驗(yàn)值:一個(gè)弱校驗(yàn)值,一個(gè)強(qiáng)校驗(yàn)值,從而保證校驗(yàn)值計(jì)算效率的同時(shí)也可以保證校驗(yàn)值計(jì)算的準(zhǔn)確度。103、將各個(gè)文件分塊的新版本分塊校驗(yàn)值、新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址都寫入配置文件中,以及向客戶端提供配置文件,以使客戶端根據(jù)配置文件完成增量更新。在本發(fā)明實(shí)施例中,計(jì)算出各個(gè)文件分塊的新版本分塊校驗(yàn)值之后,接下來生成配置文件,該配置文件中寫入有各個(gè)文件分塊的新版本分塊校驗(yàn)值、新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址,本發(fā)明實(shí)施例中生成配置文件可以采用版本控制的服務(wù)組件來完成,例如可以使用騰訊公司內(nèi)部統(tǒng)一登錄系統(tǒng)中的版本控制服務(wù)組件Tversion來完成。其中,新版本數(shù)據(jù)文件的文件名稱還可以用MD5算法做摘要校驗(yàn)和,從而客戶端通過計(jì)算整個(gè)數(shù)據(jù)文件的MD5校驗(yàn)和來判斷該數(shù)據(jù)文件是否完整,若判斷有數(shù)據(jù)文件有損壞,可以放棄本次的更新。需要說明的是,在本發(fā)明實(shí)施例中,數(shù)據(jù)文件提供服務(wù)器可以向客戶端提供配置文件,以使客戶端根據(jù)配置文件完成增量更新,例如數(shù)據(jù)文件提供服務(wù)器具有文件管理功能,數(shù)據(jù)文件提供服務(wù)器可以接收客戶端的請(qǐng)求,向該客戶端發(fā)送配置文件。另外,數(shù)據(jù)文件提供服務(wù)器也可以將配置文件和新版本數(shù)據(jù)文件上傳到文件管理服務(wù)器,使得客戶端可以通過文件管理服務(wù)器下載到配置文件,數(shù)據(jù)文件提供服務(wù)器上傳到文件管理服務(wù)器的是配置文件和新版本數(shù)據(jù)文件,因此上傳的文件相比于現(xiàn)有技術(shù)更少,不需要上傳各種版本的補(bǔ)丁包,因此減少文件管理服務(wù)器的版本管理復(fù)雜度,也減輕了數(shù)據(jù)文件提供服務(wù)器的上傳補(bǔ)丁包的操作。在本發(fā)明的一些實(shí)施例中,步驟103中的向客戶端提供配置文件之前,本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法還包括如下步驟:B1、獲取新版本數(shù)據(jù)文件對(duì)應(yīng)的新版本號(hào),和/或下載策略,下載策略包括:新版本數(shù)據(jù)文件需要采用強(qiáng)制更新還是可選更新;B2、將新版本數(shù)據(jù)文件對(duì)應(yīng)的新版本號(hào),和/或下載策略寫入到配置文件中。具體的,數(shù)據(jù)文件提供服務(wù)器可以在生成的配置文件中寫入新版本數(shù)據(jù)文件對(duì)應(yīng)的新版本號(hào),和/或下載策略,從而客戶端在解析配置文件時(shí)就可以獲取到該新版號(hào)和下載策略。舉例說明如下,配置文件用來記錄需要升級(jí)的目標(biāo)文件的版本信息,文件名稱以及所在的下載地址等。例如配置文件為Tversion文件,具體采用#號(hào)作為分隔符,該配置文件的具體結(jié)構(gòu)字段如下:多次升級(jí)結(jié)果#單次升級(jí)結(jié)果#版本號(hào)#描述#下載策略#下載地址#自定義信息,從而客戶端可以通過對(duì)配置文件的結(jié)構(gòu)字段解析可以獲取到版本號(hào)、描述信息、下載策略、下載地址和自定義信息。在本發(fā)明的一些實(shí)施例中,步驟101根據(jù)新版本數(shù)據(jù)文件獲取新版本數(shù)據(jù)文件對(duì)應(yīng)的多個(gè)文件分塊,包括:C1、按照分塊大小對(duì)所述新版本數(shù)據(jù)文件進(jìn)行平分,得到總分塊個(gè)數(shù)為L/size的文件分塊,其中,L表示所述新版本數(shù)據(jù)文件的文件長度,size表示所述分塊大??;C2、如果L%size不等于0,則將L%size所得的余數(shù)對(duì)應(yīng)的文件分塊保存到校驗(yàn)表中,其中,%表示L對(duì)size進(jìn)行取模。舉例說明如下,本發(fā)明實(shí)施例中新版本數(shù)據(jù)文件按照預(yù)置的分塊大小進(jìn)行分塊,分塊大小為1KB,則根據(jù)新版本數(shù)據(jù)文件的分塊(例如[0]~[1023],[1024]~[2047],[2048]~[3071]等)輸出一張校驗(yàn)表,若最后一個(gè)分塊中存在不足分塊大小的數(shù)據(jù)(即L%size不等于0),本發(fā)明實(shí)施例中對(duì)分塊剩余數(shù)據(jù)不進(jìn)行任何處理,直接將其存入校驗(yàn)表的末尾作為差異數(shù)據(jù)塊。在前述執(zhí)行步驟C1至步驟C2的實(shí)現(xiàn)場景下,步驟102根據(jù)多個(gè)文件分塊分別計(jì)算各個(gè)文件分塊的新版本分塊校驗(yàn)值,包括:D1、分別計(jì)算所述總分塊個(gè)數(shù)為L/size中每個(gè)文件分塊的新版本分塊校驗(yàn)值,并將計(jì)算出的新版本分塊校驗(yàn)值保存到所述校驗(yàn)表中。其中,記L/size所得的整數(shù)部分為N,則對(duì)于N個(gè)分塊中的每個(gè)分塊,可以分別計(jì)算每個(gè)分塊的新版本分塊校驗(yàn)值,例如計(jì)算N個(gè)分塊中每個(gè)分塊的新版本弱校驗(yàn)值和新版本強(qiáng)校驗(yàn)值,并將計(jì)算出的N個(gè)分塊的新版本分塊校驗(yàn)值保存到校驗(yàn)表中,因此本發(fā)明實(shí)施例中生成的校驗(yàn)表中包括有N個(gè)分塊的新版本分塊校驗(yàn)值和分塊剩余數(shù)據(jù)。進(jìn)一步的,在前述執(zhí)行步驟D1的實(shí)現(xiàn)場景下,步驟103將各個(gè)文件分塊的新版本分塊校驗(yàn)值、新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址都寫入配置文件中,包括:E1、將校驗(yàn)表、新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址都寫入配置文件中。其中,本發(fā)明實(shí)施例中生成的校驗(yàn)表中包括有前N個(gè)分塊的新版本分塊校驗(yàn)值和分塊剩余數(shù)據(jù),該校驗(yàn)表被寫入配置文件中,客戶端從該配置文件中可以解析出該校驗(yàn)表,將該校驗(yàn)表讀入到客戶端的本地內(nèi)存中,該校驗(yàn)表中包括有新版本分塊校驗(yàn)值和分塊剩余數(shù)據(jù),因此客戶端可以通過校驗(yàn)表獲取到新版本分塊校驗(yàn)值和分塊剩余數(shù)據(jù)。通過以上實(shí)施例對(duì)本發(fā)明實(shí)施例的描述可知,新版本數(shù)據(jù)文件的每個(gè)文件分塊都計(jì)算有新版本分塊校驗(yàn)值,在配置文件中寫入有各個(gè)文件分塊的新版本分塊校驗(yàn)值、新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址,向客戶端提供配置文件,不需要管理多種不同版本的數(shù)據(jù)文件,也不需要針對(duì)版本差異來生成補(bǔ)丁包,因此可以提高增量更新的效率,減少版本管理復(fù)雜度,簡化增量更新的過程。前述實(shí)施例從數(shù)據(jù)文件提供服務(wù)器側(cè)介紹了本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法,接下來從客戶端一側(cè)來介紹本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法,請(qǐng)參閱圖2所示,本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法,包括如下步驟:201、獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件,以及從配置文件中解析出新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址、新版數(shù)據(jù)文件中多個(gè)文件分塊的新版本分塊校驗(yàn)值。在本發(fā)明實(shí)施例中,客戶端首先獲取到數(shù)據(jù)文件提供服務(wù)器提供的配置文件,例如客戶端和數(shù)據(jù)文件提供服務(wù)器建立有通信連接,客戶端向數(shù)據(jù)文件提供服務(wù)器請(qǐng)求獲取配置文件,又如,數(shù)據(jù)文件提供服務(wù)器將新版本數(shù)據(jù)文件和配置文件上傳到文件管理服務(wù)器,客戶端和文件管理服務(wù)器建立有通信連接,客戶端從文件管理服務(wù)器獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件,由前述實(shí)施例對(duì)數(shù)據(jù)文件提供服務(wù)器的解釋說明可知,該配置文件中寫入新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址、新版數(shù)據(jù)文件中多個(gè)文件分塊的新版本分塊校驗(yàn)值,因此客戶端對(duì)配置文件進(jìn)行解析后,可以獲取到文件名稱和下載地址、新版本分塊校驗(yàn)值。在本發(fā)明的一些實(shí)施例中,步驟201獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件之后,本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法還包括如下步驟:F1、從配置文件中解析出新版本數(shù)據(jù)文件對(duì)應(yīng)的下載策略,下載策略包括:新版本數(shù)據(jù)文件需要采用強(qiáng)制更新還是可選更新;F2、若下載策略為強(qiáng)制更新,觸發(fā)執(zhí)行如下步驟:根據(jù)文件名稱獲取當(dāng)前版本數(shù)據(jù)文件;F3、若下載策略為可選更新,發(fā)送更新提示消息,根據(jù)用戶發(fā)送的更新指示確定是否繼續(xù)執(zhí)行如下步驟:根據(jù)文件名稱獲取當(dāng)前版本數(shù)據(jù)文件。其中,可選的,本發(fā)明實(shí)施例中,還可以為新版本數(shù)據(jù)文件配置下載策略,則客戶端獲取到配置文件之后,可以按照下載策略確定是否需要更新,在下載策略為可選更新時(shí),可以由用戶來確定是否進(jìn)行后續(xù)的增量更新過程,使得增量更新更為靈活,滿足用戶的自主選擇需要。202、根據(jù)文件名稱獲取當(dāng)前版本數(shù)據(jù)文件,以及使用與文件分塊的分塊大小相等的滑動(dòng)窗口從當(dāng)前版本數(shù)據(jù)文件中選擇出滑動(dòng)窗口滑動(dòng)至不同位置所對(duì)應(yīng)的窗口數(shù)據(jù)塊。在本發(fā)明實(shí)施例中,獲取到新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱之后,客戶端根據(jù)該文件名稱可以從本地獲取到與該文件名稱相同的當(dāng)前版本數(shù)據(jù)文件,當(dāng)前版本數(shù)據(jù)文件是客戶端中正在使用的舊版本數(shù)據(jù)文件,該舊版本數(shù)據(jù)文件可以根據(jù)新版本數(shù)據(jù)文件進(jìn)行更新??蛻舳双@取到當(dāng)前版本數(shù)據(jù)文件之后,客戶端根據(jù)預(yù)配置的分塊大小設(shè)置于該分塊大小具有相同空間長度的滑動(dòng)窗口,通過滑動(dòng)窗口的滑動(dòng)從當(dāng)前版本數(shù)據(jù)文件中選擇出窗口數(shù)據(jù)塊,則隨著滑動(dòng)窗口的不斷滑動(dòng),可以從而當(dāng)前版本數(shù)據(jù)文件中獲取到多個(gè)窗口數(shù)據(jù)塊,舉例說明如下:將滑動(dòng)窗口(滑動(dòng)窗口的大小必須等于分塊大小)向當(dāng)前版本數(shù)據(jù)文件末尾移動(dòng)一個(gè)比特(bit),分塊大小為1K的情況下,初始滑動(dòng)窗口選擇出的窗口數(shù)據(jù)塊為:D[0]~~D[1023],滑動(dòng)窗口移動(dòng)一個(gè)比特之后選擇出的窗口數(shù)據(jù)塊為D[1]~~D[1024],D[N]表示在當(dāng)前版本數(shù)據(jù)文件中的數(shù)據(jù)位置。本發(fā)明實(shí)施例中使用滑動(dòng)窗口在當(dāng)前版本數(shù)據(jù)文件中的位置滑動(dòng),可以從當(dāng)前版本數(shù)據(jù)文件中快速的選擇出相應(yīng)的窗口數(shù)據(jù)塊。在本發(fā)明的一些實(shí)施例中,步驟202根據(jù)文件名稱獲取當(dāng)前版本數(shù)據(jù)文件之后,本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法還包括如下步驟:G1、從配置文件中解析出新版本數(shù)據(jù)文件對(duì)應(yīng)的新版本號(hào);G2、獲取當(dāng)前版本數(shù)據(jù)文件對(duì)應(yīng)的當(dāng)前版本號(hào);G3、對(duì)比新版本號(hào)和當(dāng)前版本號(hào),若新版本號(hào)和當(dāng)前版本號(hào)不相同,觸發(fā)執(zhí)行如下步驟202:使用與文件分塊的分塊大小相等的滑動(dòng)窗口從當(dāng)前版本數(shù)據(jù)文件中選擇出滑動(dòng)窗口滑動(dòng)至不同位置所對(duì)應(yīng)的窗口數(shù)據(jù)塊。其中,可選的,若配置文件中包括有新版本號(hào),則客戶端在獲取到配置文件之后,首先判斷該客戶端的當(dāng)前版本號(hào)是否與新版本號(hào)相同,若不相同,繼續(xù)執(zhí)行后續(xù)的增量更新過程,若新版本號(hào)和當(dāng)前版本號(hào)相同,則說明該客戶端中本地使用的當(dāng)前版本就是最新版本,無需更新。203、根據(jù)選擇出的窗口數(shù)據(jù)塊計(jì)算窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值,以及判斷當(dāng)前版本分塊校驗(yàn)值是否與新版本分塊校驗(yàn)值相同。在本發(fā)明實(shí)施例中,以滑動(dòng)窗口滑動(dòng)至某個(gè)位置選擇出的窗口數(shù)據(jù)塊為例,可以計(jì)算該窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值,以及判斷當(dāng)前版本分塊校驗(yàn)值是否與新版本分塊校驗(yàn)值相同,進(jìn)一步的,為了提供校驗(yàn)值的計(jì)算效率,可以采用并行的方式判斷當(dāng)前版本分塊校驗(yàn)值是否與新版本分塊校驗(yàn)值相同,即可以并行的計(jì)算出滑動(dòng)窗口在多個(gè)滑動(dòng)位置時(shí)選擇出的窗口數(shù)據(jù)塊,對(duì)于多個(gè)窗口數(shù)據(jù)塊可以并行的計(jì)算當(dāng)前版本分塊校驗(yàn)值以及并行的查找相同塊,例如可以采用OpenMP,是一套支持跨平臺(tái)共享內(nèi)存方式的多線程并發(fā)的編程API,使用C,C++和Fortran語言,可以在大多數(shù)的處理器體系和操作系統(tǒng)中運(yùn)行,包括Solaris,AIX,HP-UX,GNU/Linux,MacOSX,和MicrosoftWindows。在本發(fā)明的一些實(shí)施例中,由前述實(shí)施例的描述可知,數(shù)據(jù)文件提供服務(wù)器生成的新版本分塊校驗(yàn)值包括:新版本弱校驗(yàn)值和新版本強(qiáng)校驗(yàn)值,即新版本數(shù)據(jù)文件的文件分塊具有兩個(gè)校驗(yàn)值,在這種場景下,步驟203判斷當(dāng)前版本分塊校驗(yàn)值是否與新版本分塊校驗(yàn)值相同,包括:H1、根據(jù)窗口數(shù)據(jù)塊計(jì)算窗口數(shù)據(jù)塊的當(dāng)前版本弱校驗(yàn)值,以及判斷當(dāng)前版本弱校驗(yàn)值是否存在于新版本弱校驗(yàn)值對(duì)應(yīng)的哈希過濾表中;H2、若當(dāng)前版本弱校驗(yàn)值不存在于哈希過濾表中,確定當(dāng)前版本分塊校驗(yàn)值與新版本分塊校驗(yàn)值不相同;H3、若當(dāng)前版本弱校驗(yàn)值存在于哈希過濾表中,根據(jù)窗口數(shù)據(jù)塊計(jì)算窗口數(shù)據(jù)塊的當(dāng)前版本強(qiáng)校驗(yàn)值,判斷當(dāng)前版本強(qiáng)校驗(yàn)值是否與新版本強(qiáng)校驗(yàn)值相等,若當(dāng)前版本強(qiáng)校驗(yàn)值與新版本強(qiáng)校驗(yàn)值相等,確定當(dāng)前版本分塊校驗(yàn)值與新版本分塊校驗(yàn)值相同,若當(dāng)前版本強(qiáng)校驗(yàn)值與新版本強(qiáng)校驗(yàn)值不相等,確定當(dāng)前版本分塊校驗(yàn)值與新版本分塊校驗(yàn)值不相同。具體的,本發(fā)明實(shí)施例中計(jì)算的分塊校驗(yàn)值可以同時(shí)采用兩種校驗(yàn)值的計(jì)算方式,具體的,可以計(jì)算各個(gè)文件分塊的新版本弱校驗(yàn)值和新版本強(qiáng)校驗(yàn)值,例如客戶端從配置文件中解析出校驗(yàn)表,該校驗(yàn)表中包括有新版本弱校驗(yàn)值和新版本強(qiáng)校驗(yàn)值,首先計(jì)算窗口數(shù)據(jù)塊的當(dāng)前版本弱校驗(yàn)值,該當(dāng)前版本弱校驗(yàn)值可以快速計(jì)算出,然后判斷當(dāng)前版本弱校驗(yàn)值是否存在于新版本弱校驗(yàn)值對(duì)應(yīng)的哈希過濾表中,根據(jù)判斷結(jié)果分別執(zhí)行步驟H2和H3,若當(dāng)前版本弱校驗(yàn)值不存在于哈希過濾表中,確定當(dāng)前版本分塊校驗(yàn)值與新版本分塊校驗(yàn)值不相同,此時(shí)滑動(dòng)窗口可以滑動(dòng)至下一個(gè)位置,而無需再計(jì)算窗口數(shù)據(jù)塊的當(dāng)前版本強(qiáng)校驗(yàn)值,以此提高差異計(jì)算的效率,若當(dāng)前版本弱校驗(yàn)值存在于哈希過濾表中,根據(jù)窗口數(shù)據(jù)塊計(jì)算窗口數(shù)據(jù)塊的當(dāng)前版本強(qiáng)校驗(yàn)值,再通過強(qiáng)校驗(yàn)值是否相同確定最終的比較結(jié)果,其中強(qiáng)校驗(yàn)值可以是MD5校驗(yàn)和算法。204、若當(dāng)前版本分塊校驗(yàn)值與新版本分塊校驗(yàn)值相同,獲取相同校驗(yàn)值對(duì)應(yīng)的窗口數(shù)據(jù)塊相對(duì)于當(dāng)前版本數(shù)據(jù)文件的偏移量,并繼續(xù)判斷滑動(dòng)窗口滑動(dòng)至下一個(gè)位置時(shí)對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值是否與新版本分塊校驗(yàn)值相同;若當(dāng)前版本分塊校驗(yàn)值與新版本分塊校驗(yàn)值不相同,繼續(xù)判斷滑動(dòng)窗口滑動(dòng)至下一個(gè)位置時(shí)對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值是否與新版本分塊校驗(yàn)值相同。在本發(fā)明實(shí)施例中,如果兩個(gè)校驗(yàn)值不同,則稱為:差異校驗(yàn)值,如果兩個(gè)校驗(yàn)值相同,則稱為:相同校驗(yàn)值。通過對(duì)滑動(dòng)窗口選擇出的所有窗口數(shù)據(jù)塊進(jìn)行校驗(yàn)值的計(jì)算以及相同塊的查找,可以生成校驗(yàn)結(jié)果,該校驗(yàn)結(jié)果中包括哪些校驗(yàn)值為差異校驗(yàn)值,哪些校驗(yàn)值為相同校驗(yàn)值,對(duì)于相同校驗(yàn)值,則獲取相同校驗(yàn)值對(duì)應(yīng)的窗口數(shù)據(jù)塊相對(duì)于當(dāng)前版本數(shù)據(jù)文件的偏移量,該偏移量用于從當(dāng)前版本數(shù)據(jù)文件中下載到重復(fù)數(shù)據(jù)塊,對(duì)于差異校驗(yàn)值,則說明在客戶端的當(dāng)前版本數(shù)據(jù)文件與新版數(shù)據(jù)文件存在差異,該差異部分可以按照下載地址通過數(shù)據(jù)文件提供服務(wù)器獲取到。舉例說明如下,客戶端根據(jù)下載到的配置文件構(gòu)建本地的新版本校驗(yàn)表,該新版本校驗(yàn)表包括有新版本數(shù)據(jù)文件的各個(gè)文件分塊對(duì)應(yīng)的校驗(yàn)值,若當(dāng)前版本分塊校驗(yàn)值與新版本校驗(yàn)表中某些或者某個(gè)分塊校驗(yàn)值相同,通過hash表的鍵值,該hash表的結(jié)構(gòu)見圖5-a所示,可以查找到新版本中所有的分塊校驗(yàn)值,而hash表允許存在沖突項(xiàng)目,即可以存在多個(gè)相等校驗(yàn)值的分塊,故這里可以存在一個(gè)滑動(dòng)窗口對(duì)應(yīng)多個(gè)新版本分塊的情況,或者一個(gè)對(duì)應(yīng)一個(gè)的情況。比如:滑動(dòng)窗口offset=1023,blocksize=1K時(shí)計(jì)算出的校驗(yàn)值可以同時(shí)匹配分塊10,28,30,獲取相同校驗(yàn)值對(duì)應(yīng)的窗口數(shù)據(jù)塊相對(duì)于所述當(dāng)前版本數(shù)據(jù)文件的偏移量,并繼續(xù)判斷滑動(dòng)窗口滑動(dòng)至下一個(gè)位置時(shí)對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值是否與新版本校驗(yàn)表中某些或者某個(gè)分塊校驗(yàn)值相同;若當(dāng)前版本分塊校驗(yàn)值與新版本校驗(yàn)表中所有分塊校驗(yàn)值不相同,因?yàn)檫@里是查找hash表,所以這里隱含的邏輯是使用當(dāng)前文件校驗(yàn)值與新版本文件的所有校驗(yàn)值進(jìn)行比較,在當(dāng)前版本分塊校驗(yàn)值與新版本校驗(yàn)表中所有分塊校驗(yàn)值不相同的情況下,繼續(xù)判斷滑動(dòng)窗口滑動(dòng)至下一個(gè)位置時(shí)對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值是否與新版本校驗(yàn)表中某些或者某個(gè)分塊校驗(yàn)值相同。205、當(dāng)滑動(dòng)窗口滑動(dòng)至最后一個(gè)位置對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值判斷完畢之后,創(chuàng)建新版本數(shù)據(jù)文件對(duì)應(yīng)的臨時(shí)文件,對(duì)于臨時(shí)文件中匹配到相同校驗(yàn)值的分塊,則根據(jù)偏移量從當(dāng)前版本數(shù)據(jù)文件獲取到重復(fù)數(shù)據(jù)塊,對(duì)于臨時(shí)文件中沒有匹配到相同校驗(yàn)值的分塊,根據(jù)下載地址從數(shù)據(jù)文件提供服務(wù)器下載到差異數(shù)據(jù)塊,將臨時(shí)文件中的差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊進(jìn)行合并,得到增量更新數(shù)據(jù)文件。在本發(fā)明實(shí)施例中,通過步驟204中校驗(yàn)值的差異計(jì)算,可以將當(dāng)前版本數(shù)據(jù)文件與新版數(shù)據(jù)文件存在的重復(fù)數(shù)據(jù)塊通過偏移量標(biāo)記下來,對(duì)于當(dāng)前版本數(shù)據(jù)文件與新版數(shù)據(jù)文件存在的差異部分,則可以根據(jù)下載地址從數(shù)據(jù)文件提供服務(wù)器下載到差異數(shù)據(jù)塊,新創(chuàng)建的臨時(shí)文件中的重復(fù)數(shù)據(jù)塊和下載到的差異數(shù)據(jù)塊進(jìn)行合并,就可以得到增量更新數(shù)據(jù)文件,該增量更新數(shù)據(jù)文件就可以等同于新版本數(shù)據(jù)文件,因此客戶端并不需要從數(shù)據(jù)文件提供服務(wù)器下載完整的新版本數(shù)據(jù)文件,就可以實(shí)現(xiàn)新版本的數(shù)據(jù)更新,提高增量更新的工作效率。需要說明的是,在客戶端和數(shù)據(jù)文件提供服務(wù)器通信的應(yīng)用場景下,客戶端可以從數(shù)據(jù)文件提供服務(wù)器獲取到差異數(shù)據(jù)塊,若數(shù)據(jù)文件提供服務(wù)器已經(jīng)將配置文件和新版本數(shù)據(jù)文件上傳到文件管理服務(wù)器,則客戶端可以從文件管理服務(wù)器下載到差異數(shù)據(jù)塊,此處僅作示例說明。舉例說明如下,首先滑動(dòng)窗口遍歷當(dāng)前版本數(shù)據(jù)文件,然后計(jì)算校驗(yàn)值,最后尋找重復(fù)數(shù)據(jù)塊,其中,對(duì)于相同校驗(yàn)值,將此時(shí)尋找到的新版本數(shù)據(jù)文件分塊下標(biāo),當(dāng)前版本數(shù)據(jù)文件的文件偏移量緩存起來備用。對(duì)于差異校驗(yàn)值,滑動(dòng)窗口偏移1bit,繼續(xù)前述的操作。接下來對(duì)文件合并過程進(jìn)行舉例說明,本地創(chuàng)建一個(gè)buffer(緩沖區(qū)),大小與分塊大小一致。創(chuàng)建一個(gè)新版本數(shù)據(jù)文件的臨時(shí)文件,根據(jù)文件配置中的文件大小、分塊大小計(jì)算出總分塊數(shù)目。其中,塊數(shù)目=文件大小/分塊大小,剩余塊大?。轿募笮。シ謮K大小,根據(jù)校驗(yàn)表從零分塊開始進(jìn)行創(chuàng)建臨時(shí)文件,過程如下:從第0塊開始,查找是否在前述的緩存中存在相同校驗(yàn)值,如果存在。使用偏移量讀取本地文件內(nèi)容到buffer中,之后寫入到臨時(shí)文件。如果不存在,使用httprange下載到差異數(shù)據(jù)塊,繼續(xù)處理下一塊,直至臨時(shí)文件中的所有分塊對(duì)應(yīng)數(shù)據(jù)都獲取完畢,最后進(jìn)行合并。在本發(fā)明的一些實(shí)施例中,由前述實(shí)施例的描述可知,數(shù)據(jù)文件提供服務(wù)器生成的校驗(yàn)表中包括有分塊剩余數(shù)據(jù),在這種實(shí)現(xiàn)場景下,步驟205將臨時(shí)文件中的差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊進(jìn)行合并,得到增量更新數(shù)據(jù)文件,包括:I1、從配置文件中解析出分塊剩余數(shù)據(jù),分塊剩余數(shù)據(jù)包括:新版本數(shù)據(jù)文件中L%size所得的余數(shù)對(duì)應(yīng)的文件分塊,L表示所述新版本數(shù)據(jù)文件的文件長度,size表示分塊大小,%表示L對(duì)size進(jìn)行取模;I2、將差異數(shù)據(jù)塊、重復(fù)數(shù)據(jù)塊、分塊剩余數(shù)據(jù)進(jìn)行合并,得到增量更新數(shù)據(jù)文件。其中,若最后一個(gè)分塊中存在不足分塊大小的數(shù)據(jù),分塊剩余數(shù)據(jù)被存入校驗(yàn)表的末尾作為差異數(shù)據(jù)塊,則客戶端從校驗(yàn)表的末尾可以獲取到分塊剩余數(shù)據(jù),在進(jìn)行數(shù)據(jù)合并時(shí)需要獲取數(shù)據(jù)文件提供服務(wù)器提供的到分塊剩余數(shù)據(jù),將差異校驗(yàn)值對(duì)應(yīng)的差異數(shù)據(jù)塊、相同校驗(yàn)值對(duì)應(yīng)的重復(fù)數(shù)據(jù)塊、分塊剩余數(shù)據(jù)進(jìn)行合并,得到增量更新數(shù)據(jù)文件??梢岳斫獾氖?,若數(shù)據(jù)文件提供服務(wù)器在進(jìn)行文件分塊劃分時(shí)不存在分塊剩余數(shù)據(jù),則無需執(zhí)行步驟I1至步驟I2。通過以上實(shí)施例對(duì)本發(fā)明實(shí)施例的描述可知,根據(jù)配置文件提供的文件名稱獲取到當(dāng)前版本數(shù)據(jù)文件,通過滑動(dòng)窗口滑動(dòng)至不同位置獲取到多個(gè)窗口數(shù)據(jù)塊,計(jì)算出窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值,通過當(dāng)前版本分塊校驗(yàn)值和新版本分塊校驗(yàn)值的判斷確定出差異校驗(yàn)值,從該數(shù)據(jù)文件提供服務(wù)器獲取到差異數(shù)據(jù)塊,通過差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊的合并操作可以得到增量更新數(shù)據(jù)文件。因此從數(shù)據(jù)文件提供服務(wù)器獲取到的只是差異數(shù)據(jù)塊,而無需下載整個(gè)新版本數(shù)據(jù)文件,也不需要管理多種不同版本的數(shù)據(jù)文件,因此可以提高增量更新的效率,減少版本管理復(fù)雜度,簡化增量更新的過程。為便于更好的理解和實(shí)施本發(fā)明實(shí)施例的上述方案,下面舉例相應(yīng)的應(yīng)用場景來進(jìn)行具體說明。本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法通過二進(jìn)制差異的方式以將二進(jìn)制的數(shù)據(jù)文件升級(jí)到任意版本,實(shí)現(xiàn)了版本無關(guān)、內(nèi)存開銷小、服務(wù)器負(fù)載小、支持升級(jí)策略,并適配于移動(dòng)設(shè)備作為客戶端的應(yīng)用場景。接下來以本發(fā)明采用C語言實(shí)現(xiàn)二進(jìn)制的增量更新為例。請(qǐng)參閱圖3所示,為本發(fā)明實(shí)施例提供的數(shù)據(jù)文件的增量更新方法的一種應(yīng)用場景下交互流程示意圖。首先從數(shù)據(jù)文件提供服務(wù)器一側(cè)進(jìn)行介紹版本文件的預(yù)處理過程。數(shù)據(jù)文件提供服務(wù)器可以離線制作新版本數(shù)據(jù)文件,生成校驗(yàn)表。版本管理需要使用配置文件將目標(biāo)版本的版本信息,需要更新的文件信息寫到配置文件中。例如,本發(fā)明實(shí)施例采用windwos的批處理腳本(bat),該腳本最終調(diào)用了一個(gè)C語言寫的預(yù)處理程序crsync.exe,實(shí)現(xiàn)如下代碼:#crsyncbulkdigestconfigini[global]outputDir=../../SwordGame/crsync_etc/currVersion=14182etcnextVersion=14183etcblockSize=16[file1]dir=./name=SwordGame-AndroidARM-Release.apk[file2]dir=./libs/armeabi-v7a/name=libUnrealEngine3.so[file3]dir=../../SwordGame/OBB_etc/name=audio.obb[file4]dir=../../SwordGame/OBB_etc/name=boss.obb[file5]dir=../../SwordGame/OBB_etc/name=fx.obb[file6]dir=../../SwordGame/OBB_etc/name=game.obb[file7]dir=../../SwordGame/OBB_etc/name=map.obb[file8]dir=../../SwordGame/OBB_etc/name=music.obb[file9]dir=../../SwordGame/OBB_etc/name=wp.obb[file10]dir=../../SwordGame/OBB_etc/name=data.obb其中,各字段的解釋如下:outputDir:預(yù)處理結(jié)果的輸出目錄,currentVersion:當(dāng)前版本號(hào),nextVersion:下個(gè)版本號(hào),blockSize:分塊大小(KB),file[n]:需要更新的文件。配置完成之后使用如下命令行運(yùn)行客戶端預(yù)處理工具crsync.exe:setexe=crynscexesetiniFile=crsync_bulkDidgest.inicall%exe%bulkdigest%iniFile%具體的,可以在數(shù)據(jù)文件提供服務(wù)器上執(zhí)行crysnc.exe的批處理功能,例如使用文件crynsctooletc.bat,setexe=crynscexe-->設(shè)置變量exe值為crsync.exe,setiniFile=crsync_bulkDidgest.ini-->設(shè)置變量iniFile值為:crsync_bulkDidgest.ini,call%exe%bulkdigest%iniFile%-->以bulkDigestcrsync_bulkDidgest.ini為參數(shù),調(diào)用crsync.exe。最終會(huì)生成文件列表,這些文件可以包括目標(biāo)文件的原始數(shù)據(jù)以及目標(biāo)文件的新版本分塊校驗(yàn)值。數(shù)據(jù)文件提供服務(wù)器可以上傳校驗(yàn)表與數(shù)據(jù)文件到文件管理服務(wù)器,該文件管理服務(wù)器以CDN為例,Crsync的服務(wù)器側(cè)工具使用騰訊公司的下載業(yè)務(wù)文件分發(fā)系統(tǒng),通過該網(wǎng)頁工具將生成的數(shù)據(jù)文件上傳到CDN。接下來,對(duì)數(shù)據(jù)文件提供服務(wù)器執(zhí)行的預(yù)處理階段進(jìn)行舉例說明,計(jì)算目標(biāo)文件的校驗(yàn)和,假設(shè)A文件大小為100M,分塊大小為1KB,將A文件分塊,分別計(jì)算[0]~[1023],[1024]~[2047],[2048]~[3071]...的校驗(yàn)值,輸出一張A表,對(duì)于不足分塊大小的數(shù)據(jù),rsync會(huì)補(bǔ)齊0之后再計(jì)算校驗(yàn)值,但是本發(fā)明實(shí)施例中采用crsync,對(duì)這部分?jǐn)?shù)據(jù)不進(jìn)行處理直接將其存入A表的末尾作為差異部分。最終生成如圖4所示的數(shù)據(jù)信息。其中,在圖4中,chunkN1、…、chunkN指的是文件分塊,弱校驗(yàn)(Wakechecksum)例如adler32屬于弱校驗(yàn)算法,計(jì)算的校驗(yàn)和可能存在重復(fù),強(qiáng)校驗(yàn)(Strongchecksun)例如MD5屬于強(qiáng)校驗(yàn)算法,計(jì)算的校驗(yàn)和理論上是不會(huì)有重復(fù)出現(xiàn)。extrachunk指不足分塊大小的數(shù)據(jù),Diff值表示無需計(jì)算校驗(yàn)和,直接當(dāng)作差異數(shù)據(jù)處理。然后使用TPL序列化庫存儲(chǔ)計(jì)算結(jié)果,TPL存儲(chǔ)需要定義一種特別字符串來說明存儲(chǔ)內(nèi)容的數(shù)據(jù)結(jié)構(gòu),TPL是一個(gè)開源的使用C語言實(shí)現(xiàn)的輕量級(jí)、高效的序列化工具庫,比如這里計(jì)算的摘要信息:staticconstchar*DIGEST_TPLMAP_FORMAT="uuc#BA(uc#)";上述TPL文件描述符可以做如下解釋:文件大小,塊大小,整個(gè)文件摘要值(固定長度的字符數(shù)組),分塊剩余數(shù)據(jù)(RestDataAndDataLength),變長數(shù)組及其成員:弱校驗(yàn)值與強(qiáng)校驗(yàn)值(固定長度的字符數(shù)組)。最終生成的文件包括目標(biāo)文件和校驗(yàn)文件。接下來舉例說明生成Tversion配置文件,該文件用來記錄需要升級(jí)的目標(biāo)文件的版本信息,MD5校驗(yàn)值以及所在的下載地址等。Tversion文件采用#號(hào)作為分隔符,具體結(jié)構(gòu)字段如下:多次升級(jí)結(jié)果#單次升級(jí)結(jié)果#版本號(hào)#描述#下載策略#下載地址#自定義信息。例如,典型的列子:0#0#1.1.206.14236#1.1.206.14236#1#http://dlied5.qq.com/wjzj/a/rel/etc/#SwordGame-AndroidARM-Release.apk;0b9e41fe7c6651a6f78bb41bf9b230ad;6860187;libUnrealEngine3.so;d65f3ab4dd4c1eafcfbc37e6eda7f698;38762500;其中,自定義信息這里保存了需要升級(jí)的文件名稱、MD5校驗(yàn)值、文件大小,這些信息與前面的下載鏈接一起最終生成了單個(gè)文件對(duì)應(yīng)下載描述信息,該信息最終會(huì)在下載增量包時(shí)使用。之后將配置文件與對(duì)應(yīng)的新版本數(shù)據(jù)文件上傳到CDN。下載策略字段需要版本管理員通過當(dāng)前應(yīng)用程序的版本號(hào)以及資源包的版本號(hào)動(dòng)態(tài)配置是否需要強(qiáng)制更新還是可選更新。接下來描述客戶端的數(shù)據(jù)文件升級(jí)過程,客戶端啟動(dòng)后crsync服務(wù)會(huì)運(yùn)行在移動(dòng)設(shè)備上,同時(shí)自動(dòng)下載最新的版本信息文件進(jìn)行升級(jí)操作。具體的,首先下載版本文件之后,通過比對(duì)版本號(hào)提示用戶是否更新,然后在本地計(jì)算校驗(yàn)值,例如可以做rsync算法的校驗(yàn),最后下載增量更新文件??蛻舳耸褂肏TTP請(qǐng)求服務(wù)器將前述配置的Tversion文件下載到本地??蛻舳伺袛嘞螺d策略,如果下載策略是可選更新,用戶可以跳過后續(xù)的操作繼續(xù)使用本地版本。如果是強(qiáng)制更新應(yīng)用會(huì)自動(dòng)啟動(dòng)更新流程進(jìn)行后續(xù)操作。crsync使用tversion文件中的自定義字段與URL字段等數(shù)據(jù)進(jìn)行初始化,其操作包括設(shè)置本地路徑,下載地址以及生成單個(gè)更新文件與其校驗(yàn)表的下載地址。例如,設(shè)置的下載地址指從tversion文件中解析出的:http://dlied5.qq.com/wjzj/a/rel/etc/,生成單個(gè)更新文件與其校驗(yàn)表的下載地址:是不一樣的。通過http://dlied5.qq.com/wjzj/a/rel/etc/與文件名拼合在一起生成不同的最終地址。比如:a文件的MD5摘要是:34567891023,那么其文件的下載地址為:http://dlied5.qq.com/wjzj/a/rel/etc/34567891023,校驗(yàn)表的下載地址為:http://dlied5.qq.com/wjzj/a/rel/etc/34567891023.sum。最后對(duì)客戶端實(shí)現(xiàn)的本地差異計(jì)算的過程進(jìn)行舉例說明,首先,請(qǐng)參閱圖5-a所示,對(duì)構(gòu)建客戶端的本地校驗(yàn)表的過程進(jìn)行舉例說明,Bloom過濾器(filter)速度很快,但是存在誤報(bào)率,會(huì)將某些不再集合中的元素誤報(bào)為在集合中,不過用來做FastMissing確實(shí)合適的,會(huì)整體加快速度。首先構(gòu)建目標(biāo)文件校驗(yàn)表,使用TPL將文件校驗(yàn)數(shù)據(jù)加載到內(nèi)存中,使用弱校驗(yàn)碼作為Key,對(duì)應(yīng)的詳細(xì)信息作為Value生成一個(gè)Bloomfilter的hashtable來做快速查找。由于弱校驗(yàn)值可能重復(fù),多個(gè)相同的塊使用鏈表(LinkList)存儲(chǔ),例如分塊A和分塊B具有相同的弱校驗(yàn),但是分塊A的強(qiáng)校驗(yàn)塊ID和分塊B的強(qiáng)校驗(yàn)塊ID是不相同的。接下來以alder32Rolling進(jìn)行弱校驗(yàn)值計(jì)算為例,alder32算法用于zlib,一個(gè)32位的adler32值由2個(gè)16位的A和B值構(gòu)成,其中,A值=buffer中所有byte相加,對(duì)216取模。B值=buffer中所有A相加,對(duì)216取模。原始的公式如下:An=(1+D1+D2+.....+Dn)mod65521Bn=(A1+A2+......+An)mod65521=(n+n×D1+(n-1)×D2+(n-2)×D3+......+Dn)mod65521注:65521是65536范圍內(nèi)的最大素?cái)?shù),因此mod=65521即可。本發(fā)明實(shí)施例中將該計(jì)算公式稍做調(diào)整:An=(D1+D2+D3+......+Dn)mod65521Bn=(A1+A2+....+An)mod65521=(n×D1+(n-1)×D2+(n-2)×D3+......+Dn)mod65521移動(dòng)1bit之后,An=(D2+D3+......+Dn)mod65521An+1=(D2+D3+D4+......+Dn+Dn+1)mod65521Bn+1=(A2+A3+....+An+An+1)mod65521=(n×D2+(n-1)×D3+......+2Dn+Dn+1)mod65521可以推得:Bn+1=Bn-n×D1+An+1。舉例說明如下:分塊大小為1K的情況下,計(jì)算出[0]~[1023]的校驗(yàn)值之后再計(jì)算[1]~[1024]的校驗(yàn)值時(shí),只需減去D0,加上D1024即可,無需全部重新計(jì)算,公式如下:A1024=A1023-D0+D1024;B1024=B1023-1024×D0+A1024;其中,N等于1024。這樣計(jì)算弱校驗(yàn)速度極塊,滑動(dòng)遍歷即可得到整個(gè)文件的所有分塊的校驗(yàn)值。實(shí)測文件大小100M在分塊大小2K的情況下遍歷計(jì)算僅耗時(shí)275ms。接下來對(duì)rsync算法進(jìn)行詳細(xì)說明,Crsync在實(shí)現(xiàn)rsync的核心算法時(shí)使用了OpenMP的特性,將操作在多個(gè)線程中同時(shí)進(jìn)行以提高移動(dòng)設(shè)備上計(jì)算校驗(yàn)值與查找相同塊的速度。OpenMP通過簡單易用的編譯指令就可以實(shí)現(xiàn)并行計(jì)算,以Android平臺(tái)舉例如下:在Android.mk文件中添加編譯指令:-fopenmp,在需要并行的邏輯處添加指令:#pragmaompparallel。其中需要并行的核心算法邏輯如圖5-b所示:首先通過OpenMP將匹配過程分為多個(gè)部分,多個(gè)線程同時(shí)執(zhí)行。圖5-b中開始節(jié)點(diǎn)的Block實(shí)際上就是OpenMP中處理的一部分文件塊。首先使用adler32算法計(jì)算第一個(gè)分塊的弱校驗(yàn)和,之后在Bloomfilter中做快速查找如果找到了表示可能存在重復(fù)數(shù)據(jù)塊,遍歷Hash沖突鏈表,此時(shí)需要計(jì)算該文件分塊的MD5強(qiáng)校驗(yàn)和并且與之比較,如果相等就表示找到了一個(gè)重復(fù)數(shù)據(jù)塊,緩存起來備用。否則表示沒有找到潛在的重復(fù)數(shù)據(jù)塊,此時(shí)將分塊向后移動(dòng)一個(gè)bit,使用adler32算法的循環(huán)(rolling)特性繼續(xù)計(jì)算該文件分塊的弱校驗(yàn)和,以此類推,直到該文件塊全部計(jì)算完畢。上述過程中產(chǎn)生的重復(fù)即相同塊在后續(xù)的合并操作中直接使用偏移進(jìn)行讀取與合并,不同塊即差異數(shù)據(jù)塊可以從文件管理服務(wù)器下載到,例如可以使用HTTPRange下載,最后將重復(fù)數(shù)據(jù)塊和差異數(shù)據(jù)塊進(jìn)行合并得到增量數(shù)據(jù)更新文件。由前述舉例說明可知,本發(fā)明實(shí)施例提供的增量更新升級(jí)的整個(gè)過程只需要制作新版本數(shù)據(jù)文件,進(jìn)行預(yù)處理之后將校驗(yàn)文件、原始文件、下載鏈接上傳CDN,因此大幅度地減少了版本管理的復(fù)雜度,簡化了版本維護(hù)過程,提高了工作效率。需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。為便于更好的實(shí)施本發(fā)明實(shí)施例的上述方案,下面還提供用于實(shí)施上述方案的相關(guān)裝置。請(qǐng)參閱圖6所示,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)文件提供服務(wù)器600,可以包括:分塊獲取模塊601、校驗(yàn)值計(jì)算模塊602、配置文件提供模塊603,其中,分塊獲取模塊601,用于獲取新版本數(shù)據(jù)文件,以及根據(jù)所述新版本數(shù)據(jù)文件獲取所述新版本數(shù)據(jù)文件對(duì)應(yīng)的多個(gè)文件分塊;校驗(yàn)值計(jì)算模塊602,用于根據(jù)所述多個(gè)文件分塊分別計(jì)算各個(gè)文件分塊的新版本分塊校驗(yàn)值;配置文件提供模塊603,用于將所述各個(gè)文件分塊的新版本分塊校驗(yàn)值、所述新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址都寫入配置文件中,以及向客戶端提供所述配置文件,以使所述客戶端根據(jù)所述配置文件完成增量更新。在本發(fā)明的一些實(shí)施例中,所述配置文件提供模塊603,還用于向客戶端提供配置文件之前,獲取所述新版本數(shù)據(jù)文件對(duì)應(yīng)的新版本號(hào),和/或下載策略,所述下載策略包括:所述新版本數(shù)據(jù)文件需要采用強(qiáng)制更新還是可選更新;將所述新版本數(shù)據(jù)文件對(duì)應(yīng)的新版本號(hào),和/或下載策略寫入到所述配置文件中。在本發(fā)明的一些實(shí)施例中,所述分塊獲取模塊601,具體用于按照分塊大小對(duì)所述新版本數(shù)據(jù)文件進(jìn)行平分,得到總分塊個(gè)數(shù)為L/size的文件分塊,其中,L表示所述新版本數(shù)據(jù)文件的文件長度,size表示所述分塊大?。蝗绻鸏%size不等于0,則將L%size所得的余數(shù)對(duì)應(yīng)的文件分塊保存到校驗(yàn)表中,其中,%表示L對(duì)size進(jìn)行取模。在本發(fā)明的一些實(shí)施例中,所述校驗(yàn)值計(jì)算模塊602,具體用于分別計(jì)算所述總分塊個(gè)數(shù)為L/size中每個(gè)文件分塊的新版本分塊校驗(yàn)值,并將計(jì)算出的新版本分塊校驗(yàn)值保存到所述校驗(yàn)表中;所述配置文件提供模塊603,具體用于將所述校驗(yàn)表、所述新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址都寫入配置文件中。在本發(fā)明的一些實(shí)施例中,所述校驗(yàn)值計(jì)算模塊602,具體用于根據(jù)所述多個(gè)文件分塊分別計(jì)算各個(gè)文件分塊的新版本弱校驗(yàn)值和新版本強(qiáng)校驗(yàn)值。通過以上實(shí)施例對(duì)本發(fā)明實(shí)施例的描述可知,新版本數(shù)據(jù)文件的每個(gè)文件分塊都計(jì)算有新版本分塊校驗(yàn)值,在配置文件中寫入有各個(gè)文件分塊的新版本分塊校驗(yàn)值、新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址,向客戶端提供配置文件,不需要管理多種不同版本的數(shù)據(jù)文件,也不需要針對(duì)版本差異來生成補(bǔ)丁包,因此可以提高增量更新的效率,減少版本管理復(fù)雜度,簡化增量更新的過程。接下來介紹本發(fā)明實(shí)施例提供的客戶端,請(qǐng)參閱圖7-a所示,客戶端700包括:文件解析模塊701、窗口數(shù)據(jù)選擇模塊702、校驗(yàn)值判斷模塊703、校驗(yàn)結(jié)果處理模塊704、數(shù)據(jù)塊合并模塊705,其中,文件解析模塊701,用于獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件,以及從所述配置文件中解析出新版本數(shù)據(jù)文件對(duì)應(yīng)的文件名稱和下載地址、所述新版數(shù)據(jù)文件中多個(gè)文件分塊的新版本分塊校驗(yàn)值;窗口數(shù)據(jù)選擇模塊702,用于根據(jù)所述文件名稱獲取當(dāng)前版本數(shù)據(jù)文件,以及使用與所述文件分塊的分塊大小相等的滑動(dòng)窗口從所述當(dāng)前版本數(shù)據(jù)文件中選擇出所述滑動(dòng)窗口滑動(dòng)至不同位置所對(duì)應(yīng)的窗口數(shù)據(jù)塊;校驗(yàn)值判斷模塊703,用于根據(jù)選擇出的所述窗口數(shù)據(jù)塊計(jì)算所述窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值,以及判斷所述當(dāng)前版本分塊校驗(yàn)值是否與所述新版本分塊校驗(yàn)值相同;校驗(yàn)結(jié)果處理模塊704,用于若所述當(dāng)前版本分塊校驗(yàn)值與所述新版本分塊校驗(yàn)值相同,獲取相同校驗(yàn)值對(duì)應(yīng)的窗口數(shù)據(jù)塊相對(duì)于所述當(dāng)前版本數(shù)據(jù)文件的偏移量,并繼續(xù)判斷所述滑動(dòng)窗口滑動(dòng)至下一個(gè)位置時(shí)對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值是否與所述新版本分塊校驗(yàn)值相同;若所述當(dāng)前版本分塊校驗(yàn)值與所述新版本分塊校驗(yàn)值不相同,繼續(xù)判斷所述滑動(dòng)窗口滑動(dòng)至下一個(gè)位置時(shí)對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值是否與所述新版本分塊校驗(yàn)值相同;數(shù)據(jù)塊合并模塊705,用于當(dāng)所述滑動(dòng)窗口滑動(dòng)至最后一個(gè)位置對(duì)應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值判斷完畢之后,創(chuàng)建新版本數(shù)據(jù)文件對(duì)應(yīng)的臨時(shí)文件,對(duì)于所述臨時(shí)文件中匹配到所述相同校驗(yàn)值的分塊,則根據(jù)所述偏移量從所述當(dāng)前版本數(shù)據(jù)文件獲取到重復(fù)數(shù)據(jù)塊,對(duì)于所述臨時(shí)文件中沒有匹配到所述相同校驗(yàn)值的分塊,根據(jù)所述下載地址從所述數(shù)據(jù)文件提供服務(wù)器下載到差異數(shù)據(jù)塊,將所述臨時(shí)文件中的差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊進(jìn)行合并,得到增量更新數(shù)據(jù)文件。在本發(fā)明的一些實(shí)施例中,請(qǐng)參閱圖7-b所示,所述客戶端700還包括:版本號(hào)分析模塊706,用于所述窗口數(shù)據(jù)選擇模塊702根據(jù)所述文件名稱獲取當(dāng)前版本數(shù)據(jù)文件之后,從所述配置文件中解析出所述新版本數(shù)據(jù)文件對(duì)應(yīng)的新版本號(hào);獲取所述當(dāng)前版本數(shù)據(jù)文件對(duì)應(yīng)的當(dāng)前版本號(hào);對(duì)比所述新版本號(hào)和所述當(dāng)前版本號(hào),若所述新版本號(hào)和所述當(dāng)前版本號(hào)不相同,觸發(fā)執(zhí)行所述窗口數(shù)據(jù)選擇模塊。在本發(fā)明的一些實(shí)施例中,請(qǐng)參閱圖7-c所示,相對(duì)于圖7-a所示,所述客戶端700還包括:下載策略應(yīng)用模塊707,用于所述文件解析模塊701獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件之后,從所述配置文件中解析出所述新版本數(shù)據(jù)文件對(duì)應(yīng)的下載策略,所述下載策略包括:所述新版本數(shù)據(jù)文件需要采用強(qiáng)制更新還是可選更新;若所述下載策略為強(qiáng)制更新,觸發(fā)執(zhí)行所述窗口數(shù)據(jù)選擇模塊;若所述下載策略為可選更新,發(fā)送更新提示消息,根據(jù)用戶發(fā)送的更新指示確定是否繼續(xù)執(zhí)行所述窗口數(shù)據(jù)選擇模塊。在本發(fā)明的一些實(shí)施例中,所述數(shù)據(jù)塊合并模塊705,具體用于從所述配置文件中解析出分塊剩余數(shù)據(jù),所述分塊剩余數(shù)據(jù)包括:所述新版本數(shù)據(jù)文件中L%size所得的余數(shù)對(duì)應(yīng)的文件分塊,L表示所述新版本數(shù)據(jù)文件的文件長度,size表示分塊大小,%表示L對(duì)size進(jìn)行取模;將所述差異校驗(yàn)值對(duì)應(yīng)的差異數(shù)據(jù)塊、所述相同校驗(yàn)值對(duì)應(yīng)的重復(fù)數(shù)據(jù)塊、所述分塊剩余數(shù)據(jù)進(jìn)行合并,得到增量更新數(shù)據(jù)文件。在本發(fā)明的一些實(shí)施例中,請(qǐng)參閱圖7-d所示,所述新版本分塊校驗(yàn)值包括:新版本弱校驗(yàn)值和新版本強(qiáng)校驗(yàn)值;所述校驗(yàn)值判斷模塊703,包括:弱校驗(yàn)處理模塊7031,用于根據(jù)所述窗口數(shù)據(jù)塊計(jì)算所述窗口數(shù)據(jù)塊的當(dāng)前版本弱校驗(yàn)值,以及判斷所述當(dāng)前版本弱校驗(yàn)值是否存在于所述新版本弱校驗(yàn)值對(duì)應(yīng)的哈希過濾表中;若所述當(dāng)前版本弱校驗(yàn)值不存在于所述哈希過濾表中,確定所述當(dāng)前版本分塊校驗(yàn)值與所述新版本分塊校驗(yàn)值不相同;強(qiáng)校驗(yàn)處理模塊7032,用于若所述當(dāng)前版本弱校驗(yàn)值存在于所述哈希過濾表中,根據(jù)所述窗口數(shù)據(jù)塊計(jì)算所述窗口數(shù)據(jù)塊的當(dāng)前版本強(qiáng)校驗(yàn)值,判斷所述當(dāng)前版本強(qiáng)校驗(yàn)值是否與所述新版本強(qiáng)校驗(yàn)值相等,若所述當(dāng)前版本強(qiáng)校驗(yàn)值與所述新版本強(qiáng)校驗(yàn)值相等,確定所述當(dāng)前版本分塊校驗(yàn)值與所述新版本分塊校驗(yàn)值相同,若所述當(dāng)前版本強(qiáng)校驗(yàn)值與所述新版本強(qiáng)校驗(yàn)值不相等,確定所述當(dāng)前版本分塊校驗(yàn)值與所述新版本分塊校驗(yàn)值不相同。通過以上實(shí)施例對(duì)本發(fā)明實(shí)施例的描述可知,根據(jù)配置文件提供的文件名稱獲取到當(dāng)前版本數(shù)據(jù)文件,通過滑動(dòng)窗口滑動(dòng)至不同位置獲取到多個(gè)窗口數(shù)據(jù)塊,計(jì)算出窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值,通過當(dāng)前版本分塊校驗(yàn)值和新版本分塊校驗(yàn)值的判斷確定出差異校驗(yàn)值,從該數(shù)據(jù)文件提供服務(wù)器獲取到差異數(shù)據(jù)塊,通過差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊的合并操作可以得到增量更新數(shù)據(jù)文件。因此從數(shù)據(jù)文件提供服務(wù)器獲取到的只是差異數(shù)據(jù)塊,而無需下載整個(gè)新版本數(shù)據(jù)文件,也不需要管理多種不同版本的數(shù)據(jù)文件,因此可以提高增量更新的效率,減少版本管理復(fù)雜度,簡化增量更新的過程。請(qǐng)參閱圖8所示,數(shù)據(jù)文件的增量更新系統(tǒng)800,包括:如圖6中任一項(xiàng)所述的數(shù)據(jù)文件提供服務(wù)器600和如圖7中任一項(xiàng)所述的客戶端700。其中,數(shù)據(jù)文件提供服務(wù)器600和客戶端700的功能描述可以參閱前述實(shí)施例的介紹。在本發(fā)明的一些實(shí)施例中,數(shù)據(jù)文件的增量更新系統(tǒng)除了包括數(shù)據(jù)文件提供服務(wù)器和客戶端之外,數(shù)據(jù)文件的增量更新系統(tǒng)還可以包括:文件管理服務(wù)器,則文件管理服務(wù)器,用于存儲(chǔ)所述數(shù)據(jù)文件提供服務(wù)器600發(fā)送的配置文件和新版本數(shù)據(jù)文件;向所述客戶端700發(fā)送所述下載配置文件;向所述客戶端700發(fā)送差異校驗(yàn)值對(duì)應(yīng)的差異數(shù)據(jù)塊。通過以上對(duì)本發(fā)明實(shí)施例的描述可知,根據(jù)配置文件提供的文件名稱獲取到當(dāng)前版本數(shù)據(jù)文件,通過滑動(dòng)窗口滑動(dòng)至不同位置獲取到多個(gè)窗口數(shù)據(jù)塊,計(jì)算出窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗(yàn)值,通過當(dāng)前版本分塊校驗(yàn)值和新版本分塊校驗(yàn)值的判斷確定出差異校驗(yàn)值,從該文件管理服務(wù)器獲取到差異數(shù)據(jù)塊,通過差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊的合并操作可以得到增量更新數(shù)據(jù)文件。因此從文件管理服務(wù)器下載到的只是差異數(shù)據(jù)塊,而無需下載整個(gè)新版本數(shù)據(jù)文件,也不需要管理多種不同版本的數(shù)據(jù)文件,因此可以提高增量更新的效率,減少版本管理復(fù)雜度,簡化增量更新的過程。圖9是本發(fā)明實(shí)施例提供的一種服務(wù)器結(jié)構(gòu)示意圖,該服務(wù)器1100可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個(gè)或一個(gè)以上中央處理器(centralprocessingunits,CPU)1122(例如,一個(gè)或一個(gè)以上處理器)和存儲(chǔ)器1132,一個(gè)或一個(gè)以上存儲(chǔ)應(yīng)用程序1142或數(shù)據(jù)1144的存儲(chǔ)介質(zhì)1130(例如一個(gè)或一個(gè)以上海量存儲(chǔ)設(shè)備)。其中,存儲(chǔ)器1132和存儲(chǔ)介質(zhì)1130可以是短暫存儲(chǔ)或持久存儲(chǔ)。存儲(chǔ)在存儲(chǔ)介質(zhì)1130的程序可以包括一個(gè)或一個(gè)以上模塊(圖示沒標(biāo)出),每個(gè)模塊可以包括對(duì)服務(wù)器中的一系列指令操作。更進(jìn)一步地,中央處理器1122可以設(shè)置為與存儲(chǔ)介質(zhì)1130通信,在服務(wù)器1100上執(zhí)行存儲(chǔ)介質(zhì)1130中的一系列指令操作。服務(wù)器1100還可以包括一個(gè)或一個(gè)以上電源1126,一個(gè)或一個(gè)以上有線或無線網(wǎng)絡(luò)接口1150,一個(gè)或一個(gè)以上輸入輸出接口1158,和/或,一個(gè)或一個(gè)以上操作系統(tǒng)1141,例如WindowsServerTM,MacOSXTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM等等。上述實(shí)施例中由服務(wù)器所執(zhí)行的數(shù)據(jù)文件的增量更新方法步驟可以基于該圖9所示的服務(wù)器結(jié)構(gòu)。本發(fā)明實(shí)施例還提供了另一種終端,如圖10所示,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,具體技術(shù)細(xì)節(jié)未揭示的,請(qǐng)參照本發(fā)明實(shí)施例方法部分。該終端可以為包括手機(jī)、平板電腦、PDA(PersonalDigitalAssistant,個(gè)人數(shù)字助理)、POS(PointofSales,銷售終端)、車載電腦等任意終端設(shè)備,以終端為手機(jī)為例:圖10示出的是與本發(fā)明實(shí)施例提供的終端相關(guān)的手機(jī)的部分結(jié)構(gòu)的框圖。參考圖10,手機(jī)包括:射頻(RadioFrequency,RF)電路1010、存儲(chǔ)器1020、輸入單元1030、顯示單元1040、傳感器1050、音頻電路1060、無線保真(wirelessfidelity,WiFi)模塊1070、處理器1080、以及電源1090等部件。本領(lǐng)域技術(shù)人員可以理解,圖10中示出的手機(jī)結(jié)構(gòu)并不構(gòu)成對(duì)手機(jī)的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。下面結(jié)合圖10對(duì)手機(jī)的各個(gè)構(gòu)成部件進(jìn)行具體的介紹:RF電路1010可用于收發(fā)信息或通話過程中,信號(hào)的接收和發(fā)送,特別地,將基站的下行信息接收后,給處理器1080處理;另外,將設(shè)計(jì)上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路1010包括但不限于天線、至少一個(gè)放大器、收發(fā)信機(jī)、耦合器、低噪聲放大器(LowNoiseAmplifier,LNA)、雙工器等。此外,RF電路1010還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。上述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于全球移動(dòng)通訊系統(tǒng)(GlobalSystemofMobilecommunication,GSM)、通用分組無線服務(wù)(GeneralPacketRadioService,GPRS)、碼分多址(CodeDivisionMultipleAccess,CDMA)、寬帶碼分多址(WidebandCodeDivisionMultipleAccess,WCDMA)、長期演進(jìn)(LongTermEvolution,LTE)、電子郵件、短消息服務(wù)(ShortMessagingService,SMS)等。存儲(chǔ)器1020可用于存儲(chǔ)軟件程序以及模塊,處理器1080通過運(yùn)行存儲(chǔ)在存儲(chǔ)器1020的軟件程序以及模塊,從而執(zhí)行手機(jī)的各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器1020可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)手機(jī)的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器1020可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。輸入單元1030可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與手機(jī)的用戶設(shè)置以及功能控制有關(guān)的鍵信號(hào)輸入。具體地,輸入單元1030可包括觸控面板1031以及其他輸入設(shè)備1032。觸控面板1031,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板1031上或在觸控面板1031附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動(dòng)相應(yīng)的連接裝置??蛇x的,觸控面板1031可包括觸摸檢測裝置和觸摸控制器兩個(gè)部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號(hào),將信號(hào)傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器1080,并能接收處理器1080發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸控面板1031。除了觸控面板1031,輸入單元1030還可以包括其他輸入設(shè)備1032。具體地,其他輸入設(shè)備1032可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。顯示單元1040可用于顯示由用戶輸入的信息或提供給用戶的信息以及手機(jī)的各種菜單。顯示單元1040可包括顯示面板1041,可選的,可以采用液晶顯示器(LiquidCrystalDisplay,LCD)、有機(jī)發(fā)光二極管(OrganicLight-EmittingDiode,OLED)等形式來配置顯示面板1041。進(jìn)一步的,觸控面板1031可覆蓋顯示面板1041,當(dāng)觸控面板1031檢測到在其上或附近的觸摸操作后,傳送給處理器1080以確定觸摸事件的類型,隨后處理器1080根據(jù)觸摸事件的類型在顯示面板1041上提供相應(yīng)的視覺輸出。雖然在圖10中,觸控面板1031與顯示面板1041是作為兩個(gè)獨(dú)立的部件來實(shí)現(xiàn)手機(jī)的輸入和輸入功能,但是在某些實(shí)施例中,可以將觸控面板1031與顯示面板1041集成而實(shí)現(xiàn)手機(jī)的輸入和輸出功能。手機(jī)還可包括至少一種傳感器1050,比如光傳感器、運(yùn)動(dòng)傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板1041的亮度,接近傳感器可在手機(jī)移動(dòng)到耳邊時(shí),關(guān)閉顯示面板1041和/或背光。作為運(yùn)動(dòng)傳感器的一種,加速計(jì)傳感器可檢測各個(gè)方向上(一般為三軸)加速度的大小,靜止時(shí)可檢測出重力的大小及方向,可用于識(shí)別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動(dòng)識(shí)別相關(guān)功能(比如計(jì)步器、敲擊)等;至于手機(jī)還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。音頻電路1060、揚(yáng)聲器1061,傳聲器1062可提供用戶與手機(jī)之間的音頻接口。音頻電路1060可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號(hào),傳輸?shù)綋P(yáng)聲器1061,由揚(yáng)聲器1061轉(zhuǎn)換為聲音信號(hào)輸出;另一方面,傳聲器1062將收集的聲音信號(hào)轉(zhuǎn)換為電信號(hào),由音頻電路1060接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器1080處理后,經(jīng)RF電路1010以發(fā)送給比如另一手機(jī),或者將音頻數(shù)據(jù)輸出至存儲(chǔ)器1020以便進(jìn)一步處理。WiFi屬于短距離無線傳輸技術(shù),手機(jī)通過WiFi模塊1070可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖10示出了WiFi模塊1070,但是可以理解的是,其并不屬于手機(jī)的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。處理器1080是手機(jī)的控制中心,利用各種接口和線路連接整個(gè)手機(jī)的各個(gè)部分,通過運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器1020內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器1020內(nèi)的數(shù)據(jù),執(zhí)行手機(jī)的各種功能和處理數(shù)據(jù),從而對(duì)手機(jī)進(jìn)行整體監(jiān)控??蛇x的,處理器1080可包括一個(gè)或多個(gè)處理單元;優(yōu)選的,處理器1080可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器1080中。手機(jī)還包括給各個(gè)部件供電的電源1090(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器1080邏輯相連,從而通過電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。盡管未示出,手機(jī)還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。在本發(fā)明實(shí)施例中,該終端所包括的處理器1080還具有控制執(zhí)行以上由終端執(zhí)行的數(shù)據(jù)文件的增量更新方法流程。另外需說明的是,以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,本發(fā)明提供的裝置實(shí)施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實(shí)現(xiàn)為一條或多條通信總線或信號(hào)線。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實(shí)現(xiàn),當(dāng)然也可以通過專用硬件包括專用集成電路、專用CPU、專用存儲(chǔ)器、專用元器件等來實(shí)現(xiàn)。一般情況下,凡由計(jì)算機(jī)程序完成的功能都可以很容易地用相應(yīng)的硬件來實(shí)現(xiàn),而且,用來實(shí)現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返取5?,?duì)本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤、U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲(chǔ)器(RAM,RandomAccessMemory)、磁碟或者光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。綜上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)上述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3