1. 程式人生 > >深入淺出NodeJS筆記(一)

深入淺出NodeJS筆記(一)

一、Node與Chrome的異同

Node與Chrome結構很相似,Node與Chrome都使用的是V8作為JavaScript引擎。Node不處理UI,因此沒有Chrome中的佈局引擎WebKit。Node與Chrome都是事件驅動的非同步架構

二、Node特點

Javascript是基於prototypal原型繼承模型,而非是類繼承模型。Node沒有修改JavaScript的特性,仍然是基於作用於和原型鏈

Node具有的特性:非同步I/O,事件與回撥函式,單執行緒,跨平臺。

在JavaScript中,將函式視為一等公民對待,可以將函式作為物件傳遞給方法作為實參進行呼叫。與其他Web後臺程式語言相比,Node除了非同步和事件之外,回撥函式是一大特色。

Node保持了JavaScript單執行緒的特點,與JavaScript外的執行緒無法共享任何狀態。Node中解決單執行緒中的耗時計算問題的方法是:child_process。JavaScript前臺解決方法是Web Workers。單執行緒的弱點也是很明顯的:無法利用多核CPU;錯誤會引起整個應用退出,應用的健壯性值得考慮;大量計算佔用CPU導致無法繼續呼叫非同步I/O。

Node的跨平臺是通過libuv實現的。libuv是一個高效的事件驅動的I/O庫,為Windows和Unix平臺提供相同的API。libuv線上文件http://nikhilm.github.io/uvbook/index.html

三、Node的應用場景

I/O密集型。Node面向網路切擅長並行I/O,能夠有效地組織起更多的硬體資源,從而提供更多好的服務。I/O密集的優勢主要在於Node利用事件迴圈的處理能力,而不是為每一個請求服務啟動一個執行緒,資源佔用極少。

CPU密集型,需要進行合理排程。V8執行效率很高,Node解決了在單執行緒上CPU與I/O之間阻塞無法重疊利用的問題。Node沒有提供多執行緒支援,但是有兩種充分利用CPU的方式:Node可以通過編寫C/C++擴充套件的方式更高小地利用CPU;可以通過子執行緒的方式,將一部分Node程序當作常駐服務程序用於計算。

四、Node的使用者

使用者對於Node的倚重點有以下幾個方面:前後端程式語言環境統一

;Node帶來的高效能I/O用於實時應用並行I/O使得使用者可以更高效地利用分散式環境;並行I/O,有效利用穩定介面提升Web渲染能力;雲端計算平臺提供Node支援;遊戲開發領域;工具類應用

相關推薦

深入淺出NodeJS筆記

一、Node與Chrome的異同 Node與Chrome結構很相似,Node與Chrome都使用的是V8作為JavaScript引擎。Node不處理UI,因此沒有Chrome中的佈局引擎WebKit。Node與Chrome都是事件驅動的非同步架構。 二、Node特點 Jav

深入淺出NodeJS筆記

第3章 非同步I/O 閱讀了這章內容後,最大的收穫是更好地理解了阻塞/非阻塞I/O和Node中非同步I/O的含義。 以前,談到Node的非同步I/O機制時,我就簡單地理解為非阻塞I/O。實際上,這是不準確的。所謂I/O的阻塞與非阻塞,是作業系統對I/O操作的區分。執行阻塞I

深入淺出MySQL筆記

本筆記為學習該書所記,便於複習。 包含第一、二章筆記。 第一部分 基礎篇 第1章 mysql的安裝與配置 MySQL的下載 : 分為windows平臺,Linux平臺兩種 MySQL的安裝 MySQL的配置 啟動和關閉M

【轉】Nodejs學習筆記--- 簡介及安裝Node.js開發環境

ack 目錄 javascrip 難度 時間 網站開發 clas jetbrains 常用 目錄 學習資料 簡介 安裝Node.js npm簡介 開發工具 Sublime Node.js開發環境配置 擴展:安裝多版本管理器 學習資料   1.深入淺出Node.j

nodejs學習筆記——nodejs的安裝和啟動第一個httpserver

對於一個前臺開發而言,沒有使用過nodejs簡直是一種恥辱,不過什麼時候開始都不算晚,故以下是筆者在洗刷恥辱過程中的一點經驗,供大家分享。 入門是在runoob的教程指導下開始的,但是教程裡面更多的是介紹nodejs裡面這個功能是怎麼玩,很少會提及在實際的開發過程中應該怎

Nodejs學習筆記--- 簡介及安裝Node.js開發環境

