成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于Node.js語言的討論

開發 前端
在開始敘述這篇文章之前,我要非常清楚和明確的聲明:“我并不是在鼓勵你放棄 NodeJS 或轉向 Java”。

本文是從 Node on nails! 這篇文章翻譯而來。

在開始敘述這篇文章之前,我要非常清楚和明確的聲明:“我并不是在鼓勵你放棄 NodeJS 或轉向 Java”。

我一直參與在這種爭論中。在我的編程界的朋友中一直存在著一種誤解,他們認為 NodeJS 語言是將來的趨勢。我對 Javascript 是百分百的喜愛(不是自吹,我有一段時間曾被認為是 Javascript 專家,我寫了很多喜歡 js 的文章);關于 Javascript 閉包的優美,原型模式編程風格的優勢,我是毫無質疑。但是,如果把 Javascript 放到后臺,這就完全是另外一種情況了。

每當我看到有人用一些重要的技術指標對 NodeJS 進行測評并宣稱NodeJS 是世界上最快的語言時,我都會覺得好笑。(你只要用谷歌搜一下 NodeJS vs *你能想到的任何東西*,你就會找到像這樣, 這樣, 和 這樣的東西。)

撇開我的質疑,NodeJS 的語言模式還是值得關注的,但我會在我的產品中使用它嗎?我的問題就在這。我在使用 NodeJS 的過程中發現了一些非常嚴重的問題;給人的感覺相當的糟。我必須寫一個完整的 HTTP 客戶包來支持 Multipart 方式傳送(現在這個包就是人們所知的 Reston),這樣我才能把文件發送到 Amazon S3 服務和其它一些 REST 服務里(當時沒有任何支持 HTTP Multipart 傳送的組件,HTTPS 也有問題,它折騰的我異常痛苦),總而言之,我需要向讀者們說下面幾個觀點:

◆ 并不是所有的 web 應用程序都需要大量的連接,你并不是每天都在開發一個聊天系統或一個 comet 系統。NodeJS 對處理某些事情很有優勢,我們可以用到它。如果你是讓我去在一個 IRC 服務器上開發一個基于 websocket 的聊天系統,我會推薦 NodeJS;但,如果你是讓我去把郵件從你的帳號中取出然后存到 RDBMS 或 NOSQL 數據庫中,那我就需要思量了。

◆ 技術架構選擇很重要!接受它!運用它!我看到有些人選擇了錯誤的技術路線(然后就炫耀說使用了 NodeJS),然后又發現了更好的方法來實現他的任務,于是又放棄了 NodeJS。

◆ 如果談論起事件為基礎的代碼實現和其可讀性,我相信幾乎每個人都會同意:回調式的代碼通常比正常流程形式的代碼更顯得混亂。

◆ 靜態類型的語言比動態類型的語言更具有優勢。如果你不了解編譯器的內部工作原理,就不要理會這一條了。

我的經驗已足夠用來做一次測評的了。我有一臺常見的中等性能的機器(3G 內存,雙核處理器),做為對比,我會直接使用 Java NIO 來處理 HTTP 請求,以“hello world”做為響應;同樣的過程用 NodeJS 實現一次。

NodeJS 代碼非常的直接。我使用的版本是 Node 0.4.9。請注意,這個操作依賴于’http’模塊,因此又依賴于’net’,’stream’等模塊。這些都是 NodeJS 的基本功能模塊(我沒有做任何特別的事情),它們依賴 V8 的 JIT 來實現高速的運行。

在 Java 上,我使用 Java 的 NIP 和 selector 通道來實現 NodeJS 上的相同效果(單線程事件分發)。代碼如預期中的一樣,有點長,因為要做循環處理。我盡量把所有的代碼都放到同一個文件里,所以,代碼沒有做模塊化等優化。就是這兩個文件:Runner.java core.SocketSelectorCore.java。我使用了 HashMaps,字符串的 split,indexOf 等方法來實現基本的 HTTP 頭信息的分析,以此模擬一個普通的請求流程(讀,分析,回應循環)。我使用的方法并不是很高效,但一般的時候這些方法都不是問題。

現在使用“node test.js”來啟動 NodeJS,使用 Apache Benchmark (ab -c 1000 -n 100000),1000的并發量[細節信息],大概是每秒鐘4-5千個請求的壓力運行三次。

