作者回复: 回答正确
作者回复: 线上代码发生错位了,已修正。
导致这个问题的原因是序列化中的readObject会通过反射,调用没有参数的构造方法创建一个新的对象。
所以我们可以在被序列化类中重写readResolve方法。
private Object readResolve(){
return singleInstance;
}
作者回复: Java序列化是将Java对象转化为二进制流,而Json序列化是将Json字符串转为二进制的过程,只是包装的数据格式不一样。
作者回复: springcloud是spring生态中的一部分,就目前spring生态很少引入非生态框架。但是我们可以自己实现springcloud兼容protobuf序列化。
作者回复: 是的,Java序列化会调用构造函数,构造出一个新对象
作者回复: 在Class类文件中默认会有一个serialNo作为序列化对象的版本号,无论在序列化方还是在反序列化方的class类文件中都存在一个默认序列号,在序列化时,会将该版本号加载进去,在反序列化时,会校验该版本号。
作者回复: 这是Java说明需要序列化的一种标识
作者回复: 这也是一个序列化过程,只不过是字符串对象转二进制的过程
作者回复: 需要的
作者回复: NIO是一种通信模型,并没有包含序列化的内容,可以自己选择使用哪一种序列化
作者回复: 是的,不序列化与反序列化,则无法在内存中获取具体的信息用于业务逻辑中。
作者回复: 序列化是将一个对象通过某种数据结构包装好对象中的具体属性和值,转换为二进制进行网络传输的一个过程。例如一个int类型的属性,数组是1000,转换为二进制则是4个字节的byte数组了。
后面我会使用一个具体的例子来优化讲解这一讲。
作者回复: hessian是用的hessian2序列化。
作者回复: 请问改成JDK序列化的目的是什么?