为什么需要序列化
因为最终数据都是以byte[]数组的方式存在的。网络io,存储等都是面向byte[]
学习序列化带来的好处
序列话常用技巧
使用varint (啥意思,查百度)
对类,属性用数字编码
字符串,byte[]。 先记录长度,在记录数据
反序列话常用技巧
对字符串是否包含非ascii值区分
全是ascii的字符串调用这个构造方法:public String(byte ascii[], int hibyte, int offset, int count) {
包含其他字符(如中文),使用new String(byte[])。没法优化
建议
比较复杂的对象直接使用kryo序列化,因为他内部已经将上面说的这些点全部考虑了。本文就是参考kryo的代码写的。