Serialize 是什么?
这是IO存储中的一个概念。计算机中所有的内容都是0或者1的数字。这些数字按顺序排列,便可以表示计算机中的万事万物,当然Java的对象也不例外。在内存中,无论如何表示,对我们的操作都没有影响,所以我们不必关心。但是,当我们需要把对象存储到硬盘、数据库或其它相关介质时,我们就需要考虑这个表示格式或者转化方法。
Java的对象要如何转化为这0、1的序列呢?就是靠序列化,使用java.io.ObjectOutputStream类即可完成复杂的转化工作,但ObjectOutputStream类可以支持的只有实现了Serializable接口的对象,如果没有实现Serializable接口,则会抛出NotSerializableException。你希望序列化的类中,常常可能参杂了一些临时性成员变量或者一些你并不希望它们被存储下来的属性,这些成员变量或者属性,就需要用transient关键字修饰。它们会在序列化时被忽略。当从存储介质中读取并还原成对象时,他们会被还原为属性的默认值(基本类型为0或false,对象为null)
JavaBean为什么要实现java.io.Serializable接口实现序列化?
客户端访问了某个能开启会话功能的资源, web服务器就会创建一个与该客户端对应的HttpSession对象,每个HttpSession对象都要站用一定的内存空间。如果在某一时间段内访问站点的用户很多,web服务器内存中就会积累大量的HttpSession对象,消耗大量的服务器内存,即使用户已经离开或者关闭了浏览器,web服务器仍要保留与之对应的HttpSession对象,在他们超时之前,一直占用web服务器内存资源。
web服务器通常将那些暂时不活动但未超时的HttpSession对象转移到文件系统或数据库中保存,服务器要使用他们时再将他们从文件系统或数据库中装载入内存,这种技术称为Session的持久化。
将HttpSession对象保存到文件系统或数据库中,需要采用序列化的方式将HttpSession对象中的每个属性对象保存到文件系统或数据库中;将HttpSession对象从文件系统或数据库中装载如内存时,需要采用反序列化的方式,恢复HttpSession对象中的每个属性对象。所以存储在HttpSession对象中的每个属性对象必须实现Serializable接口。当然如果不是存储在session中的JavaBean可以不用存储哈。
分享到:
相关推荐
同时,`Deserialize`指令提供了反序列化功能,可以从BYTE数组中恢复原始的UDT或STRUCT数据,这样可以实现数据的完整生命周期管理,从创建、传输到解析。 为了更好地掌握这个功能,建议动手实践,尝试创建自己的UDT...
在这个“se_mouz_image.rar_serialize_序列化”的主题中,我们将深入探讨如何利用`serialize()`函数来序列化文档以及实现鼠标画图功能。 首先,我们来详细解释一下`serialize()`函数。`serialize()`是PHP内建的一个...
在 Boost.Serialization 中,你需要为要序列化的类定义两个友元函数:`serialize()` 和 `save_construct_data()`。`serialize()` 函数用于实际的数据存取,而 `save_construct_data()` 用于保存构造对象所需的信息,...
在JavaScript中,序列化(Serialization)和反序列化(Unserialization)是两个关键概念,用于将数据对象转换为可传输的字符串格式,以及将这种字符串还原回原始对象。这一过程在许多场景下都非常有用,例如在存储...
在C#中,我们可以使用`System.Xml.Serialization`命名空间中的`XmlSerializer`类来实现XML序列化。序列化过程通常包括以下步骤: 1. 定义要序列化的类:在类中添加`[Serializable]`属性或者使用`[XmlRoot]`、`...
详解Python 序列化Serialize 和 反序列化Deserialize 序列化 (serialization) 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化, 它将流转换为对象。这两个过程结合起来,可以轻松地...
在C#中,我们可以使用ISerializable接口或者[Serializable]特性标记我们的类,然后使用BinaryFormatter、XmlSerializer等类来实现序列化。 接下来是反序列化,它是序列化的逆过程,即将字节流还原为原来的对象实例...
4. **实现 `IXmlSerializable` 接口**:这是一种高级序列化方式,允许完全自定义序列化和反序列化的行为。如果你的类有非常特殊的序列化需求,例如处理复杂的继承结构,这可能是最佳选择。 在"SerializeTest"这个...
这个类可能包含了一些方法,如`Serialize`(将对象序列化为XML字符串或写入XML文件)和`Deserialize`(从XML字符串或文件反序列化回对象)。 接下来,`说明.txt`文件应该提供了关于如何使用这个项目的详细指南。它...
深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字) Java序列化和反序列化是Java虚拟机中的一种重要机制,它们可以将Java对象转换为二进制数据,然后...
1. 实现序列化:创建一个实现了`Serializable`接口的对象,然后使用`SerializationUtils.serialize(obj)`(来自Commons Lang)将其序列化为字节数组。 2. 存储序列化后的对象:使用Jedis的`set(key, bytes)`方法将...
例如,使用BinaryFormatter类进行序列化时,可以创建一个BinaryFormatter实例,然后调用它的Serialize方法将对象写入流,反序列化时则调用Deserialize方法。 6. **注意事项**: - 序列化和反序列化操作可能导致...
JSON反序列化的实现方法与XML反序列化类似,我们可以使用`DataContractJsonSerializer`类来实现JSON反序列化。 本文介绍了XML和JSON的序列化和反序列化对象或集合的实现方法。这些方法可以应用于各种软件开发场景...
本主题将深入探讨如何在Windows Forms(WF)环境中,利用C#语言进行对象的直接保存与读取,以及通过对象序列化和反序列化的方式实现对象的保存与恢复。 首先,我们来理解什么是对象的直接保存与读取。在C#中,可以...
MFC库提供了一种简洁的方法来实现对象的序列化,通过继承`CObject`类或者使用`serialize`成员函数,开发者可以轻松地保存和恢复对象的状态。 描述中提到的“网上找的,希望对你有用”表明这些资料可能是从互联网上...
实现这些序列化和反序列化的方法通常包括以下步骤: - 定义要序列化的类,添加`Serializable`属性。 - 创建序列化器实例,如`BinaryFormatter`、`XmlSerializer`或`SoapFormatter`。 - 使用`Serialize`方法将对象...
在Unity游戏引擎中,开发人员经常需要处理数据的序列化和反序列化,以便于存储、传输或网络通信。Protocol Buffers(Protobuf)是一种高效、跨平台的数据序列化协议,由Google开发。本Demo将展示如何在Unity中集成并...
3. 实现序列化:使用如BinaryFormatter或XmlSerializer的实例,调用其Serialize方法,传入目标流(如FileStream)和要序列化的对象。 4. 存储数据:序列化后的数据通常被写入文件或发送到网络。 5. 实现反序列化:从...
在C/C++中,由于没有内置的序列化支持,开发者通常需要自定义实现。本主题探讨的是如何利用C++的模板机制来实现结构体的序列化配置,以提高代码的可复用性和灵活性。 首先,我们需要理解C++的模板。模板是C++中的一...