go語(yǔ)言編寫(xiě)即時(shí)通訊的簡(jiǎn)單介紹

「測(cè)試開(kāi)發(fā)全棧化-Go」(1) Go語(yǔ)言基本了解

作為一個(gè)測(cè)試,作為一個(gè)測(cè)試開(kāi)發(fā), 全棧化+管理 是我們未來(lái)的發(fā)展方向。已經(jīng)掌握了Java、Python、HTML的你,是不是也想了解下最近異?;鸨腉o語(yǔ)言呢?來(lái)吧,讓我們一起了解下。

巴州網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),巴州網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為巴州上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的巴州做網(wǎng)站的公司定做!

Go 是一個(gè)開(kāi)源的編程語(yǔ)言 ,它能讓構(gòu)造簡(jiǎn)單、可靠且高效的軟件變得容易。

Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開(kāi)發(fā),后來(lái)還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開(kāi)源,在2012年早些時(shí)候發(fā)布了Go 1穩(wěn)定版本。現(xiàn)在Go的開(kāi)發(fā)已經(jīng)是完全開(kāi)放的,并且擁有一個(gè)活躍的社區(qū)。這三個(gè)人都是計(jì)算機(jī)界的大神,有的參與了C語(yǔ)言的編寫(xiě),有的還是數(shù)學(xué)大神,有的還獲得了計(jì)算機(jī)最高榮譽(yù)-圖靈獎(jiǎng)。

接下來(lái)說(shuō)說(shuō) Go語(yǔ)言的特色 :

簡(jiǎn)潔、快速、安全

并行、有趣、開(kāi)源

內(nèi)存管理、數(shù)組安全、編譯迅速

Go語(yǔ)言的用途 :

Go 語(yǔ)言被設(shè)計(jì)成一門(mén)應(yīng)用于搭載 Web 服務(wù)器,存儲(chǔ)集群或類似用途的巨型中央服務(wù)器的系統(tǒng)編程語(yǔ)言。

對(duì)于高性能分布式系統(tǒng)領(lǐng)域而言,Go 語(yǔ)言無(wú)疑比大多數(shù)其它語(yǔ)言有著更高的開(kāi)發(fā)效率。它提供了海量并行的支持,這對(duì)于 游戲 服務(wù)端的開(kāi)發(fā)而言是再好不過(guò)了。

Go語(yǔ)言的環(huán)境安裝:

建議直接打開(kāi) 官方地址因?yàn)閴Φ脑虼虿婚_(kāi)

因?yàn)槲矣玫氖莣indows系統(tǒng),這里主要講下Windows系統(tǒng)上使用Go語(yǔ)言來(lái)編程。

Windows 下可以使用 .msi 后綴(在下載列表中可以找到該文件,如go1.17.2.windows-amd64.msi)的安裝包來(lái)安裝。

默認(rèn)情況下 .msi 文件會(huì)安裝在 c:Go 目錄下。你可以將 c:Gobin 目錄添加到 Path 環(huán)境變量中。添加后你需要重啟命令窗口才能生效。個(gè)人建議還是安裝到 Program Files文件夾中。

使用什么開(kāi)發(fā)工具來(lái)對(duì)Go語(yǔ)言進(jìn)行編寫(xiě):

個(gè)人建議用VS code, 也可以用Sublime Text來(lái)編輯。如果你之前看了我講的HTML語(yǔ)言的學(xué)習(xí),肯定已經(jīng)下載了VS code. 那么這時(shí)你需要在VS code中下載Go語(yǔ)言的擴(kuò)展插件。

這里有一個(gè)巨大的坑,就是在下載Go的插件和依賴包時(shí),會(huì)提示一些包沒(méi)有。主要是因?yàn)橄螺d的依賴包部分被墻了,只能想別的辦法去下載。

建議參考網(wǎng)頁(yè):

解決vscode中g(shù)olang插件安裝失敗方法

在學(xué)習(xí)go的過(guò)程中,使用的是vscode,但是一直提示安裝相關(guān)插件失敗,然后上網(wǎng)查方法,基本上是叫你建立golang.org目錄什么的,結(jié)果全是錯(cuò)的,而且都是抄襲,很煩。無(wú)意之中看到一位博主分享的方法,他也是飽受上述的垃圾博文困擾,然后找到了解決方法,這里向他致敬,秉著讓更多人看到正確解決方法的心,我寫(xiě)下正確的解決方法,希望對(duì)你有所幫助,也可以點(diǎn)開(kāi)原博主鏈接參考:

