Protobuf学习笔记(一)

本文介绍了Protocol Buffer的基础概念、应用场景、字段类型对应、在Java中的使用方法,包括编译器安装、.proto文件编译,以及消息升级规则。同时对比了Protobuf与JSON在性能和使用上的差异,揭示了其在不同场景下的优势。
摘要由CSDN通过智能技术生成

Protocol Buffer

Protobuf基础概念

Protobuf是google开发的数据结构描述语言,能够将结构化数据序列化与反序列化,取代json和xml,常用于服务器通信协议、RPC系统和数据持久化存储系统中。

优点:高性能,数据协议小,平台无关,语言无关,向前和向后兼容

缺点:通用性比XML差,以二进制存储,无法直接读取出protobuf的内容。

Protobuf在应用场景之一

客户端程序是使用Java开发的,可能运行自不同的平台,如:Linux、Windows或者是Android,而我们的服务器程序通常是基于Linux平台并使用C++开发完成的。在这两种程序之间进行数据通讯时存在多种方式用于设计消息格式。

 

Protobuf字段类型对应

Protobuf type

java type

c++ type

protobuf  type  describe

bool

boolean

bool

bytes

ByteString

string

可包含任意顺序的字节数据。

double

double

double

float

float

float

int32

int

int32

使用可变长编码方式。编码负数时不够高效如果字段负数,那么使用sint32更高效

int64

long

int64

使用可变长编码方式。编码负数时不够高效如果字段含有负数,那么使用sint64。

uint32

int

uint32

使用可变长编码方式

unint64

long

uint64

使用可变长编码方式

sint32

int

int32

使用可变长编码方式。有符号的整型值。编码时比通常的int32高效

sint64

long

int64

使用可变长编码方式。有符号的整型值。编码时比通常的int64高效

fixed32

int

uint32

总是4个字节。如果数值总是比2的28次方大的话,这个类型会比uint32高效

fixed64

long

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值