Golang: 有限状态自动机

有限状态机 又简称FSM(Finite-State Machine的首字母缩写)。这个在离散数学里学过了,它是计算机领域中被广泛使用的数学概念。是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。编译原理学得好的童鞋应该对FSM不陌生,因为编译器就用了FMS来做词法扫描时的状态转移。 FSM的概念在网上一搜可以搜一大堆出来,但估计您也看不大明白。本文将以不一样的方式来讲述FSM的概念以及实现。 现实生活中,状态是随处可见的,并且通过不同的状态来做不同的事。比如冷了加衣服;饿了吃饭;困...阅读全文

开源中国博客 2014-02-24 16:43 陈一回

ECUG Con 2011 - 国内第一场 Go 语言为主题的盛宴

ECUG Con 2011 介绍 ECUG.ORG 是 ECUG Con 大会的官方支持站点。 ECUG 全称为 Effective Cloud User Group(实效云计算用户组)。我们关注的是并发模型和分布式开发的最佳实践。 按照 ECUG 的计划,预计每年我们都会举行一次全国性的 ECUG Con 大会。下面是历届的会议资料: 2007年9月8日,CN Erlounge I,珠三角 Erlang 爱好者小聚。无会议资料,但酝酿了之后具有里程碑意义的 CN Erlounge II。200...阅读全文

CSDN博客 2011-11-08 17:33 xushiweizh

Go语言资料收集

Go语言资料收集 发布站点 GitHub CSDN 新浪最后更新 2012-03-31 Go1正式发布,更新相关资料,详见 变更记录缘起说明 想学习称手的新语言,发现Go后非常感兴趣,也把接触到的一些资料整理共享出来。 资料若有错误或缺漏,或者大家有更好的建议,欢迎 邮件联系 可看 已收集建议收集原则 尽量收集原创链接,有时会记录一些学习心得,或摘录一些启发自己的原文 如果同学们觉得内容还有点帮助,欢迎转载,指明原始出处更好,谢谢! (^_^) 注意 Go1变化较大,网上相关翻译文章可能未及时更...阅读全文

CSDN博客 2014-09-18 16:45 newsyoung1

Go语言 protocol buffer

怎么在go语言中实用google protocol Buffer呢? 现在的潮流趋势就是一键搞定,跟ubuntu安装软件一样 go get code.google.com/p/goprotobuf/{proto,protoc-gen-go} go install code.google.com/p/goprotobuf/proto 搞定,可以在 $GO_PATH/bin下找到 protoc-gen-go 这个程序,那么就可以实用protoc-gen-go 进行go语言的proto文件的自动生成了...阅读全文

CSDN博客 2014-04-20 17:12 abv123456789

为什么我们要使用Go语言以及如何使用它的

本文选自:外刊IT评论网 我们SoundCloud是一个使用多种编程语言的公司,虽然我们的技术架构最外层一直使用的是Ruby on Rails,但是在后端,各种各样的编程语言都有涉及。在这里我想多讲一下为什么要使用和如何使用Go这样一种开源的、刚刚发布其1.0版本的编程语言的。 在我们的公司里,所有的技术人员都是全能选手,而不是专才,这是根植于公司基因文化里的特征。我们希望每个人都能对公司的基础架构中每一部分都至少有相当的了解。更进一步,我们鼓励技术人员在个开发团队间调换,甚至组成新的团队,使成...阅读全文

CSDN博客 2012-09-11 09:35 liuzif

Go-简洁的并发

多核处理器越来越普及。有没有一种简单的办法,能够让我们写的软件释放多核的威力?是有的。随着Golang, Erlang, Scale等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式有一个极其简洁的内核,还有在此之上丰富的外延。可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。 并发模式之内核 这种并发模式的内核只需要协程和通道就够了。协程负责执行代码,通道负责在协程之间传递事件。 不久前,并发编程是个非常困难的事。要想编写...阅读全文

CSDN博客 2012-11-30 15:17 linvo

Go Sublime 2 的安装方法

下载和安装Go 如果是下载了MSI,直接默认安装,一直下一步下一步,直到完成配置:我安装的时候不需要配置系统变量的,安装的时候已经修改了;如果环境变量里没有;C:\Go\bin,就把它添加上去(注意有个分号)安装完毕以后,下载sublime 2: http://www.sublimetext.com/2打开sublime,按 ctrl + ` ,会弹出个命令行,把以下这段内容复制进去,import urllib2,os,hashlib; h = '7183a2d3e96f11eeadd761d7...阅读全文

CSDN博客 2014-02-21 17:52 fwb330198372

Golang 1.3 sync.Atomic源码解析

上一篇文章我们说到sync.Mutex的源码实现,核心就是使用到了CPU指令CAS,从并发性能上来说atomic的效率是要高于mutex的,毕竟mutex做了不少的其他步骤,而atomic的核心其实就是和处理器密切关系的,通过一两个指令就能完成的原子操作,我们接下来来看看atomic在golang中的一些细节。 通过目录: 64bit_arm.go asm_amd64p32.s asm_linux_arm.s atomic_test.go race.go asm_386.s asm_arm.s ...阅读全文

