老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

Node模塊的使用方法-創(chuàng)新互聯(lián)

這篇文章主要講解了Node模塊的使用方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),集網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營(yíng)銷、軟文營(yíng)銷等專業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計(jì),讓網(wǎng)站在運(yùn)行后,在搜索中有好的表現(xiàn),專業(yè)設(shè)計(jì)制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。

簡(jiǎn)介

V8引擎本身就是用于Chrome瀏覽器的JS解釋部分,但是Ryan Dahl,把V8搬到服務(wù)器,用于做服務(wù)器的軟件。
Node是一個(gè)專注于實(shí)現(xiàn)高性能Web服務(wù)器優(yōu)化的專家,在遇到V8而誕生的項(xiàng)目

  • 沒有歷史包袱,沒有同步I/O。不會(huì)出現(xiàn)一個(gè)同步I/O導(dǎo)致事件循環(huán)性能急劇降低的情況。
  • V8性能足夠好,遠(yuǎn)遠(yuǎn)比Python,Ruby等其它腳本語(yǔ)言的引擎快。
  • JavaScript語(yǔ)言的閉包特性非常方便,比C中的回調(diào)函數(shù)好用。

Node可以讓JavaScript運(yùn)行在服務(wù)器端的平臺(tái)開發(fā),它讓JavaScript的觸角延伸到了服務(wù)器端,可以與PHP,JSP,Python,Ruby等語(yǔ)言實(shí)現(xiàn)后端開發(fā)。

但Node似乎有點(diǎn)不同:

  • Node不是一種獨(dú)立的語(yǔ)言,與PHP,JSP,Python,Perl,Ruby的“即使語(yǔ)言,也是平臺(tái)”不同,Node使用的是JavaScript進(jìn)行編程,運(yùn)行在JavaScript引擎上(V8)
  • 與PHP,JSP等相比(PHP,JSP,.net都需要運(yùn)行在服務(wù)器程序上,Apache,Naginx,Tomcat,IIS),Node跳過了Apcahe,Naginx,IIS等HTTP服務(wù)器,它自己不用建設(shè)在任何服務(wù)器任何之上。Node的設(shè)計(jì)理念與經(jīng)典架構(gòu)(LAMP = Linux + Apache + MySQL + PHP) 有著很大的不同,可以提供強(qiáng)大的伸縮能力。
  • Node沒有Web容器。
  • Node是花最小的硬件成本,追求更高的并發(fā),更高的處理性能。

Node特點(diǎn)

所謂特點(diǎn),就是Node如果解決服務(wù)器高性能瓶頸問題。
JavaScript有什么特點(diǎn)的時(shí)候,會(huì)立即想到 單線程事件驅(qū)動(dòng)面向?qū)ο?/code>。但是JavaScript精髓 覺得是 this閉包作用域鏈函數(shù)。才使得這門語(yǔ)言魅力無窮。

單線程

在Java,PHP,或者.net 等服務(wù)器端語(yǔ)言中,會(huì)為每一個(gè)用戶端連接創(chuàng)建一個(gè)新的線程。而每個(gè)線程需要耗費(fèi)大約2MB內(nèi)存。理論上,一個(gè)8GB內(nèi)存的服務(wù)器可以同時(shí)連接的大用戶數(shù)4000個(gè)左右。要讓W(xué)eb應(yīng)用程序支持更多的用戶,就需要增加服務(wù)器的數(shù)量,而Web應(yīng)用程序的硬件成本就上升了。
Node不為每個(gè)用戶連接創(chuàng)建一個(gè)新的線程,而僅僅使用一個(gè)線程。當(dāng)有用戶連接了,就觸發(fā)一個(gè)內(nèi)部事件,并通過非阻塞I/O,事件驅(qū)動(dòng)機(jī)制,讓Node程序宏觀上也是并行的。Node中,一個(gè)8GB內(nèi)存的服務(wù)器,可以同時(shí)處理超過4萬(wàn)用戶的連接。
單線程好處:操作系統(tǒng)完全不再有線程創(chuàng)建,銷毀的時(shí)間開銷。
單線程壞處:就是一個(gè)用戶造成了線程的奔潰,整個(gè)服務(wù)都奔潰了,其它人的服務(wù)也就奔潰了。

Node模塊的使用方法

Node模塊的使用方法

單線程也能夠造成宏觀上的“并發(fā)”。

非阻塞I/O

非阻塞I/O non-blocking I/O

例子:訪問數(shù)據(jù)庫(kù)取得數(shù)據(jù)的時(shí)候,需要一段時(shí)間。
在傳統(tǒng)的單線程處理機(jī)制中,在執(zhí)行了訪問數(shù)據(jù)庫(kù)代碼之后,整個(gè)線程都將暫停下來,等待數(shù)據(jù)庫(kù)返回結(jié)果,才能執(zhí)行后面的代碼。也就是說I/O阻塞了代碼的執(zhí)行,極大降低了程序執(zhí)行的效率

Node采用了非阻塞型I/O機(jī)制,因此在執(zhí)行了訪問數(shù)據(jù)庫(kù)的代碼之后,將立即轉(zhuǎn)而執(zhí)行后面的代碼,把數(shù)據(jù)庫(kù)返回的結(jié)果的處理代碼放在回調(diào)函數(shù)中,從而提高了程序的執(zhí)行效率。
當(dāng)某個(gè)I/O執(zhí)行完畢時(shí),將以時(shí)間的形式通知執(zhí)行I/O操作的線程,線程執(zhí)行了這個(gè)事件的回調(diào)函數(shù)。為了處理異步I/O,線程必須有事件循環(huán),不斷的檢查是否有未處理的時(shí)間。依次予以處理。
阻塞模式下,一個(gè)線程只能處理一項(xiàng)任務(wù),要想提高吞吐量必須通過多線程。而非阻塞模式下,一個(gè)線程永遠(yuǎn)在執(zhí)行計(jì)算操作,這個(gè)線程的CPU核心利用率永遠(yuǎn)是100%。 有一種類似 : 與其多人工作,但是好多人閑著,倒不如一個(gè)人工作,往死里干活。

