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