java IO模型
BIO: JDK1.4以前用的都是BIO 堵塞IO 堵塞到我們的讀寫方法,堵塞到線程來提供性能,對於線程的開銷本來就是浪費
NIO:JDK1.4 linux 多路複用技術(select 模式) 實現IO事件的輪詢
方式:同步非堵塞的模式,這種方式是目前主流的網絡通信模式
內核: 操作系統是管理我們整個硬件,內核管理我們的內存,操作我們的cpu
應用程序如何調用內核,通過系統調用來調用內核操作
AIO:JDK1.7(NIO2) 纔是實現實現真正的aio;
javaNIO
Channel : 面向buffer的一個通道,雙向的
Unsafe:
buffer:
Selector:
緩衝區 : 在談到緩衝區時,我們說緩衝區本質上就是一個數組,但他其實是一個特殊的數組,緩衝區對象內置了一些機制,能夠跟蹤和 記錄緩衝區內的狀態變化情況,如果我們用get()方法從緩衝區獲取數據,或者使用put()方法把數據寫入緩衝區,都會引起緩衝區狀態的變化,在緩衝區中,最重要的屬性有下面三個,他們一起合作完成對緩衝區內部狀態的變化跟蹤,
通過這幾個變量來操作緩衝區
position : 相當於下標
capacity: 容量
limit :可以理解成鎖定 (注: flip()方法執行後鎖定)
直接緩衝區 mappedBuffer 零拷貝,直接操作內存
flip()固定緩衝區狀態,將position的值設置成limit然後position設置爲0
clear()將緩衝區重置,將limit設置成capacity,position設置爲0
通道 channel:
Reactor反應堆:是底層的一種概念
BIO:
NIO:
SELECTOR: 是一種實現
AIO:異步非堵塞IO