tnblog
首页
视频
资源
登录
什么时候才能领悟,取之越多失之越多
排名
5
文章
229
粉丝
15
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

Protobuf 简单使用

5034人阅读 2020/5/11 20:27 总访问:1167633 评论:2 收藏:0 手机
分类: 后端

创建.proto文件,定义数据结构

  1. message MyExample{
  2. optional string stringVal =1;
  3. optional bytes bytesVal =2;
  4. message EmbeddedMessage{
  5. int32 int32Val = 1;
  6. string stringVal = 2;
  7. }
  8. optional EmbededMessage embeddedExample = 3;
  9. repeated int32 repeatedInt32Val = 4;
  10. repeated string repeatedStringVal = 5;
  11. }

我们在上例中定义了一个名为 MyExample 的 消息,语法很简单,message 关键字后跟上消息名称:

  1. message jjj{
  2. }

之后我们在其中定义了message具有的字段,形式为:

  1. message jjj {
  2. // 字段规则:required -> 字段只能也必须出现 1 次
  3. // 字段规则:optional -> 字段可出现 0 次或多次
  4. // 字段规则:repeated -> 字段可出现任意多次(包括 0)
  5. // 类型:int32、int64、sint32、sint64、string、32-bit ....
  6. // 字段编号:0 ~ 536870911(除去 19000 到 19999 之间的数字)
  7. 字段规则 类型 名称 = 字段编号;
  8. }

在上例中,我们定义了:

  • 类型string,名为stringVal的optional可选字段,字段编号为1,此字段可出现0次或1次
  • 类型bytes,名为bytesVal的optional可选字段,字段编号为2,此字段可出现0次或1次
  • 类型 EmbeddedMessage(自定义的内嵌 message 类型),名为 embeddedExample1 的 optional 可选字段,字段编号为 3,此字段可出现 0 或 1 次
  • 类型 int32,名为 repeatedInt32Val 的 repeated 可重复字段,字段编号为 4,此字段可出现 任意多次(包括 0)
  • 类型 string,名为 repeatedStringVal 的 repeated 可重复字段,字段编号为 5,此字段可出现 任意多次(包括 0)

protoc编译.proto文件生成读写接口
我们在.proto文件中定义了数据结构,这些数据结构是面向开发者和业务程序的,并不面向存储和传输。
当需要把这些数据进行存储或传输时,就需要将这些结构数据进行序列化、反序列化以及读写。那么如何实现呢?不用担心,ProtoBuf 将会为我们提供相应的接口代码。如何提供?答案就是通过 protoc 这个编译器。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

小欢

2020/5/18 10:02:22

写的不错[good]

2020/5/19 11:01:18 回复

Protobuf简介

在网络通信和通用数据交换等应用场景中经常使用的技术是 JSON 或 XML,而在最近的开发中接触到了 Google 的 ProtoBuf。 在...

Oracle自定义函数的简单使用

一.最最最简单的返回一个数字的函数createorreplacefunctionfun_show returnint--申明返回值 as begin return1; end;...

Oracle事务的简单使用

事务:  事务是一个整体,这些操作要么全部执行成功,要么全部不执行。使用事务的原因:保证数据的安全有效。事务的四个特...

session的简单使用Cookie和Session区别

Cookie禁用掉,session会不会受影响?Cookie被禁用掉,session也不能用了因为Sessionid是存储在cookie中Cookie和Session区...

.net core配合qadmin简单使用

qadmin是使用vue和layui组合的一个前端模板把模板中的首页复制进来<!DOCTYPEhtml> <html> <head> &...

.net core3.1使用API网关Ocelot一:简单使用

创建极简的两个项目:一个API网关项目(APIGateway),一个WebApi项目(ProductsAPIServices) 大概就是这个样子: APIGa...

vue路由的简单使用,不使用脚手架

不使用脚手架,直接使用路由的形式,直接贴代码吧<!DOCTYPEhtml> <htmlxmlns="http://www.w3.org/1999/xhtm...

Dapr 简单使用的内置API

Dapr 简单使用的内置API[TOC] 您的本地环境具有 Dapr sidecar 二进制文件以及状态管理和消息代理(均使用 Redis)的默认组...

layui表格的简单使用layui table 数据展示,数据修改,数据更新。layui table的简单使用

前端代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U...

docker-compose简单使用。同时启动私有仓库与私有仓库管理ui

docker-compose的安装可以参考:https://www.tnblog.net/aojiancc2/article/details/7679 docker-compose 介绍如果涉及多...

ado.net基本使用sqlhelper简单封装dbhelper简单使用

sqlhelper简单封装 using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Lin...

vue组件封装,简单的表格组件封装。组件插槽简单使用。Table 组件封装

看到设计图上有一个类似的表格需要重复使用,就封装一个简单的表格组件,方便重复使用,很简单就是做数据展示,不进行编辑...
人是要整活的——没活了,可不就是死了么?