java serializable 有没有序列化变量名?
java的标准序列化方法有没有把对象的变量名也序列化到数据中?
我感觉好像把变量名也写到数据中了。
如果是,那还得想办法缩写变量名才行?
其他序列化工具怎么样?
------最佳解决方案--------------------一般来说,网络传递的话不建议用Object打成序列化进行传递
既然是走SOCKET了,那还是以协议传输来的比较好,还可以脱离语言范围,兼容其他语言的客户端
------其他解决方案--------------------可以自己定义序列化格式。
实际上,
应该自己定义序列化格式。
方法是在你 implements Serializable 的类里实现下面两个方法:
private void writeObject(ObjectOutputStream s)
private void readObject(ObjectInputStream s)
一个是写,一个是读,
ObjectOutputStream 会去调用这两个方法。
------其他解决方案--------------------
关于序列化的陷阱和最佳实践,可以参考 <Effective Java 2> 的 Item 74 - 78
------其他解决方案--------------------打开序列化后的文件看了一下,真把变量名给序列化了。(也没压缩)
这不是逼着我缩写变量名吗?
诸位高人,有谁知道好的序列化工具(占空间小,速度快)
------其他解决方案--------------------寻求高手!
有没有人知道好的序列化工具?(至少不要把变量名也序列化了)
------其他解决方案--------------------实在没人知道,也请回复一个,我好结贴
------其他解决方案--------------------我说...你把序列化当神马在用?加密工具???
------其他解决方案--------------------
网络传输呀。
因为加了变量名,比数据本身大了3倍,这不是本末倒置吗?
------其他解决方案--------------------最不爽的是逼着我缩写变量名。(用C++的时候都没这习惯,这不是倒退20年了吗)
------其他解决方案--------------------算了,自己手动编码序列化吧。
话说,java作为一个为菜鸟程序员设计的语言,性能本来就不高。
用java本来别想追求神马性能。
------其他解决方案--------------------直接自己定义声明一个字节序列发送过去,会比封装成一个类发送过去快,毕竟,封装成一个类的过程也多了很多开销
------其他解决方案--------------------阿里巴巴开源的fastjson含有序列化工具,说是比java自带的序列化效率高,可以看看
------其他解决方案--------------------还有http://www.oschina.net/p/protocol+buffers等
------其他解决方案--------------------
是呀,只好自己编码、解码了。
不过java里好像还没有memcopy之类的东西
------其他解决方案--------------------
用protocol buffer比自己编码还麻烦,鸡肋
------其他解决方案--------------------
应该是 “ObjectOutputStream 和 ObjectInputStream 会分别去调用这两个方法”。