java技術--BIO/NIO/AIO/Netty概念と違います。

11700 ワード

1.IOモデルの主要分類:
(1)  (synchronous) IO   (asynchronous) IO
(2)  (blocking) IO    (non-blocking)IO
(3)    (blocking-IO)  BIO
(4)     (non-blocking-IO)  NIO
(5)     (synchronous-non-blocking-IO)  AIO
2.BIO(同期閉塞I/O)
(1)                      
(2)jdk1.4      io  ,          
(3)    :   
    <1>         (10   )
    <2>BIO       ,              ,        
    <3>          ,                
    <4>                   
(4)BIO     
    <1>             
    <2>
3.NIO(同期非閉塞I/O)
(1)            
(2)                
     <1>                     
     <2>           IO              
(3)    :   
     <1>                 
     <2>(4)NIO     
     <1>           (   )   
     <2>     ,        ,      ,jdk1,4    
4.AIO(非同期非閉塞I/O)
(1)                IO       
(2)(3)                  
    <1>    IO                             
(4)    :   
    <1>             ,     ,           
(5)AIO     
    <1>           (   )   
    <2>       ,    OS      ,      ,jdk1.7     
    <3>AIO    NIO2.0   
5.IOとNIOの違い
(1)IO   ,NIO     
(2)IO        ,NIO      
(3)IO    ,NIO    (Selectors)
6.同期と非同期の違い
(1)  :      ,    ,        ,          ,     
(2)  :      ,     ,            ,      ,    
(3)               
7.渋滞と渋滞ではない
(1)  :   IO       
    <1>             read()  write()<2>                 
    <3>(2)   :NIO           
    <1>              ,        ,           
    <2>        IO               IO  
    <3>                  
    <4>NIO                                  
(3)                    (  、   )      
8.NIOの3つの核心概念
(1)   Buffer
    <1>Buffer     , NIO ,             
    <2>               
       2.1.     I/O ,                Stream   
    <3>          
       3.1.          (ByteBuffer),             
       3.2.             
       3.3.                       (limit)   
       3.4.   Java    (  Boolean)        
(2)  Channel
    <1>          ,         ,      Channel     
    <2><3><4>Channel     ,                 API,
      4.1. UNIX     ,               ,         
    <5>Channel     
      5.1.FileChannel:         
      5.2.DatagramChannel: UDP           
      5.3.SocketChannel: TCP           
      5.4.ServerSocketChannel:      TCP   ,       
        5.4.1.          SocketChannel  
(3)       Selector         
    <1>Selector         Channel        
    <2>Selector          ,FileChannel    ,    
    <3>    :
      3.1.Selector:     ,    、       Selector  
      3.2. SelectorKey:       ,          
    <4>    :
      4.1.     Selector:
      4.2.socketChannel.register(selector, SelectionKey.OP_READ);  
    <5>      
      5.1.OP_ACCEPT:     ,serviceSocketChannel   
      5.2.OP_READ:     ,socketChannel  
      5.3.OP_WRITE:     ,socketChannel  
      5.4.OP_CONNECT:     ,socketChannel         
9.NIOの応用
(1)NIO            、        Java   
(2)(3)Dubbo    Netty        ,                
(4)Jetty、Mina、Netty、Dubbo、ZooKeeper     NIO    
   <1>Mina         Apache  
   <2>Netty         Jboss
   <3>Dubbo         
10.NIOフレーム
(1)Netty         Java    NIO  
    <1>Netty     、                
    <2><3>  JDK  NIO,Netty            API,        
(2)Netty   IO          
    <1>IO    ,        api    ,        
    <2>            IO  
    <3>    IO      ,                   
(3)      
    <1>     TCP  ( socket  channel),            
    <2>                  (      IO     ) 
    <3><4>Netty,Redis    IO      
    <5>              :select/poll/epoll recvfrom