深入淺出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的倚重點有以下幾個方面:前後端程式語言環境統一
相關推薦
深入淺出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開發,但目前被許多網