protobuf入門

,step1:準備.proto文件java

 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文件,源文件目錄結構以下:ui

 與之對應的指令以下:google

編譯後的.java文件則在以下目錄:spa

 

 step4:解壓,製做相應的jar包命令行

  

  第一步:在src目錄下放一個protoc.exe程序文件3d

  

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

  

  第三步:cd到上面所述java文件夾下面,直接運行如下命令便可對象

mvn install

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

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 }
相關文章
相關標籤/搜索