golang daemon
最近一段时间在学习go语言的使用 最近在实现一个功能,需要程序有参数选项:deamon; 也就是支持后天运行。于是上网google一个golang deamon package main import ( "fmt" "log" "os" "runtime" "syscall" "time" ) func daemon(nochdir, noclose int) int { var ret, ret2 uintptr var...阅读全文
最近一段时间在学习go语言的使用 最近在实现一个功能,需要程序有参数选项:deamon; 也就是支持后天运行。于是上网google一个golang deamon package main import ( "fmt" "log" "os" "runtime" "syscall" "time" ) func daemon(nochdir, noclose int) int { var ret, ret2 uintptr var...阅读全文
package main import ( "fmt" "time") const NUMBER = 1000000 func test() { for { }} func main() { fmt.Println(time.Now().UnixNano()) for i := 0; i < NUMBER; i++ { go test() } fmt.Println(time.Now().UnixNano()) for { }} 启动100W个协程,占用了:4599640KB内存,平均每个...阅读全文
我们用golang的json来marshal一个结构体的时候,结构体的未导出的成员将无法被json访问,也就是不会出现json编码的结果里(也就是小写的成员没法导出) 这个是由于技术的上问题引起的:golang的结构体里的成员的名字如果以小写字母开头,那么其他的包是无法访问的,也就是json无法访问我们的结构体里小写字母开头的成员 这个可以有两种方法解决 1. struct的成员用大写开头,然后加tag 2. 实现json.Marshaler接口 第一种方法比较常见这儿就不详细展开了 第...阅读全文
最近研究用go语言操作git,除了直接走命令行用os/exec包,还可以使用libgit2的go绑定git2go操作。 但是libgit2是c语言库,go使用cgo连接c程序,需要cgo的支持。总之过程复杂,摔了一路。 安装 gcc 和 pkg-config 首先是安装gcc和pkg-config(cgo依赖)。gcc编译器推荐用TDM-GCC来直接安装,方便快捷,注意不要用绿色版用安装版。pkg-config可以再gnome的官方库中找到。pkg-config安装需要同时下载: ht...阅读全文
Get, Head, Post, and PostForm 可以构成 HTTP (or HTTPS) requests: resp, err := http.Get("http://example.com/") ... resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf) ... resp, err := http.PostForm("http://example.com/form", url.V...阅读全文
func FileServer(root FileSystem) Handler 就是返回一个handler,用作http.handle这个函数的参数。 FileSystem是一个接口 type FileSystem interface{ Open(name string)(File,error) } 说白了文件服务器就是要这样一个接口作为静态文件服务器的根目录。 一般用这个做一个前缀转换 func StripPrefix(prefix string, h Handler) Hand...阅读全文
func Abs(path string) (string, error) 检测地址是否是绝对地址,是绝对地址直接返回,不是绝对地址,会添加当前工作路径到参数path前,然后返回 一下是测试代码 func TestAbs() { fpt, err := filepath.Abs("/hello") if err != nil { panic(err) } fmt.Println(fpt) fpt, err = fil...阅读全文
golang传的很牛X,但不能交叉编译,对我来说一点用都没有,有个开源项目是用golang写的,如果不能在arm上用,那么我只能将它“翻译”成C,再集成到我的产品中,但我没有这个时间。好在交叉编译最后还是成功了。1. 准备工作1.1 golang环境及arm交叉编译工具可以参考《golang安装手札》这篇文章。1.2 GCC交叉编译器在1.1基础上,已经可以编译能在Arm上运行的纯golang写的二进制了,但有一个尚未解决的问题是:golang与C联合开发的模块,编译时报错:can't load...阅读全文
直接插入排序算法golang实现版本: 插入算法概要: 建立一个空的链表,首先在要排序的数组中随便拿出来一个数据,放在新建链表的开头,然后不停的从原数组中 获取数据,并和链表中的数据进行比较,大就放在链表的右端,小就放在链表的左端,一直循环直到结束为止, 排序完成。 package main import( "container/list" "fmt" ) var old []int = []int{432,432432,4234,333,333,21,22,3,30,8,20,2,...阅读全文
今天遇到了一个困惑的地方,很多新手可能会遇到(特别是之前是做JAVA的) golang中的面向对象的部分的特性(下边写的就是process是MySession结构体的一个方法,golang中采用的是这种一个代码片段一个代码片段的方式给结构体或者说class添加隶属于他的执行方法的,而拥有的属性和java中一样,事先定义在内部的。) type MySession struct{ in string out string } func (session MySession)process(xml...阅读全文
golang关于json库的一个比较容易陷入的坑 uint8[]数组的json转换问题. 2013-09-11 16:29 837人阅读 评论(0) 收藏 举报 原文来自:http://blog.csdn.net/spiritring/article/details/11570219 类似这个CA如果实例转化成json.List会变成字符串. [cpp] view plaincopy type CA struct { List []uint8 }...阅读全文
选择golang做游戏服务器开发 经过大半年的手机游戏运营、维护、后续开发,对下一个网络游戏的服务器端开发技术选型的需求如下:1. 体系成熟,有大型成功案例2. 开发效率高3. 性能高,最好是支持并行技术充分利用多cpu资源4. 代码加密发布5. 开发逻辑简单,如多线程同步、加锁、多进程同步就比较复杂6. 易学易用,如果是新技术 可选技术对比 我对可以选择的技术平台经过自己的一些分析总结如下(一己之言): 项目 nodejs python c++/ruby erlang golang ...阅读全文
go-lang已经发布了go1.1.2,前段时间看了一下go语言的教程,就喜欢上了这门语言,但使用多个文件编译是碰到一些麻烦,引用出错编译通不过,google之找到了相关教程: https://golang.org/doc/code.html http://lavafree.iteye.com/blog/1683363, http://blog.studygolang.com/2012/12/go项目的目录结构...阅读全文
github: https://github.com/ZhangzheBJUT/blog/blob/master/mgo.md 注:现在MongoDB官方还没有推出关于官方支持的golang的driver,推荐使用的是mgo, mgo的详细文档说明:http://godoc.org/labix.org/v2/mgo 下面是开发中自己写的一个用mgo连接MongoDB数据库的使用实例。 package main import ( "fmt" "labix.org/v2...阅读全文
windows emacs 语法高亮 1) .find ".emacs" file 打开emacs,然后在Options下随便挑个选项,点Save Options,看到下面的提示 Wrote [path]....".emacs" 2).copy el file copy %goroot%/misc/emacs/*.el [path]/.emacs.d/ 3).modify .emacs file add (setq load-path (cons (expand-file-name "~/....阅读全文
先看看有哪些类型 Time 时间类型,包含了秒和纳秒以及Location Month type Month int 月份.定义了十二个月的常量 Weekday type Weekday int 周,定义了一周的七天 Duration type Duration int64 持续时间.定义了以下持续时间类型.多用于时间的加减 需要传入Duration做为参数的时候.可以直接传入time.Second const ( Nanosecond Duration = 1 Microsecond ...阅读全文
golang select 选择器 常规模式: package main import ( "fmt" "strconv" ) func main() { var chs1 = make(chan int) var chs2 = make(chan float64) var chs3 = make(chan string) var ch4close = make(chan int) defer close(ch4close) go func(c chan int, ...阅读全文
value.go中的函数 func Append(s Value, x ...Value) Valuefunc AppendSlice(s, t Value) Valuefunc Indirect(v Value) Valuefunc MakeChan(typ Type, buffer int) Valuefunc MakeFunc(typ Type, fn func(args []Value) (results []Value)) Valuefunc MakeMap(typ Type) Val...阅读全文