日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)GO教程:Go語(yǔ)言的特性有哪些?

Go語(yǔ)言也稱為 Golang,是由 Google 公司開(kāi)發(fā)的一種靜態(tài)強(qiáng)類型、編譯型、并發(fā)型、并具有垃圾回收功能的編程語(yǔ)言。

萊西網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

接下來(lái)從幾個(gè)方面來(lái)具體介紹一下Go語(yǔ)言的特性。

語(yǔ)法簡(jiǎn)單

拋開(kāi)語(yǔ)法樣式不談,單就類型和規(guī)則而言,Go 與 C99、C11 相似之處頗多,這也是Go語(yǔ)言被冠以“NextC”名號(hào)的重要原因。

Go語(yǔ)言的語(yǔ)法處于簡(jiǎn)單和復(fù)雜的兩極。C語(yǔ)言簡(jiǎn)單到你每寫(xiě)下一行代碼,都能在腦中想象出編譯后的模樣,指令如何執(zhí)行,內(nèi)存如何分配,等等。而 C 的復(fù)雜在于,它有太多隱晦而不著邊際的規(guī)則,著實(shí)讓人頭疼。相比較而言,Go 從零開(kāi)始,沒(méi)有歷史包袱,在汲取眾多經(jīng)驗(yàn)教訓(xùn)后,可從頭規(guī)劃一個(gè)規(guī)則嚴(yán)謹(jǐn)、條理簡(jiǎn)單的世界。

Go語(yǔ)言的語(yǔ)法規(guī)則嚴(yán)謹(jǐn),沒(méi)有歧義,更沒(méi)什么黑魔法變異用法。任何人寫(xiě)出的代碼都基本一致,這使得Go語(yǔ)言簡(jiǎn)單易學(xué)。放棄部分“靈活”和“自由”,換來(lái)更好的維護(hù)性,我覺(jué)得是值得的。

將“++”、“--”從運(yùn)算符降級(jí)為語(yǔ)句,保留指針,但默認(rèn)阻止指針運(yùn)算,帶來(lái)的好處是顯而易見(jiàn)的。還有,將切片和字典作為內(nèi)置類型,從運(yùn)行時(shí)的層面進(jìn)行優(yōu)化,這也算是一種“簡(jiǎn)單”。

并發(fā)模型

時(shí)至今日,并發(fā)編程已成為程序員的基本技能,在各個(gè)技術(shù)社區(qū)都能看到諸多與之相關(guān)的討論主題。在這種情況下Go語(yǔ)言卻一反常態(tài)做了件極大膽的事,從根本上將一切都并發(fā)化,運(yùn)行時(shí)用 Goroutine 運(yùn)行所有的一切,包括 main.main 入口函數(shù)。

可以說(shuō),Goroutine 是 Go 最顯著的特征。它用類協(xié)程的方式來(lái)處理并發(fā)單元,卻又在運(yùn)行時(shí)層面做了更深度的優(yōu)化處理。這使得語(yǔ)法上的并發(fā)編程變得極為容易,無(wú)須處理回調(diào),無(wú)須關(guān)注線程切換,僅一個(gè)關(guān)鍵字,簡(jiǎn)單而自然。

搭配 channel,實(shí)現(xiàn) CSP 模型。將并發(fā)單元間的數(shù)據(jù)耦合拆解開(kāi)來(lái),各司其職,這對(duì)所有糾結(jié)于內(nèi)存共享、鎖粒度的開(kāi)發(fā)人員都是一個(gè)可期盼的解脫。若說(shuō)有所不足,那就是應(yīng)該有個(gè)更大的計(jì)劃,將通信從進(jìn)程內(nèi)拓展到進(jìn)程外,實(shí)現(xiàn)真正意義上的分布式。

內(nèi)存分配

將一切并發(fā)化固然是好,但帶來(lái)的問(wèn)題同樣很多。如何實(shí)現(xiàn)高并發(fā)下的內(nèi)存分配和管理就是個(gè)難題。好在 Go 選擇了 tcmalloc,它本就是為并發(fā)而設(shè)計(jì)的高性能內(nèi)存分配組件。

可以說(shuō),內(nèi)存分配器是運(yùn)行時(shí)三大組件里變化最少的部分。刨去因配合垃圾回收器而修改的內(nèi)容,內(nèi)存分配器完整保留了 tcmalloc 的原始架構(gòu)。使用 cache 為當(dāng)前執(zhí)行線程提供無(wú)鎖分配,多個(gè) central 在不同線程間平衡內(nèi)存單元復(fù)用。在更高層次里,heap 則管理著大塊內(nèi)存,用以切分成不同等級(jí)的復(fù)用內(nèi)存塊??焖俜峙浜投?jí)內(nèi)存平衡機(jī)制,讓內(nèi)存分配器能優(yōu)秀地完成高壓力下的內(nèi)存管理任務(wù)。

在最近幾個(gè)版本中,編譯器優(yōu)化卓有成效。它會(huì)竭力將對(duì)象分配在棧上,以降低垃圾回收壓力,減少管理消耗,提升執(zhí)行性能??梢哉f(shuō),除偶爾因性能問(wèn)題而被迫采用對(duì)象池和自主內(nèi)存管理外,我們基本無(wú)須參與內(nèi)存管理操作。

