undefined

一、go http client 设置超时

1. http请求到完成响应的时间限制
1
2
3
client := http.Client{
Timeout: 5*time.second,
}

这个超时是整个 Http 请求到完成响应的时间限制。

2. tcp 连接阶段的超时
1
2
3
4
5
6
7
8
9
10
11
12
client := http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
Dial: (&net.Dialer{
Timeout: 2 * time.Second,
Deadline: time.Now().Add(3 * time.Second),
KeepAlive: 2 * time.Second,
}).Dial,
TLSHandshakeTimeout: 2 * time.Second,
},
Timeout: 5 * time.Second,
}

查看更多

undefined

定时器

一、ticket 使用

Ticker是周期性定时器,即周期性的触发一个事件,通过Ticker本身提供的管道将事件传递出去。

Ticker的数据结构与Timer完全一致:

1
2
3
4
type Ticker struct {
C <-chan Time
r runtimeTimer
}

Ticker 对外仅仅暴露一个 channel,指定的时间到来就往该 channel 中写入系统时间,也即一个事件。

查看更多

undefined

goland中gopath

详解地址:https://www.jianshu.com/p/cf298a0db3fa

在Jetbrains 公司的 GoLand 集成开发环境(IDE)中GOPATH分两种:

1、Global GOPATH

2、Project GOPATHGlobal GOPATH与Project GOPATH 都代表项目所使用的 GOPATH,该设置会被保存在工作目录的 .idea 目录下,不会被设置到环境变量的 GOPATH 中,但会在编译时使用到这个目录。建议在开发时只填写项目 GOPATH,每一个项目尽量只设置一个 GOPATH,不使用多个 GOPATH 和全局的 GOPATH。在IDE中如果这两个都不设置,那默认会选择GOPATH的环境变量,也就是安装Go时GOPATH被赋予的默认目录。

关于gopath的路径问题

查看更多

undefined

golang网络编程如何正确关闭TCP连接以及管理它的生命周期

以下讨论的 TCP 连接对象皆为 golang 的 net.conn 对象

一、结论

  1. Read 方法返回 EOF 错误,表示本端感知到对端已经关闭连接(本端已接收到对端发送的FIN,本端属于被动关闭,则处于CLOSE_WAIT状态)。此后如果不调用Close方法,只释放本端的连接对象,则连接处于非完全关闭状态(CLOSE_WAIT)。即文件描述符发生泄漏。
  2. Write 方法返回 broken pipe 错误,表示本端感知到对端已经关闭连接(本端已接收到对端发送的RST)。此后本端可不调用Close方法。连接处于完全关闭状态
  3. 由于 golang 里 net.conn 内部对文件描述符的所有 io 操作都有状态保护,所以即使在对端或本端关闭了连接之后,依然可以任意次数调用 Read、Write、Close 方法
查看更多

undefined

go语言二次复习

go语言字符串连接可以使用 + 号

defer 语句是在return 之后执行的

并发指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,通过 CPU 时间片轮转使多个进程快速交替的执行。而并行的关键是你有同时处理多个任务的能力。并发和并行都可以是很多个线程,就看这些线程能不能同时被(多个)CPU 执行,如果可以就说明是并行,而并发是多个线程被(一个)CPU 轮流切换着执行。

undefined

go语言学习网站

The Way to Go

《the way to go》的 中文版本,目前还在持续更新中,截止今天(2020/04/30)翻译进度已经达到 96.92%。

网站链接https://learnku.com/docs/the-way-to-go

TopGoer 教程

这个网站是我在搜索资料的时候偶然发现的,从目录可以看出内容非常多,网络编程、并发编程,很多主流的 Web 框架都有。

网站链接http://www.topgoer.com/

易百教程 - Go 系列

和菜鸟教程,W3Cschool一样,易百教程也是一个一站式的编程语言入门教程网站,目前为止,共发布了 157 个系列教程,每个教程都很适合新手学习。

查看更多