日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

protoc.exe java_protobuf——使用protoc.exe生成message文件

發布時間:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 protoc.exe java_protobuf——使用protoc.exe生成message文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.下載protoc.exe和對應jar包

protoc.exe從https://github.com/protocolbuffers/protobuf/releases下載protoc-3.7.0-win64.zip,解壓后bin目錄下有對應proto.exe文件。

jar包去maven庫中搜索protobuf-java-3.7.0.jar.

2.編寫test.proto文件

package message;

option java_package = "com.test.message";

option java_multiple_files = true;//生成的message文件是多個,在一個包下,否則是一個包裝類

option optimize_for = LITE_RUNTIME;

//Protocol Buffer定義三種優化級別SPEED/CODE_SIZE/LITE_RUNTIME。缺省情況下是SPEED。

//SPEED: 表示生成的代碼運行效率高,但是由此生成的代碼編譯后會占用更多的空間。

//CODE_SIZE: 和SPEED恰恰相反,代碼運行效率較低,但是由此生成的代碼編譯后會占用更少的空間,通常用于資源有限的平臺,如Mobile。

//LITE_RUNTIME: 生成的代碼執行效率高,同時生成代碼編譯后的所占用的空間也是非常少。這是以犧牲Protocol Buffer提供的反射功能為代價的。

// SPEED和LITE_RUNTIME相比,在于調試級別上,例如 msg.SerializeToString(&str) 在SPEED模式下會利用反射機制打印出詳細字段和字段值,但是LITE_RUNTIME則僅僅打印字段值組成的字符串;

message RequestDataMsg1

{

required int32 id = 1;

optional string dataType = 2;

}

message StringIntegerMap

{

required string dataName = 1;

required int32 data = 2;

}

message ResponseDataMsg2

{

repeated StringIntegerMap dataMap = 1;

}

3.編寫generateProto.bat,使用批處理執行protoc.exe --java_out=生成message的目錄?test.proto 命令生成message文件(可以在命令行直接去protoc.exe所在目錄執行)

@title generate message

@cd %~dp0

@rem %~dp0 “d”為Drive的縮寫,即為驅動器,磁盤、“p”為Path縮寫,即為路徑,目錄

@rem current dir: %~dp0

%~d0

@echo batch generate proto

@rem @author chencan

@rem @echo off常用于開頭,表示不顯示所有的命令行信息,包括此句,相當于在每一行開頭加 @

@rem 在批處理文件里面用 for,變量就用 %%

@rem set是對參數的定義,動態的話需要加上/p的條件

@echo off

set /p protoFile=please input filename:

if exist "%protoFile%" goto:process

rem call跳轉到子批處理,并且不終止父批處理,start 是在新窗口執行

echo file not exist!

rem 再次執行當前批處理

call %0

:process

@echo file:"%protoFile%" exist!

@echo generating message,please wait...

@protoc.exe --java_out=../src %protoFile%

@echo generate success!

pause

goto:eof

proto文件,protoc.exe,generateProto.bat放在同一文件夾下,執行generateProto.bat腳本。

done

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的protoc.exe java_protobuf——使用protoc.exe生成message文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。