1. 程式人生 > >Node.JS——基礎知識

Node.JS——基礎知識

HTTP

當輸入網址的時候,瀏覽器——

1. Chrome搜尋自身的DNS快取(僅有一分鐘生命力) 檢視:chrome://net-internals/#dns

2. 如果Chrome找不到,或者DNS失效,便會------>>>> 搜尋作業系統自身的DNS快取

3. 前兩步都沒有找到,就會--------->>>>>>>>>讀取本地的HOST檔案

4. 瀏覽器發起一個DNS的系統呼叫(一般是寬頻運營商提供的)

5. 瀏覽器獲得域名對應的IP地址後,發起HTTP“三次握手”

6. TCP/IP連線建立後,瀏覽器向伺服器傳送HTTP請求。(比如,使用GET方式,請求一個根域裡的一個域名)

7. 伺服器向瀏覽器返回響應結果,包括響應頭和響應體

8. 瀏覽器收到響應之後進行渲染

而運營商伺服器——————

1. 檢視本身快取

2. 發起一個迭代DNS解析請求

3. 把結果返回作業系統核心並快取起來

作業系統核心把結果返回瀏覽器

JS中的一些基本概念

1. 什麼是回撥函式?

回撥就是將後續邏輯封裝成起始函式的引數,逐層巢狀得函式。

2. 什麼是同步/非同步?

同步:傳送資料後,等待迴響應後,才發下一個數據包的通訊方式

非同步:傳送資料後,不等響應,接著傳送下個數據包的通訊方式

3. 什麼是I/O?


檔案系統裡面 :

            磁碟的寫入(in)

            磁碟的讀取(out)

4.什麼是單執行緒/多執行緒?


一次只能執行一個程式叫做單執行緒

一次能執行多個程式叫做多執行緒

5. 什麼是阻塞/非阻塞?


阻塞:前一個程式未執行完,就得一直等待

非阻塞:前一個程式未執行完時可以掛起,繼續執行其他程式,等到使用時再執行

6. 什麼是事件?

一個觸發動作(例如點選按鈕)

7. 什麼是事件驅動?

一個觸發動作引起的操作(例如點選按鈕後彈出一個對話方塊)

8. 什麼是基於事件驅動的回撥?


為了某個事件註冊了回撥函式,但是這個回撥函式不是馬上執行

只有當事件發生的時候,才會呼叫回撥用函式,這種函式執行的方式叫做事件驅動


這種註冊回撥就是基於事件驅動的回撥。


如果這些回撥和非同步I/O(資料寫入、讀取)操作相關,可以看作是基於回撥的非同步I/O。

只不過這種回撥在nodejs中是由事件來驅動的

9.什麼是事件迴圈?


事件迴圈Eventloop,倘若有大量的非同步操作,如一些I/O的耗時操作,甚至是一些定時器控制的延時操作,

它們完成的時候都要呼叫相應的回撥函式,而從完成一些密集的任務,而又不會阻塞整個程式執行的流程,此時需要一種機制來管理,這種機制叫做事件迴圈

總而言之,管理大量非同步操作的機制叫做事件迴圈。