问题标签 [protocol-buffers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何使用 Python 和 Google 的协议缓冲区来反序列化通过 TCP 发送的数据
我正在尝试编写一个应用程序,该应用程序使用 Google 的协议缓冲区通过 TCP 连接反序列化数据(使用协议缓冲区从另一个应用程序发送)。问题是它看起来好像 Python 中的协议缓冲区只能反序列化字符串中的数据。由于 TCP 没有明确定义的消息边界,并且我尝试接收的消息之一具有重复字段,因此在最终传递要反序列化的字符串之前,我不知道要尝试和接收多少数据。
在 Python 中这样做有什么好的做法吗?
serialization - 为什么不使用谷歌协议缓冲区的 lua 实现?lua 已经有更好的解决方案了吗?
为什么不使用谷歌协议缓冲区的 lua 实现?lua 已经有更好的解决方案了吗?
logging - 带有协议缓冲区和高级节俭的抄写员?
我在这里有两个问题:
问题一:
-- thrift 可以提供内部类功能吗?(接下来看我的例子)
-- 如果可以,thrift 可以轻松使用这样的功能吗?
这是 scribe 接口 (scribe/if/scribe.thrift)。但是它的消息字段只能是字符串,我认为不够灵活。
如果我能做以下事情那就太好了(我什至不知道 thrift 本身是否根据其文档提供了内部类功能——但协议缓冲区肯定可以)。
问题2:
-- scribe 可以轻松地使用协议缓冲区作为内部数据表示吗?(没有过多的代码修改)
-- 如果上述问题的答案是“否”,Google 是否开源了它的 sribe 实现?
protocol-buffers - 协议缓冲区消息中的集合?
在协议缓冲区中,有没有办法让消息包含嵌套消息的集合?例如,消息主管可能具有员工集合以及主管的姓名和部门。
java - 是否可以模拟 Java 协议缓冲区消息?
协议缓冲区类被标记final
,大概是为了提高效率;然而,这使得它们很难测试——Mockito不能模拟/监视最终类。我试过使用PowerMockito
但没有成功:我在为考试ClassFormatError
做准备时得到了一个。final
到目前为止,我的解决方案是创建可模拟的适配器接口,但我希望有一种不那么费力的方法。
c++ - 协议缓冲区和 UTF-8
编码方案/多个操作系统和字节序的历史导致在编码所有形式的字符串数据(即所有字母)方面一团糟;出于这个原因,协议缓冲区仅处理其字符串类型中的 ASCII 或 UTF-8,而且我看不到任何接受 C++ wstring 的多态重载。那么问题是如何将 UTF-16 字符串放入协议缓冲区?
大概我需要将数据作为 wstring 保存在我的应用程序代码中,然后在将其填充(或从中提取)消息之前执行 UTF-8 转换。什么是最简单的 - Windows/Linux 可移植方式来做到这一点(来自受良好支持的库的单个函数调用会让我很开心)?
数据将来自各种 Web 服务器(Linux 和 Windows),最终将到达 SQL Server(可能还有其他端点)。
-- 编辑 1--
Mark Wilkins 的建议似乎符合要求,也许对库有经验的人可以发布一个代码片段——从 wstring 到 UTF-8——这样我就可以判断它有多容易。
-- 编辑 2 --
……的建议更是如此。我将进一步研究 boost 序列化。
delphi - Delphi 协议缓冲区?
有谁知道在 Delphi 中执行 Google Protocol Buffers 的项目?
c - 服务器多线程,Protocol 必备?和更多
假设应用层协议是通过 UDP 实现的。需要客户端超时,因此服务器需要保持与之对话的每个客户端的状态。
也假设select
被使用。
实现多线程服务器总是最好的吗?我认为链接列表也会这样做,其中 server timeout
time=Earliest Timeout of a client- CurrentTime
。链接列表将具有与保持客户端状态相同的功能,同时避免创建新线程的开销(尽管为服务器引入了一些复杂性来维护特定于客户端的超时)。如果选择多线程,那么为新客户端调用新套接字是否最好?这将引入系统资源开销。但我认为默认服务器套接字(
bind
具有服务器众所周知的端口)会做同样的事情,因为它有缓冲区(嗯..对于可扩展的客户端数量来说可能不够长..)
谢谢!
language-agnostic - 锯齿形解码
在 google protocol buffers encoding overview中,他们引入了一种称为“Zig Zag Encoding”的东西,它采用小幅度的有符号数字,并创建一系列小幅度的无符号数字。
例如
等等。他们为此提供的编码功能相当聪明,它是:
我了解它是如何工作的,但是,我终其一生都无法弄清楚如何将其反转并将其解码回有符号的 32 位整数
c# - 协议缓冲区 c# (protobuf-net) Message::ByteSize
我正在寻找与 C++ API 等效的 protobuf-net,Message::ByteSize
以找出以字节为单位的序列化消息长度。