编程语言:Go
有限状态机FSM的原理与GO的实现
有限状态机(Finite-state machine, 简写FSM)又可以称作有限状态自动机。它必须是可以附着在某种事物上的,且该事物的状态是有限的,通过某些触发事件,会让其...
记一次获得3倍性能的go程序优化实践,及on-cpu/off-cpu火焰图的使用
Golang的性能可以做到非常好,但是一些native包的性能很可能会拖后腿
[译]像牛人一样改进你的Go代码
原文: Lint your #golang code like a mad man!, 作者: Arsham Shirvani 我使用下面的工具来改进我的代码,除了vendor文件夹。我的操作系统是GNU/Linux,但是稍微修改一下脚本应该也能运行在你的操作系统上。我使用glide来处理依赖(vendor),但你也可以使用你的包依赖管理工具来替换glide nv, 这个命令列出了所有的文件夹,除
Go调优神器trace介绍
你想知道你的Go程序在做什么吗? go tool trace可以向你揭示:Go程序运行中的所有的运行时事件。
[译] Go 可视化性能分析工具
原文: A Short Survey of PProf Visualization Tools by Jordan Crabtree。 调试CPU相关的问题经常会涉及关于趋势的微妙问题。堆使用的峰值是否逐渐的增长? routine在什么地方被调用,调用的频度如何? 一图胜千言。一张图片就可以提供很多有用的上下文信息,否则如果用语言解释起来累的半死。将pprof可视化显示可以将有用的CPU统计数据与
编写地道的Go代码
在阅读本文之前,我先推荐你阅读官方的 Effective Go文档,或者是中文翻译版: 高效Go编程,它提供了很多编写标准而高效的Go代码指导,本文不会再重复介绍这些内容。 最地道的Go代码就是Go的标准库的代码,你有空的时候可以多看看Google的工程师是如何实现的。 本文仅作为一个参考,如果你有好的建议和意见,欢迎添加评论。
Golang升级到1.7后,之前正确的函数出现错误,分析原因及解决办法
最近尝试把开发环境,升级到Golang1.7.1后,程序会偶发性的宕掉,查看日志后,发现总是在一个计算切片的哈希值的地方,错误信息是:unexpected fault address 0xc043df4000, fatal error: fault 在1.7之前程序持…
golang的服务控制实践
对于程序及服务的控制,本质上而言就是正确的启动,并可控的停止或退出。在go语言中,其实就是程序安全退出、服务控制两个方面。核心在于系统信号获取、Go Concurrency Patterns、以及基本的代码封装。
Go官方库RPC开发指南
Go官方提供了一个RPC库: net/rpc。包rpc提供了通过网络访问一个对象的方法的能力。服务器需要注册对象, 通过对象的类型名暴露这个服务。注册后这个对象的输出方法就可以远程调用,这个库封装了底层传输的细节,包括序列化。服务器可以注册多个不同类型的对象,但是注册相同类型的多个对象的时候回出错。 我最近写了一本电子书: Go RPC开发指南,介绍Go RPC开发的相关技术,这是其中的一章,专
一个 Go 程序系统线程暴涨的问题
最近 fix 了一个 Go 程序系统线程数量暴增的问题,线程数量维持在2,3万个,有时候甚至更多,这情况明显不符合 Go 的并发原理。第一次发现线程数巨多是因为这个程序突然 crash 了,由于设置了程序可用的最大线程数…