Golang
文章平均质量分 84
xingwangc2014
这个作者很懒,什么都没留下…
展开
-
Go避免使用大堆造成的高GC开销
原文链接:Avoiding high GC overhead with large heapsGo的Garbage Collector(GC)在分配的内存量相对较小时工作得非常好,但是如果堆较大,GC最终可能会占用大量的CPU,在极端情况下,它甚至可能无法跟上节奏。What‘s the problem?GC的工作就是确定哪些内存可以释放,它是通过扫描内存查找内存分配的指针来完成这个工作的。简...翻译 2019-01-19 00:16:00 · 3406 阅读 · 0 评论 -
goroutine退出方式的总结
goroutine的退出机制大家都知道goroutine是Go语言并发的利器,通过goroutine我们可以很容易的编写高并发的程序。但是goroutine设计的退出机制是由goroutine自己退出,不能在外部强制结束一个正在执行的goroutine(只有一种情况正在运行的goroutine会因为其他goroutine的结束被终止,就是main函数退出或程序停止执行)。关于goroutine原创 2018-01-07 23:26:25 · 19677 阅读 · 3 评论 -
[译]defer, panic, recover
原文地址:Defer, Panic, and RecoverGo有普通的流程控制机制:if, for, switch, goto等。它还有Go特有的语句来在单独的goroutine中执行程序。在这里我想讨论一些不太常见的特性:defer, panic和recover。deferdefer语句将一个函数调用压入到一个列表中。列表中存储的函数调用,将在执行defer语句的外围函数返回后翻译 2018-01-07 23:24:23 · 361 阅读 · 0 评论 -
[译]Go并发模式:context
原文地址: Go Concurrency Patterns: ContextIntroduction在Go server中,新的请求通常都会起一个新的goroutine处理,这个goroutine又通常会起一些额外的goroutines来访问后端,例如database,RPC服务等。这一系列处理一个请求的goroutines通常需要访问请求相关的数据,例如最终用户的身份,Authorization翻译 2018-01-02 23:21:21 · 1573 阅读 · 0 评论 -
Go 交叉编译
Go交叉编译Go在1.5版本中改进了对交叉编译的支持,包括统一了编译器、链接器等。使得跨平台交叉编译相当简单,一条命令即能轻松搞定。原创 2017-03-22 22:39:45 · 8118 阅读 · 1 评论 -
Go语言如何在不牺牲运行时性能的情况下提高表达性
今天看了一篇很有趣的博文,讲使用Go写代码时。对于更新数组,一个小小的改动却能大大提高代码的效率。而自己平时最经常使用的居然是效率最低的一种方式。不得不感慨Go虽然入门容易,但是像C一样也是博大精深,细节无处不在,平时需要注意的地方,需要深挖的地方太多太多。这里把文章翻译撸一下给大家分享下,文章很短,可能只需要你马桶上5分钟的时间,你就将Get一个很牛逼的技能。原创 2017-02-02 23:24:57 · 477 阅读 · 0 评论 -
Go sqlx包 + postges pq包实现postgres的批量插入、更新
当有大量数据需要插入时,批量操作省去了大量建立、关闭连接的操作,将多次数据库写IO操作合并成一次操作,省去了很多不必要的时间消耗,将显著提高写效率。原创 2017-01-26 11:59:43 · 9512 阅读 · 2 评论 -
Go语言中异步拆分io.Reader
在Go语言中处理任何stream数据时,我已经深陷io.Reader和io.Writer的灵活性中不能自拔。同时我在有一点上又或多或少的受了些折磨,挑战我的reader interface在你看来可能会觉得很简单:那就是怎么样拆分读操作。我甚至不知道使用“拆分(split)”这个词是否正确,我就是想通过io.Reader多次读取接收到的东西,有时候可能还需要并行操作。翻译 2016-08-26 00:26:10 · 7789 阅读 · 0 评论 -
更多Go Interface细节
前面一篇主要介绍了Go interface的一些基础知识。本文着重介绍了如何判断一个interface中存储的数据的原始类型,并将interface中数据转换到对应数据类型的变量中。另外,如struct的匿名域一样,interface也支持在interface中嵌套interface来继承方法,增加interface的灵活性。Go的语法逻辑是如此之美!翻译 2016-09-16 21:40:35 · 768 阅读 · 0 评论 -
棒棒哒的Go Interface
Golang中的Interface是一件相当精妙的设计,编程时灵活的使用Interface是一种相当美妙的体验。能够让你的代码变得更加灵活,完美...翻译 2016-09-16 01:01:00 · 1153 阅读 · 0 评论 -
Golang访问SQL Like数据库(三)——sql package + Postgres driver源码走读
Golang官方没有提供数据库驱动,只是为开发数据库驱动定义了一些标准接口,开发者可以根据官方定义的标准接口来开发相应的数据库驱动。这样做的好处是:只要是按照标准接口开发的代码,需要迁移数据库时不需要任何的修改。原创 2016-08-08 02:50:35 · 1864 阅读 · 6 评论 -
Golang访问SQL like数据库(二)——sql package主要数据结构及方法
接上一篇,sql package的主要实现是database/sql, sql 中比较重要的数据结构是:type DBtype Rowtype Rowstype StmtType Txsql.Registersql.Register接口用于注册数据库驱动。第三方开发的数据库,需要在init中调用这个接口来完成本驱动的注册。接口声明为:func Register(name string,原创 2016-08-08 02:46:28 · 4754 阅读 · 9 评论 -
Golang访问SQL like数据库(一)——思想、driver需实现接口
Golang官方没有提供数据库驱动,只是为开发数据库驱动定义了一些标准接口,开发者可以根据官方定义的标准接口来开发相应的数据库驱动。这样做的好处是:只要是按照标准接口开发的代码,需要迁移数据库时不需要任何的修改。原创 2016-08-08 02:39:22 · 2232 阅读 · 0 评论 -
使用Go构建RESTful的JSON API
这篇文章不仅仅讨论如何使用Go构建RESTful的JSON API,同时也会讨论如何设计好的RESTful API。如果你曾经遭遇了未遵循良好设计的API,那么你最终将写烂代码来使用这些垃圾API。希望阅读这篇文章后,你能够对好的API应该是怎样的有更多的认识。JSON API是啥?在JSO翻译 2016-06-09 23:18:30 · 35342 阅读 · 4 评论