欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一个关于 protostuff 的低级错误

程序员文章站 2022-03-06 19:45:34
...

protostuff 是什么就不多说了,前段时间用来做通信的序列号模块

 

直入主题,

就是关于probuff 不支持的格式的字段,例如Date

 

通信的时候,客户端反序列化报错

异常信息也没办法google出一个结果来

我反复查看是否字节解析错误,是否粘包没处理好,但是没发现问题.

然后我把服务端序列化的字节存储起来,在服务端上直接反序列化 结果还是一样的错误!!!!WTF

 

万念俱灰之下,我开始考虑类里面定义的常量是否影响结果

最后我想起probuff部分类型是不支持的,例如 Date

 

再想起实体里面有Date 类型的属性.立马删除测试.

结果还是不行!project 也记得 clean了. 然后所有project clean之后再测试,结果 OK!

 

这里,首先我得承认对probuff的认识不够深刻,

然后我想对

protostuff 说:你tmd 在生成Schema的时候检测下会死啊!!

不支持的字段你提示一下会死啊!!!!!!!!!!!!!!!!!

 

 

 写完bolg 继续测试,结果发现 报错了,第二天再测试 结果注意到了1个情况!!

因为习惯copy  序列化用的是 ProtostuffIOUtil , 反序列化用的是 ProtobufIOUtil 

 

ProtostuffIOUtil 和 ProtobufIOUtil !!!!!!!!!!!! 我一直以为 protostuff 只是一个 protobuff的序列化工具

 

居然 2个可能序列化 方式不同! 导致了 ProtostuffIOUtil  生成的byte 不能用 ProtobufIOUtil  反序列化!!!!!!!!!!!!!!!!!!

 

我现在想知道 protostuff方式 序列化的东西 能不能在 其他客户端使用!因为 protostuff 是java的, 大概没有其他端

如果利用protostuff的性能优势,扩展性会受到限制, 以后再说吧

 

OMG,程序员大部分时间都浪费在这种 粗心大意的事情上了

相关标签: protostuff probuff