Golang创建daemon程序
## daemon的概念 守护进程(daemon)就是一直在后台运行的进程,它没有控制终端,无法和前台的用户交互。当我们打开一个终端时会创建一个session会话(shell),从用户登录开始到用户退出为止,这段时间内在该终端执行的进程都属于这一个会话。一个会话一般包含一个前台进程组、一个后台进程组和一个会话首进程(shell程序本身)。 例如用以下命令启动5个进程: > $ proc1 | proc2 & > $ proc3 | proc4 | proc5 > proc1和proc2属于同一个...阅读全文
golang之路-api杂记-格式化float输出
golang之路-格式化float输出 代码: a:=strconv.FormatFloat(10.100,'f',-1,32) 输出: 10.1 a := strconv.FormatFloat(10.101, 'f', -1, 64) 输出: 10.101 a := strconv.FormatFloat(10.010, 'f', -1, 64) 输出:10.01 a:=strconv.FormatFloat(10.1,'f',2,64) 输出:10.10 f 参数可以是e,E,g,G-1 ...阅读全文
golang的package
golang的packagegolang的package和其他语言的组织方式完全不同,刚开始接触时,很不适应。我觉得go的package有两个很大的特点:1、go的package超越了文件的概念;2、go的package是以绝对路径GOPATH来寻址的,不要用相对路径来import在同一个package里,多个文件被go编译器看作是一个文件一样,因此,这多个文件中不能出现相同的全局变量和函数,一个例外是init函数;而同一个package的不同文件可以直接引用相互之间的数据。阅读全文
ubuntu安装go
1,源码编译 apt-get update; apt-get install -y gcc libc6-dev; apt-get install -y mercurial; apt-get install -y git; hg clone -u release https://code.google.com/p/go; cd go/src && ./all.bash; 2,apt-get 安装 I found a repo that has the latest versions: https:...阅读全文
Go语言中的字符和字符串
Go语言中的字符 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称。 下面用一个简单的程序来演示字符类型: package main import ( "fmt" "reflect" ) func main() { r := '我' fmt.Printf("%q的类型为:%t 二进制为:%b\n", r, r, r) rType := reflect.TypeOf(r).Kind() fmt.Printf("r的实际类型为:%s\n", rType) } 程序输出:...阅读全文
[转Go-简洁的并发 ]
http://www.yankay.com/go-clear-concurreny/ Posted on 2012-11-28 by yankay 多核处理器越来越普及。有没有一种简单的办法,能够让我们写的软件释放多核的威力?是有的。随着Golang, Erlang, Scala等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式有一个极其简洁的内核,还有在此之上丰富的外延。可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。 ...阅读全文
Linux下使用goagent
Linux下使用goagent 分类: linux 2013-04-18 11:16 21614人阅读 评论(4) 收藏 举报 说到穿越长城的软件有很多,不过最近最有名而且免费的就非goagent莫属了,goagent是利用谷歌的GAE服务来翻越长城的,具有速度快,稳定的特点,正好今天我的ssh代理过期,于是准备以后使用goagent来FQ。 1:申请appengine.google.com的个人apppid 首先登录appengine.google.com,申请个人apppid,它将在Goag...阅读全文
使用Go语言一段时间的感受
作者 openkk 2012-03-04 18:26:58 文/Windstorm 有一段时间没更新了。最近在忙一个 Server+Client 的项目,Client 是 Android 手机,大概也就是几十的规模。Server 是纯 Golang 实现,没有 apache 或者 ngix 这种 web server,也没有数据库,自己写了个文件管理 module,handle 这种小规模的服务没问题。算下来接触 Golang 也有四个多月了,断断续续写了一些东西,这里纪录一下心得吧 先大概说下...阅读全文
topic 1: golang file operation
1. kinds of operation In general, there are several kinds of file operations as bellow. (1) Create file/folder, Open file, Close file, Remove file/folder, path (2) Read all data at a time; Write all data at a time; (3) Read Line, read with cursor; wr...阅读全文
Golang基于TCP/IP的简单聊天程序
Server.go package main import ( "fmt" "io" "net" "os" "strings" ) func main() { addr, err := net.ResolveTCPAddr("tcp", ":4040") checkErr(err) listen, err := net.ListenTCP("tcp", addr) checkErr(err) fmt.Println("Start server...") for { conn, err := li...阅读全文
【玩转Golang】 自定义json序列化对象时,非法字符错误原因
由于前台web页面传来的日期对象是这样的格式“2010-11-03 15:23:22”,所以我安装网上查来的办法,自定义包装了time.Time对象,实现自己的Marshal和UnMarshal方法 type DateTime struct { time.Time } const ctLayout = "2006-01-02 15:04:05" const ctLayout_nosec = "2006-01-02 15:04" const ctLayout_date = "2006-01-02"...阅读全文
golang container heap&sort
go语言也自己的容器数据结构。主要有list、heap和ring package main import ( "container/heap" "fmt" "sort" // "strconv" ) type HeapInt []int func (h HeapInt) Len() int { return len(h) } func (h HeapInt) Less(i, j int) bool { return h[i] < h[j] } func (h HeapInt) Swap(i, j...阅读全文
【玩转Golang】 通过组合嵌入实现代码共用
应用开发中的一个常见情景,为了避免简单重复,需要在基类中实现共用代码,着同样有助于后期维护。 如果在以往的支持类继承的语言中,比如c++,Java,c#等,这很简单!可是go不支持继承,只能mixin嵌入,且看下面的代码: type ManKind interface{ Say(s string); GetMouth()string } type Man struct{ ManKind } func NewMan() ManKind{ return &Man{}; } func (this *M...阅读全文
使用golang 开发的 andriod应用
最近在捣鼓一个东东,就是使用golang开发andriod应用.说起来简单操作起来还挺麻烦,中间又学习了很多东西.比如ubuntu,docker,angular,ionic,jquery mobile,amazeui,avalon,andriod studio.对每样都东西都有个了解后,才完成使用golang 开发andriod应用的任务.虽然有几个技术项目没有用,但毕竟选择合适的需要对比. 这次捣鼓收获很多,对上面几个技术都有一个不错的了解,不说精通,但至少入门了. 下面我就把这次主要的体会写...阅读全文
[golang学习] goroutine调度
这两天有些闲功夫, 学习下golang, 确实非常简洁. 不过有些缺憾. 在我的测试中. golang的调度(goroutine)似乎不是非常好. func say(k int) { fmt.Println(k) } func main() { runtime.GOMAXPROCS(2) for i := 0; i < 100; i++ { go say(i) } for { } } 这段测试代码是有bug的. 一开始我并没有设置 runtime.GOMAXPROCS(2) 则由于for循环导致...阅读全文
[golang学习] 在idea中code & debug
idea 虽然审美倒退了n年. 不过功能还是相当好用的. idea 的go插件堪称最好的go ide. 1. 语法高亮支持 2. 智能提示 3. 跳转定义(反跳转回来) 4. 集成debugger 还有重构等等功能也不错. 这些都是用起来让人很舒服的功能. 你要是用vim/emacs/sublime啥的. 当我没说. 很多人可能都不知道golang 代码可以debug. 很多人用console gdb命令式的调试. 如果不需要界面化的调试器, 也可以略过了. 1. 语法高亮支持 配色看起来挺搓的...阅读全文
golang daemon
package main import ( "fmt" "log" "os" "runtime" "syscall" "time" ) func daemon(nochdir, noclose int) int { var ret, ret2 uintptr var err syscall.Errno darwin := runtime.GOOS == "darwin" // already a daemon if syscall.Getppid() == 1 { return 0 } // f...阅读全文