原创 golang閉包遞歸研究

閉包 理解閉包: 閉包是指延伸了作用域的函數, 其中包含函數定義體中引用、但是不在定義體中定義的非全局變量。函數是不是匿名沒有關係, 關鍵是他能訪問定義體之外定義的非全局變量。 閉包基本概念: 閉包是可以包含自由(未綁定到特定對象

原创 mgo 併發

官方權威 https://www.mongodb.com/blog/post/running-mongodb-queries-concurrently-with-go 代碼 package main import ( "fm

原创 golang yaml使用

config.yaml 文件 mysql: host: 192.168.1.300 redis: database: 10 mongo: host: 192.168.1.300 config.go package

原创 golang 平時遇到問題 積累

通道有無緩衝區 的應用場景 以及理解 無緩衝 實現同步 package main import "fmt" func main() { t := make(chan int) fmt.Println("waiting")

原创 golang 接口

接口 一組method 簽名的組合 通過interface 來定義對象的一組行爲 interface 就是一組抽象方法的集合 interface 類型 interface 類型定義了一組方法, 如果某個對象實現了某個接口中的方法

原创 redis分佈式鎖的實現 golang

代碼 獲得鎖 釋放鎖 分佈式鎖可用必須滿足一下四個條件 互斥性 在任意時刻 只有一個客戶端能獲取到鎖 不會發生死鎖 即使有一個客戶端 在持有鎖的期間奔潰而沒有主動解鎖, 也能保證後續客戶端能解鎖 具有容錯性 只要大部分的r

原创 Golang 下劃線語義

丟棄返回值 _,err := Test() 用在變量接口斷言 用來判斷對象是否實現了接口 package main import ( "fmt" "yangxd/te" ) var _ Foo = Dog{} // 如

原创 golang Timer Tricker

Timer Tricker 代碼 package main import ( "fmt" "sync" "time" ) /** *ticker只要定義完成,從此刻開始計時,不需要任何其他的操作,每隔固定時間都會觸發。

原创 go語言協程 併發

協程 目前比較流行的併發模式 多進程 資源開銷最大 好處 進程間 互不影響。 系統開銷大 所有進程都是由內核管理的。 多線程 多線程在大部分操作系統上面都屬於系統層面的併發模式。 比多進程的開銷小, 但是總體開銷大 基於 回調

原创 golang sync.WaitGroup 用法

執行一個簡單協程 package main import ( "fmt" "time" ) func main(){ for i := 0; i < 100 ; i++{ go fmt.

原创 golang 疑問知識點總結

函數作爲值 作爲類型 在go 中函數也是一種變量, 我們可以通過type 來定義它, 他的類型就是所有擁有相同的參數, 相同的返回值的一種類型。 type typeName func(input1 inputType1 , inp

原创 golang time.Duration() 問題

問題 package main import "time" func main(){ connectTimeout := 10 time.Sleep(time.Second*connectTimeout) } 這

原创 golang redigo 發佈訂閱使用

redigo 對 發佈訂閱的使用 redigo 對redis 的發佈訂閱機制放在pubsub.go 中 訂閱主題後 通過Receive() 函數接受發佈訂閱主題的消息 // Receive returns a pushed mes

原创 golang int int64 之間的轉化 string

1、string 轉int int,err := strconv.Atoi(string) 2、 string 轉int64 int64Obj , err := strconv.Parselnt(string, 10, 64)

原创 golang使用sqlx 操作 mysql

sqlx 官方文檔 https://github.com/jmoiron/sqlx 文檔甚好, 基本的 連接和使用都有 , 除了 insert 外最經常使用到的就是 select one 這些比 原生的sql api 好用太多