1.一種數(shù)據(jù)文件的增量更新方法,其特征在于,包括:
獲取新版本數(shù)據(jù)文件,以及根據(jù)所述新版本數(shù)據(jù)文件獲取所述新版本數(shù)據(jù)文件對應(yīng)的多個文件分塊;
根據(jù)所述多個文件分塊分別計算各個文件分塊的新版本分塊校驗值;
將所述各個文件分塊的新版本分塊校驗值、所述新版本數(shù)據(jù)文件對應(yīng)的文件名稱和下載地址都寫入配置文件中,以及向客戶端提供所述配置文件,以使所述客戶端根據(jù)所述配置文件完成增量更新。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述向客戶端提供所述配置文件之前,所述方法還包括:
獲取所述新版本數(shù)據(jù)文件對應(yīng)的新版本號,和/或下載策略,所述下載策略包括:所述新版本數(shù)據(jù)文件需要采用強制更新還是可選更新;
將所述新版本數(shù)據(jù)文件對應(yīng)的新版本號,和/或下載策略寫入到所述配置文件中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述新版本數(shù)據(jù)文件獲取所述新版本數(shù)據(jù)文件對應(yīng)的多個文件分塊,包括:
按照分塊大小對所述新版本數(shù)據(jù)文件進行平分,得到總分塊個數(shù)為L/size的文件分塊,其中,L表示所述新版本數(shù)據(jù)文件的文件長度,size表示所述分塊大小;
如果L%size不等于0,則將L%size所得的余數(shù)對應(yīng)的文件分塊保存到校驗表中,其中,%表示L對size進行取模。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述多個文件分塊分別計算各個文件分塊的新版本分塊校驗值,包括:
分別計算所述總分塊個數(shù)為L/size中每個文件分塊的新版本分塊校驗值,并將計算出的新版本分塊校驗值保存到所述校驗表中;
所述將所述各個文件分塊的新版本分塊校驗值、所述新版本數(shù)據(jù)文件對應(yīng)的文件名稱和下載地址都寫入配置文件中,包括:
將所述校驗表、所述新版本數(shù)據(jù)文件對應(yīng)的文件名稱和下載地址都寫入配置文件中。
5.根據(jù)權(quán)利要求1至4中任一項所述的方法,其特征在于,所述根據(jù)所述多個文件分塊分別計算各個文件分塊的新版本分塊校驗值,包括:
根據(jù)所述多個文件分塊分別計算各個文件分塊的新版本弱校驗值和新版本強校驗值。
6.一種數(shù)據(jù)文件的增量更新方法,其特征在于,包括:
獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件,以及從所述配置文件中解析出新版本數(shù)據(jù)文件對應(yīng)的文件名稱和下載地址、所述新版數(shù)據(jù)文件中多個文件分塊的新版本分塊校驗值;
根據(jù)所述文件名稱獲取當(dāng)前版本數(shù)據(jù)文件,以及使用與所述文件分塊的分塊大小相等的滑動窗口從所述當(dāng)前版本數(shù)據(jù)文件中選擇出所述滑動窗口滑動至不同位置所對應(yīng)的窗口數(shù)據(jù)塊;
根據(jù)選擇出的所述窗口數(shù)據(jù)塊計算所述窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗值,以及判斷所述當(dāng)前版本分塊校驗值是否與所述新版本分塊校驗值相同;
若所述當(dāng)前版本分塊校驗值與所述新版本分塊校驗值相同,獲取相同校驗值對應(yīng)的窗口數(shù)據(jù)塊相對于所述當(dāng)前版本數(shù)據(jù)文件的偏移量,并繼續(xù)判斷所述滑動窗口滑動至下一個位置時對應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗值是否與所述新版本分塊校驗值相同;若所述當(dāng)前版本分塊校驗值與所述新版本分塊校驗值不相同,繼續(xù)判斷所述滑動窗口滑動至下一個位置時對應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗值是否與所述新版本分塊校驗值相同;
當(dāng)所述滑動窗口滑動至最后一個位置對應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗值判斷完畢之后,創(chuàng)建新版本數(shù)據(jù)文件對應(yīng)的臨時文件,對于所述臨時文件中匹配到所述相同校驗值的分塊,則根據(jù)所述偏移量從所述當(dāng)前版本數(shù)據(jù)文件獲取到重復(fù)數(shù)據(jù)塊,對于所述臨時文件中沒有匹配到所述相同校驗值的分塊,根據(jù)所述下載地址從所述數(shù)據(jù)文件提供服務(wù)器下載到差異數(shù)據(jù)塊,將所述臨時文件中的差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊進行合并,得到增量更新數(shù)據(jù)文件。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)所述文件名稱獲取當(dāng)前版本數(shù)據(jù)文件之后,所述方法還包括:
從所述配置文件中解析出所述新版本數(shù)據(jù)文件對應(yīng)的新版本號;
獲取所述當(dāng)前版本數(shù)據(jù)文件對應(yīng)的當(dāng)前版本號;
對比所述新版本號和所述當(dāng)前版本號,若所述新版本號和所述當(dāng)前版本號不相同,觸發(fā)執(zhí)行如下步驟:使用與所述文件分塊的分塊大小相等的滑動窗口從所述當(dāng)前版本數(shù)據(jù)文件中選擇出所述滑動窗口滑動至不同位置所對應(yīng)的窗口數(shù)據(jù)塊。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件之后,所述方法還包括:
從所述配置文件中解析出所述新版本數(shù)據(jù)文件對應(yīng)的下載策略,所述下載策略包括:所述新版本數(shù)據(jù)文件需要采用強制更新還是可選更新;
若所述下載策略為強制更新,觸發(fā)執(zhí)行如下步驟:根據(jù)所述文件名稱獲取當(dāng)前版本數(shù)據(jù)文件;
若所述下載策略為可選更新,發(fā)送更新提示消息,根據(jù)用戶發(fā)送的更新指示確定是否繼續(xù)執(zhí)行如下步驟:根據(jù)所述文件名稱獲取當(dāng)前版本數(shù)據(jù)文件。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述將所述臨時文件中的差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊進行合并,得到增量更新數(shù)據(jù)文件,包括:
從所述配置文件中解析出分塊剩余數(shù)據(jù),所述分塊剩余數(shù)據(jù)包括:所述新版本數(shù)據(jù)文件中L%size所得的余數(shù)對應(yīng)的文件分塊,L表示所述新版本數(shù)據(jù)文件的文件長度,size表示分塊大小,%表示L對size進行取模;
將所述差異數(shù)據(jù)塊、所述重復(fù)數(shù)據(jù)塊、所述分塊剩余數(shù)據(jù)進行合并,得到增量更新數(shù)據(jù)文件。
10.根據(jù)權(quán)利要求6至9中任一項所述的方法,其特征在于,所述新版本分塊校驗值包括:新版本弱校驗值和新版本強校驗值;
所述判斷所述當(dāng)前版本分塊校驗值是否與所述新版本分塊校驗值相同,包括:
根據(jù)所述窗口數(shù)據(jù)塊計算所述窗口數(shù)據(jù)塊的當(dāng)前版本弱校驗值,以及判斷所述當(dāng)前版本弱校驗值是否存在于所述新版本弱校驗值對應(yīng)的哈希過濾表中;
若所述當(dāng)前版本弱校驗值不存在于所述哈希過濾表中,確定所述當(dāng)前版本分塊校驗值與所述新版本分塊校驗值不相同;
若所述當(dāng)前版本弱校驗值存在于所述哈希過濾表中,根據(jù)所述窗口數(shù)據(jù)塊計算所述窗口數(shù)據(jù)塊的當(dāng)前版本強校驗值,判斷所述當(dāng)前版本強校驗值是否與所述新版本強校驗值相等,若所述當(dāng)前版本強校驗值與所述新版本強校驗值相等,確定所述當(dāng)前版本分塊校驗值與所述新版本分塊校驗值相同,若所述當(dāng)前版本強校驗值與所述新版本強校驗值不相等,確定所述當(dāng)前版本分塊校驗值與所述新版本分塊校驗值不相同。
11.一種數(shù)據(jù)文件提供服務(wù)器,其特征在于,包括:
分塊獲取模塊,用于獲取新版本數(shù)據(jù)文件,以及根據(jù)所述新版本數(shù)據(jù)文件獲取所述新版本數(shù)據(jù)文件對應(yīng)的多個文件分塊;
校驗值計算模塊,用于根據(jù)所述多個文件分塊分別計算各個文件分塊的新版本分塊校驗值;
配置文件提供模塊,用于將所述各個文件分塊的新版本分塊校驗值、所述新版本數(shù)據(jù)文件對應(yīng)的文件名稱和下載地址都寫入配置文件中,以及向客戶端提供所述配置文件,以使所述客戶端根據(jù)所述配置文件完成增量更新。
12.根據(jù)權(quán)利要求11所述的數(shù)據(jù)文件提供服務(wù)器,其特征在于,所述配置文件提供模塊,還用于向客戶端提供所述配置文件之前,獲取所述新版本數(shù)據(jù)文件對應(yīng)的新版本號,和/或下載策略,所述下載策略包括:所述新版本數(shù)據(jù)文件需要采用強制更新還是可選更新;將所述新版本數(shù)據(jù)文件對應(yīng)的新版本號,和/或下載策略寫入到所述配置文件中。
13.根據(jù)權(quán)利要求11所述的數(shù)據(jù)文件提供服務(wù)器,其特征在于,所述分塊獲取模塊,具體用于按照分塊大小對所述新版本數(shù)據(jù)文件進行平分,得到總分塊個數(shù)為L/size的文件分塊,其中,L表示所述新版本數(shù)據(jù)文件的文件長度,size表示所述分塊大小;如果L%size不等于0,則將L%size所得的余數(shù)對應(yīng)的文件分塊保存到校驗表中,其中,%表示L對size進行取模。
14.根據(jù)權(quán)利要求13所述的數(shù)據(jù)文件提供服務(wù)器,其特征在于,所述校驗值計算模塊,具體用于分別計算所述總分塊個數(shù)為L/size中每個文件分塊的新版本分塊校驗值,并將計算出的新版本分塊校驗值保存到所述校驗表中;
所述配置文件提供模塊,具體用于將所述校驗表、所述新版本數(shù)據(jù)文件對應(yīng)的文件名稱和下載地址都寫入配置文件中。
15.根據(jù)權(quán)利要求11至14中任一項所述的數(shù)據(jù)文件提供服務(wù)器,其特征在于,所述校驗值計算模塊,具體用于根據(jù)所述多個文件分塊分別計算各個文件分塊的新版本弱校驗值和新版本強校驗值。
16.一種客戶端,其特征在于,包括:
文件解析模塊,用于獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件,以及從所述配置文件中解析出新版本數(shù)據(jù)文件對應(yīng)的文件名稱和下載地址、所述新版數(shù)據(jù)文件中多個文件分塊的新版本分塊校驗值;
窗口數(shù)據(jù)選擇模塊,用于根據(jù)所述文件名稱獲取當(dāng)前版本數(shù)據(jù)文件,以及使用與所述文件分塊的分塊大小相等的滑動窗口從所述當(dāng)前版本數(shù)據(jù)文件中選擇出所述滑動窗口滑動至不同位置所對應(yīng)的窗口數(shù)據(jù)塊;
校驗值判斷模塊,用于根據(jù)選擇出的所述窗口數(shù)據(jù)塊計算所述窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗值,以及判斷所述當(dāng)前版本分塊校驗值是否與所述新版本分塊校驗值相同;
校驗結(jié)果處理模塊,用于若所述當(dāng)前版本分塊校驗值與所述新版本分塊校驗值相同,獲取相同校驗值對應(yīng)的窗口數(shù)據(jù)塊相對于所述當(dāng)前版本數(shù)據(jù)文件的偏移量,并繼續(xù)判斷所述滑動窗口滑動至下一個位置時對應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗值是否與所述新版本分塊校驗值相同;若所述當(dāng)前版本分塊校驗值與所述新版本分塊校驗值不相同,繼續(xù)判斷所述滑動窗口滑動至下一個位置時對應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗值是否與所述新版本分塊校驗值相同;
數(shù)據(jù)塊合并模塊,用于當(dāng)所述滑動窗口滑動至最后一個位置對應(yīng)的窗口數(shù)據(jù)塊的當(dāng)前版本分塊校驗值判斷完畢之后,創(chuàng)建新版本數(shù)據(jù)文件對應(yīng)的臨時文件,對于所述臨時文件中匹配到所述相同校驗值的分塊,則根據(jù)所述偏移量從所述當(dāng)前版本數(shù)據(jù)文件獲取到重復(fù)數(shù)據(jù)塊,對于所述臨時文件中沒有匹配到所述相同校驗值的分塊,根據(jù)所述下載地址從所述數(shù)據(jù)文件提供服務(wù)器下載到差異數(shù)據(jù)塊,將所述臨時文件中的差異數(shù)據(jù)塊和重復(fù)數(shù)據(jù)塊進行合并,得到增量更新數(shù)據(jù)文件。
17.根據(jù)權(quán)利要求16所述的客戶端,其特征在于,所述客戶端還包括:版本號分析模塊,用于所述窗口數(shù)據(jù)選擇模塊根據(jù)所述文件名稱獲取當(dāng)前版本數(shù)據(jù)文件之后,從所述配置文件中解析出所述新版本數(shù)據(jù)文件對應(yīng)的新版本號;獲取所述當(dāng)前版本數(shù)據(jù)文件對應(yīng)的當(dāng)前版本號;對比所述新版本號和所述當(dāng)前版本號,若所述新版本號和所述當(dāng)前版本號不相同,觸發(fā)執(zhí)行所述窗口數(shù)據(jù)選擇模塊。
18.根據(jù)權(quán)利要求16所述的客戶端,其特征在于,所述客戶端還包括:下載策略應(yīng)用模塊,用于所述文件解析模塊獲取數(shù)據(jù)文件提供服務(wù)器提供的配置文件之后,從所述配置文件中解析出所述新版本數(shù)據(jù)文件對應(yīng)的下載策略,所述下載策略包括:所述新版本數(shù)據(jù)文件需要采用強制更新還是可選更新;若所述下載策略為強制更新,觸發(fā)執(zhí)行所述窗口數(shù)據(jù)選擇模塊;若所述下載策略為可選更新,發(fā)送更新提示消息,根據(jù)用戶發(fā)送的更新指示確定是否繼續(xù)執(zhí)行所述窗口數(shù)據(jù)選擇模塊。
19.根據(jù)權(quán)利要求16所述的客戶端,其特征在于,所述數(shù)據(jù)塊合并模塊,具體用于從所述配置文件中解析出分塊剩余數(shù)據(jù),所述分塊剩余數(shù)據(jù)包括:所述新版本數(shù)據(jù)文件中L%size所得的余數(shù)對應(yīng)的文件分塊,L表示所述新版本數(shù)據(jù)文件的文件長度,size表示分塊大小,%表示L對size進行取模;將所述差異校驗值對應(yīng)的差異數(shù)據(jù)塊、所述相同校驗值對應(yīng)的重復(fù)數(shù)據(jù)塊、所述分塊剩余數(shù)據(jù)進行合并,得到增量更新數(shù)據(jù)文件。
20.根據(jù)權(quán)利要求16至19中任一項所述的客戶端,其特征在于,所述新版本分塊校驗值包括:新版本弱校驗值和新版本強校驗值;
所述校驗值判斷模塊,包括:
弱校驗處理模塊,用于根據(jù)所述窗口數(shù)據(jù)塊計算所述窗口數(shù)據(jù)塊的當(dāng)前版本弱校驗值,以及判斷所述當(dāng)前版本弱校驗值是否存在于所述新版本弱校驗值對應(yīng)的哈希過濾表中;若所述當(dāng)前版本弱校驗值不存在于所述哈希過濾表中,確定所述當(dāng)前版本分塊校驗值與所述新版本分塊校驗值不相同;
強校驗處理模塊,用于若所述當(dāng)前版本弱校驗值存在于所述哈希過濾表中,根據(jù)所述窗口數(shù)據(jù)塊計算所述窗口數(shù)據(jù)塊的當(dāng)前版本強校驗值,判斷所述當(dāng)前版本強校驗值是否與所述新版本強校驗值相等,若所述當(dāng)前版本強校驗值與所述新版本強校驗值相等,確定所述當(dāng)前版本分塊校驗值與所述新版本分塊校驗值相同,若所述當(dāng)前版本強校驗值與所述新版本強校驗值不相等,確定所述當(dāng)前版本分塊校驗值與所述新版本分塊校驗值不相同。
21.一種數(shù)據(jù)文件的增量更新系統(tǒng),其特征在于,包括:如權(quán)利要求11至15中任一項所述的數(shù)據(jù)文件提供服務(wù)器和如權(quán)利要求16至20中任一項所述的客戶端。