日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
【深入Node探究】(1)“Node特點(diǎn)與應(yīng)用場(chǎng)景”有四問(wèn)

1、為什么叫Node?

它自身非常簡(jiǎn)單,通過(guò)通信協(xié)議來(lái)組織很多Node,非常容易通過(guò)擴(kuò)展來(lái)達(dá)成構(gòu)建大型網(wǎng)絡(luò)應(yīng)用的目的。每一個(gè)Node進(jìn)程都構(gòu)成這個(gè)網(wǎng)絡(luò)應(yīng)用中的一個(gè)節(jié)點(diǎn),這是它名字所含意義的真諦。

發(fā)展壯大離不開(kāi)廣大客戶長(zhǎng)期以來(lái)的信賴(lài)與支持,我們將始終秉承“誠(chéng)信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠(chéng)服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及電動(dòng)窗簾等,在成都網(wǎng)站建設(shè)、成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開(kāi)發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。

2、你能說(shuō)說(shuō)Node的特點(diǎn)嗎?

作為后端JavaScript的運(yùn)行平臺(tái),Node保留了前端瀏覽器JavaScript中那些熟悉的接口,沒(méi)有改寫(xiě)語(yǔ)言本身的任何特性,依舊基于作用域和原型鏈,區(qū)別在于它將前端中廣泛運(yùn)用的思想遷移到了服務(wù)器端。下面我們可以看看node相較于其他語(yǔ)言的一些特點(diǎn):

(1)異步I/O

關(guān)于異步I/O,向前端工程師解釋起來(lái)或許會(huì)容易一些,因?yàn)榘l(fā)起Ajax調(diào)用對(duì)于前端工程師而言是再熟悉不過(guò)的場(chǎng)景了。下面的代碼用于發(fā)起一個(gè)Ajax請(qǐng)求:

 
 
 
  1. $.post('/url', {title: ’深入淺出Node.js'}, function (data) { 
  2.     console.log(’收到響應(yīng)’); 
  3.   }); 
  4.   console.log(’發(fā)送Ajax結(jié)束’); 

熟悉異步的用戶必然知道,“收到響應(yīng)”是在“發(fā)送Ajax結(jié)束”之后輸出的。在調(diào)用$.post()后,后續(xù)代碼是被立即執(zhí)行的,而“收到響應(yīng)”的執(zhí)行時(shí)間是不被預(yù)期的。我們只知道它將在這個(gè)異步請(qǐng)求結(jié)束后執(zhí)行,但并不知道具體的時(shí)間點(diǎn)。異步調(diào)用中對(duì)于結(jié)果值的捕獲是符合“Don't call me, I will call you”的原則的,這也是注重結(jié)果,不關(guān)心過(guò)程的一種表現(xiàn)。

(2)事件與回調(diào)函數(shù)

Node不像Rhino那樣受Java的影響很大,而是將前端瀏覽器中應(yīng)用廣泛且成熟的事件引入后端,配合異步I/O,將事件點(diǎn)暴露給業(yè)務(wù)邏輯。

相比之下,無(wú)論在前端還是后端,事件都是常用的。對(duì)于其他語(yǔ)言來(lái)說(shuō),這種俯拾皆是JavaScript的熟悉感覺(jué)是基本不會(huì)出現(xiàn)的。

(3)單線程

Node保持了JavaScript在瀏覽器中單線程的特點(diǎn)。而且在Node中,JavaScript與其余線程是無(wú)法共享任何狀態(tài)的。

單線程的最大好處是不用像多線程編程那樣處處在意狀態(tài)的同步問(wèn)題,這里沒(méi)有死鎖的存在,也沒(méi)有線程上下文交換所帶來(lái)的性能上的開(kāi)銷(xiāo)。

同樣,單線程也有它自身的弱點(diǎn),這些弱點(diǎn)是學(xué)習(xí)Node的過(guò)程中必須要面對(duì)的。積極面對(duì)這些弱點(diǎn),可以享受到Node帶來(lái)的好處,也能避免潛在的問(wèn)題,使其得以高效利用。單線程的弱點(diǎn)具體有以下3方面。

  • 無(wú)法利用多核CPU。
  • 錯(cuò)誤會(huì)引起整個(gè)應(yīng)用退出,應(yīng)用的健壯性值得考驗(yàn)。
  • 大量計(jì)算占用CPU導(dǎo)致無(wú)法繼續(xù)調(diào)用異步I/O。

