Time of Update: 2018-08-08
1. 安裝docker2.mkdir myDocker3.cd myDocker && touch Dockerfile4.Dockerfile寫入# 將golang環境作為父鏡像FROM golangMAINTAINER Razil "zc6496359"WORKDIR $GOPATH/src/godockerADD . $GOPATH/src/godockerRUN go build main.goEXPOSE 8080ENTRYPOINT
Time of Update: 2018-08-08
Go與其它語言進行互動與 C 進行互動工具 cgo 提供了對 FFI(外部函數介面)的支援,能夠使用 Go 代碼安全地調用 C 語言庫,你可以訪問 cgo 文檔首頁:http://golang.org/cmd/cgo。cgo 會替代 Go 編譯器來產生可以組合在同一個包中的 Go 和 C 代碼。在實際開發中一般使用 cgo 建立單獨的 C 程式碼封裝。如果你想要在你的 Go 程式中使用 cgo,則必須在單獨的一行使用 import "C" 來匯入,一般來說你可能還需要
Time of Update: 2018-08-07
對於一些有並發要求的業務,特別是對接外部流量時,產品上線前一定要做的就是壓力測試,但是常規的壓力測試並不能覆蓋所有情況。以gemeter、ab,、webbench、http_load為例,這些通過類比請求的壓測工具,只能發送特定的參數,對於一些參數異常導致的程式處理異常是無法考慮到的,所以就需要一款能複製真實流量,並且不影響線上業務的工具。流量複製工具有很多,例如Gor、tcpreplay、tcpcopy等,這些工具貼合真實情境,能類比真實流量,並支援流量的放大或縮小,更容易測試出程式的瓶頸
Time of Update: 2018-08-07
1、go的package不局限於一個檔案,組成一個package的多個檔案,編譯後實際上和一個檔案類似,組成包的不同檔案相互之間可以直接引用變數和函數,不論是否匯出;2、go不要求package的名稱和所在目錄名相同,但是你最好保持相同,否則容易引起歧義。因為引入包的時候,go會使用子目錄名作為包的路徑,而你在代碼中真正使用時,卻要使用你package的名稱。3、每個子目錄中只能存在一個package,否則編譯時間會報錯。4、go的package是以絕對路徑GOPATH來定址的,不要用相對路徑來
Time of Update: 2018-08-06
從golang小白到成為golang工程師快兩個月了,我要分享一下新手在開發中常犯的錯誤,都是我親自踩過的坑。這些錯誤中有些會導致無法通過編譯,這種錯容易發現,而有些錯誤在編譯時間不會拋出,甚至在運行時也不會panic,如果缺少相關的知識,撓破頭皮都搞不清楚bug出在哪。1.對nil map、nil slice 添加資料請考慮一下這段代碼是否有錯,然後運行一遍:package mainfunc main() { var m map[string]string m["name&
Time of Update: 2018-08-10
預設安裝官網下載安裝包 https://golang.org/dl/。解壓tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz,解壓後路徑 /usr/local/go。其中,$VERSION表示golang的版本,如1.10.3;$OS表示系統,如:linux;$ARCH表示cpu架構,如:amd64。添加golang的命令列工具到環境邊路路徑,$PATH=$PATH:/usr/local/go。輸入go
Time of Update: 2018-08-10
介紹Go語言是一種讓代碼分享更容易的程式設計語言。Go語言內建一些工具,讓使用別人寫的包更容易,並且分享自己寫的包更容易。Go語言對並發的支援是這門語言最重要的特性之一。goroutine很像線程,但是它佔用的記憶體遠少於線程,使用它需要的代碼更少。通道(channel)是一種內建的資料結構,可以讓使用者在不同 的goroutine之間同步發送具有類型的訊息。術語goroutine 是可以與其他goroutine並存執行的函數,同時也會與主程式(程式的入口)並存執行。個人理解:
Time of Update: 2018-08-05
一、產生背景今天咱不去長篇大論特別詳細地講解consistent hash,我爭取用最輕鬆的方式告訴你consistent hash演算法是什麼,如果需要深入,Google一下~。舉個栗子吧:比如有 N 個 cache 伺服器,需要將一個object 映射到 N 個 cache 上,我們可以用類似下面的方法計算 object 的 hash 值,然後均勻的映射到到 N 個 cache 上:hash(object)%N比如object是“hello”,hash(object)
Time of Update: 2018-08-10
寫的比較粗糙,有錯誤的地方希望指正,不會英語,部分變數用拼音命名,打擾了package sendmsgimport ( "bytes" "crypto/hmac" "crypto/sha1" "encoding/base64" "encoding/json" "fmt" "io/ioutil" "net/http"
Time of Update: 2018-08-05
儘管 Go 編譯器產生的是本地可執行代碼,這些代碼仍舊運行在 Go 的 runtime(這部分的代碼可以在 runtime 包中找到)當中。這個 runtime 類似 Java 和 .NET 語言所用到的虛擬機器,它負責管理組件括記憶體配置、記憶體回收(第 10.8 節)、棧處理、goroutine、channel、切片(slice)、map 和反射(reflection)等等。runtime 調度器是個非常有用的東西,關於 runtime 包幾個方法:Gosched:讓當前線程讓出 cpu
Time of Update: 2018-08-10
問題描述:go語言是一種非常輕便的語言,受到不少新生互連網公司的喜愛。於是,有空的時間也想學習一下這種語言。那麼,如何在windows下面搭建簡單的go語言開發環境呢?問題解決:構建簡單的go開發環境分兩步:1,到go的官網下載sdk安裝官網地址是https://golang.google.cn/,安裝sdk後,基本上就可以編寫,編譯和運行go語言程式。筆者使用的是windows7系統,%GOPATH%被配置到C:\Users\[user]\go,目錄下面,可以在這個目錄下面建立src目錄,然後
Time of Update: 2018-08-05
前端代碼``` $("#btn").click(function(){ $.post({ url: 'http://localhost:9999/class_add', dataType:"json", data: { class_name:"hulu",
Time of Update: 2018-08-05
寫入記錄檔func main() { file, err := os.Create("test.log") if err != nil { log.Fatalln("fail to create test.log file!") } logger := log.New(file, "", log.Llongfile) //
Time of Update: 2018-08-05
對於做Java開發的同學使用最熟練的開發工具應該當屬Eclipse了吧,但是做到後面的話一般都會轉用Intellij
Time of Update: 2018-08-04
本文系第十五篇Golang語言學習教程什麼是字串Go 語言中的字串是一個位元組切片. 把內容放在雙引號之間, 就可以建立一個字串.package mainimport "fmt"func main() { name := "hello world" fmt.Println(name)}程式輸出:hello worldGo 中字串是相容 Unicode 編碼的, 並且使用 UTF-8 進行編碼.單獨擷取字串的每一個位元組由於字串是位元組切片,
Time of Update: 2018-08-09
Gofasion是一個方便開發過程中介面JSON資料解析的輕量級解析庫,其最大的特點在於支援鏈式調用,也就是說不必預先定義好資料的結構就可以直接擷取到目標鍵名和索引值。### 開源[https://github.com/Anderson-Lu/gofasion](https://github.com/Anderson-Lu/gofasion)### 安裝```shellgo get github.com/Anderson-Lu/fasion/gofasion```###
Time of Update: 2018-08-09
golang 延時函數defer 作final處理檔案或異常defer 函數先進後出原則,在函數內部使用時,會在return之後執行,所以根據這一特性,可以處理因為異常導致檔案流未關閉問題(記憶體流失)和異常捕捉使用,具體如下:檔案流關閉func CopyFile(dstName, srcName string) (written int64, err error) {src, err := os.Open(srcName)if err != nil {return}defer
Time of Update: 2018-08-08
正式的文法指定什麼是在 Go 語言(或者其他的語言)中依據文法構成有效程式。```Block = "{" StatementList "}" .StatementList = { Statement ";" } .```以上定義取自 Go 規範。它使用[擴充的 Backus-Naur](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form)
Time of Update: 2018-08-08
token驗證是一種web常用的身分識別驗證手段,在這裡不討論它的具體實現我需要在golang裡實現token驗證,Web架構是Gin(當然這與架構沒有關係)步驟如下從request擷取tokenstring將tokenstring轉化為未解密的token對象將未解密的token對象解密得到解密後的token對象從解密後的token對象裡取參數一、擷取解密後的token該函數根據request,獲得tokenstring,並轉為未解密token對象,解密後得到解密token對象import
Time of Update: 2018-08-08
在以太坊中,提供了 abigen 的指令給我們智能合約的 go 語言檔案,網上許多教程也是基於這個指令來產生合約 go 檔案來進行操作的。參考:Github 某源碼實現使用Go語言與Ethereum智能合約進行互動但是這些文章年代久遠....存在讓你崩潰的問題。abigen 內部其實是調用了 solc 來對合約檔案進行編譯產生對應語言版本的代碼檔案,按照教程正常來說只需要這樣一行指令就能搞定abigen --sol yourContract.sol --pkg main --out