基于Snappy实现数据压缩和解压
Snappy是谷歌开源的一个用来压缩和解压的开发包。相较其他压缩算法速率有明显的优势,官方文档显示在64位 i7处理器上,每秒可达200~500MB的压缩速度,不禁感叹大厂的算法就是厉害。
开源项目地址:https://github.com/google/snappy
开撸:
1.下载最新版本Snappy 1.1.7,下载地址如下:
https://github.com/google/snappy/releases
2.解压:
tar -zxvf tar -zxvf snappy-1.1.7.tar.gz
3.进入该目录
cd snappy-1.1.7
4.创建build目录
mkdir build
5.本机需要安装cmake工具,版本>=3.1。执行cmake
cd build & cmake ../
6.编译
make
build目录下回生成静态库libsnappy.a,所需头文件snappy-stubs-public.h和根目录下的snappy.h。
有了库文件和两个头文件,可以使用了。
新建snappy-test目录,把库文件libsnappy.a,snappy.h,snappy-stubs-public.h三个文件放到该目录下新建main.cpp文件。
#include <iostream>
#include "snappy.h"
#include <string.h>using namespace std;int main()
{string input = "i love china!";for(int i=0; i<5; i++){input += input;}cout << "压缩前:" << input.size() << endl;cout << input << endl;cout << "=================================" << endl;string output = "";snappy::Compress(input.data(), input.size(), &output);cout << "压缩后:" << output.size() << endl;cout << output << endl;cout << "=================================" << endl;string str = "";snappy::Uncompress(output.data(), output.size(), &str);cout << "解压后:" << str.size() << endl;cout << str << endl;return 1;
}
运行结果:
压缩前416字节,压缩后37字节。
不想编译库的可以直接下载:
snappy-windows地址:点击打开链接
没有下载积分的,可以关注下面公众号,回复"108"获取源码
snappy-linux地址:点击打开链接
没有下载积分的,可以关注下面公众号,回复"109"获取源码
基于Snappy实现数据压缩和解压相关推荐
- java 解压到内存,Java GZip 基于内存实现压缩和解压的方法
欢迎大家关注本博,同时欢迎大家评论交流,可以给个赞哦!!! GZip是常用的无损压缩算法实现,在Linux中较为常见,像我们在Linux安装软件时,基本都是.tar.gz格式..tar.gz格式文件需 ...
- ZLib的数据压缩和解压缩
Delphi的开发者可以使用ZLib单元中定义的TCompressionStream进行数据压缩,使用TDecompressionStream解压缩ZLib压缩后的数据.它们的定义如下: TCusto ...
- Unity BZip2压缩和解压,基于C#
基于BZip2的压缩方式(ICSharpCode.SharpZipLib) 压缩和解压代码举例: MemoryStream ms = new MemoryStream(); BZi ...
- pako java_基于pako.js实现gzip的压缩和解压功能示例
本文实例讲述了基于pako.js实现gzip的压缩和解压功能.分享给大家供大家参考,具体如下: pako.js实现gzip的压缩和解压 var b64Data = 'H4sIAAAAAAAAAJ3UM ...
- 前端Vue2.6.10数据压缩(zlib/pako)和解压(zlib/pako),后端Python3.7数据压缩(zlib)和解压(zlib)
(注:前后端压缩都加上了base64:文章所提及的压缩和解压仅仅针对数据,不是文件.) 一.前端Vue2.6.10两种压缩和解压的方式(zlib模块和pako模块) 1.zlib模块和pako模块(建 ...
- Php解压pako,基于pako.js实现gzip的压缩和解压功能示例
本文实例讲述了基于pako.js实现gzip的压缩和解压功能.分享给大家供大家参考,具体如下: pako.js实现gzip的压缩和解压 var b64Data = 'H4sIAAAAAAAAAJ3UM ...
- Linux的zip压缩文件压缩和解压
Linux的zip压缩文件压缩和解压 <Linux一线运维实战>清华大学出版社(即将出版) 通常,系统中的文件的可以被直接打开的,这就难免文件的内容被查看.另外,对于要归档保存的(压缩)文 ...
- JAVA 7z Seven Zip 压缩和解压文件
JAVA 7z Seven Zip 压缩和解压文件 7-Zip是基于GNU LGPL协议发布的软件,通过全新算法使压缩比率大幅提升 本文主要讲解通过JAVA方式把文件压缩成7z文件和对7z文件进行解压 ...
- TSDB 时序数据库时序数据压缩解压技术浅析
摘要:目前,物联网.工业互联网.车联网等智能互联技术在各个行业场景下快速普及应用,导致联网传感器.智能设备数量急剧增加,随之而来的海量时序监控数据存储.处理问题,也为时序数据库高效压缩.存储数据能力提 ...
最新文章
- 如何判断图中存环(正负)
- 判断浮点数溢出的方法
- 网易云信11月大事记
- ios开发之.pch文件的使用
- java界面化二叉排序树_105-线索化二叉树代码实现2
- html5 自动保存 提示,html5+ SQLite提示数据表不存在
- HBuilder制作WAP2APP之给APP增加或注入分享功能
- mysql 去重 性能比较_mysql 去重方法distinct 与 group by 性能比较 | 学步园
- Atitit 常见编程语言读写数据库的api目录1.1. Php pdo 11.2. Java jdbctmpltr 11.3. Nodejs mysql模块 11.4. Pytho
- 企业管理理论综述与实践 — 战略
- ES分布式架构的原理
- 希捷“固件门”,影响深远啊
- PS怎样把成图变成素描或者速写稿
- Db2插入数据溢出报错测试
- pci 中断冲突_PCI设备中断冲突的基本解决办法
- Python常见笔/面试题
- 关于File()中的pathname的路径
- 纳斯达克的上市标准和条件
- CSS Grid 和 Flexbox
- xml 转 excel 和xml 转excel 的 思路描述