首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ByteBuffer中不容忽视的flip()步骤

2013-04-02 
ByteBuffer中不容忽视的flip()方法最近在对一个thrift的service端进行自动化测试,做了一个thrift的client

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到了对象的最后位置;这样一个小小的低级错误,引出了如此的周折,引以为戒吧。

?

热点排行