成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Protobuf vs CBOR:新一代的二進制序列化格式

開發 前端
Protobuf 是 Google 開發的一個二進制序列化格式,與 JSON 相比,Protobuf 的數據非常精簡,甚至連數據的字段名都沒有。

 [[386183]]

在以前的文章中,我們講到了什么時候用 Yaml,什么時候用 JSON,什么時候用 Protobuf:

  • 人寫機器讀,用 Yaml
  • 機器寫,人讀,用 JSON
  • 機器寫,機器讀,用 JSON 或者 Protobuf

JSON 作為幾乎每一個語言都支持的序列化格式,在很多地方都得到了廣泛應用。但有個弊端,JSON 里面充斥了大量的大括號、中括號和雙引號,導致冗余的字符太多,數據量非常大,在對傳輸速度有高要求的場景下,數據量越大,占用的傳輸帶寬就越大,單位時間傳輸的數據也就越少。

Protobuf 是 Google 開發的一個二進制序列化格式,與 JSON 相比,Protobuf 的數據非常精簡,甚至連數據的字段名都沒有。例如有這樣一段數據:

  1. a = {'name''kingname''salary': 99999, 'address''上海''skill': ['Python''爬蟲''Golang']} 

如果用 Protobuf 來表示,那么數據的二進制形式是這樣的:

這個二進制數據只有值,但沒有字段名,所以要解析這些數據,必須在代碼里面額外把字段名帶上。所以需要定義一個xxx.proto文件,在里面標記每一個字段的信息。在任何時候任何語言中,需要序列化和反序列化的地方,都要提前使用protoc命令,基于這個.proto文件,生成一個xxx_pb2文件,通過從這個 xxx_pb2文件中導入數據對象來對數據進行處理。

因此,我們說,proto 格式,雖然確實精簡了網絡中的數據傳輸量,但卻給開發者增加了相當大的工作量。

而最近,又新出來一種二進制序列化格式:CBOR,它的數據比 JSON 小,但是開發起來又比 Protobuf 簡單得多。

我們來看看使用 CBOR 對上面的數據進行序列化操作。首先在 Python 中安裝CBOR:

  1. python3 -m pip install cbor2 

安裝完成以后,我們來對數據進行序列化:

  1. import cbor2 
  2. a = {'name''kingname''salary': 99999, 'address''上海''skill': ['Python''爬蟲''Golang']} 
  3.  
  4. result = cbor2.dumps(a) 
  5. print(result) 

運行效果如下圖所示:

注意,打印出來的是二進制數據,不是字符串。可以看到,數據是自帶字段名的,字段名與值之間會有特殊的字符進行分割,CBOR 能夠自動識別這些特殊符號,從而區分字段名和字段值。

經過我的測試,一個150MB 的大 JSON文件,讀入到內存,然后重新通過 CBOR 序列化以后寫文件,這個文件大小可以縮減到60MB 左右。雖然壓縮比例不如 Protobuf,可讀性不如 JSON;但是壓縮比例比 JSON 高,可讀性比 Protobuf 好,而且幾乎不增加額外工作量。

大家在寫微服務或者網站前后端通信的時候,可以考慮試一試 CBOR — Concise Binary Object Representation | Overview[1]。

參考資料

[1]CBOR — Concise Binary Object Representation | Overview: https://cbor.io/

 本文轉載自微信公眾號「未聞Code」,可以通過以下二維碼關注。轉載本文請聯系未聞Code公眾號。

 

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2011-06-01 14:26:11

序列化

2022-09-05 08:12:28

Google二進制Protobuf

2015-06-30 10:00:44

Hyper虛擬化云計算

2012-05-29 09:23:42

虛擬化微軟私有云

2009-09-02 16:10:40

ADSL技術

2010-02-07 15:50:33

Android手機

2012-07-02 10:36:19

菲亞特

2022-03-10 16:01:29

Playwright開源

2013-01-04 16:15:08

微軟ERPDynamics AX

2009-02-27 09:37:33

Google二進制代碼

2025-02-10 09:57:23

2016-01-26 11:58:12

2010-05-05 14:33:55

虛擬化

2012-08-30 09:34:08

VMware

2012-07-25 13:19:16

ibmdw

2024-01-23 12:27:15

2011-12-31 09:31:57

Web

2011-12-31 11:22:50

Web新世界

2011-03-31 17:49:51

微軟嵌入式WindowsEmbe

2018-06-01 15:18:43

LinuxOrbital App開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色av网站在线免费观看 | 国产精品亚洲视频 | 中文字幕精品一区二区三区精品 | 免费a国产 | 一区二区三区视频在线观看 | 亚洲福利视频一区二区 | 在线观看涩涩视频 | 国产黄色麻豆视频 | 亚洲瑟瑟 | 亚洲网站在线观看 | 成人欧美一区二区三区视频xxx | 精品国产乱码久久久久久闺蜜 | 久久精品亚洲 | 国产午夜精品久久久久 | 久久久久国产一区二区三区 | 91精品国产综合久久久久 | 日本一区二区视频 | www一级片 | 日韩美女爱爱 | 国产在线精品一区二区三区 | 欧美日本在线 | 色必久久| 日韩视频免费看 | 中文一区二区视频 | 久久久久久国模大尺度人体 | 91视频一88av| 久久精品欧美一区二区三区麻豆 | 视频在线亚洲 | av黄色在线观看 | 欧美电影免费网站 | 91精品www | 成人亚洲性情网站www在线观看 | 福利精品| 国产亚洲人成a在线v网站 | 成人精品一区亚洲午夜久久久 | 国产精品美女久久久久aⅴ国产馆 | 日韩精品一区二区三区视频播放 | 中文字幕一区二区三区四区五区 | 欧美电影在线观看网站 | 日韩视频在线一区 | 一级aaaaaa毛片免费同男同女 |