国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - 支撐Java NIO與NodeJS的底層技術(shù)

支撐Java NIO與NodeJS的底層技術(shù)

2020-06-16 10:50SolidMango JAVA教程

這篇文章主要為大家詳細(xì)介紹了支撐Java NIO與NodeJS的底層技術(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

支撐Java NIONodeJS的底層技術(shù)

眾所周知在近幾個(gè)版本的Java中增加了一些對(duì)Java NIO、NIO2的支持,與此同時(shí)NodeJS技術(shù)棧中最為人稱(chēng)道的優(yōu)勢(shì)之一就是其高性能IO,那么我們今天要討論的話題就是支撐這些技術(shù)的底層技術(shù)。

開(kāi)始之前先要提出的一個(gè)問(wèn)題是:

為什么NodeJS和Java NIO2沒(méi)有在更早的時(shí)間出現(xiàn)?

答案:個(gè)人認(rèn)為是底層的支撐技術(shù)還不成熟。

那么,底層技術(shù)指的是什么呢?對(duì)的,我想很多人已經(jīng)猜到,是操作系統(tǒng)技術(shù)。本文提出的兩個(gè)概念Java NIO2和NodeJS無(wú)一例外都是用戶(hù)態(tài)技術(shù)或者說(shuō)是應(yīng)用層技術(shù),而這些應(yīng)用層技術(shù)是運(yùn)行于OS之上的,與此同時(shí)隨著操作系統(tǒng)的進(jìn)步,可以支撐的編程模型也更加的豐富。可以這么說(shuō),這兩項(xiàng)技術(shù)完全是為了應(yīng)用操作系統(tǒng)進(jìn)步帶來(lái)的紅利而進(jìn)化出來(lái)的技術(shù)。一般來(lái)說(shuō)最先享受這種紅利的技術(shù)一定是C\C++,因?yàn)镺S的進(jìn)步最新提供的大部分是系統(tǒng)調(diào)用,而C\C++是最方便應(yīng)用這些系統(tǒng)調(diào)用的,但是同時(shí)也是最復(fù)雜的。其他平臺(tái)為了也獲得同樣的性能,就必須不斷的進(jìn)化,封裝,使用戶(hù)可以用上這些紅利,一旦那個(gè)平臺(tái)停滯更新,也就是這個(gè)平臺(tái)沒(méi)落的時(shí)候了。對(duì)用戶(hù)來(lái)說(shuō)封裝的越方便,對(duì)用戶(hù)來(lái)說(shuō)就越是友好,可能使用的人就越多。雖然很多人可以很快的寫(xiě)出基于這些平臺(tái)的代碼,但是往往不得其精髓,因?yàn)楸举|(zhì)上還是不理解這些技術(shù)的動(dòng)機(jī)和原理。下面我們討論的這些技就是這兩項(xiàng)技術(shù)相關(guān)的底層技術(shù)。

不管哪一種OS設(shè)計(jì)中,下面5種IO模型都是必不可少的。

1. blocking I/O
2. nonblocking I/O
3. I/O multiplexing (select, poll and epoll)
4. signal driven I/O (SIGIO)
5. asynchronous I/O (the POSIX aio_ functions)

1. blocking I/O

如圖所示,這種IO模型的優(yōu)點(diǎn)是編程簡(jiǎn)單,也是OS最早支持的IO模型之一,缺點(diǎn)是系統(tǒng)調(diào)用阻塞用戶(hù)動(dòng)態(tài)線程執(zhí)行,從而造成CPU時(shí)間浪費(fèi),IO效率低。

支撐Java NIO與NodeJS的底層技術(shù)

2. nonblocking I/O

如圖所示,這種IO模型的一個(gè)改進(jìn)是IO是非阻塞了,但是需要長(zhǎng)輪詢(xún),同樣浪費(fèi)CPU時(shí)鐘周期。

支撐Java NIO與NodeJS的底層技術(shù)

3. I/O multiplexing (select, poll and epoll)

如圖所示,這種IO模型是當(dāng)今OS提供的最穩(wěn)定的IO模型,大部分主流的應(yīng)用都是基于此種IO模型構(gòu)建的,比如NodeJS,但是這些平臺(tái)往往在這種模型之上增加一層封裝來(lái)直接支持AIO。

支撐Java NIO與NodeJS的底層技術(shù)

4. signal driven I/O (SIGIO)

如圖所示,資料記載這種IO模型由于對(duì)比模型3沒(méi)有性能優(yōu)勢(shì),同時(shí)由于系統(tǒng)支持不穩(wěn)定,很少為設(shè)計(jì)者采用。

支撐Java NIO與NodeJS的底層技術(shù)

5. asynchronous I/O (the POSIX aio_ functions)

如圖所示,此種IO模型是最完美的AIO,編程模型也最簡(jiǎn)單,但是能夠完美支持者個(gè)模型的OS很少,網(wǎng)上資料顯示Linux正在做這方面的努力,一旦OS在這個(gè)方面上取得進(jìn)展,編程框架,平臺(tái),編程模型可能還是需要有很大程度的簡(jiǎn)化。

雖然這種模型很少有OS的支持,但是并不是說(shuō)現(xiàn)在就沒(méi)有這種AIO模型,很多框架做了這方面的工作,在用戶(hù)態(tài)模擬了AIO,使用戶(hù)可以更多的關(guān)注業(yè)務(wù)邏輯代碼。

支撐Java NIO與NodeJS的底層技術(shù)

6. 同步異步,阻塞和非阻塞

同步和異步是針對(duì)應(yīng)用程序和內(nèi)核的交互而言的。一直等到數(shù)據(jù)讀完再返回的是同步,直接返回的是異步。阻塞和非阻塞是對(duì)進(jìn)程、線程而言的,阻塞方式下讀取或者寫(xiě)入線程一直等待,而非阻塞方式下,讀取或者寫(xiě)入線程立即返回一個(gè)狀態(tài)值。

支撐Java NIO與NodeJS的底層技術(shù)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品一区二区三区四区高清 | 国产精品1区2区 | 日韩一级视频 | 日韩免费高清在线 | 亚洲福利在线观看 | 91在线中文 | 欧美成人不卡 | 欧美国产在线观看 | 国产精品不卡视频 | 高清视频一区二区三区 | 久久成人免费视频 | 欧洲av一区二区 | 久久av网站| 欧美精品久久久 | 国产一区二区三区久久 | 亚洲精品成人av久久 | 日韩中文字幕 | 91正在播放 | 国产v日产∨综合v精品视频 | 欧洲精品久久久久毛片完整版 | 91av电影在线观看 | 久久国产视频精品 | 天天天天干 | 免费午夜电影 | 免费精品 | 精品国产一区二区三区免费 | www.五月婷| 欧美日韩中文 | 国产一区二区三区在线免费看 | 国内精品视频一区二区三区八戒 | 亚洲精品日韩综合观看成人91 | 久久精品国产亚洲 | 最新国产在线视频 | 亚洲精品久久久久久久蜜桃 | 日日操狠狠操 | 日韩精品视频在线观看免费 | 欧洲在线一区 | 一区二区三区视频 | 在线看国产 | 免费日韩在线 | 一区二区三区视频在线观看 |