1. 程式人生 > >開源一個動態解析protobuf的工具

開源一個動態解析protobuf的工具

好久沒寫部落格了,主要是這一年技術沒啥長進都打雜了,還有就是生活瑣事越來越多,人也越來越懶了…… 之前專案中用到了Protobuf,然後測試發現這玩意不好測,總不能每次定個協議或者改下都要編譯Java程式碼吧。於是我這邊寫了簡單的工具,動態的解析PB檔案。效果如下:

“選擇請求協議”和“選擇響應協議”就是選擇定義的PB,比如下面這個檔案:

package perf.pb;
option optimize_for = LITE_RUNTIME;

message Entry {
    required string key = 1;
    optional bytes value = 2;
    repeated Entry extinfo = 3;
}

message Request {
    repeated Entry entry = 1;
}

message Response {
    repeated Entry entry = 1;
}

 另外工具支援一些簡單的功能,比如“儲存”,“另存為”(將PB檔案和資料打包在一起),生成PB二進位制的資料等:

我們用的http,但核心程式碼就是動態解析PB檔案和將資料繫結到JTree上,有需要的朋友可以拿原始碼改下,因為急著實現功能,所以程式碼很亂。

關於PB檔案格式有幾點:

1)支援import,工具會自動處理引用;

2)支援repeated

3)支援預設值,包括列舉的預設值

4)必須要指定package

5)不支援message巢狀

還有如果執行有問題,看下你Java環境指向的jdk或jre的lib目錄下有沒有tools.jar,沒有的話從別的目錄拷過來就可以了。

其中動態解析用的是百度的jprotobuf,但是官方的版本不支援類似上面“Entry”巢狀“Entry”的格式,還有不支援repeated,我fork了一個版本:https://github.com/zhanjindong/jprotobuf

相關推薦

開源一個動態解析protobuf工具

好久沒寫部落格了,主要是這一年技術沒啥長進都打雜了,還有就是生活瑣事越來越多,人也越來越懶了…… 之前專案中用到了Protobuf,然後測試發現這玩意不好測,總不能每次定個協議或者改下都要編譯Java程式碼吧。於是我這邊寫了簡單的工具,動態的解析PB檔案。效果如下: “選擇請求協議”和“選擇響應協議”就

開源一個程式碼規範檢測工具

最近寫了一個程式碼規範檢測工具 code-lint (借鑑了前公司部門前端大佬開發的一個工具),能夠通過 npm 直接安裝和一份配置檔案實現對專案的程式碼規範檢測。 為什麼要寫這樣的一個工具呢? 一是希望能夠避免在多個專案中重複地去做程式碼規範配置; 二是希望能夠使不同技術棧的專案都使用同一份程式碼規範

開源一個我的Java工具類集合,幫你簡化開發工作

更新時間:Feb 12, 2018在當初剛接觸Java時,感覺有時候想找實現一些小功能,但是找不到已實現的簡易工具,要麼就是這種有相關功能的庫,呼叫起來特別複雜。我呢,是個特別討厭把簡單的事弄複雜的那種

宜信開源|一個例項解析PaaS平臺LAIN的9大殺手級功能

一、基於Docker的PaaS平臺LAIN 在金融的場景下,LAIN 是為解放各個團隊和業務線的生產力而設計的一個雲平臺。LAIN

分享一個開源的網盤下載工具BaiduPCS-Go

eid 下載工具 使用命令 遇到 功能 保存文件 命令的使用 語言 點擊 大家在使用網盤的時候,一定忍受不了限速下載的速度。今天給大家分享一個開源的網盤下載項目BaiduPCS-Go。Go語言編寫,仿 Linux shell 文件處理命令的百度網盤命令行客戶端。多平臺支持,

自己寫的一個動態生成表格的工具

