码迷,mamicode.com
首页 > 其他好文 > 详细

protobuf入门

时间:2018-03-27 21:59:26      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:cti   protoc   指令   buffer   文件目录   except   一个   float   info   

,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入门

标签:cti   protoc   指令   buffer   文件目录   except   一个   float   info   

原文地址:https://www.cnblogs.com/s-d-g/p/8631632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!