Time of Update: 2018-08-08
準備知識:MySQL事務1 基本操作sql.Txtx會從串連池中取一個閒置串連,直至調用commit或者rollback才會釋放tx, err := db.Begin() // 建立tx對象tx.Query(command1)tx.Exec(command2)tx.Commit()2 並發事務只有一個串連,事務內的操作是串列的db, _ := sql.Open(...)rows, _ := db.Query("SELECT id FROM tt_users")for
Time of Update: 2018-08-08
go 彙編編譯一個最簡單的go執行程式package mainimport "fmt"func main(){ fmt.Println("helloworld")}go build -gcflags "-N -l" test.go使用go tool objdump 反組譯碼go tool objdump test >test.asmgdb
Time of Update: 2018-08-08
先找個例子來看一下:package main import "fmt" // Greeting function typestype Greeting func(name string) string func say(g Greeting, n string) { fmt.Println(g(n))} func english(name string) string { return "Hello, " + name} func main(
Time of Update: 2018-08-08
代碼倉庫goroutine-poolgolang的協程管理golang協程機制很方便的解決了並發編程的問題,但是協程並不是沒有開銷的,所以也需要適當限制一下數量。不使用協程池的代碼(範例程式碼使用chan實現,代碼略囉嗦)func (p *converter) upload(bytes [][]byte) ([]string, error) { ch := make(chan struct{}, 4) wg := &sync.WaitGroup{}
Time of Update: 2018-08-08
添加編輯和儲存功能繼續上篇文章【Go基礎學習記錄 - 編寫Web應用程式 - 添加編輯和儲存功能(一)】如果將上篇文章的邏輯進行構建並運行,試圖訪問一個不存在的wiki,比如/view/APageThatDoesntExist,將看到包含HTML的空頁面。這是因為它忽略了loadPage的錯誤傳回值,並繼續嘗試填寫沒有資料的模板。相反,如果請求的頁面不存在,它應該將用戶端重定### 處理不存在的頁面修改下viewHandler來達到我們的需求,如下func viewHandler(w http.
Time of Update: 2018-08-08
我最近在瀏覽 Hacker News 時看到一篇吸引我眼球的文章《[Python中的Lambdas和函數](http://www.thepythoncorner.com/2018/05/lambdas-and-functions-in-python.html?m=1)》,這篇文章 —— 我推薦你自己閱讀一下 —— 詳細講解了如何運用 Python 的 匿名函式,並舉了一個例子展示如何使用 Lambda 函數實現乾淨,[DRY](https://en.wikipedia.org/wiki/Don%
Time of Update: 2018-08-09
Hyperledger Fabric 交易流Hyperledger Fabric v1.1提供了幾個特殊的鏈碼來執行某些特殊的任務,這些鏈碼被稱為系統鏈碼 (System Chaincode)。本文的目的是簡述這些鏈碼的實現、功能和用法。與使用者鏈碼類似,系統鏈碼也實現了 Init() 和 Invoke() 方法。Fabric中一共有五種合約:Configuration System Chaincode (CSCC) -- core/scc/cscc/configure.goLife
Time of Update: 2018-08-09
1. golang安裝官網下載地址:https://golang.org/dl/筆者使用的是這個版本:https://golang.org/doc/install?download=go1.10.3.windows-amd64.msi, 下載不了的話,就掛個vpnIMG20180809_162804.png安裝下載好安裝包之後,雙擊安裝包安裝即可,安裝的時候,你可以指定安裝的目錄2. golang ide安裝筆者使用的go ide是liteide,
Time of Update: 2018-08-09
golang中比較好用的第三方開源redisclient有:go-redis源碼地址:https://github.com/go-redis/redis文檔地址:http://godoc.org/github.com/go-redis/redisredigo源碼地址:https://github.com/gomodule/redigo文檔地址:http://godoc.org/github.com/gomodule/redigo/redis兩個都是非常優秀的redisclient庫,也是redi
Time of Update: 2018-08-09
前言前面我們一直在做prometheus的遠程儲存的工作,一直缺乏一種大廠背書的解決方案。具體可能有下面的幾點:大廠背書且開源可承接大規模海量metrics非weave
Time of Update: 2018-08-09
看一段代碼:package mainimport ("fmt""runtime""sync")var (counter intwg sync.WaitGroup)func main() {wg.Add(2)go incCounter(1)go incCounter(2)wg.Wait()fmt.Println("Final Counter:", counter)}func incCounter(id int) {defer
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-09
下載LinuxGo01下載LinuxGo.png進入檔案夾02進入檔案夾.png開啟terminal03開啟terminal.pngterminal介面04terminal介面.png解壓安裝go05解壓安裝go.png輸入使用者密碼06輸入使用者密碼.png切換到go環境安裝目錄07切換到go環境安裝目錄.png開啟terminal08開啟terminal.png在案頭建立Golang檔案夾09在案頭建立Golang檔案夾.png在Golang檔案夾下建立三個檔案夾10在Golang檔案夾下建
Time of Update: 2018-08-09
使用過Python語言的朋友們可能使用過forgery_py,它是一個偽造資料的工具。能偽造一些常用的資料。在我們開發過程和效果展示是十分有用。但是沒有Go語言版本的,所以就動手摺騰吧。從源碼入手在forgery_py的PyPi有一段的執行個體代碼:>>> import forgery_py>>> forgery_py.address.street_address()u'4358 Shopko Junction'>>>
Time of Update: 2018-08-08
以下內容均屬個人理解,如果錯誤,還請斧正Whatgoroutine是golang中的coroutine,也叫協程,微軟大法稱之纖程(Fiber)。協程是一種更細粒度的調度,可以滿足多個不同處理邏輯的協程共用一個線程資源。Why在談goroutine之前,先解釋下為什麼要使用這種技術:大家應該知道最初作業系統最細粒度的調度是核心級線程(Thread),線程其實就是一個棧加一堆資源。作業系統一會將CPU的時間片分給線程A,一會將CPU的時間片分給線程B,靠A和B的棧來儲存A和B的執行狀態。起初軟體的
Time of Update: 2018-08-08
Golang 程式中定義的類型有與其相關的方法。讓我們來看一個例子:```gotype T struct { name string}func (t T) PrintName() { fmt.Println(t.name)}func main() { t := T{name: "Michał"}
Time of Update: 2018-08-08
1.Fisher–Yates Shuffle(費雪耶茲 隨機置亂演算法) 演算法思想就是從原始數組中隨機抽取一個新的數字到新數組中。演算法英文描述如下:Write down the numbers from 1 through N.Pick a random number k between one and the number of unstruck numbers remaining (inclusive).Counting from the low end, strike out
Time of Update: 2018-08-08
筆者使用的mongo驅動是mgo, 這個使用的人比較多,文檔也比較齊全官網地址:http://labix.org/mgo文檔地址:https://godoc.org/labix.org/v2/mgo源碼地址:https://github.com/go-mgo/mgo1. mgo包安裝go get gopkg.in/mgo.v2但是貌似現在從gopkg.in下載不了,迂迴一下,先從github上下載go get
Time of Update: 2018-08-08
1. 下載protoc可以去https://github.com/google/protobuf/releases下載源碼自己編譯或者https://github.com/google/protobuf/releases去下載編譯好的二進位檔案2. 安裝protoc-gen-gogo get github.com/golang/protobuf/protoc-gen-go安裝好了之後, 在$GOPATH/bin下面會找到protoc-gen-go.exe3. 使用protoc.exe 和
Time of Update: 2018-08-08
Hyperledger Fabric 在Ubuntu上的環境搭建首先在VMware Workstation虛擬機器上安裝Ubuntu,配置好環境,調好中文語言、解析度後,開啟終端。PS:在安裝Ubuntu系統後如果發現與Windows系統的檔案不能相互複製,網上查了很多教程,發現都是不能用的,能實現的方法如下所示:開啟終端,輸入:1:sudo apt-get autoremove open-vm-tools2:sudo apt-get install