猎豹移动技术博客 2014年10月19日 毛, 剑

Golang学习笔记(2)---go语言基本类型

布尔型:bool长度1字节取值范围:true,false注意:不可以用数字代表true或false整型:Int根据平台可能为32为或64位 8位整型:int8/uint8长度:1字节取值范围:-127~127,0~255byte 字节型 其实就是 uint8的别名 16位整型:int16/uint16长度:2字节取值范围:-32768~32768,0~65535 32位整型:int32/uint32长度:4字节rune就是int32的别名 浮点型:float32/float64长度:4字节/8字...阅读全文

51CTO博客 2016-09-06 14:20:43 beyondlee2011

Go 和 Python Web 服务器性能对比

我通常使用 Python 来构建 Web 应用。一年前,在兴趣的驱使下,我开始学习 Go。 在此期间,我重写了一些原本由 C 开发的 CGI 应用,包括运行于 chroot 环境下的同 thttpd 服务器一起的应用。我开始寻找可以开发易于 chroot、且内置 Web 服务器的独立 Web 应用的工具。那时,我开始玩 web.go 框架、mustache.go 模板、Go 原生 http 包和 GoMySQL 数据库 API。我发现,有 http、mustache.go GoMySQL 包的 ...阅读全文

开源中国博客 2011-04-27 01:10 renwofei423

Golang学习笔记(1)---go程序一般结构

Go程序是通过 package来组织的(与python的库类似)只有package名称为main的包可以包涵main函数(同时main函数也是一个程序的入口)一个可执行程序有且仅有一个main包通过import关键字来引入其他非main包通过const关键字来进行常量的定义通过在函数体外部使用var关键字来进行全局变量的声明与赋值通过type关键字来进行结构(struct)或接口(interface)的声明----一般(自定义)类型通过func关键字来进行函数的声明一般格式为:package m...阅读全文

51CTO博客 2016-09-06 14:11:31 beyondlee2011

golang panic: runtime error: invalid memory address or nil pointer dereference [

今天做消息队列持久化存储服务过程中,golang操作mysql 报错:panic: runtime error: invalid memory address or nil pointer dereference [经过反复查找,原来是变量定义问题 做个记录,以后再有问题可以做个参考,原始代码:var Db *sql.DB func init() { Db, err := sql.Open("mysql", "root:123456@/test") if err != nil { panic(e...阅读全文

51CTO博客 2016-08-31 14:18:53 guhongzi

Go语言的开发环境配置的经验总结

传说go语言的最佳开发环境是苹果的XCODE,我测试的结果确实如此。需要用CGO编译带C代码的go程序的朋友,建议首选苹果的XCODE环境。Windows环境下配置CGO编译非常麻烦,因为Go的文档例子大多以UNIX为例子,所以有些C代码在windows下无法编译,需要修改代码。 我用到的go语言版本是最新的发布版本go 1。下载地址:http://code.google.com/p/go/downloads/list 国人翻译的go官方安装文档的链接: http://code.google.c...阅读全文

开源中国博客 2012-05-11 13:17 qinhui99

Go语言的网络资源

经过一段时间收集和整理的Go语言相关的网络资源,仅供参考: 1、Go语言的官方下载地址。 http://code.google.com/p/go/downloads/list 2、Go的QQ群和论坛 QQ群(102319854) 专门讨论Go编程技术问题。 QQ群2(164015409)主要是Go语言技术文档的翻译。 有兴趣的朋友可以选择加入。 Go语言中文论坛 http://bbs.golang-china.org/ 代码贡献指南: http://golang.org/doc/contribu...阅读全文

开源中国博客 2012-06-07 09:00 qinhui99

Golang lsof server

package main import ( "net/http" "fmt" "os/exec" "flag" ) func main(){ http.HandleFunc("/", readHandle) port := flag.Int("port", 2012, "Listen Port") flag.Parse() http.ListenAndServe(fmt.Sprintf(":%d", *port), nil) } func readHandle(w http.ResponseWr...阅读全文

开源中国博客 2012-06-19 00:07 ioser

使用swig工具为go语言生成调用C、C++代码例子

swig开源项目(http://www.swig.org)为多种编程语言提供了相互访问的接口生成工具,这里面也包含了为go语言生成调用C、C++代码的功能。Go语言自带的cgo工具已经支持对C代码的调用,但对C++代码的支持确实不行,所以Go1已经把swig的C++这部分功能作为附带功能加入(参见Go源代码\go\misc\swig)。这样,C++这块的资源也可以被Go语言使用了。 1、为Go语言生成调用C语言的接口: 根据swig的相关文档指导( http://www.swig.org/Doc...阅读全文

开源中国博客 2012-06-29 11:50 qinhui99