00:00
那我们接着呢再讲下一个流,叫做对象流,哎对象流我们一看这个名字呢,基本上也能猜出来,哎,就是用来传输对象的。好,我们具体来看一下,对象流呢,涉及到两个流,叫object input stream和object output stream啊主要呢是用于存储和读取基本数据类型的数据,或者是对象的一个处理流,这里呢又提到了基本数据类型的数据,咱们呢,前面讲到这个数据流的时候说呢,这个数据流它就可以用来去读写,或者要存储咱们的基本数据类型的数据,那这块呢,我们提到这个对象流呢,也可以啊,在这方面呢,它俩是重合的啊,但是我们这个对象流主要想体现的还是我们后边这个事,嗯,咱们呢,可以把一个内存中的对象,比如说我们new的一个string,我们呢new的一个person new的一个student等等,把这个对象呢,给它做一个传输,你看这里边写的强大之处就是可以把Java中的对象写入到输语言当中。
01:00
从比如说你这个文件当中啊,数据库当中啊等等也可以呢,把这个对象呢,从数据源当中呢还原回来,那这呢就是它的这个强大之处,相当于呢,我们可以把内存中啊,就是内存咱们说这个数据呢,它这个不保险啊,就是你可能这个存储的时候呢,掉电了就没有了啊,这个关闭这个进程呢,也没有了啊,那这里边儿提到了,就我们这个数据可以呢给它持久化起来。啊,你可以形象点去理解,就比如说你是个人一样,这个人的话呢,这个你可以把它冷冻起来啊,就这时候呢,就相当于持久化了,等哪天呢,你这个想用的时候呢,再把它这个解冻,呃,又火了就是吧,呃,相当于你从这个硬盘当中把这个对象呢,又给它还原为内存层面的一个数据了,哎就这样的一个情况成在这呢,我们就涉及到一个什么概念呢?叫对象的一个序列化和反序列化,我们要想实现啊,把这个数据给它从内存当中保存到这个这个数据源当中,我们把这个过程呢,就称作叫序列化,那么你想从这个数据源,比如说大家想象成是一个持久化的文件当中,又还原为我们内存中的一个对象,这呢叫做反序列化,对,所以这里呢,就涉及到两个过程,序列化就是给它写出到一个文件里,反序列化呢,就是从文件里边再读到内存里,那对应的呢,有两个流序列化写出去,那自然而然的就是output stream了,就是用的object output stream。
02:26
反序列化呢,就是你把这个在还原成内存层面的,相当于数据呢,从文件到内存,这呢就是一个输入流,用的叫object input stream啊,使用它这两个过程啊,主要呢,就用我们刚才提到的这两个流啊,来做这样的事情,来做这样的事情,那么序列化反序列化是两个过程,这块呢,我们想描述的就提到一个叫嗯,对象的序列化机制。就是要想我们这个对象内存中的这个对象可以呢,给它持久化,就相当于你把这个内存中的一个,比如说person啊,我现在用了一个person对象,假如叫P1,你希望这个P这个对象呢,能够持久化到一个文件当中,这个时候呢,我们必须保证这个P它所属的类就叫做person类,这个person类啊,它必须得是可序列化的。
03:19
只有它是可序列化的,我们才可以将它的这个对象,哎持久化到一个文件里啊,那持久化到文件里边这个过程呢,不就叫做序列化吗?哎,这个能实现这个序列化的过程,就是保证你这个类呢是可序列化的,反之列话呢,我们这个叫反序列化的一个过程,反序列化的过程也是要求,哎你这个对象所属的类呢,得是可序列化的。啊,可序列化的啊,那同时的话呢,我们说这个数据呢,也不光可以给它存储到这个文件当中,咱们也可以将内存中的这个数据啊,不光存储到文件里,咱也可以呢,通过网络的方式呢,给它传输出去,相当于我们这儿呢,有一个网络节点,我们通过网络,诶,我把这个对象又给它传输到另外一个网络节点当中了,诶还可以将这个对象进行一个网络层面的一个传输啊就这样子的,那整个这里边咱们提到了,说要求你这个对象所属的类呢,是可序列化的啊,这个呢,我们总结起来就叫做对象的序列化机制。
04:18
啊在这个面试当中呢,会被问到过啊,说对象的序列化机制是什么意思,你怎么去理解对象的序列化机制,咱们这儿的话呢,其实主体上还只是以对象流为例,以它为例,咱们说了一下什么叫对象的序列化机制,后边呢,咱们见到的比较多的呢,还都是基于咱们说的前台后台咱们去传输这个数据啊,传输这个数据到那个时候呢,我们诶就就相当于这个网络呗,你这呢是前台这个后台中间呢,你这个数据呢,来回这个传输,传输的时候呢,如果你想传输对象,这个对象呢,就要求得是可循化的啊,还是我们后边用的多一些啊,那对于这个客户端的同学来讲,也也也能用到,比如学安卓的同学,这呢是我们这个其实这个应用了啊,在我们这个安卓当中一个应用呢,其实就对应了一个进程。
05:11
那就相当于这是个进程,这是个进程俩应用,我们不同的应用之间呢,也是可以相互之间传输数据的,比如说大家在微信当中,你是可以读取你联系人的这个应用的啊,或者说微信一开始起啊,起的很快,也是因为呢,他把这个这个QQQQ当中那个好友资源呢,对他开放了,相当于我从QQ当中把这个联系人的数据呢,都可以导到我们的这个微信当中啊,微信呢,一下子就火起来了,那别人家呢,你出来一个类似于微信,甚至比他出的早,甚至比他做的还好,但是你没有他这样的一些优势,那你就做不了这个事情啊,就是我们在不同的应用之间,客户端的这个APP是吧?呃,在不同的应用之间,只要他们运行起来,都是一个一个的进程,进程之间呢,也是可以传输数据的,那么这个传输数据,那也要求我们这些数据,如果你是一个一个的对象的话,得满足序列化机制啊,所以说这儿呢,是咱们要讲的其实是个重点啊,只不过呢,咱们今天呢,讲到这个对象流,是以这个对象流为例呢,咱们来说。
06:11
测一下这个叫序列化机制,重心呢其实在这儿啊,就好比是咱们讲这个吹set的时候啊,重心呢,其实不在吹塞的本身,而在于我们通过吹菜呢,大家还是去熟悉comparable和comparor,这呢是我们说的这个重心啊,因为呢,我们比较对象大小,不一定非得最后用吹菜的去去装是吧?哎,我们可以还用数组啊等等去装也是OK的啊,所以这个重心在这儿,咱们现在呢讲这个对象流重心其实也在这儿,只不过呢是通过对象流这个载体呢来进行说明的,好,说了这么多啊,就是看一下什么叫对象的序列化机制,说它呢,允许把内存中的障碍对象转换成与平台无关的二进制流,从而呢,允许把这种二进制流呢,持久的保存在磁盘上,或者呢,通过网络将这种二进制流呢,给它传输到另外一个网络节点,这儿的话呢,我可以断一下句。
07:11
以前这个上中学的时候呢,上中学初中小学的时候,老师让分段是吧?哎,那果你要分一下段的话呢,就到这这一段,前面这个过程说的其实就是序列化的过程,把它持久化起来了,或者你通过这个网络呢,往外传,往外传啊,属于输出的这个过程啊,这呢都叫序列法,那么后一个过程说,当其他程序获取到了这种二进制流,我们呢,还可以把它恢复成原来内存中的一个渣对象,这个是不是比方述的就是这个输入进来的一个过程,就相当于是一个反序列化的过程,哎,反序列化这不刚才说的就是个输入嘛,啊,那其实这个序列化机制就相当于把我们刚才的序列化过程和反序列化过程呢,我们描述了一下,哎,把它俩融合在一起,就是我们现在要讲的这个叫呃,序列化机制。
08:08
啊,就是我们这里边儿这个序列化机制,那么大家呢,能够呃理解的基础之上,用自己的语言呢,把它描述出来,啊这呢也是一道面试题。啊,用自己语言呢去描述出来,那下边就涉及到我们如何呢,去实现这个序列化机制啊,提到了相关的一些接口的这种方式,那下边呢,我们就通过代码,通过咱们说的这个object input stream out stream来进行一个说明啊。
我来说两句