欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:BIO NIO AIO演變

柚子快報激活碼778899分享:BIO NIO AIO演變

http://yzkb.51969.com/

目錄

一、BIO的理解

二、NIO的理解

三、AIO理解

四、總結(jié)

1 IO,NIO,AIO區(qū)別

2 Stock通信的偽代碼實(shí)現(xiàn)流程

? ?Netty是一個提供異步事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用框架,用以快速開發(fā)高性能、高可靠的網(wǎng)絡(luò)服務(wù)器和客戶端程序。Netty簡化了網(wǎng)絡(luò)程序的開發(fā),是很多框架和公司都在使用的技術(shù)。

Netty并非橫空出世,它是在BIO,NIO,AIO演變中的產(chǎn)物,是一種NIO框架。

一、BIO的理解

? ? ? 網(wǎng)絡(luò)編程的基本模型是Client/Server模型,也就是兩個進(jìn)程之間進(jìn)行相互通信,其中服務(wù)端提供位置信息(綁定的IP地址和監(jiān)聽端口),客戶端通過連接操作向服務(wù)端監(jiān)聽的

地址發(fā)送連接請求,通過三次握手建立連接,如果連接成功,雙方就可以通過網(wǎng)絡(luò)套接字(Socket)進(jìn)行通信。在基于同步堵塞模式開發(fā)中,ServerSocket負(fù)責(zé)綁定Ip地址,啟動監(jiān)

聽端口。Socket負(fù)責(zé)發(fā)起連接操作。連接成功之后,雙方通過輸入和輸出流進(jìn)行同步堵塞式通信。

BIO流程圖

BIO?全稱Block-IO 是一種阻塞同步的通信模式。我們常說的StockIO一般指的是BIO。是一個比較傳統(tǒng)的通信方式,模式簡單,使用方便。但并發(fā)處理能力低,通信耗時,依賴網(wǎng)速。

BIO 設(shè)計(jì)原理:

? ? ? ?服務(wù)器通過一個Acceptor線程負(fù)責(zé)監(jiān)聽客戶端請求和為每個客戶端創(chuàng)建一個新的線程進(jìn)行鏈路處理。典型的一請求一應(yīng)答模式。若客戶端數(shù)量增多,頻繁地創(chuàng)建和銷毀線程會

給服務(wù)器打開很大的壓力。后改良為用線程池的方式代替新增線程,被稱為偽異步IO。服務(wù)器提供IP地址和監(jiān)聽的端口,客戶端通過TCP的三次握手與服務(wù)器連接,連接成功后,雙

放才能通過套接字(Stock)通信。

小結(jié):BIO模型中通過Socket和ServerSocket完成套接字通道的實(shí)現(xiàn)。阻塞,同步,建立連接耗時。

二、NIO的理解

? ? ? ?與Socket類和ServerSocket類相對應(yīng),NIO也提供了SocketChannel和ServerSocketChannel兩種不同的套接字通道實(shí)現(xiàn)。這兩種新增的通道都支持阻塞和非阻塞兩種模

式。阻塞模式使用非常簡單,但是性能和可靠性都不好,非阻塞模式則正好相反。幵發(fā)人員一般可以根據(jù)自己的需要來選擇合適的模式,一般來說,低負(fù)載、低并發(fā)的應(yīng)用程序可

以選擇同步阻塞I/O以降低編程父雜度,但是對于高負(fù)載、高并發(fā)的網(wǎng)絡(luò)絡(luò)應(yīng)用,需要使用NIO的非堵塞模式迸行幵發(fā)。

NIO 全稱New IO,也叫Non-Block IO 是一種非阻塞同步的通信模式。

NIO流程圖

NIO 設(shè)計(jì)原理

? ? ?NIO 相對于BIO來說一大進(jìn)步。客戶端和服務(wù)器之間通過Channel通信。NIO可以在Channel進(jìn)行讀寫操作。這些Channel都會被注冊在Selector多路復(fù)用器上。Selector通過

一個線程不停的輪詢這些Channel。找出已經(jīng)準(zhǔn)備就緒的Channel執(zhí)行IO操作。NIO 通過一個線程輪詢,實(shí)現(xiàn)千萬個客戶端的請求,這就是非阻塞NIO的特點(diǎn)。

NIO幾個新概念

1)緩沖區(qū)Buffer

? ? ? 它是NIO與BIO的一個重要區(qū)別。BIO是將數(shù)據(jù)直接寫入或讀取到Stream對象中。而NIO的數(shù)據(jù)操作都是在緩沖區(qū)中進(jìn)行的。緩沖區(qū)實(shí)際上是一個數(shù)組。Buffer最常見的類型

是ByteBuffer,另外還有CharBuffer,ShortBuffer,IntBuffer,LongBuffer,F(xiàn)loatBuffer,DoubleBuffer。

