SOcket nioのByteBufferを学ぶ
2237 ワード
1:ByteBufferとは?
ByteBufferはバイトバッファです.バイトバッファとは何ですか.例を挙げると、CPUとハードディスク(HDD)の間のメモリのようなものです.分かったでしょう.
2:ByteBufferは何に使いますか.
名前の通り、バイトを格納するために使用されます.よく使われるのは、プログラムがネットワークにデータを転送するときです.
3:ByteBufferの使い方
ByteBufferを使用するには、3つのポインタ式を理解することが重要です.义齿 そしてこの3つのポインタの関係はposition<=limit<=capacityである.
positionは現在読み書きされている位置です. limitは最大で読み書きできる位置です. Capacityはキャッシュの容量です. プログラムを見てください. 1:ByteBuffer buffer = ByteBuffer.allocate(5); position=0,limit=5,capacity=5 2:buffer.put((byte)1); position=1,limit=5,capacity=5 3:buffer.flip(); position=0,limit=1,capacity=5 4:buffer.get(); position=1,limit=1,capacity=5
最初の行:ByteBufferを作成し、初期化状態でpostionは0、limit=capacity=バッファサイズ 2行目:バッファに1バイト置くとpositionは後ろに移動しますがlimitを超えません.超えると誤報になります. 3行目:flipメソッドはlimitをpositionの値に設定し、positionは0に復元し、リードバッファの準備をします. 4行目:バッファから1バイトを読み込むとpositionは後ろに移動しますが、limitを超えず、超えた場合はエラーが表示されます.
4:プログラム
ByteBufferはバイトバッファです.バイトバッファとは何ですか.例を挙げると、CPUとハードディスク(HDD)の間のメモリのようなものです.分かったでしょう.
2:ByteBufferは何に使いますか.
名前の通り、バイトを格納するために使用されます.よく使われるのは、プログラムがネットワークにデータを転送するときです.
3:ByteBufferの使い方
ByteBufferを使用するには、3つのポインタ式を理解することが重要です.义齿 そしてこの3つのポインタの関係はposition<=limit<=capacityである.
positionは現在読み書きされている位置です. limitは最大で読み書きできる位置です. Capacityはキャッシュの容量です. プログラムを見てください. 1:ByteBuffer buffer = ByteBuffer.allocate(5); position=0,limit=5,capacity=5 2:buffer.put((byte)1); position=1,limit=5,capacity=5 3:buffer.flip(); position=0,limit=1,capacity=5 4:buffer.get(); position=1,limit=1,capacity=5
最初の行:ByteBufferを作成し、初期化状態でpostionは0、limit=capacity=バッファサイズ 2行目:バッファに1バイト置くとpositionは後ろに移動しますがlimitを超えません.超えると誤報になります. 3行目:flipメソッドはlimitをpositionの値に設定し、positionは0に復元し、リードバッファの準備をします. 4行目:バッファから1バイトを読み込むとpositionは後ろに移動しますが、limitを超えず、超えた場合はエラーが表示されます.
4:プログラム
ByteBuffer buffer = ByteBuffer.allocate(5);
System.out.println(" :"+buffer.position());
System.out.println(" :"+buffer.limit());
System.out.println(" :"+buffer.capacity());
System.out.println();
buffer.put((byte)1);
System.out.println(" 1 :"+buffer.position());
System.out.println(" 1 :"+buffer.limit());
System.out.println(" 1 :"+buffer.capacity());
System.out.println();
buffer.flip();
System.out.println("flip :"+buffer.position());
System.out.println("flip :"+buffer.limit());
System.out.println("flip :"+buffer.capacity());
System.out.println();
buffer.get();
System.out.println(" :"+buffer.position());
System.out.println(" :"+buffer.limit());
System.out.println(" :"+buffer.capacity());
5:出力 :0
:5
:5
1 :1
1 :5
1 :5
flip :0
flip :1
flip :5
:1
:1
:5