垃圾回收

垃圾回收一直是個(gè)難題。早年間, Java 就因垃圾回收低效被嘲笑了許久,后來(lái) Sun 連續(xù)收納了好多人和技術(shù)才發(fā)展到今天??杉幢闳绱?,在 Hadoop 等大內(nèi)存應(yīng)用場(chǎng)景下,垃圾回收依舊捉襟見(jiàn)肘、步履維艱。

相比 Java,Go 面臨的困難要更多。因指針的存在,所以回收內(nèi)存不能做收縮處理。幸好,指針運(yùn)算被阻止,否則要做到精確回收都難。

每次升級(jí),垃圾回收器必然是核心組件里修改最多的部分。從并發(fā)清理,到降低 STW 時(shí)間,直到 Go 的 1.5 版本實(shí)現(xiàn)并發(fā)標(biāo)記,逐步引入三色標(biāo)記和寫(xiě)屏障等等,都是為了能讓垃圾回收在不影響用戶邏輯的情況下更好地工作。盡管有了努力,當(dāng)前版本的垃圾回收算法也只能說(shuō)堪用,離好用尚有不少距離。

靜態(tài)鏈接

Go 剛發(fā)布時(shí),靜態(tài)鏈接被當(dāng)作優(yōu)點(diǎn)宣傳。只須編譯后的一個(gè)可執(zhí)行文件,無(wú)須附加任何東西就能部署。這似乎很不錯(cuò),只是后來(lái)風(fēng)氣變了。連著幾個(gè)版本,編譯器都在完善動(dòng)態(tài)庫(kù) buildmode 功能,場(chǎng)面一時(shí)變得有些尷尬。

暫不說(shuō)未完工的 buildmode 模式,靜態(tài)編譯的好處顯而易見(jiàn)。將運(yùn)行時(shí)、依賴庫(kù)直接打包到可執(zhí)行文件內(nèi)部,簡(jiǎn)化了部署和發(fā)布操作,無(wú)須事先安裝運(yùn)行環(huán)境和下載諸多第三方庫(kù)。這種簡(jiǎn)單方式對(duì)于編寫(xiě)系統(tǒng)軟件有著極大好處,因?yàn)閹?kù)依賴一直都是個(gè)麻煩。

標(biāo)準(zhǔn)庫(kù)

功能完善、質(zhì)量可靠的標(biāo)準(zhǔn)庫(kù)為編程語(yǔ)言提供了充足動(dòng)力。在不借助第三方擴(kuò)展的情況下,就可完成大部分基礎(chǔ)功能開(kāi)發(fā),這大大降低了學(xué)習(xí)和使用成本。最關(guān)鍵的是,標(biāo)準(zhǔn)庫(kù)有升級(jí)和修復(fù)保障,還能從運(yùn)行時(shí)獲得深層次優(yōu)化的便利,這是第三方庫(kù)所不具備的。

Go 標(biāo)準(zhǔn)庫(kù)雖稱不得完全覆蓋,但也算極為豐富。其中值得稱道的是 net/http,僅須簡(jiǎn)單幾條語(yǔ)句就能實(shí)現(xiàn)一個(gè)高性能 Web Server,這從來(lái)都是宣傳的亮點(diǎn)。更何況大批基于此的優(yōu)秀第三方 Framework 更是將 Go 推到 Web/Microservice 開(kāi)發(fā)標(biāo)準(zhǔn)之一的位置。

當(dāng)然,優(yōu)秀第三方資源也是語(yǔ)言生態(tài)圈的重要組成部分。近年來(lái)崛起的幾門(mén)語(yǔ)言中,Go 算是獨(dú)樹(shù)一幟,大批優(yōu)秀作品頻繁涌現(xiàn),這也給我們學(xué)習(xí) Go 提供了很好的參照。

工具鏈

完整的工具鏈對(duì)于日常開(kāi)發(fā)極為重要。Go 在此做得相當(dāng)不錯(cuò),無(wú)論是編譯、格式化、錯(cuò)誤檢查、幫助文檔,還是第三方包下載、更新都有對(duì)應(yīng)的工具。其功能未必完善,但起碼算得上簡(jiǎn)單易用。

內(nèi)置完整測(cè)試框架,其中包括單元測(cè)試、性能測(cè)試、代碼覆蓋率、數(shù)據(jù)競(jìng)爭(zhēng),以及用來(lái)調(diào)優(yōu)的 pprof,這些都是保障代碼能正確而穩(wěn)定運(yùn)行的必備利器。

除此之外,還可通過(guò)環(huán)境變量輸出運(yùn)行時(shí)監(jiān)控信息,尤其是垃圾回收和并發(fā)調(diào)度跟蹤,可進(jìn)一步幫助我們改進(jìn)算法,獲得更佳的運(yùn)行期表現(xiàn)。


文章題目:創(chuàng)新互聯(lián)GO教程:Go語(yǔ)言的特性有哪些?
本文URL:http://www.5511xx.com/article/dhsccdd.html