目錄 學習資料   2.Node.js開發指南 簡介(只撿了我覺得重要的) Node.js是讓Javascript脫離瀏覽器執行在伺服器的一個平臺,不是語言;Node.js採用的Javascript引擎是來自Google Chrome的V8;執行在瀏覽器外不用考慮頭疼的Java

NodeJs學習筆記

輸出hello world requestListener   請求處理函式,自動新增到 request 事件,函式傳遞兩個引數: request:  請求物件。 response:  

《代碼閱讀》讀書筆記

需求 的人 一行 編碼 重要 流動 使用 分析 缺少 《代碼閱讀》讀書筆記(一) 《代碼閱讀》(《Code Reading The Open Source Perspective》)Diomidis Spinellis 著 ---------------------

python框架之 Tornado 學習筆記

tornado pythontornado 一個簡單的服務器的例子:首先,我們需要安裝 tornado ,安裝比較簡單: pip install tornado 測試安裝是否成功,可以打開python 終端,輸入: import tornado.https

Scala學習筆記編程基礎

大數據 上一個 extends 移除 condition api arr 調用方法 tab 強烈推薦參考該課程:http://www.runoob.com/scala/scala-tutorial.html 1. Scala概述 1.1. 什麽是Scala Scala

3D Game Programming withDX11 學習筆記 數學知識總結

表示 圖形 http 根據 轉置 元素 material -s com   在圖形學中,數學是不可或缺的一部分,所以本書最開始的部分就是數學知識的復習。在圖形學中,最常用的是矢量和矩陣,所以我根據前面三個章節的數學知識,總結一下數學知識。 一、矢量   數學中的矢量,擁有

系統分析與設計學習筆記

學習 掌握 應該 溝通 基本 最終 表示 對象 毫無 為什麽要學習這門課程?   “擁有一把錘子未必能成為建築師”。 這門課程學習的是面向對象分析和設計的核心技能的重要工具。對於使用面向對象技術和語言來,創建設計良好、健壯且可維護的軟件來說,這門課程所

最大熵學習筆記預備知識

color wrap targe dsm entropy plus 文件 eight 相關鏈接 生活中我們常常聽到人們說“不要把雞蛋放到一個籃子裏”。這樣能夠減少風險。深究一下,這是為什麽呢?事實上,這裏邊包括了所謂的最大熵原理(The Maxim

Logstash筆記

logstash(一)含義: logstash是一種分布式日誌收集框架,開發語言是JRuby,當然是為了與Java平臺對接,不過與Ruby語法兼容良好,非常簡潔強大,經常與ElasticSearch,Kibana配置,組成著名的ELK技術棧,非常適合用來做日誌數據的分析。 當然它可以單獨出

Nginx模塊之Nginx-Ts-Module學習筆記搶險體驗

學習筆記 體驗 nginx模塊 int images clas tps gin issues 1、通過HTTP接收MPEG-TS2、生產和管理Live HLS 3、按照官方的編譯和配置,當然了我是第一次編譯沒有通過,在作者重新調整下,編譯成功,感謝:@arut https:

Hadoop自學筆記常見Hadoop相關項目一覽

-a https class Lucene 百萬 data fcm you 轉換 本自學筆記來自於Yutube上的視頻Hadoop系列。網址: https://www.youtube.com/watch?v=-TaAVaAwZTs(當中一個) 以後不再贅述 自學筆

SICP讀書筆記

自由 運用 實參 隱藏 更多 定義 並不是 謂詞 精確 第一章 構造過程抽象 計算過程是存在於計算機裏的一類抽象事物,它在演化過程中會去操作一些被稱為數據的抽象事物。我們通過創建被稱為程序的規則模式來指導這類過程的進行。程序由程序設計語言編排而成。 我們將要使用Lisp

jq學習筆記

簡單 ren 當前 一個 text 互斥 元素 如果 property 1 .attr() 與 .removeAttr()方法 - atr()方法用來獲取和設置元素屬性 attr()有4個表達式: attr(傳入屬性名):獲取屬性的值 attr(屬性名, 屬性

Redis學習筆記關於在windows64位環境下的安裝學習使用

客戶端 mas key-value 錯誤 services 再次 基準 alt 類型 前言 由於工作需要,目前我正在學習使用Redis。我當時學習Redis就從網上下載了點資料就開始學習了。入門看的是《REDIS入門指南》,這本書個人覺得很適合新手用來學習接觸。根據書上的引

Memcache 學習筆記----Memcache — Linux部署

工作 apach sch trick 解壓 font ash 一個 鍵值   Memcache 一、Memcache簡介(內容摘自 --百度百科)   memcache是一套分布式的高速緩存系統,由LiveJournal的Brad Fitzpatrick開發,但目前被許多網