[golang]用Go语言写的课表

package main import (         "fmt"         "os" ) type tt struct {    //定义数据结构 tt,用于存放每日的课程  One string     //0  Two string     //1  Three string      //2  Four string      //3        }    type DAY struct {   //定义数据结构 DAY ,用于存放一周的,英文简写  we...阅读全文

开源中国博客 2012-11-16 20:22 sndnvaps

golang中list包使用方法

package main import (     "container/list"     "fmt" ) func main() {     l := list.New()     l.PushBack(4)     l.PushBack(5)     l.PushBack(6)     l.PushBack(7)     l.PushBack(17)     l.PushBack(27)     l.PushBack(71)     l.PushBack(74)     //fmt.P...阅读全文

开源中国博客 2014-02-11 11:27 xlplbo

golang:高性能消息队列moonmq的简单使用

在上一篇moonmq的介绍中(这里),我仅仅简短的罗列了一些moonmq的设计想法,但是对于如何使用并没有详细说明,公司同事无法很好的使用。 对于moonmq的使用,其实很简单,样例代码在这里,我们只需要处理好broker,consumer以及publisher的关系就可以了。 首先,我们需要启动一个broker,因为moonmq现在只支持tcp的自定义协议,所以broker启动的时候需要指定一个listen address。 #启动broker ./simple_broker -ad...阅读全文

开源中国博客 2014-05-11 16:30 siddontang

golang:使用timingwheel进行大量ticker的优化

Ticker 最近的项目用go实现的服务器需要挂载大量的socket连接。如何判断连接是否还存活就是我们需要考虑的一个问题了。 通常情况下面,socket如果被客户端正常close,服务器是能检测到的,但是如果客户端突然拔掉网线,或者是断电,那么socket的状态在服务器看来可能仍然是established。而实际上该socket已经不可用了。 为了判断连接是否可用,通常我们会用timer机制来定时检测,在go里面,这非常容易实现,如下: ticker := time.NewTic...阅读全文

开源中国博客 2014-05-11 16:31 siddontang

google app engine golang 教程

申请google app engine ID 具体步骤问google 部署个goagent,不然在大陆你肯定别想顺利进行下面的步骤   具体步骤问google 下载go_appengine_sdk,在windows下测试,下的版本是go_appengine_sdk_windows_386-1.8.8 下载  Python 2.7.6  http://www.python.org/download/releases/2.7.6/ 最浪费我时间的一步:卸载阿里旺旺 删除注册表里 “阿...阅读全文

开源中国博客 2014-01-01 12:28 咖啡伴侣

golang - revel安装手记

先bing了篇博文,参考着去下载安装,结果第一步go get运行就出错: go: missing Mercurial command。。 看错误信息是源代码控制的工具没有预先安装,干脆去官网查看 http://robfig.github.io/revel/tutorial/gettingstarted.html , 果然人家的安装向导很详细,一开始就说要安装两个源代码控制工具: Install git and hg Both Git and Mer...阅读全文

开源中国博客 2013-07-28 19:27 dijin

golang -- 网络字节编解码(2)

以下是利用标准库binary来进行编解码 解码 ①使用bytes.NewReader/bytes.Buffer来存储要解码的ascii串 ②使用binary.Read来解码 package main import (     "bytes"     "encoding/binary"     "fmt" ) func main() {     var pi float64     bpi := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21...阅读全文

开源中国博客 2014-01-10 11:03 flyking

golang -- TCP服务器(2)

tcp服务器 包括日志,定时处理,广播,超时 map写添加了锁(读不用锁) 添加了解码器 删除了addr-buf映射,添加删除锁 mark:今天听大神所要处理系统中断EINTR, 以后做简单处理EINTR--retry mark:用struct封装addr, net.Listener, exit(是否断开)等信息..最重要的是使用: br := bufio.NewReader(conn), bw := bufio.NewWriter(conn)来取代读循环,这样就可以需要的时候再读/...阅读全文

开源中国博客 2014-01-12 22:59 flyking

golang小记

切片与数据 学golang时,书上提过从数组生成切片时,切片实际上是有一个指针指向那个数组,所以对切片和数组的操作会相互影响。 好奇的是切片是变长的,当切片超过原生数组长度后,还会保持那个指针么,或者有更高级的方式,今天试了一下,比较失望的是,对切片执行append操作,当超过该切片的capacity时,go会分配一个新的数组给切片,两者从此分道扬镳。 append操作会在切片底层数组不够时分配新数组,所以使用切片的话,最好还是得计算要用的空间大小。 可能是最近受函数式编程的immuta...阅读全文

开源中国博客 2014-04-05 10:33 Bluven

golang安装

win7-32位安装 一、安装golang 下载golang:http://code.google.com/p/go/downloads/list 点击安装,默认在C:/Go 设置环境变量:打开 系统属性->环境变量->新建个系统变量,key:GOROOT。value:C:\Go ,将C:\Go\bin添加到系统环境变量path中 打开dos 运行go env 就可以看到go的变量了,说明安装好了 二、安装编辑工具sublime text2 安装完成后,...阅读全文

开源中国博客 2013-12-21 21:38 别人说我名字很长

golang使用pprof检查goroutine泄露

有一段时间,我们的推送服务socket占用很不正常,我们自己统计的同时在线就10w的用户,但是占用的socket竟然达到30w,然后查看goroutine的数量,发现已经60w+。 每个用户占用一个socket,而一个socket,有read和write两个goroutine,简化的代码如下: c, _ := listerner.Accept() go c.run() func (c *conn) run() { go c.onWrite() c.onRead() } ...阅读全文

开源中国博客 2014-05-11 16:30 siddontang

再次验证golang与node.js的http模块性能对比测试

之前看过性能对比测试的文章,是关于node.js和golang的http模块,简单的helloworld功能,原文在此: http://www.cnblogs.com/QLeelulu/archive/2012/08/12/2635261.html#2447171 再此文章之后,node.js和golang都升级了,node.js现在已经到了0.10,而golang也到了1.1版本,因此突然想在前人的基础上再做一次性能测试。 具体代码仍然沿用引用文章里面的。 硬件:双cp...阅读全文

开源中国博客 2013-07-24 01:02 dijin

golang: 常用数据类型底层结构分析

虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的。它定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struct来实现。了解golang的数据类型和数据结构的底层实现,将有助于我们更好的理解golang并写出质量更好的代码。 基础类型 源码在:$GOROOT/src/pkg/runtime/runtime.h 。我们先来看下基础类型: /*  * basic types  */ typedef si...阅读全文

开源中国博客 2014-01-29 20:09 陈一回