CN106685429B - 整数压缩方法及装置 - Google Patents

整数压缩方法及装置 Download PDF

Info

Publication number
CN106685429B
CN106685429B CN201611243540.8A CN201611243540A CN106685429B CN 106685429 B CN106685429 B CN 106685429B CN 201611243540 A CN201611243540 A CN 201611243540A CN 106685429 B CN106685429 B CN 106685429B
Authority
CN
China
Prior art keywords
compressed
integer
integers
bit array
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.)
Active
Application number
CN201611243540.8A
Other languages
English (en)
Other versions
CN106685429A (zh
Inventor
刘京洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huaduo Network Technology Co Ltd
Original Assignee
Guangzhou Huaduo Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Huaduo Network Technology Co Ltd filed Critical Guangzhou Huaduo Network Technology Co Ltd
Priority to CN201611243540.8A priority Critical patent/CN106685429B/zh
Publication of CN106685429A publication Critical patent/CN106685429A/zh
Application granted granted Critical
Publication of CN106685429B publication Critical patent/CN106685429B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种整数压缩方法及装置,属于数据压缩领域。所述方法包括:获取待压缩整数集合,待压缩整数集合中各个待压缩整数的整数长度相同,且各个待压缩整数的数值互不相同;对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,目标位数组中的数组位与压缩整数集合中的待压缩整数对应;通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据。相较于哈夫曼编码算法重复遍历整数集合影响压缩速度,本发明实施例中,整个压缩过程中只需对待压缩整数集合进行一次遍历,从而提高了整数集合的压缩速度。

Description

整数压缩方法及装置
技术领域
本发明实施例涉及数据压缩领域,特别涉及一种整数压缩方法及装置。
背景技术
在计算机网络中,为了提高数据的传输及存储效率,在确保数据完整性的前提下,数据在传输及存储前需要经过数据压缩处理。
相关技术中,计算机通常采用哈夫曼编码算法对数据进行数据压缩处理。比如,计算机在传输大量32位IP(Internet Protocol,互联网协议)地址前,通常采用哈夫曼编码算法对IP地址进行编码压缩,从而对压缩后的数据进行传输。然而,利用哈夫曼编码算法对数据进行编码压缩时,需要进行两次完整的数据遍历,其中,第一次遍历用于统计数据的出现概率,而第二次遍历用于产生编码,导致哈夫曼编码算法的编码速度较慢,影响数据的压缩速度。
发明内容
为了解决相关技术中哈夫曼编码算法的编码速度较慢,影响数据压缩速度的问题,本发明实施例提供了一种整数压缩方法及装置。所述技术方案如下:
根据本发明实施例的第一方面,提供了一种整数压缩方法,该方法包括:
获取待压缩整数集合,待压缩整数集合中各个待压缩整数的整数长度相同,且各个待压缩整数的数值互不相同;
对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,目标位数组中的数组位与压缩整数集合中的待压缩整数对应;
通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据。
可选的,对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,包括:
根据待压缩整数的整数长度生成初始位数组,初始位数组中包含2n个数组位,且各个数组位均为0,n为整数长度;
读取待压缩整数集合中各个待压缩整数;
将待压缩整数在初始位数组中对应的数组位设置为1,生成目标位数组。
可选的,对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组之前,包括:
获取内存容量;
根据待压缩整数的整数长度计算目标位数组的预计内存占用量,预计内存占用量为2nbit,n为整数长度;
若预计内存占用量小于内容容量,则执行对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组的步骤。
可选的,通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据之前,还包括:
获取待压缩集合中待压缩整数的数量以及待压缩整数的整数长度;
根据待压缩整数的数量以及整数长度计算待压缩整数集合的极限压缩率;
若极限压缩率小于预设压缩率阈值,则执行通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据的步骤。
可选的,极限压缩率=mn÷{-2n×[m/2n×log2(m/2n)+(1-m/2n)×log2(1-m/2n)]},
其中,m为待压缩整数的数量,n为整数长度。
可选的,预定压缩算法为区间编码算法或算数编码算法。
根据本发明实施例的第二方面,提供了一种整数压缩装置,该装置包括:
第一获取模块,用于获取待压缩整数集合,待压缩整数集合中各个待压缩整数的整数长度相同,且各个待压缩整数的数值互不相同;
生成模块,用于对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,目标位数组中的数组位与压缩整数集合中的待压缩整数对应;
压缩模块,用于通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据。
可选的,生成模块,包括:
第一生成单元,用于根据待压缩整数的整数长度生成初始位数组,初始位数组中包含2n个数组位,且各个数组位均为0,n为整数长度;
读取单元,用于读取待压缩整数集合中各个待压缩整数;
第二生成单元,用于将待压缩整数在初始位数组中对应的数组位设置为1,生成目标位数组。
可选的,该装置,包括:
第二获取模块,用于获取内存容量;
第一计算模块,用于根据待压缩整数的整数长度计算目标位数组的预计内存占用量,预计内存占用量为2nbit,n为整数长度;
生成模块,还用于在预计内存占用量小于内容容量时,对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组。
可选的,该装置,还包括:
第三获取模块,用于获取待压缩集合中待压缩整数的数量以及待压缩整数的整数长度;
第二计算模块,用于根据待压缩整数的数量以及整数长度计算待压缩整数集合的极限压缩率;
压缩模块,还用于在极限压缩率小于预设压缩率阈值时,通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据。
可选的,极限压缩率=mn÷{-2n×[m/2n×log2(m/2n)+(1-m/2n)×log2(1-m/2n)]},
其中,m为待压缩整数的数量,n为整数长度。
可选的,预定压缩算法为区间编码算法或算数编码算法。
通过遍历待压缩整数集合中的各个待压缩整数,从而对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,并进一步对生成的目标位数组进行压缩,得到相应的压缩数据,进而实现对整数集合的压缩;相较于哈夫曼编码算法重复遍历整数集合影响压缩速度,本发明实施例中,整个压缩过程中只需对待压缩整数集合进行一次遍历,从而提高了整数集合的压缩速度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明一个实施例提供的整数压缩方法的方法流程图;
图2A示出了本发明另一个实施例提供的整数压缩方法的方法流程图;
图2B是服务器通过桶排序生成目标位数组的实施示意图;
图2C示出了本发明另一个实施例提供的整数压缩方法的方法流程图;
图2D示出了本发明另一个实施例提供的整数压缩方法的方法流程图;
图2E是待压缩整数集合的极限压缩率与待压缩整数数量的关系示意图;
图3示出了本发明一个实施例提供的整数压缩装置的结构方框图;
图4示出了本发明另一个实施例提供的整数压缩装置的结构方框图;
图5示出了本发明一个实施例提供的整数压缩装置的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明各个实施例提供的整数压缩方法用于具有数据处理功能的计算机或服务器,其中,该服务器为单台服务器、多台服务器构成的服务器集群或云计算中心。并且,由于在压缩过程中需要根据待压缩整数集合生成位数组,而该位数组存储在内存中,因此,为了避免压缩过程因内存不足导致压缩失败,计算机或服务器需要配置大容量内存。为了方便描述,下述实施例以该整数压缩方法用于服务器为例进行说明,并不对本发明构成限定。
请参考图1,其示出了本发明一个实施例提供的整数压缩方法的方法流程图。该方法包括:
步骤101,获取待压缩整数集合,待压缩整数集合中各个待压缩整数的整数长度相同,且各个待压缩整数的数值互不相同。
其中,本发明各个实施例所述的待压缩整数均为二进制整数。
在一种可能的实施方式中,当服务器需要对IP地址白名单进行传输时,获取到的待压缩整数集合即为IP地址集合,待压缩整数集合中包含的待压缩整数即为32位(二进制)的IP地址。
步骤102,对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,目标位数组中的数组位与压缩整数集合中的待压缩整数对应。
获取到待压缩整数集合后,服务器即遍历读取待压缩整数集合中的各个待压缩整数,并对待压缩整数进行桶排序。当对待压缩整数集合完成完整遍历后,服务器即根据桶排序结果生成目标位数组。
其中,该目标位数组中各个数组位的取值为0或1,且目标位数组中取值为1的数组位的数量与待压缩整数集合中待压缩整数的数量相同,即目标位数组中取值为1的数组位与待压缩整数集合中的待压缩整数一一对应。
步骤103,通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据。
在生成目标位数组的过程中,服务器获取目标位数组中取值为1的位数组的数量(即待压缩整数的数量),并进一步根据目标位数组中0和1的概率,通过预定压缩算法对目标位数组进行压缩,从而得到待压缩整数集合对应的压缩数据。
可选的,服务器采用的预定压缩算法为区间编码算法或算数编码算法。
与传统的哈夫曼编码算法相比,利用本实施例提供的整数压缩方法对整数集合进行压缩时,服务器通过桶排序生成待压缩整数集合对应的目标位数组,仅需要遍历一次待压缩整数集合(步骤102),且算法复杂度较低(为O(n)),极大的提高了压缩整数集合的速度。
同时,服务器并非直接对待压缩整数集合进行压缩,而是利用待压缩整数集合的无序性(即该待压缩整数集合中各个待压缩整数之间没有先后顺序)及无重复性的特点,采用桶排序的方法得到目标位数组,并通过压缩目标位数组的方式实现整数集合压缩,从而减少了压缩时的信息熵,提高了待压缩整数集合的压缩率。
综上所述,本实施例提供的整数压缩方法中,通过遍历待压缩整数集合中的各个待压缩整数,从而对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,并进一步对生成的目标位数组进行压缩,得到相应的压缩数据,进而实现对整数集合的压缩;相较于哈夫曼编码算法重复遍历整数集合影响压缩速度,本发明实施例中,整个压缩过程中只需对待压缩整数集合进行一次遍历,从而提高了整数集合的压缩速度。
在具体应用场景下,服务器中存储有不同组织的白名单,且各个白名单中IP地址达到数百万。当需要快速传输这些白名单时,服务器即采用本发明实施例提供的整数压缩方法对白名单中的IP地址集合进行压缩。下面采用示意性的实施例对压缩IP地址集合的过程进行说明。
请参考图2A,其示出了本发明另一个实施例提供的整数压缩方法的方法流程图。该方法包括:
步骤201,获取待压缩整数集合,待压缩整数集合中各个待压缩整数的整数长度相同,且各个待压缩整数的数值互不相同。
当需要对白名单中的IP地址进行压缩时,服务器即获取包含各个IP地址的IP地址集合。比如,服务器获取到的IP地址集合中包含300万个IP地址,且每个IP地址的大小为4Byte,则该IP地址集合的原始大小即为3000000×4=12000000Byte=11.44MB。
步骤202,根据待压缩整数的整数长度生成初始位数组,初始位数组中包含2n个数组位,且各个数组位均为0,n为整数长度。
在对待压缩整数进行桶排序前,服务器需要根据待压缩整数的整数长度在内存中生成初始位数组,方便后续根据待压缩整数对初始位数组中对应的数组位进行标定。其中,初始位数组中各个数组位的初始值均为0,且各个数组位对应一个整数。
示意性的,如图2B所示,当待压缩整数为32位IP地址时,服务器生成的初始位数组中即包含232个数组位(所占的内存空间为232bit=512MB),且各个数组位均为0。其中,该初始位数组中第1个数组位对应IP地址0.0.0.0(即32位均为0的IP地址),该初始位数组中最后1个数组位对应IP地址255.255.255.255(即32位均为1的IP地址)。该初始位数组中倒数第3个数组位对应IP地址255.255.255.253。
步骤203,读取待压缩整数集合中各个待压缩整数。
生成初始位数组后,服务器遍历读取待压缩整数集合中的各个待压缩整数。
比如,当获取到的IP地址集合中包含300万个IP地址时,服务器顺序读取IP地址集合中的各个IP地址。
步骤204,将待压缩整数在初始位数组中对应的数组位设置为1,生成目标位数组。
对于待压缩整数集合中的各个待压缩整数,服务器根据读取到的待压缩整数的数值,将初始位数组中对应的数组位由0设置为1(该过程又被称为在桶内对应位置进行描点)。由于该初始位数组能够覆盖所有n位的整数,因此,待压缩整数集合中的各个待压缩整数均能在初始位数组中找到对应的数组位。当完整遍历待压缩整数集合后,即生成压缩整数集合对应的目标位数组。
通过上述步骤,根据目标位数组中取值为1的数组位的数量,服务器可以进一步确定待压缩整数集合中待压缩整数的数量。
比如,如图2B所示,当读取到IP地址为0.0.0.0时,服务器即将初始位数组中的第1个数组位设置为1;当读取到IP地址为255.255.255.253时,服务器即将初始位数组中的倒数第3个数组位设置为1;当读取到IP地址为255.255.255.255时,服务器即将初始位数组中的最后一个数组位设置为1。
步骤205,通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据。
通过上述步骤201至204,服务器得到固定大小的中间数据(即目标位数组),进一步的,服务器对该中间数据进行压缩,从而得到待压缩整数集合对应的压缩数据,
可选的,通过分析取值为1的位数组在目标位数组中的分布情况,服务器能够确定IP地址集合中IP地址的分布密度,即各个网段的密度情况,从而根据需求对部分网段的IP地址进行过滤(将数组位的值置为0),本发明实施例并不对此进行限定。
在一种可能的实施方式中,当IP地址集合中包含300万个IP地址,且服务器采用区间编码算法对生成的目标位数组进行压缩时,取值为1的数组位在目标位数组中出现的概率P1=3000000/232=0.000698,取值为0的数组位在目标位数组中出现的概率P0=1-3000000/232=0.999302,即目标位数组中1的信息量为Ie=-log20.000698,目标位数组中0的信息量为Ie=-log20.999302。进一步的,目标位数组中各个数据为的平均信息量为I=-(P1log2P1+P0log2P0)=0.0083,即该目标位数组的理论压缩值为512MB×0.0083=4.25MB。最终,300万个IP地址由原先的11.44MB压缩为4.25MB,压缩率达到了4.25÷11.44=37%。
综上所述,本实施例提供的整数压缩方法中,通过遍历待压缩整数集合中的各个待压缩整数,从而对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,并进一步对生成的目标位数组进行压缩,得到相应的压缩数据,进而实现对整数集合的压缩;相较于哈夫曼编码算法重复遍历整数集合影响压缩速度,本发明实施例中,整个压缩过程中只需对待压缩整数集合进行一次遍历,从而提高了整数集合的压缩速度。
由上述步骤202可知,服务器生成的初始位数组存储在内存中,为了避免因生成的初始位数组过大而无法存储在内存中,导致无法进行后续的数据压缩,在一种可能的实施方式中,如图2C所示,上述步骤202之前还包括如下步骤。
步骤206,获取内存容量。
在一种可能的实施方式中,服务器获取到待压缩整数集合后,进一步获取自身的内存容量。需要说明的是,本步骤与步骤201之间不存在严格的先后关系,本实施例仅以步骤201在步骤206之前执行为例进行说明,并不对两者的先后顺序构成限定。
比如,服务器获取到自身的内存容量为32GB。
步骤207,根据待压缩整数的整数长度计算目标位数组的预计内存占用量,预计内存占用量为2nbit,n为整数长度。
获取到待压缩整数集合后,服务器根据待压缩整数集合中待压缩整数的整数长度计算生成的初始位数组(与最终生成的目标位数组的大小相同)的预计内存占用量,其中,当待压缩整数的整数长度为n时,初始位数组的预计内存占用量为2nbit。
比如,当待压缩整数为IP地址时,服务器生成的初始位数组的预计内存占用量为232bit=512MB。
计算得到预计内存占用量后,服务器检测预计内存占用量是否小于服务器的内存容量,若预计内存占用量小于服务器的内存容量,服务器则执行下述步骤202;若预计内存占用量大于服务器的内存容量,服务器则发出提示,指示采用其他对内存需求较低的算法(比如哈夫曼编码算法或数值编码算法)进行压缩。
本实施例中,服务器获取到待压缩整数集合后,根据待压缩整数集合中待压缩整数的整数长度计算生成的位数组的预计内存占用量,并根据该预计内存占用量确定自身内存是否能够完整存储该位数组,避免因无法完整存储位数组而导致压缩失败。
采用本发明实施例提供的整数压缩方法进行整数集合压缩时,待压缩整数集合最终的压缩率与待压缩整数的整数长度以及数量有关。在整数长度相同的情况下,待压缩整数的数量越多,压缩整数集合的压缩率越低(压缩效果越好),压缩整数的数量越少,压缩整数集合的压缩率高(压缩效果越差)。因此,当待压缩整数集合需要满足预定压缩率要求时,服务器需要预先计算待压缩整数集合的极限压缩率,并在该极限压缩率符合压缩率要求时进行压缩。在一种可能的实施方式中,如图2D所示,上述步骤205之前,还包括如下步骤。
步骤208,获取待压缩集合中待压缩整数的数量以及待压缩整数的整数长度。
服务器生成目标位数组后,获取待压缩整数的整数长度,并进一步根据目标位数组中取值为1的数组位的数量确定待压缩集合中待压缩整数的数量。
比如,当对IP地址集合进行压缩,且目标位数组中取值为1的数组位的数量为300万时,服务器确定待压缩集合中待压缩整数的数量为300万,且待压缩整数的整数长度为32。
步骤209,根据待压缩整数的数量以及整数长度计算待压缩整数集合的极限压缩率。
可选的,服务器根据获取到的待压缩整数的数量以及整数长度,通过预定计算公式计算该待压缩整数集合的极限压缩率。其中,待压缩整数集合极限压缩率=mn÷{-2n×[m/2n×log2(m/2n)+(1-m/2n)×log2(1-m/2n)]},m为待压缩整数的数量,n为整数长度。
示意性的,当待压缩整数为IP地址时(即m=32)时,待压缩整数集合的极限压缩率与待压缩整数数量的关系如图2E所示。其中,X轴为IP地址的数量,Y轴为极限压缩率。
进一步的,服务器检测计算得到的极限压缩率是否小于预设压缩率阈值,若极限压缩率小于预设压缩率阈值,服务器则执行下述步骤205,若极限压缩率大于预设压缩率阈值,服务器则发出提示,指示采用其他压缩率更高算法(比如哈夫曼编码算法或数值编码算法)进行压缩。
本实施例中,当待压缩整数集合具有压缩率需求时,服务器根据待压缩整数的数量以及整数长度计算待压缩整数集合的极限压缩率,并在极限压缩率满足预设压缩率需求时进行压缩,避免在无法满足压缩率需求时进行压缩造成的处理资源浪费。
请参考图3,其示出了本发明一个实施例提供的整数压缩装置的结构方框图。该整数压缩装置可以通过软件、硬件或者两者的结合实现成为服务器的全部或者一部分。该整数压缩装置,包括:
第一获取模块310,用于获取待压缩整数集合,待压缩整数集合中各个待压缩整数的整数长度相同,且各个待压缩整数的数值互不相同;
生成模块320,用于对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,目标位数组中的数组位与压缩整数集合中的待压缩整数对应;
压缩模块330,用于通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据。
综上所述,本实施例提供的整数压缩装置中,通过遍历待压缩整数集合中的各个待压缩整数,从而对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,并进一步对生成的目标位数组进行压缩,得到相应的压缩数据,进而实现对整数集合的压缩;相较于哈夫曼编码算法重复遍历整数集合影响压缩速度,本发明实施例中,整个压缩过程中只需对待压缩整数集合进行一次遍历,从而提高了整数集合的压缩速度。
请参考图4,其示出了本发明另一个实施例提供的整数压缩装置的结构方框图。该整数压缩装置可以通过软件、硬件或者两者的结合实现成为服务器的全部或者一部分。该整数压缩装置,包括:
第一获取模块410,用于获取待压缩整数集合,待压缩整数集合中各个待压缩整数的整数长度相同,且各个待压缩整数的数值互不相同;
生成模块420,用于对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,目标位数组中的数组位与压缩整数集合中的待压缩整数对应;
压缩模块430,用于通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据。
可选的,生成模块420,包括:
第一生成单元421,用于根据待压缩整数的整数长度生成初始位数组,初始位数组中包含2n个数组位,且各个数组位均为0,n为整数长度;
读取单元422,用于读取待压缩整数集合中各个待压缩整数;
第二生成单元423,用于将待压缩整数在初始位数组中对应的数组位设置为1,生成目标位数组。
可选的,该装置,包括:
第二获取模块440,用于获取内存容量;
第一计算模块450,用于根据待压缩整数的整数长度计算目标位数组的预计内存占用量,预计内存占用量为2nbit,n为整数长度;
生成模块420,还用于在预计内存占用量小于内容容量时,对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组。
可选的,该装置,还包括:
第三获取模块460,用于获取待压缩集合中待压缩整数的数量以及待压缩整数的整数长度;
第二计算模块470,用于根据待压缩整数的数量以及整数长度计算待压缩整数集合的极限压缩率;
压缩模块430,还用于在极限压缩率小于预设压缩率阈值时,通过预定压缩算法对目标位数组进行压缩,得到待压缩整数集合对应的压缩数据。
可选的,极限压缩率=mn÷{-2n×[m/2n×log2(m/2n)+(1-m/2n)×log2(1-m/2n)]},
其中,m为待压缩整数的数量,n为整数长度。
可选的,预定压缩算法为区间编码算法或算数编码算法。
综上所述,本实施例提供的整数压缩装置中,通过遍历待压缩整数集合中的各个待压缩整数,从而对各个待压缩整数进行桶排序,生成待压缩整数集合对应的目标位数组,并进一步对生成的目标位数组进行压缩,得到相应的压缩数据,进而实现对整数集合的压缩;相较于哈夫曼编码算法重复遍历整数集合影响压缩速度,本发明实施例中,整个压缩过程中只需对待压缩整数集合进行一次遍历,从而提高了整数集合的压缩速度。
本实施例中,服务器获取到待压缩整数集合后,根据待压缩整数集合中待压缩整数的整数长度计算生成的位数组的预计内存占用量,并根据该预计内存占用量确定自身内存是否能够完整存储该位数组,避免因无法完整存储位数组而导致压缩失败。
本实施例中,当待压缩整数集合具有压缩率需求时,服务器根据待压缩整数的数量以及整数长度计算待压缩整数集合的极限压缩率,并在极限压缩率满足预设压缩率需求时进行压缩,避免在无法满足压缩率需求时进行压缩造成的处理资源浪费。
需要说明的是:上述实施例提供的整数压缩装置在进行整数集合压缩时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的整数压缩装置与整数压缩方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图5示出了本发明一个实施例提供的整数压缩装置的框图。该整数压缩装置500可以是计算机或服务器。具体来讲:
装置500包括中央处理单元(CPU)501、包括随机存取存储器(RAM)502和只读存储器(ROM)503的系统存储器504,以及连接系统存储器504和中央处理单元501的系统总线505。装置500还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)506,和用于存储操作系统513、应用程序514和其他程序模块515的大容量存储设备507。
基本输入/输出系统506包括有用于显示信息的显示器508和用于用户输入信息的诸如鼠标、键盘之类的输入设备509。其中显示器508和输入设备509都通过连接到系统总线505的输入输出控制器510连接到中央处理单元501。基本输入/输出系统506还可以包括输入输出控制器510以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器510还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备507通过连接到系统总线505的大容量存储控制器(未示出)连接到中央处理单元501。大容量存储设备507及其相关联的计算机可读介质为装置500提供非易失性存储。也就是说,大容量存储设备507可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器504和大容量存储设备507可以统称为存储器。
根据本发明的各种实施例,装置500还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即装置500可以通过连接在系统总线505上的网络接口单元511连接到网络512,或者说,也可以使用网络接口单元511来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种整数压缩方法,其特征在于,所述方法包括:
获取待压缩整数集合,所述待压缩整数集合中各个待压缩整数的整数长度相同,且各个所述待压缩整数的数值互不相同;
获取内存容量;
根据所述待压缩整数的所述整数长度计算目标位数组的预计内存占用量,所述预计内存占用量为2n bit,n为所述整数长度;
若所述预计内存占用量小于所述内存容量,则对各个所述待压缩整数进行桶排序,生成所述待压缩整数集合对应的目标位数组,所述目标位数组中的数组位与所述压缩整数集合中的所述待压缩整数对应;
通过预定压缩算法对所述目标位数组进行压缩,得到所述待压缩整数集合对应的压缩数据。
2.根据权利要求1所述的方法,其特征在于,所述对各个所述待压缩整数进行桶排序,生成所述待压缩整数集合对应的目标位数组,包括:
根据所述待压缩整数的所述整数长度生成初始位数组,所述初始位数组中包含2n个数组位,且各个数组位均为0,n为所述整数长度;
读取所述待压缩整数集合中各个所述待压缩整数;
将所述待压缩整数在所述初始位数组中对应的所述数组位设置为1,生成所述目标位数组。
3.根据权利要求1或2所述的方法,其特征在于,所述通过预定压缩算法对所述目标位数组进行压缩,得到所述待压缩整数集合对应的压缩数据之前,还包括:
获取所述待压缩集合中所述待压缩整数的数量以及所述待压缩整数的所述整数长度;
根据所述待压缩整数的数量以及所述整数长度计算所述待压缩整数集合的极限压缩率;
若所述极限压缩率小于预设压缩率阈值,则执行通过预定压缩算法对所述目标位数组进行压缩,得到所述待压缩整数集合对应的压缩数据的步骤。
4.根据权利要求3所述的方法,其特征在于,
所述极限压缩率=mn÷{-2n×[m/2n×log2(m/2n)+(1-m/2n)×log2(1-m/2n)]},
其中,m为所述待压缩整数的数量,n为所述整数长度。
5.根据权利要求1或2所述的方法,其特征在于,所述预定压缩算法为区间编码算法或算数编码算法。
6.一种整数压缩装置,其特征在于,所述装置包括:
第一获取模块,用于获取待压缩整数集合,所述待压缩整数集合中各个待压缩整数的整数长度相同,且各个所述待压缩整数的数值互不相同;
第二获取模块,用于获取内存容量;
第一计算模块,用于根据所述待压缩整数的所述整数长度计算目标位数组的预计内存占用量,所述预计内存占用量为2n bit,n为所述整数长度;
生成模块,用于对各个所述待压缩整数进行桶排序,生成所述待压缩整数集合对应的目标位数组,所述目标位数组中的数组位与所述压缩整数集合中的所述待压缩整数对应;
压缩模块,用于通过预定压缩算法对所述目标位数组进行压缩,得到所述待压缩整数集合对应的压缩数据;
所述生成模块,还用于在所述预计内存占用量小于所述内存容量时,对各个所述待压缩整数进行桶排序,生成所述待压缩整数集合对应的所述目标位数组。
7.根据权利要求6所述的装置,其特征在于,所述生成模块,包括:
第一生成单元,用于根据所述待压缩整数的所述整数长度生成初始位数组,所述初始位数组中包含2n个数组位,且各个数组位均为0,n为所述整数长度;
读取单元,用于读取所述待压缩整数集合中各个所述待压缩整数;
第二生成单元,用于将所述待压缩整数在所述初始位数组中对应的所述数组位设置为1,生成所述目标位数组。
8.根据权利要求6或7所述的装置,其特征在于,所述装置,还包括:
第三获取模块,用于获取所述待压缩集合中所述待压缩整数的数量以及所述待压缩整数的所述整数长度;
第二计算模块,用于根据所述待压缩整数的数量以及所述整数长度计算所述待压缩整数集合的极限压缩率;
所述压缩模块,还用于在所述极限压缩率小于预设压缩率阈值时,通过所述预定压缩算法对所述目标位数组进行压缩,得到所述待压缩整数集合对应的所述压缩数据。
9.根据权利要求8所述的装置,其特征在于,
所述极限压缩率=mn÷{-2n×[m/2n×log2(m/2n)+(1-m/2n)×log2(1-m/2n)]},
其中,m为所述待压缩整数的数量,n为所述整数长度。
10.根据权利要求6或7所述的装置,其特征在于,所述预定压缩算法为区间编码算法或算数编码算法。
CN201611243540.8A 2016-12-29 2016-12-29 整数压缩方法及装置 Active CN106685429B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611243540.8A CN106685429B (zh) 2016-12-29 2016-12-29 整数压缩方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611243540.8A CN106685429B (zh) 2016-12-29 2016-12-29 整数压缩方法及装置

