摘要:基于入門(mén)編寫(xiě)文件將文件轉(zhuǎn)換為代碼下載該工具將加入到所在目錄命令行進(jìn)入所在目錄執(zhí)行序列化反序列化實(shí)例化添加數(shù)據(jù)小明小黃建立實(shí)體數(shù)據(jù)將數(shù)據(jù)寫(xiě)入流中讀取流
protobuf基于java入門(mén) 1. 編寫(xiě)protobuf文件——person.proto
package protobuf; option java_package="com.sean.person"; option java_outer_classname = "PersonEntity"; message Person{ required int32 id = 1; required string name = 2; optional string email=3; repeated string friends = 4; }2.將protobuf文件轉(zhuǎn)換為java代碼
下載protoc.exe該工具
將person.proto加入到protoc.exe所在目錄
命令行進(jìn)入protoc.exe所在目錄
執(zhí)行protoc ./person.proto --java_out=./
3.序列化 4.反序列化public class Test { public static void main(String[] args) throws IOException { //實(shí)例化builder PersonEntity.Person.Builder personBuilder = PersonEntity.Person.newBuilder(); //添加數(shù)據(jù) personBuilder.setId(1).setName("Sean").setEmail("[email protected]").addFriends("小明").addFriends("小黃"); //建立實(shí)體數(shù)據(jù) PersonEntity.Person msg = personBuilder.build(); //將數(shù)據(jù)寫(xiě)入流中 ByteArrayOutputStream output = new ByteArrayOutputStream(); msg.writeTo(output); byte[] bytes = output.toByteArray(); System.out.println("person size: "+bytes.length); //讀取流 ByteArrayInputStream bis = new ByteArrayInputStream(bytes); PersonEntity.Person person = PersonEntity.Person.parseFrom(bis); System.out.println("person ID: " + person.getId()); System.out.println("person name: " + person.getName()); System.out.println("person email: " + person.getEmail()); System.out.println("person friends: "+person.getFriendsList()); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67199.html
摘要:消息格式有三個(gè)字段,在消息中承載的數(shù)據(jù)分別對(duì)應(yīng)于每一個(gè)字段。所以應(yīng)該為那些頻繁出現(xiàn)的消息元素保留之內(nèi)的標(biāo)識(shí)號(hào)。示例編譯這里我們用編譯一下,看得到什么文件名使用以下命令編譯生成了兩個(gè)文件此文件包含生成的和類(lèi)。 gRPC 一開(kāi)始由 google 開(kāi)發(fā),是一款語(yǔ)言中立、平臺(tái)中立、開(kāi)源的遠(yuǎn)程過(guò)程調(diào)用(RPC)系統(tǒng)。 本文通過(guò)一個(gè)簡(jiǎn)單的 Hello World 例子來(lái)向您介紹 gRPC 。 gR...
摘要:結(jié)構(gòu)作為服務(wù)端作為序列化數(shù)據(jù)的協(xié)議前端通訊演示地址服務(wù)端實(shí)現(xiàn)啟動(dòng)類(lèi)長(zhǎng)連接示例主線程組從線程組請(qǐng)求的解碼和編碼把多個(gè)消息轉(zhuǎn)換為一個(gè)單一的或是,原因是解碼器會(huì)在每個(gè)消息中生成多個(gè)消息對(duì)象主要用于處理大數(shù)據(jù)流,比如一個(gè)大小的文件如果你直接傳輸肯定 結(jié)構(gòu) netty 作為服務(wù)端 protobuf 作為序列化數(shù)據(jù)的協(xié)議 websocket 前端通訊 演示 GitHub 地址 showImg(...
摘要:結(jié)構(gòu)作為服務(wù)端作為序列化數(shù)據(jù)的協(xié)議前端通訊演示地址服務(wù)端實(shí)現(xiàn)啟動(dòng)類(lèi)長(zhǎng)連接示例主線程組從線程組請(qǐng)求的解碼和編碼把多個(gè)消息轉(zhuǎn)換為一個(gè)單一的或是,原因是解碼器會(huì)在每個(gè)消息中生成多個(gè)消息對(duì)象主要用于處理大數(shù)據(jù)流,比如一個(gè)大小的文件如果你直接傳輸肯定 結(jié)構(gòu) netty 作為服務(wù)端 protobuf 作為序列化數(shù)據(jù)的協(xié)議 websocket 前端通訊 演示 GitHub 地址 showImg(...
摘要:優(yōu)點(diǎn)在谷歌內(nèi)部長(zhǎng)期使用產(chǎn)品成熟度高跨語(yǔ)言支持多種語(yǔ)言包括和編碼后的消息更小更加有利于存儲(chǔ)和傳輸編解碼的性能非常高支持不同協(xié)議版本的前向兼容支持定義可選和必選字段的入門(mén)是一個(gè)靈活高效結(jié)構(gòu)化的數(shù)據(jù)序列化框架相比與等傳統(tǒng)的序列化工具它更小更快更簡(jiǎn) Google Protobuf 優(yōu)點(diǎn): 在谷歌內(nèi)部長(zhǎng)期使用, 產(chǎn)品成熟度高. 跨語(yǔ)言、支持多種語(yǔ)言, 包括 C++、Java 和 Python....
閱讀 850·2023-04-25 17:33
閱讀 3705·2021-07-29 14:49
閱讀 2521·2019-08-30 15:53
閱讀 3509·2019-08-29 16:27
閱讀 2049·2019-08-29 16:11
閱讀 1079·2019-08-29 14:17
閱讀 2559·2019-08-29 13:47
閱讀 2077·2019-08-29 13:28