在拿我寫的 Java NIO 的程序測試之前,我需要提醒大家幾個事情。Java 是一個野獸,你有一大堆的選擇參數來調控 JVM 的垃圾堆棧大小。在我的測試中,我使用 JVM 運行參數是“java -server -XX:+PrintCompilation -XX:+UseConcMarkSweepGC Runner”。請注意,我使用的是 verbose 模式的 JIT 編譯,這樣我就能知道 JVM 已經初始化完畢,可以開始測試了;我還改變了 GC 的方法(我試了各種方法,但看起來這個方法***)。當 JVM 完全啟動編譯后,我運行了相同的 Apache Benchmarks [細節信息]測試,Java 能處理每秒鐘8千-8千5百的請求。

我嘗試了不同的 JVM 堆的大小和一些其它的參數;結果非常的有趣。在我的機器上,我一直能達到每秒6千的處理能力。降低并發量(-c 100) ,處理能力能達到11000/s。如果你仔細看,你會發現,相對于 NodeJS,我在請求里封裝了更多的字節,但這并沒有影響 Java 的處理能力。得到了這些數據后,我還使用 JRuby,用它那神奇的語法寫了一個很粗燥的代碼。對 JRuby 上一些參數的微調,用這個很簡單的程序,我仍然能得到每秒4000-4500請求的處理能力。

現在,剩下的問題就是,我為什么要做這些,這些說明了什么?我想答案是相當明白。從個人的角度,我喜歡 Javascript 和 NodeJS,但我不接受人們說的“NodeJS 能做X但Y語言做不到“的言論。我認為把 Java 或 PHP 或其它語言跟 NodeJS 進行比較的行為是愚蠢的。Java 的 JIT 相當的先進,而 Google 也把 V8 發展到了一個新的高度。像 Netty NIO 和 Mina 這樣的框架已經存在很久了,只是因為 Java 的古怪的語法,對內存的貪婪,以及學習曲線,才沒有引起人們的注意。我只是要破除“NodeJS 因為它的異步特征能處理更多的連接,能讓你寫回調風格的代碼,也就是能寫出更好的代碼”的謬論。我的答案相當的簡單:“使用 Java 寫核心代碼,用 JRuby 或 Scala 的優美語法封裝,你會得到一個更好的處理事件驅動系統的方法”。

原文:http://www.aqee.net/node-on-nails/

【編輯推薦】

  1. Node.js初體驗
  2. 使用Node.js作為完整的云環境開發堆棧
  3. 基于Node.js、Express和Jscex開發的ToDo網站示例
  4. 如何安裝Node.js
  5. Node.js初探之hello world
責任編輯:陳貽新 來源: 外刊IT評論
相關推薦

2015-07-16 09:59:55

PHP Node.js討論

2021-03-04 23:12:57

Node.js異步迭代器開發

2021-12-28 20:04:23

Node.js開發JavaScript

2021-06-02 00:29:08

Node.jsAcceptEmfile

2013-11-01 09:34:56

Node.js技術

2015-03-10 10:59:18

Node.js開發指南基礎介紹

2021-12-25 22:29:57

Node.js 微任務處理事件循環

2020-05-29 15:33:28

Node.js框架JavaScript

2012-02-03 09:25:39

Node.js

2011-09-08 13:46:14

node.js

2011-11-01 10:30:36

Node.js

2011-09-02 14:47:48

Node

2011-09-09 14:23:13

Node.js

2011-11-10 08:55:00

Node.js

2012-10-24 14:56:30

IBMdw

2021-09-26 05:06:04

Node.js模塊機制

2021-11-06 18:40:27

js底層模塊

2019-07-09 14:50:15

Node.js前端工具

2015-06-23 15:27:53

HproseNode.js

2020-10-26 08:34:13

Node.jsCORS前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩一级在线 | 久久国产精品一区二区三区 | 欧美一级特黄aaa大片在线观看 | 国产精品乱码一二三区的特点 | 夜夜精品浪潮av一区二区三区 | 成人免费观看视频 | 亚洲精品1区2区3区 91免费看片 | 国产毛片久久久 | 亚洲国产免费 | 国产精品久久福利 | 日韩av在线不卡 | 免费在线视频精品 | 综合久久综合久久 | 久久久久久99 | 91在线免费观看 | 国产欧美日韩在线一区 | a网站在线观看 | 国产一区二区三区四区 | 亚洲av毛片成人精品 | 国产农村妇女精品一区 | 日韩成人免费av | 国产精品不卡 | 欧美一区二区精品 | 免费在线观看黄网站 | 精品成人av | 中文字幕蜜臀 | 夜夜摸天天操 | 日韩在线精品视频 | 国产精品99久久久久久久久久久久 | 日韩综合 | 日韩欧美二区 | 情侣黄网站免费看 | 精品一区二区久久 | 91精品导航 | 国产精品久久国产精品 | 一区在线视频 | 国产四区 | 亚洲在线免费 | 精品国产91 | 国产亚洲第一页 | 国产成人jvid在线播放 |