1. 程式人生 > >過年7天樂,學nodejs 也快樂

過年7天樂,學nodejs 也快樂

自從上次接觸nodejs 已經好長時間了,但是年底公司太忙了 ,沒時間看,

過年回家,家裡沒網,作為一個戰鬥型屌絲,自然不能錯過如此學習機會,於是買了兩本書 一本《深入淺出nodejs》一本《寫給大家看的c++》

看完nodejs 有點感覺,是移動網際網路時代不錯的技術選型,相信,5年後nodejs在中國一定會火起來,就像10年前c#剛出來,標榜為net 而生一樣。

1 首次在底層將效能的核心由單臺伺服器提升到伺服器節點組合

傳統上大部分程式設計效能優化和核心都是在提升單臺伺服器的效能,而對伺服器節點組合效能提升缺乏考慮。

一方面是,在獨立軟體服務提供商時代,過去80%的程式都執行在單臺伺服器上

另一方面是,在計算機結構上,cpu最快,記憶體次之,硬碟最次,網路io效能最爛,所以傳統計算機都圍繞這cpu 、記憶體、硬碟進行設計。這可以理解為時代侷限性。

前幾年,ruby 再次在單臺伺服器的效能上要求下滑一下,從而使開發效率在提高一次,但這幾年發現ruby風似乎小了,為啥呢?

個人認為開發效率乃是微軟的絕殺領域,ruby想要依靠開發效率在程式設計世界混一席之地,談何容易,加之開源世界不是很重視開發效率,而重視可閱讀,可擴充套件,可維護,促使ruby風颳的快,走的也快,而且高開發效率很容易出現零和遊戲【1個人埋BUG,1個人改bug,一個人排期,看著每個人都很辛苦,都很努力,都應該加工資,但是從老闆角度,結果維持為0】

nodejs的出現,徹底把效能分為cpu效能和io效能,而在io效能上採取非同步回撥機制,徹底消滅了計算機之間通訊造成的等待堆積,造成的效能問題,

併發量大時候,大量的等待壓垮 伺服器在傳統伺服器和應用上似乎是家常便飯,這可能要和nodejs說 拜拜了

傳統web伺服器應對海量併發 nodejs 伺服器因對海量併發
微博桌面截圖_20140208200906

傳統的web伺服器因為單臺伺服器可以承受的連結數有限,所以就弄一大堆海量伺服器來分擔負載,

但是單臺伺服器的業務邏輯依然很複雜,軟體開發的複雜度整體上依然沒有降低,不信,你看看你的各種效能調優和可維護行的知識,是不是圍繞單臺伺服器的.例如高效能的***

標誌

很少寫一個迴圈裡面掉介面




微博桌面截圖_20140208201239
node js因為單一執行緒就可以處理很高的併發,所以每臺伺服器只須處理一點點業務邏輯,由一個佇列上的其他伺服器處理其他邏輯,這樣,單臺伺服器的複雜度就極大的降低,我認為複雜度是效能的天敵,只有消滅複雜度,才能有可靠的效能



標誌
一個迴圈裡面掉介面很正常

2 nodejs自身及伺服器和單執行緒的脆弱性

我也不知道nodejs是不是史上第一次自身就是伺服器的程式設計工具,我資歷太淺,才work4年,nodejs是我見到的第一個自身就是伺服器的程式設計工具.

nodejs 是單執行緒,遇到未知錯誤就自動退出了 。

為什麼說nodejs脆弱呢,我是這麼推理的以.NET和iis為例子

1 .NET APP 普通異常 黃頁                                                     普通

2 .NET APP的 iis程式池異常 程式退出                          嚴重

3 .NET iis 異常 這臺伺服器上的所有iis託管的程式異常        超級嚴重

大家平時寫程式 黃頁似乎是加長便飯,即使是程式上線了,該黃頁的時候,還是黃頁,但是程式整體是沒問題的

iis程式池無法啟動和iis異常就很少見了可以忽略了

但是在nodejs中,就完全不一樣 ,1和2放在一起了,因為nodejs 自身就成程式池,而且是單執行緒,只要出現一次異常,該執行緒就 退出了

這就好像以前大家只犯錯誤1 犯錯1000次才可能遇到1次錯誤2,在nodejs中犯一次錯誤就直接是錯誤2

在nodejs 風掛起來後,國外緊跟著的就是js的測試驅動的很多討論和實踐,框架出了一個又一個,為啥呢?nodejs有需求唄

3 v8記憶體限制和cpu、io壓力分散、事件迴圈問題

node 的v8 記憶體限制 一個執行緒的記憶體在32位和64位下都預設沒有突破2g記憶體,傳統的web伺服器,壓力一上來,記憶體很快就上去了,更不用說記憶體比較大的操作了

node 通過非同步機制加強了對cpu 和io的利用,造成了設計程式時候要先預判,我這個程式是cpu 密集呢還是io密集呢?

說實話 2013年, 通過很多事件 我才意識到 原來IO 是個很深的領域,很久以前一直認為io沒啥簡單的和1一樣。。。。。

node 整體上是依靠事件迴圈機制驅動,像遞迴程式非常消耗node的事件迴圈,很可能就造成堆疊溢位 程式退出 ,所以一般迴圈遞迴用c++寫外掛

這幾個因素和到一起,就造成node 設計程式模組時候 要更細緻,技術粒度更細

就像一個普通的站點 用.NET 開發什麼都幹了 但是node 可能就不是這麼回事了,例如 檔案上傳、驗證碼生成 ,檢索服務,正則表示式服務等等,基本上看上去 高cpu 和高記憶體的模組 都要剝離出來

4前後端模型風格一致和c++

為啥nodejs 出現後全堆疊開發就屢屢上頭條呢?,NET 程式設計師寫js的時候怎麼沒人說全堆疊開發呢?

為啥呢?因為,有人絕望了,再加上移動網際網路的普及的加速,在伺服器端生成html後到客戶端渲染已經OUT了

[ps:seo也out了,因為移動端連結不存在了]

so 一群被壓抑很久的身懷js絕技的人,拿著nodejs神器,在短短4年時間,幾乎攻下了web開發的各個角落,從未有一門語言在4年時間內取得如此成績.c#用了10年 才勉強取代了自己的大哥asp的市場份額,可見nodejs是多nb

[ps:隨著我國人口老齡化,新生人口減少,用人成本提高,不同分工的溝通成本將會年年上升]

全堆疊的nodejs 和宇宙效率最高的.NET 技術股票值得長期持有,尤其是要創業的各位夥伴們

微博桌面截圖_20140208211801

一直都想看看c++ 但是,NET這個大而全的平臺上一般遇不到啥問題需要用c++解決,

最起碼nodejs 遞迴程式得用c++寫

nodejs 就不一樣,有一堆問題需要,所以過年就順便看看了c++,整體感覺c++沒有剛上大學時候在圖書館裡面看的那麼難了微笑.

感覺c++理論上也入門了 就剩下寫nodejs 時候謝謝c++練手了微笑

這也說明學習.NET 是快速進步的途徑,想學啥就學啥,我效率高,我怕啥,

5如何學習nodejs web開發?

根據我多年學習經驗

快速學習web開發的渠道 最快的是

抓取資料->整理資料->展示資料->程式優化 

題目選好了說不定還能掛點廣告把伺服器錢掙回來呢

so lets go O(∩_∩)O~

                                                                                                                有時間 再弄個nodejs版本的

相關推薦

過年7nodejs 快樂

自從上次接觸nodejs 已經好長時間了,但是年底公司太忙了 ,沒時間看, 過年回家,家裡沒網,作為一個戰鬥型屌絲,自然不能錯過如此學習機會,於是買了兩本書 一本《深入淺出nodejs》一本《寫給大家看的c++》 看完nodejs 有點感覺,是移動網際網路時代不錯的技術選型,相信,5年後nodejs在

聽聽段子吹吹牛皮C就這麼簡單

今天就跟大家吹吹牛。有人說學C難,我也不知道他們是怎麼學的,學c其實也很簡單,一節課,聽聽故事,吹吹牛皮,學得輕鬆,也學得有趣。有很多人跟我吐槽,怎麼了吹牛皮就學好了呢,老師,C語言從入門到放棄啊。 “多年老司機,邀請你們請上最後一班,末班車”,來上車嘛 我是七月,面熟一下,好久沒分享了,最近事

微信改版710倍流量增長和困頓的創作者

感覺 推薦 之前 保留 alt 一定的 姓名 及其 超級 作為一款月活用戶達到10.82億的超級 App,微信的每一個改動都很難避免牽一發而動全身的蝴蝶效應。 這次7.0改版中關於“看一看”邏輯的改動,便因涉及到了“內容分發機制”的重新定義,影響著建立在微信之上的這個龐大內

預告發出7紅米正式單飛。

擺脫追求極致價效比的形象負累,進一步開拓中高階市場,小米將紅米分拆或為當下最優選。   預告發出7天后,紅米正式單飛。   1月10日,小米集團舉行全新獨立品牌紅米Redmi釋出會,同時新品紅米Note 7如約亮相。   這是紅米作為Redmi的首度亮相。與Redmi同受巨大關注的是剛剛收穫小米官宣

完這些能做出微信嗎?國慶節7不知道能否擼出來一個我要試試!!!---酷課堂iOS交流群問答整理(201809期)

新書即將上市: 這兩天收到出版社的樣書,預計這兩週將陸續開始上架,感興趣的小夥伴,到時可在天貓、噹噹、京東搜尋“李發展”即可找到。 本書內容簡介和適合人群: 本書包含Swift 4.0語言、Cocoa Touch、檢視控制器、控制元件、表格、網路、地圖、音訊、視

mysql如何出查出最近7最近30最近n的記錄?

