0%


参考资料:


本文转载:https://www.freesion.com/article/7060589908/

作者:达菲格;来源:简书

原文地址: Allocation Efficiency in High-Performance Go Services

关于工具

我们的第一个建议就是: 不要过早优化。Go 提供了很棒的性能调优工具可以直接指出代码上哪里消耗了大量内存。没必要重复造轮子,建议读者阅读下 Go 官方博客上的这篇很赞的文章;里面会一步步教你使用 pprof 对 CPU 和内存进行调优。在 Segment 我们也是用这些工具去找到项目的性能瓶颈的。

用数据来驱动优化。

阅读全文 »


channel 是 Goroutine 之间实现通信的数据核心数据结构,channel 是支撑 Go 语言高性能并发编程模型的重要结构,我们简单介绍下 channel 的设计原理、数据结构和常见操作。

设计原理

Go 语言的并发模型是通信顺序进程(Communicating sequential processes,CSP),Goroutine 和 Channel 分别对应 CSP 中的实体和传递信息的媒介,Goroutine 之间会通过 Channel 来传递数据。

数据结构

Channel 操作

并发

参考资料:


interface 是 go 语言中非常重要的数据结构之一,利用 interface 我们可以实现类似面向对象的语言里的继承和封装的思想(go 语言里叫组合),同时对于复杂业务场景下,类型无法确定,经常需要定义一个能覆盖多种类型的变量,这个时候需要定义成 interface

阅读全文 »