效果:可以通過傳入引數動態生成表格 實現程式碼 public static StringBuffer Testmain() { //表頭 ArrayList<Data> datas=new ArrayList<Data&

使用POI做的一個生成Excel的工具類。包含了導出Excel和解析Excel方法

time 類型 解析excel rom 統計表 pty reat iou 包括 PoiExcelUtils.java /** * */ package com.common.office; import java.io.File; import java.io.

使用POI做的一個生成Excel的工具類。包含了匯出Excel和解析Excel方法

PoiExcelUtils.java /** * */ package com.common.office; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStrea

開源一個工具】一鍵將網頁內容推送到Kindle

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Diagnostic

時間都去哪兒了?開源一個統計iPhone上App執行時間和開啟次數的小工具【iOS8已失效】

         如今,大家每天都有大量時間花在手機上,但是,大家有沒有想過自己的時間都花在哪些App上了呢?相信很多人都有這樣的需求,不過iOS系統本身並不能顯示每個App的執行時間和次數,因此,本人寫了這樣一個小工具,可以在後臺進行監控當前使用的App,對App的開啟次數和執行時間進行統計,可以顯示今日、

開源一個使用python和pyQT實現的產測工具

#### 導語 #### 之前給朋友友情開發的一個產測工具,現開源,有需要的朋友可以在這個基礎上進行二次開發。 #### 操作介面如下 #### ![](https://img2020.cnblogs.com/blog/1677190/202003/1677190-20200311223559046-6657

Robot Framework XPATH元素的定位(如何獲取一個動態或具體的元素)

添加 nbsp clas 初學者 提取 一位 驗證 方法 work 前提部分(可略過):對於初學者來說,元素定位的方式相對直接、粗糙一點。比如,用鼠標放在一個字符上點擊右鍵查看元素,或者先點擊F12再查看元素,大多情況下這種方式都是可行的。而我們最需要關註的也是容易阻塞我們

自己打造了一個簡單的站長工具

spl logs images fan net ref 分享 style image 自己打造了一個簡單的站長工具   站長工具:www.fanguzai.net/ 自己打造了一個簡單的站長工具

JavaScript+svg繪制的一個動態時鐘

image oct source 屏幕大小 標記 attr clock brush ctype 結果圖: 代碼如下: <!DOCTYPE html> <html> <head> <title>動態時鐘</tit

開源APM應用性能管理工具調研

ons tracing nim htm track line nsa mbus cal 近期在設計一個DevOps平臺。希望整合一個APM工具進來,由於APM既可用於性能測試也可用於運維性能監控,是典型的Dev+Ops產品。商業的APM工具國內外已經有不少成熟產品了,而

python爬蟲 selenium+phantomjs動態解析網頁,加載頁面成功,返回空數據

img 使用 一個 做的 ima 導數 技術分享 信息 之前 廢話不多說,直接說重點: 剛開始做的時候,代理IP,頭部信息池,都已經做好了,使用selenium+phantomjs獲取js動態加載後的源碼 起初挺好的,能出來動態加載後的源碼,但是運行了幾次之後,電腦有點卡頓

web學習---html,js,php,mysql一個動態網頁獲取流程

htm 註意 blog sql 寫入 conn com sqli cms 使用bootstrap的cms模版系統搭建了一個信息管理系統。通過這個系統學習動態網頁獲取的工作流程。 抓包分析一個頁面的數據請求流程如下圖所示: 同樣,對於需要向數據庫插入數據,可以使用aja

如何編寫一個SQL註入工具

input 簡單 0x03 http images 構造 config dal nio 0x01 前言   一直在思考如何編寫一個自動化註入工具,這款工具不用太復雜,但是可以用最簡單、最直接的方式來獲取數據庫信息,根據自定義構造的payload來繞過防護,這樣子就可以。

一個動態小導航欄(好看的,用C3)(不依賴js,點擊小圖切換大的背景圖)

width ima line auto fashion put spl body sha <!DOCTYPE HTML><htmllang="en-US"> <head> <meta charset="UTF-8

Android Gson解析json工具類封裝

pac spa google lis object sonar andro on() div package com.springSecurity.gson; import java.util.ArrayList; import java.util.List