protobuf入门

Posted 根须

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了protobuf入门相关的知识,希望对你有一定的参考价值。

,step1:准备.proto文件

 1 syntax = "proto3";
 2 
 3 message gps_data {
 4     int64 id = 1;
 5     string terminalId = 2;
 6     string dataTime = 3;
 7     double lon = 4;
 8     double lat = 5;
 9     float speed = 6;
10     int32 altitude = 7;
11     int32 locType = 8;
12     int32 gpsStatus = 9;
13     float direction = 10;
14     int32 satellite = 11;
15 }

 step2:下载.proto文件的编译器和对应版本的jar包

step3:解压,通过命令行使用protoc.exe程序编译.proto文件,源文件目录结构如下:

 与之对应的指令如下:

编译后的.java文件则在如下目录:

 

 step4:解压,制作相应的jar包

  

  第一步:在src目录下放一个protoc.exe程序文件

  

  第二步:在java文件夹下面的core/src文件夹中也要放置一个protoc.exe程序文件

  

  第三步:cd到上面所述java文件夹下面,直接运行以下命令即可

mvn install

  第四步:会在java文件夹下面的core/target文件夹下面生成protobuf-java-3.5.1.jar文件

step5:创建一个java工程进行测试

 

 1 package com.per.sdg.demo;
 2 
 3 import com.google.protobuf.InvalidProtocolBufferException;
 4 import com.per.sdg.entity.GpsData;
 5 
 6 public class Demo4 {
 7     public static void main(String[] args) {
 8         System.out.println("===== 构建一个GPS模型开始 =====");
 9         GpsData.gps_data.Builder gps_builder = GpsData.gps_data.newBuilder();
10         gps_builder.setAltitude(1);
11         gps_builder.setDataTime("2017-12-17 16:21:44");
12         gps_builder.setGpsStatus(1);
13         gps_builder.setLat(39.123);
14         gps_builder.setLon(120.112);
15         gps_builder.setDirection(30.2F);
16         gps_builder.setId(100L);
17 
18         GpsData.gps_data gps_data = gps_builder.build();
19         System.out.println(gps_data.toString());
20         System.out.println("===== 构建GPS模型结束 =====");
21 
22         System.out.println("===== gps Byte 开始=====");
23         for(byte b : gps_data.toByteArray()){
24             System.out.print(b);
25         }
26         System.out.println("\\n" + "bytes长度" + gps_data.toByteString().size());
27         System.out.println("===== gps Byte 结束 =====");
28 
29         System.out.println("===== 使用gps 反序列化生成对象开始 =====");
30         GpsData.gps_data gd = null;
31         try {
32             gd = GpsData.gps_data.parseFrom(gps_data.toByteArray());
33         } catch (InvalidProtocolBufferException e) {
34             e.printStackTrace();
35         }
36         System.out.print(gd.toString());
37         System.out.println("===== 使用gps 反序列化生成对象结束 =====");
38     }
39 }

 

以上是关于protobuf入门的主要内容,如果未能解决你的问题,请参考以下文章

Go语言使用protobuf快速入门

Protobuf从入门到“顺手”

Protobuf从入门到“顺手”

Protobuf从入门到“顺手”

protobuf入门

Protobuf 从入门到实战