BIO,NIO的區別,使用場景

2021-09-29 09:56:06 字數 673 閱讀 5137

bio,nio的區別,使用場景。

一、什麼是io?

i就是input,輸入,o就是output,輸出,合起來就是以流為基本的輸入輸出。

二、傳統的io

傳統的伺服器端同步阻塞i/o處理(也就是bio,blocking i/o):

當客戶端有請求到服務端的時候,服務端就會開啟乙個執行緒進行處理,當有多個請求進入時,就會開啟多個執行緒分別處理對應的請求。

現在的多執行緒一般都使用執行緒池,可以讓執行緒的建立和**成本相對較低。在活動連線數不是特別高(小於單機1000)的情況下,這種模型是比較不錯的,可以讓每乙個連線專注於自己的i/o並且程式設計模型簡單,也不用過多考慮系統的過載、限流等問題、

三:nio出現的原因背景

當面對十萬甚至百萬級連線的時候,傳統的bio模型是無能為力的。隨著移動端應用的興起和各種網路遊戲的盛行,百萬級長連線日趨普遍,此時,必然需要一種更高效的i/o處理模型。

大多數客戶端bio+連線池模型,可以建立n個連線,然後當某乙個連線被i/o占用的時候,可以使用其他連線來提高效能。

但多執行緒的模型面臨和服務端相同的問題:如果指望增加連線數來提高效能,則連線數又受制於執行緒數、執行緒很貴、無法建立很多執行緒,則效能遇到瓶

四:常見的i\o模型對比:

以socket.read()為例子:

五:nio總結

nio給我們帶來了些什麼:

抽象類和介面的區別,使用場景

我簡單說明一下我的看法 1 介面是核心,其定義了要做的事情,包含了許多的方法,但沒有定義這些方法應該如何做。2 如果許多類實現了某個介面,那麼每個都要用 實現那些方法 3 如果某一些類的實現有共通之處,則可以抽象出來乙個抽象類,讓抽象類實現介面的公用的 而那些個性化的方法則由各個子類去實現。所以,抽...

NoSQL和SQL的區別 使用場景與選型比較

nosql,指的是非關係型的資料庫。nosql有時也稱作not only sql的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱,它具有非關係型 分布式 不提供acid的資料庫設計模式等特徵。nosql用於超大規模資料的儲存。例如谷歌或facebook每天為他們的使用者收集萬億位元的資料 ...

JAVA抽象類和介面的區別,使用場景

抽象層次從高到底 介面 抽象類 具體實現類 1.介面中定義了一些方法,但是沒有實現。2.在介面的具體實現類中,如果有共同的實現 部分 可用乙個抽象類來實現這些共同的部分 個性化的實現交給具體實現類 子類 完成。3.抽象類提供了公共方法的實現 使用場景 包含抽象方法的類即為抽象類,當乙個抽象類中所有的...