以我就說只會 JavaScript 啊 Java EE 啊 PHP 的就不要冒充程序員了……
創(chuàng)新互聯(lián)公司是一家集網站建設,尤溪企業(yè)網站建設,尤溪品牌網站建設,網站定制,尤溪網站建設報價,網絡營銷,網絡優(yōu)化,尤溪網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。
先看看 Go 的 net 包和 net/http 包?;?net 包里相對低級的接口,用 TCP 寫基本的 C/S 通信程序。如果需要權威參考書,Unix Network Programming 是唯一正確的選擇。另有 Beej‘s Guide to Network Programming 方便入門。
之后去看 rfc1945 實現基本的 HTTP/1.0。再之后開始實現 HTTP/1.1 的各種細節(jié)的時候才需要 http 權威指南吧。
從2013年起,經朋友推薦開始用Golang編寫游戲登陸服務器, 配合C++做第三方平臺驗證. 到編寫獨立工具導表工具GitHub - davyxu/tabtoy: 跨平臺的高性能便捷電子表格導出器. 以及網絡庫GitHub - davyxu/cellnet: 簡單,方便,高效的Go語言的游戲服務器底層. 最終使用這些工具及庫編寫整個游戲服務器框架, 我的感受是很不錯的
細節(jié)看來, 有如下的幾個點:
語言, 庫
Golang語言特性和C很像, 簡單, 一張A4紙就能寫完所有特性. 你想想看, C++到了領悟階段, 也只用那幾個簡單特性, 剩下的都是一大堆解決各種內存問題的技巧. 而Golang一開始就簡單, 何必浪費生命去研究那一大堆的奇技淫巧呢?
Golang的坑只有2個:1. interface{}和nil配合使用, 2. for循環(huán)時, 將循環(huán)變量引入閉包(Golang, Lua, C#閉包變量捕獲差異) 完全不影響正常使用, 復合語言概念, 只是看官方后面怎么有效的避免
用Golang就忘記繼承那套東西, 用組合+接口
用Golang服務器如何保證解決游戲服務器存盤一致性問題? stop the world是肯定的, 但是Golang可以從語言層并發(fā)序列化玩家數據, 再通過后臺存盤
channel是goroutine雖然是Golang的語言特性. 但是在編寫服務器時, 其實只有底層用的比較多.
Golang的第三方庫簡直多如牛毛, 好的也很多
不要說模板了, C#的也不好用, 官方在糾結也不要加, 使用中, 沒模板確實有點不方便. 用interface{}/反射做泛型對于Golang這種強類型語言來說,還是有點打臉
運行期
Golang和C++比性能的話, 這是C++的優(yōu)勢, Golang因為沒虛擬機, 只有薄薄的一層調度層. 因此性能是非常高的, 用一點性能犧牲換開發(fā)效率, 妥妥的
1.6版后的GC優(yōu)化的已經很好了, 如果你不是高性能,高并發(fā)Web應用, 非要找出一堆的優(yōu)化技巧的話. 只用Golang寫點游戲服務器, 那點GC損耗可以忽略不計
和其他現代語言一樣, 崩潰捕捉是標配功能, 我用Golang的服務器線上跑, 基本沒碰到過崩潰情況
熱更新: 官方已經有plugin系統(tǒng)的提交, 跨平臺的. 估計很快就可以告別手動cgo做so熱更新
開發(fā), 調試, 部署, 優(yōu)化
LiteIDE是我首選的Golang的IDE, 雖然有童鞋說B格不高. 但這估計實在是找不到缺點說了, 別跟我說Visual Studio, 那是宇宙級的...
曾經聽說有人不看好Golang, 我問為啥: 說這么新的語言, 不好招人,后面打聽到他是個策劃... 好吧
真實情況是這樣的: Golang對于有點編程基礎的新人來說, 1周左右可以開始貢獻代碼. 老司機2~3天.
開發(fā)效率還是不錯的, 一般大的游戲功能, 2*2人一周3~4個整完. 這換C++時代, 大概也就1~2個還寫不完. 對接服務器sdk的話, 大概1天接個10多個沒問題
Golang自帶性能調優(yōu)工具, 從內存, CPU, 阻塞點等幾個方面直接出圖進行分析, 非常直觀, 可以參考我博客幾年前的分析: 使用Golang進行性能分析(Profiling)
Golang支持交叉編譯, 跨平臺部署, 什么概念? linux是吧? 不問你什么版本, 直接windows上編譯輸出一個elf, 甩到服務器上開跑.不超過1分鐘時間..
go語言之所以能成為我國最火的語言,是因為編寫服務端高并發(fā)程序的優(yōu)勢。我大中華區(qū)但凡pv,日活高點的網站,應用,誰沒點這個需求。這個領域中最優(yōu)的幾個:golang,erlang,rust。日常生活中人類社交是當今社會上的必然性,人們也伴隨著科技時代的發(fā)展,智能電子產品的使用中也必然少不了語言輸入,文字的編輯,語言轉換的便利都均可來源于go語音輸入法。
國內大學本科教育,哪個學校不以c/c++為入門教學語言。都十幾年了,譚浩強還在大賣。語法相近的語言總是學習和使用成本最低的。這一點非常重要。coursera上有一門程序設計語言理論課上,開篇就闡述了這一點的重要性。假設go的入門成本是一個月,erlang的入門成本是2個月,那么整個程序員群體在學習后者的付出成本就很可觀了。
google由于眾所周知的原因,在國內程序員中不一般的地位。golang有個好背景。
go語言之前一直都沒有接受待見,如今廣大的群眾開始接待,因為騰訊服務器段代碼編譯是支持go語言的
go語言會成為主流也是一個問題,
多慮了,沒有競爭來關系。
雖然go成為源了世界上最并發(fā)的語言,這并不妨礙php成為世界上最好的語言,
也不妨礙java成為世界上最有模式的語言,
更不會妨礙c++成為21天就能學會了的語言。為什么Go語言如此不受待見
其實并沒有不受待見,用的人還是很多的,解決一些特定領域的問題也很方便。
每種語言的流行程度主要取決于這個語言最著名的killerapp的流行程度,C有Linux,Go有Docker。
GO語言雖然不如Java、Python等語言火熱,但在云計算、云存儲時代卻是最重要的基礎編程語言。作為服務器編程語言,很適合處理日志、數據打包、虛擬機處理、文件系統(tǒng)、分布式系統(tǒng)、數據庫代理等。在國外,Google、Facebook等公司在使用,國內除了BAT外,京東、小米、360公司也在涉獵。所以GO語言的發(fā)展前景還是很值得期待。