1、序列化和反序列化,为什么需要这个技术,解决什么问题
序列化是将数据转换成二进制串的过程,反序列化是将二进制串转换成数据的过程;应用场景是网络传输和数据持久化,当然大部分情况我们考虑网络传输,如:rpc,client-server。
实际应用中,如微信消息,客户端基于SDK和序列化协议来解析服务端数据,序列化协议好的话,应该既要保证消息的安全性又要保证数据的压缩比(省流量)。
常见的序列化协议有:json、xm、protobufl、java默认的序列化Serializable。
有人理解它属于tcp层的理论,我不认为这属于通信协议的范畴,虽然我也不是很懂。。。
2、对象的拷贝,除了实现cloneable接口还可以怎么做?
还可以一层一层的new;
还可以“序列化—反序列化”;
3、B+Tree索引的区间访问原理
B+Tree给每个叶子节点增加了一个指向相邻叶子节点的指针,做这个优化的目的是为了提高区间访问的性能。如上图,如果要查询18到49的所有记录,当找到18后,只需顺着节点和指针顺序遍历就可以一次性访问到所有数据节点,极大的提到了区间查询效率。