git使用ssh自动替代https

在使用go mod的时候,并且在一些私有的仓库,例如公司的代码库中,经常会需要输入密码,我们可以现在公司的代码库中设置好ssh密钥 本地执行git命令: 1 2 3 4 5 git config --global url."git@github.com:".insteadOf "https://github.com/" git config --global url."git@git.company.com:".insteadOf "https://git.company.com/" company.com换成你自己公司的地址即可。 而对于 golang.org 上的代码,在这一阶段,会从 https://go.googlesource.com 获取代码,不过庆幸的是,这些代码都在 github 上有镜像,我们可以替换一下: 1 2 3 git config --global url."git@github.com:golang/".insteadOf "https://go.googlesource.com/" ……

阅读全文

Golang交叉编译

Mac 下编译 Linux 和 Windows 64位可执行程序 1 2 3 4 5 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 1 2 3 4 5 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Windows 下编译 Mac 和 Linux 64位可执行程序(cmd下) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build main.……

阅读全文

k8s服务直接挂掉的原因

首先要确定一点,在本地环境,配置一模一样,程序跑起来是正常的,但是一放到k8s就会直接挂掉,目前收集到两种原因 内存不够,OOM CPU不够 ……

阅读全文

gorm软删除和唯一键冲突的问题

如果直接使用gorm.Model嵌入到自己的model中,就无法对DeletedAt进行附加的操作,最简单的方式就是将gorm.Model的内容拷贝出来,将DeletedAt加入到自己的unique_index中 ……

阅读全文

Run jQuery in Chrome Console

1 2 3 var jqry = document.createElement('script'); jqry.src = "https://code.jquery.com/jquery-3.3.1.min.js"; document.getElementsByTagName('head')[0].appendChild(jqry); jQuery.noConflict(); ……

阅读全文

golang http.client 的 Connection reset by peer 问题

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 func main() { req, err := http.NewRequest("GET", "http://www.baidu.com",nil ) if err != nil { log.Errorf("") } req.Close = true resp, err := http.Client.Do(req) } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 func main() { req, err := http.NewRequest("GET", "http://www.baidu.com",nil ) if err !……

阅读全文

记一次kafka-go使用踩坑(多个partition只会写入一个partition)

kafka-go地址: https://github.com/segmentio/kafka-go 注意:本文解决的问题不是因为kafka配置造成的,是因为代码写得有问题。 今天查看公司某kafka group消费情况的时候,发现该group消费的topic大多数的message写入了同一个partition,先从配置问题查找,后来又去看公司包装的kafka的库的源码查找,看起来都没啥问题。 并且,该问题就出现在一个服务里面,很是让人迷惑。该服务和其他服务最大的不同在于,它每一次都只会发送一个message给kafka。 先看看,kafka-go的demo: 1 2 3 4 5 6 7 8 9 10 11 w := kafka.NewWriter(kafka.WriterConfig{ Brokers: []string{"localhost:9092"}, Topic: "topic-A", Balancer: &kafka.LeastBytes{}, }) 第一个看起来没啥问题,我发现公司代码也是照抄的,继续往NewWriter这个函数里面看,会发现这东西居然是起了一个协程,然后再去查看LeastBytes这个Balancer,他的Balance方法是依赖结构体中字段的状态的,每一次发送的时候都去创建一个新的Balancer,你不翻车谁翻车啊。 因为代码是每次都发送一个message,每次都是一个新的Balancer,所以Balancer每次只需Balance的状态都是一致,所以会造成只写入一个partition中。 总结一下,这个问题可大可小,数据量不大,程序抗得住当然没什么,但是总有一天会扛不住。所以奉劝一句,写完代码记得认认真真测试,程序跑得起来不代表正确。……

阅读全文

定时统计任务参考

时间的触发,过期的数据不再使用(数据来源是消息中间件) 相关联的任务使用事件的方式,例如一天的统计数据是需要小时的数据来生成的,当一天的小时数据生成完了,再去触发生成一天的数据,请勿使用延时的观念,是神坑,勿入。 数据的读取,采用批量的方式读取,一次读取一个限定的值的数量。 数据的写入,采用批量的方式写入,最好有ticker来触发写入未到阈值数量的数据。 撸数据是一次sql撸完,还是分页撸?DBA告诉我让我一次撸完。 ……

阅读全文