Cwww3's Blog

Record what you think

0%

Question1

time.After 内存泄漏代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
"time"
)

func main() {
ch := make(chan int, 10)

go func() {
var i = 1
for {
i++
ch <- i
}
}()

for {
select {
case x := <- ch:
println(x)
case <- time.After(3 * time.Minute):
println(time.Now().Unix())
}
}
}

阅读全文 »

Linux常用命令

  • find
1
2
3
4
5
6
7
# 只在当前目录下搜索 符合条件的文件
find . -maxdepth 1 -name 表达式
-type f/d 指定类型
-perm xxx 指定权限
-a 与
-o 或
! -not 非
阅读全文 »

WaitGroup介绍

WaitGroup 提供了三个方法:

1
2
3
func (wg *WaitGroup) Add(delta int)
func (wg *WaitGroup) Done()
func (wg *WaitGroup) Wait()
阅读全文 »

pprof

部署

  • web程序
1
2
3
import (
_ "net/http/pprof" // 引入 pprof 包
)
1
2
3
4
5
main() {
...
fmt.Println(http.ListenAndServe("localhost:port", nil))
...
}
  • 对于非web程序
1
2
3
4
5
6
7
8
// 通过启动一个goroutine监听端口
main() {
...
go func() {
fmt.Println(http.ListenAndServe("localhost:port", nil))
}()
...
}
1
2
3
4
// 或者使用runtime/pprof包 并从程序中获取相关信息
import (
_ "runtime/pprof" // 引入 pprof 包
)
阅读全文 »