protobuf的配置原始檔案.proto中,使用修飾符repeated、required、optional產生的java檔案的區別

來源:互聯網
上載者:User

標籤:protobuf   repeated   optional   required   netty   

最近在做一個基於Netty架構的項目。

該項目使用了Google的Protobuf作為編解碼的架構。(沒有使用XML或者json是為了更好的提高效率)。

經過了一段時間的使用我對Protobuf的原始檔案進行一個簡單的使用方法總結。

我主要在這裡說明一下,原始檔案.proto中,修飾符repeated、required、optional的區別。

0.windows環境,java工程

1.安裝protobuf後,找到protoc.exe

2.寫一個設定檔進行批處理(.bat),如所示



3.寫一個proto檔案,如:


package trade;message Testq{required string deal_no=1;required string client_id=2;}

(注意:此處之後要進行修飾符repeated、required、optional的區別比較,因此會不斷的修改proto檔案。)


4.開始進行比較。


4.1使用repeated和不使用repeated的區別。

     repeated 就是說該欄位是指定類型的數組。在java中是一個list,也就說,在調用的時候可以調用一個list集合,不需要一個一個的調用了,這樣做很方便。下面我們來看圖,進行詳細的說明:


   4.1.1設定檔的比較,

        


下面看看在java中的區別:


首先我們會看待到,在java中增加了public interface TestsOrBuilder的這些代碼,然後會看到,java.util.List<trade.Test.Testq> getTestsList();的代碼,這段代碼說明增加了repeated修飾符之後,產生的java代碼為list類型。




然後,我們會在697行找到Testq的代碼,因此,增加了repeated修飾之後,也會增加600多行代碼。詳見:



然後在下方還會發現,不同,詳見:

例如會在有repeated的檔案中增加,internal_static_trade_Tests_descriptor的程式碼片段



還會增加對於list的簡單描述。



4.2  關於requird和optional修飾符的區別


先看設定檔,如:



再來看產生的java代碼的區別:


首先會調整說明注釋,如




然後,關鍵代碼也會進行調整,如:不一樣的代碼required和optional-1




不一樣的代碼required和optional-2




不一樣的代碼required和optional-3





通過代碼我們可以看出,required的選項應該表示該欄位必選,optional表示可先。


最後那個\001 和\002的區別,我查到了之後再補充吧。

這個是在網上找的一段關於這個\002的說明,有懂的人幫著確認或者解釋一下吧。

Control Characters


                    CTRL   (^D means to hold the CTRL key and hit d)
Oct  Dec Char  Hex  Key     Comments
\000   0  NUL  \x00  ^@ \0 (Null byte)
\001   1  SOH  \x01  ^A    (Start of heading)
\002   2  STX  \x02  ^B    (Start of text)









   

protobuf的配置原始檔案.proto中,使用修飾符repeated、required、optional產生的java檔案的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.