[Node.js] 進階 (20%完成)

Node.js 靠 process.binding('xx') 使用 C++ 函數
Node.js 內包含 .cc (C++ code)
像這次範例是 PBKDF2 (用來做crypto相關的)
在C++ function 內要給 process.binding()用的話就要透過
env->SetMethod(target, "PBKDF2", PBKDF2)


V8引擎則是把javascript裡的一些東西轉成C++看得懂的東西
ex: V8:Array => 把js中的array轉成C++可以用的code

Thread

當我們在電腦中執行程式的時候, 電腦會起一個 process
一個process是程式本身的實例
一個process內可以有多個threads
一個thread可以看成一個to-do list 要被CPU執行的指令集
os scheduler來排定哪個thread要優先執行
一個核心一次可以處理超過一個thread (multi-thread)
Recap:
Thread是指令集的單位, 等著被CPU執行

Event Loop

詳細版: http://www.eebreakdown.com/2016/09/nodejs-eventemitter.html
用來處理非同步的事件

Node.js執行之後就直接進event loop

整個event loop從頭跑到尾是一次是一個tick

shouldContinue 是 event loop 判斷是不是還有事件可以繼續跑
pendingOSTasks => networking related
pendingOperations => file system related



如果要讓node.js的middleware在執行完原本的handler function後才執行
可以用這個方式
此處的用法是, 在新增完部落格的文章之後, 才清除文章快取

# CI/CD
Travis
.travis.yml



  • language
    • 使用的城市語言
  • node_js - 8 => 使用v8.x
  • dist: trusty
    • 使用ubuntu trusty (14.04)
  • services
    • 需要使用到哪些服務
  • env
    • Node.js 的環境變數
  • cache
    • 可以把安裝的dependencies 快取起來, 加速流程
    • ex: node_modules
  • install
    • 需要安裝套件的指令
    • ex: npm install, npm build
  • script
    • 跟 install類似, 就是在命令列中執行你想要的指令
    • 真正將server side的code跑起來, 並且執行測試
    • ex: nohup npm run start &
      • nohup: 假如shell關閉, 這個terminal執行的process不會被kill掉
      • & : 真正讓程式在背景中執行的符號
    • sleep 3
      • 暫停3秒














留言

這個網誌中的熱門文章

[MySQL] schema 與資料類型優化

[翻譯] 介紹現代網路負載平衡與代理伺服器