深入淺出nodejs記錄

要看的書太多,時間太緊看不完薯鼠,挑核心的部分記錄一下嫉沽。

一辟犀、單線程最大好處是不用像多線程編程那樣處處在意狀態(tài)同步問題,沒有死鎖绸硕,沒有線程上下文交換所帶來的性能上的開銷

缺點:

1.無法利用多核CPU

2.錯誤會引起整個應用退出堂竟,應用健壯性值得考驗

3.大量計算占用CPU導致無法繼續(xù)調(diào)用異步I/O(解決:適當調(diào)整和分解大型運算任務為多個小任務,使得運算能夠適時釋放玻佩,不阻塞I/O調(diào)用的發(fā)起出嘹,這樣既可同時享受到并行異步I/O的好處,又能充分利用CPU)


二咬崔、node采用webworker相同思路解決單線程大量計算問題:child_process(子進程)


三税稼、問題:進程和線程區(qū)別?

進程:是并發(fā)執(zhí)行的程序在執(zhí)行過程中分配和管理資源的基本單位垮斯,是一個動態(tài)概念郎仆,競爭計算機系統(tǒng)資源的基本單位。

線程:是進程的一個執(zhí)行單元甚脉,是進程內(nèi)部調(diào)度實體丸升,是處理器調(diào)度的基本單位,是比進程更小的獨立運行的基本單位牺氨。線程也被稱為輕量級進程狡耻。

一個程序至少一個進程墩剖,一個進程至少一個線程。

地址空間:同一進程的線程共享本進程的地址空間夷狰,而進程之間則是獨立的地址空間岭皂。

資源擁有:1.同一進程內(nèi)的線程共享本進程的資源如內(nèi)存、I/O沼头、cpu等爷绘,但是進程之間的資源是獨立的。一個進程崩潰后进倍,在保護模式下不會對其他進程產(chǎn)生影響土至,但是一個線程崩潰整個進程都死掉。所以多進程要比多線程健壯猾昆。2.進程切換時陶因,消耗的資源大,效率高垂蜗。所以涉及到頻繁的切換時楷扬,使用線程要好于進程。同樣如果要求同時進行并且又要共享某些變量的并發(fā)操作贴见,只能用線程不能用進程烘苹。


四、node 應用場景:擅長I/O密集型應用場景

I/O密集優(yōu)勢主要在于node利用事件循環(huán)的處理能力片部,而不是啟用每一個線程為每個請求服務镣衡,占用資源極少


五、node單線程僅僅是js執(zhí)行在單線程吞琐,在node中無論是*nix還是windows平臺捆探,內(nèi)部完成I/O任務另有線程池


六、node中定時器精確度不夠站粟,改用process.nextTick()方法更高效黍图,每次調(diào)用process.nextTick()方法,只會將回調(diào)函數(shù)放入隊列中奴烙,在下一輪Tick時取出執(zhí)行助被。

process.Tick()和setImmediate()有細微差別,差別在于process的回調(diào)函數(shù)優(yōu)先級要高于setImmediate(也就是執(zhí)行console.log會先輸出)


七切诀、異步實現(xiàn)的核心:事件循環(huán)

進程啟動時揩环,node會創(chuàng)建一個類似于while(true)的循環(huán),每次執(zhí)行一次循環(huán)體的過程稱為Tick幅虑,每個Tick的過程就是查看是否有事件待處理丰滑,如果有,就取出事件及其相關(guān)的回調(diào)函數(shù)倒庵。如果存在關(guān)聯(lián)的回調(diào)函數(shù)褒墨,就執(zhí)行他們炫刷。然后進入下個循環(huán),如果不再有事件處理郁妈,就退出進程浑玛。


八、事件驅(qū)動的實質(zhì):通過主循環(huán)加事件觸發(fā)的方式來運行程序


九噩咪、node高性能的一個原因:通過事件驅(qū)動的方式處理請求顾彰,無須為每個請求創(chuàng)建額外對應線程,可以省掉創(chuàng)建線程和銷毀線程的開銷胃碾,同時操作系統(tǒng)在調(diào)度任務時因為線程較少涨享,上下文切換的代價很低。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仆百,一起剝皮案震驚了整個濱河市灰伟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌儒旬,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帖族,死亡現(xiàn)場離奇詭異栈源,居然都是意外死亡,警方通過查閱死者的電腦和手機竖般,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門甚垦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涣雕,你說我怎么就攤上這事艰亮。” “怎么了挣郭?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵迄埃,是天一觀的道長。 經(jīng)常有香客問我兑障,道長侄非,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任流译,我火速辦了婚禮逞怨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘福澡。我一直安慰自己叠赦,他們只是感情好,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布革砸。 她就那樣靜靜地躺著除秀,像睡著了一般糯累。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鳞仙,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天寇蚊,我揣著相機與錄音,去河邊找鬼棍好。 笑死仗岸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的借笙。 我是一名探鬼主播扒怖,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼业稼!你這毒婦竟也來了盗痒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤低散,失蹤者是張志新(化名)和其女友劉穎俯邓,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熔号,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡稽鞭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了引镊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浪听。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡虑椎,死狀恐怖馍驯,靈堂內(nèi)的尸體忽然破棺而出踩验,到底是詐尸還是另有隱情,我是刑警寧澤赴恨,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布疹娶,位于F島的核電站,受9級特大地震影響嘱支,放射性物質(zhì)發(fā)生泄漏蚓胸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一除师、第九天 我趴在偏房一處隱蔽的房頂上張望沛膳。 院中可真熱鬧,春花似錦汛聚、人聲如沸锹安。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叹哭。三九已至忍宋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間风罩,已是汗流浹背糠排。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留超升,地道東北人入宦。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像室琢,于是被迫代替她去往敵國和親乾闰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355