jasper的技术小窝

关注DevOps、运维监控、Python、Golang、开源、大数据、web开发、互联网

深入Golang之select

作者:jasper | 分类:Golang | 标签:   | 阅读 421 次 | 发布:2017-10-21 6:52 p.m.

接着上一篇的channel来说,channel就像一个管道,而我们在利用Golang的goroutines来编程的时候,对于多个goroutines(最常见的用time.Tick来控制时间的)的情况,我们一般需要用select语句来接收channel中的数据。本篇就来看看select的内部实现。

阅读全文

深入Golang之channel

作者:jasper | 分类:Golang | 标签:   | 阅读 506 次 | 发布:2017-10-15 6:53 p.m.

在Golang中channel被广泛地运用,它可以被存储到变量中,可以作为参数传递给函数,也可以作为函数的返回值返回。在Golang中常常使用channel+goroutine来实现并发的控制并发,下面来了解下channel的内部实现。

阅读全文

深入Golang之interface

作者:jasper | 分类:Golang | 标签:   | 阅读 582 次 | 发布:2017-09-23 11:43 p.m.

Golang中的interface是其比较有特色的地方,其并不只是类似于Java中的Object一样,是所有对象的祖先,而且在Golang中interface还有很多不一样的特性。Go语言的主要设计者之一罗布·派克( Rob Pike)曾经说过,如果只能选择一个Golang语言的 性移植到其他语言中,他会选择interface。

阅读全文

深入Golang之map

作者:jasper | 分类:Golang | 标签:   | 阅读 560 次 | 发布:2017-09-16 10 p.m.

现在我们接着来看一看Golang中的map,map具有O(1)的存取速度,所以十分高效。同Java语言一样,Golang的map也是hash结构的,代码在“runtime/hashmap.go”中,下面让我们来细细剖析。

阅读全文

深入Golang之slice

作者:jasper | 分类:Golang | 标签:   | 阅读 557 次 | 发布:2017-09-09 11:47 p.m.

虽然现在网上已经有了很多对Golang的深入的分析什么的,但是为了加深自己的理解,我还是打算自己看看源码,研究一下Golang的一些内部实现,并记录下来。首先就从slice这个类型开始吧。

阅读全文

Golang中非你所想的runtime.GOMAXPROCS(1)

作者:jasper | 分类:Golang | 标签:   | 阅读 1117 次 | 发布:2017-08-06 5:42 p.m.

在Golang中,我们可以通过runtime.GOMAXPROCS(x)来指定运行当前应用的系统线程数,而goroutine实际上也是运行在系统线程上的,那么如果我们将runtime.GOMAXPROCS(1)设为1,是不是就表示应用在单线程上运行,这样就可以不用加锁或者channel啦?答案是否定的,我们来细聊一下。

阅读全文

Golang中用race检测并发

作者:jasper | 分类:Golang | 标签:   | 阅读 1020 次 | 发布:2017-08-05 6:38 p.m.

数据竞争是并发系统中最常见和最难调试类型的错误之一。特别是在Golang中,由于goroutine的使用,这样的问题更容易出现,好在Golang提供了race这个功能。

阅读全文

Golang内存模型

作者:jasper | 分类:Golang | 标签:   | 阅读 744 次 | 发布:2017-07-31 12:05 a.m.

根据官方文档,再加上自己的理解,一起来探讨一下Golang的内存模型,简言之,Golang的内存模型描述了"如何在一个goroutine中看到在另一个goroutine修改的变量的值"。具体的,我们慢慢来看。

阅读全文

Golang中goroutine死锁问题

作者:jasper | 分类:Golang | 标签:   | 阅读 1258 次 | 发布:2017-06-25 10:45 p.m.

还是接着上文所说,遇到golang的web程序没有响应后,就用了pprof做了监控,结果发现goroutine的数量在一直缓慢地增长,到一定数目之后程序就没有响应了。在此记录一下排查过程,以及解决方案。

阅读全文

Golang性能分析工具pprof

作者:jasper | 分类:Golang | 标签:   | 阅读 1295 次 | 发布:2017-06-24 10:40 p.m.

最近遇到一个golang写web程序的一个问题,就是在运行几天后就无响应了,最终原因这篇暂且不论,下一篇再细说;当时再没有任何思路时,就想先对其做一些监控,然后就看了一下golang的相关分析工具pprof,发现超赞的,因此做个简单的总结和记录。

阅读全文

其他分类: