日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Google protobuf使用技巧和经验

發布時間:2025/6/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Google protobuf使用技巧和经验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Google protobuf是非常出色的開源工具,在項目中可以用它來作為服務間數據交互的接口,例如rpc服務、數據文件傳輸等。protobuf為proto文件中定義的對象提供了標準的序列化和反序列化方法,可以很方便的對pb對象進行各種解析和轉換。以下是我總結的protobuf使用技巧和經驗,分享給大家。由于公眾號尚未開通評論功能,抱歉暫時還不能評論交流。

?

技巧1:使用optional而不是required字段。

protobuf的可選字段optional是一個很巧妙的設計,optional字段是可選的,一個optional字段存在與否都不影響proto對象的序列化和反序列化,利用它可以實現數據協議的向后兼容和向前兼容,即以后增加新的字段,或棄用(注意這里是棄用而不是刪除)舊字段都不需要修改代碼。?

相比optional字段,requried字段要求字段必須存在,否則會導致proto解析失敗。一旦某個字段被設計為requried類型,將來隨著業務的快速發展可能會成為負擔,因此在使用requried類型時一定要慎重。?

?

技巧2:使用bytes而不是string字段。

這個技巧要感謝身邊好同事的建議和提醒,protobuf的bytes和string都能表示字符串,但是string類型會對字符串做utf8格式校驗,而bytes不會,因此使用bytes的編解碼效率更高。

?

技巧3:盡可能只維護一份proto文件。

世界上唯一不變的事情就是永遠在發生變化,精心設計好的proto文件也會隨著業務發展而改變。因此,工程中不提倡拷貝分發proto文件,而應通過提供git地址的方式只維護一份proto文件。?

?

技巧4:盡可能減少對其他proto文件的依賴。

proto應盡量獨立,在某些編程語言如lua中是不支持proto中嵌套其他proto這種方式的,需要手動修改以剔除外部proto依賴,或采用其他辦法解決。另外,減少對其他proto文件的依賴也有利于對proto的查看和理解。?

?

技巧5:利用開源工具實現proto和json的轉換。

protobuf的二進制可讀性不好,遠不如json的可讀性,工程中有很多地方都會涉及proto和json之間的轉換。假如你手頭上有一個很好用的json開發接口,現在要實現proto和json之間的相互轉換,一定要抵制住造輪子的沖動,而應該去找找json2pb這樣的開源工具。開源工具只需要幾行代碼就能搞定這樣的需求,又好又快,既能提高工作效率,又可以保證質量。?

?

更多技巧: 網上還有一些很好的關于protobuf的文章,例如protobuf和thrift之間的優缺點對比,protobuf的int壓縮設計,protobuf的使用例子,以及lua中解決proto文件嵌套其他proto文件的解決方法等等。學無止境,唯有一生勤勉。?

?

金句分享

開始時,我并不指望能夠學到多少東西。可是,讀完這本書后,我發現,我激勵自己的方式無意中促成了自我憎恨。由于認為自己"應該"做到許多事情,我不停的指責自己、命令自己、要求自己。這不可避免地導致內在的分裂與不滿。

——摘自《非暴力溝通》的“譯序”,作者馬歇爾·盧森堡博士,譯者阮胤華。

轉載于:https://www.cnblogs.com/zgwu/p/10403939.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Google protobuf使用技巧和经验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。