Java中常見欄位的Protobuf部分序列化
問題內容
我有一條 protobuf 訊息,需要傳送給多個客戶端。該訊息對於每個客戶端具有相同的數據,除了一個欄位(序號)對於每個客戶端來說是不同的。現在,我可以更改生成的 Java 訊息物件中的字段,並分別為每個客戶端序列化訊息。但是有沒有一種方法可以序列化除一個欄位之外的所有內容,然後僅為每個客戶端序列化該欄位(例如,交換序列化訊息中的對應位元組或其他內容)?
編輯:我見過 mergeFrom 方法來合併兩個訊息,但根據我的理解,它首先解析訊息,然後交換數據,然後您可以再次序列化它,所以根本不是性能優化(?)。
解決方法
首先,我想非常確定這實際上與效能相關。如果協定緩衝區訊息不大(如果它們不是多個千字節,我什至不會考慮這一點),那麼我預計這對效能的影響基本上為零,並且您甚至不應該嘗試優化它.
假設您已將其視為瓶頸,那麼這並不難。連接序列化原型構造合併形式,所以大概這就是
myMessage.toBuilder().clearSpecialField().build().writeTo(outputStream); MyMessage.newBuilder().setSpecialField(...).build().writeTo(outputStream);
登入後複製
(如果您已將 special_field
作為必填欄位(違反最佳實踐),那麼您可能需要改用 buildPartial
。)
然後你將其作為一條原始訊息讀取
MyMessage.parseFrom(inputStream);
登入後複製
以上是Java中常見欄位的Protobuf部分序列化的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信條陰影:貝殼謎語解決方案
3 週前
By DDD
Windows 11 KB5054979中的新功能以及如何解決更新問題
2 週前
By DDD
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)
