m_a*_*han 101 java oop serialization object stream
我已经阅读了很多关于序列化的文章以及它如何如此美妙和精彩,但没有一个论点足够令人信服.我想知道是否有人能真正告诉我通过序列化一个类我们能真正实现的目标是什么?
小智 177
让我们首先定义序列化,然后我们可以讨论为什么它如此有用.
序列化只是将现有对象转换为字节数组.此字节数组表示对象的类,对象的版本以及对象的内部状态.然后可以在运行相同代码的JVM之间使用此字节数组来传输/读取对象.
我们为什么要这样做?
有几个原因:
通信:如果您有两台运行相同代码的计算机,并且需要进行通信,则一台计算机可以轻松地构建一个包含其要传输的信息的对象,然后将该对象序列化到另一台计算机.这不是最好的沟通方式,但它完成了工作.
持久性:如果要将特定操作的状态存储在数据库中,可以将其轻松序列化为字节数组,并存储在数据库中以供以后检索.
深层复制:如果您需要Object 的精确副本,并且不想编写自己的专用clone()类,只需将对象序列化为字节数组,然后将其反序列化为另一个对象实现了这个目标.
缓存:真的只是上面的一个应用程序,但有时一个对象需要10分钟来构建,但只需要10秒钟来反序列化.因此,不要抓住内存中的巨大对象,而是通过序列化将其缓存到文件中,并在以后需要时将其读取.
交叉JVM同步:序列化适用于可能在不同体系结构上运行的不同JVM.
Gor*_*son 55
在运行应用程序时,它的所有对象都存储在内存(RAM)中.当您退出时,操作系统将回收该内存,并且您的程序基本上"忘记"运行时发生的所有事情.序列化可以通过让您的应用程序将对象保存到磁盘来解决这个问题,以便它可以在下次启动时将其读回.如果您的应用程序将提供保存/共享以前状态的任何方式,您将需要某种形式的序列化.
Rus*_*ams 20
我可以分享我的故事,我希望它会提供一些想法,为什么序列化是必要的.但是,您的问题的答案已经非常详细.
我有几个项目需要加载和读取一堆文本文件.这些文件包含停用词,生物医学动词,生物医学缩写词,语义相互连接的词等.这些文件的内容很简单:单词!
现在,对于每个项目,我需要读取每个文件中的单词并将它们放入不同的数组中; 由于文件的内容从未改变,因此在第一个项目之后,它成为一个常见但多余的任务.
所以,我所做的是创建了一个对象来读取每个文件并填充各个数组(对象的实例变量).然后我序列化了对象,然后为后面的项目,我简单地反序列化它们.我没有必要一次又一次地读取文件并填充数组.
| 归档时间: |
|
| 查看次数: |
94308 次 |
| 最近记录: |