Snappy使用

news2025/1/11 17:09:45

Snappy使用

Snappy是谷歌开源的压缩和解压的开发包,目标在于实现高速的压缩而不是最大的压缩

项目地址:GitHub - google/snappy:快速压缩器/解压缩器

Cmake版本升级

该项目需要比较新的cmake,CMake 3.16.3 or higher is required,所以回出现如下错误,更新cmake就可以

CMake Error at third_party/benchmark/CMakeLists.txt:1 (cmake_minimum_required):
  CMake 3.16.3 or higher is required.  You are running version 3.10.2

查看当前版本

cmake -version

删除安装的Cmake(最好直接删除路径下的Cmake,免得卸载Cmake出现多个库的问题)

搜索cmake路径
	which cmake
切换到cmake路径
	cd /usr/bin/
删除cmake
	sudo rm cmake

下载高版本cmake:Index of /files/v3.18 (cmake.org)

image-20240702173720359

解压安装包
tar xf  cmake-3.18.3.tar.gz

安装cmake
cd cmake-3.18.3
sudo apt-get install libssl-dev build-essential 
./configure
make
sudo make install

将编译的cmake复制到原始删除cmake的路径下

sudo cp bin/Cmake /usr/bin/

Snappy编译

1、克隆代码库

git clone https://github.com/google/snappy.git

2、编译代码库

git submodule update --init
mkdir build
cd build && cmake ../ && make

调用

C++ 程序使用Snappy,需要包含对应的链接库,

请包含来自 您的调用文件,并链接到已编译的库、头文件,最简单的方法

压缩:snappy::Compress(input.data(), input.size(), &output);
解压:snappy::Uncompress(input.data(), input.size(), &output);

示例,将Snappy编译好的libsnappy.a,snappy.h,snappy-stubs-public.h三个文件放在同一路径下

image-20240702174704429

新建test.cpp测试程序,如下

#include <iostream>
#include "snappy.h"
#include <string.h>
 
using namespace std;
 
int main()
{
	string input = "this is the demo for Snappy\n";
	//repeat three times
	for(int i=0; i<3; i++)
	{
		input += input;
	}


	cout << "origin:" << input.size() << endl;
	cout << input << endl;
	cout << "#########################################\n\n" << endl;

	string Compress_output = "";
	snappy::Compress(input.data(), input.size(), &Compress_output);	
	cout << "compress:" << Compress_output.size() << endl;
	cout << Compress_output << endl;
	cout << "#########################################\n\n" << endl;
 
	string UnCompress_output = "";
	snappy::Uncompress(Compress_output.data(), Compress_output.size(), &UnCompress_output);
	cout << "uncompress:" << UnCompress_output.size() << endl;
	cout << UnCompress_output << endl;
	return 1;
}

编译执行

g++ test.cpp libsnappy.a -std=gnu++11 -o test
./test

image-20240702180351218

压缩前224个字节,压缩后42个字节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1886770.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【免费数字孪生平台】医院数据可视化的新选择

随着大数据、云计算、人工智能等技术的深度融合&#xff0c;医院数据智能化升级已成为推动医疗服务质量飞跃的关键力量。 医院作为守护生命健康的前沿阵地&#xff0c;每天处理着海量的医疗数据。从患者病历、检查结果到医疗设备运行状态、医疗资源分配&#xff0c;每一项数据都…

中画幅巡检相机-SHARE 100M A10

【毫厘之间&#xff0c;洞见非凡】 ——SHARE 100M A10中画幅测量相机&#xff0c;巡检行业的新选择 在巡检行业&#xff0c;精准度是关键&#xff0c;深圳赛尔智控科技有限公司最新推出的SHARE 100M A10中画幅测量相机&#xff0c;基于先进的IMX461影像传感器&#xff0c;拥有…

【Linux杂货铺】Linux学习之路:期末总结篇1

第一章 什么是Linux? Linux 是 UNIX 操作系统的一个克隆&#xff1b;它由林纳斯 本纳第克特 托瓦兹从零开始编写&#xff0c;并在网络上众多松散的黑客团队的帮助下得以发展和完善&#xff1b;它遵从可移植操作系统接口&#xff08;POSIX&#xff09;标准和单一 UNIX 规范…

【都市传说】乖乖之神如何保佑台湾AI行业

引言 都市传说中&#xff0c;许多故事都充满神秘和趣味&#xff0c;但很少有故事能够与现代高科技行业相联系。在台湾&#xff0c;关于一款名为“乖乖”的零食如何成为IT和半导体行业的保护神的传说&#xff0c;既神秘又引人入胜。这篇文章将详细探讨乖乖之神如何在台湾AI行业…

第三篇——始计篇:诡计,就是引诱对方犯错误

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 这一篇讲解了诡计&#xff0c;对于诡计的解释和定位&#xff1b;我们更应…

Linux_fileio学习

参考韦东山老师教程&#xff1a;https://www.bilibili.com/video/BV1kk4y117Tu?p12 目录 1. 文件IO函数分类2. 函数原型2.1 系统调用接口2.2 标准IO接口 3. fileio内部机制3.1 系统调用接口内部流程3.1 dup函数使用3.2 dup2函数使用 4. open file4.1 open实例4.2 open函数分析…

代码查重软件-自力更生

