Heim  >  Artikel  >  Java  >  Was ist Serialisierung? Eine ausführliche Einführung in die Serialisierung

Was ist Serialisierung? Eine ausführliche Einführung in die Serialisierung

PHP中文网
PHP中文网Original
2017-06-20 14:25:493008Durchsuche

1 Serialisierung

1 Was ist Serialisierung?

Das Schreiben von Objekten im Speicher auf die Festplatte ist eine Serialisierung, die sich nicht von der allgemeinen Ausgabe unterscheidet, außer dass die Ausgabedaten ein Objekt und kein gewöhnlicher Text sind.

2. Die Rolle der Serialisierung

Da die Speicherung von Daten im Speicher temporär ist, müssen Sie das Objekt für längere Zeit speichern Zeit muss das Objekt sein. Das Schreiben auf die Festplatte führt zur Serialisierung.

3. Bedingungen für die Serialisierung

Damit ein Objekt serialisiert werden kann, muss die Klasse, zu der das Objekt gehört, die Serializable-Schnittstelle implementieren Schnittstelle Es handelt sich um eine ikonische Schnittstelle ohne Felder und abstrakte Methoden. Wenn die JVM auf diese Schnittstelle trifft, weist sie der Klasse eine serialisierte Versionsnummer zu.

4. Ein Objekt wird serialisiert und die globalen Variablen im Objekt, einschließlich privater Typvariablen, werden auf die Festplatte geschrieben.

5. Felder, die nicht serialisiert werden können:

  1. Statische Felder können nicht serialisiert werden, der Wert einer statischen Variablen Es handelt sich um den Wert in der aktuellen JVM, nicht um den bei der Serialisierung festgelegten Wert.

  2. Durch Transient geänderte Felder können nicht serialisiert werden.

6. Serialisierungsvorgang:

OutputStream ops=new FileOuptStream(path);
ObjectOuptStream oos=new ObjectOutputStream(ops);
Object obj=new Ojbect();
oos.writeObject(obj);

2 Deserialisierung

1. Was ist Deserialisierung?

Deserialisierung besteht darin, die Daten auf der Festplatte in den Speicher zu schreiben und in Dateien gespeicherte Objekte zu erhalten .

2. Anforderungen an den Deserialisierungsvorgang

Die Reihenfolge der Deserialisierung muss mit der Reihenfolge der Serialisierung übereinstimmen.

3. Serialisierungsversionsnummer

⑴ Während der Serialisierung wird eine lange Nummer generiert, die Serialisierungsversionsnummer genannt, und unter gespeichert Vergleichen Sie in serialisierten Dateien und Klassendateien die beiden -Nummern während der Deserialisierung. Wenn sie gleich sind, ist die Serialisierung erfolgreich. Wenn sie nicht gleich sind, kann die Deserialisierung nicht durchgeführt werden.

⑵ Die serialisierte Versionsnummer wird verwendet, um die Version der Entitätsklasse zu markieren, sobald die Entitätsklasse geändert wird, wenn die serialisierte Versionsnummer nicht explizit angegeben wird , generiert das System automatisch eine neue Versionsnummer. Wenn die beiden Versionsnummern unterschiedlich sind, können sie nicht serialisiert werden. Im Allgemeinen wird die Serialisierungsversionsnummer explizit in der Entitätsklasse festgelegt, die serialisiert werden muss.

⑶ Wenn keine Neukompilierung erfolgt, wird nicht unbedingt eine neue serialisierte Versionsnummer generiert. Nur wenn sich die Entitätsklasse ändert, wird eine neue serialisierte Versionsnummer generiert.

⑷Parsing-Prozess

Vergleichen Sie beim Deserialisieren zunächst, ob die serialisierte Versionsnummer in der serialisierten Datei und der Klassendatei identisch ist sind gleich, was darauf hinweist, dass die serialisierte Datei von der aktuellen -Klassendatei generiert wird und nicht gleich deserialisiert werden kann, was darauf hinweist, dass sie nicht von der aktuellen Klassendatei generiert wird und die Version inkonsistent ist deserialisiert werden.

⑸Betrieb in umgekehrter Reihenfolge:

InputStream is=new FileInputStream(path);
ObjectInputStream ois=new ObjectIputStream(is);
Object obj=ois.readObject();

Das obige ist der detaillierte Inhalt vonWas ist Serialisierung? Eine ausführliche Einführung in die Serialisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn