摘要:協(xié)議使用簡述是的一種數(shù)據(jù)交換的格式,它獨(dú)立于語言,獨(dú)立于平臺(tái)。可以用于對(duì)象序列話,序列化協(xié)議也是一種協(xié)議。
protocol buff 協(xié)議使用
github:
https://github.com/chengbingh...
(https://github.com/chengbingh...
protocol buff 是google 的一種數(shù)據(jù)交換的格式,它獨(dú)立于語言,獨(dú)立于平臺(tái)。可以用于java 對(duì)象序列話,(Java序列化協(xié)議也是一種協(xié)議)。兩者都可以將對(duì)象序列化成字節(jié)數(shù)組,或者說是二進(jìn)制數(shù)據(jù),同時(shí)也可以反序列化2 protoc.exe 的使用
protoc.exe 生成一個(gè)java 文件 1 需要軟件:protoc.exe 用于按照谷歌的要求通過一個(gè)配置文件生成java 類 2 創(chuàng)建一個(gè)配置文件:
option java_package="com.hcb.proto"; //包名 option java_outer_classname="PlayerModule"; //類名 message PBPlayer{ // 是上述PlayerModule 中的一個(gè)內(nèi)部類 required int64 playerId =1; //required 表示必須有值,int64表示java中的long required int32 age = 2; required string name = 3; repeated int32 skills = 4; //repeated 表示可以有多個(gè),表示集合 } message XXPlayer{} //可以寫多個(gè),
3 執(zhí)行腳本 創(chuàng)建一個(gè)xxx.bat 文件,文件中有如下命令,
protoc ./player.proto --java_out=./ pause //pause表示停頓,參考bat 腳本。
上述3步即可生成一個(gè)java 文件
3.序列化和反序列化========
導(dǎo)入jar:protobuf-java-2.4.1.jar
package com.proto;
import java.util.Arrays;
import com.proto.PlayerModule.PBPlayer;
import com.proto.PlayerModule.PBPlayer.Builder;
public class PB2Bytes {
public static void main(String[] args) throws Exception { byte[] bytes = toBytes(); toPlayer(bytes); } /** * 序列化 */ public static byte[] toBytes(){ //獲取一個(gè)PBPlayer的構(gòu)造器,用于創(chuàng)建PBPlayer Builder builder = PlayerModule.PBPlayer.newBuilder(); //設(shè)置數(shù)據(jù) builder.setPlayerId(101).setAge(20).setName("peter").addSkills(1001).addSkills(1002); //構(gòu)造出對(duì)象 PBPlayer player = builder.build(); //序列化成字節(jié)數(shù)組 byte[] byteArray = player.toByteArray(); System.out.println(Arrays.toString(byteArray)); return byteArray; } /** * 反序列化 * @param bs * @throws Exception */ public static void toPlayer(byte[] bs) throws Exception{ PBPlayer player = PlayerModule.PBPlayer.parseFrom(bs); System.out.println("playerId:" + player.getPlayerId()); System.out.println("age:" + player.getAge()); System.out.println("name:" + player.getName()); System.out.println("skills:" + (Arrays.toString(player.getSkillsList().toArray()))); }
}
4 總結(jié)一般使用protocol buffer 序列化要比單程的使用java 對(duì)象流產(chǎn)生的字節(jié)數(shù)組差距極大,本人的測試用用例對(duì)比如下: 序列化一個(gè)僅有4個(gè)屬性,集合屬性僅僅有2個(gè)元素。的對(duì)象
private long playerId; private int age; private String name; private Listskills = new ArrayList<>();
使用protocol buffer 結(jié)果如下:
[8, 101, 16, 20, 26, 5, 112, 101, 116, 101, 114, 32, -23, 7, 32, -22, 7]
使用JAVA 對(duì)象流
[-84, -19, 0, 5, 115, 114, 0, 15, 99, 111, 109, 46, 106, 97, 118, 97, 46, 80, 108, 97, 121, 101, 114, -73, 43, 28, 39, -119, -86, -125, -3, 2, 0, 4, 73, 0, 3, 97, 103, 101, 74, 0, 8, 112, 108, 97, 121, 101, 114, 73, 100, 76, 0, 4, 110, 97, 109, 101, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 83, 116, 114, 105, 110, 103, 59, 76, 0, 6, 115, 107, 105, 108, 108, 115, 116, 0, 16, 76, 106, 97, 118, 97, 47, 117, 116, 105, 108, 47, 76, 105, 115, 116, 59, 120, 112, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 101, 116, 0, 5, 112, 101, 116, 101, 114, 115, 114, 0, 19, 106, 97, 118, 97, 46, 117, 116, 105, 108, 46, 65, 114, 114, 97, 121, 76, 105, 115, 116, 120, -127, -46, 29, -103, -57, 97, -99, 3, 0, 1, 73, 0, 4, 115, 105, 122, 101, 120, 112, 0, 0, 0, 2, 119, 4, 0, 0, 0, 2, 115, 114, 0, 17, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 73, 110, 116, 101, 103, 101, 114, 18, -30, -96, -92, -9, -127, -121, 56, 2, 0, 1, 73, 0, 5, 118, 97, 108, 117, 101, 120, 114, 0, 16, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 78, 117, 109, 98, 101, 114, -122, -84, -107, 29, 11, -108, -32, -117, 2, 0, 0, 120, 112, 0, 0, 3, -23, 115, 113, 0, 126, 0, 7, 0, 0, 3, -22, 120]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69061.html
摘要:比原項(xiàng)目倉庫地址地址礦機(jī)配置固件升級(jí)兩個(gè)都要刷先后順序沒關(guān)系升級(jí)時(shí)間較長,升級(jí)期間請(qǐng)勿斷電配置節(jié)點(diǎn)測試時(shí)可以考慮切換到分支降低難度使挖礦也能出塊,或初始化啟動(dòng)時(shí)可以加上指定數(shù)據(jù)目錄,若目錄不存在則會(huì)自動(dòng)新建該目錄流程初始化節(jié)點(diǎn)先建 比原項(xiàng)目倉庫: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/Byto...
閱讀 1772·2023-04-25 21:50
閱讀 2419·2019-08-30 15:53
閱讀 768·2019-08-30 13:19
閱讀 2743·2019-08-28 17:58
閱讀 2465·2019-08-23 16:21
閱讀 2701·2019-08-23 14:08
閱讀 1374·2019-08-23 11:32
閱讀 1439·2019-08-22 16:09