Publications (2)

Publication Number Publication Date
CN106685429A CN106685429A (zh) 2017-05-17
CN106685429B true CN106685429B (zh) 2020-07-10

Family

ID=58872088

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611243540.8A Active CN106685429B (zh) 2016-12-29 2016-12-29 整数压缩方法及装置

Country Status (1)

Country Link
CN (1) CN106685429B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110019184B (zh) * 2017-09-04 2021-04-27 北京字节跳动网络技术有限公司 一种压缩和解压缩有序整数数组的方法
CN107895192B (zh) * 2017-12-06 2021-10-08 广州方硅信息技术有限公司 深度卷积网络压缩方法、存储介质和终端
CN109995373B (zh) * 2018-01-03 2023-08-15 上海艾拉比智能科技有限公司 一种整数数组的混合打包压缩方法
CN111522655A (zh) * 2020-03-30 2020-08-11 广东三维家信息科技有限公司 软件内存消耗确定方法及装置
CN117200805B (zh) * 2023-11-07 2024-02-02 成都万创科技股份有限公司 一种mcu的低内存占用的压缩和解压方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0642117A3 (en) * 1993-09-03 1995-03-22 Microsoft Corporation Data compression for speech recognition
CN1753368A (zh) * 2004-09-24 2006-03-29 微软公司 为远程差异压缩寻找候选对象的有效算法
CN101299611A (zh) * 2008-06-30 2008-11-05 中国电子科技集团公司第二十八研究所 一种基于集合游程的数据压缩方法
CN102968496A (zh) * 2012-12-04 2013-03-13 天津神舟通用数据技术有限公司 基于任务驱动和双缓冲机制的并行排序方法
CN103258030A (zh) * 2013-05-09 2013-08-21 西安电子科技大学 基于字典与游长编码的移动设备内存压缩方法
CN104618361A (zh) * 2015-01-22 2015-05-13 中国科学院计算技术研究所 一种网络流数据重排序方法
CN105979265A (zh) * 2016-05-05 2016-09-28 贵州白山云科技有限公司 图片压缩方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782012B2 (en) * 2010-08-27 2014-07-15 International Business Machines Corporation Network analysis

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0642117A3 (en) * 1993-09-03 1995-03-22 Microsoft Corporation Data compression for speech recognition
CN1753368A (zh) * 2004-09-24 2006-03-29 微软公司 为远程差异压缩寻找候选对象的有效算法
CN101299611A (zh) * 2008-06-30 2008-11-05 中国电子科技集团公司第二十八研究所 一种基于集合游程的数据压缩方法
CN102968496A (zh) * 2012-12-04 2013-03-13 天津神舟通用数据技术有限公司 基于任务驱动和双缓冲机制的并行排序方法
CN103258030A (zh) * 2013-05-09 2013-08-21 西安电子科技大学 基于字典与游长编码的移动设备内存压缩方法
CN104618361A (zh) * 2015-01-22 2015-05-13 中国科学院计算技术研究所 一种网络流数据重排序方法
CN105979265A (zh) * 2016-05-05 2016-09-28 贵州白山云科技有限公司 图片压缩方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Compressed texton based sorted visual words co-occurrence matrix for high resolution remote sensing imagery classifcation;Jing Jin 等;《2013 IEEE International Geoscience and Remote Sensing Symposium - IGARSS》;20140127;2605-2608 *
Sorted Compressed tree: An improve method of frequent patterns mining without support constraint;Chuang-Kai Chiou 等;《The 2nd International Conference on Software Engineering and Data Mining》;20100809;328-333 *

