極客時(shí)間的GO語(yǔ)言進(jìn)階訓(xùn)練營(yíng)是很不錯(cuò),知識(shí)內(nèi)容涉及比較全面,從編程語(yǔ)言到中間件、系統(tǒng)設(shè)計(jì)再到架構(gòu)都安排了相關(guān)課程,老師們?cè)谡n程中不講語(yǔ)法和用法,重點(diǎn)傳遞設(shè)計(jì)原理和最佳實(shí)踐,講課的過(guò)程中貼合工作場(chǎng)景,分享真實(shí)的干貨案例,啟發(fā)學(xué)員的思維讓其自主進(jìn)行學(xué)習(xí),還幫學(xué)員建立系統(tǒng)大局觀,有助于學(xué)員深層次的提升。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供桑珠孜企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為桑珠孜眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
語(yǔ)料庫(kù)文件以特殊格式編碼。這是種子語(yǔ)料庫(kù)和生成語(yǔ)料庫(kù)的相同格式。
下面是一個(gè)語(yǔ)料庫(kù)文件的例子:
第一行用于通知模糊引擎文件的編碼版本。雖然目前沒(méi)有計(jì)劃未來(lái)版本的編碼格式,但設(shè)計(jì)必須支持這種可能性。
下面的每一行都是構(gòu)成語(yǔ)料庫(kù)條目的值,如果需要,可以直接復(fù)制到 Go 代碼中。
在上面的示例中,我們?cè)?a []byte后跟一個(gè)int64。這些類型必須按順序與模糊測(cè)試參數(shù)完全匹配。這些類型的模糊目標(biāo)如下所示:
指定您自己的種子語(yǔ)料庫(kù)值的最簡(jiǎn)單方法是使用該 (*testing.F).Add方法。在上面的示例中,它看起來(lái)像這樣:
但是,您可能有較大的二進(jìn)制文件,您不希望將其作為代碼復(fù)制到您的測(cè)試中,而是作為單獨(dú)的種子語(yǔ)料庫(kù)條目保留在 testdata/fuzz/{FuzzTestName} 目錄中。golang.org/x/tools/cmd/file2fuzz 上的file2fuzz工具可用于將這些二進(jìn)制文件轉(zhuǎn)換為為[]byte.
要使用此工具:
語(yǔ)料庫(kù)條目:語(yǔ)料庫(kù) 中的一個(gè)輸入,可以在模糊測(cè)試時(shí)使用。這可以是特殊格式的文件,也可以是對(duì) (*testing.F).Add。
覆蓋指導(dǎo): 一種模糊測(cè)試方法,它使用代碼覆蓋范圍的擴(kuò)展來(lái)確定哪些語(yǔ)料庫(kù)條目值得保留以備將來(lái)使用。
失敗的輸入:失敗的輸入是一個(gè)語(yǔ)料庫(kù)條目,當(dāng)針對(duì) 模糊目標(biāo)運(yùn)行時(shí)會(huì)導(dǎo)致錯(cuò)誤或恐慌。
fuzz target: 模糊測(cè)試的目標(biāo)功能,在模糊測(cè)試時(shí)對(duì)語(yǔ)料庫(kù)條目和生成的值執(zhí)行。它通過(guò)將函數(shù)傳遞給 (*testing.F).Fuzz實(shí)現(xiàn)。
fuzz test: 測(cè)試文件中的一個(gè)被命名為func FuzzXxx(*testing.F)的函數(shù),可用于模糊測(cè)試。
fuzzing: 一種自動(dòng)化測(cè)試,它不斷地操縱程序的輸入,以發(fā)現(xiàn)代碼可能容易受到的錯(cuò)誤或漏洞等問(wèn)題。
fuzzing arguments: 將傳遞給 模糊測(cè)試目標(biāo)的參數(shù),并由mutator進(jìn)行變異。
fuzzing engine: 一個(gè)管理fuzzing的工具,包括維護(hù)語(yǔ)料庫(kù)、調(diào)用mutator、識(shí)別新的覆蓋率和報(bào)告失敗。
生成的語(yǔ)料庫(kù): 由模糊引擎隨時(shí)間維護(hù)的語(yǔ)料庫(kù),同時(shí)模糊測(cè)試以跟蹤進(jìn)度。它存儲(chǔ)在$GOCACHE/fuzz 中。這些條目?jī)H在模糊測(cè)試時(shí)使用。
mutator: 一種在模糊測(cè)試時(shí)使用的工具,它在將語(yǔ)料庫(kù)條目傳遞給模糊目標(biāo)之前隨機(jī)操作它們。
package: 同一目錄下編譯在一起的源文件的集合。
種子語(yǔ)料庫(kù): 用戶提供的用于模糊測(cè)試的語(yǔ)料庫(kù),可用于指導(dǎo)模糊引擎。它由 f.Add 在模糊測(cè)試中調(diào)用提供的語(yǔ)料庫(kù)條目以及包內(nèi) testdata/fuzz/{FuzzTestName} 目錄中的文件組成。這些條目默認(rèn)使用go test運(yùn)行,無(wú)論是否進(jìn)行模糊測(cè)試。
測(cè)試文件: 格式為 xxx_test.go 的文件,可能包含測(cè)試、基準(zhǔn)、示例和模糊測(cè)試。
漏洞: 代碼中的安全敏感漏洞,可以被攻擊者利用。
Golang 的創(chuàng)建是為了實(shí)現(xiàn)最大的用戶效率和編碼效率。已經(jīng)熟悉 Java 或 PHP 的程序員可以在幾周內(nèi)接受 Go 的培訓(xùn)(許多人最終會(huì)更喜歡它)。在本文中,Dewet Diener 探討了 Golang 的優(yōu)缺點(diǎn),以及它的測(cè)試驅(qū)動(dòng)開(kāi)發(fā) (TDD) 如何完美契合。
Golang 由 Google 開(kāi)發(fā)和設(shè)計(jì),于 2009 年作為一種綜合性編程語(yǔ)言首次出現(xiàn),旨在最大限度地提高編碼效率。創(chuàng)建該語(yǔ)言的目的是修正其他已建立語(yǔ)言的缺陷。盡管 Golang(或簡(jiǎn)稱為“Go”)是一門年輕的語(yǔ)言,但已經(jīng)積累了大量的開(kāi)發(fā)人員,因此我們想分享為什么在 Curve 我們喜歡 Golang,以及我們?nèi)绾尾捎盟鼇?lái)實(shí)現(xiàn)我們移動(dòng)銀行業(yè)務(wù)的目標(biāo)到云端。
Go 是一種精致的編程語(yǔ)言:它支持“所見(jiàn)即所得”的原則,這意味著清晰易讀的代碼和更少的復(fù)雜抽象。該語(yǔ)言本身易于使用且易于訓(xùn)練。盡管如此,作為一個(gè)相對(duì)較新的生態(tài)系統(tǒng),要找到對(duì) Go 具有廣泛預(yù)先知識(shí)的工程師可能會(huì)很棘手。
然而,與其他編程語(yǔ)言不同,Go 的創(chuàng)建是為了最大限度地提高用戶效率。因此,具有 Java 或 PHP 背景的開(kāi)發(fā)人員和工程師可以在幾周內(nèi)獲得使用 Go 的技能和培訓(xùn)——根據(jù)我們的經(jīng)驗(yàn),他們中的許多人最終更喜歡它。
在 Curve,我們大力提倡測(cè)試驅(qū)動(dòng)開(kāi)發(fā) (TDD),Go 的框架與這種方法保持一致。通過(guò)簡(jiǎn)單地命名一個(gè)文件 foo_test.go 并在該文件中添加結(jié)構(gòu)化測(cè)試函數(shù),Go 將快速有效地運(yùn)行您的單元測(cè)試。這一創(chuàng)新功能提高了生產(chǎn)力,因?yàn)樗梢愿訉W⒂跍y(cè)試驅(qū)動(dòng)的開(kāi)發(fā)和改進(jìn)的同行評(píng)審機(jī)會(huì)。
Golang 具有出色的生產(chǎn)優(yōu)化品質(zhì),例如內(nèi)存占用小,這支持其在大型項(xiàng)目中作為構(gòu)建塊的能力,以及開(kāi)箱即用的與其他架構(gòu)的輕松交叉編譯。由于 Go 代碼被編譯為單個(gè)靜態(tài)二進(jìn)制文件,因此它可以輕松進(jìn)行容器化,并且通過(guò)擴(kuò)展,將 Go 部署到任何高可用性環(huán)境(例如 Kubernetes)中幾乎是微不足道的。
它提供了一種機(jī)制來(lái)保護(hù)工作負(fù)載,通過(guò)擁有非常纖薄的生產(chǎn)容器而沒(méi)有任何無(wú)關(guān)的依賴項(xiàng)。這使得構(gòu)建、部署和維護(hù)基于 Go 的資產(chǎn)更加直接和安全,并為希望建立或發(fā)展其微服務(wù)戰(zhàn)略的公司提供了可靠的選擇。
Go 是專門為滿足我們快速發(fā)展的技術(shù)生態(tài)系統(tǒng)的需求而創(chuàng)建的。例如,Go 可以滿足您構(gòu)建 API 所需的一切,并將其作為其標(biāo)準(zhǔn)庫(kù)的一部分。它使用簡(jiǎn)單,高性能的 http 服務(wù)器消除了團(tuán)隊(duì)設(shè)計(jì)新項(xiàng)目時(shí)經(jīng)常發(fā)生的一些常見(jiàn)的 探索 和設(shè)計(jì)癱瘓問(wèn)題——這對(duì)于一些其他流行語(yǔ)言(如 Java 和 Node.js)來(lái)說(shuō)太常見(jiàn)了。
Golang 還通過(guò)其內(nèi)置于語(yǔ)言本身的自動(dòng)格式化程序巧妙地解決了代碼格式化分歧。這完全消除了格式爭(zhēng)議,進(jìn)而提高了團(tuán)隊(duì)的生產(chǎn)力和注意力。
盡管我是 Go 的擁護(hù)者,但它顯然也不是沒(méi)有缺陷。一個(gè)爭(zhēng)論不休的特性是 Go 沒(méi)有顯式接口,這是許多開(kāi)發(fā)人員習(xí)慣的概念。雖然不是有害的,但它可以使選擇最適合您的結(jié)構(gòu)的接口成為一項(xiàng)任務(wù)。這是因?yàn)槟粫?huì)像在其他流行的編程語(yǔ)言中那樣編寫 X 實(shí)現(xiàn) Y,但您很快就會(huì)接受。
依賴管理也是另一個(gè)不屬于 Google Golang 開(kāi)發(fā)團(tuán)隊(duì)原始設(shè)計(jì)的功能。開(kāi)源社區(qū)介入并創(chuàng)建了 Glide 和 Dep,最初的努力并沒(méi)有完全解決問(wèn)題。從 Go 1.11 開(kāi)始,添加了對(duì)模塊的支持,這似乎已成為官方的依賴管理工具。這些挑戰(zhàn)并沒(méi)有削弱 Go 作為一種高效編程語(yǔ)言的獨(dú)創(chuàng)性,并且它繼續(xù)為我們提供優(yōu)于其他編程語(yǔ)言的顯著優(yōu)勢(shì)。
Golang 吸引了全球敏銳的開(kāi)發(fā)人員的注意,并且圍繞它的興奮繼續(xù)增長(zhǎng)。開(kāi)源社區(qū)因有趣的項(xiàng)目而蓬勃發(fā)展;最著名的是 Docker 和 Kubernetes。
正是這種新鮮、有創(chuàng)意但又簡(jiǎn)單的包裝吸引了我們?nèi)o:它是一種令人興奮的編碼語(yǔ)言,可以幫助我們?cè)?Curve 中快速開(kāi)發(fā)以構(gòu)建更好的產(chǎn)品。
文章題目:GO語(yǔ)言訓(xùn)練計(jì)劃模板 go語(yǔ)言訓(xùn)練計(jì)劃模板怎么寫
文章鏈接:http://jinyejixie.com/article16/docpdgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、建站公司、網(wǎng)頁(yè)設(shè)計(jì)公司、全網(wǎng)營(yíng)銷推廣、網(wǎng)站改版、自適應(yīng)網(wǎng)站
聲明:本網(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)