<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[manclient的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/manclient</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; manclient]]></copyright><item><title><![CDATA[golang panic 堆栈信息分析]]></title><link>https://blog.youkuaiyun.com/manclient/article/details/123453516</link><guid>https://blog.youkuaiyun.com/manclient/article/details/123453516</guid><author>manclient</author><pubDate>Sun, 13 Mar 2022 02:04:56 +0800</pubDate><description><![CDATA[问题由来

以前出现panic问题，我们会习惯通过日志给出的代码行，在对比数据分析问题，

如果推断不出来，我们会多加日志，重新panic，再继续定位。

如果打印了很多堆栈日志，但是日志信息不够怎么办，我们总不能加日志等下次重现后再定位吧？

这样定位bug的工作效率特别低，所以我们可以仔细阅读堆栈日志，结合打印的日志快速定位bug。

在阅读堆栈日志时，可能我们会疑惑：



为什么定义是这样：
func TestStack(slice []string, str string, i int)


但堆]]></description><category></category></item><item><title><![CDATA[Http协议详解]]></title><link>https://blog.youkuaiyun.com/manclient/article/details/122816186</link><guid>https://blog.youkuaiyun.com/manclient/article/details/122816186</guid><author>manclient</author><pubDate>Wed, 09 Feb 2022 21:19:30 +0800</pubDate><description><![CDATA[定义

HTTP(HyperText transfer Protocol)是互联网上应用广泛的一种网络协议，又称为超文本传输协议。所以的WWW文件都必须遵守这个标准。设计HTTP起初目的是提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelsol构思了一种通过计算机处理文本信息的方法。并称为超文本，这成为HTTP超文本传输协议标准结构的发展根基。并将RFC 2616定义为HTTP 1.1。

作用和特点

HTTP是一种客户端和服务端请求和应答的标准(TCP)。客户端是终端用户。服务端是网站]]></description><category></category></item><item><title><![CDATA[Golang context包必备]]></title><link>https://blog.youkuaiyun.com/manclient/article/details/122650701</link><guid>https://blog.youkuaiyun.com/manclient/article/details/122650701</guid><author>manclient</author><pubDate>Mon, 24 Jan 2022 20:31:40 +0800</pubDate><description><![CDATA[应用场景

在Go http包中的Server中，每个请求会有一个对应的goroutine里面处理，请求处理函数通常会启动额外的goroutine去访问后端服务，比如RPC服务和数据库，用来处理一个请求的goroutine通常需要访问一些与请求特定的数据，如，终端用户身份认证信息，验证token,请求截至时间.当一个请求被取消或超时，所有用来处理该请求的goroutine都应该快速退出。然后系统才能释放这些goroutine占用的资源。

Context原理

Context的调用是链式的，通过WithCa]]></description><category></category></item><item><title><![CDATA[使用Golang计算网络IP地址的CIDR]]></title><link>https://blog.youkuaiyun.com/manclient/article/details/122642130</link><guid>https://blog.youkuaiyun.com/manclient/article/details/122642130</guid><author>manclient</author><pubDate>Sat, 22 Jan 2022 19:53:24 +0800</pubDate><description><![CDATA[CIDR详解

参考link:https://blog.youkuaiyun.com/han156/article/details/77817031

通过ip/mask获取起止ip


func getIpSegRange(userSegIp, offset uint8) (int, int) {
	var ipSegMax uint8 = 255
	netSegIp := ipSegMax &lt;&lt; offset
	segMinIp := netSegIp &amp; userSegIp
	segMaxI.]]></description><category></category></item><item><title><![CDATA[golang中net包用法]]></title><link>https://blog.youkuaiyun.com/manclient/article/details/122631576</link><guid>https://blog.youkuaiyun.com/manclient/article/details/122631576</guid><author>manclient</author><pubDate>Sat, 22 Jan 2022 13:17:50 +0800</pubDate><description><![CDATA[net包提供了可移植的网络I/O接口，包括TCP/IP、UDP、域名解析和Unix域socket.

虽然本包提供了对网络原语的访问，但大多数使用者只需要Dial、Listen和Accpet函数的基本接口；以及Conn和Listener接口。crypto/tls包提供了相同的接口和类似的Dial和Listen函数。

常量

//表示ip地址的长度（bytes）,其中ipv4的长度为4，ipv6为16



const (
    IPv4len = 4
    IPv6len = 16
)


常见的ip]]></description><category></category></item><item><title><![CDATA[bufio详解]]></title><link>https://blog.youkuaiyun.com/manclient/article/details/122608855</link><guid>https://blog.youkuaiyun.com/manclient/article/details/122608855</guid><author>manclient</author><pubDate>Fri, 21 Jan 2022 10:27:13 +0800</pubDate><description><![CDATA[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
   ]]></description><category></category></item></channel></rss>