jasper的技术小窝

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

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

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

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

阅读全文

Golang中用race检测并发

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

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

阅读全文

Golang内存模型

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

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

阅读全文

Golang中goroutine死锁问题

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

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

阅读全文

Golang性能分析工具pprof

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

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

阅读全文

在Golang中使用pipeline

作者:jasper | 分类:Golang | 标签:     | 阅读 1949 次 | 发布:2015-08-15 10:44 p.m.

之前看到gopher大会上有个人将,他们在Go中大量使用pipeline,特地去搜了一把pipeline在Go中是怎么实现的,发现没有中文文章,所以就参考着写了一篇,抛砖引玉了。

阅读全文

使用Cli构建Go的命令行应用

作者:jasper | 分类:Golang | 标签:   | 阅读 1178 次 | 发布:2015-07-26 5:51 p.m.

大周末的实在无聊,只有继续撸Go,在Go里面应用中`flag`这一标准库,提供了很多我们在写命令行时需要的interface,然而如果你需要更强大更好的结构,可以试一下cli.go这个库。

阅读全文

基于Go的K/V数据库BoltDB简介

作者:jasper | 分类:Golang | 标签:       | 阅读 5605 次 | 发布:2015-07-26 11:52 a.m.

最近开始写Go,并研究InfluxDB,在0.9.x中,它的存储换成了BoltDB,那么这个BoltDB是个什么鬼呢,参考了Github上的介绍,大致感受下。

阅读全文

其他分类: