[英]Why there is no java.nio.ByteBuffer in the source code of Openjdk1.8?
[英]Why java.nio.ByteBuffer changes when sending via Thrift?
我正在寫一個 Thrift api 請求包含 Scala 中的二進制數據。
合同是這樣的:
struct Request {
10: required string name
20: required binary data
30: required string type
}
發送前客戶端的ByteBuffer object是這樣的:
java.nio.HeapByteBufferR[pos=0 lim=4 cap=4]
但是,服務器收到的 ByteBuffer object 不同:
java.nio.HeapByteBuffer[pos=230 lim=234 cap=312]
我的問題是為什么會發生這種情況? 什么是不意外更改 ByteBuffer 的最佳實踐?
這是因為服務器端的 ByteBuffer 會包裝請求的所有信息,並將 pos 和 limit 設置為包含二進制數據的分區。 所以要只獲取二進制數據部分,只需使用 ByteBuffer 的 slice 方法即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.