Go有一個(gè)全球模塊代理,設(shè)置代理再去安裝golang的插件,就可以安裝成功了。步驟有,首先Windows用戶打開(kāi)Powershell,一個(gè)藍(lán)色的界面,注意不是cmd!不知道的直接打開(kāi)window下面的搜索,然后輸入powershell,搜索出來(lái)就可以了。

$env:GO111MODULE=“on”

$env:GOPROXY=“”

go env -w GOPROXY=

go env -w GOPRIVATE=*.corp.example.com

然后我們打開(kāi)VsCode界面,下面會(huì)提示安裝插件,我們選擇Install ALL,就會(huì)安裝成功

當(dāng)你在運(yùn)行Go語(yǔ)言程序時(shí),提示所有的插件包都已經(jīng)安裝成功了時(shí),就可以正常使用了,要不然一堆報(bào)錯(cuò)會(huì)讓你非常心煩。

好了,今天先到這里,晚安、下班~

Go語(yǔ)言的跨平臺(tái)能力到底有多強(qiáng)?看完你就知道了

對(duì)比于其他語(yǔ)言的程序,Go語(yǔ)言的跨平臺(tái)能力是真的強(qiáng),拿.Net和JAVA來(lái)說(shuō)吧,.Net在.Net core出現(xiàn)之前是不能跨平臺(tái)的,只能在windows上編譯運(yùn)行,即使是.net core出現(xiàn)以后,跨平臺(tái)的程序也是相當(dāng)?shù)穆闊?。而java雖然一直都可以跨平臺(tái),但是運(yùn)行JAVA程序的機(jī)器上也必須要有JAVA程序運(yùn)行環(huán)境JRE。而相對(duì)于Go程序,跨平臺(tái)就簡(jiǎn)單的多了,只需要在編譯指定目標(biāo)程序運(yùn)行的架構(gòu)和環(huán)境即可編譯出指定操作系統(tǒng)和架構(gòu)的程序。

以上是指定了go的環(huán)境變量后執(zhí)行的go build命令進(jìn)行目標(biāo)程序的構(gòu)建,這種方式會(huì)一直生效的,如果不讓他一直生效,可以在構(gòu)建的時(shí)候臨時(shí)指定環(huán)境變量,下面以window的環(huán)境為例,來(lái)介紹臨時(shí)指定環(huán)境變量的方式構(gòu)建可以在Linux環(huán)境下運(yùn)行的可執(zhí)行程序:

可以根據(jù)不同的架構(gòu)和操作系統(tǒng)將其編寫(xiě)為不同的.bat的可執(zhí)行文件放置在程序的根目錄,Linux的和MAC的也一樣編寫(xiě)成腳本文件放置在程序的根目錄,這樣在構(gòu)建的時(shí)候就不用再敲命令了,直接運(yùn)行腳本就可以了。

Java程序編譯打包后為war包或者是java包,必須執(zhí)行java -jar 命令或者將其放置到tomcat的指定目錄下,運(yùn)行tomcat程序。而Go語(yǔ)言編寫(xiě)的程序最終為可執(zhí)行的文件(window下編譯出的是.exe的可執(zhí)行文件),只需要將其賦予可執(zhí)行的權(quán)限就可以直接運(yùn)行了。

構(gòu)建JAVA程序的鏡像需要指定java的基礎(chǔ)鏡像,否則就需要在鏡像中安裝java的運(yùn)行環(huán)境了,下面展示的是構(gòu)建的一個(gè)JAVA程序的鏡像,構(gòu)建出來(lái)鏡像的體積相對(duì)比較大

而Go程序制作出的鏡像就不需要安裝任何的依賴環(huán)境,因?yàn)樗诖虬臅r(shí)候就已經(jīng)將依賴的包一塊打包到一起了

拿著這個(gè)鏡像就可以到處運(yùn)行了。

通過(guò)對(duì)比我們可以發(fā)現(xiàn),如果沒(méi)有之前的技術(shù)和業(yè)務(wù)的積累,重新開(kāi)發(fā)一個(gè)新的項(xiàng)目,使用go去開(kāi)發(fā)無(wú)疑是最容易上手的,所以現(xiàn)在很多公司都使用go進(jìn)行開(kāi)發(fā),也逐漸將其他語(yǔ)言的項(xiàng)目逐步的用go語(yǔ)言進(jìn)行改造。其實(shí)用什么語(yǔ)言不重要,合適的才重要,開(kāi)發(fā)項(xiàng)目在選擇語(yǔ)言的時(shí)候也會(huì)綜合多方面來(lái)考慮選擇合適的語(yǔ)言和架構(gòu),畢竟很多公司都不是搞研究的,都需要項(xiàng)目來(lái)賺錢(qián),所以開(kāi)發(fā)的速度、客戶的滿意度、項(xiàng)目交付的時(shí)間才是驅(qū)動(dòng)公司技術(shù)的主要因素。