2)通道Channel

? ? ? ?和流不同,通道是雙向的。NIO可以通過Channel進(jìn)行數(shù)據(jù)的讀,寫和同時讀寫操作。通道與流之間不同之處是通道是雙向的,流只能一個方向移動(一個流必須是

InputStream或者OutputStream的子類)。 通道分為兩大類:一類是網(wǎng)絡(luò)讀寫(SelectableChannel),一類是用于文件操作(FileChannel),我們使用的SocketChannel

和ServerSocketChannel都是SelectableChannel的子類。

3)多路復(fù)用器Selector

? ? ?NIO編程的基礎(chǔ)。多路復(fù)用器提供選擇已經(jīng)就緒的任務(wù)的能力。就是Selector會不斷地輪詢注冊在其上的通道(Channel),如果某個通道處于就緒狀態(tài),會被Selector輪詢出

來,然后通過SelectionKey可以取得就緒的Channel集合,從而進(jìn)行后續(xù)的IO操作。服務(wù)器端只要提供一個線程負(fù)責(zé)Selector的輪詢,就可以接入成千上萬個客戶端,這就是

JDK NIO庫的巨大進(jìn)步。

三、AIO理解

? ? ? 異步無非是通知系統(tǒng)做一件事情。然后忘掉它,自己做其他事情去了。很多時候系統(tǒng)做完某一件事情后需要一些后續(xù)的操作。

AIO 也叫NIO2.0 是一種非阻塞異步的通信模式。在NIO的基礎(chǔ)上引入了新的異步通道的概念,并提供了異步文件通道和異步套接字通道的實(shí)現(xiàn)。

AIO流程圖

? ? ? AIO 并沒有采用NIO的多路復(fù)用器,而是使用異步通道的概念。其read,write方法的返回類型都是Future對象。而Future模型是異步的,其核心思想是:去主函數(shù)等待時間。

AIO模型中通過AsynchronousSocketChannel和AsynchronousServerSocketChannel完成套接字通道的實(shí)現(xiàn)。非阻塞,異步。

四、總結(jié)

1 IO,NIO,AIO區(qū)別

? ? IO 阻塞同步通信模式,客戶端和服務(wù)器連接需要三次握手,使用簡單,但吞吐量小。

? ? NIO 非阻塞同步通信模式,客戶端與服務(wù)器通過Channel連接,采用多路復(fù)用器輪詢注冊的Channel。提高吞吐量和可靠性。

? ? AIO 非阻塞異步通信模式,NIO的升級版,采用異步通道實(shí)現(xiàn)異步通信,其read和write方法均是異步方法。

2 Stock通信的偽代碼實(shí)現(xiàn)流程

? ? ? 服務(wù)器綁定端口:server = new ServerSocket(PORT)

? ? ? 服務(wù)器阻塞監(jiān)聽:socket = server.accept()

? ? ? 服務(wù)器開啟線程:new Thread(Handle handle)

? ? ? 服務(wù)器讀寫數(shù)據(jù):BufferedReader PrintWriter

? ? ?客戶端綁定IP和PORT:new Socket(IP_ADDRESS, PORT)

? ? ?客戶端傳輸接收數(shù)據(jù):BufferedReader PrintWriter

3 什么是同步阻塞BIO,同步非阻塞NIO,異步非阻塞AIO

? ? ?同步阻塞IO?: 用戶進(jìn)程發(fā)起一個IO操作以后,必須等待IO操作的真正完成后,才能繼續(xù)運(yùn)行。

? ? ?同步非阻塞IO: 用戶進(jìn)程發(fā)起一個IO操作以后,可做其它事情,但用戶進(jìn)程需要經(jīng)常詢問IO操作是否完成,這樣造成不必要的CPU資源浪費(fèi)。

? ? ?異步非阻塞IO: 用戶進(jìn)程發(fā)起一個IO操作然后,立即返回,等IO操作真正的完成以后,應(yīng)用程序會得到IO操作完成的通知。類比Future模式。

4、小結(jié)

? ? ?1)BIO模型中通過Socket和ServerSocket完成套接字通道實(shí)現(xiàn)。阻塞,同步,連接耗時。

? ? 2) NIO模型中通過SocketChannel和ServerSocketChannel完成套接字通道實(shí)現(xiàn)。非阻塞/阻塞,同步,避免TCP建立連接使用三次握手帶來的開銷。

? ? 3) AIO模型中通過AsynchronousSocketChannel和AsynchronousServerSocketChannel完成套接字通道實(shí)現(xiàn)。非阻塞,異步。

再附上netty權(quán)威指南書中一張圖、

柚子快報激活碼778899分享:BIO NIO AIO演變

http://yzkb.51969.com/

文章鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19199454.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