原创 Go 學習筆記12.once使用 cond條件變量控制 生產者消費者模型

Go語言特色編程 1.併發編程 1.1 sync.WaitGroup 類似於信號量 Add(num) 加 num; Done() 減一; Wait() 阻塞,一直到減到0時爲止 package main import (

原创 Go 學習筆記14.tcp服務

tcp-server.go // 收到什麼發回去什麼 package main import ( "fmt" "log" "net" ) func main() { // 1.建立監聽,綁定端口 tcp_serve

原创 Go 學習筆記15.http服務

http-server.go package main import ( "fmt" "io" "net/http" "strings" ) // 處理函數 func helloserver(w http.Respon

原创 Go 學習筆記13.編寫測試

編寫測試要求 文件名命名 xx_test.go 測試函數命名 TestXxx開頭 Xxx首字母大寫 函數參數 *test.T 類型 需要測試的程序源碼 animal.go package animal import "fm

原创 Go 學習筆記10.併發編程例子 定時器、打點器、工作池、速率限制、原子計數器

定時器 go 語言自身實現了定時器 package main import "time" import "fmt" func main() { // 創建一個定時器對象 , 指定需要等待的時間,然後它將提供一個用

原创 Go 學習筆記11.互斥鎖,讀寫鎖,狀態協程

互斥鎖 互斥所 它由標準庫sync.Mutex來表示 方法有 Lock和Unlock package main import ( "fmt" "time" ) func printer(str string

原创 Go 學習筆記09.管道 常見操作 .md

管道超時處理 package main import "time" import "fmt" func main() { c1 := make(chan string, 1) go func() {

原创 Go 學習筆記07.錯誤處理

package main import "errors" import "fmt" // go語言的慣例,最有一個返回參數 需要一個錯誤類型 // 如果傳入的值爲42 則觸發異常 func f1(arg int) (in

原创 Go 學習筆記08.協程和管道

go 協程 package main import "fmt" func f(from string) { for i := 0; i < 3; i++ { fmt.Println(from, ":",

原创 Go 學習筆記06.指針、結構體、方法、接口

指針 如果i是變量,通過 &i 語法來取得 i 的內存地址 如果i是指針,通過*i 語法來取得 i的值 package main import "fmt" // 一個函數,接收的是數據類型 // 一個函數,接收的是數據類型的

原创 Go 學習筆記05.閉包和遞歸

閉包 閉包可以理解成 定義在一個函數內部的函數,有函數嵌套,且裏面的函數用到了外層函數的值(沒有傳參) package main import ( "fmt" ) // 定義add函數,返回值是一個函數,

原创 Go 學習筆記03.數組 切片 map字典 range遍歷

數組 arrays.go go run arrays.go package main import "fmt" func main() { /* go的`數組`,是固定長度 []創建,[5] 指定數組長度

原创 Go 流程控制 for循環/ if-else判斷/ swith分支

for 循環 for.go package main import "fmt" func main() { // 1.常見的for循環 i := 1 for i <= 3 { fmt.Println(i) i

原创 Dockerfile CMD ENTRYPOINT 命令區別

區別 學習dockerfile可以參考你必須知道Dockerfile RUN 命令執行命令並創建新的鏡像層,通常用於安裝軟件包 CMD 命令設置容器啓動後默認執行的命令及其參數 但CMD設置的命令能夠被docker run命令後

原创 Docker配置阿里雲容器服務

配置阿里雲Docker容器服務 登錄 阿里雲鏡像服務控制檯 首先要有一個自己的阿里雲賬號 1 點擊名稱空間,建議用自己名字/公司名字 比如叫 aliyun-stg 2 點擊鏡像倉庫,創建鏡像,填寫細信息 倉庫可以使用Red