色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

大學期間是否有必要學習一下Go語言?

錢衛國2年前15瀏覽0評論

什么是Go?

Go語言是谷歌2009發布的第二款開源編程語言。

Go語言專門針對多處理器系統應用程序的編程進行了優化,使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持并行進程。不僅可以開發web,可以開發底層,目前知乎就是用golang開發。區塊鏈首選語言就是go,以太坊,超級賬本都是基于go語言,還有go語言版本的btcd.

Go的目標是希望提升現有編程語言對程序庫等依賴性(dependency)的管理,這些軟件元素會被應用程序反復調用。由于存在并行編程模式,因此這一語言也被設計用來解決多處理器的任務。

Google對Go寄予厚望。其設計是讓軟件充分發揮多核心處理器同步多工的優點,并可解決面向對象程序設計的麻煩。它具有現代的程序語言特色,如垃圾回收,幫助程序設計師處理瑣碎但重要的內存管理問題。Go的速度也非常快,幾乎和C或C++程序一樣快,且能夠快速制作程序。

Go的網站就是用Go所建立,但Google有更大的野心。該軟件是專為構建服務器軟件所設計(如Google的Gmail)。Google認為Go還可應用到其他領域,包括在瀏覽器內執行軟件,取代JavaScript的角色。

為什么要學習GO語言,GO的優勢是什么?

1、Go有什么優勢

Go的優勢

1:性能

2:語言性能很重要

3:開發者效率&不要過于創新

4:并發性&通道

5:快速的編譯時間

6:打造團隊的能力

7:強大的生態系統

8:GOFMT,強制代碼格式

9:gRPC和ProtocolBuffers

可直接編譯成機器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個文件上去就完成了。

靜態類型語言,但是有動態語言的感覺,靜態類型的語言就是可以在編譯的時候檢查出來隱藏的大多數問題,動態語言的感覺就是有很多的包可以使用,寫起來的效率很高。

語言層面支持并發,這個就是Go最大的特色,天生的支持并發,我曾經說過一句話,天生的基因和整容是有區別的,大家一樣美麗,但是你喜歡整容的還是天生基因的美麗呢?Go就是基因里面支持的并發,可以充分的利用多核,很容易的使用并發。

內置runtime,支持垃圾回收,這屬于動態語言的特性之一吧,雖然目前來說GC不算完美,但是足以應付我們所能遇到的大多數情況,特別是Go1.1之后的GC。

簡單易學,Go語言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go關鍵字是25個,但是表達能力很強大,幾乎支持大多數你在其他語言見過的特性:繼承、重載、對象等。

豐富的標準庫,Go目前已經內置了大量的庫,特別是網絡庫非常強大,我最愛的也是這部分。

內置強大的工具,Go語言里面內置了很多工具鏈,最好的應該是gofmt工具,自動化格式化代碼,能夠讓團隊review變得如此的簡單,代碼格式一模一樣,想不一樣都很困難。

跨平臺編譯,如果你寫的Go代碼不包含cgo,那么就可以做到window系統編譯linux的應用,如何做到的呢?Go引用了plan9的代碼,這就是不依賴系統的信息。

內嵌C支持,前面說了作者是C的作者,所以Go里面也可以直接包含c代碼,利用現有的豐富的C庫。

2、Go適合用來做什么

服務器編程,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日志、數據打包、虛擬機處理、文件系統等。

分布式系統,數據庫代理器等

網絡編程,這一塊目前應用最廣,包括Web應用、API應用、下載應用、

內存數據庫,前一段時間google開發的groupcache,couchbase的部分組建

云平臺,目前國外很多云平臺在采用Go開發,CloudFoundy的部分組建,前VMare的技術總監自己出來搞的apcera云平臺。

3、Go成功的項目

nsq:bitly開源的消息隊列系統,性能非常高,目前他們每天處理數十億條的消息

docker:基于lxc的一個虛擬打包工具,能夠實現PAAS平臺的組建。

packer:用來生成不同平臺的鏡像文件,例如VM、vbox、AWS等,作者是vagrant的作者

skynet:分布式調度框架

Doozer:分布式同步工具,類似ZooKeeper

Heka:mazila開源的日志處理系統

cbfs:couchbase開源的分布式文件系統

tsuru:開源的PAAS平臺,和SAE實現的功能一模一樣

groupcache:memcahe作者寫的用于Google下載系統的緩存系統

god:類似redis的緩存系統,但是支持分布式和擴展性

gor:網絡流量抓包和重放工具

下面列出來了一些使用的用戶

GoUsers-go-wiki-AlistoforganizationsthatuseGo.

4、Go還存在的缺點

以下缺點是我自己在項目開發中遇到的一些問題:

Go的import包不支持版本,有時候升級容易導致項目不可運行,所以需要自己控制相應的版本信息

Go的goroutine一旦啟動之后,不同的goroutine之間切換不是受程序控制,runtime調度的時候,需要嚴謹的邏輯,不然goroutine休眠,過一段時間邏輯結束了,突然冒出來又執行了,會導致邏輯出錯等情況。

GC延遲有點大,我開發的日志系統傷過一次,同時并發很大的情況下,處理很大的日志,GC沒有那么快,內存回收不給力,后來經過profile程序改進之后得到了改善。

pkg下面的圖片處理庫很多bug,還是使用成熟產品好,調用這些成熟庫imagemagick的接口比較靠譜

最后還是建議大家學習Go,這門語言真的值得大家好好學習,因為它可以做從底層到前端的任何工作。