ByteStrings 和 Buffers

ByteStrings 和 Buffers

Okio 围绕两种类型构建,它们将大量功能集成到一个简单的 API 中:

ByteString 是一个不可变的字节序列。对于字符数据,String 是基础。ByteString 是 String 久违的兄弟,可以很容易地将二进制数据视为一个值。这个类是符合人体工程学的:它知道如何编码和解码为 hex,base64 和 UTF-8。

缓冲区是一个可变的字节序列。与 ArrayList 一样,你无需提前调整缓冲区大小。你将缓冲区读取和写入队列:将数据写入末尾并从前面读取。没有义务管理职位,限制或能力。

在内部,ByteStringBuffer 做了一些聪明的事情来节省 CPU 和内存。如果将 UTF-8 字符串编码为 ByteString,它会缓存对该字符串的引用,这样如果稍后对其进行解码,则无需执行任何操作。

Buffer 实现为段的链接列表。将数据从一个缓冲区移动到另一个缓冲区时,它会重新分配段的所有权,而不是复制数据。这种方法对多线程程序特别有用:与网络通信的线程可以与工作线程交换数据而无需任何复制或仪式。