![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
文章平均质量分 96
李兆龙的博客
Distributed Systems & NoSQL & Linux Kernel / eBPF & Chaos Engineering
展开
-
问题排查: Goalng Defer 带来的性能损耗
性能优化之路道阻且长原创 2024-06-09 15:18:16 · 640 阅读 · 0 评论 -
使用Listener机制解决Golang包环状引用
引言这个问题出现在写项目中遇到的问题,即包的环状引用,引入Listener机制可以解决这个问题,其实这个解决方案也可以扩展至其他语言。解决其实问题的描述很容易,就是两个包之间互有引用,当然最好 的解决方案就是在设计的时候可以考虑到这个问题,从而在设计阶段就避免这个问题,但不是每个人都可以在设计阶段看的那么深的,所以在出现这个问题的时候我们需要一种机制解决这个问题,其实就是一种特殊的回调机制。package AtestA.gofunc LoadServerConfig(filename strin原创 2020-10-21 10:19:37 · 498 阅读 · 0 评论 -
问题解决:Golang的json包解析字段失败
引言这个问题出现在解析一个json的配置文件时,排错了很久,最后和狗勋一起解决了这个奇怪的问题。正文其实这个问题并不难,因为Golang自带json包,所以我们要做的其实就是在需要解析的结构体中加上相应的标签就可以了,但是可能会出现一些隐性的bug,且没有任何的报错。我们先来看一段代码:type response2 struct { Page int `json:page` Fruits []string `json:fruits`}func main()原创 2020-10-21 09:36:11 · 3176 阅读 · 7 评论 -
Golang reflect.method 使用方法
引言这个问题第一次出现在看6.824的labrpc时候,其中使用到了reflect.method。当时对反射的理解还只是停留在 reflect.type 和 reflect.value,所以在一些关键的地方读的并不是很懂。去查阅资料的时候惊奇的发现除了官方文档以外竟然没有一篇博客讲这个东西的用法,所以决定在搞懂以后记录一篇博客,以帮助有同样问题的朋友。reflect.methodreflect.method其实就是用于在函数传入interface{}以后拿到其函数的定义,...原创 2020-10-16 14:15:55 · 3497 阅读 · 0 评论 -
go中string与[]byte的高效转换(unsafe包)
我们知道在go的设计确保了一些安全的属性来限制很多种可能出现错误的情况,因为go是一个强类型的静态类型语言。所以会在编译器对阻止一些不正确的类型转换。在string和byte[]这两个类型中允许byte[]向string的直接转换,但是不允许byte[]向string的直接转换,写成代码大概是这样:// yte[]直接转换为string,反过来就不可以了var str = []byte("hello world")var data = string(a)当然我们也可以把string和byte[]原创 2020-07-18 10:56:43 · 2412 阅读 · 0 评论 -
问题解决:Get “xxx“: dial tcp: lookup xxx on xxx: read udp xxx:xxx: i/o timeout
问题描述问题出现在对一个地址进行get请求的时候出现了这个问题,显示如下:可以说是查遍了全网,最终终于找到了原因,并成功解决,遂记录这篇文章,让后来遇到这个问题的朋友可以少走弯路。问题解决首先抛出原因,问题出现在dns解析上。首先并不是因为访问golang.org出现这个问题,访问www.baidu.com, www.csdn.net也都会出现这个问题。第一版的解决方案,就是手动ping网址,然后把其中的IP对网址的映射放入到/etc/hosts中,这样的话就可以不经过dns查询,直接查询本地缓原创 2020-07-13 16:34:03 · 55005 阅读 · 0 评论