Java 中对象的序列化技术

【第35题】JAVA高级技术-对象克隆4(序列化与对象克隆) 克隆对象系列 阅读详情
Java 中对象的序列化技术                              
1、含义:将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
2、编程要求:只有实现Serializable接口的类对象才可以被序列化。 Serializable接口没有定义任何成员,它只用来说明某个类可以被序列化。
3、序列化的特点:
(1)如果某个类能够被序列化,其子类也可以被序列化。
(2)声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。
(3)相关的类和接口:在java.io包中提供如下涉及对象的序列化的类与接口ObjectOutput接口、ObjectOutputStream类、ObjectInput接口、
ObjectInputStream类
4、ObjectOutput接口和ObjectOutputStream类
(1)ObjectOutput接口:它继承DataOutput接口并且支持对象的序列化,其内的writeObject()方法实现存储一个对象。
(2) ObjectOutputStream类:它继承OutputStream类并且实现ObjectOutput接口。利用该类来实现将对象存储(调用ObjectOutput接口中的writeObject()方法)。
注意:
(1)也可以利用ObjectOutputStream类的对象写入其它基本类型的数据值。
(2)出错时将抛出IOException异常。
5、ObjectInput接口和ObjectInputStream类
(1)ObjectInput接口:它继承DataInput接口并且支持对象的序列化,其内的readObject()方法实现读取一个对象。
(2) ObjectInputStream类:它继承InputStream类并且实现ObjectInput接口。利用该类来实现将对象存储(调用ObjectInput接口中的readObject()方法)。
注意:
(1)也可以利用ObjectInputStream类的对象读取其它基本类型的数据值。
(2)出错时将抛出IOException异常。
6、对象的序列化用途:
  利用对象的序列化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。
Serializable作用
 

没有implements Serializable,你就不能通过rmi(包括ejb)提供远程调用。
serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。
serialization不但可以在本机做,而且可以经由网络操作(就是猫小说的RMI)。这个好处是很大的----因为它自动屏蔽了操作系统的差异,字节顺序等。比如,在Window平台生成一个对象并序列化之,然后通过网络传到一台Unix机器上,然后可以在这台Unix机器上正确地重构这个对象。
Object serialization主要用来支持2种主要的特性:
1。Java的RMI(remote method invocation).RMI允许象在本机上一样操作远程机器上的对象。当发送消息给远程对象时,就需要用到serializaiton机制来发送参数和接收返回直。
2。Java的JavaBeans. Bean的状态信息通常是在设计时配置的。Bean的状态信息必须被存起来,以便当程序运行时能恢复这些状态信息。这也需要serializaiton机制。
总之如果在网络的环境下做类传输,应该还是implements Serializable。

1.===============
序列化。。。
序列化是把一个对象写入一个字节流的过程,它执行RMI
RMI允许一台机器上的JAVA对象调用不同机器上的JAVA对象
对象可以作为参数传给要调用的方法,先序列化该对象再传送它,然后接收端执行反序列化。
而Serializable接口属于支持序列化的一个接口,只有一个实现它的对象可以被序列化工具存储和回复,Serializable接口没有定义任何成员,只用来表示一个累可以被序列化,若该类可以序列化,那么它的所有子类都可以。
2.===============
持久化。。。
但是Java现在只支持轻量级持久化,这是通过serialization机制来实现的。
它把一个serializable的对象写到磁盘(本机或其他机器上的非RAM存储器),并在程序重新调用时再读取对象到通常的RAM存储器。
你必须显式的序列化和反序列化程序里的对象;而不是直接由一个关键词来定义一个对象是序列化的然后由系统做相应的处理。

实例如下:

  

35. JAVA高级技术-对象克隆4(序列化和对象克隆) JAVA高级技术-对象克隆4(序列化和对象克隆) 阅读详情

相关推荐

46、Java 中的压缩、归档与对象序列化技术详解

本文详细介绍了 Java 中的压缩、归档与对象序列化技术,涵盖 Java I/O 库中的压缩功能、GZIP 与 Zip 的使用、JAR 文件的创建与管理,以及对象序列化机制。通过代码示例讲解了如何实现文件压缩、解压、校验和计算,以及复杂对象的序列化与反序列化过程。同时,文章还提供了常见问题的解决方案和最佳实践,帮助开发者更好地应用这些技术。

apple5的专栏 53

浅谈Serializable

Java 中对象的序列化技术                               1、含义:将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。2、编程要求:只有实现Serializable接口的类对象才可以被序列化。 Serializable接口没有定义任何成员,它只用来说明某个类可以被序列化。3、序列化的特点:(1)如果某个类能够被序列化,其子类也可以被序列化。(2)声明为

luyangzhi001的专栏 913

Java对象的序列化与反序列化技术解析

本文深入探讨了Java中对象的序列化与反序列化技术。通过具体例子,展示了如何使用ObjectOutputStream和ObjectInputStream类来保存和读取对象状态,以及如何利用Serializable接口实现对象的持久化存储。文章还通过案例分析,阐述了对象序列化在实际应用中的重要性和实用性。

