Protocol Buffer java版本部署以及小测试

最近阅读TensorFlow,protocol buffer存储占用空间小,解析效率比json/xml效率高,逐渐被各大主流IT公司使用,基于此,写了一下股票模型的protocol buffer实现

1.下载以来的各种包

  • 下载maven包,地址为:http://maven.apache.org/download.cgi,本人下载的是apache-maven-3.5.2-bin.zip
  • 下载protobuf-java版,地址为:https://github.com/google/protobuf/releases,本人下载的是protobuf-java-3.5.1.zip
  • 下载protobuf操作系统版本,地址为:https://github.com/google/protobuf/releases,本人下载的是protoc-3.5.1-win32.zip,此版本支持64位windows环
2.配置环境变量,安装mvn,编译获取protobuf-java-3.5.1.jar
  • 下载完后我放置的目录如下:

  • 配置的环境变量如下:

  • 将D:\protocolbuffer\protoc-3.5.1-win32\bin\protoc.exe拷贝到D:\protocolbuffer\protobuf-3.5.1\src下,用于编译生成protobuf-java-3.5.1.jar和protobuf-java-util-3.5.1.jar使用


  • 分别执行下面的命令,获取到protobuf-java-3.5.1.jar和protobuf-java-util-3.5.1.jar位于D:\protocolbuffer\protobuf-3.5.1\java\core\target和D:\protocolbuffer\protobuf-3.5.1\java\util\target目录下,可以直接使用我编译好的这两个jar
mvn test
mvn install
mvn package
3.编写. .proto文件,message支持日常使用的嵌套定义,引用定义,详细语法规则大家可自行搜索,参考http://blog.csdn.net/briblue/article/details/53187780

  • 执行如下命令,cmd切换到我的工程目录下
cd D:\Workbench\sinodata\project\workspace\eclipse\myApp\src\com\yyy\dailycode\enjoycoding\protocolbuffer\resources
d:
  • 执行如下命令。默认生成类到我定义的option java_package = "com.yyy.dailycode.enjoycoding.protocolbuffer.vo"中,因为vo层到src有6层数目和java_package一致,所以下面有6个../
protoc.exe -I=.  --java_out=../../../../../../  FinancialData.proto  StockItem.proto
  • 执行过程如下图:



  • 最终文件定义如下:




4.测试类ProtocolBufferTest如下:

package com.yyy.dailycode.enjoycoding.protocolbuffer.demo;

import com.google.protobuf.InvalidProtocolBufferException;
import com.yyy.dailycode.enjoycoding.protocolbuffer.vo.FinancialDataModel;
import com.yyy.dailycode.enjoycoding.protocolbuffer.vo.StockItemModel;

/**
 *   @类名: ProtocolBufferTest
 *   @描述: 
 *   @作者: 杨文胜
 *   @生成时间: 2018-1-11 上午11:33:17
 *   @修改人:
 *   @修改时间:  
 **/
public class ProtocolBufferTest {
	/**
	 *   @生成时间: 2018-1-11 下午06:54:39
	 *   @方法说明: 测试main方法
	 *   @参数:
	 *   @返回值: 
	 *   @异常:
	 **/
	public static void main(String[] args) {
		//创建财务数据builder fb,用于放到StockItem si中
		FinancialDataModel.FinancialData.Builder fdb = FinancialDataModel.FinancialData.newBuilder()
		//设置营业收入
		.setRevenue("13.56亿")
		//设置营业收入增长率
		.setRevenuerose("29.56%")
		//设置净利润
		.setNetprofit("2.98亿")
		//设置净利润增长率
		.setNetprofitrose("21.37%");
		
		//创建日k线数据builder sdb,用于放到StockItem si中
		StockItemModel.StockItem.StockData.Builder sdb = StockItemModel.StockItem.StockData.newBuilder()
		//设置股票编码
		.setStockCode("300463")
		//设置开盘价
		.setOpen("22.12")
		//设置收盘价
		.setClose("22.22")
		//设置股票名称
		.setHigh("22.45")
		//设置股票财务数据
		.setLow("22.12")
		//设置市盈率
		.setPe("31.18")
		//设置股票日K线数据日期
		.setDatestr("2018-01-11");
		
		StockItemModel.StockItem si = StockItemModel.StockItem.newBuilder()
		//设置股票id
		.setStockId("sz300463")
		//设置股票编码
		.setStockCode("300463")
		//设置股票名称
		.setStockName("迈克生物")
		//设置股票财务数据
		.setFinancialData(fdb)
		//设置股票日k线数据
		.setStockData(sdb)
		.build();
		//打印股票信息
		System.out.println(si.toString());
		
		//反向解析股票信息
        try {
        	byte[] array = si.toByteArray();
        	StockItemModel.StockItem si2 = StockItemModel.StockItem.parseFrom(array);
            System.out.println(si2.toString());
            //在这里打印股票名称
            System.out.println(si2.getStockName().toString());
        } catch (InvalidProtocolBufferException e) {
            e.printStackTrace();
        }
	}
}


至此protocol buffer java版本使用完毕,测试了一下,确实很快

源码git地址为:https://github.com/ywswen/myApp/tree/master/src/com/yyy/dailycode/enjoycoding/protocolbuffer

上述使用使用到的文件和类已上传到,如有问题可以加qq654382144相互讨论学习

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值