- 博客(6)
- 收藏
- 关注
原创 golang panic 堆栈信息分析
问题由来以前出现panic问题,我们会习惯通过日志给出的代码行,在对比数据分析问题,如果推断不出来,我们会多加日志,重新panic,再继续定位。如果打印了很多堆栈日志,但是日志信息不够怎么办,我们总不能加日志等下次重现后再定位吧?这样定位bug的工作效率特别低,所以我们可以仔细阅读堆栈日志,结合打印的日志快速定位bug。在阅读堆栈日志时,可能我们会疑惑:为什么定义是这样:func TestStack(slice []string, str string, i int)但堆
2022-03-13 02:04:56
2144
原创 Http协议详解
定义HTTP(HyperText transfer Protocol)是互联网上应用广泛的一种网络协议,又称为超文本传输协议。所以的WWW文件都必须遵守这个标准。设计HTTP起初目的是提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelsol构思了一种通过计算机处理文本信息的方法。并称为超文本,这成为HTTP超文本传输协议标准结构的发展根基。并将RFC 2616定义为HTTP 1.1。作用和特点HTTP是一种客户端和服务端请求和应答的标准(TCP)。客户端是终端用户。服务端是网站
2022-02-09 21:19:30
1610
原创 Golang context包必备
应用场景在Go http包中的Server中,每个请求会有一个对应的goroutine里面处理,请求处理函数通常会启动额外的goroutine去访问后端服务,比如RPC服务和数据库,用来处理一个请求的goroutine通常需要访问一些与请求特定的数据,如,终端用户身份认证信息,验证token,请求截至时间.当一个请求被取消或超时,所有用来处理该请求的goroutine都应该快速退出。然后系统才能释放这些goroutine占用的资源。Context原理Context的调用是链式的,通过WithCa
2022-01-24 20:31:40
477
原创 使用Golang计算网络IP地址的CIDR
CIDR详解参考link:https://blog.youkuaiyun.com/han156/article/details/77817031通过ip/mask获取起止ipfunc getIpSegRange(userSegIp, offset uint8) (int, int) { var ipSegMax uint8 = 255 netSegIp := ipSegMax << offset segMinIp := netSegIp & userSegIp segMaxI.
2022-01-22 19:53:24
3320
原创 golang中net包用法
net包提供了可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket.虽然本包提供了对网络原语的访问,但大多数使用者只需要Dial、Listen和Accpet函数的基本接口;以及Conn和Listener接口。crypto/tls包提供了相同的接口和类似的Dial和Listen函数。常量//表示ip地址的长度(bytes),其中ipv4的长度为4,ipv6为16const ( IPv4len = 4 IPv6len = 16)常见的ip
2022-01-22 13:17:50
3822
原创 bufio详解
bufio包实现了有缓冲的I/O,它封装了一个io.Reader或io.Write接口对象,创建一个实现实现了该接口,同时提供缓冲和一些文本I/O的帮助函数.type Reader struct { buf []byte rd io.Reader // reader provided by the client r, w int // buf read and write positions
2022-01-21 10:27:13
4005
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人