1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

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

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      go語言經(jīng)典教程 go語言入門經(jīng)典

      GO語言(十六):模糊測試入門(上)

      本教程介紹了 Go 中模糊測試的基礎(chǔ)知識。通過模糊測試,隨機(jī)數(shù)據(jù)會針對您的測試運(yùn)行,以嘗試找出漏洞或?qū)е卤罎⒌妮斎搿?梢酝ㄟ^模糊測試發(fā)現(xiàn)的一些漏洞示例包括 SQL 注入、緩沖區(qū)溢出、拒絕服務(wù)和跨站點(diǎn)腳本攻擊。

      創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供甘泉網(wǎng)站建設(shè)、甘泉做網(wǎng)站、甘泉網(wǎng)站設(shè)計(jì)、甘泉網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、甘泉企業(yè)網(wǎng)站模板建站服務(wù),十載甘泉做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

      在本教程中,您將為一個簡單的函數(shù)編寫一個模糊測試,運(yùn)行 go 命令,并調(diào)試和修復(fù)代碼中的問題。

      首先,為您要編寫的代碼創(chuàng)建一個文件夾。

      1、打開命令提示符并切換到您的主目錄。

      在 Linux 或 Mac 上:

      在 Windows 上:

      2、在命令提示符下,為您的代碼創(chuàng)建一個名為 fuzz 的目錄。

      3、創(chuàng)建一個模塊來保存您的代碼。

      運(yùn)行g(shù)o mod init命令,為其提供新代碼的模塊路徑。

      接下來,您將添加一些簡單的代碼來反轉(zhuǎn)字符串,稍后我們將對其進(jìn)行模糊測試。

      在此步驟中,您將添加一個函數(shù)來反轉(zhuǎn)字符串。

      a.使用您的文本編輯器,在 fuzz 目錄中創(chuàng)建一個名為 main.go 的文件。

      獨(dú)立程序(與庫相反)始終位于 package 中main。

      此函數(shù)將接受string,使用byte進(jìn)行循環(huán) ,并在最后返回反轉(zhuǎn)的字符串。

      此函數(shù)將運(yùn)行一些Reverse操作,然后將輸出打印到命令行。這有助于查看運(yùn)行中的代碼,并可能有助于調(diào)試。

      e.該main函數(shù)使用 fmt 包,因此您需要導(dǎo)入它。

      第一行代碼應(yīng)如下所示:

      從包含 main.go 的目錄中的命令行,運(yùn)行代碼。

      可以看到原來的字符串,反轉(zhuǎn)它的結(jié)果,然后再反轉(zhuǎn)它的結(jié)果,就相當(dāng)于原來的了。

      現(xiàn)在代碼正在運(yùn)行,是時候測試它了。

      在這一步中,您將為Reverse函數(shù)編寫一個基本的單元測試。

      a.使用您的文本編輯器,在 fuzz 目錄中創(chuàng)建一個名為 reverse_test.go 的文件。

      b.將以下代碼粘貼到 reverse_test.go 中。

      這個簡單的測試將斷言列出的輸入字符串將被正確反轉(zhuǎn)。

      使用運(yùn)行單元測試go test

      接下來,您將單元測試更改為模糊測試。

      單元測試有局限性,即每個輸入都必須由開發(fā)人員添加到測試中。模糊測試的一個好處是它可以為您的代碼提供輸入,并且可以識別您提出的測試用例沒有達(dá)到的邊緣用例。

      在本節(jié)中,您將單元測試轉(zhuǎn)換為模糊測試,這樣您就可以用更少的工作生成更多的輸入!

      請注意,您可以將單元測試、基準(zhǔn)測試和模糊測試保存在同一個 *_test.go 文件中,但對于本示例,您將單元測試轉(zhuǎn)換為模糊測試。

      在您的文本編輯器中,將 reverse_test.go 中的單元測試替換為以下模糊測試。

      Fuzzing 也有一些限制。在您的單元測試中,您可以預(yù)測Reverse函數(shù)的預(yù)期輸出,并驗(yàn)證實(shí)際輸出是否滿足這些預(yù)期。

      例如,在測試用例Reverse("Hello, world")中,單元測試將返回指定為"dlrow ,olleH".

      模糊測試時,您無法預(yù)測預(yù)期輸出,因?yàn)槟鸁o法控制輸入。

      但是,Reverse您可以在模糊測試中驗(yàn)證函數(shù)的一些屬性。在這個模糊測試中檢查的兩個屬性是:

      (1)將字符串反轉(zhuǎn)兩次保留原始值

      (2)反轉(zhuǎn)的字符串將其狀態(tài)保留為有效的 UTF-8。

      注意單元測試和模糊測試之間的語法差異:

      (3)確保新包unicode/utf8已導(dǎo)入。

      隨著單元測試轉(zhuǎn)換為模糊測試,是時候再次運(yùn)行測試了。

      a.在不進(jìn)行模糊測試的情況下運(yùn)行模糊測試,以確保種子輸入通過。

      如果您在該文件中有其他測試,您也可以運(yùn)行g(shù)o test -run=FuzzReverse,并且您只想運(yùn)行模糊測試。

      b.運(yùn)行FuzzReverse模糊測試,查看是否有任何隨機(jī)生成的字符串輸入會導(dǎo)致失敗。這是使用go test新標(biāo)志-fuzz執(zhí)行的。

      模糊測試時發(fā)生故障,導(dǎo)致問題的輸入被寫入將在下次運(yùn)行的種子語料庫文件中g(shù)o test,即使沒有-fuzz標(biāo)志也是如此。要查看導(dǎo)致失敗的輸入,請?jiān)谖谋揪庉嬈髦写蜷_寫入 testdata/fuzz/FuzzReverse 目錄的語料庫文件。您的種子語料庫文件可能包含不同的字符串,但格式相同。

      語料庫文件的第一行表示編碼版本。以下每一行代表構(gòu)成語料庫條目的每種類型的值。由于 fuzz target 只需要 1 個輸入,因此版本之后只有 1 個值。

      c.運(yùn)行沒有-fuzz標(biāo)志的go test; 新的失敗種子語料庫條目將被使用:

      由于我們的測試失敗,是時候調(diào)試了。

      如何學(xué)習(xí)GO語言?

      Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎(chǔ)的讀者快速入門,也適合工作多年的程序員查閱知識點(diǎn)。

      Go 語言

      這套教程在講解一些知識點(diǎn)時,將 Go 語言和其他多種語言進(jìn)行對比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發(fā),無須第三方庫、開發(fā)者的編程技巧和開發(fā)經(jīng)驗(yàn)就可以輕松搞定。

      Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對外發(fā)布。Go 是非常年輕的一門語言,它的主要目標(biāo)是“兼具 Python 等動態(tài)語言的開發(fā)速度和 C/C++ 等編譯型語言的性能與安全性”。

      Go語言是編程語言設(shè)計(jì)的又一次嘗試,是對類C語言的重大改進(jìn),它不但能讓你訪問底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。

      Go語言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡單、并發(fā)性好、語言設(shè)計(jì)良好、執(zhí)行性能好”等優(yōu)勢,目前國內(nèi)諸多 IT 公司均已采用Go語言開發(fā)項(xiàng)目。Go語言有時候被描述為“C 類似語言”,或者是“21 世紀(jì)的C語言”。Go 從C語言繼承了相似的表達(dá)式語法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語言一直所看中的編譯后機(jī)器碼的運(yùn)行效率以及和現(xiàn)有操作系統(tǒng)的無縫適配。

      因?yàn)镚o語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來并不相同。但是它通過接口(interface)的概念來實(shí)現(xiàn)多態(tài)性。Go語言有一個清晰易懂的輕量級類型系統(tǒng),在類型之間也沒有層級之說。因此可以說Go語言是一門混合型的語言。

      此外,很多重要的開源項(xiàng)目都是使用Go語言開發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時,編譯器檢查錯誤、優(yōu)化性能并輸出可在不同平臺上運(yùn)行的二進(jìn)制文件。要創(chuàng)建并運(yùn)行 Go 程序,程序員必須執(zhí)行如下步驟。

      使用文本編輯器創(chuàng)建 Go 程序;

      保存文件;編譯程序;運(yùn)行編譯得到的可執(zhí)行文件。

      這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨(dú)安裝編譯器。

      鏈喬教育在線旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開展的“智慧學(xué)習(xí)工場2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準(zhǔn)的“區(qū)塊鏈技術(shù)專業(yè)”試點(diǎn)工作站。專業(yè)站立足為學(xué)生提供多樣化成長路徑,推進(jìn)專業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。

      GO語言(十一):開始使用多模塊工作區(qū)

      本教程介紹 Go 中多模塊工作區(qū)的基礎(chǔ)知識。使用多模塊工作區(qū),您可以告訴 Go 命令您正在同時在多個模塊中編寫代碼,并輕松地在這些模塊中構(gòu)建和運(yùn)行代碼。

      在本教程中,您將在共享的多模塊工作區(qū)中創(chuàng)建兩個模塊,對這些模塊進(jìn)行更改,并在構(gòu)建中查看這些更改的結(jié)果。

      本教程需要 go1.18 或更高版本。使用go.dev/dl中的鏈接確保您已在 Go 1.18 或更高版本中安裝了 Go 。

      首先,為您要編寫的代碼創(chuàng)建一個模塊。

      1、打開命令提示符并切換到您的主目錄。

      在 Linux 或 Mac 上:

      在 Windows 上:

      2、在命令提示符下,為您的代碼創(chuàng)建一個名為工作區(qū)的目錄。

      3、初始化模塊

      我們的示例將創(chuàng)建一個hello依賴于 golang.org/x/example 模塊的新模塊。

      創(chuàng)建你好模塊:

      使用 . 添加對 golang.org/x/example 模塊的依賴項(xiàng)go get。

      在 hello 目錄下創(chuàng)建 hello.go,內(nèi)容如下:

      現(xiàn)在,運(yùn)行 hello 程序:

      在這一步中,我們將創(chuàng)建一個go.work文件來指定模塊的工作區(qū)。

      在workspace目錄中,運(yùn)行:

      該go work init命令告訴為包含目錄中模塊的工作空間go創(chuàng)建一個文件 。go.work./hello

      該go命令生成一個go.work如下所示的文件:

      該go.work文件的語法與go.mod相同。

      該go指令告訴 Go 應(yīng)該使用哪個版本的 Go 來解釋文件。它類似于文件中的go指令go.mod 。

      該use指令告訴 Go在進(jìn)行構(gòu)建時hello目錄中的模塊應(yīng)該是主模塊。

      所以在模塊的任何子目錄中workspace都會被激活。

      2、運(yùn)行工作區(qū)目錄下的程序

      在workspace目錄中,運(yùn)行:

      Go 命令包括工作區(qū)中的所有模塊作為主模塊。這允許我們在模塊中引用一個包,即使在模塊之外。在模塊或工作區(qū)之外運(yùn)行g(shù)o run命令會導(dǎo)致錯誤,因?yàn)樵揼o命令不知道要使用哪些模塊。

      接下來,我們將golang.org/x/example模塊的本地副本添加到工作區(qū)。然后,我們將向stringutil包中添加一個新函數(shù),我們可以使用它來代替Reverse.

      在這一步中,我們將下載包含該模塊的 Git 存儲庫的副本golang.org/x/example,將其添加到工作區(qū),然后向其中添加一個我們將從 hello 程序中使用的新函數(shù)。

      1、克隆存儲庫

      在工作區(qū)目錄中,運(yùn)行g(shù)it命令來克隆存儲庫:

      2、將模塊添加到工作區(qū)

      該go work use命令將一個新模塊添加到 go.work 文件中。它現(xiàn)在看起來像這樣:

      該模塊現(xiàn)在包括example點(diǎn)抗 /hello模塊和 `golang.org/x/example 模塊。

      這將允許我們使用我們將在模塊副本中編寫的新代碼,而不是使用命令stringutil下載的模塊緩存中的模塊版本。

      3、添加新功能。

      我們將向golang.org/x/example/stringutil包中添加一個新函數(shù)以將字符串大寫。

      將新文件夾添加到workspace/example/stringutil包含以下內(nèi)容的目錄:

      4、修改hello程序以使用該功能。

      修改workspace/hello/hello.go的內(nèi)容以包含以下內(nèi)容:

      從工作區(qū)目錄,運(yùn)行

      Go 命令在go.work文件指定的hello目錄中查找命令行中指定的example點(diǎn)抗 /hello模塊 ,同樣使用go.work文件解析導(dǎo)入golang.org/x/example。

      go.work可以用來代替添加replace 指令以跨多個模塊工作。

      由于這兩個模塊在同一個工作區(qū)中,因此很容易在一個模塊中進(jìn)行更改并在另一個模塊中使用它。

      現(xiàn)在,要正確發(fā)布這些模塊,我們需要發(fā)布golang.org/x/example 模塊,例如在v0.1.0. 這通常通過在模塊的版本控制存儲庫上標(biāo)記提交來完成。發(fā)布完成后,我們可以增加對 golang.org/x/example模塊的要求hello/go.mod:

      這樣,該go命令可以正確解析工作區(qū)之外的模塊。

      GO語言入門,有什么好的教程啊?

      可以學(xué)習(xí)黑馬程序員的這個教程

      20小時快速入門go語言:網(wǎng)頁鏈接

      go語言的優(yōu)勢

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

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

      語言層面支持并發(fā),這個就是Go最大的特色,天生的支持并發(fā)。Go就是基因里面支持的并發(fā),可以充分的利用多核,很容易的使用并發(fā)。

      內(nèi)置runtime,支持垃圾回收,這屬于動態(tài)語言的特性之一吧,雖然目前來說GC(內(nèi)存垃圾回收機(jī)制)不算完美,但是足以應(yīng)付我們所能遇到的大多數(shù)情況,特別是Go1.1之后的GC。

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

      豐富的標(biāo)準(zhǔn)庫,Go目前已經(jīng)內(nèi)置了大量的庫,特別是網(wǎng)絡(luò)庫非常強(qiáng)大。

      內(nèi)置強(qiáng)大的工具,Go語言里面內(nèi)置了很多工具鏈,最好的應(yīng)該是gofmt工具,自動化格式化代碼,能夠讓團(tuán)隊(duì)review變得如此的簡單,代碼格式一模一樣,想不一樣都很困難。

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

      內(nèi)嵌C支持,Go里面也可以直接包含C代碼,利用現(xiàn)有的豐富的C庫。


      網(wǎng)站名稱:go語言經(jīng)典教程 go語言入門經(jīng)典
      網(wǎng)站鏈接:http://www.ef60e0e.cn/article/ddehgjh.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        调兵山市| 贺兰县| 南投县| 滦平县| 行唐县| 炎陵县| 神农架林区| 和林格尔县| 呼和浩特市| 太保市| 健康| 万山特区| 家居| 修文县| 永福县| 通城县| 同仁县| 吉安县| 蓝田县| 休宁县| 阿瓦提县| 绥滨县| 西乌珠穆沁旗| 乌鲁木齐县| 丹江口市| 于田县| 霍城县| 马龙县| 台前县| 台江县| 哈密市| 辽阳市| 安丘市| 池州市| 灵川县| 庐江县| 河西区| 满洲里市| 紫阳县| 广饶县| 丘北县|