zoukankan      html  css  js  c++  java
  • java序列化

    关于序列化

    什么是序列化?

    学过java的人大部分都知道,一个对象以流的形式进行传输,叫做序列化。 该对象所对应的类,必须是实现Serializable接口。

    为什么序列化?

    感觉也没有用到序列化,但是,注意但是,在我们实体bean时,intlongboolean类型等,都是基本数据类型,数据库里面有与之对应的数据结构。我们以为的没有进行序列化,其实是在声明的各个不同变量的时候,由具体的数据类型帮助我们实现了序列化操作。

    我们发现基本类型都有具体的数据类型,类如String.Date等类型并不是基本类型,那我们也没有进行序列化,在这里必须声明一点,public final class String implements java.io.Serializable, Comparable<String>, CharSequencepublic class Date implements java.io.Serializable, Cloneable, Comparable发现了没有!它也序列化了。

    那么!序列化为什么还要实现?

    首先,谈一下序列化的目的,存储,传输。我们一般的实体类不需要程序员再次实现序列化的时候,自己问自己:问存储媒体里面,是否是有其相对应的数据结构?问这个实体类,是否需要远程传输(或者两个不同系统甚至是分布式模块之间的调用)?

    打开Serializable接口的源码,这个接口其实是个空接口,那么这个序列化操作,到底是由谁去实现了呢?其实,看一下接口的注释说明就知道,当我们让实体类实现Serializable接口时,其实是在告诉JVM此类可被序列化,可被默认的序列化机制序列化。

    需要说明的是,当我们在实体类声明实现Serializable接口时,再次进行观察,会发现这些类是需要被远程调用的。也就是说需要或者可能需要被远程调用,这就是序列化便于传输的用途。

    如果有注意观察的话,发现序列化操作用于存储时,一般是对于NoSql数据库,而在使用Nosql数据库进行存储时,用“freeze”这个说法来理解是再恰当不过了,请在NoSql数据库中,给我找出个varcharint之类的数据结构出来? 如果没有,但我们又确实需要进行存储,将对象进行序列化?

  • 相关阅读:
    Manacher-模版题poj3974 hdu3068
    拓展kmp(带注释版)
    颓の第17周
    php 递归遍历目录带缩进
    php 递归遍历目录
    php session
    apache主机配置
    php环境配置的检测方法
    php 变量
    php MVC
  • 原文地址:https://www.cnblogs.com/DIVEY/p/9642399.html
Copyright © 2011-2022 走看看