weixin_32252929的博客 440

对象序列化和反序列化过程

一.什么是对象序列化?    对象序列化是指将对象的状态转换为字符串(来自我这菜鸟的理解,好像有些书上也是这么说的,浅显易懂!);    序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程(来自“百度百科—序列化“,学术性强,略显高端); 二.为什么会有对象序列化?    世间万物,都有其存在的原因。为什么会有对象序列化呢?因为程序猿们需要它。既然是对象序列化,那我们就先从一个对象说起: varobj={x:1,y:2};    ...

越努力,越幸运! 1180

深入理解Java对象序列化及其实现技术要点

对象序列化(Serialization)是Java中将对象状态转换为字节流的过程,使得对象能够在网络上传输或者保存到文件系统中。这种机制在分布式应用和数据持久化领域尤为有用。反序列化(Deserialization)则是将字节流还原为Java对象的过程。接口是Java序列化机制的核心。当一个类实现了这个接口,它表明该类的对象可以被转换为一系列的字节。这些字节可以被存储在磁盘上,或者通过网络传输到远程位置,然后重新组装成完全相同的对象。实现。

weixin_35706255的博客 873

案例三:java网络编程(对象流传输)

案例三:java网络编程(对象流传输) 案例三:java网络编程(对象流传输) 案例三:java网络编程(对象流传输)

设计模式和技术场景(面试篇)

在项目完成的初期,项目的性能还是可以的,但是当数据积累到一定量的时候,数据库的查询速度变慢,我们分析发现时SQL性能存在问题,我们对所有的SQL进行和检查和优化,使用explain来查询SQL的执行计划,查看索引命中情况,找出潜在的性能瓶颈并进行相应的调整。在集群分布中存在一些问题,比如,我们再登录时候访问服务器1,里面保存了我们的session 信息,但是我们下一次请求可能请求的是服务器2,但是服务器2中没有我们的session 信息,它就认为我们没有登录。来查询数据,使用select。

ZHOUxinze11的博客 561

Pytorch(一) Pytorch 的安装

安装步骤 1.检查是否有合适的GPU, 若有安装Cuda与CuDNN 2.下载pytorch安装文件,进行pytorch的安装 检查电脑是否有合适的GPU 在桌面上右击如果能找到NVIDA控制面板,则说明该电脑有GPU。控制面板如下,并通过查看系统信息获取支持的Cuda版本 点击 帮助->点击 系统信息 弹出下面的对话框,在驱动程序版本那一栏就能看到该计算机使用的驱动版本。 ...

开开心心 25万+

设计模式最佳套路—— 愉快地使用策略模式

策略模式(Strategy Pattern)定义了一组策略,分别在不同类中封装起来,每种策略都可以根据当前场景相互替换,从而使策略的变化可以独立于操作者。比如我们要去某个地方,会根据距离...

淘系技术 9392

关于华为高斯数据库出现Invalid or unsupported by client SCRAM mechanisms定位解决的过程

最近公司有个新项目使用的是高斯数据库,因为我们的项目是直接从别的项目组拿来的,配置都是已经配好的,但是在放到正式环境上之后出现报错。起初我们以为是测试和正式的版本不一致,但是结果是版本一致的。最后这个问题搞了我们几个小时,都没法解决。

Curtisjia的博客 3185

Unity多渠道APK打包:同一工程稳定输出不冲突安装包

Android应用多渠道分发是移动开发的基础场景,其核心在于解决包名唯一性、渠道可识别性与构建可重复性三大问题。原理上,Unity安卓打包本质是三阶段流程:生成Android工程、Gradle编译、APK签名,而包名冲突根源在生成阶段对PlayerSettings的强依赖。技术价值体现在规避人工配置失误、支撑CI/CD自动化、满足华为/小米等商店合规要求。典型应用场景包括应用宝、TapTap、B站等渠道独立包管理,以及AB测试、灰度发布等运营需求。本文聚焦Unity原生方案,通过BuildPlayerOpt

weixin_33736048的博客 794

利用对象序列化(Serializable)通过 Http 连接传输对象

通过网络传输对象的方式有很多种,例如 RMI,WebServices。最近在基于 HTTP 作 Web 应用程序,客户端使用 Apache Httpclient。如何通过 Http 连接传输对象呢? 可以利用最传统的对象序列化(Serializable)。要传输的对象类需要实现 Serializable 接口。由于 HttpServletResponse 只能发送 byte[],因此我们需要将对象

zxnblake的专栏 1746

ad新版本学习笔记(基本包含一套流程)Altium Designer(ad20/ad21/ad22/ad23)

ad20-ad23学习笔记,逐渐补全

安和的博客 4万+

Java领域的序列化与反序列化,Java的对象如何传输,常用序列化技术

我们发现对 User 这个类增加一个 Serializable,就可以解决 Java 对象的网络传输问题。Java 平台允许我们在内存中创建可复用的 Java 对象,但一般情况下,只有当 JVM 处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM 的生命周期更长。但在现实应用中,就可能要求在 JVM 停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java 对象序列化就能够帮助我们实现该功能。简单来说。

