Buffer y Stream Node.js: experimento práctico de backend web

Búfer _

El lenguaje JavaScript en sí solo tiene tipos de datos de cadena, no tipos de datos binarios.

Pero cuando se trata de flujos como TCP o flujos de archivos, se deben utilizar datos binarios. Por lo tanto, en Node.js, se define una clase Buffer, que se utiliza para crear un área de buffer específicamente para almacenar datos binarios.

En Node.js, la clase Buffer es una biblioteca principal que se incluye con el núcleo de Node. La biblioteca Buffer ofrece un método para almacenar datos sin procesar en Node.js, lo que permite que Node.js procese datos binarios. Siempre que necesite procesar datos movidos durante las operaciones de E/S en Node.js, es posible utilizar la biblioteca Buffer. . Los datos sin procesar se almacenan en instancias de la clase Buffer. Un búfer es similar a una matriz de números enteros, pero corresponde a una parte de la memoria sin procesar fuera de la memoria del montón V8.

  1. ascii: solo se admiten datos ASCII de 7 bits. Esta codificación es muy rápida si se eliminan los bits altos.
  2. utf8: caracteres Unicode codificados multibyte. Muchas páginas web y otros formatos de documentos utilizan UTF-8.
  3. utf16le: carácter Unicode codificado en little-endian de 2 o 4 bytes. Admite parejas sustitutas (U+10000 a U+10FFFF).
  4. ucs2: alias de utf16le.
  5. base64 - Codificación Base64 base64_Enciclopedia Baidu
  6. latin1: una forma de codificar un búfer en una cadena codificada de un byte.
  7. binario: alias de latin1.
  8. hexadecimal: codifica cada byte en dos caracteres hexadecimales.

[Experimento 1] Ejecute el siguiente programa

Captura de pantalla de los resultados de ejecución

Crear clase de búfer

Buffer proporciona la siguiente API para crear clases de Buffer:

  1. Buffer.alloc(size[, fill[, encoding]]) : devuelve una instancia de Buffer del tamaño especificado. Si no se establece el relleno, se rellenará con 0 de forma predeterminada.
  2. Buffer.allocUnsafe(size) : devuelve una instancia de Buffer del tamaño especificado, pero no se inicializará, por lo que puede contener datos confidenciales.
  3. Buffer.allocUnsafeSlow(tamaño)
  4. Buffer.from(array) : Devuelve una nueva instancia de Buffer inicializada por el valor de la matriz (los elementos de la matriz pasados ​​solo pueden ser números; de lo contrario, se sobrescribirán automáticamente con 0)
  5. Buffer.from(arrayBuffer[, byteOffset[, length]]) : Devuelve un nuevo Buffer que comparte la misma memoria que el ArrayBuffer dado.
  6. Buffer.from(buffer) : copia los datos de la instancia de Buffer entrante y devuelve una nueva instancia de Buffer.
  7. Buffer.from(string[, encoding]) : devuelve una nueva instancia de Buffer inicializada por el valor de la cadena

[Experimento 2] Ejecute el siguiente programa, genere el contenido de buf1-6 y tome una captura de pantalla de los resultados.

búfer de escritura

buf.write(cadena[, desplazamiento[, longitud]][, codificación])

Los parámetros se describen a continuación:

cadena: la cadena que se escribirá en el búfer.

offset: el valor del índice donde el búfer comienza a escribirse, el valor predeterminado es 0.

longitud: el número de bytes escritos, por defecto buffer.length

codificación: la codificación que se utilizará. El valor predeterminado es 'utf8'.

valor de retorno

Devuelve el tamaño real escrito. Si no hay suficiente espacio en el búfer, solo se escribirá una parte de la cadena.

[Experimento 3] Ejecute el siguiente código:

Captura de pantalla de los resultados de ejecución:

Leer datos del buffer

gramática

La sintaxis para leer datos del búfer de nodo es la siguiente:

buf.toString([codificación[, inicio[, fin]]])

Los parámetros se describen a continuación.

codificación: la codificación que se utilizará. El valor predeterminado es 'utf8'.

inicio: especifica la posición del índice para comenzar a leer, el valor predeterminado es 0.

end: la posición final, por defecto es el final del búfer.

valor de retorno

Decodifica los datos del búfer y devuelve una cadena usando la codificación especificada.

[Experimento 4] Ejecute el siguiente código

Captura de pantalla de los resultados de ejecución: 

Convertir búfer a objeto JSON

【Experimento 5】 Ejecute el código

Captura de pantalla de los resultados de ejecución:

 

fusión de buffer

gramática

La sintaxis para la fusión del búfer de nodos es la siguiente:

Buffer.concat(lista[, longitud total])

Los parámetros se describen a continuación.

list: una lista de matriz de objetos Buffer utilizados para fusionar.

longitud total: especifica la longitud total de los objetos de búfer combinados.

valor de retorno

Devuelve un nuevo objeto Buffer con varios miembros fusionados.

[Experimento 6] Ejecute el siguiente programa:

Captura de pantalla de los resultados de ejecución:

Corriente de Node.js( corriente)

Leer datos de la secuencia

Cree un archivo input.txt con el siguiente contenido:

Departamento de Información y Ciencias de la Computación, Xinhua College, Universidad de Ningxia: Especialización en Ciencias de la Computación y Tecnología

[Experimento 7] Ejecute el siguiente programa

Captura de pantalla de los resultados de ejecución:

escribir flujo

[Experimento 8 ] Cree el archivo main.js, el código es el siguiente:

Captura de pantalla de los resultados de ejecución:

flujo de tubería

Las tuberías proporcionan un mecanismo desde un flujo de salida a un flujo de entrada. Por lo general, lo usamos para obtener datos de una secuencia y pasarlos a otra secuencia.

[Experimento 9] Cree el archivo input.txt con el siguiente contenido:

Departamento de Información y Ciencias de la Computación, Xinhua College, Universidad de Ningxia: Especialización en Ciencias de la Computación y Tecnología

Ejecute el siguiente código:

Captura de pantalla de los resultados de ejecución:

La función de este programa es:

Puede procesar archivos de manera más eficiente y simplificar la operación de copia de archivos.

Supongo que te gusta

Origin blog.csdn.net/weixin_57398221/article/details/124100191
Recomendado
Clasificación