Protobuf 3.3 使用总结

简介: Protobuf 3.3 使用总结

1.下载可执行文件 protoc.exe

https://github.com/google/protobuf/releases/

里的protoc-3.3.0-win32.zip,解压拿到protoc.exe

最方便的方式通过NuGet包管理器,安装 Google.Protobuf 3.3.0 和 Google.Protobuf.Tools 3.3.0,这个包含了预编译的protoc.exe和和在tool下的一堆.proto文件。下载前要求.net框架为.NET 4.5+

生成的Google.ProtocolBuffers.dll将被用作外部链接的DLL使用

为了产生C#文件,带上--csharp_out 选项 执行protoc ,目前支持 C++,C#,java,javanano,php,,js,objectc,python,ruby

2.制作run.bat文件

@echo off
set "TOOLPATH=%cd%/protoc.exe"
cd ../
%TOOLPATH%  --csharp_out=src/com/ooxx/common/proto --proto_path=src/com/ooxx/common/proto src/com/ooxx/common/proto/game.proto

protoc  参数说明:

--csharp_out =out_dir 导出文件的目录

--proto_path proto文件所在目录


3.option optimize_for = SPEED;

optimize_for是文件级别的选项,Protocol Buffer定义三种优化级别SPEED/CODE_SIZE/LITE_RUNTIME。缺省情况下是SPEED。

SPEED: 表示生成的代码运行效率高,但是由此生成的代码编译后会占用更多的空间。

CODE_SIZE: 和SPEED恰恰相反,代码运行效率较低,但是由此生成的代码编译后会占用更少的空间,通常用于资源有限的平台,如Mobile。

LITE_RUNTIME: 生成的代码执行效率高,同时生成代码编译后的所占用的空间也是非常少。这是以牺牲Protocol Buffer提供的反射功能为代价的。

4:option java_multiple_files=true; 让每个消息都独立生成文件,减少单个文件的大小

服务端打印字节流工具

ByteBufUtil.prettyHexDump(ByteBuf buffer);

        +-------------------------------------------------+

        |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |

+--------+-------------------------------------------------+----------------+

|00000000| 05 08 a4 06 10 02                               |......          |

+--------+-------------------------------------------------+----------------+

        +-------------------------------------------------+

        |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |

+--------+-------------------------------------------------+----------------+

|00000000| 47 08 c5 d6 1b 10 02 1a 3f bd bf 10 90 96 df 12 |G.......?.......|

|00000010| 8c 08 63 ee f3 ac 02 2b fe c9 11 c0 35 df 4d 1a |..c....+....5.M.|

|00000020| 1f 53 ec 31 cc 32 ec 33 ca 44 eb 44 ec 32 ec 20 |.S.1.2.3.D.D.2. |

|00000030| ef 28 ef 30 63 ee f3 ac 02 2b 5c 0c 91 88 e6 e7 |.(.0c....+\.....|

|00000040| 77 b1 b1 b8 25 e5 46 0a                         |w...%.F.        |

+--------+-------------------------------------------------+----------------+

字符串进行16进制加密传输

buffer.writeBytes(ByteBufUtil.decodeHexDump(phone20Str(phoneNum)));
目录
相关文章
|
6月前
|
JSON Java 数据格式
protobuf 使用和介绍
protobuf 使用和介绍
80 0
|
4月前
|
XML JSON Java
GRPC与 ProtoBuf 的理解与总结
GRPC与 ProtoBuf 的理解与总结
163 0
|
5月前
|
XML 存储 编译器
Protobuf 详解
Protobuf 详解
|
6月前
|
存储 XML JSON
原来可以这么使用 Protobuf
原来可以这么使用 Protobuf
357 0
|
6月前
|
XML 存储 JSON
一文简单聊聊protobuf
一文简单聊聊protobuf
|
XML 存储 Java
Protobuf了解一下?
Protobuf了解一下?
103 0
|
编译器
ProtoBuf的安装
ProtoBuf的安装
149 0
|
Java Android开发
【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 )
【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 )
348 0
【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 )