我們個(gè)人也應(yīng)該不斷完善自己的技術(shù)棧,不應(yīng)該太依靠某種語(yǔ)言,最重要的還是自己的架構(gòu)思想和底層架構(gòu)知識(shí),只有掌握了這些才能夠不被 社會(huì) 和公司“優(yōu)化”。

golang使用Nsq

1. 介紹

最近在研究一些消息中間件,常用的MQ如RabbitMQ,ActiveMQ,Kafka等。NSQ是一個(gè)基于Go語(yǔ)言的分布式實(shí)時(shí)消息平臺(tái),它基于MIT開(kāi)源協(xié)議發(fā)布,由bitly公司開(kāi)源出來(lái)的一款簡(jiǎn)單易用的消息中間件。

官方和第三方還為NSQ開(kāi)發(fā)了眾多客戶端功能庫(kù),如官方提供的基于HTTP的nsqd、Go客戶端go-nsq、Python客戶端pynsq、基于Node.js的JavaScript客戶端nsqjs、異步C客戶端libnsq、Java客戶端nsq-java以及基于各種語(yǔ)言的眾多第三方客戶端功能庫(kù)。

1.1 Features

1). Distributed

NSQ提供了分布式的,去中心化,且沒(méi)有單點(diǎn)故障的拓?fù)浣Y(jié)構(gòu),穩(wěn)定的消息傳輸發(fā)布保障,能夠具有高容錯(cuò)和HA(高可用)特性。

2). Scalable易于擴(kuò)展

NSQ支持水平擴(kuò)展,沒(méi)有中心化的brokers。內(nèi)置的發(fā)現(xiàn)服務(wù)簡(jiǎn)化了在集群中增加節(jié)點(diǎn)。同時(shí)支持pub-sub和load-balanced 的消息分發(fā)。

3). Ops Friendly

NSQ非常容易配置和部署,生來(lái)就綁定了一個(gè)管理界面。二進(jìn)制包沒(méi)有運(yùn)行時(shí)依賴。官方有Docker image。

4.Integrated高度集成

官方的 Go 和 Python庫(kù)都有提供。而且為大多數(shù)語(yǔ)言提供了庫(kù)。

1.2 組件

1.3 拓?fù)浣Y(jié)構(gòu)

NSQ推薦通過(guò)他們相應(yīng)的nsqd實(shí)例使用協(xié)同定位發(fā)布者,這意味著即使面對(duì)網(wǎng)絡(luò)分區(qū),消息也會(huì)被保存在本地,直到它們被一個(gè)消費(fèi)者讀取。更重要的是,發(fā)布者不必去發(fā)現(xiàn)其他的nsqd節(jié)點(diǎn),他們總是可以向本地實(shí)例發(fā)布消息。

NSQ

首先,一個(gè)發(fā)布者向它的本地nsqd發(fā)送消息,要做到這點(diǎn),首先要先打開(kāi)一個(gè)連接,然后發(fā)送一個(gè)包含topic和消息主體的發(fā)布命令,在這種情況下,我們將消息發(fā)布到事件topic上以分散到我們不同的worker中。

事件topic會(huì)復(fù)制這些消息并且在每一個(gè)連接topic的channel上進(jìn)行排隊(duì),在我們的案例中,有三個(gè)channel,它們其中之一作為檔案channel。消費(fèi)者會(huì)獲取這些消息并且上傳到S3。

nsqd

每個(gè)channel的消息都會(huì)進(jìn)行排隊(duì),直到一個(gè)worker把他們消費(fèi),如果此隊(duì)列超出了內(nèi)存限制,消息將會(huì)被寫(xiě)入到磁盤(pán)中。Nsqd節(jié)點(diǎn)首先會(huì)向nsqlookup廣播他們的位置信息,一旦它們注冊(cè)成功,worker將會(huì)從nsqlookup服務(wù)器節(jié)點(diǎn)上發(fā)現(xiàn)所有包含事件topic的nsqd節(jié)點(diǎn)。

nsqlookupd

2. Internals

2.1 消息傳遞擔(dān)保

