文档章节

protobuf介绍

jacksonke
 jacksonke
发布于 2015/10/03 15:19
字数 569
阅读 101
收藏 0

What are protocol buffers?

官网对protobuf的描述

Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. You can even update your data structure without breaking deployed programs that are compiled against the "old" format.


为什么要用protobuf?

常见的序列化的方式

1. 直接使用java的序列化方式,这种方式只有java知道,C++是不知道的,不利于数据交换。

2. 使用自定义的数据格式,比如存储三元数组可以采用类似1:20:3的方式进行,但是需要额外的编码去解析,也需要额外的运行时去处理。

3. 使用xml的序列化方式。但是xml对空间的占用是相对来说是比较大的。



protobuf的特点

1. protobuf多语言支持,方便各个端进行数据交换

2. 在.proto文件中定义好数据结构之后,可以通过官方提供的工具生成相关的类,不需要自己再写代码了,相当的方便。

3. 使用protobuf序列化对象后的字节数更小,速度更快,传输更快。

4. 使用protobuf序列化对象之后,是以二进制的方式存在的,不是文本类型的,不便于肉眼查看,调试时可以使用toString(),将对象转化为肉眼能查看的内容,解析这些二进制内容需要schema。

5. 在遵守一定的设计规则下,保持向后兼容性,每个域都有一个独立的id号,方便产品的迭代,数据结构的变化


怎么用protobuf?

1. protobuf会根据.proto文件生成代码,所以说.proto的message名和域名都需要遵守一定的命名规范

message SongServerRequest {
  required string song_name = 1;
}

https://developers.google.com/protocol-buffers/docs/javatutorial?hl=zh-cn#parsing-and-serialization

IT是个变化很快的行业,想了解最新,最酷的特性只能上官网去查找。


人类一思考,上帝就发笑。

站在巨人的肩膀上编码的,

并非巨细都出自自己的思考,

难免会有偏差,

若有误,欢迎指正。

------------by jackson.ke


© 著作权归作者所有

jacksonke
粉丝 3
博文 22
码字总数 7945
作品 0
深圳
私信 提问
Centos6.4下安装protobuf及简单使用

1、protobuf是google公司提出的数据存储格式,详细介绍可以参考:https://code.google.com/p/protobuf/ 2、下载最新的protobuf,下载地址:https://code.google.com/p/protobuf/downloads/li...

天下杰论
2015/05/09
4.5K
0
Derek解读Bytom源码-protobuf生成比原核心代码

作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 本章介绍bytom代码Api-Server接口服务 作者使用MacOS操作系统,其他平台...

比原链Bytom
2018/08/23
0
0
Netty with protobuf(一)

Netty with protobuf 这是一篇关于netty和protobuf2的文章,先来介绍一下protobuf的简单使用。网上有很多基本的protobuf的介绍,这里就不在赘述了。 protobuf官网上提供了一个例子,我们就拿...

秋风醉了
2014/07/26
1K
0
android使用protobuf实现网络订单管理功能

在新版本的Beetle.NetPackage开源组件中集成了对Protobuf的支持,在android下可以简单地使用Beetle.NetPackage实现基于Protobuf的TCP通讯数据交互.下详细讲解实现一个网络订单管理功能的过程....

泥水佬
2013/09/08
3.3K
0
Notepad++ 的 protobuf 高亮显示和列表显示

项目地址: https://github.com/chai2010/notepadplus-protobuf

chai2010
2015/07/29
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
10
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部