周末温习一下channel。channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 我要晨读

已有768人晨读

Golang 中的函数跟 C 的一样,是个代码块,不过它可以像其他类型那样赋值给一个变量,也就是说 Go 语言中函数是一等公民。学过PHP的人,应该知道可以很方便的通过名字调用匹配的函数,Go 因为是静态编译型语言,没法直接那么方便的使用,但也可以做到。 我要晨读

已有1180人晨读

这篇文章虽然不长,但是很有趣。这应当算是英文“标题党”和“高级黑”吧。原文不好读,也没什么特别的;不过如果是为了强化学习 Golang 的信心,值得看看。文章说 Go 没啥新鲜的,它的特性在其他地方也能见到,但它同时获得了这些特性…… 我要晨读

已有866人晨读

详论 GO 与 ERLANG 的并发编程模型差异。许世伟在 ECUG 分享的专题。从CERL库谈到轻量级进程模型,讲解了它的实现原理,之后对比Erlang和Go到底有什么不同:对锁的态度不一样;对异步IO的态度不一样;两者的消息机制不太一样。 我要晨读

已有729人晨读

在国内,学习Go,似乎更多是进行Web开发,原因可能多方面的,我们不讨论适不适合的问题。如果你是PHPer,可以看看该文:为什么 PHPer 应当学习 Golang?本文从容易学习、容易使用和PHP的迷思等方面解释了为什么。 我要晨读

已有801人晨读

为什么除了Go编程语言,其他类C语言都是垃圾 第三篇,这部分一方面主要和传统面向对象语言特性做对比,如 基于类型的对象 vs 封装,鸭子类型 vs 多态,类型嵌入 vs 继承;另一方面指出了 go 的缺陷,如没有重载,有限的鸭子类型等。 我要晨读

已有712人晨读

为什么除了Go编程语言,其他类C语言都是垃圾 第二篇,这部分主要介绍Go与C不同的关键点,如:没有分号、强制花括号、双选项、明确命名类型、函数和变量、隐式定义,自动设定类型、倒序的变量定义、没有运算的指针、垃圾回收、变长数组和反射等。 我要晨读

已有702人晨读

为什么除了Go编程语言,其他类C语言都是垃圾。这是2011年6月7日一个德国人写的。根据 Rob Pike 在推上的说法,文章有一些错误,但看起来值得阅读。有各种语言的对比说明,有Go语言的特性说明。文章较长,这是第一部分。 我要晨读

已有857人晨读

Gobs on the wire,作者巧妙的用了“gob”这个词。gob本来是Golang的一个关于网络通信协议的包。而在这里,我感觉标题也可以翻译为《关于线上的那一大陀……》。本文谈谈如何用 Go 编写基于同步请求和异步事件通知的 Client/Server 系统。 我要晨读

已有789人晨读

Gob 是 Golang 的包中带的一个数据结构序列化的编/解码工具。在实际应用中,已经有不少的编解码工具/包/库了,为什么 Golang 还要新开发一个 Gob?又是一个重复的轮子?Gob 做了哪些工作?Gob 的优势是什么?本文做了一个较为全面的解释。 我要晨读

已有798人晨读

快速排序算法,在平均状况下,排序要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。本文用Go语言实现快速排序,还有视频介绍快排。 我要晨读

已有1156人晨读

十条有用的 Go 技术,这篇文章也许不少人已经看过了,今天又看到,忍不住再推荐一次,这是作者 过去几年中编写的大量 Go 代码的经验总结而来的自己的最佳实践,它们具有弹性。当然,这些都仅仅是建议,具体情况具体对待。 我要晨读

已有747人晨读

MD5(Message Digest Algorithm,消息摘要算法第五版)在实际的项目中经常被用到。本文不只是介绍了 Go 语言如果通过 API 计算 MD5,而且介绍了单向加密、C 语言经典的 MD5 API 构成。 我要晨读

已有1358人晨读

Go语言以高并发著称。Golang适合高并发场景的原因是什么?本文介绍了两个实现案例:360消息推送 和 京东云消息推送(现在的数据应该比这个更好)。接着介绍了 C10K 问题,Coroutine模型 和 非阻塞/异步IO、多进程、多线程等。 我要晨读

已有863人晨读

依赖注入(DI)是一种解耦组件之间依赖关系的设计模式。之前有一篇晨读介绍过 martini 框架使用的依赖注入库。今天我们介绍来自facebook的依赖注入库。本文从一个具体实例一步步讲解引入依赖注入改变代码质量的过程。 我要晨读  相关阅读: 网页链接 

已有1785人晨读

如果你写过某些 TCP socket 代码,你可能会疑问:如果网线被拨掉或者远程主机崩溃了我的TCP连接会怎样?GO语言为你提供了解决这个问题的几种方法: 如 net.Conn 接口中的SetReadDeadline方法,TCP keepalive 等。 我要晨读

已有1196人晨读

许多人在刚开始接触 Go 语言时,经常会有的疑惑就是“为什么一个 Hello world 会占用如此之多的内存?本文:理解 Go 语言的内存使用 很好的解释了这个问题。当然,这仅是关于 Go 语言内存的简介,读者可以进行更加深入的探索。好文赶紧收藏吧! 我要晨读

已有1085人晨读

之前晨读介绍过一个“翻墙”工具的实现,今天介绍另外一个较详细讲解使用Go实现 SOCKS 协议来实现代理的。该文介绍了 SOCKS5 协议、部署、加密以及和远端SOCKS交互。另外还讲解了 代理服务扩展:SOCKS4代理、HTTP Tunnel (HTTP隧道)和 HTTP Proxy。 我要晨读  相关阅读: 网页链接 

已有1732人晨读

【Go web开发之revel+mgo】第九、十章:其他功能和总结。这一序列有些长,算是一套比较完整的web构建实战教程了。第九章实现了一个小的提醒功能,目前的实现比较简单,读者可以考虑能实时更新的方案。 我要晨读  相关阅读: 网页链接 

已有692人晨读

【Go web开发之revel+mgo】第八章:实现Email墙。好吧,这是作者自创的名词,Email墙就是所有参与到本站的用户列表,包括发blog、评论等。核心的东西就是通过 mgo 驱动对 mongodb 进行增删改查。 我要晨读

已有737人晨读