1)客戶表示已經(jīng)準(zhǔn)備好接收消息

2)NSQ 發(fā)送一條消息,并暫時(shí)將數(shù)據(jù)存儲(chǔ)在本地(在 re-queue 或 timeout)

3)客戶端回復(fù) FIN(結(jié)束)或 REQ(重新排隊(duì))分別指示成功或失敗。如果客戶端沒(méi)有回復(fù), NSQ 會(huì)在設(shè)定的時(shí)間超時(shí),自動(dòng)重新排隊(duì)消息

這確保了消息丟失唯一可能的情況是不正常結(jié)束 nsqd 進(jìn)程。在這種情況下,這是在內(nèi)存中的任何信息(或任何緩沖未刷新到磁盤(pán))都將丟失。

如何防止消息丟失是最重要的,即使是這個(gè)意外情況可以得到緩解。一種解決方案是構(gòu)成冗余 nsqd對(duì)(在不同的主機(jī)上)接收消息的相同部分的副本。因?yàn)槟銓?shí)現(xiàn)的消費(fèi)者是冪等的,以兩倍時(shí)間處理這些消息不會(huì)對(duì)下游造成影響,并使得系統(tǒng)能夠承受任何單一節(jié)點(diǎn)故障而不會(huì)丟失信息。

2.2 簡(jiǎn)化配置和管理

單個(gè) nsqd 實(shí)例被設(shè)計(jì)成可以同時(shí)處理多個(gè)數(shù)據(jù)流。流被稱為“話題”和話題有 1 個(gè)或多個(gè)“通道”。每個(gè)通道都接收到一個(gè)話題中所有消息的拷貝。在實(shí)踐中,一個(gè)通道映射到下行服務(wù)消費(fèi)一個(gè)話題。

在更底的層面,每個(gè) nsqd 有一個(gè)與 nsqlookupd 的長(zhǎng)期 TCP 連接,定期推動(dòng)其狀態(tài)。這個(gè)數(shù)據(jù)被 nsqlookupd 用于給消費(fèi)者通知 nsqd 地址。對(duì)于消費(fèi)者來(lái)說(shuō),一個(gè)暴露的 HTTP /lookup 接口用于輪詢。為話題引入一個(gè)新的消費(fèi)者,只需啟動(dòng)一個(gè)配置了 nsqlookup 實(shí)例地址的 NSQ 客戶端。無(wú)需為添加任何新的消費(fèi)者或生產(chǎn)者更改配置,大大降低了開(kāi)銷和復(fù)雜性。

2.3 消除單點(diǎn)故障

NSQ被設(shè)計(jì)以分布的方式被使用。nsqd 客戶端(通過(guò) TCP )連接到指定話題的所有生產(chǎn)者實(shí)例。沒(méi)有中間人,沒(méi)有消息代理,也沒(méi)有單點(diǎn)故障。

這種拓?fù)浣Y(jié)構(gòu)消除單鏈,聚合,反饋。相反,你的消費(fèi)者直接訪問(wèn)所有生產(chǎn)者。從技術(shù)上講,哪個(gè)客戶端連接到哪個(gè) NSQ 不重要,只要有足夠的消費(fèi)者連接到所有生產(chǎn)者,以滿足大量的消息,保證所有東西最終將被處理。對(duì)于 nsqlookupd,高可用性是通過(guò)運(yùn)行多個(gè)實(shí)例來(lái)實(shí)現(xiàn)。他們不直接相互通信和數(shù)據(jù)被認(rèn)為是最終一致。消費(fèi)者輪詢所有的配置的 nsqlookupd 實(shí)例和合并 response。失敗的,無(wú)法訪問(wèn)的,或以其他方式故障的節(jié)點(diǎn)不會(huì)讓系統(tǒng)陷于停頓。

2.4 效率

對(duì)于數(shù)據(jù)的協(xié)議,通過(guò)推送數(shù)據(jù)到客戶端最大限度地提高性能和吞吐量的,而不是等待客戶端拉數(shù)據(jù)。這個(gè)概念,稱之為 RDY 狀態(tài),基本上是客戶端流量控制的一種形式。

efficiency

2.5 心跳和超時(shí)

