Android ByteStrings e Buffers

Esempio

ByteStrings e Buffers

Okio è costruito attorno a due tipi che racchiudono molte funzionalità in un'API semplice:

ByteString è una sequenza immutabile di byte. Per i dati dei personaggi, String è fondamentale. ByteString è il fratello perduto di String, rendendo facile trattare i dati binari come un valore. Questa classe è ergonomica: sa come codificare e decodificare se stessa come hex, base64 e UTF-8.

Il buffer è una sequenza mutabile di byte. Come ArrayList, non è necessario dimensionare il buffer in anticipo. Si leggono e scrivono i buffer come coda: scrivere i dati fino alla fine e leggerli dal lato anteriore. Non vi è alcun obbligo di gestire posizioni, limiti o capacità.

Internamente, ByteString e Buffer fanno cose intelligenti per risparmiare CPU e memoria. Se codifichi una stringa UTF-8 come ByteString, memorizza nella cache un riferimento a quella stringa in modo che se decodifichi in seguito, non c'è lavoro da fare.

Buffer è implementato come un elenco di segmenti collegati. Quando si spostano i dati da un buffer a un altro, viene riassegnata la proprietà dei segmenti anziché la copia dei dati. Questo approccio è particolarmente utile per i programmi multithread: un thread che comunica con la rete può scambiare dati con un thread di lavoro senza alcuna copia o cerimonia.