Q
节俭/原始如何?
2
A
回答
2
井的protobuf-CSHARP端口有MessageStreamIterator
和MessageStreamWriter
,让你可以写出一个序列,然后遍历他们为你反序列化。然后你可以使用LINQ to Objects获得1000或任何你想要的。
1
如果你使用protobuf-net,有一个方法DeserializeItems(或类似的),它提供了一个IEnumerable<T>
的实现,非缓冲,允许你消费物品,只要你喜欢(适用于LINQ“Take”等)。如果原始序列化对象是对象的列表/数组,那么这将非常有效。它也与DeserializeWithLengthPrefix方法,它从流读取单个对象,而无需过度读取(如日志,因为它是长度为前缀,这是这种情况如果项目的数组/列表是串行化的)完全兼容,从而允许你可以在“while”循环中做同样的事情。让我知道你是否想要更完整的例子。
例子:
// write
YourType[] array = ...;
Serializer.Serialize(destination, array);
// read
List<YourType> batch = new List<YourType>(1000);
foreach(var item in Serializer.DeserializeItems<YourType>(source)) {
batch.Add(item);
if(batch.Count == 1000) {
ProcessBatch(batch);
batch.Clear();
}
}
if(batch.Count != 0) ProcessBatch(batch);
还要注意,协议缓冲区是追加的,所以更多的数据添加到您刚才寻求到文件的结束和开始写更多的数据文件。
相关问题
- 1. 如何节俭
- 2. 如何使用节俭
- 3. 如何停止在C++节俭TNonblockingServer?
- 4. 如何建立C++节俭库Hypertable的
- 5. 如何通过阿帕奇节俭
- 6. 节俭调试器?
- 7. 安装节俭idl
- 8. 如何使用原始Javascript与节点
- 9. 在js中使用节俭而不依靠节俭RPC
- 10. 在iOS中使用节俭
- 11. iPhone的节俭框架
- 12. 节俭语法错误
- 13. 节俭async C++示例
- 14. 节俭,CQL3还是什么?
- 15. 节俭宝石和JRuby
- 16. 管理层以上节俭
- 17. 节俭安装错误
- 18. 节俭设置问题
- 19. 节点节俭反序列化
- 20. 节俭节点JavaScript名称空间
- 21. Python3打印原始字节
- 22. 将任何原始数字的原始字节记录到文件中
- 23. 如何配置火花sql节俭服务器
- 24. 如何解决HBase的节俭hbase_thrift.ttypes.TIOError:TIOError(_message = “无法获取位置”)
- 25. 如何在apache节俭中表示日期类型
- 26. 如何编译卡桑德拉节俭的例子
- 27. 卡桑德拉:如何坚持和恢复节俭的对象?
- 28. 如何通过loadRunner测试节俭服务的性能?
- 29. 如何在java中启动节俭的TNonblockingServer?
- 30. 如何退出Python中的节俭服务器
我们的两个解决方案是否相互兼容,出于兴趣? – 2012-03-10 17:16:08
感谢您的快速响应,如果您能提供完整的示例,这将非常棒。 – tabreaz 2012-03-10 17:19:36
@Jon mine是,每个项目:一个**可选**标签varint,通常为“1”,那么长度为varint,然后是有效载荷。这是兼容的吗? – 2012-03-10 17:29:25