我的netty之旅(2)
程序员文章站
2022-04-23 11:52:51
...
学习过程中,需要使用proto,这个是谷歌的一个软件,可以起到语言中立,平台中立,替代xml使用,可以跨语言传输数据,直接到github上下载即可
我是github网址
然后如果想下载软件,就是
我是软件下载网址
下载完软件以后解压一下,再配置一下环境变量就可以用了,path里配置完环境以后cmd输入proto --version就知道生没生效了,然后是在项目里添加file文件.proto结尾,下边的 字段的 1,2,3代表的是顺序,不是默认值,是tag,区分用的
syntax = “proto2”;
package com.protobuf;
option optimize_for = SPEED; option java_package = “com.protobuf”;
option java_outer_classname = “DataInfo”;message StudentInfo{
required string name = 1;
optional int32 age = 2;
optional string address = 3;
}
具体的每一个代表什么请自行百度,然后输入
>protoc --java_out=src/main/java src/main/java/com/protobuf/Student.proto
java_out代标生成的.java文件的路径,后边的是源文件路径,需要注意的是java_outer_classname和这个.proto文件名不能类似,不然会报错,然后在项目里引一下jar包
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
<version>3.11.0</version>
</dependency>
package com.protobuf;
import com.google.protobuf.InvalidProtocolBufferException;
public class Test {
public static void main(String[] args) throws InvalidProtocolBufferException {
DataInfo.Student student = DataInfo.Student.newBuilder().setName("喜马拉雅").setAddress("北京*").setAge(20).build();
System.out.println(student);
byte[] byteArray = student.toByteArray();
DataInfo.Student studentnew=DataInfo.Student.parseFrom(byteArray);
System.out.println(studentnew);
System.out.println(studentnew.getAge());
System.out.println(studentnew.getAddress());
System.out.println(studentnew.getName());
}
}
如果想知道更详细的资料,最好还是查一下官网文档比较全面
上一篇: netty开发遇到的问题