Es geht um Java. Wenn Sie ein Objekt serialisieren möchten Wenn Sie der Schnittstelle Serializable hinzufügen, wird diese serialisiert. Zu diesem Zeitpunkt ist es jedoch ein Memo, was zu tun ist, wenn es nicht serialisiert wird, selbst wenn Serializable hinzugefügt wird.
Erstens besteht der Serialisierungsprozess darin, in eine wiederherstellbare Zeichenfolge zu konvertieren. Es wird verwendet, um das Lesen von Objekten zu ermöglichen, die nur im Speicherbereich vorhanden sind, z. B. Object.
(Details unten) https://docs.oracle.com/javase/jp/8/docs/api/java/io/Serializable.html
Wenn Sie Objektinformationen mit Redis usw. beibehalten möchten, serialisieren Sie sie einmal (natürlich müssen Sie die Serialisierungsmethode nicht anwenden). Es ist möglich, die Objektinformationen beizubehalten.
Es gibt jedoch komplizierte Objektinformationen, und es tritt eine Ausnahme vom Typ JDK auf, die nicht serialisiert werden kann, oder Wenn unnötige Variableninformationen serialisiert werden und die Leistung beeinträchtigt wird, Es ist möglich, die zu serialisierende einzeln anzugeben.
Zu diesem Zeitpunkt kann was verwendet werden Externalizable
Wird sein.
public class HogeModel implements Externalizable {
/**
*Ursprünglicher Serialisierungsprozess
*
* @param out Ausgabestream
* @löst einen IOException IO-Fehler aus
*/
@Override
@SuppressWarnings("resource")
public void writeExternal(final ObjectOutput out) throws IOException {
Packer pk = MessagePackManager.getInstance().createPacker((OutputStream) out);
pk.write(this.hogehoge);
}
/**
*Ursprünglicher Deserialisierungsprozess
*
* @Parameter im Eingabestream
* @löst einen IOException IO-Fehler aus
*/
@Override
public void readExternal(final ObjectInput in) throws IOException {
try {
@SuppressWarnings("resource")
Unpacker upk = MessagePackManager.getInstance().createUnpacker((InputStream) in);
this.hogehoge = upk.readInt();
} catch (IOException e) {
throw e;
} catch (Exception e) {
throw new IOException(e);
}
}
}