如何解析超长的protobuf zhuan

在调用protobuf的ParseFromString(str)方法时,默认情况下,如果str的长度>64MB,会返回失败。

这里给出了解释,主要是出于安全因素的考虑。

可以通过SetTotalBytesLimit方法去除这个限制:

// ::google::protobuf::Message req;

::google::protobuf::io::ArrayInputStream input(str.data(), str.size());
::google::protobuf::io::CodedInputStream decoder(&input);
decoder.SetTotalBytesLimit(1024*1024*1024, 64*1024*1024);
bool success = req.ParseFromCodedStream(&decoder) && decoder.ConsumedEntireMessage();

如何解析超长的protobuf zhuan

时间: 2025-01-02 20:39:47

如何解析超长的protobuf zhuan的相关文章

fastjson解析超长json串以及转成list,map等方法实例

今天在工作中出现了这么一个问题,在手机桌面的app加密解密后,字符串超长,读取两三个都会出现内存溢出的现象,最后只能根据id累加来一个个解析.解析出来的数据最后在进行处理. 转换成对象使用的是阿里巴巴的fastjson,上度娘找了一下,好多使用的是:import net.sf.json.JSONArray;import net.sf.json.JSONObject;这两个,可以参考这篇:http://blog.sina.com.cn/s/blog_5920510a01011vu8.html 我导

让Caffe生成的数据集能在Theano上直接运行(一)——lmdb与protobuf

不论使用何种框架进行CNNs训练,共有3种数据集: Training Set用于训练网络. Validation Set用于训练时测试网络准确率. Test Set用于测试网络训练完成后的最终正确率. Caffe生成的数据分为2种格式:Lmdb和Leveldb. 它们都是键/值对(Key/Value Pair)嵌入式数据库管理系统编程库. 虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的速度比leveldb快10%至15%,更重要的是lmdb允许多种训练模型同时读取同一组数据集.

protobuf 作为配置文件

公司每个project代码中,都有一个Config类,作为模块启动的配置.其实现如下 struct Config { int num; char * file_name; int load_from_file(const char* filename); } int Config::load_from_file(const char* filename) { ConfigDom dom; parse_node_from_file(&dom, filename); get_value("n

unity探索者之socket传输protobuf字节流(二)

上一篇主要说的是protobuf字节流的序列化和解析,将protobuf对象序列化为字节流后虽然可以直接传递,但是实际在项目中却不可能真的只是传递protobuf字节流,因为socket的tcp通讯中会出现几个很常见的问题,就是粘包和少包.所谓粘包,简单点说就是socket会将多个较小的包合并到一起发送.因为tcp是面向连接的,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包.少包则是指缓存区满

浅析protobuf应用

Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化.反序列化,常用于RPC 系统(Remote Procedure Call Protocol System)和持续数据存储系统. 其类似于XML生成和解析,但protobuf的效率高于XML,不过protobuf生成的是字节码,可读性比XML差,类似的还有json.Java的Serializable等. 很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩

Swoole http server + yaf, swoole socket server + protobuf 等小结

拥抱swoole, 拥抱更好的php Swoole 是什么? Yaf 是什么? 接触swoole已经4年多了,一直没有好好静下心来学习.一直在做web端的应用,对网络协议和常驻内存型服务器一窍不通.一不留神swoole已经从小众扩展变成了流行框架,再不学习就完了 swoole + yaf swoole server 的角色 还是先用swoole来做一个http server. 常见的php web应用,通常是apache+fast-cgi 或者 nginx + php-fpm.这里以php-fp

Protobuf(一)——Protobuf简介

Protobuf简介 ? 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: ? Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件.他们用于 RPC 系统和持续数据存储系统. ? Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,

Java使用Protocol Buffers入门四步骤

Protocol Buffers(简称protobuf)是谷歌的一项技术,用于将结构化的数据序列化.反序列化,经常用于网络传输. 这货实际上类似于XML生成和解析,但protobuf的效率高于XML,不过protobuf生成的是字节码,可读性比XML差.类似的还有json.Java的Serializable等. protobuf支持各种语言.本文以Java为例,简单介绍protobuf如何使用.其他语言使用方法类似. 首先需要下载: http://download.csdn.net/downlo

[转]序列化悍将Protobuf-Net,入门动手实录

最近在研究web api 2,看了一篇文章,讲解如何提升性能的, 在序列化速度的跑分中,Protobuf一骑绝尘,序列化速度快,性能强,体积小,所以打算了解下这个利器 1:安装篇 谷歌官方没有提供.net的实现,所以在nuget上找了一个移植的 Nuget里搜索Protobuf-net,下载,自动添加到项目中 2:定义数据结构 using ProtoBuf; namespace ConsoleApplication1 { [ProtoContract] class Person { [Proto