怎样用矿泉水瓶做鸟窝找到水鸟窝

原文出处: , 作者: 。
构建高可用、高性能的通信服务,通常采用服务注册与发现、负载均衡和容错处理等机制实现。根据负载均衡实现所在的位置不同,通常可分为以下三种解决方案:
这是 Golang官方的一个总结:
由于引入了内建的append的方法, 包container/vector的很多方法都被移除了,可以被内建的append和copy方法代替。
下面是栈vector的操作方法的实现,使用slice实现相关的操作。
by 千念飞羽
以前我翻译了 ,现在 把protobuf3的语法指南也翻译了,我也转载一下,读者可以有个参考。 译文地址是: 。
by smallnest
Go标准库的sync/Mutex、RWMutex实现了sync/Locker接口, 提供了Lock()和UnLock()方法,可以获取锁和释放锁,我们可以方便的使用它来控制我们对共享资源的并发控制上。
但是标准库中的Mutex.Lock的锁被获取后,如果在未释放之前再调用Lock则会被阻塞住,这种设计在有些情况下可能不能满足我的需求。有时候我们想尝试获取锁,如果获取到了,没问题继续执行,如果获取不到,我们不想阻塞住,而是去调用其它的逻辑,这个时候我们就想要TryLock方法了。
虽然很早(13年)就有人给Go开发组提需求了,但是这个请求并没有纳入官方库中,最终在官方库的清理中被关闭了,也就是官方库目前不会添加这个方法。
by smallnest
一个经常被问的Linux问题:为啥我的Linux系统没运行多少程序,显示的可用内存这么少?其实Linux与Win的内存管理不同,会尽量缓存内存以提高读写性能,通常叫做Cache Memory。
比较老的文件都会介绍Linux的cache占用很多没关系,因为Linux尽可能利用内存进行缓存,但是缓存的回收也是需要资源的,比较好的一篇文章是Poor Zorro写的。
by smallnest
调试CPU相关的问题经常会涉及关于趋势的微妙问题。堆使用的峰值是否逐渐的增长? routine在什么地方被调用,调用的频度如何?
一图胜千言。一张图片就可以提供很多有用的上下文信息,否则如果用语言解释起来累的半死。将pprof可视化显示可以将有用的CPU统计数据与整个时间的上下文关联起来。
by Alex Edwards
受 Rails 启发, 我觉得写一个关于Go HTTP Response的代码片段集合是一个不错的主意, 它可以用来说明Go web应用程序中通用的HTTP Response的使用。
by smallnest
在阅读本文之前,我先推荐你阅读官方的 文档,或者是中文翻译版: ,它提供了很多编写标准而高效的Go代码指导,本文不会再重复介绍这些内容。
最地道的Go代码就是Go的标准库的代码,你有空的时候可以多看看Google的工程师是如何实现的。
本文仅作为一个参考,如果你有好的建议和意见,欢迎添加评论。
by smallnest
本文是由TapirLiu总结的Golang中的一些知识点,对于深入学习Golang很有帮助,所以我特意翻译了一下。
by smallnest
官方英文版本:
中文翻译:
翻译于日,修改于6月17日,基于原文日修改版本(v.106)修改翻译:
基于原文 Jan 20, 2017版本修改。
如果想深入了解Kafka的通讯协议的话,这篇文章不可不读。感谢 watchword 将原文翻译成了中文,我基于最新版进行了修订,修订和完善翻译中的错误。

参考资料

 

随机推荐