Also Published As

Publication number Publication date
CN106685429A (zh) 2017-05-17

Similar Documents

Publication Publication Date Title
CN106685429B (zh) 整数压缩方法及装置
CN107832062B (zh) 一种程序更新方法及终端设备
CN110209348B (zh) 数据存储方法、装置、电子设备及存储介质
WO2020220540A1 (zh) 基于点对点网络的数据存储方法、装置、介质及终端设备
CN111274245B (zh) 一种用于优化数据存储的方法和装置
CN113630125A (zh) 数据压缩、编码解压缩方法、装置、电子设备及存储介质
CN104468222A (zh) 上报日志信息的方法、装置及系统
CN110891087B (zh) 一种日志传输方法、装置及电子设备和存储介质
CN115039091A (zh) 多键值命令的处理方法、装置、电子设备及存储介质
WO2020258942A1 (zh) 一种数据压缩方法及装置
US20230283292A1 (en) System and method for data compaction and security with extended functionality
CN115905168B (zh) 基于数据库的自适应压缩方法和装置、设备、存储介质
US9189382B2 (en) Noncontiguous representation of an array
CN115765756A (zh) 一种高速透明传输的无损数据压缩方法、系统及装置
CN108234552B (zh) 一种数据存储方法及装置
WO2021237513A1 (zh) 数据压缩存储的系统、方法、处理器及计算机存储介质
CN109889608B (zh) 一种动态资源加载方法、装置、电子设备及存储介质
CN113051024B (zh) 虚拟机热迁移方法、装置、电子设备及存储介质
CN111143161B (zh) 日志文件的处理方法、装置、存储介质和电子设备
CN110865901B (zh) 组建ec条带的方法和装置
CN114039698A (zh) 基于多频率的数据发送和接收方法、装置和设备
CN110019232B (zh) 一种报文保存方法及装置
CN111917745B (zh) 一种数据压缩方法
WO2021237518A1 (zh) 数据存储的方法、装置、处理器及计算机存储介质
CN111506658B (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
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20170517

Assignee: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd.

Assignor: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd.

Contract record no.: X2021980000151

Denomination of invention: Integer compression method and device

Granted publication date: 20200710

License type: Common License

Record date: 20210107