原创 8個goroutine 取1000以內的素數

go語言方便的併發模式,幫助我們更快的實現程序 我採用了8個協程同時取1000以內的素數 準備了三個管道 1、intChan 用來存放1000個數字 2、primeChan 用來存放素數 3、exitChan 如果一個協程取不到int

原创 判斷32or64位機器

在閱讀 go 語言聖經的時候突然發現了一條語句,用來判斷計算機的位數 int = 32 << (^uint(0) >> 63) 在64位機器上面,^uint(0)返回的其實就是18446744073709551615,其實也就是2^6

原创 Golang 二叉樹插入排序

/* 我們將切片中的元素插入到二叉樹中,通過二叉樹的遍歷排序 */ type tree struct { values int left, right *tree } func SortTree(values []int) {

原创 Golang append函數的基本原理

append 函數 func append(slice []Type, elems ...Type) []Type 將元素添加至切片中,如果超出了容量,將會返回一個容量二倍與當前切片的切片 本身我們看不見append的代碼,所以我就

原创 猴子吃桃問題

有一隻猴子,第一天吃了桃子的一半,並且又吃了一個,第二天又吃了一半加一個,直到第十天,吃桃子的時候發現只剩一個了。問,一共有多少個桃子。 分析, 我們倒推 第十天還剩1個,我們假設可以得到 [(第九天桃子數)/2 -1] = 第十天桃

原创 Golang 數組模擬環形隊列

package main import ( "errors" "fmt" "os" ) type CircleQueue struct { head int tail int array [5]int

原创 Golang MongoDB 插入與查詢

mongodb 需要2.6版本以上 mongodb可以去阿里雲的鏡像站下載,有yum源 mongodb的driver go get github.com/mongodb/mongo-go-driver package main i

原创 cannot use auth.callOpts (type []"github.com/coreos/etcd/vendor/google.golang.org。。

在經過了很多此下載之後終於將golang的etcd api吧下載成功了 但是出現了一些錯誤 很多此在github上面下載失敗的原因是下面這個鏈接所說到的 https://github.com/etcd-io/etcd/pull/10

原创 Golang 實現etcd鍵值對的寫入查看,並在租約時間內存在

etcd版本3.2,開放端口2379 package main import ( "context" "fmt" "go.etcd.io/etcd/clientv3" "time" ) func main() {

原创 Golang Cron調度簡單實踐

我實現的是將兩個cron事件放入調度協程中,並判斷是否過期,過期便執行 1、我們創建事件的結構體 2、將結構體放入map 3、起協程,並判斷是否過期,檢測判斷過程應該減少cpu消耗 期間主協程應該睡眠,以防止中斷 主要用到了githu

原创 Golang io.Pipe()中 PipeReader 和 PipeWriter

PipeReader 是管道端的讀取端(並沒有導出字段的結構體)。他實現了io.Reader 和 io.Closer接口 type PipeReader struct{ p *pipe } PipeReader.Read方法:

原创 Golang Redis IN Action

我用CentOS 7的VMware 虛擬機作爲redis-server 安裝 調試 yum install redis vim /etc/redis.conf 修改 bind 0.0.0.0 使其監聽在所有地址, 默認端口6379

原创 Golang FORM相關字段理解

Form 字段 通過調用Request結構體提供的方法,我們可以將URL、Body、或者以上兩者的數據提取到該結構體的Form、PostForm和MultipartForm等字段中。 (1)調用ParseForm方法或者ParseMu

原创 Golang Beego 小實踐

還是閒來無事 收到offer之後便是一條鹹魚 今天花了幾個小時,理解並且利用beego完成了一個註冊和登陸的代碼 First,我們下載beego(go get 前提是安裝了git) go get github.com/astaxie/

原创 Golang 切片的小操作

package main import ( "fmt" ) //切片的反轉 func Fanzhuan(str []int) []int { for i, j := 0, len(str)-1; i < j; i, j = i