日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

由Node.js事件驱动模型引发的思考

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 由Node.js事件驱动模型引发的思考 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

近段時間聽說了Node.js,很多文章表述這個事件驅動模型多么多么優秀,應用在服務器開發中有很大的優勢,本身對此十分感性去,決定深入了解一下,由此也引發了一些對程序設計的思考,記錄下來。

什么是Node.js

Node.js在官網上是這樣定義的:“一個搭建在Chrome JavaScript運行時上的平臺,用于構建高速、可伸縮的網絡程序。Node.js采用的事件驅動非阻塞I/O模型使它既輕量又高效,是構建運行在分布式設備上的數據密集型實時程序的完美選擇。”

Node.js的事件驅動

簡單來說就是只有一個線程,所有IO操作(網絡,文件訪問等)都是異步的,通過回調來響應處理。

Node.js做了什么

Node.js將網絡,文件,數據庫等操作等都實現了異步接口,讓開發者所設計的程序只跑在一個線程上,易于設計出性能良好的高并發網絡程序。

如果不采用異步的方式來實現,可能的處理方式有針對每一個連接建立一個線程處理,有多少個連接就建立多少個線程,每一個線程獨立不互相干擾。乍一看這么處理是沒有問題的,但是要知道線程的創建是有代價的,如果按照這么處理在連接數上萬,就已經很難處理過來的,創建線程浪費了大量資源。

Node.js的劣勢

從前文的描述中可以看出Node.js的事件驅動機制在IO密集型應用中,是有比較大的優勢的,那么考慮另外一種場景,CPU密集型應用(如數據加密,壓縮)。由于Node.js的代碼是在一個線程中運行的,這種情況下事件循環就被阻塞住了。當然Node.js也提供了一下其他機制(nextTick,child_process等)解決這種場景,但是看起來這些實現可以說是比較丑陋的。

關于程序設計的思考

感覺Node.js的設計在IO密集型應用上有優勢是值得在程序設計中參考借鑒的,如果在支持多線程的語言中采用如下設計是不是既擁有事件驅動的優勢又避免了在CPU密集型場景下的劣勢呢?

  1. 整體業務邏輯基于事件驅動的處理,可以避免許多多線程操作中繁瑣、易錯的地方。

  2. CPU密集高運算的場景使用線程處理,主線程回調處理結果。

最后

對Node.js也只是簡單的了解一下,并未深入學習,有什么錯漏大家勿噴。



來自為知筆記(Wiz)

轉載于:https://www.cnblogs.com/vitoz/p/4872799.html

總結

以上是生活随笔為你收集整理的由Node.js事件驱动模型引发的思考的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。