組合應(yīng)用級(jí)別的心跳和 RDY 狀態(tài),避免頭阻塞現(xiàn)象,也可能使心跳無(wú)用(即,如果消費(fèi)者是在后面的處理消息流的接收緩沖區(qū)中,操作系統(tǒng)將被填滿,堵心跳)為了保證進(jìn)度,所有的網(wǎng)絡(luò) IO 時(shí)間上限勢(shì)必與配置的心跳間隔相關(guān)聯(lián)。這意味著,你可以從字面上拔掉之間的網(wǎng)絡(luò)連接 nsqd 和消費(fèi)者,它會(huì)檢測(cè)并正確處理錯(cuò)誤。當(dāng)檢測(cè)到一個(gè)致命錯(cuò)誤,客戶端連接被強(qiáng)制關(guān)閉。在傳輸中的消息會(huì)超時(shí)而重新排隊(duì)等待傳遞到另一個(gè)消費(fèi)者。最后,錯(cuò)誤會(huì)被記錄并累計(jì)到各種內(nèi)部指標(biāo)。

2.6 分布式

因?yàn)镹SQ沒(méi)有在守護(hù)程序之間共享信息,所以它從一開(kāi)始就是為了分布式操作而生。個(gè)別的機(jī)器可以隨便宕機(jī)隨便啟動(dòng)而不會(huì)影響到系統(tǒng)的其余部分,消息發(fā)布者可以在本地發(fā)布,即使面對(duì)網(wǎng)絡(luò)分區(qū)。

這種“分布式優(yōu)先”的設(shè)計(jì)理念意味著NSQ基本上可以永遠(yuǎn)不斷地?cái)U(kuò)展,需要更高的吞吐量?那就添加更多的nsqd吧。唯一的共享狀態(tài)就是保存在lookup節(jié)點(diǎn)上,甚至它們不需要全局視圖,配置某些nsqd注冊(cè)到某些lookup節(jié)點(diǎn)上這是很簡(jiǎn)單的配置,唯一關(guān)鍵的地方就是消費(fèi)者可以通過(guò)lookup節(jié)點(diǎn)獲取所有完整的節(jié)點(diǎn)集。清晰的故障事件——NSQ在組件內(nèi)建立了一套明確關(guān)于可能導(dǎo)致故障的的故障權(quán)衡機(jī)制,這對(duì)消息傳遞和恢復(fù)都有意義。雖然它們可能不像Kafka系統(tǒng)那樣提供嚴(yán)格的保證級(jí)別,但NSQ簡(jiǎn)單的操作使故障情況非常明顯。

2.7 no replication

不像其他的隊(duì)列組件,NSQ并沒(méi)有提供任何形式的復(fù)制和集群,也正是這點(diǎn)讓它能夠如此簡(jiǎn)單地運(yùn)行,但它確實(shí)對(duì)于一些高保證性高可靠性的消息發(fā)布沒(méi)有足夠的保證。我們可以通過(guò)降低文件同步的時(shí)間來(lái)部分避免,只需通過(guò)一個(gè)標(biāo)志配置,通過(guò)EBS支持我們的隊(duì)列。但是這樣仍然存在一個(gè)消息被發(fā)布后馬上死亡,丟失了有效的寫(xiě)入的情況。

2.8 沒(méi)有嚴(yán)格的順序

雖然Kafka由一個(gè)有序的日志構(gòu)成,但NSQ不是。消息可以在任何時(shí)間以任何順序進(jìn)入隊(duì)列。在我們使用的案例中,這通常沒(méi)有關(guān)系,因?yàn)樗械臄?shù)據(jù)都被加上了時(shí)間戳,但它并不適合需要嚴(yán)格順序的情況。

2.9 無(wú)數(shù)據(jù)重復(fù)刪除功能

NSQ對(duì)于超時(shí)系統(tǒng),它使用了心跳檢測(cè)機(jī)制去測(cè)試消費(fèi)者是否存活還是死亡。很多原因會(huì)導(dǎo)致我們的consumer無(wú)法完成心跳檢測(cè),所以在consumer中必須有一個(gè)單獨(dú)的步驟確保冪等性。

3. 實(shí)踐安裝過(guò)程

本文將nsq集群具體的安裝過(guò)程略去,大家可以自行參考官網(wǎng),比較簡(jiǎn)單。這部分介紹下筆者實(shí)驗(yàn)的拓?fù)洌约皀sqadmin的相關(guān)信息。

3.1 拓?fù)浣Y(jié)構(gòu)

topology

實(shí)驗(yàn)采用3臺(tái)NSQD服務(wù),2臺(tái)LOOKUPD服務(wù)。

采用官方推薦的拓?fù)洌l(fā)布的服務(wù)和NSQD在一臺(tái)主機(jī)。一共5臺(tái)機(jī)器。