所有 說了 group by created value 分享 mage blog ifnull 已查詢瀏覽量為例:原始數據如下: 思路分析:數據有了,統計某一天的瀏覽量,所有瀏覽量,或固定時間段內的瀏覽量在這裏我們就不多說了,大家都會,那我們是如何將最近七天的數據統

SQL語句來查詢今天、昨天、7內、30的數據經典!

diff 指定 first 內容 輸出 har edi time nth ---恢復內容開始--- 今天的所有數據:select * from 表名 where DateDiff(dd,datetime類型字段,getdate())=0 昨天的所有數據:select *

按照日期查詢最近7一個月功能

spa color get class cnblogs gte else 日期查詢 pan      if ("30".equals(date)) { Calendar now = Calendar.getInstance();

[轉]別磨嘰完這篇你是圖像識別專家了

and 擴展 函數 概率 好的 tuning 辦公 執行 維護 圖像識別是當今深度學習的主流應用,而Keras是入門最容易、使用最便捷的深度學習框架,所以搞圖像識別,你也得強調速度,不能磨嘰。本文讓你在最短時間內突破五個流行網絡結構,迅速達到圖像識別技術前沿。 作者 |

歷時 7 我把一萬行 Scala 程式碼移植到了 Kotlin 上!

【CSDN編者按】去年,Google 宣佈 Kotlin 正式成為 Android 官方開發語言,由此引發了遷移 Kotlin 的一股熱潮。在本文中,作者分享了他在七天內把程式碼從 Scala 移植到 Kotlin 的經過,以及從中吸取的經驗教訓。 以下為譯文:

爬蟲的日誌只存7的日誌

如果爬蟲在伺服器中持續執行,那麼日誌都會寫入到一個檔案中,這樣不方便管理日誌 custom_settings = { 'DEFAULT_REQUEST_HEADERS': { 'User-Agent': 'Mozilla/5.0

SQL日期查詢-SQL查詢今天、昨天、7內、30

近期程式開發中,需要對時間進行比較,此時需要用到SQL的時間查詢系列功能,綜合整理資料如下: 今天的所有資料:select * from 表名 where DateDiff(dd,datetime型別欄位,getdate())=0 昨天的所有資料:select * from&nbs

一起來大資料|Spring的事務管理一分錢不能少

  之前我們講過spring是一站式框架,我們已經學習了spring框架簡單的資料操作。今天我們一起來看看spring針對dao層提供的解決技術jdbcTemplate。我們直接以銀行轉賬為例,完成我們資料庫的連線和事務管理。 JdbcTemplate 1、準備工作

運維大師講堂7從入門到進階

運維大師講堂,7天從入門到進階 想做運維,如何入門毫無頭緒? 選取工具和平臺,不清楚每款產品的功用? 面對複雜場景,怎樣結合日誌、指標及儀表盤等各種資料分析定位? 雲端計算時代,隨著企業對資訊系統的依賴性增強,雲上應用的規模與複雜度日趨增長,系統架構複雜、耦合度明顯增大,高併發流量對系統

21搞定Python分佈爬蟲零基礎不怕

本課程完全從零基礎出發,只要你有一點 Python 基礎就可以聽懂本課程!  課程從基礎到高階,讓你 21 天破繭成蝶成為高階爬蟲工程師!  適用人群:  1、有 Python 基礎,想學習爬蟲的。  2、想系統學習網路爬蟲的。  3、想學習分散式爬蟲的。 

了兩 react亂講一下學習思路順便弄了一個腳手架

之前一直用 vue 做一些小專案,最近接觸了一個專案是用 react 做前端,雖然本身是做後端開發的,但是前端還是要了解一點的。 現在的專案基本上都是前後端分離的,後端就先不提了。前端的框架也是層出不窮,使用最多的就是 angular、vue、react 。angular 是前幾年用的比較多,最近好像用的

在oracle中如何當前系統時間往前推7

1 select sysdate - interval '7' day from dual 2 3 另附: 4 當前時間減去7分鐘的時間 5 select sysdate,sysdate - interval '7' MINUTE from dual 6 當前時間減去7小時的時間

10100小時資料科學我推薦你這樣

【伯樂線上導讀】:有位網友在 Quora 提問,並補充說「我有10天空閒時間,每天想花十個小時學習資料科學入門知識,應該學點什麼呢?謝謝」伯樂線上摘編了 Roman Trusov 的回覆,非常值得新手參考。 哥們我太羨慕你了,不是誰都有像你這樣的機會的。 10天100小時的學

娛教於!四大遊戲類編程網站Python再也不枯燥無味了

前言 java 玩遊戲 war sta http 技術 lua stat 前言 學習編程雖然對有些人來說是件樂事,但是對大多數人來說仍然是一件比較枯燥困難的事情。當然,面臨這樣困惑的人,並不是只有你一個,所以,這世界上就出現了許多寓教於樂的通過遊戲的形式來教你編程的網站。讓