CN112399479B - 用于数据传输的方法、电子设备和存储介质 - Google Patents
用于数据传输的方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112399479B CN112399479B CN202011207924.0A CN202011207924A CN112399479B CN 112399479 B CN112399479 B CN 112399479B CN 202011207924 A CN202011207924 A CN 202011207924A CN 112399479 B CN112399479 B CN 112399479B
- Authority
- CN
- China
- Prior art keywords
- data
- compression
- result
- determined
- length
- 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
- 238000000034 method Methods 0.000 title claims abstract description 90
- 230000005540 biological transmission Effects 0.000 title claims abstract description 20
- 238000007906 compression Methods 0.000 claims abstract description 352
- 230000006835 compression Effects 0.000 claims abstract description 350
- 239000000872 buffer Substances 0.000 claims abstract description 38
- 238000004422 calculation algorithm Methods 0.000 claims description 114
- 239000012634 fragment Substances 0.000 claims description 51
- 238000012795 verification Methods 0.000 claims description 33
- 230000006837 decompression Effects 0.000 claims description 13
- 230000010365 information processing Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 24
- 238000012545 processing Methods 0.000 description 17
- 238000004590 computer program Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 229910052739 hydrogen Inorganic materials 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- QVFWZNCVPCJQOP-UHFFFAOYSA-N chloralodol Chemical compound CC(O)(C)CC(C)OC(O)C(Cl)(Cl)Cl QVFWZNCVPCJQOP-UHFFFAOYSA-N 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/06—Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information
- H04W28/065—Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information using assembly or disassembly of packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/10—Flow control between communication endpoints
- H04W28/14—Flow control between communication endpoints using intermediate storage
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开的实施例涉及用于数据传输的方法、电子设备和计算机存储介质,涉及信息处理领域。根据该方法,如果确定参考缓冲区不为空,则基于参考缓冲区中的参考数据集合,对待发送的目标数据进行压缩,以得到压缩结果集合;确定是否从压缩结果集合中找到第一压缩结果,第一压缩结果的长度在压缩结果集合中最短并且小于最大允许压缩率与目标数据的长度的第一乘积;如果确定找到第一压缩结果,则发送步骤:向服务器发送第一压缩结果、与第一压缩结果相关联的第一参考数据标识以及与目标数据相关联的校验数据。由此,能够利用历史参考数据与待发送的目标数据的相似性,最大限度地减少目标数据需要传输的信息量,提高压缩率。
Description
技术领域
本公开的实施例总体涉及信息处理领域,具体涉及用于数据发送的方法、电子设备和计算机存储介质以及用于数据接收的方法、电子设备和计算机存储介质。
背景技术
随着物联网以及智能硬件行业的兴起,越来越多的传感器和智能设备接入到物联网。这类物联网设备存在数据实时性要求较高,每包实时数据的长度一般在几十字节到1千多字节之间。传统的压缩算法(如zip、protobuff、huffman等)是针对长文件、长数据的,对于这类实时数据的压缩效果很差,基本上很难做到70%以上的压缩率。
有3种类型的常见物联网设备对于压缩率是非常敏感的。第1种是使用流量卡的物联网设备,这类设备的压缩率与流量的使用成本成正比,压缩率越高,流量的使用成本越低。第2种是使用电池供电的低功耗设备,每发送多1bit数据,就足以让MCU运行上千个指令了。第3种是NB、LoRa等窄带无线通讯技术的物联网设备,压缩率越高,设备对于频带的占用时间越短。因此,压缩率提升对于系统容量的提升和功耗的降低有着重要的意义。
发明内容
提供了一种用于数据发送的方法、电子设备以及计算机存储介质以及用于数据接收的方法、电子设备以及计算机存储介质,能够利用历史参考数据与待发送的目标数据的相似性,最大限度地减少目标数据需要传输的信息量,提高压缩率。
根据本公开的第一方面,提供了一种用于数据发送的方法。该方法包括:如果确定参考缓冲区不为空,则基于参考缓冲区中的参考数据集合,对待发送的目标数据进行压缩,以得到压缩结果集合;确定是否从压缩结果集合中找到第一压缩结果,第一压缩结果的长度在压缩结果集合中最短并且小于最大允许压缩率与目标数据的长度的第一乘积;如果确定找到第一压缩结果,则发送步骤:向服务器发送第一压缩结果、与第一压缩结果相关联的第一参考数据标识以及与目标数据相关联的校验数据;以及如果确定未找到第一压缩结果或者确定参考缓冲区为空,则将目标数据作为参考数据向服务器进行发送。
在一些实施例中,其中对所述目标数据进行压缩包括重复执行以下步骤直至所述参考数据集合处理完毕:获取步骤:从所述参考数据集合获取未处理的参考数据;将所述目标数据与所述参考数据每预定长度进行相减,以得到差值数据;在所述差值数据中确定彼此不同的、所述预定长度的多个非零数据片段以及所述多个非零数据片段的出现次数;基于所述出现次数,生成所述多个非零数据片段的排序结果,以作为压缩结果中的编码信息;基于所述排序结果,生成哈夫曼二叉树;将所述差值数据中的、所述预定长度的零数据片段编码为1比特预定值;以及基于所述哈夫曼二叉树,对所述差值数据中的、所述预定长度的非零数据片段进行编码,以得到所述压缩结果中的压缩数据。
在一些实施例中,其中生成所述排序结果包括:确定出现次数为1的非零数据片段的个数,作为第一转义码的出现次数;以及将所述第一转义码与所述多个非零数据片段中的出现次数大于1的非零数据片段按照出现次数进行排序,以得到所述排序结果;以及其中对所述差值数据中的、所述预定长度的非零数据片段进行编码包括:如果确定所述非零数据片段的出现次数为1,则将所述非零数据片段编码为包括所述哈夫曼二叉树中与所述第一转义码相对应的叶节点的编码数据和所述非零数据片段的序列;以及如果确定所述非零数据片段的出现次数大于1,则基于所述哈夫曼二叉树中与所述非零数据片段相对应的叶节点的编码数据,对所述非零数据片段进行编码。
在一些实施例中,其中生成所述排序结果还包括:在所述排序结果的末尾添加第二转义码;以及对所述非零数据片段进行编码包括:确定所述非零数据片段在所述差值数据中的连续个数;如果确定所述连续个数大于预定连续个数,则确定包括所述哈夫曼二叉树中与所述非零数据片段相对应的叶节点的编码数据、所述哈夫曼二叉树中与所述第二转义码相对应的叶节点的编码数据和所述连续个数的所述预定长度表示的第一序列的第一长度是否小于所述连续个数与所述哈夫曼二叉树中与所述非零数据片段相对应的叶节点的编码数据的长度的第二乘积;如果确定所述第一长度小于所述第二乘积,则将所述连续个数个所述非零数据片段编码为所述第一序列;以及如果确定所述第一长度大于或等于所述第二乘积,则将所述连续个数个所述非零数据片段编码为所述连续个数个所述哈夫曼二叉树中与所述非零数据片段相对应的叶节点的编码数据。
在一些实施例中,其中对所述目标数据进行压缩还包括重复执行以下步骤直至所述参考数据集合处理完毕:确定包括所述编码信息和所述压缩数据的压缩结果的长度是否小于所述第一乘积;如果确定所述压缩结果的长度大于或等于所述第一乘积,则回到所述获取步骤;如果确定所述压缩结果的长度小于所述第一乘积,则确定所述第一压缩结果是否为空;如果确定所述第一压缩结果不为空,则确定所述压缩结果的长度是否小于所述第一压缩结果的长度;如果确定所述压缩结果的长度小于所述第一压缩结果的长度或者确定所述第一压缩结果为空,则将所述第一压缩结果和所述第一参考数据标识分别确定为所述压缩结果和所述参考数据的标识。
在一些实施例中,其中对所述目标数据进行压缩还包括:如果确定所述第一压缩结果的长度小于最小允许压缩率与所述目标数据的长度的乘积,则转到所述发送步骤。
在一些实施例中,其中确定是否从所述压缩结果集合中找到所述第一压缩结果包括:确定所述第一压缩结果是否为空;如果确定所述第一压缩结果不为空,则确定找到所述第一压缩结果;以及如果确定所述第一压缩结果为空,则确定未找到所述第一压缩结果。
在一些实施例中,其中所述预定长度包括1字节。
在一些实施例中,方法还包括:如果确定在预定时间内从所述服务器接收到针对所述目标数据的确认,则将所述目标数据作为所述参考数据添加到所述参考缓冲区;如果确定在所述预定时间内未从所述服务器接收到所述确认,则确定针对所述目标数据的重传是否达到预定次数;以及如果确定所述重传未达到所述预定次数,则将所述目标数据作为参考数据向所述服务器进行重传。
在一些实施例中,方法还包括:如果确定从所述服务器接收到解压错误消息,则清空所述参考缓冲区。
在一些实施例中,其中对所述目标数据进行压缩包括基于所述参考数据集合和至少两种压缩算法,对所述目标数据进行压缩,以得到所述压缩结果集合,所述压缩结果集合包括与所述至少两种压缩算法相关联的至少两个压缩结果子集合;以及所述方法还包括:如果确定找到所述第一压缩结果,则还向所述服务器发送与所述第一压缩结果相关联的压缩算法标识。
在一些实施例中,方法还包括:向所述服务器发送支持的压缩算法标识集合;以及从所述服务器接收确认支持的至少两个压缩算法标识,所述至少两个压缩算法标识与所述至少两种压缩算法相关联。
在一些实施例中,方法还包括:如果确定所述至少两个压缩算法标识与所述压缩算法标识集合无关,则经由所述服务器获取与所述至少两个压缩算法标识相关联的压缩算法。
根据本公开的第二方面,提供了一种电子设备。该电子设备包括:至少一个处理器,以及与至少一个处理器通信连接的存储器,其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据第一方面所述的方法。
在本公开的第三方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。
根据本公开的第四方面,提供了一种用于数据接收的方法。该方法包括:从终端设备接收压缩结果、参考数据标识和校验数据;获取与参考数据标识相关联的参考数据;基于压缩结果和参考数据,生成目标数据;生成目标数据的校验数据;如果确定生成的校验数据与接收的校验数据不同,则向终端设备发送解压错误消息;以及如果确定生成的校验数据与接收的校验数据相同,则存储目标数据。
在一些实施例中,其中所述压缩结果包括编码信息和压缩数据,所述编码信息包括预定长度的多个数据片段的排序结果,以及生成所述目标数据包括:基于所述排序结果,生成哈夫曼二叉树,所述哈夫曼二叉树包括与所述多个数据片段相对应的多个叶节点;如果确定所述压缩数据中的待解码首个比特数据为预定值,则将所述待解码首个比特数据在解码结果中解码为所述预定长度的零数据片段;如果确定所述压缩数据中的待解码首个比特数据不为所述预定值,则在所述哈夫曼二叉树中确定与所述压缩数据中以所述待解码首个比特数据开始的数据序列相匹配的叶节点,以及将所述数据序列在所述解码结果中解码为与所述叶节点相对应的数据片段;以及如果确定所述压缩数据解码结束,则将所述解码结果和所述参考数据每所述预定长度相加,以得到所述目标数据。
在一些实施例中,其中所述排序结果还包括第一转义码,所述哈夫曼二叉树还包括与所述第一转义码相对应的叶节点,以及生成所述目标数据还包括:如果确定相匹配的所述叶节点与所述第一转义码相对应,则获取所述压缩数据中紧接所述数据序列之后的所述预定长度的第一数据片段,以及将所述数据序列和所述第一数据片段在所述解码结果中解码为所述第一数据片段。
在一些实施例中,其中所述排序结果还包括第二转义码,所述哈夫曼二叉树还包括与所述第二转义码相对应的叶节点,以及生成所述目标数据还包括:如果确定相匹配的所述叶节点与所述第二转义码相对应,则确定所述压缩数据中紧接所述数据序列之后的所述预定长度的第二数据片段所对应的数值N,获取所述解码结果中的当前最后的所述预定长度的第三数据片段,以及将所述数据序列和所述第二数据片段在所述解码结果中解码为N-1个所述第三数据片段。
在一些实施例中,方法还包括:从所述终端设备接收压缩算法标识;以及生成所述目标数据包括利用与所述压缩算法标识相关联的压缩算法,基于所述压缩结果和所述参考数据,生成所述目标数据。
在一些实施例中,方法还包括:从所述终端设备接收支持的压缩算法标识集合;以及向所述终端设备发送确认支持的至少两个压缩算法标识。
在一些实施例中,方法还包括:如果确定所述至少两个压缩算法标识与所述压缩算法标识集合无关,则向所述终端设备发送与所述至少两个压缩算法标识相关联的压缩算法。
根据本公开的第五方面,提供了一种电子设备。该电子设备包括:至少一个处理器,以及与至少一个处理器通信连接的存储器,其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据第四方面所述的方法。
在本公开的第六方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第四方面的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1是根据本公开的实施例的信息处理环境100的示意图。
图2是根据本公开的实施例的用于数据发送的方法200的示意图。
图3是根据本公开的实施例的用于对目标数据进行压缩的方法300的示意图。
图4是根据本公开的实施例的用于数据接收的方法400的示意图。
图5是根据本公开的实施例的用于生成目标数据的方法500的示意图。
图6是根据本公开的实施例的哈夫曼二叉树600的示意图。
图7是根据本公开的实施例的哈夫曼二叉树700的示意图。
图8是用来实现本公开实施例的用于数据发送或接收的方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,传统压缩算法主要针对长文件和长数据,对于实时数据的压缩效果很差。具体来说,传统的数据压缩方法,大部分是基于编码表的,编码表一般包含原始数据编码、目标数据编码、出现的次数等信息,即利用编码表将高频的长的数据编码转换为较短的数据编码。但是对于单独一个物联网实时数据来说,数据重复的次数不高,大部分是1~3次。这就导致编码表的长度很长,甚至比原始数据还大。无法对物联网实时数据做到有效的压缩。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种用于数据发送的方案。在该方案中,终端设备如果确定参考缓冲区不为空,则基于参考缓冲区中的参考数据集合,对待发送的目标数据进行压缩,以得到压缩结果集合。随后,终端设备确定是否从压缩结果集合中找到第一压缩结果,第一压缩结果的长度在压缩结果集合中最短并且小于最大允许压缩率与目标数据的长度的第一乘积。如果确定找到第一压缩结果,则终端设备向服务器发送第一压缩结果、与第一压缩结果相关联的第一参考数据标识以及与目标数据相关联的校验数据。如果确定未找到第一压缩结果或者确定参考缓冲区为空,则终端设备将目标数据作为参考数据向服务器进行发送。以此方式,能够利用历史参考数据与待发送的目标数据的相似性,最大限度地减少目标数据需要传输的信息量,提高压缩率。
相应地,本公开的示例实施例还提出了一种用于数据接收的方案。在该方案中,服务器从终端设备接收压缩结果、参考数据标识和校验数据。随后,服务器获取与参考数据标识相关联的参考数据并基于压缩结果和参考数据,生成目标数据。接着,服务器生成目标数据的校验数据。服务器如果确定生成的校验数据与接收的校验数据不同,则向终端设备发送解压错误消息。服务器如果确定生成的校验数据与接收的校验数据相同,则存储目标数据。以此方式,能够实现与上述数据发送方法相对应的正确数据接收。
在下文中,将结合附图更详细地描述本方案的具体示例。
图1示出了根据本公开的实施例的信息处理环境100的示例的示意图。信息处理环境100可以包括终端设备110和服务器120。终端设备110和服务器120处分别具有参考缓冲区112和122,其中具有参考数据集合130,分别用于对目标数据进行压缩和对压缩结果进行解压缩。参考数据集合中的参考数据例如可以是终端设备110先前向服务器120发送并且经服务器120确认的。
终端设备110例如包括但不限于物联网IOT设备,其例如可以向服务器120发送设备的运行状态数据或传感器数据。在大部分情况下,这些数据的变化会很小,或者只有很小一部分发生较大的变化。另外,还有一部分传输协议格式内容,也是基本上很少变化的。
服务器120例如包括但不限于服务器计算机、多处理器系统、大型计算机、包括上述系统或设备中的任意一个的分布式计算环境等。在一些实施例中,计算设备110可以具有一个或多个处理单元,包括诸如图像处理单元GPU、现场可编程门阵列FPGA和专用集成电路ASIC等的专用处理单元以及诸如中央处理单元CPU的通用处理单元。
终端设备110用于如果确定参考缓冲区112不为空,则基于参考缓冲区112中的参考数据集合130,对待发送的目标数据进行压缩,以得到压缩结果集合;确定是否从压缩结果集合中找到第一压缩结果,第一压缩结果的长度在压缩结果集合中最短并且小于最大允许压缩率与目标数据的长度的第一乘积;如果确定找到第一压缩结果,则发送步骤:向服务器发送第一压缩结果、与第一压缩结果相关联的第一参考数据标识以及与目标数据相关联的校验数据;以及如果确定未找到第一压缩结果或者确定参考缓冲区112为空,则将目标数据作为参考数据向服务器120进行发送。
服务器120用于从终端设备110接收压缩结果、参考数据标识和校验数据;获取与参考数据标识相关联的参考数据;基于压缩结果和参考数据,生成目标数据;生成目标数据的校验数据;如果确定生成的校验数据与接收的校验数据不同,则向终端设备发送解压错误消息;以及如果确定生成的校验数据与接收的校验数据相同,则存储目标数据。
由此,能够利用历史参考数据与待发送的目标数据的相似性,最大限度地减少目标数据需要传输的信息量,提高压缩率。
图2示出了根据本公开的实施例的用于数据发送的方法200的流程图。例如,方法200可以由如图1所示的终端设备110来执行。应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框202处,终端设备110如果确定有待发送的目标数据,则确定参考缓冲区112是否为空。目标数据例如包括但不限于诸如物联网设备的终端设备的运行状态数据或传感器数据。在一些实施例中,目标数据可以包括目标数据包,例如包括上述运行状态数据或传感器数据和传输协议报头的目标数据分组。
在一些实施例中,终端设备110可以在与服务器120建立连接之后,根据系统设定(例如参考数据的数量,最大允许压缩率,最小允许压缩率等等),初始化参考缓冲区,用于存储N项参考数据(包括参考数据编号、内容等)。初始化后,参考数据的数量为0。
如果终端设备110在框202处确定参考缓冲区不为空,则在框204处基于参考缓冲区中的参考数据集合,对待发送的目标数据进行压缩,以得到压缩结果集合。参考数据集合中的参考数据例如是终端设备110先前向服务器120发送并且被服务器确认接收的数据。在一些实施例中,参考数据集合可以包括参考数据包集合。
根据终端设备的实际能力,上述压缩结果集合中的压缩结果可以是依次生成的,也可以是并行生成的,或者是依次与并行混合生成的,例如先并行生成一部分,再并行生成另一部分。
在框206处,终端设备110确定是否从压缩结果集合中找到第一压缩结果,第一压缩结果的长度在压缩结果集合中最短并且小于最大允许压缩率与目标数据的长度的第一乘积。最大允许压缩率例如是终端设备110预设的。
如果终端设备110在框206处确定找到第一压缩结果,则在框208处,向服务器120发送第一压缩结果、与第一压缩结果相关联的第一参考数据标识以及与目标数据相关联的校验数据。第一参考数据标识例如为与第一压缩结果相关联的第一参考数据的标识,例如其在参考数据集合中的编号。校验数据例如包括但不限于CRC8校验数据。
在一些实施例中,终端设备110可以将延迟范围内的多个第一压缩结果、多个第一参考数据标识和多个校验数据合并为一个数据进行发送。由此可以节省多次传输层发送时额外的tcp等传输层包头数据。延迟范围例如包括但不限于200ms。
如果终端设备110在框206处确定未找到第一压缩结果或者在框202处确定参考缓冲区为空,则在框210处将目标数据作为参考数据向服务器120进行发送。例如,可以将目标数据、作为参考数据的参考数据标识(例如编号)发送给服务器120,表明其为参考数据。此外,也可以向服务器120发送作为参考数据的指示。
由此,能够利用历史参考数据与待发送的目标数据的相似性,最大限度地减少目标数据需要传输的信息量,提高压缩率和传输效率,从而降低设备的使用成本、功耗等。此外,通过在压缩结果满足压缩率要求的情况下发送压缩结果,而在压缩结果不满足压缩率要求的情况下将目标数据作为参考数据进行发送,进一步提高了压缩效率。
图3示出了根据本公开的实施例的用于对目标数据进行压缩的方法300的流程图。例如,方法300可以由如图1所示的终端设备110来执行。应当理解的是,方法300还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。方法300的以下步骤可重复执行直至参考数据集合处理完毕。
在框302处,终端设备110从参考数据集合获取未处理的参考数据。在一些实施例中,参考数据可以包括参考数据包。
在框304处,终端设备110将目标数据与参考数据每预定长度进行相减,以得到差值数据。预定长度例如包括但不限于1字节。因物联网的前后数据有很大的相似性,通过前后数据相减,可以把没变化的数据部分变成0。另外,因物联网的前后数据变化较小,相减后,得到的差值一般比较小,一定程度上提高了数据的重复概率,对后面压缩有一定的帮助。
在框306处,终端设备110在差值数据中确定彼此不同的、预定长度的多个非零数据片段以及多个非零数据片段的出现次数。
例如,差值数据为ABBBABBBBBCDECDFCDCDCDGC,则可以确定彼此不同的、预定长度的多个非零数据片段为A、B、C、D、E、F和G,其出现次数分别为2、8、6、5、1、1和1。
在框308处,终端设备110基于出现次数,生成多个非零数据片段的排序结果,以作为压缩结果中的编码信息。例如,可以按照出现次数从高到低将多个非零数据片段进行排序,以得到排序结果。
在一些实施例中,终端设备110可以确定出现次数为1的非零数据片段的个数,作为第一转义码的出现次数。随后,终端设备110可以将第一转义码与多个非零数据片段中的出现次数大于1的非零数据片段按照出现次数进行排序,以得到排序结果。在排序结果中例如可以具有指示第一转义码的第一标记。例如,多个非零数据片段包括A、B、C、D、E、F和G,其出现次数分别为2、8、6、5、1、1和1,则将非零数据片段E、F、G的个数3作为第一转义码(例如H,其用于转义目的)的出现次数,随后将A、B、C、D和H按照出现次数排序,得到排序结果B、C、D、H、A,并且将H标记为第一转义码。
在框310处,终端设备110基于排序结果,生成哈夫曼二叉树。例如,可以以非零数据片段在排序结果中的排序编号作为权重,将排序结果生成哈夫曼二叉树,哈夫曼二叉树中的叶节点表示非零数据片段,叶节点的路径可以表示该叶节点对应的编码数据。以上述排序结果B、C、D、H、A为例,其排序编号例如为1-5,则生成的哈夫曼二叉树可如图6所示。由此,编码信息可以只存储编码前的非零数据片段,而不需存储出现频次和编码后的结果,相比于传统的编码表大大减少了编码信息的数据量。
在框312处,终端设备110将差值数据中的、预定长度的零数据片段编码为1比特预定值。1比特预定值例如包括但不限于1比特的0。由于差值中0出现的概率很高,使用1比特预定值来表示0可以极大减少压缩结果的长度。
在框314处,终端设备110基于哈夫曼二叉树,对差值数据中的、预定长度的非零数据片段进行编码,以得到压缩结果中的压缩数据。随后,可以回到框302。得到哈夫曼二叉树后,可以基于叶节点的路径为哈夫曼二叉树中的叶节点(也就是非零数据片段)确定对应编码数据。基于上述编码数据,可以将差值数据中的非零数据片段进行编码。例如可以将如图6所示的哈夫曼二叉树中的叶节点进行如下编码:B:10,C:110,D:1110,A:11110,H:11111。
在一些实施例中,终端设备110如果确定非零数据片段的出现次数为1,则将非零数据片段编码为包括哈夫曼二叉树中与第一转义码相对应的叶节点的编码数据和非零数据片段的序列,以及如果确定非零数据片段的出现次数大于1,则基于哈夫曼二叉树中与非零数据片段相对应的叶节点的编码数据,对非零数据片段进行编码。以上述A、B、C、D、E、F和G为例,对于差值数据中的非零数据片段E,其出现次数为1,则可以编码为11111+E,类似地对于F和G也是如此,而对于A、B、C和D,则可以分别编码11110,10,110和1110。由此,将出现次数为1的数据片段的出现次数相加,只作为第一转义码进行排序,从而减少其他出现次数2次以上数据片段的编码长度。
由此,将大量数据转换为0数据或数值较少的差值数据,提高数据重复性。另外,还针对这种大量0数据或数值较少的差值数据,优化了哈夫曼编码方法,减少了编码信息内容,提高了差值数据的压缩率和传输效率。
备选地或者附加地,在一些实施例中,终端设备110可以在排序结果的末尾添加第二转义码。与第一转义码类似,排序结果中也可以包括指示第二转移码的第二标记。以上述排序结果B、C、D、H、A为例,终端设备110可以在该排序结果的末尾添加第二转义码,例如I,从而得到更新的排序结果B、C、D、H、A、I,并标记I为第二转义码。在此情况下,生成的哈夫曼二叉树可如图7所示,并且B、C、D、H、A、I可分别编码为10,110,1110,11110,111110和1111111。
此外,终端设备110还可以确定非零数据片段在差值数据中的连续个数。如果终端设备110确定连续个数大于预定连续个数,则确定包括哈夫曼二叉树中与非零数据片段相对应的叶节点的编码数据、哈夫曼二叉树中与第二转义码相对应的叶节点的编码数据和连续个数的预定长度表示的第一序列的第一长度是否小于连续个数与哈夫曼二叉树中与非零数据片段相对应的叶节点的编码数据的长度的第二乘积。预定连续个数例如包括但不限于1个。
如果终端设备110确定第一长度大于或等于第二乘积,将连续个数个非零数据片段编码为连续个数个哈夫曼二叉树中与非零数据片段相对应的叶节点的编码数据。
例如差值数据中的非零数据片段B的连续个数为3个,B对应的编码数据例如为10,第二转义码I对应的编码数据为1111111,连续个数的预定长度(例如8比特,也就是1字节)表示为00000011,则第一序列例如为10111111100000011,其长度为17比特,连续3个B对应的编码数据例如为101010,其长度为6比特,在此情况下,将差值数据中的连续3个非零数据片段B编码为101010。
如果终端设备110确定第一长度小于第二乘积,则将连续个数个非零数据片段编码为第一序列。
例如,如果B的连续个数为10个,则第一序列例如为10111111100001100,其长度为17比特,连续7个B对应的编码数据例如为10101010101010101010,其长度为20比特,在此情况下,将差值数据中的连续10个非零数据片段B编码为10111111100001100。
由此,能够在非零数据片段在差值数据中连续出现的情况下如果按照长度转义编码更短则进行长度转义编码,否则按照哈夫曼二叉树直接编码,进一步提高压缩率。
备选地或者附加地,在一些实施例中,对于方法300,终端设备110还可以重复执行以下步骤直至参考数据集合处理完毕。
在框316处,终端设备110确定包括编码信息和压缩数据的压缩结果的长度是否小于第一乘积。
如果终端设备110在框316处确定压缩结果的长度大于或等于第一乘积,则回到框302。
如果终端设备110在框316处确定压缩结果的长度小于第一乘积,则在框318处确定第一压缩结果是否为空。第一压缩结果最初可以设置为空。
如果终端设备110在框318处确定第一压缩结果为空,则在框322处将第一压缩结果和第一参考数据标识分别确定为压缩结果和参考数据的标识。这里的参考数据指的是用于生成压缩结果的参考数据。终端设备110可以将第一压缩结果和第一参考数据进行缓存。随后,可以回到框302。
如果终端设备110在框318处确定第一压缩结果不为空,则在框320处确定压缩结果的长度是否小于第一压缩结果的长度,第一压缩结果包括第一压缩数据和第一编码信息。
如果终端设备110在框322处确定压缩结果的长度小于第一压缩结果的长度,则在框322处将第一压缩结果和第一参考数据标识分别确定为压缩结果和参考数据的标识。
由此,能够在压缩的过程中逐步实现当前最佳的第一压缩结果的确定,无需等到处理完参考数据集合再确定,节省压缩结果缓存空间。
备选地或者附加地,在一些实施例中,对于方法300,终端设备110还可以确定第一压缩结果的长度是否小于最小允许压缩率与目标数据的长度的乘积。
如果终端设备110确定第一压缩结果的长度小于最小允许压缩率与目标数据的长度的乘积,则直接向服务器120发送第一压缩结果、与第一压缩结果相关联的第一参考数据标识以及与目标数据相关联的校验数据,而不再对尚未处理的参考数据继续进行压缩。
由此,能够在处理完参考数据集合之前确定第一压缩结果满足最小允许压缩率的情况下直接发送第一压缩结果,而无需处理其余参考数据,节省压缩时间。
备选地或者附加地,在一些实施例中,终端设备110可以通过以下步骤来确定是否从压缩结果集合中找到第一压缩结果:确定第一压缩结果是否为空;如果确定第一压缩结果不为空,则确定找到第一压缩结果;以及如果确定第一压缩结果为空,则确定未找到第一压缩结果。第一压缩结果例如在初始化时可以设置为空。
由此,仅需检查第一压缩结果是否为空,就可以确定是否找到满足压缩率要求的压缩结果,提高处理效率。
备选地或者附加地,在一些实施例中,终端设备110还可以确定如果终端设备110确定在预定时间内从服务器120接收到针对目标数据的确认,则将目标数据作为参考数据添加到参考缓冲区。例如发送目标数据时作为编号为n的参考数据,则接收到确认后将目标数据以编号为n的参考数据添加到参考缓冲区,下一参考数据的编号例如可以递增为n+1。预定时间例如包括但不限于100ms、300ms等等。
如果终端设备110确定在预定时间内未从服务器120接收到针对目标数据的确认,则确定针对目标数据的重传是否达到预定次数。预定次数例如包括但不限于3次。在一些实施例中,预定次数可以根据网络状态进行调整。
如果终端设备110确定针对目标数据的重传未达到预定次数,则将目标数据作为参考数据向服务器进行重传。
如果中断设备110确定针对目标数据的重传达到预定次数,则将该目标数据丢弃。例如,下一参考数据的编号仍使用n。
由此,只有服务器确认的目标数据才作为参考数据添加到参考缓冲区,确保终端设备与服务器的参考缓冲区保持一致。
备选地或者附加地,在一些实施例中,终端设备110还可以确定是否从服务器120接收到解压错误消息。如果终端设备110确定从服务器120接收到解压错误消息,则清空参考缓冲区。
由此,在发生解压错误的情况下清空参考缓冲区,避免利用参考缓冲区中的参考数据进行压缩后继续出现解压错误。
备选地或者附加地,在一些实施例中,终端设备110可以基于参考数据集合和至少两种压缩算法,对目标数据进行压缩,以得到压缩结果集合,压缩结果集合包括与至少两种压缩算法相关联的至少两个压缩结果子集合。至少两种压缩算法例如包括但不限于上述方法300对应的压缩算法和差分压缩算法。应当理解,这两种压缩算法只是举例说明,也可以采用其他的压缩算法,本公开的范围在此不受限制。
例如,终端设备110可以先根据方法300对目标数据进行压缩之后,再根据差分压缩算法重复执行以下步骤直至参考数据集合处理完毕:获取步骤:从参考数据集合获取未处理的参考数据。基于参考数据和差分压缩算法,确定目标数据的压缩结果。确定压缩结果的长度是否小于第一乘积。如果确定压缩结果的长度大于或等于第一乘积,则回到获取步骤。如果确定压缩结果的长度小于第一乘积,则确定第一压缩结果是否为空。如果确定第一压缩结果为空,则将第一压缩结果和第一参考数据标识分别确定为压缩结果和参考数据的标识。如果确定第一压缩结果不为空,则确定压缩结果的长度是否小于第一压缩结果的长度,第一压缩结果包括第一压缩数据和第一编码信息。如果确定压缩结果的长度小于第一压缩结果的长度,则将第一压缩结果和第一参考数据标识分别确定为压缩结果和参考数据的标识。
在此情况下,终端设备110如果确定找到第一压缩结果,则还可以向服务器120发送与第一压缩结果相关联的压缩算法标识。例如,与方法300对应的压缩算法标识可以为1,与差分压缩算法对应的压缩算法标识为2,则如果找到的第一压缩结果是采用方法300进行压缩的,则除了压缩结果、参考数据标识以及校验数据之外,还向服务器120发送压缩算法标识1,如果找到的第一压缩结果是采用差分压缩算法进行压缩的,则还向服务器120发送压缩算法标识2。通过压缩算法标识可以使得服务器从至少两种解压算法中确定正确的解压算法进行解压。
由此,能够针对设备端运算资源有较大冗余的特点,采用至少两种压缩算法来进行压缩,从而传输最优的压缩结果。
备选地或者附加地,在一些实施例中,上述至少两种压缩算法可以是经过终端设备110和服务器120相互确认的。
例如,在终端设备110与服务器110建立连接之后,终端设备110可以向服务器120发送支持的压缩算法标识集合。压缩算法标识集合可以包括至少一个压缩算法标识。
随后,终端设备110可以从服务器120接收确认支持的至少两个压缩算法标识,至少两个压缩算法标识与上述至少两种压缩算法相关联。至少两个压缩算法标识可以是服务器120基于终端设备110的历史数据确定的。在从服务器120接收确认支持的至少两个压缩算法标识之后,终端设备110可以基于与至少两个压缩算法标识相关联的至少两种压缩算法对目标数据进行压缩。
由此,能够利用经过终端设备和服务器相互确认的至少两种压缩算法来进行压缩,避免出现终端设备采用的压缩算法在服务器处不支持的情况。此外,服务器可以根据大数据分析的结果,智能地选择设备端使用的最优压缩算法集合。
备选地或者附加地,在一些实施例中,终端设备110还可以确定至少两个压缩算法标识与压缩算法标识集合是否有关。例如,确定至少两个压缩算法标识是否位于压缩算法标识集合内,如果确定是,则有关,否则无关。
如果终端设备110确定至少两个压缩算法标识与压缩算法标识集合无关,则经由服务器120获取与至少两个压缩算法标识相关联的压缩算法。例如,可以经由服务器120远程升级终端设备110的固件或压缩脚本,使得终端设备110支持与至少两个压缩算法标识相关联的压缩算法。
由此,能够在终端设备不支持服务器确认支持的至少两个压缩算法标识的情况下,从服务器获取相关的压缩算法,以实现压缩。
图4示出了根据本公开的实施例的用于数据接收的方法400的流程图。例如,方法400可以由如图1所示的服务器120来执行。应当理解的是,方法400还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框402处,服务器120从终端设备110接收压缩结果、参考数据标识和校验数据。
在框404处,服务器120获取与参考数据标识相关联的参考数据。服务器120例如可维护有参考缓冲区122,其中包括参考数据集合130,可以从参考数据集合130中获取与参考数据标识相关联的参考数据。
在框406处,服务器120基于压缩结果和参考数据,生成目标数据。在一些实施例中,压缩结果包括编码信息和压缩数据,编码信息包括预定长度的多个数据片段的排序结果。预定长度例如包括但不限于1字节。下文结合图5描述在此情况下用于生成目标数据的方法。
在框408处,服务器120生成目标数据的校验数据。校验数据例如包括但不限于CRC8校验数据。
在框410处,服务器120确定生成的校验数据与接收的校验数据是否相同。
如果在框410处服务器120确定生成的校验数据与接收的校验数据不同,则在框412处向终端设备110发送解压错误消息。
如果在框410处服务器120确定生成的校验数据与接收的校验数据相同,则在框414处存储目标数据。
由此,能够基于接收的参考数据标识确定参考数据,基于参考数据实现目标数据的解压。
备选地或者附加地,在一些实施例中,服务器120还可以从终端设备110接收参考数据,将参考数据添加到参考缓冲区120中,以及向终端设备110回复确认消息。此外,服务器120还可以从终端设备110还可以接收参考数据标识,例如编号,以及以该编号将参考数据添加到参考缓冲区120中。参考缓冲区中的参考数据的数量如果达到最大,则可以将该参考数据替换掉最旧的参考数据。
由此,能够使得终端设备110发送的参考数据得到确认,从而双方的参考数据保持一致。
图5示出了根据本公开的实施例的用于生成目标数据的方法500的流程图。例如,方法500可以由如图1所示的服务器120来执行。应当理解的是,方法500还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框502处,服务器120基于排序结果,生成哈夫曼二叉树,哈夫曼二叉树包括与多个数据片段相对应的多个叶节点。基于排序结果生成哈夫曼二叉树的过程与压缩过程中的类似,可参见上文,这里不再赘述。
在框504处,服务器120确定压缩数据中的待解码首个比特数据是否为预定值。预定值例如为零。
如果在框504处服务器120确定压缩数据中的待解码首个比特数据为预定值,则在框506处将待解码首个比特数据在解码结果中解码为预定长度的零数据片段。例如,1比特0解码为1字节0,也就是00000000。
针对该待解码首个比特数据解码后,待解码首个比特数据将更新为下一比特数据。
如果在框504处服务器120确定压缩数据中的待解码首个比特数据不为预定值,则在框508处在哈夫曼二叉树中确定与压缩数据中以待解码首个比特数据开始的数据序列相匹配的叶节点。这里相匹配的叶节点指的是基于数据序列按照哈夫曼解码方法在哈夫曼二叉树中的路径中移动从而找到的叶节点。例如,压缩数据中的待解码首个比特数据为1,则下一比特数据如果为0,则从哈夫曼二叉树的根节点访问左子树,如果下一比特数据为1,则访问右子树,直至访问到哈夫曼二叉树的叶节点时停止,此时以待解码首个比特数据开始的数据序列和叶节点相匹配。
在框510处,服务器120将数据序列在解码结果中解码为与叶节点相对应的数据片段。
针对该数据序列解码后,待解码首个比特数据将更新为该数据序列后的下一比特数据。
应当理解,可重复执行步骤504-510直至压缩数据解码完毕。
在框512处,服务器120确定压缩数据是否解码结束。
如果在框512处服务器120确定压缩数据解码结束,则在框514处将解码结果和参考数据每预定长度相加,以得到目标数据。
如果在框512处服务器120确定压缩数据解码未结束,则回到步骤504。
由此,能够基于排序结果重构哈夫曼二叉树对压缩结果进行解码,并对待解码的首个比特预定值做特殊处理,实现压缩结果的正确解码。
备选地或者附加地,在一些实施例中,排序结果还包括第一转义码,哈夫曼二叉树还包括与第一转义码相对应的叶节点。
在此情况下,服务器110还可以确定相匹配的叶节点是否与第一转义码相对应。
如果服务器110确定相匹配的叶节点与第一转义码相对应,则获取压缩数据中紧接数据序列之后的预定长度的第一数据片段,以及将数据序列和第一数据片段在解码结果中解码为第一数据片段。
由此,能够实现上述编码过程中针对出现1次的数据片段的转义编码的解码过程。
备选地或者附加地,在一些实施例中,排序结果还包括第二转义码,哈夫曼二叉树还包括与第二转义码相对应的叶节点。
在此情况下,服务器110还可以确定相匹配的叶节点是否与第二转义码相对应。
如果服务器110确定相匹配的叶节点与第二转义码相对应,则确定压缩数据中紧接数据序列之后的预定长度的第二数据片段所对应的数值N,获取解码结果中的当前最后的预定长度的第三数据片段,以及将数据序列和第二数据片段在解码结果中解码为N-1个第三数据片段。
由此,能够实现上述编码过程中针对连续出现的数据片段的长度转义编码的解码过程。
备选地或者附加地,在一些实施例中,服务器120还可以从终端设备110接收压缩算法标识,以及利用与压缩算法标识相关联的压缩算法,基于压缩结果和参考数据,生成目标数据。例如,如果接收的压缩算法标识为第一压缩算法标识,例如1,则可以采用方法500来生成目标数据。如果接收的压缩算法标识为第二压缩算法标识,例如2,则可以采用差分算法,生成目标数据。
备选地或者附加地,在一些实施例中,服务器120还可以从终端设备110接收支持的压缩算法标识集合,以及向终端设备110发送确认支持的至少两个压缩算法标识。除了压缩算法标识之外,终端设备110和服务器120之间还可以相互传递压缩算法参数,例如参考缓冲区中的参考数据的数量N,最大允许压缩率,最小允许压缩率等等。
例如,服务器120可以在与终端设备110建立连接之后,从终端设备110接收终端设备110支持的压缩算法标识集合,其中可以包括至少一个压缩算法标识。随后,服务器120可以确定服务器120支持的至少两个压缩算法标识,并发送给终端设备110。至少两个压缩算法标识可以是服务器120基于终端设备110的历史数据进行大数据分析确定的。至少两个压缩算法标识可以与压缩算法标识集合有关或者无关。
由此,能够使得终端设备利用双方互相确认的压缩算法标识进行压缩,避免终端设备采用的压缩算法在服务器端得不到正确解压。
备选地或者附加地,在一些实施例中,如果服务器120确定至少两个压缩算法标识与压缩算法标识集合无关,则向终端设备110发送与至少两个压缩算法标识相关联的压缩算法。
由此,能够在终端设备不支持服务器确认支持的压缩算法的情况下,对终端设备进行压缩算法远程更新。
图8示出了可以用来实施本公开内容的实施例的示例设备800的示意性框图。例如,如图1所示的终端设备110和服务器120可以由设备800来实施。如图所示,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的计算机程序指令或者从存储单元808加载到随机存取存储器(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。CPU 801、ROM802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标、麦克风等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法200-500,可由中央处理单元801执行。例如,在一些实施例中,方法200-500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序被加载到RAM 803并由CPU 801执行时,可以执行上文描述的方法200-500的一个或多个动作。
本公开涉及方法、装置、系统、电子设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (20)
1.一种用于数据发送的方法,包括:
如果确定参考缓冲区不为空,则基于所述参考缓冲区中的参考数据集合,对待发送的目标数据进行压缩,以得到压缩结果集合;
确定是否从所述压缩结果集合中找到第一压缩结果,所述第一压缩结果的长度在所述压缩结果集合中最短并且小于最大允许压缩率与所述目标数据的长度的第一乘积;
如果确定找到所述第一压缩结果,则发送步骤:向服务器发送所述第一压缩结果、与所述第一压缩结果相关联的第一参考数据标识以及与所述目标数据相关联的校验数据;以及
如果确定未找到所述第一压缩结果或者确定所述参考缓冲区为空,则将所述目标数据作为参考数据向所述服务器进行发送,
其中对所述目标数据进行压缩包括重复执行以下步骤直至所述参考数据集合处理完毕:
获取步骤:从所述参考数据集合获取未处理的参考数据;
将所述目标数据与所述参考数据每预定长度进行相减,以得到差值数据;
在所述差值数据中确定彼此不同的、所述预定长度的多个非零数据片段以及所述多个非零数据片段的出现次数;
基于所述出现次数,生成所述多个非零数据片段的排序结果,以作为压缩结果中的编码信息;
基于所述排序结果,生成哈夫曼二叉树;
将所述差值数据中的、所述预定长度的零数据片段编码为1比特预定值;以及
基于所述哈夫曼二叉树,对所述差值数据中的、所述预定长度的非零数据片段进行编码,以得到所述压缩结果中的压缩数据。
2.根据权利要求1所述的方法,其中生成所述排序结果包括:
确定出现次数为1的非零数据片段的个数,作为第一转义码的出现次数;以及
将所述第一转义码与所述多个非零数据片段中的出现次数大于1的非零数据片段按照出现次数进行排序,以得到所述排序结果;以及
其中对所述差值数据中的、所述预定长度的非零数据片段进行编码包括:
如果确定所述非零数据片段的出现次数为1,则将所述非零数据片段编码为包括所述哈夫曼二叉树中与所述第一转义码相对应的叶节点的编码数据和所述非零数据片段的序列;以及
如果确定所述非零数据片段的出现次数大于1,则基于所述哈夫曼二叉树中与所述非零数据片段相对应的叶节点的编码数据,对所述非零数据片段进行编码。
3.根据权利要求2所述的方法,其中生成所述排序结果还包括:
在所述排序结果的末尾添加第二转义码;以及
对所述非零数据片段进行编码包括:
确定所述非零数据片段在所述差值数据中的连续个数;
如果确定所述连续个数大于预定连续个数,则确定包括所述哈夫曼二叉树中与所述非零数据片段相对应的叶节点的编码数据、所述哈夫曼二叉树中与所述第二转义码相对应的叶节点的编码数据和所述连续个数的所述预定长度表示的第一序列的第一长度是否小于所述连续个数与所述哈夫曼二叉树中与所述非零数据片段相对应的叶节点的编码数据的长度的第二乘积;
如果确定所述第一长度小于所述第二乘积,则将所述连续个数个所述非零数据片段编码为所述第一序列;以及
如果确定所述第一长度大于或等于所述第二乘积,则将所述连续个数个所述非零数据片段编码为所述连续个数个所述哈夫曼二叉树中与所述非零数据片段相对应的叶节点的编码数据。
4.根据权利要求1所述的方法,其中对所述目标数据进行压缩还包括重复执行以下步骤直至所述参考数据集合处理完毕:
确定包括所述编码信息和所述压缩数据的压缩结果的长度是否小于所述第一乘积;
如果确定所述压缩结果的长度大于或等于所述第一乘积,则回到所述获取步骤;
如果确定所述压缩结果的长度小于所述第一乘积,则确定所述第一压缩结果是否为空;
如果确定所述第一压缩结果不为空,则确定所述压缩结果的长度是否小于所述第一压缩结果的长度;
如果确定所述压缩结果的长度小于所述第一压缩结果的长度或者确定所述第一压缩结果为空,则将所述第一压缩结果和所述第一参考数据标识分别确定为所述压缩结果和所述参考数据的标识。
5.根据权利要求4所述的方法,其中对所述目标数据进行压缩还包括:
如果确定所述第一压缩结果的长度小于最小允许压缩率与所述目标数据的长度的乘积,则转到所述发送步骤。
6.根据权利要求4所述的方法,其中确定是否从所述压缩结果集合中找到所述第一压缩结果包括:
确定所述第一压缩结果是否为空;
如果确定所述第一压缩结果不为空,则确定找到所述第一压缩结果;以及
如果确定所述第一压缩结果为空,则确定未找到所述第一压缩结果。
7.根据权利要求1所述的方法,其中所述预定长度包括1字节。
8.根据权利要求1所述的方法,还包括:
如果确定在预定时间内从所述服务器接收到针对所述目标数据的确认,则将所述目标数据作为所述参考数据添加到所述参考缓冲区;
如果确定在所述预定时间内未从所述服务器接收到所述确认,则确定针对所述目标数据的重传是否达到预定次数;以及
如果确定所述重传未达到所述预定次数,则将所述目标数据作为参考数据向所述服务器进行重传。
9.根据权利要求1所述的方法,还包括:
如果确定从所述服务器接收到解压错误消息,则清空所述参考缓冲区。
10.根据权利要求1所述的方法,其中对所述目标数据进行压缩包括基于所述参考数据集合和至少两种压缩算法,对所述目标数据进行压缩,以得到所述压缩结果集合,所述压缩结果集合包括与所述至少两种压缩算法相关联的至少两个压缩结果子集合;以及
所述方法还包括:
如果确定找到所述第一压缩结果,则还向所述服务器发送与所述第一压缩结果相关联的压缩算法标识。
11.根据权利要求10所述的方法,还包括:
向所述服务器发送支持的压缩算法标识集合;以及
从所述服务器接收确认支持的至少两个压缩算法标识,所述至少两个压缩算法标识与所述至少两种压缩算法相关联。
12.根据权利要求11所述的方法,还包括:
如果确定所述至少两个压缩算法标识与所述压缩算法标识集合无关,则经由所述服务器获取与所述至少两个压缩算法标识相关联的压缩算法。
13.一种用于数据接收的方法,包括:
从终端设备接收压缩结果、参考数据标识和校验数据;
获取与所述参考数据标识相关联的参考数据;
基于所述压缩结果和所述参考数据,生成目标数据;
生成所述目标数据的校验数据;
如果确定生成的校验数据与接收的校验数据不同,则向所述终端设备发送解压错误消息;以及
如果确定生成的校验数据与接收的校验数据相同,则存储所述目标数据,
其中所述压缩结果包括编码信息和压缩数据,所述编码信息包括预定长度的多个数据片段的排序结果,以及生成所述目标数据包括:
基于所述排序结果,生成哈夫曼二叉树,所述哈夫曼二叉树包括与所述多个数据片段相对应的多个叶节点;
如果确定所述压缩数据中的待解码首个比特数据为预定值,则将所述待解码首个比特数据在解码结果中解码为所述预定长度的零数据片段;
如果确定所述压缩数据中的待解码首个比特数据不为所述预定值,则在所述哈夫曼二叉树中确定与所述压缩数据中以所述待解码首个比特数据开始的数据序列相匹配的叶节点,以及将所述数据序列在所述解码结果中解码为与所述叶节点相对应的数据片段;以及
如果确定所述压缩数据解码结束,则将所述解码结果和所述参考数据每所述预定长度相加,以得到所述目标数据。
14.根据权利要求13所述的方法,其中所述排序结果还包括第一转义码,所述哈夫曼二叉树还包括与所述第一转义码相对应的叶节点,以及生成所述目标数据还包括:
如果确定相匹配的所述叶节点与所述第一转义码相对应,则获取所述压缩数据中紧接所述数据序列之后的所述预定长度的第一数据片段,以及将所述数据序列和所述第一数据片段在所述解码结果中解码为所述第一数据片段。
15.根据权利要求14所述的方法,其中所述排序结果还包括第二转义码,所述哈夫曼二叉树还包括与所述第二转义码相对应的叶节点,以及生成所述目标数据还包括:
如果确定相匹配的所述叶节点与所述第二转义码相对应,则确定所述压缩数据中紧接所述数据序列之后的所述预定长度的第二数据片段所对应的数值N,获取所述解码结果中的当前最后的所述预定长度的第三数据片段,以及将所述数据序列和所述第二数据片段在所述解码结果中解码为N-1个所述第三数据片段。
16.根据权利要求13所述的方法,还包括:
从所述终端设备接收压缩算法标识;以及
生成所述目标数据包括利用与所述压缩算法标识相关联的压缩算法,基于所述压缩结果和所述参考数据,生成所述目标数据。
17.根据权利要求16所述的方法,还包括:
从所述终端设备接收支持的压缩算法标识集合;以及
向所述终端设备发送确认支持的至少两个压缩算法标识。
18.根据权利要求17所述的方法,还包括:
如果确定所述至少两个压缩算法标识与所述压缩算法标识集合无关,则向所述终端设备发送与所述至少两个压缩算法标识相关联的压缩算法。
19.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-18中任一项所述的方法。
20.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-18中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011207924.0A CN112399479B (zh) | 2020-11-03 | 2020-11-03 | 用于数据传输的方法、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011207924.0A CN112399479B (zh) | 2020-11-03 | 2020-11-03 | 用于数据传输的方法、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112399479A CN112399479A (zh) | 2021-02-23 |
CN112399479B true CN112399479B (zh) | 2023-04-07 |
Family
ID=74599103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011207924.0A Active CN112399479B (zh) | 2020-11-03 | 2020-11-03 | 用于数据传输的方法、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112399479B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113282587B (zh) * | 2021-06-01 | 2023-06-16 | 青岛海尔科技有限公司 | 状态数据的传输方法及装置、存储介质、电子装置 |
CN113794724B (zh) * | 2021-09-15 | 2022-05-24 | 中国科学院计算机网络信息中心 | 一种路由起源授权压缩的编码和解码方法及系统 |
US11750213B1 (en) * | 2022-08-31 | 2023-09-05 | Hong Kong Applied Science and Technology Research Institute Company Limited | Train-linking lossless compressor of numeric values |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1671103A (zh) * | 2004-03-15 | 2005-09-21 | 微软公司 | 数据压缩 |
CN101690079A (zh) * | 2007-03-12 | 2010-03-31 | 思杰系统有限公司 | 用于使用压缩历史来改进网络性能的系统和方法 |
CN110008192A (zh) * | 2019-04-12 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种数据文件压缩方法、装置、设备及可读存储介质 |
CN111064471A (zh) * | 2018-10-16 | 2020-04-24 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10897270B2 (en) * | 2018-06-06 | 2021-01-19 | Yingquan Wu | Dynamic dictionary-based data symbol encoding |
-
2020
- 2020-11-03 CN CN202011207924.0A patent/CN112399479B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1671103A (zh) * | 2004-03-15 | 2005-09-21 | 微软公司 | 数据压缩 |
CN101690079A (zh) * | 2007-03-12 | 2010-03-31 | 思杰系统有限公司 | 用于使用压缩历史来改进网络性能的系统和方法 |
CN111064471A (zh) * | 2018-10-16 | 2020-04-24 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及电子设备 |
CN110008192A (zh) * | 2019-04-12 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种数据文件压缩方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112399479A (zh) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112399479B (zh) | 用于数据传输的方法、电子设备和存储介质 | |
US8090027B2 (en) | Data compression using an arbitrary-sized dictionary | |
CN109831409B (zh) | 数据传输方法、装置、计算机可读存储介质及电子设备 | |
CN107395209B (zh) | 数据压缩方法、数据解压缩方法及其设备 | |
EP1134900B1 (en) | Method and apparatus for data compression of network packets | |
US9094038B2 (en) | Compressing and decompressing signal data | |
US10817460B2 (en) | RDMA data sending and receiving methods, electronic device, and readable storage medium | |
US8872677B2 (en) | Method and apparatus for compressing data-carrying signals | |
US20100225506A1 (en) | Multi-Mode Encoding for Data Compression | |
US10015285B2 (en) | System and method for multi-stream compression and decompression | |
CN111262876B (zh) | 基于区块链的数据处理方法、装置、设备以及存储介质 | |
US10735025B2 (en) | Use of data prefixes to increase compression ratios | |
WO2002039651A1 (en) | Data compression of request sequences in arq protocols | |
US7605721B2 (en) | Adaptive entropy coding compression output formats | |
CN112995199B (zh) | 数据编解码方法、装置、传输系统、终端设备及存储介质 | |
US6778109B1 (en) | Method for efficient data encoding and decoding | |
US10565182B2 (en) | Hardware LZMA compressor | |
US10873836B2 (en) | Efficient short message compression | |
WO2021036189A1 (zh) | Rdma数据发送及接收方法、电子设备及可读存储介质 | |
US10742783B2 (en) | Data transmitting apparatus, data receiving apparatus and method thereof having encoding or decoding functionalities | |
CN105491544A (zh) | 一种短消息压缩通信方法和系统 | |
US7564383B2 (en) | Compression ratio of adaptive compression algorithms | |
CN110995274B (zh) | 一种解压缩方法及装置 | |
CN112597082B (zh) | 总线的数据传输方法及电子设备 | |
KR101676420B1 (ko) | 데이터의 압축 및 복원 방법과 장치 |
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 |