“區塊鏈是一門集合密碼學、共識演算法、智能合約、超級賬本等多門技術的複雜性綜合學科。”尹正表示,區塊鏈培訓機構的師資品質及其對區塊鏈行業的認知水平參差不齊,普通消費者也無從考究。
Go語言主要用作伺服器端開發,其定位是用來開發“大型軟體”的,適合於很多程式員一起開發大型軟體,並且開發週期長,支援雲端運算的網路服務。Go語言能夠讓程式員快速開發,並且在軟體不斷的增長過程中,它能讓程式員更容易地進行維護和修改。它融合了傳統編譯型語言的高效性和指令碼語言的易用性和富於表達性。
寫go語言並發需要注意的幾點:
1. golang 1.2版本 goroutine的runtime.GOMAXPROCS 如果沒有被定義,預設是1,從1.5之後改為預設是runtime.CpuNum(),go底層其實是並發GOMAXPROCS 個線程,然後進行並發。 但是並發也是每個goroutine分先後進行運行,並不是真正的並發輪詢,所以必須讓goroutine的加入輪詢調度runtime.Gosched(),保證所有goroutine齊頭並進,以下面程式為例,如果不加入 go的輪詢調度,由於say函數goroutine是死迴圈,所以永遠不會進行環境切換,也就導致了永遠輸出不了world,主線程會一直佔據著cpu時間片。
package main
import (
"fmt"
"runtime"
)
func say(s string) {
for i := 0; i < 5; i++ {
runtime.Gosched() //讓執行此函數的goroutine進行go的輪詢調度
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
高能預警,兄弟連教育區塊鏈直播課程8月持續火爆來襲!
原價1188元的12節區塊鏈進階課程,現僅需1元!
還可免費領取《Go語言基礎實戰項目開發》與《Go語言進階實戰項目開發》教材兩本!!
限時限量!!先到先得!!
http://www.ydma.cn/open/course/24
關注兄弟連區塊鏈公眾號可以獲得更多區塊鏈技術乾貨!!!