Node模塊的使用方法

事件驅(qū)動(dòng)
事件驅(qū)動(dòng) event-driven

在Node中,客戶端請(qǐng)求建立連接,提交數(shù)據(jù)等行為,會(huì)觸發(fā)相應(yīng)的時(shí)間。在Node中,在一個(gè)ie時(shí)時(shí)刻,只能執(zhí)行一個(gè)事件回調(diào)函數(shù),但是在執(zhí)行一個(gè)事件回調(diào)函數(shù)的中途,可以轉(zhuǎn)而處理其它事件(比如:有新用戶連接),然后返回繼續(xù)執(zhí)行原事件的回調(diào)函數(shù)。這種處理機(jī)制,稱為:"事件環(huán)"機(jī)制。

Node底層是C++(V8也是C++) 編寫。底層代碼中,近半數(shù)都用戶事件隊(duì)列,回調(diào)函數(shù)隊(duì)列的構(gòu)建。用事件驅(qū)動(dòng)來完成服務(wù)器的任務(wù)調(diào)度。用一個(gè)線程,擔(dān)負(fù)起了處理非常多的任務(wù)。

Node模塊的使用方法

單線程,減少內(nèi)存開銷,操作系統(tǒng)的內(nèi)存換頁(yè)。
如某一個(gè)任務(wù),執(zhí)行了,但是被I/O阻塞了,所以這個(gè)縣城就阻塞了。非阻塞I/O,不會(huì)傻等I/O語(yǔ)句結(jié)束,而會(huì)執(zhí)行后面的語(yǔ)句。利用事件驅(qū)動(dòng),不管是新用戶的請(qǐng)求,還是老用戶的I/O完成,都將以事件方式加入事件環(huán)中,等待調(diào)度。

Node所有的I/O都是異步的,回調(diào)函數(shù)嵌套回調(diào)函數(shù)。

Node是單進(jìn)程單線程應(yīng)用程序,但是通過事件和回調(diào)支持并發(fā),所以性能非常高。
Node的每個(gè)API都是異步的,并作為一個(gè)獨(dú)立線程運(yùn)行,使用異步函數(shù)調(diào)用,并處理并發(fā)。
Node基本上所有的事件機(jī)制都是用設(shè)計(jì)模式中的觀察者模式實(shí)現(xiàn)的。
Node單線程類似進(jìn)入一個(gè)while(true)的事件循環(huán),直到?jīng)]有事件觀察者退出,每個(gè)異步事件都生成一個(gè)事件觀察者,如果有事件發(fā)生就調(diào)用該回調(diào)函數(shù)。

模塊

moduel

Node中,以模塊為單位劃分所有功能,并且提供一個(gè)完整的模塊加載機(jī)制,可以將應(yīng)用程序話費(fèi)為各個(gè)不同的部分。

Node中,一個(gè)JavaScript文件中定義的變量,函數(shù),都只在這個(gè)文件內(nèi)部有效果。

俠義的說,每一個(gè)JavaScript文件都是一個(gè)模塊,而多個(gè)JavaScript文件之間可以相互require,共同實(shí)現(xiàn)一個(gè)功能,整體外對(duì),又稱之為廣義上的模塊

好處:

  • 減少重復(fù)代碼量,增加可讀性。
  • 方便進(jìn)行代碼規(guī)劃。
  • 方面使用第三方模塊。

當(dāng)需要從JS文件外部引用到這些變量,函數(shù)時(shí),必須使用exprots對(duì)象,或者module.exprots進(jìn)行暴露。使用者需要使用require(); 函數(shù)引入這個(gè)JS文件。

function People( name,sex,age ){
  this.name = name;
  this.sex = sex;
  this.age = age;
}

People.prototype = {
  sayHello: function(){
    console.log(this.name+this.sex+this.age);
  }
};

// 暴露
module.exports = People;

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


本文名稱:Node模塊的使用方法-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)URL:http://www.xueling.net.cn/article/djdego.html
在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 大陆一级毛片视频 | 久草www | 国产最新一区二区三区 | 婷婷色婷婷开心五月四房播播 | 精品久久久久久久久久久国产字幕 | 日本免费影院 | 真人性囗交69视频 | 91久精品| 麻豆精品久久久久久中文字幕无码 | 麻豆最新网址 | 远方的山楂树免费观看视频48集 | 日韩免费视频中文字幕 | 久久77777| 国产蜜臀AV在线一区二区三区 | 久久国产精品久久喷水 | 综合图区亚洲欧美另类图片 | 天堂网中文字幕在线观看 | 老外黑人欧美一级毛片 | 国产一级淫片91aaa | 久久男女视频 | 欧美日韩精品一区二区在线观看 | 中文字幕一区二区三区视频播放 | 国产三级精品片 | 欧美亚洲另类久久综合二区 | 三级黄色的视频 | 27邪态恶动图gif喷水赞一把 | 免费观看a级毛片在线播放 国产精品人人爱 | 成人羞羞国产 | 国产精品人妖ts系列视频 | 嗯啊在线观看 | 亚洲熟女综合色一区二区三区 | www私房写真在线观看 | 91看片资源| 久久精品一区二区三区四区毛片 | 久久超碰免费 | 中文字幕第80页 | 亚洲AV无码一区二区二三区∝ | 久久九九视频 | 97视频精品一二区ai换脸 | 久久成年人 | 色翁荡熄又大又硬又粗又视频 |