專利名稱:一種大型軟件邊下載邊運(yùn)行應(yīng)用中的壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種大型軟件邊下載邊運(yùn)行應(yīng)用中的壓縮方法,屬于計(jì)算機(jī)壓縮領(lǐng)域。
背景技術(shù):
隨著互聯(lián)網(wǎng)的迅速發(fā)展,通過(guò)互聯(lián)網(wǎng)下載軟件變得很普及。但即使是在今天,通過(guò)互聯(lián)網(wǎng)下載幾百兆甚至幾千兆字節(jié)的大型軟件還是非常費(fèi)時(shí)的。網(wǎng)絡(luò)游戲這些年發(fā)展非常迅速,帶動(dòng)了網(wǎng)絡(luò)下載的迅速發(fā)展。網(wǎng)絡(luò)游戲通常都是大型軟件,一般都為幾百兆甚至幾千兆字節(jié)。如果利用寬帶下載800兆字節(jié)的游戲,用戶約需要花費(fèi)1-2小時(shí)。用戶下載完游戲以后,通常都還需要將下載后的文件解壓縮,安裝,然后才能運(yùn)行。游戲軟件是一種娛樂(lè)性的產(chǎn)品,用戶總是在期待最新鮮的產(chǎn)品,這樣一個(gè)龐大的游戲花費(fèi)很多時(shí)間下載,安裝后,往往只運(yùn)行了很少一部分,就被擱置一邊,或者刪除掉,然后又開(kāi)始下一個(gè)新游戲的下載,安裝循環(huán)。現(xiàn)有的下載工具只是幫助用戶將軟件下載。如果改進(jìn)現(xiàn)有的下載工具,使得游戲可以邊下載邊運(yùn)行,就能夠大幅縮短用戶的等待時(shí)間,簡(jiǎn)化用戶的后續(xù)工作,那么無(wú)疑是很有意義的。本發(fā)明人于2009年11月沈日申請(qǐng)了以下中國(guó)專利申請(qǐng)?zhí)?00910對(duì)6644· 8發(fā)明名稱一種大型軟件邊下載邊運(yùn)行的方法該發(fā)明展示了一種使得游戲可以邊下載邊運(yùn)行的有效方法,這種方法類似流媒體的即點(diǎn)即播,讓游戲可以即點(diǎn)即運(yùn)行,這種方法的應(yīng)用范圍很廣,包括很多改進(jìn)后的應(yīng)用, 比如一種改進(jìn)的例子就是對(duì)使用者進(jìn)行帳號(hào)密碼管理,只有授權(quán)的用戶才可以玩某些游戲,同時(shí)下載后的游戲文件,游戲下載后的運(yùn)行過(guò)程中的文件可以進(jìn)行加密和特殊處理,使得只有授權(quán)的用戶才可以打開(kāi),使用和拷貝這些文件,這種改進(jìn)方法可以應(yīng)用于單機(jī)版游戲的網(wǎng)絡(luò)發(fā)行業(yè)務(wù),即應(yīng)用于收費(fèi)軟件和收費(fèi)游戲的網(wǎng)絡(luò)分發(fā),只有授權(quán)用戶才可以進(jìn)行相應(yīng)的操作,比如用戶支付一定費(fèi)用后,可以租用軟件和游戲。這種使得游戲可以邊下載邊運(yùn)行的應(yīng)用目前存在以下不足之處為了實(shí)現(xiàn)游戲可以更快地運(yùn)行,只會(huì)下載游戲運(yùn)行過(guò)程所需要的部分文件,甚至文件的很小一部分內(nèi)容,這樣的很小一部分內(nèi)容無(wú)法進(jìn)行有效的壓縮處理,因而不能有效節(jié)約帶寬,國(guó)內(nèi)目前帶寬條件有限,而且由于經(jīng)濟(jì)等諸多因素的影響,一下子要大幅提高帶寬條件不現(xiàn)實(shí);在當(dāng)前的主流帶寬條件下,游戲邊下載邊運(yùn)行還是會(huì)產(chǎn)生卡的情況,影響用戶的體驗(yàn)。以往用戶需要下載游戲的所有文件,這樣所有文件就會(huì)進(jìn)行壓縮打包,現(xiàn)有的壓縮技術(shù)有這樣的特點(diǎn),即文件越大,壓縮效果越好,因而所有文件進(jìn)行壓縮打包的效果是比較好的。游戲邊下載邊運(yùn)行時(shí),下載的是文件的部分內(nèi)容,長(zhǎng)度很短,比如IOM字節(jié),相比游戲的幾百兆甚至幾千兆字節(jié)大小,這就小得多,按現(xiàn)有的壓縮技術(shù),這樣短的內(nèi)容壓縮的效果很差,如果按整個(gè)游戲大小的幾百兆甚至幾千兆字節(jié)大小壓縮,只能單獨(dú)提取其中的某個(gè)文件,而如果只是提取文件的部分內(nèi)容就不可以了,游戲的許多文件大于10兆,有時(shí)只需要其中的Ik數(shù)據(jù)的話,也要下載整個(gè)10兆,否則無(wú)法正確解壓縮,但是這樣的話,游戲邊下載邊運(yùn)行的應(yīng)用就變得沒(méi)有任何意思了。既要達(dá)到好的壓縮效果,又可以按照小的文件單元解壓縮,現(xiàn)有的壓縮技術(shù)無(wú)法解決這樣的技術(shù)矛盾。如果能夠既可以下載文件的很小部分內(nèi)容,同時(shí)下載很小一部分內(nèi)容也可以達(dá)到所有游戲文件一起壓縮的效果,那么對(duì)游戲邊下載邊運(yùn)行應(yīng)用的提升將會(huì)是非常巨大的,將會(huì)極大地推進(jìn)該技術(shù)的普及應(yīng)用,因?yàn)樗杏螒蛭募黄饓嚎s能縮小1倍以上體積的話并不難做到,而這相當(dāng)于將網(wǎng)絡(luò)速度提高了 1倍以上,而網(wǎng)絡(luò)速度這一瓶頸不是那么容易提升的,而且縮小1倍還可以帶來(lái)巨大的帶寬和空間節(jié)約,其意義是很大的。本發(fā)明正是解決了這一技術(shù)問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明提出了解決上述問(wèn)題的技術(shù)方案。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是我們將現(xiàn)有壓縮技術(shù)做了改進(jìn),在壓縮文件頭部中增加文件數(shù)據(jù)流的文件分割塊索引結(jié)構(gòu),以更小的文件頁(yè)單元將文件數(shù)據(jù)流分割為塊,其中一個(gè)關(guān)鍵之處是分割的位置不能位于重復(fù)的字符串中間。將所有文件的內(nèi)容順序排列為一個(gè)數(shù)據(jù)流,進(jìn)行統(tǒng)一的壓縮打包,這樣就可以得到最好的壓縮效果,在文件分割塊索引結(jié)構(gòu),保存每個(gè)文件分割塊壓縮前后的長(zhǎng)度,有了這些長(zhǎng)度信息,就可以單獨(dú)地解壓縮每一個(gè)分割文件塊,其技術(shù)關(guān)鍵是每一個(gè)文件分割塊的分割位置不能位于重復(fù)的字符串中間。通過(guò)增加一個(gè)文件分割塊索引結(jié)構(gòu)的技術(shù)措施,就很巧妙地達(dá)到了以下目的既能夠獲得最好的壓縮效果,又可以按照小文件單元解壓縮,很好地解決上述的技術(shù)問(wèn)題。下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。
圖1是壓縮文件的結(jié)構(gòu)示意圖,可以更好地闡述本發(fā)明的精神。圖1中,壓縮文件包括2大部分,分別為壓縮文件頭部和壓縮文件內(nèi)容,通常頭部比較小,內(nèi)容比較大;頭部包含了將文件解壓縮的所有信息,按照信息不同的屬性,又可以分為不同的結(jié)構(gòu),如文件信息結(jié)構(gòu),字典結(jié)構(gòu),標(biāo)識(shí)符結(jié)構(gòu),文件分割塊索引結(jié)構(gòu)等結(jié)構(gòu)。內(nèi)容包含了壓縮文件數(shù)據(jù)流,即壓縮后的文件。
具體實(shí)施例方式現(xiàn)在結(jié)合上述附圖詳細(xì)介紹本發(fā)明的具體實(shí)施過(guò)程在一個(gè)示范的文件夾下,包含以下3個(gè)文件SampleLdatSample2.datSample3.dat為了便于闡述本發(fā)明的精神,我們采用字符串作為文件內(nèi)容,熟悉本技術(shù)領(lǐng)域的人員可以理解,文件的內(nèi)容并不局限于字符串,而可以是任何形式的數(shù)據(jù)。Samplel. dat的內(nèi)容為以下字符串內(nèi)容This is sample
Sample2. dat的內(nèi)容為以下字符串內(nèi)容This is sampIeThis is sampleSample3. dat的內(nèi)容為以下字符串內(nèi)容This is sampIeThis is sampIeThis is sample我們對(duì)以上文件進(jìn)行打包壓縮的主要步驟如下1.建立壓縮文件頭部的文件信息結(jié)構(gòu)
文件序號(hào)文件名字長(zhǎng)度文件長(zhǎng)度文件名字11114Samplel. dat21128Sample2. dat31142Sample3. dat文件信息結(jié)構(gòu)使得可以將壓縮內(nèi)容按照原來(lái)的目錄和文件名進(jìn)行解壓縮還原。2.按照文件序號(hào)順序?qū)⑽募?nèi)容合并,這樣就得到以下沒(méi)有壓縮前的文件數(shù)據(jù)流This is sampIeThis is sampleThis is sampleThis is sampleThis is sampIeThis issample盡管我們將文件內(nèi)容合并,但是依據(jù)文件信息結(jié)構(gòu)中的文件序號(hào)和文件長(zhǎng)度等信息,我們可以將每個(gè)文件的內(nèi)容提取出來(lái),不會(huì)混淆。3.用字符串比較的方法,找出文件數(shù)據(jù)流中的重復(fù)部分,如上面的數(shù)據(jù)存在多個(gè) This issample,則建立壓縮文件頭部的字典結(jié)構(gòu)
字典編號(hào)字典名稱1This is sample這樣文件數(shù)據(jù)流中的This is sample就可以用字典編號(hào)來(lái)表示,如用Xl表示,X 是標(biāo)識(shí)符,標(biāo)識(shí)符用文件數(shù)據(jù)流中沒(méi)有出現(xiàn)的字符,或者出現(xiàn)得最少的字符表示,標(biāo)識(shí)符可以是單個(gè)或者多個(gè)字符,標(biāo)識(shí)符后面用一個(gè)特定長(zhǎng)度的數(shù)字表示字典編號(hào)(字典編號(hào)數(shù)字的長(zhǎng)度是能夠表達(dá)所有編號(hào)的最小長(zhǎng)度,這一參數(shù)保存于壓縮文件的頭部),在本例,只需要1位數(shù)字就可以表示所有的字典編號(hào)。1表示字典編號(hào)為1,這樣上面的文件數(shù)據(jù)流就可以表示為X1X1X1X1X1X1節(jié)省了很多空間,因?yàn)橹貜?fù)的This is sample只需要在字典中保存1次,在數(shù)據(jù)流中只用2個(gè)字符代表原來(lái)的11個(gè)字符。重復(fù)的This is sample我們稱為重復(fù)字符串, 其他為一般字符串。在壓縮文件頭部需要建立標(biāo)識(shí)符結(jié)構(gòu),如下
權(quán)利要求
1.一種大型軟件邊下載邊運(yùn)行應(yīng)用中的壓縮方法,它生成的壓縮文件所包含的主要組成部分為頭部和內(nèi)容,頭部包含字典結(jié)構(gòu)和文件分割塊索引結(jié)構(gòu),內(nèi)容包含一般字符串和重復(fù)字符串,其主要特征就是文件分割塊索引結(jié)構(gòu)是以文件分割塊作為壓縮文件的分割單位,而不是現(xiàn)有的壓縮方法的以單個(gè)文件作為分割單位;其核心特征是文件分割塊的分割不會(huì)跨越一個(gè)完整的重復(fù)字符串,即每個(gè)重復(fù)字符串都會(huì)包含在一個(gè)文件分割塊里邊;這樣的優(yōu)點(diǎn)就是壓縮時(shí)可以按整個(gè)文件數(shù)據(jù)流進(jìn)行壓縮處理,得到最好的壓縮效果,而在使用時(shí),可以正確解壓縮提取很小的文件分割塊,而不是單個(gè)文件,減少了文件下載量。
2.根據(jù)權(quán)利要求1所述的方法,所述的字典結(jié)構(gòu)的優(yōu)先實(shí)施例中,其每個(gè)字典編碼并不包括源串,而是指向所包含該源串的文件分割塊,這樣壓縮文件頭部的大小可以減少,減少了下載量。
3.根據(jù)權(quán)利要求1所述的方法,所述的文件分割塊索引結(jié)構(gòu)包含文件壓縮前后的長(zhǎng)度信息,這樣使得可以正確解壓縮提取很小的文件分割塊,而不是單個(gè)文件,減少了文件下載量。
4.根據(jù)權(quán)利要求1所述的方法,所述的文件分割塊索引結(jié)構(gòu)的文件分割塊比單個(gè)大文件要小很多,以更小的文件分割塊而非單個(gè)文件來(lái)分割壓縮文件是本發(fā)明的核心特征。
5.根據(jù)權(quán)利要求1所述的方法,所述的文件分割塊索引結(jié)構(gòu)的文件分割塊并一定是長(zhǎng)度固定的,而是按照以下原則分割,即文件分割塊的分割不會(huì)跨越一個(gè)完整的重復(fù)字符串, 即每個(gè)重復(fù)字符串都會(huì)在一個(gè)文件分割塊里邊。
全文摘要
一種大型軟件邊下載邊運(yùn)行應(yīng)用中的壓縮方法,在壓縮文件頭部中增加文件數(shù)據(jù)流的文件分割塊索引結(jié)構(gòu),以更小的文件頁(yè)單元將文件數(shù)據(jù)流分割為塊,其中一個(gè)關(guān)鍵之處是分割的位置不能位于重復(fù)的字符串中間;將所有文件的內(nèi)容順序排列為一個(gè)數(shù)據(jù)流,進(jìn)行統(tǒng)一的壓縮打包,這樣就可以得到最好的壓縮效果,在文件分割塊索引結(jié)構(gòu),保存每個(gè)文件分割塊壓縮前后的長(zhǎng)度,有了這些長(zhǎng)度信息,就可以單獨(dú)地解壓縮每一個(gè)分割文件塊,其技術(shù)關(guān)鍵是每一個(gè)文件分割塊的分割位置不能位于重復(fù)的字符串中間;通過(guò)增加一個(gè)文件分割塊索引結(jié)構(gòu)的技術(shù)措施,就很巧妙地解決了好的壓縮效果與小的文件單元解壓縮不能兼得的技術(shù)問(wèn)題。
文檔編號(hào)G06F17/30GK102236688SQ20101017351
公開(kāi)日2011年11月9日 申請(qǐng)日期2010年4月24日 優(yōu)先權(quán)日2010年4月24日
發(fā)明者冼劍光 申請(qǐng)人:冼劍光