golang
猴神
求真
展开
-
golang nohup 后台守护进程运行
nohup ./bin/test > nohub.out 2>&1 &意思是将test这个程序的输入重定向到nohub.out中,最后的&表示后台运行如果要停止,需要找到该进程再杀掉$ pa aux|grep testroot 123 0.0 0.1 1079748 8336 pts/0 Sl 09:58 0:00 ./bin/testroot 456 0.0 0.0 6300 736 pts/0 S+原创 2022-01-26 10:03:39 · 1157 阅读 · 0 评论 -
如何在 Go (Golang) 中重用 HTTP 连接(复用TCP)
在Golang中想要复用之前的TCP连接,必须要把上一个连接的Body读取完毕才能复用检查工具:httptrace.ClientTrace测试代码:package mainimport ( "context" "io" "io/ioutil" "log" "net/http" "net/http/httptrace")func main() { // client trace to log whether the request's underlying tcp connect原创 2022-01-21 10:17:16 · 4746 阅读 · 0 评论 -
golang go协程并发请求与WaitGroup
在go里面执行N次并发请求是非常简单的,比如并发执行100次请求,就启100个协程就好了func main() { i := 0 wg := &sync.WaitGroup{} for i < 10 { wg.Add(1) // 放在循环里面,就+1,放在循环外面,要执行多少次计算就加几,比如在for外面:wg.Add(10)是一样的效果 url := "https://www.baidu.com" go func(url string) { resp, _ :=原创 2022-01-20 12:05:08 · 971 阅读 · 0 评论 -
golang Reqeust Header.Add key 自动转大写的问题
发送请求时,想自定义一些header,但在golang里面使用req.Header.Add或Header.Set时,会自动把我们的KEY转成大写。如果不想转成大写的话,可以用下面的方法(经测试,go的做法是正确的。因为不管你转不转大写在接收端都会按大写接收,因此不必纠结大小写问题) req, err := http.NewRequest("GET", reqUrl, nil) if err != nil { return nil, err } req.Header["my_header"] =原创 2022-01-19 10:20:54 · 1591 阅读 · 0 评论 -
golang gorm update or insert
在gorm中,想要实现“如果存在就更新,否则就插入”的需求,可以通过以下方式实现 db.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "id"}}, // 这里的列必须是唯一的,比如主键或是唯一索引 DoUpdates: clause.AssignmentColumns([]string{"num", "title"}), // 更新哪些字段 }).Create(&User{ Desc: "ee"原创 2022-01-14 12:52:47 · 4074 阅读 · 0 评论 -
golang time.Parse timezone 时区问题
当使用time.Parse解析日期时,会发现和实际的时间不一致,这是因为parse是默认时区是UTC。解决方案是用ParseInLocation代替Parseimport ( "time")func main() { t1, err := time.ParseInLocation("2006-01-02 15:04:05.000", "2022-01-12 10:55:00.000", time.Local)}转载:原文...原创 2022-01-12 10:56:45 · 1030 阅读 · 0 评论 -
go 迭代变量捕获
在go中,循环变量使用相同的变量地址,只是每次迭代的时候不断更新其值。证明一下:func main() { sli := []int{1, 2, 3, 4, 5} for _, v := range sli { fmt.Printf("%x %d\n", &v, v) }}c000014098 1c000014098 2c000014098 3c000014098 4c000014098 5知道了它的特性后,就很容易理解go迭代变量捕获问题var slice []fun原创 2022-01-10 12:29:08 · 416 阅读 · 0 评论