golang 创建超过10万个Go程时报错stackcacherefill
package main import( //"fmt" "time" ) var c = make(chan int,100) func gofunc(){ time.Sleep(0) c<-0 } func main(){ for i:=0;i<10;i++{ for j:=0;j<10000;j++{ go gofunc() } time.Sleep(time.Sec...阅读全文
package main import( //"fmt" "time" ) var c = make(chan int,100) func gofunc(){ time.Sleep(0) c<-0 } func main(){ for i:=0;i<10;i++{ for j:=0;j<10000;j++{ go gofunc() } time.Sleep(time.Sec...阅读全文
go 语言的一个很大的优势就是可以方便地编写并发程序。go 语言内置了 goroutine 机制。这是一种类似 coroutaine(协程) 的东西。但是又不完全相同。 比如这个例子: package main import ( "fmt"; "strconv" ) func main() { ch := make(chan int) task("A", ch) task("B", ch) fmt.Printf("begin\n") <-c...阅读全文
最近看了一篇关于go产品开发最佳实践的文章,go-in-procution。作者总结了他们在用go开发过程中的很多实际经验,我们很多其实也用到了,鉴于此,这里就简单的写写读后感,后续我也争取能将这篇文章翻译出来。后续我用soundcloud来指代原作者。 开发环境 在soundcloud,每个人使用一个独立的GOPATH,并且在GOPATH直接按照go规定的代码路径方式clone代码。 $ mkdir -p $GOPATH/src/github.com/soundcloud $ cd $...阅读全文
现在go语言ms经常被人提,我去凑热闹看了看~~ go 语言 windows 下 的编译器可以去http://code.google.com/p/gomingw/downloads/list 下载 下载解压配置环境变量“环境变量”(我的电脑->高级系统设置->环境变量),在系统变量的标签下,依次新建编辑如下几个键值对: (1). 新建 变量名:GOBIN 变量值 :c:\go\bin (2). 新建 变量名:GOARCH 变量值:386 (3). 新...阅读全文
linux下,google的go语言安装起来很方便,用起来也很爽,几行代码就可以实现很强大的功能。现在的问题是我想在windows下玩……其实windows下也不麻烦,具体见下文。 一、安装go语言:1、安装MinGW(https://bitbucket.org/jpoirier/go_mingw/downloads)2、下载源码 进入C:\MinGW,双击mintty开启终端窗口; 执行"hg clone -u release https://go.googlecode.com/hg/...阅读全文
一个朋友的网站用php开发的,总是感觉慢. 我将其中的查询sql server 代码改成go语言 (有7000多条记录) 都能感觉到速度比以前快多了. 努力继续学go语言吧. php没有使用任何框架. package main import ( _ "github.com/lunny/godbc" "github.com/go-xorm/xorm" "net/http" "fmt" ) func testweb(w http.ResponseWriter,r *htt...阅读全文
在实现函数时,如果中间的步骤出错,需要释放资源并退出函数,这些工作很繁杂,容易出错。 go语言的作者对过去十年软件开发的经历感到失望,针对这个问题,他带来了defer方法,它能让不管在函数内的哪个地方exit,都确保你有机会清扫干净。Delphi XE中也可实现一个类似的方法。 program demo_defer; {$APPTYPE CONSOLE} uses SysUtils, coroutineUnit; //还是用这个单元。。。还是在附件里 beginTProc(procedur...阅读全文
sh-3.2# go get github.com/PuerkitoBio/goquery package code.google.com/p/cascadia: Get https://code.google.com/p/cascadia/source/checkout?repo=: dial tcp 74.125.31.101:443: operation timed out package code.google.com/p/go.net/html: Get https://code.go...阅读全文
更新 go1.1正式版 已经在北京时间5月14日10点左右发布 从google网站的go下载页找到对应的包,我这里是linux64位,所以我下载go1.1.linux版 本文参考自官方手册 确定环境 go在运行时会读取环境变量,如未读到相关环境变量,则按默认值运行 例如${GOROOT}表示为安装位置,如未正确设置,会造成运行时找不到对应文件 在家目录(~)下的.bashrc文件最后加入以下内容 $ vi .bashrc #go安装的位置 export GOROOT=$HOME/g...阅读全文
英文原文: http://blog.golang.org/2012/07/gccgo-in-gcc-471.html Go语言开始就由一个语言规范定义,并不是倚赖某个具体实现。Go开发小组针对语言规范,实现了两个不同版本的编译器:gc和gccgo。 有两个不同的实现有助于保持语言规范的完整和完整:当两个实现相互冲突时,我们修改语言规范,或者是修改实现以保持和规范一致。 Gc是默认的编译器,专门针对go编写。Gccgo是另一个不同实现(有不同的侧重目标),下面我们将详细介绍。 Gccgo是作为...阅读全文
这些东西是平时遇到的, 觉得有一定的价值, 所以记录下来, 以后遇到类似的问题可以查阅, 同时分享出来也能方便需要的人, 转载请注明来自RingOfTheC[ring.of.the.c@gmail.com] 这几天看go文档时看到这么一段话: Go is a new language. Although it borrows ideas from existing languages, it has unusual properties that make effecti...阅读全文
安装Mercurial 在进行后面的操作之前需要安装Mercurial版本管理系统(可以输出hg名词检测是否安装)。输入以下命令安装: $ yum install mercurial 获取代码 以下命令会创建一个go目录。切换到相应目录,并且确保当前位置不存在go目录,运行命令: $ hg clone -r release https://go.googlecode.com/hg/ go 安装Go 编译go环境: $ cd go /src $ ./a...阅读全文
看《Go入门指南》 ,这里讲得比较基础,针对go 1.0版,以下是一些我自己觉得特别和不容易理解的地方的摘抄! 上次有说到go里不同类型之间操作必须显示转换,int和uint不固定,所以int 不是int32 int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。 package main func main() { var a int var b int32 a = 15...阅读全文
go的stmp包中默认只有plainAuth和cramMD5Auth实现,有的邮件服务器必须要以LOGIN模式认证才能正常发送邮件,前段时间写go版本的邮件发送服务时实现的LoginAuth以及官方的smtp.go做了一些修改。解决对某些smtp服务器不能LOGIN成功的问题。代码在:https://github.com/trygo/util.git下的ismtp下阅读全文
我将在mac os x的开发机器上安装go语言的开发环境。 go语言运行包下载地址:http://code.google.com/p/go/downloads/list 这里我选择安装 go1.0.3.darwin-amd64.pkg 在mac上点击安装,运行包自动安装到/usr/local/go中,这样在命令终端就可以运行go命令了 这里,我把go编辑器安装到我的xcode应用程序中,由于我的xcode装的是4.x以上 在/usr/local/go/misc中,可以看到有很多编辑器版本,这里找...阅读全文
本博客原创博文版权所有 @Ally vipally@gmail.com 仅供交流学习使用用于商业用途请联系原作者 转载请注明出处:http://blog.sina.com.cn/ally2014 总所周知,golang现在不支持泛型编程,对于习惯了C++泛型编程思想的程序员来说无疑是一个硬伤。 虽然golang interface{}多少可以满足一些泛型需求,但是无论在效率和编程手法上,都无法达到C++ template那样的灵活性。出于对编译器效率的考虑,官方暂时还没有golang支持泛型的方...阅读全文
go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性, 有下面的特征: 1 init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等 2 每个包可以拥有多个init函数 3 包的每个源文件也可以拥有多个init函数 4 同一个包中多个init函数的执行顺序go语言没有明确的定义(说明) 5 不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序 6 init函数不能被其他函数调用,而是在main函数执行之前,自动被调用 下面这个示例摘自...阅读全文
有一个需求是用go语言程序调用外部命令时,允许使用管道符,如 ls | wc -l Go语言对外部命令的调用进行了一定的封装,下面来试一下: package main import ( "os" "os/exec" ) func main() { run1() } func run1() { cmd := exec.Command("ls", "|", "wc", "-l") cmd.Stdout ...阅读全文