jasper的技术小窝

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

深入Golang之sync.mutex

作者:jasper | 分类:Golang | 标签:   | 阅读 12 次 | 发布:2017-11-20 10:03 p.m.

锁不管在操作系统里面,还是在各个编程语言里面都是非常重要的。特别是在Golang的goroutine中,会涉及到很多对同一个对象的操作,虽然考虑到锁对性能的影响,我们在Golang中会尽量使用channel来达到同样的效果,但是有时候还是不得不使用锁,现在来看看锁在Golang中的实现。

阅读全文

深入Golang之goroutine

作者:jasper | 分类:Golang | 标签:   | 阅读 29 次 | 发布:2017-11-12 12:08 a.m.

终于要来说说Golang中最吸引人的goroutine了,这也是Golang能够横空出世的主要原因。不同于Python基于进程的并发模型,以及C++、Java等基于线程的并发模型。Golang采用轻量级的goroutine来实现并发,可以大大减少CPU的切换。现在已经有太多的文章来介绍goroutine的用法,在这里,我们从源码的角度来看看其内部实现。

阅读全文

深入Golang之select

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

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

阅读全文

深入Golang之channel

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

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

阅读全文

深入Golang之interface

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

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

阅读全文

深入Golang之map

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

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

阅读全文

深入Golang之slice

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

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

阅读全文

做一个会提问的程序猿

作者:jasper | 分类:随笔 | 标签:   | 阅读 192 次 | 发布:2017-08-20 7:47 p.m.

最近有经常在QQ或是微信上被问到一些技术问题,但是有时候问的问题我不知道该如何回答,因为我根本不知道到底问的是什么,那我们就来聊聊作为一个程序员,应该怎么样去提问。

阅读全文

聊聊docker监控那点事儿

作者:jasper | 分类:监控 | 标签:     | 阅读 303 次 | 发布:2017-08-19 7:45 p.m.

现在docker是大火了,在我们公司也是紧跟潮流开始将应用容器化。由于我们是做监控这一块的,所以就来聊一聊我们是如何做docker监控的。

阅读全文

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

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

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

阅读全文

其他分类: