關於Nodejs 技術架構 如何與C 通訊

2022-09-19 16:54:15 字數 1281 閱讀 6609

版本:nodejs單數是非穩定版本,雙數是穩定版本

先談談nodejs不是什麼

nodejs是乙個平台

nodejs用了哪些技術

- nodejs api 如http模組、fs、stream模組等

- nodejs bindings(讓js和 c/c++通訊)

- v8 js引擎

- libuv 跨平台的非同步io能力

- dns解析 c-areas

- 加解密 openssl

- 其他 http_parser、zlib等

- c/c++ 外掛程式(自定義其他能力,你可以自己寫c/c++外掛程式)

nodejs bindings

nodejs bindings能將cpp檔案編譯成node檔案,js require可以呼叫require檔案

編譯成node檔案不是必須的,也可以是其他任何可行方式

如對http-parser的封裝就是http_parser_bindings.cpp

背景

每個系統的非同步io都不一樣

linux有epoll

windows有iocp

ryan為了實現乙個跨平台的非同步io庫,開始寫libuv

libuv會根據系統自動選擇合適的方案

功能

可以用於tcp/udp/dns/檔案等非同步操作

io即輸入和輸出,所有系統和外界的互動行為都叫做io操作

功能

注意

->1. timers

->2. i/o callbacks

->3. idle,prepare

->4. poll

->5. check

->6. close callbacks

->1. timers

大部分時間停留在poll階段

check主要用於檢查setimmediate**

timers主要檢查settimeout**

所以settimeout(cb,0)和setimmediate(cb)誰先執行?

一般般來說是第二個先執行,因為一般在poll階段,從poll出來的時候,先到check,再到timers

但是也有例外,如果是第一次,那麼先檢查timers, 也就是第乙個先執行

技術執行與架構實踐

文章原文 本文討論如何構建技術執行能力.不論是企業招聘還是個人職業發展,都可以參照這個能力模型.先是回顧技術人員的3個能力象限.再從技術視角如何思考和判斷問題.到架構設計的原則.並通過交易和營銷的成功實踐分析,理解什麼是好的架構.前一篇提到的技術人的職責,可以總結為以下3點 技術視野和判斷力 tec...

關於語言與架構(四)

說架構,遠不如討論語言來得有感覺。架構這個詞有點彆扭,是這幾年才說得比較多的乙個詞語。沒有感覺就順便先說幾句。從問題出發,我們要解決乙個應用系統,實現其目標,並不是一件容易的事。這裡不再掉書包說以前的方法了,就說眼前的。眼前的架構不管其名稱是什麼有一點是共同的,那就是多層結構,最普遍的是三層結構。為...

《雲計算架構技術與實踐》

摘要 2014年9月,由華為公司雲計算首席架構師顧炯炯編著,清華大學出版社出版的華為雲計算首部著作 雲計算架構技術與實踐 一書正式問世。雲計算概念誕生至今已發展了約八年時間,這八年來,相比雲計算誕生初期,雲計算技術條件 行業和市場環境均發生了巨大變化,廣大讀者對雲計算的認知需求,也從當初的粗淺概念階...