Go 系列文章1:Channel 从使用到源码分析

说明,做 Go 开发也有不短的时间了,积累了不少工具,感觉是时候开这么个坑了。源码阅读这种事情,别人发文、出书是别人的事情,如果没有自己尝试做一遍始终还是会少得到很多东西。最近感觉时机成熟,因为自己没有之前那么菜了,所以开这个坑。慢慢填上。内容是读 1.10 的源代码。用 stackedit 写完以后同步到 github 上,这里是原始仓库:golang-notes [https://github.com/cch123/golang-notes]。 更新主要还是在 github 吧,

协作/非协作式抢占

Go 最近有一个比较有意思的 proposal,提出要将协作式的抢占调度修改为非协作式的抢占调度,并使 Go 的每一条指令理论上都可以被抢占。起因是因为之前有类似这样 [http://xargin.com/how-to-locate-for-block-in-golang/] 的问题。当然,社区里遇到问题的人很多,如果你感兴趣,还可以看看这些 github 上的 issue:#543, #12553, #13546, #14561, #15442, #17174, #20793, #21053。 之前的协作式抢占是怎么一回事呢,我翻译的这篇 [http://xargin.com/

[译]go 和 plan9 汇编

本文翻译自: > https://github.com/teh-cmc/go-internals 的第一章。之后如果有余裕,这个项目会一直跟进翻译。 Chapter I: Go 汇编入门 在深入学习 runtime 和标准库的实现之前,我们需要先对 Go 的汇编有一定的熟练度。这份快速指南希望能够加速你的学习进程。 * 本章假设你已经对某一种汇编器的基础知识有所了解 * 涉及到架构相关的情况时,请假设我们是运行在 linux/amd64 平台上 * 学习过程中编译器优化会打开。 -------------------------------------------------------------------------------- Table of Contents * "Pseudo-assembly" * Decomposing

如何在 kv 系统中支持简单的 SQL

现在部门内进行数据收敛,特征相关的指标会逐渐收敛到 XFS 系统中。目前已经建设有 OFS(order feature system)、PFS(passenger feature system)。年后会建设 DFS(driver feature system)。 这些系统有共同的特征,根据 XID + 几个额外的参数来进行特征查询。而特征的具体存储可能是在 Rockstable(未来也可能是在 fusion),或者是在 MySQL,还可以来源于其它跨部门第三方系统的 API。 之前 XFS 对外主要提供

使用 debugger 学习 golang

常见的工程语言可分为解释型和编译型两种,比如写 php 的,一般就不怎么在乎 debugger 之类的东西。为什么?~~如果真出了问题,我可以临时把出问题的服务机器从线上服务中摘除出来,甚至申请一个较高的权限去修改代码,然后到处去 die/echo。虽然有人说这么做不太好,或者一般公司也不给开权限。不过着急的时候,这个肯定是可行的。~~然而像 java/go 这种编译型的就比较麻烦了。线上一般只有程序的运行环境而没有编译环境。就算是在线下,每次去加一行 fmt.Println 或者 System.out.println 都去编译一遍代码也是会明显降低幸福感的事情(当然这里有人说现在