摘要: 为什么使用Protobuf? 本教程翻译自谷歌开发者官网,原文地址:https://developers.google.com/protocol-buffers/docs/javatutorial。开发学院对其进行了简单的翻译和排版,本页面的内容是根据知识共享属性3.0许可的,代码示例是根据Apac 阅读全文
posted @ 2019-09-11 18:36 ken007 阅读(3846) 评论(0) 推荐(0)
摘要: 本文档描述了协议缓冲消息的二进制格式。在应用程序中使用Protocol Buffer不需要理解这一点,但是了解不同的Protocol Buffer格式如何影响编码消息的大小会非常有用。 一条简单的信息 假设您有以下非常简单的消息定义: 在应用程序中,您创建一个Test1消息,并将设置为150。然后将 阅读全文
posted @ 2019-09-11 18:03 ken007 阅读(888) 评论(0) 推荐(1)
摘要: Protobuf3 可选项 .proto文件中可以声明许多选项。选项不会改变声明的整体含义,但可能会影响在特定上下文中处理声明的方式。可用选项的完整列表在google/protobuf/descriptor.proto中定义 有些选项是文件级选项,这意味着它们应该写在顶级范围内,而不是任何消息、枚举 阅读全文
posted @ 2019-09-11 17:57 ken007 阅读(1677) 评论(0) 推荐(0)
摘要: Protobuf3 JSON映射 proto 3支持JSON中的规范编码,使得系统之间更容易共享数据。下表按类型对编码进行了描述。 如果JSON编码的数据中缺少一个值,或者如果它的值为null,那么当解析到协议缓冲区时,它将被解释为合适的默认值。如果某个字段在协议缓冲区中具有默认值,则默认情况下,在 阅读全文
posted @ 2019-09-11 17:51 ken007 阅读(3170) 评论(0) 推荐(0)
摘要: Protobuf3 Any类型 Any消息类型允许您将消息作为嵌入类型,而不需要它们 .proto定义。Any包含任意序列化的消息(字节),以及一个URL,该URL充当该消息的全局唯一标识符并解析为该消息的类型。要使用Any类型,你需要导入google/protobuf/any.proto. 指定消 阅读全文
posted @ 2019-09-11 17:50 ken007 阅读(2094) 评论(0) 推荐(0)
摘要: Protobuf3 更新消息类型 如果现有的消息类型不满足你的所有需求——例如,你希望消息格式有一个额外的字段——但是你仍然希望使用用旧格式创建的代码,别担心!在不破坏任何现有代码的情况下更新消息类型非常简单。请记住以下规则: 不要更改任何现有字段的字段编号。 如果添加新字段,任何使用“旧”消息格式 阅读全文
posted @ 2019-09-11 17:32 ken007 阅读(3804) 评论(0) 推荐(0)
摘要: Protobuf3 嵌套类型 您可以在其他消息类型中定义和使用消息类型,如下例所示:这里Result消息是在SearchResponse消息中定义的: 如果您想在其父消息类型之外重用此消息类型,则需要先指定它的父类型,如下所示: 您可以随心所欲地嵌套: 阅读全文
posted @ 2019-09-11 17:30 ken007 阅读(3501) 评论(0) 推荐(0)
摘要: Protobuf3 使用其他消息类型 您可以使用其他消息类型作为字段类型。例如,假设您希望在每个SearchResponse消息中包含Result消息,为此,您可以在.proto中定义结果消息类型,然后在SearchResponse中指定Result类型字段: 导入定义 在上面的例子中,Result 阅读全文
posted @ 2019-09-11 17:29 ken007 阅读(12505) 评论(0) 推荐(0)
摘要: Protobuf3 枚举 定义消息类型时,您可能希望它的一个字段有一个预定义的值列表。例如,假设您希望为每个SearchRequest添加一个corpus字段,其中语料库可以是UNIVERSAL、WEB、IMAGES、LOCAL、NEWS、PRODUCTS 或VIDEO。您可以非常简单地通过在消息定 阅读全文
posted @ 2019-09-11 17:28 ken007 阅读(10420) 评论(0) 推荐(0)
摘要: 解析消息时,如果编码消息不包含特定的单数元素,则解析对象中的相应字段将设置为该字段的默认值。这些默认值是特定于类型的: 对于字符串,默认值为空字符串。 对于字节,默认值为空字节。 对于布尔,默认值为false。 对于数字类型,默认值为零。 对于枚举,默认值是第一个定义的枚举值,必须为0。 对于消息字 阅读全文
posted @ 2019-09-11 17:24 ken007 阅读(3759) 评论(0) 推荐(0)
摘要: Protobuf3 标量值类型 标量消息字段可以具有以下类型之一——该表显示了.proto文件中指定的类型,以及自动生成的类中的相应类型: 在协议缓冲区编码中序列化消息时,您可以了解更多关于这些类型的编码方式。 [1] 在Java中,无符号的32位和64位整数使用它们的有符号对应值来表示,高位简单地 阅读全文
posted @ 2019-09-11 17:22 ken007 阅读(1881) 评论(0) 推荐(0)
摘要: 定义数据类型 首先让我们看一个非常简单的例子。假设您想要定义搜索请求消息格式,其中每个搜索请求都有一个查询字符串、您感兴趣的特定结果页面以及每页的结果数量。这是用来定义消息类型的.proto文件。 文件的第一行指定您正在使用proto 3语法:如果不这样做,协议缓冲区编译器将假设您正在使用proto 阅读全文
posted @ 2019-09-11 17:20 ken007 阅读(6160) 评论(0) 推荐(0)
摘要: Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是 阅读全文
posted @ 2019-09-11 17:16 ken007 阅读(842) 评论(0) 推荐(0)