日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Go 简介、应用场景

發(fā)布時(shí)間:2024/3/26 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go 简介、应用场景 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Go 簡(jiǎn)介、應(yīng)用場(chǎng)景

一. go語(yǔ)言的優(yōu)勢(shì)

1.并發(fā)性能好

基于goroutine(協(xié)程) 的并發(fā),可以將 goroutine 理解為一種虛擬線程。Go 語(yǔ)言運(yùn)行時(shí)會(huì)參與調(diào)度 goroutine,并將 goroutine 合理地分配到每個(gè) CPU 中,最大限度地使用CPU性能。開啟一個(gè)goroutine的消耗非常小(大約2KB的內(nèi)存),你可以輕松創(chuàng)建數(shù)百萬(wàn)個(gè)goroutine。goroutine的特點(diǎn):

  • goroutine具有可增長(zhǎng)的分段堆棧。這意味著它們只在需要時(shí)才會(huì)使用更多內(nèi)存。
  • goroutine的啟動(dòng)時(shí)間比線程快。
  • goroutine原生支持利用channel安全地進(jìn)行通信。
  • goroutine共享數(shù)據(jù)結(jié)構(gòu)時(shí)無(wú)需使用互斥鎖。
  • 2.性能強(qiáng)悍

    處理器只能理解二進(jìn)制文件,Java和Python這種高級(jí)語(yǔ)言在運(yùn)行的時(shí)候需要先將人類可讀的代碼翻譯成字節(jié)碼,然后由專門的解釋器再轉(zhuǎn)變成處理器可以理解的二進(jìn)制文件。go是編譯型的語(yǔ)言,它直接將人類可讀的代碼編譯成了處理器可以直接運(yùn)行的二進(jìn)制文件,執(zhí)行效率更高,性能更好。

    3. 語(yǔ)法簡(jiǎn)潔

    4.代碼風(fēng)格統(tǒng)一

    Go 語(yǔ)言提供了一套格式化工具——go fmt。一些 Go 語(yǔ)言的開發(fā)環(huán)境或者編輯器在保存時(shí),都會(huì)使用格式化工具進(jìn)行修改代碼的格式化,這樣就保證了不同開發(fā)者提交的代碼都是統(tǒng)一的格式。

    5.開發(fā)效率高

    二. go語(yǔ)言的歷史

    2007年9月,Rob Pike在Google分布式編譯平臺(tái)上進(jìn)行C++編譯,在漫長(zhǎng)的等待過程中,他和Robert Griesemer探討了程序設(shè)計(jì)語(yǔ)言的一些關(guān)鍵性問題,他們認(rèn)為,簡(jiǎn)化編程語(yǔ)言相比于在臃腫的語(yǔ)言上不斷增加新特性,會(huì)是更大的進(jìn)步。隨后他們?cè)诰幾g結(jié)束之前說服了身邊的Ken Thompson,覺得有必要為此做一些事情。幾天后,他們發(fā)起了一個(gè)叫Golang的項(xiàng)目,將它作為自由時(shí)間的實(shí)驗(yàn)項(xiàng)目。

    2008年5月 Google發(fā)現(xiàn)了GO語(yǔ)言的巨大潛力,得到了Google的全力支持,這些人開始全職投入GO語(yǔ)言的設(shè)計(jì)和開發(fā)。

    2009年11月 GO語(yǔ)言第一個(gè)版本發(fā)布。2012年3月 第一個(gè)正式版本Go1.0發(fā)布。

    2015年8月 go1.5發(fā)布,這個(gè)版本被認(rèn)為是歷史性的。完全移除C語(yǔ)言部分,使用GO編譯GO,少量代碼使用匯編實(shí)現(xiàn)。另外,他們請(qǐng)來(lái)了內(nèi)存管理方面的權(quán)威專家Rick Hudson,對(duì)GC進(jìn)行了重新設(shè)計(jì),支持并發(fā)GC,解決了一直以來(lái)廣為詬病的GC時(shí)延(STW)問題。并且在此后的版本中,又對(duì)GC做了更進(jìn)一步的優(yōu)化。到go1.8時(shí),相同業(yè)務(wù)場(chǎng)景下的GC時(shí)延已經(jīng)可以從go1.1的數(shù)秒,控制在1ms以內(nèi)。GC問題的解決,可以說GO語(yǔ)言在服務(wù)端開發(fā)方面,幾乎抹平了所有的弱點(diǎn)。

    在GO語(yǔ)言的版本迭代過程中,語(yǔ)言特性基本上沒有太大的變化,基本上維持在GO1.1的基準(zhǔn)上,并且官方承諾,新版本對(duì)老版本下開發(fā)的代碼完全兼容。事實(shí)上,GO開發(fā)團(tuán)隊(duì)在新增語(yǔ)言特性上顯得非常謹(jǐn)慎,而在穩(wěn)定性、編譯速度、執(zhí)行效率以及GC性能等方面進(jìn)行了持續(xù)不斷的優(yōu)化。

    三.go語(yǔ)言目前的應(yīng)用

    • nsq:bitly開源的消息隊(duì)列系統(tǒng),性能非常高,目前他們每天處理數(shù)十億條的消息
    • docker:基于lxc的一個(gè)虛擬打包工具,能夠?qū)崿F(xiàn)PAAS平臺(tái)的組建。
    • k8s: 當(dāng)下最流行的容器管理工具k8s也是基于go實(shí)現(xiàn)
    • packer:用來(lái)生成不同平臺(tái)的鏡像文件,例如VM、vbox、AWS等,作者是vagrant的作者
    • skynet:分布式調(diào)度框架
    • Doozer:分布式同步工具,類似ZooKeeper
    • Heka:mazila開源的日志處理系統(tǒng)
    • cbfs:couchbase開源的分布式文件系統(tǒng)
    • tsuru:開源的PAAS平臺(tái),和SAE實(shí)現(xiàn)的功能一模一樣
    • groupcache:memcahe作者寫的用于Google下載系統(tǒng)的緩存系統(tǒng)
    • god:類似redis的緩存系統(tǒng),但是支持分布式和擴(kuò)展性
    • gor:網(wǎng)絡(luò)流量抓包和重放工具

    四.Go適合用來(lái)做什么

    • 服務(wù)器編程,以前你如果使用C或者C++做的那些事情,用Go來(lái)做很合適,例如處理日志、數(shù)據(jù)打包、虛擬機(jī)處理、文件系統(tǒng)等。
    • 分布式系統(tǒng),數(shù)據(jù)庫(kù)代理器等
    • 網(wǎng)絡(luò)編程,這一塊目前應(yīng)用最廣,包括Web應(yīng)用、API應(yīng)用、下載應(yīng)用、
    • 內(nèi)存數(shù)據(jù)庫(kù),前一段時(shí)間google開發(fā)的groupcache,couchbase的部分組建
    • 云平臺(tái),目前國(guó)外很多云平臺(tái)在采用Go開發(fā),CloudFoundy的部分組建,前VMare的技術(shù)總監(jiān)自己出來(lái)搞的apcera云平臺(tái)

    總結(jié)

    以上是生活随笔為你收集整理的Go 简介、应用场景的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。