1. 程式人生 > >Protocol Buffer java版本部署以及小測試

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相互討論學習

相關推薦

Protocol Buffer java版本部署以及測試

最近閱讀TensorFlow,protocol buffer儲存佔用空間小,解析效率比json/xml效率高,逐漸被各大主流IT公司使用,基於此,寫了一下股票模型的protocol buffer實現 1.下載以來的各種包 下載maven包,地址為:http://maven

使用命令列進行java版本檢視和配置測試

命令列的使用 Java版本和配置測試:   先開啟所在檔案: 刪除.class檔案:   編譯執行: 需要注意的是,在命令列執行程式時,不能使用副檔名.class。要用java clas

java服務端程式部署伺服器以及壓力測試過程

這段時間負責公司的服務端Java程式開發,做了一個遊戲的登入、註冊、支付、token驗證以及相關統計介面的服務端程式。 考慮到遊戲中如果是多使用者的情況下登入註冊介面在開服的時候會產生很大的併發,所以再上線之前做了一些壓力測試。 伺服器配置:亞馬遜雲伺服器8核心、15G記憶體、200G硬碟、

安裝部署(六) Kafka叢集安裝部署以及Producer和Consumer的JAVA程式碼測試

Kafka叢集安裝部署以及Producer和Consumer的JAVA程式碼測試 kafka scala2.11_0.10.0.0 ubuntu 14.04.04 x64 hadoop 2.7.2spark 2.0.0 scala 2.11.8 jdk 1.8.0_101

JAVA整體概念以及安裝部署

配置系統 記事本 安裝 dev win10 回車 string 基本概念 實現 JAVA 基本概念 JVM(JAVA virtual machine)java虛擬機,是java的能跨平臺的核心,java的跨平臺實現,就是在各種系統中布置JVM,然後java應用運行在JV

springboot基礎總結以及Java系統部署腳本使用

package hot 後臺運行 pack ips top -o pre $0 springboot學習比較總結:https://pan.baidu.com/s/1dYwvpk Java系統部署腳本:當想把程序放到後臺運行: nohup ./your_command

cdh版本的hue安裝配置部署以及集成hadoop hbase hive mysql等權威指南

service sources ces 兩個 配置 語句 基金會 pan 創建 hue下載地址:https://github.com/cloudera/hue hue學習文檔地址:http://archive.cloudera.com/cdh5/cdh/5/hue-3.7

超多慕課網實戰教程破解自學教程百度雲盤分享-Python/Java/前端後端/程序/運維測試/人工智能

上線 備註 面試 漏洞 vue ret 服務號 協作平臺 java軟件 以下課程,需要的可以加我微*信:hgh813210,備註你需要的課程 Java企業級電商項目架構演進之路 Tomcat集群與Redis分布式百度雲實戰分享 前端成長必經之路 基於Storm構建實時熱力分

suse11.2版本部署分布式測試

分布式環境部署準備: 準備三臺虛擬機(A:192.168.10.148、B:192.168.10.149、C:192.168.10.139),IP地址自己設定。 1.部署環境2.B兩臺機器做雙機部署,C機器做單機部署3.安裝zookeeper 首先到官網上下載zookeeper包(zookeeper-3.4.

Java+Selenium Web UI自動化測試的一些總結

The 隱藏 ase 默認 get over rip cli 不可 - Chrome 關於Chrome的配置網上信息很多,直說一點,當選擇在linux環境跑用例的時候,我們會優先選擇headless run,默認情況下headless run的瀏覽器大小好像只有900*76

java自學測試 九九乘法表

str ++ png rgs 九九乘法表 技術分享 http 測試 i++ public class Ninenine { public static void main(String[] args) { for(int i=1;i<=9;i++){ for(i

ubuntu 下載切換Java版本以及javac

安裝 sudo add-apt-repository ppa:openjdk-r/ppasudo apt-get updatesudo apt-get install openjdk-7-jdk sudo apt-get install openjdk-8-jdk 切換Java版本 su

微信程式開放資料解密 AES-128-CBC 解密(Java版本

最近朋友在弄微信小程式開發,需要跟微信服務端互動,微信敏感資料都有加密返回,需要在服務端接收進行解密後再返回給客戶端小程式,今天就通過Java進行資料的解密,以下展示是Java程式碼如果你使用的C#,請訪問這個地址(C#版本) https://blog.csdn.net/jasonso

JAVA測試

1.呼叫類java.lang.Math的成員方法“public static double random()”運算下面表示式10000次, (int) (Math.random()*20+0.5); 統計其中生成的整數0,1,2,…,20的個數分別是多少,並輸出統計結果。 import ja

protocol buffer 3.5.0生成java server和client程式碼

敬請關注部落格,後期不斷更新優質博文,謝謝 protocol buffer生成java程式碼: *******************************************************************************手動生成**********

Protocol BufferJava 使用(基於Spring Boot 2.x)

開發環境:使用Intellij IDEA + Maven + Spring Boot 2.x + JDK 8 1.在專案的pom.xml檔案下,引入protobuf的Jar開發包依賴;並且可以配置protobuf 的Maven外掛,對編寫的proto檔案編譯成Java檔案。

java基礎知識測試

一、選擇題: 二、程式設計題: //1.請手寫如下所示格式的個人資訊 Java 程式碼: Name: Mary Post: HR Director Sex: female Age: 26 Tel: 18081318888 Adress: DaTun road

微信程式從入門第一講 java&&jFinal 程式登陸功能實現以及獲取唯一標識openid和unionid

在我以前的一篇部落格中講到了獲取openid的方法,這裡就不做過多的講解java獲取微信小程式openid。這裡主要講解微信小程式登陸的實現和獲取unionid。需要提醒的是我後端框架使用的是jFinal,傳值方式跟spring的那套有些許的差別。 1、首先要知道微信小程式的開發本身就是基於

用cmd執行記事本寫的java檔案,以及jdk版本和執行版本不一致原因及其解決辦法

1.首先新建一個記事本,檔名改為Welcome.java拓展名也要改!(屬性裡面改為顯示拓展名,這樣才可以通過重新命名的方式改檔案個格式) public class Welcome{ public static void main(String[] args){ System.out.pr

Java】開發工具--Eclipse&MySQL官網自選版本下載以及專案jar包下載

我們一般在使用開發軟體時,不一定使用最新版本的開發軟體,所以需要選擇適用的開發軟體來開發專案,下面是我總結的eclipse以及mysql官網自選版本下載步驟: Eclipse自選版本下載 百度輸入eclipse,進入eclipse官網地址,點選右上角的Down