国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

protocol buff

iflove / 482人閱讀

摘要:協議使用簡述是的一種數據交換的格式,它獨立于語言,獨立于平臺。可以用于對象序列話,序列化協議也是一種協議。

protocol buff 協議使用

github:
https://github.com/chengbingh...
(https://github.com/chengbingh...

1 簡述
 protocol buff 是google 的一種數據交換的格式,它獨立于語言,獨立于平臺。可以用于java 對象序列話,(Java序列化協議也是一種協議)。兩者都可以將對象序列化成字節數組,或者說是二進制數據,同時也可以反序列化


2 protoc.exe 的使用
protoc.exe 生成一個java 文件

1 需要軟件:protoc.exe 用于按照谷歌的要求通過一個配置文件生成java 類
2 創建一個配置文件:
   
        option java_package="com.hcb.proto";  //包名
        option java_outer_classname="PlayerModule";  //類名
        message PBPlayer{    // 是上述PlayerModule 中的一個內部類
        required int64 playerId =1;  //required 表示必須有值,int64表示java中的long
        
        required int32 age = 2;
     
        required string name = 3;
        
        repeated int32 skills = 4;  //repeated 表示可以有多個,表示集合
        }
        message  XXPlayer{}  //可以寫多個,
3 執行腳本
創建一個xxx.bat 文件,文件中有如下命令,
        protoc ./player.proto  --java_out=./
        pause   //pause表示停頓,參考bat 腳本。

上述3步即可生成一個java 文件

3.序列化和反序列化

========

導入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(){
    //獲取一個PBPlayer的構造器,用于創建PBPlayer
    Builder builder = PlayerModule.PBPlayer.newBuilder();
    //設置數據
    builder.setPlayerId(101).setAge(20).setName("peter").addSkills(1001).addSkills(1002);
    //構造出對象
    PBPlayer player = builder.build();
    //序列化成字節數組
    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 總結
  一般使用protocol buffer 序列化要比單程的使用java 對象流產生的字節數組差距極大,本人的測試用用例對比如下:
 序列化一個僅有4個屬性,集合屬性僅僅有2個元素。的對象
        private long playerId;
        
        private int age;
        
        private String name;
        
        private List skills = new ArrayList<>();

使用protocol buffer 結果如下:

[8, 101, 16, 20, 26, 5, 112, 101, 116, 101, 114, 32, -23, 7, 32, -22, 7]

使用JAVA 對象流

[-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]

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69061.html

相關文章

  • Bytom礦池接入協議指南

    摘要:比原項目倉庫地址地址礦機配置固件升級兩個都要刷先后順序沒關系升級時間較長,升級期間請勿斷電配置節點測試時可以考慮切換到分支降低難度使挖礦也能出塊,或初始化啟動時可以加上指定數據目錄,若目錄不存在則會自動新建該目錄流程初始化節點先建 比原項目倉庫: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/Byto...

    CoffeX 評論0 收藏0

發表評論

0條評論

iflove

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<