protobuf的GZIP压缩
protobuf的GZIP压缩
protobuf自带压缩功能,可选的压缩算法有 GZIP 和 ZLIB
序列化至iostream
序列化示例:
std::ofstream output("scene.art", std::ofstream::out | std::ofstream::trunc | std::ofstream::binary);
OstreamOutputStream outputFileStream(&output);
GzipOutputStream::Options options;
options.format = GzipOutputStream::GZIP;
options.compression_level = _COMPRESSION_LEVEL;
GzipOutputStream gzipOutputStream(&outputFileStream, &options);
scene->SerializeToZeroCopyStream(&gzipOutputStream);
反序列化示例:
std::ifstream input("scene.art", std::ifstream::in | std::ifstream::binary);
IstreamInputStream inputFileStream(&input);
GzipInputStream GzipInputStream(&inputFileStream);
scene1->ParseFromZeroCopyStream(&GzipInputStream);
序列化至string
序列化示例:
#include <google/protobuf/io/gzip_stream.h>
#include <google/protobuf/io/zero_copy_stream_impl.h>
std::string output;
// 压缩序列化
google::protobuf::io::GzipOutputStream::Options options;
options.format = google::protobuf::io::GzipOutputStream::GZIP;
options.compression_level = 9;
google::protobuf::io::StringOutputStream outputStream(&output);
google::protobuf::io::GzipOutputStream gzipStream(&outputStream, options);
person.SerializeToZeroCopyStream(&gzipStream)
gzipStream.Close(); //数据刷到储存中
反序列化示例:
google::protobuf::io::ArrayInputStream inputStream(output.data(), output.size());
google::protobuf::io::GzipInputStream gzipStream(&inputStream);
person.ParseFromZeroCopyStream(&gzipStream)
需要注意:
1)序列化需要用 StringOutputStream ,对应的反序列化需要用 ArrayInputStream 。没有StringinputStream类。源码中的说明如下:
2)压缩序列化的时候,必须进行 Close 或者 Flush 操作
参考链接:
protobuf 启用 GZIP 压缩功能
protobuf的GZIP压缩相关推荐
- 解压并安装protobuf库_通过protobuf自带gzip压缩对报文进行二次压缩
全部在windows平台进行测试 一.编译zlib 从github上下载最新zlib代码,根据教程进行编译,是cmake工程很简单.编译安装好,找到安装目录的include.lib.bin.默认是路径 ...
- 启用IIS的Gzip压缩 【转】
现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传 输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的 ...
- 使Apache实现gzip压缩
众所周知,在HTTP1.1中支持gzip压缩,这样可以缩小页面的容量从而加快页面的显示速度.可以使用常用HTTP抓包工具来检测一下你的站点是否开始了gzip压缩. Apache默认的http.conf ...
- Node.js服务器启用Gzip压缩
Gzip是什么 复制大神们的解释吧: GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩.我们在Linux中经常会用到后缀为.gz的文件,它们就是GZ ...
- nginx的gzip压缩功能
我们在开发网站的时候,应该要考虑到pv,因为pv比较大可能会造成服务器带宽不够用,进而导致用户体验变差. 这个时候我们就可以考虑用nginx的gzip功能. 在nginx中开启gzip压缩功能很简单, ...
- 从 Gzip 压缩 SVG 说起 — 论如何减小资源文件的大小
原文地址:Of SVG, Minification and Gzip 原文作者:Anton Khlynovskiy 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- ...
- pandas使用read_csv读取数据使用skiprows参数跳过指定的数据行但保留表头、pandas使用to_csv函数将dataframe保存为gzip压缩文件
pandas使用read_csv读取数据使用skiprows参数跳过指定的数据行但保留表头.pandas使用to_csv函数将dataframe保存为gzip压缩文件 目录
- Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件、zip压缩文件
Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件.zip压缩文件 目录 Python将Pandas中Dataframe数据保存为gzip/zip文件:gz ...
- godaddy php5.ini,Godaddy主机如何开启GZIP压缩 | Godaddy美国主机中文指南
为什么要开启GZIP压缩呢?原因很简单:使用GZIP压缩技术能让用户感受更快的速度.这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到 ...
- gzip压缩後的javascript在ie下不加载
URL:http://blog.iyi.cn/start/2007/07/gzipjavascriptie.html 很早之前就发现一个奇怪的问题,ie第一次打开一个页面时,javascript正常加 ...
最新文章
- 基于pytorch的卷积神经网络量化实现
- ios 3DTouch初识
- 多项式加法c语言数组解,急!!!!c语言:求n次多项式的加法和乘法
- VS2008生成DLL文件的方法、引用dll文件以及意义
- 支持向量机实现鸢尾花数据集分类matlab
- IPM: Technical model of IP right scope on Contract Item level
- python类有什么用_python 定制类 有什么用
- 线性运算和非线性运算
- 奥拉星插件flash下载手机版下载安装_奥拉星游戏插件
- OpenShift 4 之Istio-Tutorial (3) 监控微服务运行
- 【报告分享】食品饮料行业供应链发展与渠道变革趋势.pdf(附下载链接)
- 又被腾讯刷屏!果然是印钞机.....酸哭了...
- 函数响应式编程及ReactiveObjC学习笔记 (三)
- android:background
- mysql物业管理系统设计_小区物业管理系统的设计与实现(IDEA,SSM,MySQL)
- 记事本编写java_编写运行最简单的java程序——使用记事本编写java程序
- 老司机教你如何快速入门Linux | 小白必知
- 【记录】深度学习之蒸馏法训练网络
- arch linux简体中文,Locale (简体中文)
- 财务会计基础(二)复式记账法