序列化資料傳輸壓縮
1.名詞解釋
1.1序列化
序列化的資料傳輸時以一定格式傳輸
例:
struct data{
int64 data1;
int64 data2;
char data3[25];
}
但傳輸的資料實際上data1和data2大部分資料都是非常小的,只有極少數的資料會用到64位資料來進行儲存,這種時候本部落格的傳輸壓縮演算法就有用武之地。
1.2 1248碼:
在表示十進位制數時計算機除了二進位制編碼之外還有一種編碼方式叫做1248碼,其用4位二進位制數表示一位10進位制數。使用的地方例如高考的答題卡的塗寫中。
舉個例子
十進位制數255
對應的1248碼的二進位制的16進製表示就為:
0x0255
對應的機器二進位制碼的表示方法就為:
0xff
2.本演算法的思路:
將大量的不需要用1248編碼的資料放在序列化的資料的頭地址,將需要1248碼編碼的資料放在後半部分。利用1248碼所不能表示的10,11,12,13,14,15將資料分割,從而使資料變長去掉資料中大量不必要的0.
3.壓縮演算法:
雖然二進位制的序列化的資料儲存所需要的位數相對少一點,但是在序列化的時候,已經規定了資料所需的位數為64位。所以不論資料大小傳輸的時候都使用了64位來進行傳輸。大大的耗費了網路資源
壓縮演算法即先將資料轉化為BCD編碼後,在每一個資料的結尾利用1248碼所不能表示的10,11,12,13,14,15來進行分割資料。
拿開始定義的data結構體來說事:
例如傳輸這麼一個資料
data* a=(data*)malloc(sizeof(data));
data->data1=255;
data->data2=255;
data->data3="djwadja"
其所需傳輸的位數為64+64+25位。
而壓縮演算法傳輸的資料則為:
char[25]+0x255f255f
其傳輸的位數為25+64位。這樣就可以大大減少0所佔的位數。
4.使用此壓縮演算法的界線
對於64位的1248碼所能表示的最大數為10^16,但因為其中有4位的分割符,所以所能表示的最大數為10^15
即當結構體中的某一個屬性值有大量超過了10^15的數時,則此屬性建議放入序列化中,不使用此壓縮演算法。
相關文章
- 資料壓縮傳輸與斷點續傳那些事兒斷點
- 短影片開發app,利用資料壓縮加速大檔案傳輸APP
- 探索HTTP傳輸中gzip壓縮的祕密HTTP
- Python 壓縮資料夾併傳送郵件功能Python
- [20181112]11g 日誌傳輸壓縮模式.txt模式
- 怎麼把資料夾變成壓縮包傳送
- c# 上傳壓縮包 解壓,遍歷資料夾和檔案C#
- 0910 – iPaste 搞定資料壓縮AST
- linux 下壓縮與解壓資料夾Linux
- 傳輸體積下降 85%,融雲 HTTP 壓縮演算法解析HTTP演算法
- Java實現壓縮資料夾Java
- Hadoop(十九)MapReduce OutputFormat 資料壓縮HadoopORM
- js上傳圖片壓縮JS
- 怎麼把資料夾壓縮成壓縮包發給微信好友
- openGauss 支援OLTP場景資料壓縮
- Linux加密壓縮檔案/資料夾Linux加密
- Windows的壓縮資料夾(zip/cab)Windows
- 前端圖片壓縮及上傳前端
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- java 壓縮(解壓)檔案或者資料夾工具類Java
- nodejs 介面傳輸資料NodeJS
- iOS資料傳輸工具iOS
- 關於印度跨境資料傳輸,印度放寬了跨境資料傳輸
- 使用Java API進行tar.gz檔案及資料夾壓縮解壓縮JavaAPI
- 高效的資料壓縮編碼方式 Protobuf
- Redis資料結構三之壓縮列表Redis資料結構
- 使用libzip壓縮檔案和資料夾
- Redis底層資料結構——壓縮列表Redis資料結構
- tinypng upload一鍵壓縮上傳工具
- JS—圖片壓縮上傳(單張)JS
- 檔案壓縮和解壓縮
- openGauss OCK加速資料傳輸
- iPaas資料傳輸的方式
- HDFSDATANODE資料傳輸詳解
- TCP傳輸資料長度TCP
- 特殊條件資料傳輸
- 讓資料傳輸更安全
- 直播導播高畫質影片傳輸中的影片壓縮編碼原理解析