CN110740123B - 数据压缩方法和基于其的数据传输方法、终端设备和系统 - Google Patents
数据压缩方法和基于其的数据传输方法、终端设备和系统 Download PDFInfo
- Publication number
- CN110740123B CN110740123B CN201910882172.9A CN201910882172A CN110740123B CN 110740123 B CN110740123 B CN 110740123B CN 201910882172 A CN201910882172 A CN 201910882172A CN 110740123 B CN110740123 B CN 110740123B
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- encoding
- compressed
- block
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请实施例提供一种数据压缩方法及基于其的数据传输方法、终端和系统,所述数据压缩方法包括:确定在第一数据块中在其中的当前编码的第一最小可压缩单元之前是否包括所述第一最小可压缩单元;在确定在所述第一数据块中在其中的当前编码的第一最小可压缩单元之前不包括所述第一最小可压缩单元的情况中,确定在第二数据块中是否包括所述第一最小可压缩单元;在确定在所述第二数据块中包括所述第一最小可压缩单元的情况中,以第一编码作为与所述当前编码的第一最小可压缩单元对应的编码,其中,所述第一编码为外部编码,所述外部编码包括相应的最小可压缩单元在所述第二数据块中的位置信息。通过所述数据压缩方法,提高了数据压缩率,改善了用户体验。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据压缩方法和基于其的数据传输方法、终端设备和系统。
背景技术
目前已有的用于压缩数据的压缩算法分为有损压缩和无损压缩。有损压缩的数据解压后内容无法保证和原文件相同,所以一般用于特定领域,虽然数据有损失但不影响使用,多用于音视频等多媒体领域。无损压缩要求将压缩数据解压后,必须和原数据相同,所有领域都可用,但是压缩率不如有损压缩高。无损压缩主要使用字典编码和熵编码技术。当前在压缩软件中,通常会使用字典编码对数据进行压缩。
所述字典编码算法通过使用编码器或者解码器中已经出现过的相应匹配数据信息替换当前数据从而实现压缩功能。这个匹配信息使用称为“长度-距离对”的一对数据进行编码,它等同于“每组长度-距离信息等于特定距离字符位置上的未压缩数据流。编码器和解码器都必须保存一定数量的最近的数据,如最近2KB、4KB或者32KB的数据。保存这些数据的结构叫滑动窗口,所以这种算法有时也称作滑动窗口压缩。编码器需要保存这个数据查找匹配数据,解码器保存这个数据解释编码器所指代的匹配数据。
图1示意示出通过现有技术的字典编码算法进行数据压缩的示意图。如图1中所示,当对待压缩的第一数据块(例如用于升级软件的新老版本差分数据)进行压缩时,以该第一数据块自身作为字典,通过字典编码压缩算法对该数据进行压缩,从而获取数据压缩包。现有的字典编码技术从信息源自身查询内容作为字典数据来源,可以满足一般的压缩场景,但是由于字典数据的查询命中率不高,对数据的压缩率有限。
发明内容
本申请实施例提供了一种数据压缩方法及基于其的数据传输方法、终端和系统,通过根据本申请实施例的技术方案,提高了数据压缩率,节省了数据传输成本,提高了用户体验。
在本申请第一方面,提供一种数据压缩方法,其特征在于,包括:
确定在第一数据块中在其中的当前编码的第一最小可压缩单元之前是否包括所述第一最小可压缩单元;
在确定在所述第一数据块中在其中的当前编码的第一最小可压缩单元之前不包括所述第一最小可压缩单元的情况中,确定在第二数据块中是否包括所述第一最小可压缩单元,其中,所述第二数据块为与所述第一数据块相关的数据块;
在确定在所述第二数据块中包括所述第一最小可压缩单元的情况中,以第一编码作为与所述当前编码的第一最小可压缩单元对应的编码,以获取所述第一数据块的第一压缩数据,其中,所述第一编码为外部编码,所述外部编码包括相应的最小可压缩单元在所述第二数据块中的位置信息。
结合第一方面,在一个可能的实施例中,在确定在所述第二数据块中包括所述第一最小可压缩单元的情况中,以第一编码作为与所述当前编码的第一最小可压缩单元对应的编码包括,在确定在所述第二数据块中包括所述第一最小可压缩单元的情况中,确定在所述第二数据块中是否包括所述第一数据块中的从当前编码的第一最小可压缩单元开始的连续多个最小可压缩单元,在确定在所述第二数据块中包括所述连续多个最小可压缩单元的情况中,以第一编码作为所述连续多个最小可压缩单元的编码,其中,所述第一编码还包括所述连续多个最小可压缩单元的个数。
结合第一方面,在一个可能的实施例中,所述最小可压缩单元为连续两个空格之间的连续字符串。
结合第一方面,在一个可能的实施例中,所述方法还包括,在确定在第一数据块中在其中的当前编码的第一最小可压缩单元之前包括所述第一最小可压缩单元的情况中,以第二编码作为于所述当前编码的第一最小可压缩单元对应的编码,其中,所述第二编码为内部编码,所述内部编码包括相应的最小可压缩单元在所述第一数据块中的位置,其中,所述内部编码与所述外部编码通过预定表示进行区分。
结合第一方面,在一个可能的实施例中,确定在第一数据块中在其中的当前编码的第一最小可压缩单元之前是否包括所述第一最小可压缩单元包括,确定在第一数据块中的在其中的当前编码的第一最小可压缩单元之前的预定数目的最小可压缩单元中是否包括所述第一最小可压缩单元。
结合第一方面,在一个可能的实施例中,所述第一压缩数据中包括第一信息,所述第一信息用于在对所述第一压缩数据解压时获取所述第二数据块。
本申请第二方面提供一种数据解压方法,其特征在于,包括:
确定第一压缩数据中的当前解码的第一编码是内部编码还是外部编码,其中,所述内部编码包括相应的最小可压缩单元在第一数据块中的位置信息,所述外部编码包括相应的最小可压缩单元在第二数据块中的位置信息,其中,所述第一数据块为所述第一压缩数据的原始数据块,所述第二数据块为与所述第一数据块相关的数据块;
在确定所述第一编码是外部编码的情况中,以所述第二数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据。
结合第二方面,在一个可能的实施例中,所述第一压缩数据中包括第一信息,所述第一信息用于在对所述第一压缩数据解压时获取所述第二数据块,其中,在确定所述第一编码是外部编码的情况中,以所述第二数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据包括,在确定所述第一编码是外部编码的情况中,基于所述第一信息获取所述第二数据块,以及,以所述第二数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据。
结合第二方面,在一个可能的实施例中,所述内部编码与所述外部编码通过预定表示进行区分,确定第一压缩数据中当前解码的第一编码是内部编码还是外部编码包括,基于所述特定标识确定第一压缩数据中当前解码的第一编码是内部编码还是外部编码。
结合第二方面,在一个可能的实施例中,所述方法还包括,在确定所述第一编码是内部编码的情况中,以所述第一数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据。
本申请第三方面提供一种数据传输方法,其特征在于,所述方法由服务器端设备执行,包括:
获取第一数据块和第二数据块,其中,所述第二数据块与所述第一数据块相关;
通过如本申请第一方面所述的方法,对所述第一数据块进行数据压缩,以获取第一压缩数据;
将所述第一压缩数据发送给终端设备。
结合第三方面,在一个可能的实施例中,所述第一数据块为软件的新版本安装数据与老版本安装数据的差分数据,所述第二数据块为所述软件的老版本安装数据,所述第一压缩数据为用于在所述终端设备升级所述软件的升级包。
结合第三方面,在一个可能的实施例中,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块。
本申请第四方面提供一种数据传输方法,其特征在于,所述方法由终端设备执行,包括:
从服务器端设备接收第一压缩数据,其中,所述第一压缩数据中包括内部编码和外部编码,其中,所述内部编码包括相应的最小可压缩单元在第一数据块中的位置信息,所述外部编码包括相应的最小可压缩单元在第二数据块中的位置信息,其中,所述第一数据块为所述第一压缩数据的原始数据块,所述第二数据块为与所述第一数据块相关的数据块;
从本地获取所述第二数据块;
通过如本申请第二方面所述的方法,对所述第一压缩数据进行解压,以获取所述第一数据块。
结合第四方面,在一个可能的实施例中,所述第一数据块为软件的新版本安装数据与老版本安装数据的差分数据,所述第二数据块为所述软件的老版本安装数据,所述第一压缩数据为用于在所述终端设备升级所述软件的升级包,所述方法还包括,在获取所述第一数据块之后,基于所述第一数据块和所述第二数据块,获取所述新版本安装数据。
结合第四方面,在一个可能的实施例中,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块,其中,从本地获取所述第二数据块包括,基于所述第一信息从本地获取所述第二数据块。
结合第四方面,在一个可能的实施例中,所述第一信息为以下任一信息:所述第二数据块在所述终端设备中的存储地址、所述第二数据块在所述终端设备中的数据标识。
本申请第五方面提供一种服务器端设备,其特征在于,所述服务器端设备包括:收发模块、存储器,处理器,其中,
所述存储器中存储有程序指令;
所述处理器用于根据所述存储器中存储的程序指令执行以下操作:
获取第一数据块和第二数据块,其中,所述第二数据块与所述第一数据块相关;
通过如本申请第一方面所述的方法,对所述第一数据块进行数据压缩,以获取第一压缩数据;
通过所述收发模块将所述第一压缩数据发送给终端设备。
结合第五方面,在一个可能的实施例中,所述第一数据块为软件的新版本安装数据与老版本安装数据的差分数据,所述第二数据块为所述软件的老版本安装数据,所述第一压缩数据为用于在所述终端设备升级所述软件的升级包。
结合第五方面,在一个可能的实施例中,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块。
本申请第六方面提供一种终端设备,其特征在于,所述终端设备包括:收发模块、存储器,处理器,其中,
所述存储器中存储有程序指令;
所述处理器用于根据所述存储器中存储的程序指令执行以下操作:
通过所述收发模块从服务器端设备接收第一压缩数据,其中,所述第一压缩数据中包括内部编码和外部编码,其中,所述内部编码包括相应的最小可压缩单元在第一数据块中的位置信息,所述外部编码包括相应的最小可压缩单元在第二数据块中的位置信息,其中,所述第一数据块为所述第一压缩数据的原始数据块,所述第二数据块为与所述第一数据块相关的数据块;
从本地获取所述第二数据块;
通过如本申请第二方面所述的方法,对所述第一压缩数据进行解压,以获取所述第一数据块。
结合第六方面,在一个可能的实施例中,所述第一数据块为软件的新版本安装数据与老版本安装数据的差分数据,所述第二数据块为所述软件的老版本安装数据,所述第一压缩数据为用于在所述终端设备升级所述软件的升级包,所述处理器还用于根据所述存储器中存储的程序指令执行以下操作:在获取所述第一数据块之后,基于所述第一数据块和所述第二数据块,获取所述新版本安装数据。
结合第六方面,在一个可能的实施例中,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块,其中,所述处理器还用于根据所述存储器中存储的程序指令执行以下操作:基于所述第一信息从本地获取所述第二数据块。
结合第六方面,在一个可能的实施例中,所述第一信息为以下任一信息:所述第二数据块在所述终端设备中的存储地址、所述第二数据块在所述终端设备中的数据标识。
本申请第七方面提供一种系统,其特征在于,包括如本申请第五方面所述的服务器端设备和如本申请第六方面所述的终端设备。
本申请第八方面提供一种存储程序指令的计算机可读存储介质,其特征在于,所述程序指令当被计算机执行时,使所述计算机执行如本申请第一方面、第二方面、第三方面和第四方面中任一方面所述的方法。
本申请第九方面提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有程序指令,所述处理器在执行所述程序指令时,实现如本申请第一方面、第二方面、第三方面和第四方面中任一方面所述的方法。
附图说明
图1示意示出通过现有技术的字典编码算法进行数据压缩的示意图;
图2示出根据本申请实施例的数据压缩方案的软件升级系统200的示意图;
图3示出根据本申请实施例的一种数据压缩方法的流程图;
图4示出通过字典编码对数据块进行编码的过程示意图;
图5示出了通过字典编码算法对一串英文单词进行压缩的过程示意图;
图6示出了结合外部字典对数据进行压缩的过程示意图;
图7示意示出了与图3所示相对应的数据压缩过程的框图;
图8示出了根据本申请实施例的一种数据解压方法的流程图;
图9示出了根据本申请实施例的一种数据传输方法流程图;
图10示出根据本申请实施例的一种数据传输方法流程图;
图11示出根据本申请实施例的一种服务器端设备1100;
图12示出根据本申请实施例的一种终端设备1200;
图13示出根据本申请实施例的一种系统1300。
具体实施方式
下面将结合附图详细描述本申请实施例的技术方案。
图2示出根据本申请实施例的数据压缩方案的软件升级系统200的示意图。如图1中所示,软件升级系统200中包括服务器端设备21和终端设备22。在将要通过软件的新版本的安装包对终端设备22中的软件(例如APP)进行升级的情况中,在服务器端设备21中,基于所述新版本安装包和老版本安装包获取其差分数据,以该差分数据作为待压缩的第一数据块,以老版本安装包作为第二数据块。以第一数据块自身的数据和第二数据块作为字典,通过根据本申请实施例的压缩算法对第一数据块进行编码,从而获取用于升级的数据压缩包,并将该压缩包发送给终端设备22。在终端设备22中,以本地已经存储的第二数据块(老版本安装包数据)中的数据和从服务器端设备21接收的数据压缩包作为字典,通过根据本申请的解压算法对所述数据压缩包进行解压缩,从而获取该升级压缩包对应的第一数据块(即上述差分数据),之后,终端设备22基于差分数据和老版本安装包,可恢复出新版本安装包,从而可通过该新版本安装包进行软件升级。
可以理解,图2所示内容和上述参考图2的描述仅仅是示意性的,而不用于限制本申请实施例的范围,例如,根据本申请的数据压缩方法不限于用于客户端软件升级的场景中,而可以用于任何计算设备、任何场景中,以用于进行数据压缩。例如,根据本申请的数据压缩方法可用于日志数据的压缩和传输,等等。
本申请实施例中的终端设备还可以表示为用户设备、接入终端、终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、无线通信设备、用户代理或用户装置等。
本申请实施例中的终端设备可以为移动终端设备,也可以为非移动终端设备。移动终端设备可以为蜂窝电话、无绳电话、会话启动协议(session initiation protocol,SIP)电话、智能电话、无线本地环路(wireless local loop,WLL)站、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、无人机设备或物联网、车联网中的终端、中继用户设备、未来5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。非移动终端设备可以为个人计算机(personalcomputer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例对此不作具体限定。
图3示出根据本申请实施例的一种数据压缩方法的流程图,所述方法可包括以下步骤:
步骤301,确定在第一数据块中在其中的当前编码的第一最小可压缩单元之前是否包括所述第一最小可压缩单元;
步骤302,在确定在所述第一数据块中在其中的当前编码的第一最小可压缩单元之前不包括所述第一最小可压缩单元的情况中,确定在第二数据块中是否包括所述第一最小可压缩单元,其中,所述第二数据块为与所述第一数据块相关的数据块;
步骤303,在确定在所述第二数据块中包括所述第一最小可压缩单元的情况中,以第一编码作为与所述当前编码的第一最小可压缩单元对应的编码,以获取所述第一数据块的第一压缩数据,其中,所述第一编码为外部编码,所述外部编码包括相应的最小可压缩单元在所述第二数据块中的位置信息。
如上文中参考图2中服务器端中的压缩数据过程所述,在本申请实施例中,以待压缩数据自身和与其相关的外部数据共同作为字典进行对数据的编码,从而压缩数据。其中,基于数据自身对该数据编码的方式可参考现有技术中的字典编码算法,因此,在详细描述图3所示的方法步骤之前,在此先对现有技术中的字典编码算法进行简单介绍。
图4示意示出通过字典编码对数据块进行编码的过程。图4中示出的数据块为“ABABCBABABCAD”,可以理解,在图4中以字母为单位进行对该数据块的编码(压缩)仅是示意性的,在实际场景中,可基于数据块中适于编码的最小可压缩单元确定被编码的对象,例如,在将要编码的数据块为多行代码的情况中,可以将连续两个空格之间的连续字符串作为最小可压缩单元,该连续两个空格之间的连续字符串例如可以为英文单词、数字、函数表达式等等。图4中的在数据块上滑动的黑框为滑动窗口,该滑动窗口具有对应于最小可压缩单元的预定数目的位置,图中示意示出为8个,在对某个最小可压缩单元进行字典编码时,以滑动窗口中的数据作为编码的字典,从该滑动窗口中找到匹配的数据,并使用滑动窗口中的匹配数据的位置信息作为该最小可压缩单元的编码。设置该滑动窗口是用于控制对于每个最小可压缩单元需要查找的字典数据的大小,从而提高字典查找的效率。
在对一串数据进行编码时,将该滑动窗口从该串数据第一个最小可压缩单元(图中为A)开始向后滑动,以开始进行编码。如图4(a)中所示,滑动窗口滑动到A之前,从A开始编码,因为滑动窗口中没有匹配的数据,即,目前可用的字典为空,因此在压缩数据中记下A。在图4(b),滑动窗口移到A,后续的字母B在滑动窗口中仍然没有匹配到数据,因此,在压缩数据中在A之后记下B。在图4(c),滑动窗口移到B,B之后的字母AB可以与滑动窗口中的AB相匹配,也就是说,可以用滑动窗口中的AB的位置对将要编码的AB进行编码,在字典编码中,通常通过这样的格式进行编码,如(6,2,C),其中,6表示滑动窗口中的AB距离滑动窗口最左边有6个位置,即,其为滑动窗口中的AB的位置信息,2表示编码的字母个数为2个,即A和B两个字母,C表示该编码对应的数据后面一个字母,即C,通过以这样的编码清楚地表示了该编码对应数据为“ABC”。在图4(d),滑动窗口移到C,C之后的字母BAB可以与滑动窗口中的BAB相匹配,因此,可以通过如图4(c)中相同的编码方式对BABA进行编码,即,其对应的编码为(4,3,A),类似地,4表示滑动窗口中的BAB距离窗口最左边有4个位置,3表示BAB的个数3个,A表示该编码对应的BAB之后的字母。在图4(e),窗口之后的字母BC与窗口中的字母BC,相匹配,类似地,可将BCA编码为(2,2,A)。在图4(f),窗口之后的字母D在窗口中没有找到匹配的数据,因此,在压缩数据中记为D。最后,在图4(g),缓冲区之后没有数据了,从而,本次编码结束,获得了与字符串ABABCBABABCAD对应的压缩数据为AB(6,2,C)(4,3,A)(2,2,A)D。在解码时,可同样地通过将滑动窗口从上述压缩数据上依次划过,从而,基于窗口位置和窗口中的数据,对压缩数据中的各个编码依次解码,以恢复出原始数据。
对应于上述编码过程,例如,在该字符串中每个字母实际对应于一个单词的情况中,通过该字典编码算法,可减少该一串单词的字节数,从而起到压缩数据的作用。例如,图5示出了通过字典编码算法对一串英文单词进行压缩的示意图。如图5中所示,在该串英文单词中,当对第二个“this”进行编码时,由于之前已经出现过了“this”,则可以使用之前出现的“this”的位置对该第二个“this”进行编码,即,在压缩数据中,将第二个“this”替换为第一个“this”的位置,即“(1)”,类似地,当对第二个“is”进行编码时,由于之前已经出现过了“is”,则可以使用之前出现的“is”的位置对该第二个“is”进行编码,即,在压缩数据中,将第二个“is”替换为(2)。即,该串英文单词最终被压缩为“This is new data source(1)test(2)some ok”。然而,对于例如一串英文单词,如果其中重复的单词并不是很多,则在编码时在基于自身数据的字典中并不能获取匹配的单词,即,命中率较低,从而,将会导致对该一串单词的压缩率较低。
根据本申请的图3所示方法通过引入外部字典结合字典编码算法进行编码,大大提高了字典命中率,提高了数据压缩率。
具体是,在步骤301,确定在第一数据块中在其中的当前编码的第一最小可压缩单元之前是否包括所述第一最小可压缩单元。
图6示出了结合外部字典对数据进行压缩的过程示意图。如图6中所示,假设第一数据块为图中的一串英文单词“This is new data source This test is some ok”,在对该第一数据块进行数据压缩的过程中,以与第一数据块具有相关内容的第二数据块“Thereare some old data source”作为外部字典。在该实例中,以单词作为最小可压缩单元。在开始压缩之后,与图4中的字典编码过程类似地,从第一数据块第一个单词开始依次编码,其中,在对每个单词进行编码时,首先确定第一数据块中在该单词之前有没有与之相匹配的单词。也就是说,首先从基于第一数据块自身的内部字典进行匹配查找。
图7示意示出了与图3所示相对应的数据压缩过程的框图。如图7中所示,在框701中,确定是否有待编码的最小可压缩单元。例如,针对图6所示的实例,在确定存在待编码的第一数据块中的某个单词之后,与步骤301对应地,在框702中,对于当前的待编码的单词,首先在第一数据块在该单词之前的内部字典中查找匹配的单词。例如对于第一数据块中的第一个压缩单元“This”,首先在内部字典查找,由于在第一数据块中,在该“This”之前的字典为空,因此,在内部字典未查找到匹配的单词,即,在图7中,将进入下面的框703中。例如,对于第一数据块中的单词“data”,首先在内部字典进行查找,即在其之前的“This is new”中进行查找,在该内部字典中未找到匹配的单词,同样地,对于该单词,也将进入框703,以进行后续步骤。例如,对于第一数据块中的第二个“This”,首先在内部字典中查找,即在其之前的“This is new data source”中进行查找,可以看到,在内部字典中,找到了匹配的单词,即第一个“This”,在该情况中,如图7中所示,进入框704,即基于内部字典对该第二个“This”进行编码,从而获取其内部编码。也就是说,通过类似于字典编码中的编码方式进行编码,在本申请中,将该第二个“This”编码为内部编码“(1)”,其中(1)表示第一个“This”的位置为第一数据块中的第一个位置,所述内部编码是指基于内部字典的编码。可以理解,该内部编码的具体编码形式只是示意性的,而不是限定性的,例如,所述内部编码还可以为(1,1),其中,第一个1表示第一个“This”的位置为第一数据块中的第一个位置,第二个1表示单词个数为1个,例如,所述编码还可以为(1,1,test),表示该编码对应于“This test”。另外,在该编码过程中,未引入用于编码的滑动窗口。然而,在实际编码中,对于长度较长的待压缩的数据块,在编码的过程中,可以引入滑动窗口,例如,将滑动窗口的长度设定为2k个单词,从而,在对数据块中的单词进行基于内部字典的编码时,以该单词之前的2k个单词作为内部字典进行匹配查找,从而通过限制内部字典的大小,提高字典查找的效率。在引入滑动窗口的情况中,所述内部编码中的位置信息可以是距离滑动窗口左侧(或右侧)的位置等等。
继续参考图3,在步骤302,在确定在所述第一数据块中在其中的当前编码的第一最小可压缩单元之前不包括所述第一最小可压缩单元的情况中,确定在第二数据块中是否包括所述第一最小可压缩单元,其中,所述第二数据块为与所述第一数据块相关的数据块。
该步骤对应于图7中的框703,即查找外部字典(即第二数据块)。该外部字典为预先确定好的,通常将与第一数据块具有较大关联性的第二数据块选取为外部字典,例如,第二数据块与第一数据块具有相关的内容,第二数据块与第一数据块具有相同的领域,第二数据块与第一数据块用于同一场景中、同一时段中等等,从而可使得字典的查找命中率更高,以提高数据压缩率。在一个实施例中,在软件升级的场景中,第一数据块为软件新老版本的差分包,可将软件的老版本作为对差分包进行压缩的外部字典(即第二数据块),由于该老版本与该差分包的关联性较大,因此以该老版本作为外部字典,使得字典查找的命中率较高。在一个实施例中,在日志数据传输的场景中,由于各个日志具有统一的格式,只是部分内容不同,因此,在第一数据块为第一日志的情况中,可以以在第一日志之前传输的另一个日志作为外部字典,以对所述第一日志进行数据压缩,在该情况中,该外部字典的查找命中率也较高,可获得较好的数据压缩率。
仍然参考图6中的示意实例,例如如上文所述,在对第一数据块中的第一个“This”进行内部字典查找之后,流程进入框703,在703中,针对“This”,在第二数据块(即“Thereare some old data source”)中查找匹配的单词,由于没有查找到“This”,则对该“This”的编码还是其自身,流程又循环到框701,确定是否还有待编码的最小可压缩单元,如果有,则进入框702,如果否,例如,已经对第一数据块中“ok”编码结束,后续没有其它的待编码的单词,则该压缩流程结束。例如如上文所述,在对第一数据块中的“data”进行内部字典查找之后,流程进入框703,在703中,针对“data”,在第二数据块(即“There are some old datasource”)中查找匹配的单词,由于在第二数据块中的第5个单词为“data”,因此,可进入框705,通过第二数据块中的“data”的位置对第一数据块中的“data”进行编码,即获取其外部编码。
在步骤303,在确定在所述第二数据块中包括所述第一最小可压缩单元的情况中,以第一编码作为与所述当前编码的第一最小可压缩单元对应的编码,以获取所述第一数据块的第一压缩数据,其中,所述第一编码为外部编码,所述外部编码包括相应的最小可压缩单元在所述第二数据块中的位置信息。
例如,在上述实例中,当基于第二数据块对第一数据块中的“data”进行编码时,可将第一数据块中的“data”替换为第一编码“W5”,其中,该第一编码“W5”为外部编码,即,基于外部字典(第二数据块)的编码,W作为标识,用于与上述内部编码相区分,5表示“data”在第二数据块中的位置为第5个单词位置。
可以理解,上述外部编码的具体形式只是示意性地,而不是限制性的。在一个实施例中,在上述框703中,在确定第二数据块中包括第一数据块中的“data”之后,还确定第二数据块中是否包括第一数据块中从“data”开始的连续多个单词,也即,确定第二数据块中的“data”之后的单词是否与第一数据块中“data”之后的单词相同。在确定了第二数据块中的“data source”与第一数据块中的“data source”相匹配之后,可将第一数据块中的“data source”替换为作为外部编码的第一编码“(W5,2)”,其中,5表示“data source”在第二数据块中的起始位置为第5个单词,2表示该第一编码对应于2个单词。在上述描述中,虽然通过标识“W”用于区分内部编码和外部编码,可以理解,在本申请中,不限于通过这种方式对外部编码和内部编码进行区分。例如,可通过其它的字符用于标识,或者可通过不同的格式表示来区分外部编码和内部编码,或者可通过不同的数字形式(例如1和i)、不同的数值范围来区分外部编码和内部编码等等。
可选地,在对第一数据块进行编码的过程中,在外部字典中的某个数据被匹配之后,可将该数据进行标记,以在下次查找外部字典时不再对该数据进行查找。例如,在上述实例中,在第二数据块中的“data”被匹配之后,可对该“data”进行标记,以指示其已经被匹配过一次,当下次针对第一数据块中的例如“test”查找第二数据块时,可省去对第二数据块中的所述“data”的匹配过程,从而提高查找效率。
当通过上述方法对图6中所示的第一数据块中的每个单词进行编码之后,可获取编码之后的压缩数据(即第一压缩数据):“This is new(W5)(W6)(1)test(2)(W3)ok”,显然,该压缩数据相比于第一数据块中的原始数据,大大减少了字节数,并且相比于图5基于现有的字典编码算法获取的压缩数据,减少了更多的字节数,从而相比于现有技术起到了更优的数据压缩效果。
可选地,在所述第一压缩数据中包括第一信息,所述第一信息用于在对所述第一压缩数据解压时获取所述第二数据块。例如,所述第一信息为在解压第一压缩数据时第二数据块的存储地址、或者第二数据块的数据标识等等。
例如,在第一计算机中进行图3所示方法,即,在第一计算机中对第一数据块进行数据压缩以获取第一压缩数据,并在压缩完成之后将第一压缩数据发送给第二计算机,以使得第二计算机进行对第一压缩数据的解压以获取第一数据块。在该情况中,第一计算机在第一压缩数据中包括例如第二计算机中存储所述第二数据块的具体位置,例如,第一压缩数据最终为“This is new(W5)(W6)(1)test(2)(W3)ok(C:\Apps\W)”,其中,“C:\Apps\W”为预先确定的第二计算机中存储第二数据块的地址。从而,第二计算机在接收到该压缩数据之后,基于该地址,可准确快速地获取第二数据块,并用于对第一压缩数据的解压缩。通过以这种方式用于找到第二数据块,在压缩数据中仅需要以“W5”的简单方式作为对第二数据块中具体位置的索引,从而提高了压缩率。
在第二计算机中可能存储了多个用作外部字典的数据块中的情况中,可通过在第一压缩数据中包括与选定的第二数据块对应的标识,从而使得第二计算机可基于该标识找到正确的第二数据块。例如,第二计算机的预定地址中存储了多个外部字典,其分别标识为W、X、Y等等,从而,通过以“W5”在第一压缩数据中进行标识,使得第二计算机可在多个外部字典W、X、Y等中确定以W标识的第二数据块作为外部字典。这里,仅以单个字母的形式作为标识进行了示例说明,当所述标识包括多个字符串的情况中,可通过与上述存储地址类似的方式,在第一信息中单独包括所述标识,例如,第一压缩数据最终为“This is new(W5)(W6)(1)test(2)(W3)ok(50842611)”,其中,“50842611”为第二计算机中存储的第二数据块的标识。
图8示出了根据本申请实施例的一种数据解压方法的流程图,所述方法可包括以下步骤:
步骤S801,确定第一压缩数据中的当前解码的第一编码是内部编码还是外部编码,其中,所述内部编码包括相应的最小可压缩单元在第一数据块中的位置信息,所述外部编码包括相应的最小可压缩单元在第二数据块中的位置信息,其中,所述第一数据块为所述第一压缩数据的原始数据块,所述第二数据块为与所述第一数据块相关的数据块;
步骤S802,在确定所述第一编码是外部编码的情况中,以所述第二数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据。
首先,在步骤S801,确定第一压缩数据中的当前解码的第一编码是内部编码还是外部编码,其中,所述内部编码包括相应的最小可压缩单元在第一数据块中的位置信息,所述外部编码包括相应的最小可压缩单元在第二数据块中的位置信息,其中,所述第一数据块为所述第一压缩数据的原始数据块,所述第二数据块为与所述第一数据块相关的数据块。
所述第一压缩数据例如为图6所示实例中最后获取的压缩数据,即,“This is new(W5)(W6)(1)test(2)(W3)ok”,在该实例中,如上文所述,第一数据块即为“This is newdata source This test is some ok”,其为上述压缩数据的原始数据块,作为外部字典的第二数据块为“There are some old data source”。在对该压缩数据进行解码的过程中,与现有技术中对字典编码进行解码类似地,从该压缩数据的首个编码开始解码。例如,对于该压缩数据中的“This”,其为对应于原始数据的编码,因此,在解压缩数据中记下“This”。例如,对于压缩数据中的“(W5)”,通过其中的W可以确定,该编码为外部编码,因此后续将基于第二数据块对该编码进行解码。例如,对于压缩数据中的“(1)”,可以确定,该编码为内部编码,因此后续将与现有的字典编码算法类似地基于该内部编码之前的原始数据进行解码。
在确定压缩数据中的“(1)”为内部编码的情况中,基于第一数据块中在该编码之前的原始数据对该编码进行解码,也就是说,在对上述压缩数据顺序解码之后,当解码到“(1)”时,可得在该编码“(1)”之前的原始数据,即“This is new data source”,以该串单词为内部字典,可确定该内部字典中的第1个单词为“This”,因此,内部编码“(1)”可解码为“This”,即,可在解压缩数据中与编码“(1)”对应的位置记下“This”。
在步骤S802,在确定所述第一编码是外部编码的情况中,以所述第二数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据。
例如,在确定上述压缩数据中的“(W5)”为外部编码的情况中,基于上述第二数据块,确定第二数据块中的第5个单词为“data”,因此,该外部编码“(W5)”对应的原始数据为“data”,从而,可在解压缩数据中与“(W5)”对应的位置记下“data”。例如,在如上文所述外部编码为“(W5,2)”的形式的情况中,基于第二数据块,确定第二数据块中从第5个单词开始的两个单词为“data source”,从而,可在解压缩数据中与“(W5,2)”对应的位置记下“datasource”。
可选地,所述第一压缩数据中包括第一信息,所述第一信息用于在对所述第一压缩数据解压时获取所述第二数据块,其中,在确定所述第一编码是外部编码的情况中,基于所述第一信息获取所述第二数据块,以及,以所述第二数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据。
上述图3和图8所示方法可通过任意计算设备执行,该计算设备包括存储器和处理器,其中,所述存储器中存储有程序指令,所述处理器在执行所述程序指令时,可实现图3或图8所示的方法。
图9示出了根据本申请实施例的一种数据传输方法流程图,其特征在于,所述方法由服务器端设备执行,包括:
步骤S901,获取第一数据块和第二数据块,其中,所述第二数据块与所述第一数据块相关;
步骤S902,通过图3所示方法,对所述第一数据块进行数据压缩,以获取第一压缩数据;
步骤S903,将所述第一压缩数据发送给终端设备。
该方法由服务器端设备执行,用于通过图3所示方法对将要传输的数据进行数据压缩,并将压缩后的数据传输给终端设备,从而节省传输的数据大小,节省传输成本,改善终端用户的使用体验。
首先,在步骤S901,获取第一数据块和第二数据块,其中,所述第二数据块与所述第一数据块相关。
在一个实施例中,该方法用于软件升级的场景中。在该场景中,服务器端设备可在通过图3所示方法对软件升级包进行数据压缩之后再进行传输。例如,终端设备中当前安装的APP版本为通过老版本安装包(例如APK1)安装的版本,服务器端在获取APP的新版本安装包(例如APK2)之后,通过现有技术中的差分算法,生成APK2相对于APK1的差分包,并将该差分包作为第一数据块,将APK1作为第二数据块。可以理解,在该场景中,不限于将APK2相对于APK1的差分包作为第一数据块,将APK1作为第二数据块。例如,在一些升级场景中,在一个安装包中包括多个镜像文件(IMG),该多个镜像文件分别涉及不同的内容,因此,彼此的相关性并不是很大,例如,在APK1中包括IMG1,在APK2中包括与IMG1对应的镜像文件IMG2,该IMG2仅与APK1中的IMG1具有较大的相关性。在该情况中,可以获取IMG2相对于IMG1的差分数据作为第一数据块,将IMG1作为第二数据块,即,对APK2中的各个IMG文件分别压缩,而不是对APK2整体进行压缩。
在一个实施例中,该方法用于页面传输的场景中。在该场景中,例如,终端设备向服务器端设备连续请求多个页面内容,通常,用户在同一时段连续请求的多个页面内容会具有较大的相关性。在该情况中,服务器端设备在已经向终端设备发送该多个页面中的第1个页面之后,在向终端设备发送该第2个页面之前,可通过图3所示方法对该第2个页面进行数据压缩之后,再进行传输。例如,服务器端设备可以第2个页面为第一数据块,以第1个页面为第二数据块。或者,与上述实施例类似地,服务器端设备可首先获取第2个页面相对于第1个页面的差分包,然后,以该差分包为第一数据块,以第1个页面为第二数据块。
在步骤S902,通过图3所示方法,对所述第一数据块进行数据压缩,以获取第一压缩数据。
在一个实施例中,在上述软件升级的场景中,由于APP的软件升级通常是在若干小地方对原APP进行改动,因此,APK2与APK1仍然有大部分内容是相同的,并且,APK2中的内容与APK1中的内容有非常大的相关性,因此,对其中包括的数据的重合概率也较大。因此,可首先获取APK2相对于APK1的差分包,从而排除二者中的完全相同的内容,然后,以原有的老版本APK1作为外部字典,对将要传输的差分包进行编码,由于APK2与APK1的相关性较大,因此,通过以APK1作为外部字典,其中与差分包中匹配的数据(单词、连续字符串、计算式)等将非常多,因此,可以以较大的压缩率获取该差分包的压缩包(即所述第一压缩数据)作为用于升级APP的升级包。
在一个实施例中,在上述页面传输的场景中,同样地,由于所述第1个页面与第2个页面的相关性较大,通过以第1个页面作为外部字典对第2个页面进行编码,可以以较大的压缩率获取该第2个页面的压缩包。
可选地,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块,其中,终端设备从本地获取所述第二数据块包括,终端设备基于所述第一信息从本地获取所述第二数据块。
在步骤S903,将所述第一压缩数据发送给终端设备。
在一个实施例中,在上述软件升级的场景中,服务器端设备将用于升级APP的升级包(即第一压缩数据)发送给终端设备中的相应APP,以使得该相应APP可基于该升级包进行APP升级。
在一个实施例中,在上述页面传输的场景中,服务器端设备将第2个页面的压缩包(即第一压缩数据)发送给终端设备,该终端设备基于该压缩包通过网页的形式打开该页面,或者,服务器端设备将第2个页面的压缩包发送给终端设备中的相应APP,从而相应APP基于该压缩包打开所述第2个页面。
图10示出根据本申请实施例的一种数据传输方法流程图,其特征在于,所述方法由终端设备执行,包括:
步骤S1001,从服务器端设备接收第一压缩数据,其中,所述第一压缩数据中包括内部编码和外部编码,其中,所述内部编码包括相应的最小可压缩单元在第一数据块中的位置信息,所述外部编码包括相应的最小可压缩单元在第二数据块中的位置信息,其中,所述第一数据块为所述第一压缩数据的原始数据块,所述第二数据块为与所述第一数据块相关的数据块;
步骤S1002,从本地获取第二数据块;
步骤S1003,通过图8所示方法,对所述第一压缩数据进行解压,以获取所述第一数据块。
该方法为由终端设备执行的与图9所示的方法对应的方法,终端设备在从服务器端设备接收第一压缩数据之后,基于图8所示方法对该第一压缩数据进行解压,从而获取该第一压缩数据对应的原始数据。
在步骤S1001,从服务器端设备接收第一压缩数据。该步骤的实施可参考上述对步骤S903的描述,第一压缩数据的具体描述可参考上述对步骤S801的描述,在此不再赘述。
在步骤S1002,从本地获取第二数据块。
在一个实施例中,在上述软件升级的场景中,终端设备可根据预定路径从本地获取预先存储的当前APP的安装版本,例如APK1,以在解压缩时用作外部字典。
在一个实施例中,在上述页面传输的场景中,终端设备可根据在前存储的第1个页面的页面标识从本地获取其在先前下载并存储的第1个页面作为外部字典。
可选地,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块,其中,终端设备从本地获取所述第二数据块包括,终端设备基于所述第一信息从本地获取所述第二数据块。
例如,在上述软件升级的场景中,所述第一信息例如为终端设备中存储APK1的存储地址,从而,终端设备基于第一信息可从本地获取APK1,并用于对第一压缩数据的解压缩。
例如,在上述页面传输的场景中,所述第一信息例如为第1个页面在终端设备中的存储标识,从而,终端设备基于第一信息可从本地获取第1个页面,并用于对第一压缩数据的解压缩。
通过在第一压缩数据中包括用于获取第二数据块的第一信息,并在压缩数据中使用与第二数据块中引用位置对应的索引进行数据压缩,在对压缩数据进行解压缩时,可首先基于第一信息获取第二数据块,然后基于第二数据块中的具体位置确定解压缩数据,从而不需要在压缩数据中包括第二数据块的具体存储地址,从而使得对数据的压缩率更大。
在步骤S1003,通过图8所示方法,对所述第一压缩数据进行解压,以获取所述第一数据块。
在一个实施例中,在上述软件升级的场景中,以APK1作为外部字典,对从服务器端设备接收的升级包进行解压缩,从而获取APK2相对于APK1的差分包,基于该差分包和APK1,可恢复出APK2,从而,终端设备通过接收较少的数据量,最终可获取新的软件安装包APK2,从而可基于APK2进行APP升级。
在一个实施例中,在上述页面传输的场景中,终端设备例如以其本地已有的第1个页面为外部字典,对接收的压缩包进行解压缩,从而可通过接收较少的数据量,获取第2个页面,并对该第2个页面进行显示。
图11示出根据本申请实施例的一种服务器端设备1100,其特征在于,所述服务器端设备包括:收发模块1101、存储器1102,处理器1103,其中,
所述存储器1102中存储有程序指令;
所述处理器1103用于根据所述存储器中存储的程序指令执行以下操作:
获取第一数据块和第二数据块,其中,所述第二数据块与所述第一数据块相关;
通过如图3所示的方法,对所述第一数据块进行数据压缩,以获取第一压缩数据;
通过所述收发模块将所述第一压缩数据发送给终端设备。
在一个实施例中,所述第一数据块为软件的新版本安装数据与老版本安装数据的差分数据,所述第二数据块为所述软件的老版本安装数据,所述第一压缩数据为用于在所述终端设备升级所述软件的升级包。
在一个实施例中,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块。
图12示出根据本申请实施例的一种终端设备1200,其特征在于,所述终端设备1200包括:收发模块1201、存储器1202,处理器1203,其中,
所述存储器1202中存储有程序指令;
所述处理器1203用于根据所述存储器中存储的程序指令执行以下操作:
通过所述收发模块1201从服务器端设备接收第一压缩数据,其中,所述第一压缩数据中包括内部编码和外部编码,其中,所述内部编码包括相应的最小可压缩单元在第一数据块中的位置信息,所述外部编码包括相应的最小可压缩单元在第二数据块中的位置信息,其中,所述第一数据块为所述第一压缩数据的原始数据块,所述第二数据块为与所述第一数据块相关的数据块;
从本地获取第二数据块;
通过图8所示方法,对所述第一压缩数据进行解压,以获取所述第一数据块。
在一个实施例中,所述第一数据块为软件的新版本安装数据与老版本安装数据的差分数据,所述第二数据块为所述软件的老版本安装数据,所述第一压缩数据为用于在所述终端设备升级所述软件的升级包,所述处理器1203还用于根据所述存储器中存储的程序指令执行以下操作:在获取所述第一数据块之后,基于所述第一数据块和所述第二数据块,获取所述新版本安装数据。
在一个实施例中,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块,其中,所述处理器用于根据所述存储器中存储的程序指令从本地获取第二数据块包括:所述处理器用于根据所述存储器中存储的程序指令基于所述第一信息从本地获取所述第二数据块。
在一个实施例中,所述第一信息为以下任一信息:所述第二数据块在所述终端设备中的存储地址、所述第二数据块在所述终端设备中的数据标识。
其中,所述收发模块1201例如可以为有线网络接口或无线收发模块。所述无线收发模块例如为射频(英文:Radio Frequency,:RF)电路或无线网络模块。所述RF电路可用于收发信息,例如,与服务器等设备进行信息交互,并将接收到的信息给处理器1203处理。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文:Low Noise Amplifier,LNA)、双工器等。此外,RF电路还可以通过无线通信与网络和其他设备进行通信。其中,无线通信可以采用任一通信标准或协议,包括但不限于全球移动通讯系统(英文:Global System of Mobile communication,GSM)、通用分组无线服务(英文:General Packet Radio Service,GPRS)、码分多址(英文:Code Division MultipleAccess,CDMA)、宽带码分多址(英文:Wideband Code Division Multiple Access,WCDMA)、长期演进(英文:Long Term Evolution,LTE)、电子邮件、短消息服务(英文:ShortMessaging Service,SMS)等。
存储器1202可用于存储软件程序以及模块,处理器1203通过运行存储在存储器1202中的软件程序以及模块,从而使得该终端设备执行上述解压缩方法。存储器1202可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统以及实现上述解压缩方法所需的应用程序等。存储数据区可存储应用的配置文件等。此外,存储器1202可以为易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-accessmemory,缩写:RAM);所述存储器1202也可以为非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器(英文:flashmemory),硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);所述存储器1202还可以包括上述种类的存储器的组合。
处理器1203是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器1202内的软件程序和/或模块,以及调用存储在存储器1202内的数据,执行所述解压缩方法。可选的,处理器1203可包括一个或多个处理单元。优选的,处理器1203可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1203中。
尽管未示出,所述终端设备还可以包括输入单元、显示单元、电源、传感器、摄像头、蓝牙模块、音频电路、USB模块等,在此不再赘述。
图13示出根据本申请实施例的一种系统1300,该系统1300包括图11所示的服务器端设备1100和图12所示的终端设备1200。
本申请还提供一种存储程序指令的计算机可读存储介质,其特征在于,所述程序指令当被计算机执行时,使所述计算机执行根据本申请实施例的如图3或图8或图9或图10所示的方法。
本申请还提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有程序指令,所述处理器在执行所述程序指令时,实现根据本申请实施例的如图3或图8或图9或图10所示的方法。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令处理器完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质是非短暂性(英文:non-transitory)介质,例如随机存取存储器,只读存储器,快闪存储器,硬盘,固态硬盘,磁带(英文:magnetic tape),软盘(英文:floppy disk),光盘(英文:optical disc)及其任意组合。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (25)
1.一种数据压缩方法,其特征在于,包括:
确定在第一数据块中在其中的当前编码的第一最小可压缩单元之前是否包括所述第一最小可压缩单元;
在确定在所述第一数据块中在其中的当前编码的第一最小可压缩单元之前不包括所述第一最小可压缩单元的情况中,确定在第二数据块中是否包括所述第一最小可压缩单元,其中,所述第二数据块为与所述第一数据块相关的数据块;
在确定在所述第二数据块中包括所述第一最小可压缩单元的情况中,以第一编码作为与所述当前编码的第一最小可压缩单元对应的编码,以获取所述第一数据块的第一压缩数据,其中,所述第一编码为外部编码,所述外部编码包括相应的最小可压缩单元在所述第二数据块中的位置信息;
其中,在确定在第一数据块中在其中的当前编码的第一最小可压缩单元之前包括所述第一最小可压缩单元的情况中,以第二编码作为与所述当前编码的第一最小可压缩单元对应的编码,其中,所述第二编码为内部编码,所述内部编码包括相应的最小可压缩单元在所述第一数据块中的位置,其中,所述内部编码与所述外部编码通过预定表示进行区分。
2.根据权利要求1所述的方法,其特征在于,在确定在所述第二数据块中包括所述第一最小可压缩单元的情况中,以第一编码作为与所述当前编码的第一最小可压缩单元对应的编码包括,在确定在所述第二数据块中包括所述第一最小可压缩单元的情况中,确定在所述第二数据块中是否包括所述第一数据块中的从当前编码的第一最小可压缩单元开始的连续多个最小可压缩单元,在确定在所述第二数据块中包括所述连续多个最小可压缩单元的情况中,以所述第一编码作为所述连续多个最小可压缩单元的编码,其中,所述第一编码还包括所述连续多个最小可压缩单元的个数。
3.根据权利要求1所述的方法,其特征在于,所述最小可压缩单元为连续两个空格之间的连续字符串。
4.根据权利要求1所述的方法,其中,确定在第一数据块中在其中的当前编码的第一最小可压缩单元之前是否包括所述第一最小可压缩单元包括,确定在第一数据块中的在其中的当前编码的第一最小可压缩单元之前的预定数目的最小可压缩单元中是否包括所述第一最小可压缩单元。
5.根据权利要求1所述的方法,其中,所述第一压缩数据中包括第一信息,所述第一信息用于在对所述第一压缩数据解压时获取所述第二数据块。
6.一种数据解压方法,其特征在于,包括:
确定第一压缩数据中的当前解码的第一编码是内部编码还是外部编码,其中,所述内部编码包括相应的最小可压缩单元在第一数据块中的位置信息,所述外部编码包括相应的最小可压缩单元在第二数据块中的位置信息,其中,所述第一数据块为所述第一压缩数据的原始数据块,所述第二数据块为与所述第一数据块相关的数据块;
在确定所述第一编码是外部编码的情况中,以所述第二数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据;
在确定所述第一编码是内部编码的情况中,以所述第一数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据。
7.根据权利要求6所述的方法,其中,所述第一压缩数据中包括第一信息,所述第一信息用于在对所述第一压缩数据解压时获取所述第二数据块,其中,在确定所述第一编码是外部编码的情况中,以所述第二数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据包括,在确定所述第一编码是外部编码的情况中,基于所述第一信息获取所述第二数据块,以及,以所述第二数据块中与所述第一编码对应的至少一个最小可压缩单元作为所述第一编码的解压缩数据。
8.根据权利要求6所述的方法,其特征在于,所述内部编码与所述外部编码通过预定表示进行区分,确定第一压缩数据中当前解码的第一编码是内部编码还是外部编码包括,基于特定标识确定第一压缩数据中当前解码的第一编码是内部编码还是外部编码。
9.一种数据传输方法,其特征在于,所述方法由服务器端设备执行,包括:
获取第一数据块和第二数据块,其中,所述第二数据块与所述第一数据块相关;
通过根据权利要求1至5中任一项所述的方法,对所述第一数据块进行数据压缩,以获取第一压缩数据;
将所述第一压缩数据发送给终端设备。
10.根据权利要求9所述的方法,其中,所述第一数据块为软件的新版本安装数据与老版本安装数据的差分数据,所述第二数据块为所述软件的老版本安装数据,所述第一压缩数据为用于在所述终端设备升级所述软件的升级包。
11.根据权利要9所述的方法,其中,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块。
12.一种数据传输方法,其特征在于,所述方法由终端设备执行,包括:
从服务器端设备接收第一压缩数据,其中,所述第一压缩数据中包括内部编码和外部编码,其中,所述内部编码包括相应的最小可压缩单元在第一数据块中的位置信息,所述外部编码包括相应的最小可压缩单元在第二数据块中的位置信息,其中,所述第一数据块为所述第一压缩数据的原始数据块,所述第二数据块为与所述第一数据块相关的数据块;
从本地获取所述第二数据块;
通过根据权利要求6至8中任一项所述的方法,对所述第一压缩数据进行解压,以获取所述第一数据块。
13.根据权利要求12所述的方法,其特征在于,所述第一数据块为软件的新版本安装数据与老版本安装数据的差分数据,所述第二数据块为所述软件的老版本安装数据,所述第一压缩数据为用于在所述终端设备升级所述软件的升级包,所述方法还包括,在获取所述第一数据块之后,基于所述第一数据块和所述第二数据块,获取所述新版本安装数据。
14.根据权利要求12所述的方法,其中,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块,其中,从本地获取所述第二数据块包括,基于所述第一信息从本地获取所述第二数据块。
15.根据权利要求14所述的方法,其中,所述第一信息为以下任一信息:所述第二数据块在所述终端设备中的存储地址、所述第二数据块在所述终端设备中的数据标识。
16.一种服务器端设备,其特征在于,所述服务器端设备包括:收发模块、存储器,处理器,其中,
所述存储器中存储有程序指令;
所述处理器用于根据所述存储器中存储的程序指令执行以下操作:
获取第一数据块和第二数据块,其中,所述第二数据块与所述第一数据块相关;
通过根据权利要求1至5中任一项所述的方法,对所述第一数据块进行数据压缩,以获取第一压缩数据;
通过所述收发模块将所述第一压缩数据发送给终端设备。
17.根据权利要求16所述的服务器端设备,其中,所述第一数据块为软件的新版本安装数据与老版本安装数据的差分数据,所述第二数据块为所述软件的老版本安装数据,所述第一压缩数据为用于在所述终端设备升级所述软件的升级包。
18.根据权利要求16所述的服务器端设备,其中,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块。
19.一种终端设备,其特征在于,所述终端设备包括:收发模块、存储器,处理器,其中,
所述存储器中存储有程序指令;
所述处理器用于根据所述存储器中存储的程序指令执行以下操作:
通过所述收发模块从服务器端设备接收第一压缩数据,其中,所述第一压缩数据中包括内部编码和外部编码,其中,所述内部编码包括相应的最小可压缩单元在第一数据块中的位置信息,所述外部编码包括相应的最小可压缩单元在第二数据块中的位置信息,其中,所述第一数据块为所述第一压缩数据的原始数据块,所述第二数据块为与所述第一数据块相关的数据块;
从本地获取所述第二数据块;
通过根据权利要求6至8中任一项所述的方法,对所述第一压缩数据进行解压,以获取所述第一数据块。
20.根据权利要求19所述的终端设备,其特征在于,所述第一数据块为软件的新版本安装数据与老版本安装数据的差分数据,所述第二数据块为所述软件的老版本安装数据,所述第一压缩数据为用于在所述终端设备升级所述软件的升级包,所述处理器还用于根据所述存储器中存储的程序指令执行以下操作:在获取所述第一数据块之后,基于所述第一数据块和所述第二数据块,获取所述新版本安装数据。
21.根据权利要求19所述的终端设备,其特征在于,所述第一压缩数据中包括第一信息,所述第一信息用于使得所述终端设备在对所述第一压缩数据解压时获取所述第二数据块,其中,所述处理器用于根据所述存储器中存储的程序指令从本地获取所述第二数据块包括:所述处理器用于根据所述存储器中存储的程序指令基于所述第一信息从本地获取所述第二数据块。
22.根据权利要求21所述的终端设备,其中,所述第一信息为以下任一信息:所述第二数据块在所述终端设备中的存储地址、所述第二数据块在所述终端设备中的数据标识。
23.一种通信系统,其特征在于,包括如权利要求16-18中任一项所述的服务器端设备和如权利要求19-22中任一项所述的终端设备。
24.一种存储程序指令的计算机可读存储介质,其特征在于,所述程序指令当被计算机执行时,使所述计算机执行权利要求1至15任一项所述的方法。
25.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有程序指令,所述处理器在执行所述程序指令时,实现权利要求1至15中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910882172.9A CN110740123B (zh) | 2019-09-18 | 2019-09-18 | 数据压缩方法和基于其的数据传输方法、终端设备和系统 |
CN202110174553.9A CN113014551B (zh) | 2019-09-18 | 2019-09-18 | 数据解压缩方法和基于其的数据传输方法、计算机设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910882172.9A CN110740123B (zh) | 2019-09-18 | 2019-09-18 | 数据压缩方法和基于其的数据传输方法、终端设备和系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110174553.9A Division CN113014551B (zh) | 2019-09-18 | 2019-09-18 | 数据解压缩方法和基于其的数据传输方法、计算机设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110740123A CN110740123A (zh) | 2020-01-31 |
CN110740123B true CN110740123B (zh) | 2021-03-09 |
Family
ID=69268202
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110174553.9A Active CN113014551B (zh) | 2019-09-18 | 2019-09-18 | 数据解压缩方法和基于其的数据传输方法、计算机设备和可读存储介质 |
CN201910882172.9A Active CN110740123B (zh) | 2019-09-18 | 2019-09-18 | 数据压缩方法和基于其的数据传输方法、终端设备和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110174553.9A Active CN113014551B (zh) | 2019-09-18 | 2019-09-18 | 数据解压缩方法和基于其的数据传输方法、计算机设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN113014551B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113014551A (zh) * | 2019-09-18 | 2021-06-22 | 荣耀终端有限公司 | 数据压缩方法和基于其的数据传输方法、终端设备和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2311635A (en) * | 1996-03-27 | 1997-10-01 | Memory Corp Plc | Compression of data for storage using two CAM dictionaries in parallel |
CN103281156A (zh) * | 2013-05-02 | 2013-09-04 | 华为技术有限公司 | 一种数据压缩、解压缩方法及装置 |
CN104468028A (zh) * | 2013-09-25 | 2015-03-25 | 华为技术有限公司 | 一种数据编解码方法及设备 |
CN104734722A (zh) * | 2013-12-23 | 2015-06-24 | 深圳市国微电子有限公司 | 数据压缩方法及数据解压缩装置 |
CN106375177A (zh) * | 2015-07-21 | 2017-02-01 | 中兴通讯股份有限公司 | 消息传输方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8698657B2 (en) * | 2012-09-10 | 2014-04-15 | Canon Kabushiki Kaisha | Methods and systems for compressing and decompressing data |
JP6742692B2 (ja) * | 2015-01-30 | 2020-08-19 | 富士通株式会社 | 符号化プログラムおよび伸長プログラム |
CN113014551B (zh) * | 2019-09-18 | 2022-04-29 | 荣耀终端有限公司 | 数据解压缩方法和基于其的数据传输方法、计算机设备和可读存储介质 |
-
2019
- 2019-09-18 CN CN202110174553.9A patent/CN113014551B/zh active Active
- 2019-09-18 CN CN201910882172.9A patent/CN110740123B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2311635A (en) * | 1996-03-27 | 1997-10-01 | Memory Corp Plc | Compression of data for storage using two CAM dictionaries in parallel |
CN103281156A (zh) * | 2013-05-02 | 2013-09-04 | 华为技术有限公司 | 一种数据压缩、解压缩方法及装置 |
CN104468028A (zh) * | 2013-09-25 | 2015-03-25 | 华为技术有限公司 | 一种数据编解码方法及设备 |
CN104734722A (zh) * | 2013-12-23 | 2015-06-24 | 深圳市国微电子有限公司 | 数据压缩方法及数据解压缩装置 |
CN106375177A (zh) * | 2015-07-21 | 2017-02-01 | 中兴通讯股份有限公司 | 消息传输方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113014551A (zh) * | 2019-09-18 | 2021-06-22 | 荣耀终端有限公司 | 数据压缩方法和基于其的数据传输方法、终端设备和系统 |
CN113014551B (zh) * | 2019-09-18 | 2022-04-29 | 荣耀终端有限公司 | 数据解压缩方法和基于其的数据传输方法、计算机设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110740123A (zh) | 2020-01-31 |
CN113014551A (zh) | 2021-06-22 |
CN113014551B (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107395209B (zh) | 数据压缩方法、数据解压缩方法及其设备 | |
US9727574B2 (en) | System and method for applying an efficient data compression scheme to URL parameters | |
CN111262876B (zh) | 基于区块链的数据处理方法、装置、设备以及存储介质 | |
US8799239B2 (en) | Method, apparatus and computer program product for performing a query using a decision diagram | |
US7983301B2 (en) | Method for extended transmission capabilities of short message service | |
CN114337678A (zh) | 数据压缩方法、装置、设备及存储介质 | |
KR101568947B1 (ko) | 폰트 파일을 다운로드하는 방법 및 시스템 | |
CA2428788C (en) | Static information knowledge used with binary compression methods | |
US20190379393A1 (en) | Dynamic dictionary-based data symbol encoding | |
CN115208414A (zh) | 数据压缩方法、数据压缩装置、计算机设备及存储介质 | |
CN110740123B (zh) | 数据压缩方法和基于其的数据传输方法、终端设备和系统 | |
CN115189696A (zh) | 一种基于Huffman解码表的硬件压缩解压方法 | |
JP2003333619A (ja) | 基数近似採用又は差分符号及びエスケープ符号採用のフレーム圧縮 | |
CN111436009B (zh) | 一种实时视频流传送、显示方法以及传送和播放系统 | |
CN112995199B (zh) | 数据编解码方法、装置、传输系统、终端设备及存储介质 | |
CN103138871A (zh) | 移动通讯系统中应用程序的服务器数据处理系统和方法 | |
CN108090115B (zh) | 一种针对Gzip压缩数据的过滤方法及系统 | |
CN116137534A (zh) | 无损压缩方法、电子设备及存储介质 | |
US20170048303A1 (en) | On the fly statistical delta differencing engine | |
CN103139757B (zh) | 一种移动终端应用程序的数据传输系统和方法 | |
CN112383888A (zh) | 一种短信系统、方法以及设备 | |
CN116708589B (zh) | 包头的压缩方法、装置、计算机设备和存储介质 | |
EP1605595A1 (en) | Method for compressing a short message | |
JP4456574B2 (ja) | 圧縮データ送信方法 | |
CN103220647B (zh) | 数据编码方式的识别方法、用户设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210427 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |