He visto el término "serializado" en todas partes, pero nunca lo he explicado. Por favor explica lo que eso significa.¿Qué es un objeto "serializado" en la programación?
Respuesta
La serialización generalmente se refiere al proceso de conversión de un tipo de datos abstracto a una secuencia de bytes (a veces se serializa en texto, XML o CSV u otros formatos. Lo importante es que es un formato simple que se puede leer/escrito sin entender los objetos abstractos que representan los datos). Al guardar datos en un archivo, o transmitir a través de una red, no puede simplemente almacenar un objeto MyClass
, solo puede almacenar bytes. Por lo tanto, debe tomar todos los datos necesarios para reconstruir su objeto y convertirlo en una secuencia de bytes que se pueden escribir en el dispositivo de destino y, posteriormente, leer y deserializar, reconstruyendo su objeto.
¿un tipo de datos abstracto? más como un concreto .... –
Los objetos de clase son tipos de datos abstractos. Resumen como en "no es un tipo de datos primitivo, sino algo que representa un concepto abstracto". Una clase 'Car' es un tipo de datos abstracto. Representa algo abstracto en el programa. No hay autos adentro. Solo datos que proporcionan la abstracción de uno. Y esa abstracción debe ser demolida para serializarla. No puede almacenar un automóvil en un archivo, pero puede almacenar los datos necesarios para reconstruir la instancia de la clase 'Car'. – jalf
No, yo no soy. No estoy hablando de una clase abstracta, que estoy de acuerdo es algo completamente diferente. Un tipo de datos abstracto es más o menos un término más general para una clase (excepto que cubre muy bien los equivalentes en idiomas sin clases). Una clase es una abstracción, y es un tipo de datos. Llamarlo un tipo de datos abstracto no es una idea que se me ocurrió. :) – jalf
Serialización es el proceso de tomar una instancia de objeto y convertirla a un formato en el que se puede transportar a través de una red o persistir en el almacenamiento (como un archivo o base de datos). El formato serializado contiene la información de estado del objeto.
La deserialización es el proceso de utilizar el estado serializado para reconstruir el objeto del estado serializado a su estado original.
explicación real simple, serialización es el acto de tomar algo que está en la memoria como una instancia de una clase (objeto) y transformarlo en una estructura adecuada para el transporte o el almacenamiento.
Un ejemplo común es la serialización XML para usar en servicios web. Tengo una instancia de una clase en el servidor y necesito enviarla a través de la web, primero la serializo en xml, lo que significa crear una versión xml de esos datos en la clase, una vez en xml puedo usar un medio de transporte como HTTP para enviarlo fácilmente.
Existen varias formas de serialización como XML o JSON.
Existen (al menos) dos significados completamente diferentes a la serialización. Uno está convirtiendo una estructura de datos en memoria en una secuencia de bits, por lo que puede escribirse en el disco y reconstituirse posteriormente, o transmitirse a través de una conexión de red y usarse en otra máquina, etc.
El otro significado está relacionado con serial vs Ejecución paralela: es decir, garantizar que solo un hilo de ejecución haga algo a la vez. Por ejemplo, si va a leer, modificar y escribir una variable, debe asegurarse de que un hilo complete una secuencia de lectura, modificación y escritura antes de que otro pueda iniciarla.
Estoy contento alguien mencionó el otro significado de 'serialización' - Recuerdo haber estado confundido la primera vez que encontré el "escupir un objeto en un archivo", lo que significa que lo había usado para significar "secciones críticas" durante mucho tiempo antes de eso . –
Creo que te refieres a Secuencial en lugar de serializado ... –
No - "serializado" también se puede usar para indicar "serializar * acceso * a datos o código". "Marshalling" es el término que utilicé para obtener los datos de un objeto a/desde un archivo (u otra secuencia) antes de que el término "serialización" fuera utilizado para eso en el contexto de Java/.NET (al menos para mí). –
Lo que dijeron. La palabra "serial" se refiere al hecho de que los bytes de datos deben ponerse en un orden estandarizado para ser escritos en un dispositivo de almacenamiento en serie, como un flujo de salida de archivo o un bus serie. En la práctica, los bytes brutos rara vez son suficientes. Por ejemplo, una dirección de memoria del programa que serializa la estructura de datos puede no ser válida en el programa que reconstruye el objeto a partir de los datos almacenados. Entonces se requiere un protocolo. Ha habido muchos, muchos estándares e implementaciones a lo largo de los años. Recuerdo uno de mediados de los 80 llamado XDR, pero no fue el primero.
- tiene datos en un formato determinado (por ejemplo, lista, mapas, objetos, etc.)
- usted quiere transportar que los datos (por ejemplo, a través de una llamada a la API o función)
- el medio de transporte solamente admite ciertos tipos de datos (por ejemplo, JSON, XML, etc.)
- Serialización: Convierta sus datos existentes a un tipo de datos compatible para que pueda ser transportado.
La clave es que usted necesita transportar datos y los medios por los cuales el transporte solo permite ciertos formatos. Su formato de datos actual no está permitido, por lo que debe "serializarlo". Por lo tanto, como Mitch respondió:
Serialización es el proceso de tomar una instancia de objeto y convertirla a un formato en el que se puede transportar.
- 1. ¿Cómo cambiar un objeto serializado?
- 2. Extensión de archivo para un objeto serializado
- 3. Almacenar un objeto serializado en la base de datos MySql
- 4. Encontrar serialVersionUID del objeto serializado
- 5. Serialización de XML: objeto no serializado
- 6. ¿Qué es la programación lineal?
- 7. intercambio de clave pública como un objeto serializado
- 8. Java: ¿forma fácil de inspeccionar la estructura del objeto serializado?
- 9. Llamar a inicializar al cargar un objeto serializado con YAML
- 10. ¿Qué es la programación basada en datos?
- 11. ¿Cómo puedo averiguar el serialVersionUID de un objeto Java serializado?
- 12. ¿Qué es un estilo sin puntos en la programación funcional?
- 13. ¿Qué es un objeto jQuery?
- 14. ¿Cómo se usa HttpURLConnection para enviar un objeto serializado a un Servlet de la clase Java?
- 15. objeto WCF Lista Serializado dar nombres extraños para los objetos
- 16. ¿Qué es un modismo de programación?
- 17. ¿Qué es un lenguaje de programación formal?
- 18. ¿Qué es la programación de escopeta/vudú?
- 19. ¿Qué es la programación orientada a datos?
- 20. ¿Qué es la programación orientada a aspectos?
- 21. ¿Por qué es buena la programación funcional?
- 22. ¿La programación simultánea es igual a la programación en paralelo?
- 23. ¿La programación en paralelo es == programación multiproceso?
- 24. ¿La programación funcional es un subconjunto de la programación imperativa?
- 25. ¿Qué es exactamente "programación basada en interfaz"?
- 26. ¿Qué es zip (programación funcional?)
- 27. ¿Qué es un "objeto incompletamente construido"?
- 28. ¿Cómo detectar mediante programación si un objeto es un objeto jQuery?
- 29. ¿Qué es la programación orientada a componentes en Java?
- 30. ¿Qué es un objeto de código Python?
Si alguien pudiera dar un ejemplo detallado, sería genial. Cuando busco este tema, también estoy confundido. Los ejemplos se extienden hasta 'pickle.dump (object, file)' y 'pickle.load (file)' (usando Python, por ejemplo), lo que honestamente es totalmente inútil para ayudar a uno a entender. –