以我就說(shuō)只會(huì) JavaScript 啊 Java EE 啊 PHP 的就不要冒充程序員了……

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