作者:庾事镁 | 来源:互联网 | 2017-08-13 00:12
所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象,对其序列化,然后通过网络发给一台Unix机器,然后在那里准确无误地重新“装配”。是不是很神奇。
也许你会说,只了解一点点,但从来没有接触过,其实未必如此。RMI、Socket、JMS、EJB你总该用过一种吧,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。
第一次使用Java的对象序列化是做XXX项目(其实我也只使用过这一次,千万别扔什么蔬菜、水果^_*),当时要求把几棵非常复杂的树(JTree)及相应的数据保存下来(就是我们常用的保存功能),以便下次运行程序时可以继续上次的操作。那时XML技术在网上非常的热,而且功能也强大,再加上树的结构本来就和XML存储数据的格式很像。作为一项对新技术比较有兴趣的我当然很想尝试一下。不过经过仔细分析,发现如果采用XML保存数据,后果真是难以想象:哪棵树的哪个节点被展开、展开到第几级、节点当前的属性是什么。真是不知该用A、B、C还是用1、2、3来表示。还好,发现了Java的对象序列化机制,问题迎刃而解,只需简单的将每棵树的根节点序列化保存到硬盘上,下次再通过反序列化后的根节点就可以轻松的构造出和原来一模一样的树来。
其实保存数据,尤其是复杂数据的保存正是对象序列化的典型应用。最近YYY项目就遇到了需要对非常复杂的数据进行存取,通过使用对象的序列化,问题同样化难为简。
对象的序列化还有另一个容易被大家忽略的功能就是对象复制(Clone),Java中通过Clone机制可以复制大部分的对象,但是众所周知,Clone有深层Clone和浅层Clone,如果你的对象非常非常复杂,假设有个100层的Collection(夸张了点),如果你想实现深层Clone,真是不敢想象,如果使用序列化,不会超过10行代码就可以解决。还有就是Swing组件,如果你有两个很象很象(或是一模一样)的比较难以构造的Swing组件,你该怎么办,也许你想到了Clone,但是偏偏Java 善(Sun)弄人,Swing组件没有提供Clone方法。别急,使用序列化,6行代码搞定,
QUOTE:
推荐阅读
-
MyBatis模糊查询和多条件查询一、ISmbmsUserDao层根据姓名模糊查询publicListgetUser();多条件查询publicList ...
[详细]
蜡笔小新 2024-09-30 13:26:10
-
软件自动化测试的学习步骤软件测试交流群关注软件测试技术公众号获取阅读目录软件自动化测试的学习步骤自动化测试的本质自动化测试学习的误区自动化测试的职位自动化测试分类Web自动化 ...
[详细]
蜡笔小新 2024-09-30 01:54:19
-
-
之前一直使用的是nodev2.2.0版本,挺说新版本的node解决了npm安装插件产生文件夹结构过深的问题,所以就想更新试试;上网一看才发现,尼玛的node已经到了6.+版本了,好 ...
[详细]
蜡笔小新 2024-09-29 12:25:49
-
请写出一下程序的输出内容***2018032122:02:03**Brief:**Author:ZhangJianWei**Email:Dream_Dog163.com* ...
[详细]
蜡笔小新 2024-09-30 17:25:03
-
篇首语:本文由编程笔记#小编为大家整理,主要介绍了sql盲注之报错注入(附自动化脚本)相关的知识,希望对你有一定的参考价值。 ...
[详细]
蜡笔小新 2024-09-30 12:32:17
-
–声明变量DECLAREBuCodeASvarchar(max)–声明游标DECLAREC_EmployeesCURSORFAST_FORWARDFORSELECTBUCodeFR ...
[详细]
蜡笔小新 2024-09-30 10:08:21
-
蜡笔小新 2024-09-29 19:47:31
-
一、基本Tag1.Tag定义了Item实例,有三个基本的属性来定义一个item实例,大小写敏感。id-每个Item实例的唯一标识type ...
[详细]
蜡笔小新 2024-09-29 17:57:33
-
webservice框架有很多,比如axis、axis2、cxf、xFire等等,做服务端和做客户端都可行,个人感觉使用这些框架的好处是减少了对于接口信息的解析,最主要的是减少了对于传递于网络中XML ...
[详细]
蜡笔小新 2024-09-29 16:46:39
-
对Android的启动模式不是很了解,这里记录下简单的理解内容以便日后查看。 Androi的四种启动模式分别为:standard,singleTop,singleTask,sing ...
[详细]
蜡笔小新 2024-09-29 16:20:47
-
Flex中使用filter过滤数据 ...
[详细]
蜡笔小新 2024-09-29 14:51:58
-
这篇文章主要介绍了intellijidea修改maven配置时总是恢复默认配置的解决方法idea版本(2020.2.x),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考 ...
[详细]
蜡笔小新 2024-09-29 14:51:40
-
一、使用ContentProvider(内容提供者)共享数据ContentProvider在android中的作用是对外共享数据,也就是说 ...
[详细]
蜡笔小新 2024-09-29 13:49:00
-
一、ScrapyScrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。。用 ...
[详细]
蜡笔小新 2024-09-29 13:04:13
-
在Hibernate中,component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid(对象标识符),compo ...
[详细]
蜡笔小新 2024-09-29 04:21:38
-
|