Node.JS——基礎知識
阿新 • • 發佈:2018-12-26
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的耗時操作,甚至是一些定時器控制的延時操作,
它們完成的時候都要呼叫相應的回撥函式,而從完成一些密集的任務,而又不會阻塞整個程式執行的流程,此時需要一種機制來管理,這種機制叫做事件迴圈
總而言之,管理大量非同步操作的機制叫做事件迴圈。