這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
1:背景簡介
我是一個.net一線開發,今年6月份離開帝都來到魔都,後入職於莫江互連網線上教育公司。現剛剛轉正,在這短短的三個月的時間,莫江給我的是職業路上顛覆性變化。
.net技術迷 => nodejs/java/golang
在此之前,我認為我會在.net平台堅定不移的走下,因為我是如此的喜歡C#語言,認為它是那麼優美簡介,vs ide號稱宇宙神器,coding如此happy,but 當我們每周技術討論例會上,我才真正的認識到我自己原來就是井底之蛙
2:C#和其他我所接觸的語言對比
網上關於C#和java的大戰從未停止,我也經常想起大約6年前我上大學的時候,某些無良的培訓機構去我們系招人的時候,大量的貶低C#的時候,我在據理力爭。然而時間在變,以我這3月多月接觸其他語言的同時,也在反思,c#/.net真的有如此之好嗎?
以下僅代表個人觀點,如有不對歡迎來噴。
C#的優勢: 神一般的IDE,大量的文法糖,強型別語言支援var聲明,良好的錯誤輸出和debug,天生的windows平台支援,相容性良好的第三方或微軟架構,代碼提示、跳轉、可閱讀...
劣勢:開源架構太少,跨平台費勁,文法冗餘,依賴.net framework,執行效率堪憂
3:淺談java
java語言本身和C#語言80%類型,學起來很輕鬆,可真的去寫java代碼的時候,就會感覺完全從天堂掉進了地獄。
ide難用,不管是eclipse 還是 IntelliJ IDEA ,太痛苦了
代碼提示功能能用,但不強大,調試功能一般,寫屬性不習慣,沒有C#文法糖,依賴jvm
這些都不足以讓人感覺在地獄行走,最難的是。。。。 使用架構。 由於是自學,沒人教,視頻、貼吧、blog 跟著別人做依然搞不通,架構太多,相容性卻不怎麼好。一度懷疑自己懷疑人生
可是雖然java的架構我不會配置,但我不會否定,java就是那麼牛逼,只是我笨,不會用,如山如海的開源項目,讓任何一個.net程式員目瞪口呆。
4:再試nodejs
nodejs呢也是在我們架構會上才知道的(以前的知識面好淺薄。。。),不看不知道,一看嚇一跳啊,沒想到JavaScript語言也能做後端了,還可以達到這麼高的並發。ok then 學習之~
nodejs學習簡單(web開發人員都會把~),配置簡單(npm),依賴少,架構非常非常多,編寫web伺服器簡單,執行效率不錯,高並發處理很好...
最直觀的,搞一個web網站,秒刷有木有,按著F5不放刷刷的有木有。好吧原諒我沒見過世面,和asp.net 對比一下,覺得弱爆了有木有,不需要經過asp.net管道,不需要asp.net頁面生命週期,不需要mvc控制流程程。。。不需要,所有都自己寫,想怎麼寫怎麼寫
非同步回調,單線程處理,很吊很新穎。缺點也很明顯,同步執行困難,代碼檢錯麻煩,調試不友好,單線程,做cpu運算可能會造成非同步無法回調...
5:go go
學習golang語言是如此的痛苦,類C的文法,不完全的物件導向,每次要檢查的錯誤機制,指標(進階語言裡面沒有用過),環境配置死麻煩,初學很難理解文法。。。
我曾發過一句牢騷,寫半個小時的golang簡直比寫一上午的C#都累
然而並不能打消我的激情,因為它的優勢太明顯了, 比C文法簡單卻有堪比C的效能,去除了物件導向複雜的文法和限制,使用指標可以根據自己需要操作記憶體或引用,優美的協程,不需要鎖...
6:再囉嗦
寫了這麼多,或許有很多地方是不對的是片面的,我也會慢慢完善自己
7;為什麼是rabbitmq
最近準備開發一個訊息型項目,預計的是一天的訊息量達到百萬層級,近即時的到達率,最後確定下來確定為採用rabbitmq做訊息中轉,確保api到sql層資料並發量控制以及防丟失。 本來說打算用windows server來做,可是呢windows server有個缺陷卻無法處理,就是它會假死,而且很難去監控,so 我想能不能這層使用golang 來寫服務。 結果技術評審下來,因有較大的風險,暫時不採用,可以做一個輔助進程來跑。 我也希望我手裡的現有項目能使用go來處理,比如apppush
這些項目都是用的rabbitmq做訊息分發,之前的分發用戶端是用C#寫的,那個人已經離職,所以我決定用go寫一個
8:時間
因沒有用過rabbitmq,也不知道會有什麼的結果,花多少精力。因非工作內容,也不會佔用工作的時間,so 完成時間也是不確定的。部落格園我應該是一周回更新一次或兩次進度,僅做為此次行程的記錄
9:目標
我希望我寫完的項目,能提供一套完整的穩定的rabbitmq 調度系統的 golang驅動
begin!~~~~~