Golang官方依赖管理工具:dep

在这里声明一下,百度或者google看到的godep不是我这篇博文说的dep,那它们是什么关系呢?按照Peter Bourgon博文来说,它们的作者都有相同的人,但是一个是dep是官方版本,godep是第三方工具。 我今天介绍的是dep,之前也有介绍过glide,有兴趣的可以到Golang依赖管理工具:glide从入门到精通使用看看。 现在还有一个疑问是为什么官方现在要支持依赖管理了呢?我个人认为有如下原因(勿喷,如果不同或者遗漏欢迎留言补充): 第三方依赖管理很多,虽然很好用,但是很少可以兼...阅读全文

2017-08-09 10:20:34 梦朝思夕
阅读:53682 评论:7

[golang]如何看懂调用堆栈

之前也有文章讲过go调用堆栈的话题,但并没有完全讲清楚,这里补充里面缺漏的几个点。 阻塞 goroutine 1 [select, 2 minutes]: 方括号里的select表示阻塞原因,具体定义见runtime.waitReason 。 后面的时间是阻塞时间。需要注意的是这只是一个大概时间,是在gc的过程中标记的,所以如果这个goroutine不需要gc,那么永远也不会有值。 PC偏移 github.com/robfig/cron.(*Cron).run(0xc0000c44b0) cro...阅读全文

2019.01.06 13:29* 一桶冷水
阅读:2369 评论:0

高性能 Go 服务的内存优化(译)

原文地址: Allocation Efficiency in High-Performance Go Services, 没有原模原样的翻译, 但不影响理解。 关于工具 我们的第一个建议就是: 不要过早优化。Go 提供了很棒的性能调优工具可以直接指出代码上哪里消耗了大量内存。没必要重复造轮子,建议读者阅读下 Go 官方博客上的这篇很赞的文章;里面会一步步教你使用 pprof 对 CPU 和内存进行调优。在 Segment 我们也是用这些工具去找到项目的性能瓶颈的。 用数据来驱动优化。 逃逸分析 ...阅读全文

2018.11.06 08:21 达菲格
阅读:4368 评论:0

谈谈go.sum

众所周知,Go 在做依赖管理时会创建两个文件,go.mod 和 go.sum。相比于 go.mod,关于 go.sum 的资料明显少得多。自然,go.mod 的重要性不言而喻,这个文件几乎提供了依赖版本的全部信息。而 go.sum 看上去就是 go module 构建出来的天书,而不是什么人类可读的数据。 但实际上,日常开发中我们仍然不得不跟 go.sum 打交道(通常是解决这个文件带来的合并冲突,抑或试图手工调整里面的内容)。如果不了解 go.sum,只凭经验随便涂改,不一定能够改对。因此,为...阅读全文

2019-12-30 17:32:33 spacewander
阅读:29510 评论:0

Golang中使用set

Go中是不提供Set类型,Set是一个集合,set里的元素不能重复。 两种思路 2 basic set implementations 使用map实现 在Golang中通常使用map来实现set,map中的key为唯一值,这与set的特性一致。 简单实现,如下: set := make(map[string]bool) // New empty set set["Foo"] = true // Add for k := range set { // Loop fmt.Println(k) } d...阅读全文

2020-03-26 07:32:40 DevilRoshan
阅读:48824 评论:0