[翻译]绝妙的 channel

在编写 golang 程序的过程中,channel 会经常使用。本文对 channel 的使用的确很特别,同时也非常实用。

原文在此:http://dave.cheney.net/2013/04/30/curious-channels

翻译:http://mikespook.com/2013/05/%E7%BF%BB%E8%AF%91%E7%BB%9D%E5%A6%99%E7%9A%84-channel/#more-1635

————翻译分隔线————

绝妙的 channel

在 Go 编程语言中,channel 是一个闪耀的特性。它提供了一种强大的、在不使用锁或临界区的情况下,从某个 goroutine 向其他 goroutine 发送数据流的方法。

今天我想讨论关于 channel 的两个重要的特性,这些特性不但使其在控制数据流方面极为有用,而且用在流程控制方面也十分有效。

Continue reading

VIM编辑器下go语法高亮显示

Go in Vim

The standard Go distribution includes a Go syntax file for Vim in go/misc/vim/.

Installation Instructions

Place $GOROOT/misc/vim/syntax/go.vim in ~/.vim/syntax/ and put the following in ~/.vim/ftdetect/go.vim:

在go的安装目录里有/misc/vim/syntax 他 /misc/vim/ftdetect 两个目录,将里面的文件复制到~/.vim/相应的目录里即可。

au BufRead,BufNewFile *.go set filetype=go

Extras and Alternative Files

An alternative indent file for Vim by Alecs King can be found here.

Autocompletion

The gocode daemon by nsf includes a vim script to do autocompletion. Continue reading

ZeroMQ的模式-Publish-Subscribe[转]

Publish-subscribe Pattern:发布订阅模式。

现实中,并不是所有请求都期待答复,而不期待答复,自然就没有了状态。所以相对于REQ-REP,PUB-SUB模式容易理解也简单得多。广播听过吧?收音机用过吧?就这个意思。

相应地,该模式下的socket也就两种:ZMQ_PUB & ZMQ_SUB。 分别对应电台和收音机。 Continue reading

ZeroMQ的模式-综述

通过对Guide的阅读,可以发现ZeroMQ对这个世界中消息传输的模式进行了很好的抽象。为了描述模式,0mq定义了不同的socket。 0mq socket是0mq世界的东西,跟传统世界的socket是不一样的。

我们知道,传统的socket其实就是访问下面两种(TCP & UDP)对象的同步的接口:

  1. 面向连接的可靠字节流(SOCK_STREAM)
  2. 无连接的不可靠的数据报文(SOCK_DGRAM)

所以你可以说传统socket传输的是字节流或者独立的报文。 Continue reading

ZeroMQ的模式-Requset-Reply[转]

我们先来看看第一种模式:Request-Reply Pattern。 请求应答模式。

Request-Reply这个名字很直白,口语点说就是一问一答。可以使同步的遵循请求序的一问一答,也可以是异步的不按请求序的一问一答;其中也可以包含各种不同的路由策略——让谁来回答。zeromq定义的为这个模式服务的socket有:ZMQ_REQ, ZMQ_REP, ZMQ_ROUTER以及ZMQ_DEALER. 用他们进行合理的组合,就可以实现现实世界中各种不同的请求应答模式。 Continue reading

ZeroMQ的模式-Pipeline[转]

Pipeline pattern 管道模式。

这种模式描述的场景是数据被散布到以管道方式组织的各个节点上。管道的每一步都连接一个或多个节点,连接多个节点时数据以RR方式往下流。

注意是,意味着数据跟发布模式一样是单向的。这个模式对应的socket是ZMQ_PUSH和ZMQ_PULL.

ZMQ_PUSH

用来向下游节点发消息。下游多个节点时采取RoundRobin分发,zmq_recv()对于这个socket也是无效的。 Continue reading

gozmq的安装与使用教程(zeromq分布式消息队列+golang)

实现功能:用go实现消息队列的写入与读取(打算用在发送邮件服务)

环境工具:
Centos 64X 6.4
zeromq 3.2.4:zeromq.org
golang:http://golang.org/

一.安装golang(http://golang.org/doc/install)
这一步很简单,只需要从http://code.google.com/p/go/downloads 下载到服务器,解压到/usr/local/go目录,再设置一下系统变量就可以了.

wget https://go.googlecode.com/files/go1.1.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.1.2.linux-amd64.tar.gz

设置系统变量GOROOT

Add /usr/local/go/bin to the PATH environment variable. You can do this by adding this line to your /etc/profile (for a system-wide installation) or $HOME/.profile:

export PATH=$PATH:/usr/local/go/bin

执行命令 #source /etc/profile 使环境变量生效.

Continue reading