使用docker部署go项目并实现热编译

Dockerfile:```goFROM golang:latestWORKDIR www/src/gomod_studyCOPY . www/src/gomod_study配置国内代理RUN go env w GOPROXY=https://goproxy.io,direct下载 go.mod 文件中指明的所有依赖 RUN go mod d
阅读全文

Goland IDE 配置 GOROOT 找不到SDK

原因:ide和goland的版本不一致解决方法:打开GO的安装目录下的src\runtime\internal\sys\zversion.go文件,添加一行。const TheVersion = `go1.17.8`重启ide,去配置GO ROOT就看到自动识别出goland了
阅读全文

golang限制协程并发数

```gopackage mainimport ( "fmt" "sync" "time")//使用带缓冲的channel控制协程并发数func main() { a := int{1, 2, 3, 4, 5, 6} limit := 2 goLimit := make(chan bool, limit) var wg =
阅读全文

goroutine池

worker pool(goroutine池) 本质上是生产者消费者模型 可以有效控制goroutine数量,防止暴涨 需求: 计算一个数字的各个位数之和,例如数字123,结果为1+2+3=6 随机生成数字进行计算```gopackage mainimport ( "fmt" "math/rand")type Job st
阅读全文

goroutine通道(channel)死锁与处理

goroutine死锁package main场景一:```gofunc main() { ch := make(chan int) < ch // 阻塞main goroutine, 通道被锁}```输出:```gofatal error: all goroutines are asleep deadlock!go
阅读全文

golang中的goroutine、channel、select简单运用

关闭channel:```gopackage mainimport "fmt"//close();关闭channelfunc main() { c := make(chan int) go func() { for i := 0; i < 5; i++ { c < i } //关闭channel close
阅读全文

golang中的pair

1、任意一个变量都是包含`pair<type:, value: ` 2、由两个指针一个type指针,一个value指针组成的3、type包含静态的类型 (例:int string float)和具体类型(interface所指向的具体类型)例:```govar a string//pari<type:string,value:"abc" a = "a
阅读全文

使用canal实现mysql数据同步

MySQL主备复制原理: MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看) MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log) MySQL s
阅读全文

docker容器内如何使用supervisor

宿主机内安装supervisor,然后执行容器内命令```phpprocess_name=%(program_name)s_%(process_num)02dcommand=php /home/www/ultron/artisan queue:work redis timeout=300 tries=1command=docker exec oaphp /u
阅读全文

docker安装rabbitMQ

使用 Docker 安装 RabbitMQ
阅读全文