NSQ基本沒(méi)有配置文件,配置通過(guò)命令行指定參數(shù)。

主要命令如下:

LOOKUPD命令

NSQD命令

工具類,消費(fèi)后存儲(chǔ)到本地文件。

發(fā)布一條消息

3.2 nsqadmin

對(duì)Streams的詳細(xì)信息進(jìn)行查看,包括NSQD節(jié)點(diǎn),具體的channel,隊(duì)列中的消息數(shù),連接數(shù)等信息。

nsqadmin

channel

列出所有的NSQD節(jié)點(diǎn):

nodes

消息的統(tǒng)計(jì):

msgs

lookup主機(jī)的列表:

hosts

4. 總結(jié)

NSQ基本核心就是簡(jiǎn)單性,是一個(gè)簡(jiǎn)單的隊(duì)列,這意味著它很容易進(jìn)行故障推理和很容易發(fā)現(xiàn)bug。消費(fèi)者可以自行處理故障事件而不會(huì)影響系統(tǒng)剩下的其余部分。

事實(shí)上,簡(jiǎn)單性是我們決定使用NSQ的首要因素,這方便與我們的許多其他軟件一起維護(hù),通過(guò)引入隊(duì)列使我們得到了堪稱完美的表現(xiàn),通過(guò)隊(duì)列甚至讓我們?cè)黾恿藥讉€(gè)數(shù)量級(jí)的吞吐量。越來(lái)越多的consumer需要一套嚴(yán)格可靠性和順序性保障,這已經(jīng)超過(guò)了NSQ提供的簡(jiǎn)單功能。

結(jié)合我們的業(yè)務(wù)系統(tǒng)來(lái)看,對(duì)于我們所需要傳輸?shù)陌l(fā)票消息,相對(duì)比較敏感,無(wú)法容忍某個(gè)nsqd宕機(jī),或者磁盤(pán)無(wú)法使用的情況,該節(jié)點(diǎn)堆積的消息無(wú)法找回。這是我們沒(méi)有選擇該消息中間件的主要原因。簡(jiǎn)單性和可靠性似乎并不能完全滿足。相比Kafka,ops肩負(fù)起更多負(fù)責(zé)的運(yùn)營(yíng)。另一方面,它擁有一個(gè)可復(fù)制的、有序的日志可以提供給我們更好的服務(wù)。但對(duì)于其他適合NSQ的consumer,它為我們服務(wù)的相當(dāng)好,我們期待著繼續(xù)鞏固它的堅(jiān)實(shí)的基礎(chǔ)。

go語(yǔ)言適合做什么

Go語(yǔ)言主要用作服務(wù)器端開(kāi)發(fā)。

其定位是用來(lái)開(kāi)發(fā)“大型軟件”的,適合于需要很多程序員一起開(kāi)發(fā),并且開(kāi)發(fā)周期較長(zhǎng)的大型軟件和支持云計(jì)算的網(wǎng)絡(luò)服務(wù)。

Go語(yǔ)言融合了傳統(tǒng)編譯型語(yǔ)言的高效性和腳本語(yǔ)言的易用性和富于表達(dá)性,不僅提高了項(xiàng)目的開(kāi)發(fā)速度,而且后期維護(hù)起來(lái)也非常輕松。

編譯器

當(dāng)前有兩個(gè)Go編譯器分支,分別為官方編譯器gc和gccgo。官方編譯器在初期使用C寫(xiě)成,后用Go重寫(xiě)從而實(shí)現(xiàn)自舉。Gccgo是一個(gè)使用標(biāo)準(zhǔn)GCC作為后端的Go編譯器。

官方編譯器支持跨平臺(tái)編譯(但不支持CGO),允許將源代碼編譯為可在目標(biāo)系統(tǒng)、架構(gòu)上執(zhí)行的二進(jìn)制文件。

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。日常生活中人類社交是當(dāng)今社會(huì)上的必然性,人們也伴隨著科技時(shí)代的發(fā)展,智能電子產(chǎn)品的使用中也必然少不了語(yǔ)言輸入,文字的編輯,語(yǔ)言轉(zhuǎn)換的便利都均可來(lái)源于go語(yǔ)音輸入法。

網(wǎng)站名稱:go語(yǔ)言編寫(xiě)即時(shí)通訊的簡(jiǎn)單介紹
URL網(wǎng)址:http://muchs.cn/article18/dohcodp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄App設(shè)計(jì)、App開(kāi)發(fā)、面包屑導(dǎo)航云服務(wù)器、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管