NIO

1、通道(Channel):用於源節點與目標節點的鏈接。在 Java NIO 中負責緩衝區中數據的傳輸。Channel 自己不存儲數據,所以須要配合緩衝區進行傳輸。
 
  2、通道的主要實現類
      java.nio.channels.Channel 接口:
          |--FileChannel
          |--SocketChannel
          |--ServerSocketChannel
          |--DatagramChannel
 
  3、獲取通道
  1. Java 針對支持通道的類提供了 getChannel() 方法
          本地 IO:
          FileInputStream/FileOutputStream
          RandomAccessFile
 
          網絡IO:
          Socket
          ServerSocket
          DatagramSocket
          
  2. 在 JDK 1.7 中的 NIO.2 針對各個通道提供了靜態方法 open()
  3. 在 JDK 1.7 中的 NIO.2 的 Files 工具類的 newByteChannel()
 
  4、通道之間的數據傳輸
  transferFrom()
  transferTo()
 
  5、分散(Scatter)與彙集(Gather)
  分散讀取(Scattering Reads):將通道中的數據分散到多個緩衝區中
  彙集寫入(Gathering Writes):將多個緩衝區中的數據彙集到通道中
 
  6、字符集:Charset
  編碼:字符串 -> 字節數組
  解碼:字節數組  -> 字符串
 java

  1、緩衝區(Buffer):在 Java NIO 中負責數據的存取。緩衝區就是數組。用於存儲不一樣數據類型的數據
 
  根據數據類型不一樣(boolean 除外),提供了相應類型的緩衝區:
  ByteBuffer
  CharBuffer
  ShortBuffer
  IntBuffer
  LongBuffer
  FloatBuffer
  DoubleBuffer
 
  上述緩衝區的管理方式幾乎一致,經過 allocate() 獲取緩衝區
 
  2、緩衝區存取數據的兩個核心方法:
  put() : 存入數據到緩衝區中
  get() : 獲取緩衝區中的數據
 
  3、緩衝區中的四個核心屬性:
  capacity : 容量,表示緩衝區中最大存儲數據的容量。一旦聲明不能改變。
  limit : 界限,表示緩衝區中能夠操做數據的大小。(limit 後數據不能進行讀寫)
  position : 位置,表示緩衝區中正在操做數據的位置。
 
  mark : 標記,表示記錄當前 position 的位置。能夠經過 reset() 恢復到 mark 的位置
 
  0 <= mark <= position <= limit <= capacity
 
  4、直接緩衝區與非直接緩衝區:
  非直接緩衝區:經過 allocate() 方法分配緩衝區,將緩衝區創建在 JVM 的內存中
  直接緩衝區:經過 allocateDirect() 方法分配直接緩衝區,將緩衝區創建在物理內存中。能夠提升效率數組

相關文章
相關標籤/搜索