ByteStrings 和 Buffers

ByteStrings 和 Buffers

Okio 圍繞兩種型別構建,它們將大量功能整合到一個簡單的 API 中:

ByteString 是一個不可變的位元組序列。對於字元資料,String 是基礎。ByteString 是 String 久違的兄弟,可以很容易地將二進位制資料視為一個值。這個類是符合人體工程學的:它知道如何編碼和解碼為 hex,base64 和 UTF-8。

緩衝區是一個可變的位元組序列。與 ArrayList 一樣,你無需提前調整緩衝區大小。你將緩衝區讀取和寫入佇列:將資料寫入末尾並從前面讀取。沒有義務管理職位,限制或能力。

在內部,ByteStringBuffer 做了一些聰明的事情來節省 CPU 和記憶體。如果將 UTF-8 字串編碼為 ByteString,它會快取對該字串的引用,這樣如果稍後對其進行解碼,則無需執行任何操作。

Buffer 實現為段的連結列表。將資料從一個緩衝區移動到另一個緩衝區時,它會重新分配段的所有權,而不是複製資料。這種方法對多執行緒程式特別有用:與網路通訊的執行緒可以與工作執行緒交換資料而無需任何複製或儀式。