jasper的技术小窝

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

深入Golang之context

作者:jasper | 分类:Golang | 标签:   | 阅读 397 次 | 发布:2018-01-28 11:26 p.m.

context在Golang的1.7版本之前,是在包golang.org/x/net/context中的,但是后来发现其在很多地方都是需要用到的,所有在1.7开始被列入了Golang的标准库。Context包专门用来简化处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作,那么这篇文章就来看看其用法和实现原理。

阅读全文

深入Golang之CGO

作者:jasper | 分类:Golang | 标签:   | 阅读 452 次 | 发布:2018-01-21 11:22 p.m.

在Golang中可以直接调用C语言的代码,之所以有这样的设计是因为Golang的定位虽然是"next C",但是一些底层的实现还是没有C强大的,这样可以解决一些类似的问题;其次毕竟Golang是一门年轻的语言,很多库可能不太健全,可以依靠C语言这样的老前辈自然会方便很多。下面我们就来探一探Golang中调用C的一些原理。

阅读全文

深入Golang之unsafe

作者:jasper | 分类:Golang | 标签:   | 阅读 352 次 | 发布:2018-01-14 11:51 p.m.

unsafe包在Golang中新手总是使用的不多,但是如果用好了的话,可以有一些黑魔法,解决一些棘手的问题,或者提高类型转化的效率。包里包含一些可以完成Golang中类型转换工作的操作。这一篇文章就让我们来一探究竟。

阅读全文

深入Golang之垃圾回收

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

接着上一篇的来说,这里我们来看一下在Golang中垃圾回收的机制。其实Golang的垃圾回收在随着版本的更迭,一直在做调整和优化,这里是基于1.9版本的来分析。

阅读全文

深入Golang之内存管理

作者:jasper | 分类:Golang | 标签:   | 阅读 477 次 | 发布:2017-12-17 9:20 p.m.

我们知道Golang之所以比C开发起来容易的一个最主要原因就是它有自己的内存管理,有自己的GC机制。这让我们不用自己去关心对内存作管理。但是你使用这一门语言的时候,又必须知道它底层对于内存的管理,这样对于优化编程和排障等都有好处。

阅读全文

深入Golang之http

作者:jasper | 分类:Golang | 标签:   | 阅读 424 次 | 发布:2017-12-10 8:43 p.m.

Golang作为一个适用于高并发场景的语言,非常适合用以构建web服务。而且基于Golang的HTTP模块可以很方便地来实现,因为他自带了路由注册,连接处理等功能,这也是现在开源界Golang的web框架如此多的原因。下面我们就来看看Golang中HTTP的实现,从中我们也可以学习到Golang编程的一下小技巧。

阅读全文

深入Golang之netpoller

作者:jasper | 分类:Golang | 标签:   | 阅读 538 次 | 发布:2017-11-26 9:33 p.m.

Golang是一门主要面向互联网环境的分布式语言,这意味着它需要面对高并发的挑战。当系统出现高并发的IO访问时,如一个网络服务器通常要并发处理成百上千的链接,每个链接可能都是由一个用户任务执行的,那么将会出现大量阻塞的IO操作,如果为每个阻塞操作都单独分配一个OS线程,那么将会增加系统的负载。在Golang中针对网络IO做了特别的优化,而这就是我们这一篇将要探讨的netpoller。

阅读全文

深入Golang之sync.pool

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

在高并发或者大量的数据请求的场景中,我们会遇到很多问题,垃圾回收就是其中之一(garbage collection),为了减少优化GC,我们一般想到的方法就是能够让对象得以重用。这就需要一个对象池来存储待回收对象,等待下次重用,从而减少对象产生数量。

阅读全文

深入Golang之sync.mutex

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

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

阅读全文

深入Golang之goroutine

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

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

阅读全文

其他分类: