node基礎知識介紹
文章目錄
node基礎知識介紹
node的核心概念之非阻塞I/O
訪問磁碟和網路這樣的I/O 請求會比較慢
所以我們希望,在讀取檔案或通過網路傳送訊息時,執行平臺不會阻塞業務邏輯的執行。
Node 用三種技術來解決這個問題:事件、非同步API、非阻塞I/O。在Node 程式設計師看來,非阻塞I/O 是個底層術語。它的意思是說,你的程式可以在做其他事情時發起一個請求來獲取網路資源,然後當網路操作完成時,將會執行一個回撥函式來處理這個操作的結果
同步式I/O是指: 執行緒在執行中如果遇到磁碟讀寫或網路通訊(統稱為 I/O 操作),通常要耗費較長的時間,這時作業系統會剝奪這個執行緒的 CPU 控制權,使其暫停執行,同時將資源讓給其他的工作執行緒,這種執行緒排程方式稱為阻塞 . 當 I/O 操作完畢時,作業系統將這個執行緒的阻塞狀態解除,恢復其對CPU的控制權,令其繼續執行。這種 I/O 模式就是通常的同步式 I/O(Synchronous I/O)或阻塞式 I/O (Blocking I/O)。
非同步式 I/O (Asynchronous I/O)或非阻塞式 I/O (Non-blocking I/O)則針對所有 I/O 操作不採用阻塞的策略。當執行緒遇到 I/O 操作時,不會以阻塞的方式等待 I/O 操作的完成或資料的返回,而只是將 I/O 請求傳送給作業系統,繼續執行下一條語句。當作業系統完成 I/O 操作時,以事件的形式通知執行 I/O 操作的執行緒,執行緒會在特定時候處理這個事件。為了處理非同步 I/O,執行緒必須有事件迴圈,不斷地檢查有沒有未處理的事件,依次予以處理。
單執行緒事件驅動的非同步式 I/O 比傳統的多執行緒阻塞式 I/O 究竟好在哪裡呢?
簡而言之,非同步式 I/O 就是少了多執行緒的開銷。對作業系統來說,建立一個執行緒的代價是十分昂貴的,需要給它分配記憶體、列入排程,同時線上程切換的時候還要執行記憶體換頁,CPU 的快取被清空,切換回來的時候還要重新從記憶體中讀取資訊,破壞了資料的區域性性
npm基本指令集
npm install packagename
安裝模組不指定版本號 預設會安裝最新的版本
npm install packagename 0.0.1
安裝指定版本的模組
npm install packagename --save 或 -S
–save、-S引數意思是把模組的版本資訊儲存到dependencies(生產環境依賴)中,即你的package.json檔案的dependencies欄位中;
npm install packagename -g 或 --global
安裝全域性的模組(不加引數的時候預設安裝本地模組)
npm install packagename --save-dev 或 -D
–save-dev 、 -D引數意思是吧模組版本資訊儲存到devDependencies(開發環境依賴)中,即你的package.json檔案的devDependencies欄位中;
npm uninstall packagename [options]
解除安裝已經安裝的模組,後面的options引數意思與安裝時候的意思一樣,與這個命令相同的還有npm remove 、npm rm、npm r 、 npm un 、 npm unlink 這幾個命令功能和npm uninstall基本一樣
npm outdated
這個命令會列出所有已經過時了的模組,
npm update [-g]
對於已經過時了的模組可以使用上面的命令去更新
npm update [包名稱]
-g]
對於已經過時了的模組可以使用上面的命令去更新
npm update [包名稱]
更新指定名稱的包s