Golang 在 IO 密集场景下的优势

28 Jan 2019

过去一年公司经历了服务端技术栈从 PHP 向 Golang 的转型,前不久笔者作了一次内部分享。本文是这次分享的记录,内容偏科普,主要包括以下两点

Continue Reading →

关于 Code Review

20 Sep 2018

最近把 Martian Folower 的《Refactoring》读了一遍,虽然原作创作于上世纪九十年代,但是老马对很多重构方法论的介绍,尤其是针对每一种重构方法的步骤分解,让人茅塞顿开;有些平时写代码不知不觉已经使用的方法,或者使用不到位的,经作者概括总结出来,也让人有蓦然回首的感觉。但是今天没有对这本书作过多评述,而是对最近工作中遇到的代码质量问题发发牢骚。

Continue Reading →

Url 的设计

11 May 2018

一年多前我写了一篇关于 REST 风格 API 的文章,文中吐槽了遵循 REST 的不便之处。但是如果一个 url 是针对一个指定资源的操作,当时的我还是会采用 GET/POST domain/object_id 这种偏 RESTful 的形式,通过在 URL path 中指定要操作的资源,确实会直观很多。不过现在如果让我重新写一个服务,我会采用类似 GET/POST domain/action?object_id={id} 的简单形式来设计 url,不再纠结于 Restful 的风格。

Continue Reading →

Nginx proxy 和 upstream 之间的长连接

10 Jan 2018

Keep-Alive Connections

HTTP keep-alive 又叫 HTTP persistent connection,是指在一个 TCP 连接上进行多个 Http 请求。要实现 keep-alive 连接,在 HTTP 1.0 协议下,需要在 request 和 response 都设置 Connection: keep-alive 的 http header。在 HTTP 1.1 下, 连接默认都是 keep-alive 的,除非 Connection 的 http 头中显示地设置有其它值。 现代浏览器默认都是 keep-alive 连接,但是具体维护几个 tcp 连接,不同浏览器有不同的策略。

Continue Reading →

Gh-ost 使用小感

30 Nov 2017

Gh-ost 是 GitHub 开源的 MySQL online DDL 工具。虽然从一开源便有所关注,但是最近才在生产环境使用该工具。

Continue Reading →