像瀏覽器中JavaScript與UI共用一個(gè)線程一樣,JavaScript長(zhǎng)時(shí)間執(zhí)行會(huì)導(dǎo)致UI的渲染和響應(yīng)被中斷。在Node中,長(zhǎng)時(shí)間的CPU占用也會(huì)導(dǎo)致后續(xù)的異步I/O發(fā)不出調(diào)用,已完成的異步I/O的回調(diào)函數(shù)也會(huì)得不到及時(shí)執(zhí)行。

3、上面提到單線程不利于計(jì)算,無(wú)法利用多核cpu,難道沒(méi)有解決方法嗎?

有的。

Node采用了與Web Workers相同的思路來(lái)解決單線程中大計(jì)算量的問(wèn)題:child_process。

子進(jìn)程的出現(xiàn),意味著Node可以從容地應(yīng)對(duì)單線程在健壯性和無(wú)法利用多核CPU方面的問(wèn)題。通過(guò)將計(jì)算分發(fā)到各個(gè)子進(jìn)程,可以將大量計(jì)算分解掉,然后再通過(guò)進(jìn)程之間的事件消息來(lái)傳遞結(jié)果,這可以很好地保持應(yīng)用模型的簡(jiǎn)單和低依賴(lài)。

4、那你可以談?wù)刵ode的使用場(chǎng)景嗎?

關(guān)于Node,探討得較多的主要有I/O密集型和CPU密集型。

I/O密集型

在Node的推廣過(guò)程中,無(wú)數(shù)次有人問(wèn)起Node的應(yīng)用場(chǎng)景是什么。如果將所有的腳本語(yǔ)言拿到一處來(lái)評(píng)判,那么從單線程的角度來(lái)說(shuō),Node處理I/O的能力是值得豎起拇指稱(chēng)贊的。通常,說(shuō)Node擅長(zhǎng)I/O密集型的應(yīng)用場(chǎng)景基本上是沒(méi)人反對(duì)的。Node面向網(wǎng)絡(luò)且擅長(zhǎng)并行I/O,能夠有效地組織起更多的硬件資源,從而提供更多好的服務(wù)。

I/O密集的優(yōu)勢(shì)主要在于Node利用事件循環(huán)的處理能力,而不是啟動(dòng)每一個(gè)線程為每一個(gè)請(qǐng)求服務(wù),資源占用極少。

CPU密集型

換一個(gè)角度,在CPU密集的應(yīng)用場(chǎng)景中,Node是否能勝任呢?實(shí)際上,V8的執(zhí)行效率是十分高的。單以執(zhí)行效率來(lái)做評(píng)判,V8的執(zhí)行效率是毋庸置疑的。

CPU密集型應(yīng)用給Node帶來(lái)的挑戰(zhàn)主要是:由于JavaScript單線程的原因,如果有長(zhǎng)時(shí)間運(yùn)行的計(jì)算(比如大循環(huán)),將會(huì)導(dǎo)致CPU時(shí)間片不能釋放,使得后續(xù)I/O無(wú)法發(fā)起。但是適當(dāng)調(diào)整和分解大型運(yùn)算任務(wù)為多個(gè)小任務(wù),使得運(yùn)算能夠適時(shí)釋放,不阻塞I/O調(diào)用的發(fā)起,這樣既可同時(shí)享受到并行異步I/O的好處,又能充分利用CPU。

CPU密集不可怕,如何合理調(diào)度是訣竅。

最后

這是我策劃撰寫(xiě)的關(guān)于深入探討node的系列文章


分享題目:【深入Node探究】(1)“Node特點(diǎn)與應(yīng)用場(chǎng)景”有四問(wèn)
文章網(wǎng)址:http://www.dlmjj.cn/article/djgsiid.html