`
dyllove98
  • 浏览: 1381392 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:38287
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:78594
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:131731
社区版块
存档分类
最新评论

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics