option java_outer_classname : 定义类名,不声明的话它将通过将文件名转换为camel case来生成。例如,默认情况下,“my_proto.proto”将使用“MyProto”作为外部类名。
syntax : 指定语法,指定了语法格式为proto2或proto3,即protobuf 2的语法,默认也是使用proto2的语法。
1 *.proto文件中数据类型可以分为两大类:
复合数据类型 + 标准数据类型
复合数据类型包括:枚举和message类型
标准数据类型包含:
整型 : int32
浮点 : float,double
字符串 : string
布尔: bool
2 数据类型前面修饰词:
required(必选字段): 必须赋值,不能为空,否则该条message会被认为是“uninitialized”。build一个“uninitialized” message会抛出一个RuntimeException异常,解析一条“uninitialized” message会抛出一条IOException异常。除此之外,“required”字段跟“optional”字段并无差别。
optional(可选字段):字段可以赋值,也可以不赋值。假如没有赋值的话,会被赋上默认值。
repeated(可重复字段): 该字段可以重复任意次数,包括0次。重复数据的顺序将会保存 需要zi料+ 绿色徽【vip1024b】
在protocol buffer中,将这个字段想象成一个可以自动设置size的数组就可以了。
3.每个字段要给数字:
该Number是用来标记该字段在序列化后的二进制数据中所在的field,每个字段的Number在message内部都是独一无二的。也不能进行改变,否则数据就不能正确的解包。
- 安装protoc(win版)
1.下载protobuf
https://github.com/google/protobuf/releases
选择protoc-xxx-win32.zip下载
2.将解压出来的protoc.exe放在一全英文路径下,并把其路径名放在windows环境变量下的path下,同时添加proto_path,值为protoc.exe的路径
3.在所使用的proto文件路径下打开cmd窗口执行以下命令
protoc -I=源地址 --java_out=目标地址 源地址/xxx.proto
- 编译.protoc文件
在protoc.exe所在目录执行:
.\protoc --java_out=.\ XXX.proto #注意.\与XXX.proto 中间有空格
- 引入依赖:
com.google.protobuf
protobuf-java
3.6.1
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
最新整理面试题
上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题
最新整理电子书
最新整理大厂面试文档
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
整理电子书
[外链图片转存中…(img-11dYnkNB-1710367400934)]
最新整理大厂面试文档
[外链图片转存中…(img-AQCrv82X-1710367400935)]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。