Java序列化实际上并不多。我认为这是公司的技术堆栈。如果您使用云集,则估计您的联系人会更少,但没有说否。如果是Dubbo,将会有更多。单击,上次我们说Netty的编码解码谈论了Google的Protobuf。今天,让我们很好地看一下Java序列化并详细交谈
从上图中,我们可以看到,当传达两个进程时,如果要发送数据,则必须首先将数据发送到TCP缓冲区,然后形成消息并将其发送出去。同样的原因,接收端是相同的。我们可以发送各种类型的数据,包括文本,图片,音频,视频等,这些数据将以二进制序列的形式在网络上传输。传达了两个Java过程,对象之间的传输也可以用于实现对象。在一个单词:Java序列化是指将Java对象转换为字节序列的过程,Java衍生程序的过程是指将字节序列恢复为Java对象
这种使用方案应被视为最重要的部分,因为我们的学习序列是给他的,现在它们总结了它们:
Java序列化中有两个主要接口。我将把它用于实现这两个接口,但重点是序列化接口的实现。在本部分,首先给出基本的代码实现,然后查看在下一部分中需要注意的问题。,现在启动代码以实现Java的序列化机制。
首先,我们定义一个对象类别用户
接下来,在测试类中实现了序列化和衍生化。
当我们运行序列化方法时,我们可以看到我们存在数据g:// test/test。
同时,当我们运行后序化方法时,我们可以看到后序化成功,并且结果未发布。它相对简单。
然后是Test1类。像上面的测试一样,它将不再发布。在这里,我们主要查看可外出化和可序列化接口之间的差异。let在下面的汇总。
此时,Java序列化机制的基本用途已经完成。从上面可以看出,它仍然非常简单。但是,不可能单独使用它。如果您想在面试时安装13,则需要进一步加深。因此,以下一部分是对序列化机制的深度分析。您还需要说一点,您必须牢记序列化方法由可序列化界面实现,因为应多次使用以下内容
一词:目的是控制序列化对象的版本,它是否与每个版本的深层化时各种版本是否兼容。如果在新版本中修改此值,新版本不遵守新版本与旧版本。当导数时,将抛出无效的classexception。它;如果我们删除一个属性或更改类的继承关系,则不得兼容。数据,目前,您应该手动更新版本号,即serialversionuid。
serialversionuid有两种显示方法:
首先,我们在用户中设置serverversionuid = 123456L。
然后,我们更改serialversionuid = 123456789L。然后您可以看到以下错误。在同一时间,还验证了序列化和深层序列化的一致版本的问题。
首先,有必要说静态变量不会被序列化。由于静态变量不是在全球区域中的静态变量中编写的,我在全球区域中打印静态变量。当我同时使用它时,内存中的静态变量会更改。
以下示例主要是在静态变量序列化之后,然后更改静态变量年龄的值,然后重新组织输出。结果将在两种情况下发生:
然后查看输出结果
瞬态关键字的作用是控制变量的序列化。在变量语句之前添加关键字可以防止变量被序列化为文件。深静脉化后,瞬态变量的值设置为初始值。如果int类型为0,则对象类型为null。
这是非常好的,很简单。让我们在下面看看他的角色
原始:https://juejin.cn/post/7102803165120069640