为了减轻工作量&#xff0c;自研了简单实用的代码查重工具&#xff0c;可以对若干文件之间进行查重。通过调试&#xff0c;相似度大于80%的没有一个是冤枉的。好用。去掉雷同的&#xff0c;其他的代码再慢慢看。

华为手机怎么打印文件?

关于华为手机打印的问题&#xff0c;如果您有打印机&#xff0c;并且已经成功和华为手机相连&#xff0c;在解决上就要容易很多。 具体操作如下&#xff1a; 选择文件 文件来源&#xff1a;华为手机上的文件可以来自多个应用&#xff0c;如图库、备忘录、文件管理等&#xf…

晨持绪科技:新手开抖音网店大概多久能做起来

抖音&#xff0c;这个汇聚亿万目光的舞台&#xff0c;早已成为电商的新战场。新手上路&#xff0c;开一间属于自己的抖音网店&#xff0c;大概需要多久能做起来?这个问题如同询问春日里的花蕾&#xff0c;何时绽放?答案藏于不断努力与摸索的过程之中。 "万事开头难"…

Oracle 集群的守护进程

ohas&#xff1a;主要用于守护cluster ware进程&#xff0c;在单节点建立集群的时候&#xff0c;没有crs&#xff0c;只有ohas、cluster ware GPnP&#xff1a;管理clusterware的配置信息&#xff0c;放在本地磁盘上 crs&#xff1a;管理clusterware中的资源&#xff0c;数据库…

大数据期末复习——hadoop、hive等基础知识

一、题型分析 1、Hadoop环境搭建 2、hadoop的三大组件 HDFS&#xff1a;NameNode&#xff0c;DataNode&#xff0c;SecondaryNameNode YARN&#xff1a;ResourceManager&#xff0c;NodeManager &#xff08;Yarn的工作原理&#xff09; MapReduce&#xff1a;Map&#xff0…

STM32mp157aaa按键中断实验

效果图&#xff1a; 源码&#xff1a; #include "key.h" void hal_key1_rcc_gpio_init() {// 使能GPIOF组RCC->MP_AHB4ENSETR | (0x1 << 5);// 设置引脚位输入模式GPIOF->MODER & (~(0X3 << 18));GPIOF->MODER & (~(0X3 << 16))…

2025年U.S.News世界大学排名前200榜单

近日&#xff0c;U.S. News公布了2025全球最佳院校排名&#xff0c;作为公认的四大世界高校排行榜&#xff0c;该排名主要围绕着学术声誉、学术成果等&#xff0c;因此备受访问学者、联合培养博士生及博士后申请者们青睐&#xff0c;知识人网小编特作介绍并发布排名前200的榜单…

CentOS 7 搭建rsyslog日志服务器

CentOS 7 搭建rsyslog日志服务器 前言一、IP地址及主机名称规划1.修改主机名 二、配置rsyslog日志服务器1.安装rsyslog服务2.编辑/etc/rsyslog.conf 文件3.启动并启用rsyslog服务4.验证端口是否侦听 三、在rsyslog日志服务器上配置firewalld防火墙四、配置rsyslog日志客户端1.编…

DSPy:变革式大模型应用开发

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 大模型应用向开发路径&#xff1a;AI代理工作流大模型应用开发实用开源项目汇总大模…

Git使用——首次创建本地仓库、配置、初始化、关联远程仓库

1、安装 Git软件 官网&#xff1a;git-scm.com 有时候官网打不开&#xff0c;这里留存个之前下载过的安装包&#xff1a; https://download.csdn.net/download/weixin_43908355/89502977 2、配置本地仓库 在准备建仓库的文件夹里&#xff0c;右键点击&#xff1a;Git Bash …

把 AI 人机炼成高玩,游戏 AI 技术实践指南,码住!

今天&#xff0c;为大家深入浅出地讲明白上亚运的经典 IP《梦三国 2》&#xff0c;到底应用了哪些来自网易数智的 AI 黑科技。看完你就会觉得&#xff1a;原来做 AI&#xff0c;我也行&#xff01; 方案概述 游戏作为 AI 落地最佳的试验田&#xff0c;近年来已经产生了多个极具…

maven构建断网springboot

maven构建断网springboot 我的依赖仓库&#xff08;本地电脑&#xff0c;记住常用的那几个&#xff09;org.springframework.boot下的 spring-boot-starter-parent spring-boot-starter-web /Users/lin/Documents/repo 使用maven进行创建空白项目 在pom.xml中补全parent类…

【文档+源码+调试讲解】科研经费管理系统

目 录 目 录 摘 要 ABSTRACT 1 绪论 1.1 课题背景 1.2 研究现状 1.3 研究内容 2 系统开发环境 2.1 vue技术 2.2 JAVA技术 2.3 MYSQL数据库 2.4 B/S结构 2.5 SSM框架技术 3 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3 经济可行性 3.1…

51单片机嵌入式开发:STC89C52操作GPIO口LED灯

STC89C52操作GPIO口LED灯 1 芯片介绍1.1 芯片类型1.2 芯片系列说明 2 GPIO引脚寄存器说明3 GPIO操作3.1 GPIO输入3.2 GPIO输出3.3 GPIO流水灯3.4 Protues仿真 4 总结 1 芯片介绍 1.1 芯片类型 芯片采用宏晶科技品牌下的STC89C52RC单片机 选择STC89C52RC系列STC89C58RD系列单片…