溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node.js底層指的是什么語言

發(fā)布時間:2020-11-23 13:56:19 來源:億速云 閱讀:186 作者:小新 欄目:web開發(fā)

這篇文章主要介紹node.js底層指的是什么語言,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

node.js 使用C++開發(fā)的。 它是JS運行平臺(運行環(huán)境)。它的語法就是javascript,區(qū)別在它是運行在服務器上的。證據(jù) :node的源碼在 GitHub網(wǎng)站上 , 項目根目錄的src文件夾下很多以 .cc 后綴結(jié)尾的文件里有class字眼 ( C++有class而C沒有 )

Node.js不為每個客戶連接創(chuàng)建一個新的線程,而僅僅使用一個線程。當有用戶連接了,就觸發(fā)一個內(nèi)部事件,通過非阻塞I/O、事件驅(qū)動機制,讓Node.js程序宏觀上也是并行的。使用Node.js,一個8GB內(nèi)存的服務器,可以同時處理超過4萬用戶的連接。

由于Node.js中采用了非阻塞型I/O機制,因此在執(zhí)行了訪問數(shù)據(jù)庫的代碼之后,將立即轉(zhuǎn)而執(zhí)行其后面的代碼,把數(shù)據(jù)庫返回結(jié)果的處理代碼放在回調(diào)函數(shù)中,從而提高了程序的執(zhí)行效率。

當某個I/O執(zhí)行完畢時,將以事件的形式通知執(zhí)行I/O操作的線程,線程執(zhí)行這個事件的回調(diào)函數(shù)。為了處理異步I/O,線程必須有事件循環(huán),不斷的檢查有沒有未處理的事件,依次予以處理。

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

Node.js底層是C++(V8也是C++寫的)。底層代碼中,近半數(shù)都用于事件隊列、回調(diào)函數(shù)隊列的構(gòu)建。用事件驅(qū)動來完成服務器的任務調(diào)度,這是鬼才才能想到的。針尖上的舞蹈,用一個線程,擔負起了處理非常多的任務的使命。

Node.js適合用來開發(fā)什么樣的應用程序呢?

善于I/O,不善于計算。因為Node.js最擅長的就是任務調(diào)度,如果你的業(yè)務有很多的CPU計算,實際上也相當于這個計算阻塞了這個單線程,就不適合Node開發(fā)。

當應用程序需要處理大量并發(fā)的I/O,而在向客戶端發(fā)出響應之前,應用程序內(nèi)部并不需要進行非常復雜的處理的時候,Node.js非常適合。Node.js也非常適合與web socket配合,開發(fā)長連接的實時交互應用程序。

Node.js不是一種獨立的語言,與PHP、JSP、Python、Perl、Ruby的“既是語言,也是平臺”不同,Node.js的使用JavaScript進行編程,運行在JavaScript引擎上(V8)。

以上是“node.js底層指的是什么語言”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI