原创 對int類型進行i++自增操作時並不是原子操作,併發不安全

  package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(5) var m int32 = 0 var group

原创 go-micro 本地搭建及使用consul

安裝(前提是本地已安裝protobuf和protof的go擴展) go get github.com/micro/micro go get github.com/micro/go-micro go get github.com/micro

原创 grpc調用protobuf生成的文件

記錄下protoc生成go文件後,使用grpc調用的過程 grpc安裝  go get -u -v google.golang.org/grpc  server.go package main import ( "contex

原创 protobuf windows環境安裝

  protocol buffers 是一種語言無關、平臺無關、可擴展的序列化結構數據的方法,它可用於(數據)通信協議、數據存儲等。總之微服務中需要使用的東西 安裝protobuf 下載protobuf  https://github.co

原创 golang標準庫——image

使用golang標準庫中的 image 庫合成圖片 package main import ( "fmt" "image" "image/draw" _ "image/jpeg" "image/png" "os" ) fu

原创 golang——image庫圖片上寫字

package main import ( "github.com/golang/freetype" "image" "image/color" "image/png" "io/ioutil" "log" "os" )

原创 GinAdmin——基於golang的web管理平臺

GinAdmin 這個項目是以Gin框架爲基礎搭建的後臺管理平臺,雖然很多人都認爲go是用來開發高性能服務端項目的,但是也難免有要做web管理端的需求,總不能再使用別的語言來開發吧。所以整合出了GinAdmin項目,請大家多提意見指正! G

原创 golang學習筆記——json數據

生成json格式字符 使用結構體生成 package main   import (     "encoding/json"     "fmt" )   //用於json的結構體類型成員首字母必須大寫 // type Jon st

原创 golang學習筆記——定時器

Timer定時器 啓動 package main   import (     "fmt"     "time" )   func main() {     <-time.After(2 * time.Second)     fm

原创 golang學習筆記——字符串操作

字符串操作 package main   import (     "fmt"     "strings" )   func main() {     str := "hello world"     //contains 是否包含指定字

原创 golang學習筆記——文件操作

標準設備文件操作 package main   import ( "os" )   func main() { os.Stdout.WriteString("hello world") //相當於fmt.Println }   磁盤文件

原创 golang學習筆記——協程

當主協程退出後子協程也會退出 package main   import ( "fmt" "time" )   func main() { go func() {      i := 0      for {           i++

原创 golang學習筆記——Channel

Channel通道 無緩存通道  make(chan type類型)   注意:讀和寫都是阻塞執行的 package main   import (     "fmt"     "time" )   var ch = make(

原创 golang學習筆記——異常

自定義異常的兩種方式 package main   import (     "errors"     "fmt" )   func main() {     //使用fmt.Errorf     err1 := fmt.Errorf("

原创 golang學習筆記——select

select就是用來監聽和channel有關的IO操作,當 IO 操作發生時,觸發相應的動作 package main   import (     "fmt"     "time" )   func main() {     ch :=