BIO NIO AIO個人心得筆記

2021-09-24 17:15:25 字數 1407 閱讀 8943

io是一套用於資料傳輸的機制:

bio - blocking io - 同步式阻塞式io

nio - nonblocking io - 同步式非阻塞式io - jdk1.4 - tomcat

aio - asynchronous io - 非同步式非阻塞式io - jdk1.8

bio的缺點:

單向流:資料只能從一端流向另一端,這就導致如果產生大量的資料傳輸需要建立大量的流,耗費記憶體,伴隨著大量流的建立和銷毀也會耗費cpu

一對一的連線:乙個客戶端必須對應乙個伺服器端的執行緒,如果有大量的客戶端連線,那麼在伺服器端需要產生大量的執行緒增大伺服器的負載壓力

如果客戶端連線之後即使沒有任何的操作,也會占用伺服器端得執行緒,造成資源的浪費

阻塞nio的元件:

buffer - 緩衝區 - 用於儲存資料

channel - 通道 - 用於傳輸資料

selector - 多路復用選擇器 - 限流

aio是jdk1.8 沒有太多公司使用,目前主流是bio

緩衝區,用於儲存資料

底層依靠陣列來儲存資料,並且儲存的資料是基本型別,但是其中沒有針對boolean型別的緩衝區

最常使用的是bytebuffer,底層依靠的是位元組陣列

重要的位置:capacity >= limit >= position >= mark

capacity:容量位。用於標記緩衝區的容量

limit:限制位。用於限制操作位所能達到的最大下標,預設和capacity一致

position:操作位。用於指向要讀寫的位置,預設為0

mark:標記位。一般用於進行標記,表示之前的資料是無錯的。mark預設為-1,表示預設不啟用

重要操作:

flip:翻轉緩衝區。將limit挪到position,然後將position歸零,並且將mark置為-1

clear:清空緩衝區。position歸零,limit挪到capacity,mark置為-1

reset:重置緩衝區。將position挪到mark上

rewind:重繞緩衝區。將position歸零,將mark置為-1

通道,用於進行資料的傳輸

在傳輸資料的時候,面向緩衝區進行操作的

file:filechannel

udp:datagra   mchannel

tcpsocketchannelserversocketchannel

預設是阻塞的,需要手動設定為非阻塞

多路復用選擇器,針對通道進行選擇

選擇器所針對的通道必須是非阻塞

選擇器在進行選擇時候,選擇通道身上的事件來進行處理

Nginx個人心得筆記

目錄 一.nginx簡介 1.nginx能幹什麼 2.nginx特點 二.nginx能做什麼有什麼優勢 二.專案部署 解壓就可以用 nginx是一款輕量級web伺服器,也是一款反向 伺服器 高穩定 高效能 資源占用少 功能豐富 模組化結構 支援熱部署 客戶端假設通過http協議訪問a 中的應用伺服器...

JSONP個人心得筆記

目錄 jsonp個人心得筆記 1.學習jsonp掌握三個問題 2.什麼是jsonp 2.1定義 2.2樣子 3.為什麼使用jsonp 3.1使用jsonp的場景 3.2js的跨域非同源 3.3為什麼使用jsonp 4.jsonp的呼叫原理 5.jquery的封裝 基於json字串格式的一種使用模式,...

Mycat個人心得筆記(六)

目錄 mycat個人心得筆記 六 一.主從雙機熱備的相關問題 1.宕機重啟的節點,二進位制日誌檔案變動,如何獲取 2.從節點同步的資料會不會寫在本機的bin log 相關知識點補充 雙機熱備中,主節點 其中乙個角色 宕機,導致主節點的二進位制日誌檔案重啟時,重寫 啟動之後做了寫操作 從節點在主節點恢...