秃了也弱了 1694

Excel VBA | 一键批量生成对账单

根据对账单总表一键批量生成N家独立的客户对账单。

Microgoblins的博客 6985

SLAM算法的优缺点

SLAM(Simultaneous Localization and Mapping,同时定位与地图构建)算法是一种通过传感器数据实时估计机器人自身位置和构建环境地图的技术。

selenia8860的博客 2906

基于JAVA动态编译的高性能对象序列化技术

一 何为对象序列化对象序列化即将一个程序运行时的对象变为二进制流, 又能从二进制流中还原出原来的对象的方法。对象序列化的用途: 可以将对象保存到文件两个进程间通信,交换数据将对象通过网络传输到服务端执行, 执行结果在返回给客户端(远程调用)二 常见的java对象序列化技术   1。JDK类库中的序列化API序列化: ObjectOutputStream oos = new

hello_wxy的专栏 742

Hypermesh二次开发实战:从Tcl/Tk脚本到Ext API的进阶之路

本文系统介绍了Hypermesh二次开发的进阶路径,从自动化重复操作的Tcl/Tk脚本入门,到利用HMASCII接口深度读写模型数据,最终深入Ext API进行高性能计算与功能定制。通过实战案例,帮助工程师掌握从脚本录制到C++插件开发的完整技能,显著提升CAE前处理效率与自动化水平。

weixin_29306875的博客 671

java对象序列化技术的运用——学生管理系统

项目要求 实现一个学生管理系统,在控制台进行输入输出 将数据存入本地文档,实现断线后数据不丢失功能 管理系统具备增删改查排序等功能 思路 这个项目的难点在于对象序列化的技术。对象序列化技术就是将数据放入本地文档,可以让数据不仅仅存在于内存之中。在这个项目中,可提前对序列化和反序列化方法进行封装,提高代码复用率。本项目总共三个类。学生类,学生管理类与client类。 学生类 ...

qq_43589451的博客 886

从 VL02N 拣配到 ABAP 自动化,读懂 SD_DELIVERY_UPDATE_PICKING 的位置和风险

文章摘要:SAP SD模块中,SD_DELIVERY_UPDATE_PICKING函数模块用于处理出库交货单的拣配确认,更新交货项目的拣配数量。该函数适用于未启用WM/EWM的传统SD流程,能确保拣配状态与标准交货处理逻辑同步,比直接修改数据库更安全。但在S/4HANA Cloud等新环境中,应优先使用API_OUTBOUND_DELIVERY_SRV等公开发布接口。使用该函数时需注意参数完整性和按交货单整体处理的原则,避免逐项提交导致的数据不一致问题。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 245

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java对象序列化技术

一、简介 序列化用于存储或传输对象的信息。java的API提供了序列换技术,使用简单,但往往空间占用大。 Kryo是一个java对象的序列化框架。它的目标是序列化更快、序列化对象更小、简单易用的API。Kryo可以将对象持久化到文件、数据库、或则用于网络传输。Kryo可以进行自动深度和浅层复制/克隆,它是直接将一个对象复制到另一个对象,而不是将对象转成bytes再转成对象。 protobuf...

游离在社会边缘 293

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

反序列化技术恢复java对象_Java序列化技术

Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。为什么需要使用到序列化,两个不同的进程需要远程通信;可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java进程进行通信时,能...

weixin_36312271的博客 385

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java中对象序列化技术

 1、含义:将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。 2、编程要求:只有实现Serializable接口的类对象才可以被序列化。 Serializable接口没有定义任何成员,它只用来说明某个类可以被序列化。3、序列化的特点:(1)如果某个类能够被序列化,其子类也可以被序列化。(2)声明为static和transient类型的成员数据不能被序列化。因为s

Maya2000的专栏 1123

反序列化技术恢复java对象_java对象的序列化和反序列化

java串行化技术可以将一个java对象的状态写入byte流(序列化),保持对象的持久化,便于存储和传输;并可以将byte反序列化重构为一个java对象(这个过程不会调用构造器)。这种机制允许你将对象在网络上进行传输,并可以随时把对象持久化到数据库或文件系统中。java的串行机制是RMI\EJB的基础。用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状...

weixin_42285866的博客 484

【优化技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路

kryo,是一个快速序列化/反序列化工具,效率比java高出一个级别,序列化出来的结果,是其自定义的、独有的一种格式,体积更小,一般只用来进行序列化和反序列化,而不用于在多个系统、甚至多种语言间进行数据交换(目前 kryo 也只有 java 实现),目前已经有多家大公司使用,相对比较稳定。Java自带的序列化工具在序列化过程中需要不仅需要将对象的完整的class name记录下来,还需要把该类的定义也都记录下,包括所有其他引用的类,这会是一笔很大的开销,尤其是仅仅序列化单个对象的时候。

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。 1669
上一篇: oracle中imp命令详解[转]
下一篇: oracle中的闪表功能
skywolf2002
博客等级 码龄21年 6粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值