ByteBuffer中不容忽视的flip()方法

ByteBuffer中不容忽视的flip()方法

最近在对一个thrift的service端进行自动化测试,香港空间,做了一个thrift的client端,香港虚拟主机,client端需要传一个装有由protobuf实例序列化byte数组的ByteBuffer,实现方法为:

ByteBuffer key=ByteBuffer.allocate(p2q.toByteArray().length);key.put(p2q.toByteArray());

但是client收到的service端的返回始终不正确。由于protobuf之前没有用过,是个新鲜的玩意,虚拟主机,所以始终怀疑问题出在这块儿了;反复查找,并对该protobuf实例在本地进行了反序列化,结果发现一切OK……。经过无数的折腾,最终将上面贴的代码改为:

ByteBuffer key=ByteBuffer.wrap(p2q.toByteArray());

竟然好了!高兴之余分析原因,原来之前在对ByteBuffer实例put操作后未进行flip(),致使ByteBuffer对象的position到了对象的最后位置;这样一个小小的低级错误,引出了如此的周折,引以为戒吧。

  

posted on

人生就是一场旅行,不在乎目的地,

ByteBuffer中不容忽视的flip()方法

相关文章:

你感兴趣的文章:

标签云: