CN102236688A - 一种大型软件边下载边运行应用中的压缩方法 - Google Patents
一种大型软件边下载边运行应用中的压缩方法 Download PDFInfo
- Publication number
- CN102236688A CN102236688A CN2010101735134A CN201010173513A CN102236688A CN 102236688 A CN102236688 A CN 102236688A CN 2010101735134 A CN2010101735134 A CN 2010101735134A CN 201010173513 A CN201010173513 A CN 201010173513A CN 102236688 A CN102236688 A CN 102236688A
- Authority
- CN
- China
- Prior art keywords
- file
- division piece
- file division
- character string
- compression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
一种大型软件边下载边运行应用中的压缩方法,在压缩文件头部中增加文件数据流的文件分割块索引结构,以更小的文件页单元将文件数据流分割为块,其中一个关键之处是分割的位置不能位于重复的字符串中间;将所有文件的内容顺序排列为一个数据流,进行统一的压缩打包,这样就可以得到最好的压缩效果,在文件分割块索引结构,保存每个文件分割块压缩前后的长度,有了这些长度信息,就可以单独地解压缩每一个分割文件块,其技术关键是每一个文件分割块的分割位置不能位于重复的字符串中间;通过增加一个文件分割块索引结构的技术措施,就很巧妙地解决了好的压缩效果与小的文件单元解压缩不能兼得的技术问题。
Description
所属技术领域
本发明涉及一种大型软件边下载边运行应用中的压缩方法,属于计算机压缩领域。
背景技术
随着互联网的迅速发展,通过互联网下载软件变得很普及。但即使是在今天,通过互联网下载几百兆甚至几千兆字节的大型软件还是非常费时的。网络游戏这些年发展非常迅速,带动了网络下载的迅速发展。
网络游戏通常都是大型软件,一般都为几百兆甚至几千兆字节。如果利用宽带下载800兆字节的游戏,用户约需要花费1-2小时。用户下载完游戏以后,通常都还需要将下载后的文件解压缩,安装,然后才能运行。游戏软件是一种娱乐性的产品,用户总是在期待最新鲜的产品,这样一个庞大的游戏花费很多时间下载,安装后,往往只运行了很少一部分,就被搁置一边,或者删除掉,然后又开始下一个新游戏的下载,安装循环。
现有的下载工具只是帮助用户将软件下载。如果改进现有的下载工具,使得游戏可以边下载边运行,就能够大幅缩短用户的等待时间,简化用户的后续工作,那么无疑是很有意义的。本发明人于2009年11月26日申请了以下中国专利:
申请号:200910246644.8
发明名称:一种大型软件边下载边运行的方法
该发明展示了一种使得游戏可以边下载边运行的有效方法,这种方法类似流媒体的即点即播,让游戏可以即点即运行,这种方法的应用范围很广,包括很多改进后的应用,比如一种改进的例子就是对使用者进行帐号密码管理,只有授权的用户才可以玩某些游戏,同时下载后的游戏文件,游戏下载后的运行过程中的文件可以进行加密和特殊处理,使得只有授权的用户才可以打开,使用和拷贝这些文件,这种改进方法可以应用于单机版游戏的网络发行业务,即应用于收费软件和收费游戏的网络分发,只有授权用户才可以进行相应的操作,比如用户支付一定费用后,可以租用软件和游戏。这种使得游戏可以边下载边运行的应用目前存在以下不足之处:为了实现游戏可以更快地运行,只会下载游戏运行过程所需要的部分文件,甚至文件的很小一部分内容,这样的很小一部分内容无法进行有效的压缩处理,因而不能有效节约带宽,国内目前带宽条件有限,而且由于经济等诸多因素的影响,一下子要大幅提高带宽条件不现实;在当前的主流带宽条件下,游戏边下载边运行还是会产生卡的情况,影响用户的体验。
以往用户需要下载游戏的所有文件,这样所有文件就会进行压缩打包,现有的压缩技术有这样的特点,即文件越大,压缩效果越好,因而所有文件进行压缩打包的效果是比较好的。游戏边下载边运行时,下载的是文件的部分内容,长度很短,比如1024字节,相比游戏的几百兆甚至几千兆字节大小,这就小得多,按现有的压缩技术,这样短的内容压缩的效果很差,如果按整个游戏大小的几百兆甚至几千兆字节大小压缩,只能单独提取其中的某个文件,而如果只是提取文件的部分内容就不可以了,游戏的许多文件大于10兆,有时只需要其中的1k数据的话,也要下载整个10兆,否则无法正确解压缩,但是这样的话,游戏边下载边运行的应用就变得没有任何意思了。既要达到好的压缩效果,又可以按照小的文件单元解压缩,现有的压缩技术无法解决这样的技术矛盾。如果能够既可以下载文件的很小部分内容,同时下载很小一部分内容也可以达到所有游戏文件一起压缩的效果,那么对游戏边下载边运行应用的提升将会是非常巨大的,将会极大地推进该技术的普及应用,因为所有游戏文件一起压缩能缩小1倍以上体积的话并不难做到,而这相当于将网络速度提高了1倍以上,而网络速度这一瓶颈不是那么容易提升的,而且缩小1倍还可以带来巨大的带宽和空间节约,其意义是很大的。本发明正是解决了这一技术问题。
发明内容
本发明提出了解决上述问题的技术方案。
本发明解决其技术问题所采用的技术方案是:
我们将现有压缩技术做了改进,在压缩文件头部中增加文件数据流的文件分割块索引结构,以更小的文件页单元将文件数据流分割为块,其中一个关键之处是分割的位置不能位于重复的字符串中间。将所有文件的内容顺序排列为一个数据流,进行统一的压缩打包,这样就可以得到最好的压缩效果,在文件分割块索引结构,保存每个文件分割块压缩前后的长度,有了这些长度信息,就可以单独地解压缩每一个分割文件块,其技术关键是每一个文件分割块的分割位置不能位于重复的字符串中间。通过增加一个文件分割块索引结构的技术措施,就很巧妙地达到了以下目的:既能够获得最好的压缩效果,又可以按照小文件单元解压缩,很好地解决上述的技术问题。
下面结合附图和实施例对本发明进一步说明。
附图说明
图1是压缩文件的结构示意图,可以更好地阐述本发明的精神。
图1中,压缩文件包括2大部分,分别为压缩文件头部和压缩文件内容,通常头部比较小,内容比较大;头部包含了将文件解压缩的所有信息,按照信息不同的属性,又可以分为不同的结构,如文件信息结构,字典结构,标识符结构,文件分割块索引结构等结构。内容包含了压缩文件数据流,即压缩后的文件。
具体实施方式
现在结合上述附图详细介绍本发明的具体实施过程:
在一个示范的文件夹下,包含以下3个文件
Sample1.dat
Sample2.dat
Sample3.dat
为了便于阐述本发明的精神,我们采用字符串作为文件内容,熟悉本技术领域的人员可以理解,文件的内容并不局限于字符串,而可以是任何形式的数据。
Sample1.dat的内容为以下字符串内容:
This is sample
Sample2.dat的内容为以下字符串内容:
This is sampleThis is sample
Sample3.dat的内容为以下字符串内容:
This is sampleThis is sampleThis is sample
我们对以上文件进行打包压缩的主要步骤如下:
1.建立压缩文件头部的文件信息结构
文件序号 | 文件名字长度 | 文件长度 | 文件名字 |
1 | 11 | 14 | Sample1.dat |
2 | 11 | 28 | Sample2.dat |
3 | 11 | 42 | Sample3.dat |
文件信息结构使得可以将压缩内容按照原来的目录和文件名进行解压缩还原。
2.按照文件序号顺序将文件内容合并,这样就得到以下没有压缩前的文件数据流:
This is sampleThis is sampleThis is sampleThis is sampleThis is sampleThis issample
尽管我们将文件内容合并,但是依据文件信息结构中的文件序号和文件长度等信息,我们可以将每个文件的内容提取出来,不会混淆。
3.用字符串比较的方法,找出文件数据流中的重复部分,如上面的数据存在多个This issample,则建立压缩文件头部的字典结构
字典编号 | 字典名称 |
1 | This is sample |
这样文件数据流中的This is sample就可以用字典编号来表示,如用X1表示,X是标识符,标识符用文件数据流中没有出现的字符,或者出现得最少的字符表示,标识符可以是单个或者多个字符,标识符后面用一个特定长度的数字表示字典编号(字典编号数字的长度是能够表达所有编号的最小长度,这一参数保存于压缩文件的头部),在本例,只需要1位数字就可以表示所有的字典编号。1表示字典编号为1,这样上面的文件数据流就可以表示为:
X1X1X1X1X1X1
节省了很多空间,因为重复的This is sample只需要在字典中保存1次,在数据流中只用2个字符代表原来的11个字符。重复的This is sample我们称为重复字符串,其他为一般字符串。
在压缩文件头部需要建立标识符结构,如下:
字符 | 说明 |
X | 字典标识符,其后面的固定位数的数字(在本例中,1位数字就足够了)代表字典编号。当数据流中本来就存在X时,可以用X0代表X,因为0是不用的编号。 |
应该需要注意的是,上面的说明部分是为了更好地阐述本发明,在实际的压缩文件中是没有的。
4.对文件数据流进行分割,在压缩文件头部建立文件分割块索引结构。我们发现了如下规律,只要分割的位置不在重复的字符串中间,则每个分割部分都可以被单独地解压缩,比如,在本例中,我们将文件数据流分为6部分,数据流包含的文件分割块索引结构如下:
文件分割块顺序编号 | 压缩前长度 | 压缩后长度 |
1 | 14 | 2 |
2 | 14 | 2 |
3 | 14 | 2 |
4 | 14 | 2 |
5 | 14 | 2 |
6 | 14 | 2 |
需要注意的是,文件分割块索引结构的文件分割块并一定是长度固定的,而是按照以下原则分割,即文件分割块的分割不会跨越一个完整的重复字符串,即每个重复字符串都会在一个文件分割块里边,为了满足这一分割原则,文件分割块的长度会存在差异。
分割后的数据流在压缩前后如下:
分割块编号 | 1 | 2 | 3 | 4 | 5 | 6 |
压缩前 | This issample | This issample | This issample | This issample | This issample | This issample |
压缩后 | X1 | X1 | X1 | X1 | X1 | X1 |
这样依据文件信息部分的文件长度,文件分割块索引结构的压缩前后长度,字典结构和标识符结构,我们可以解压缩其中任何一个分割部分,比如分割块3,其压缩前的起点位置位于数据流的第28个字符的后面,因为其前面的1,2分割块的累加长度为28,依据文件信息得知,数据流的第28个字符刚好是文件Sample2.dat的第14个字符,分割块3的压缩后的起点位置位于压缩后的数据流的第4个字符的后面,因为其前面的1,2分割块的压缩后长度累加为4,这样就找到了2分割块压缩后的表示字符串X1,将其解压缩后就得到This is sample,其所属的文件和位置都是清楚的。这是本发明的核心,这一核心的精粹是:对文件进行分割,而且分割的位置不在重复的字符串中间。在本例中,如果分割的位置在重复的字符串This issample的中间,则对这一个This is sample所在的2个分割块中的任何一个单独解压缩都不能正确地还原压缩前的数据流。这样就实现了以下目标:将文件数据流作为一个整体进行压缩,得到最好的压缩效果;可以从压缩后的文件中取出很短的文件分割块并正确解压缩。我们所希望的效果就实现了。
5.前面的实施例中,重复的字符串保存在压缩文件头部的字典结构,当数据流很大时,字典结构也会很大。字典结构位于压缩文件头部,在实际下载应用中,头部需要先下载,以获得整个压缩文件的指引,因而希望能够减少头部的大小。因此我们采用了新的实施方式,其字典结构如下:
字典编号 | 所在分割块编号 |
1 | 3 |
标识符结构如下:
字符 | 说明 |
X | 字典标识符,其后面的固定位数的数字(在本例中,1位数字就足够了,在压缩文件头部指定位数)代表字典编号。当数据流中本来就存在X时,可以用X0代表X,因为0是不用的编号。 |
Y | 重复的字符串标识符,其后面的固定位数的数字代表字典编号,紧跟其后的固定位数的数字代表字符串长度,接着跟在后面的是重复的字符串,如Y114This is sample,Y后面的1代表字典编号为1,Y1后面的14代表字符串长度为14,14后面的14个字符串This issample就代表了字典编号为1的长度为14的重复字符串。当数据流中本来就存在Y时,可以用Y0代表Y,因为0是不用的编号。 |
分割后数据流在压缩前后如下:
分割块编号 | 1 | 2 | 3 | 4 | 5 | 6 |
压缩前 | This issample | This issample | This issample | This issample | This issample | This issample |
压缩后 | X1 | X1 | Y114Thisis sample | X1 | X1 | X1 |
这样字典结构不保存重复的字符串,而是指出了在哪个分割块中保存。在上面例子中,如果下载了分割块1,则还不能将分割块1解压缩,因为分割块1包含了字典编号1的字符串,而在字典结构中查得,字典编号1对应的字符串位于分割块3,还需要下载分割块3,在分割块3中就可以找到字典编号1对应的字符串。
上面结合附图和实施例描述了发明的方法以及具体实施例,熟悉本技术领域的人员可以理解,本发明可以有许多不同的实施方式。因此,应该理解,本发明并不局限于所描述的优选实施例,正如随附权利要求书所给出的本发明的精神实质,本发明包括其专利保护范围内所进行的各种更换、变动和修改。
Claims (5)
1.一种大型软件边下载边运行应用中的压缩方法,它生成的压缩文件所包含的主要组成部分为头部和内容,头部包含字典结构和文件分割块索引结构,内容包含一般字符串和重复字符串,其主要特征就是文件分割块索引结构是以文件分割块作为压缩文件的分割单位,而不是现有的压缩方法的以单个文件作为分割单位;其核心特征是文件分割块的分割不会跨越一个完整的重复字符串,即每个重复字符串都会包含在一个文件分割块里边;这样的优点就是压缩时可以按整个文件数据流进行压缩处理,得到最好的压缩效果,而在使用时,可以正确解压缩提取很小的文件分割块,而不是单个文件,减少了文件下载量。
2.根据权利要求1所述的方法,所述的字典结构的优先实施例中,其每个字典编码并不包括源串,而是指向所包含该源串的文件分割块,这样压缩文件头部的大小可以减少,减少了下载量。
3.根据权利要求1所述的方法,所述的文件分割块索引结构包含文件压缩前后的长度信息,这样使得可以正确解压缩提取很小的文件分割块,而不是单个文件,减少了文件下载量。
4.根据权利要求1所述的方法,所述的文件分割块索引结构的文件分割块比单个大文件要小很多,以更小的文件分割块而非单个文件来分割压缩文件是本发明的核心特征。
5.根据权利要求1所述的方法,所述的文件分割块索引结构的文件分割块并一定是长度固定的,而是按照以下原则分割,即文件分割块的分割不会跨越一个完整的重复字符串,即每个重复字符串都会在一个文件分割块里边。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101735134A CN102236688A (zh) | 2010-04-24 | 2010-04-24 | 一种大型软件边下载边运行应用中的压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101735134A CN102236688A (zh) | 2010-04-24 | 2010-04-24 | 一种大型软件边下载边运行应用中的压缩方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102236688A true CN102236688A (zh) | 2011-11-09 |
Family
ID=44887343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101735134A Pending CN102236688A (zh) | 2010-04-24 | 2010-04-24 | 一种大型软件边下载边运行应用中的压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102236688A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399763A (zh) * | 2013-07-23 | 2013-11-20 | 北京昆腾微电子有限公司 | 下载用于芯片的程序文件的方法和装置 |
WO2015007234A1 (en) * | 2013-07-19 | 2015-01-22 | Tencent Technology (Shenzhen) Company Limited | Method and device for operating encrypted files |
CN106775469A (zh) * | 2016-12-07 | 2017-05-31 | 哈尔滨点网科技发展有限公司 | 一种医用胶片存储方法 |
CN111414339A (zh) * | 2020-03-13 | 2020-07-14 | 浙江大华技术股份有限公司 | 一种文件的处理方法、系统、装置、设备及介质 |
-
2010
- 2010-04-24 CN CN2010101735134A patent/CN102236688A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015007234A1 (en) * | 2013-07-19 | 2015-01-22 | Tencent Technology (Shenzhen) Company Limited | Method and device for operating encrypted files |
CN103399763A (zh) * | 2013-07-23 | 2013-11-20 | 北京昆腾微电子有限公司 | 下载用于芯片的程序文件的方法和装置 |
CN103399763B (zh) * | 2013-07-23 | 2016-12-28 | 北京昆腾微电子有限公司 | 下载用于芯片的程序文件的方法和装置 |
CN106775469A (zh) * | 2016-12-07 | 2017-05-31 | 哈尔滨点网科技发展有限公司 | 一种医用胶片存储方法 |
CN111414339A (zh) * | 2020-03-13 | 2020-07-14 | 浙江大华技术股份有限公司 | 一种文件的处理方法、系统、装置、设备及介质 |
CN111414339B (zh) * | 2020-03-13 | 2023-04-25 | 浙江大华技术股份有限公司 | 一种文件的处理方法、系统、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101783788B (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
US7703088B2 (en) | Compressing “warm” code in a dynamic binary translation environment | |
CN102831001B (zh) | 软件升级包的制作方法及装置、程序的升级方法及设备 | |
CN104753540B (zh) | 数据压缩方法、数据解压方法和装置 | |
CN104185845A (zh) | 用于提供网页的二进制表示的系统和方法 | |
CN103336690A (zh) | 基于html5的文字元素绘制方法及装置 | |
CN101799800B (zh) | 一种带超链接的电子书,电子报纸和电子杂志的编码方法 | |
CN107870928A (zh) | 文件读取方法和装置 | |
CN105512182A (zh) | 语音控制方法及智能电视 | |
CN105975311A (zh) | 一种应用启动方法及装置 | |
CN108256587A (zh) | 一种字符串相似度的确定方法、装置、计算机及存储介质 | |
CN102236688A (zh) | 一种大型软件边下载边运行应用中的压缩方法 | |
KR20140051310A (ko) | 폰트 파일을 다운로드하는 방법 및 시스템 | |
CN105046159A (zh) | 基于修改标识符的oox文本文档隐私信息检测方法 | |
CN102185611A (zh) | 数据的有效提取和压缩 | |
CN103593277A (zh) | 日志处理方法及系统 | |
CN103902275B (zh) | 一种实现应用的语言版本切换的方法和系统 | |
CN102473175B (zh) | Xml数据的压缩 | |
CN104133883B (zh) | 电话号码归属地数据压缩方法 | |
CN104021121B (zh) | 一种文本数据压缩方法、装置及服务器 | |
CN102932001B (zh) | 运动捕获数据压缩、解压缩方法 | |
US20220199202A1 (en) | Method and apparatus for compressing fastq data through character frequency-based sequence reordering | |
CN104765890A (zh) | 一种快速查找方法和装置 | |
CN115904167A (zh) | 网页图标的处理方法、装置、存储介质及电子设备 | |
CN105204937B (zh) | 内核函数调用方法、装置及操作系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20111109 |