golang
文章平均质量分 56
yxw2014
这个作者很懒,什么都没留下…
展开
-
go语言限制Goroutine数量
package main import ( "fmt" "runtime" "time") func main() { runtime.GOMAXPROCS(runtime.NumCPU()) c := make(chan bool, 100) t := time.Tick(time.Second) go func() { for { select {原创 2014-03-10 22:33:27 · 7012 阅读 · 1 评论 -
golang coroutine 的等待与死锁
直接上代码:1. 第一种情况, 如果没有select{}, main 主线程不会等待coroutine运行,导致coroutine得不到机会运行。You are requesting eventual scheduling (using the two go statements) of two goroutines and then you exit main without g原创 2014-06-18 16:31:18 · 5025 阅读 · 1 评论 -
Handle inter-process communication between PhantomJS and Golang processes via hixie-76 websockets
Although PhantomJS version 1.9 does have WebSocket support, that support is limited to the hixie-76 draft of the protocol. PhantomJS 2.0 is scheduled to include the more modern RFC 6455 version of Web原创 2014-10-06 16:54:39 · 3264 阅读 · 0 评论 -
go语言检查内存泄露2
(pprof) topTotal: 53.0 MB 29.5 55.7% 55.7% 29.5 55.7% reflect.unsafe_NewArray 20.0 37.7% 93.4% 20.0 37.7% encoding/json.(*decodeState).literalStore 2.5 4.7% 98.1%原创 2014-03-24 18:21:06 · 3493 阅读 · 2 评论 -
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原创 2015-01-07 14:53:15 · 8880 阅读 · 0 评论 -
Golang gzip压缩的一个问题
func (b *MyBucket) Gzip(data []byte) []byte { var res bytes.Buffer gz, _ := gzip.NewWriterLevel(&res, 7) _, err := gz.Write(data) if err != nil { Log4e(err) } else {原创 2015-01-22 11:50:46 · 5096 阅读 · 1 评论 -
Golang编程经验总结
如何选择web框架:首先Golang语言开发web项目不一定非要框架,本身已经提供了Web开发需要的一切必要技术。当然如果想要ruby里面Rail那种高层次全栈式的MVC框架, Golang里面暂时没有,但是不是所有人都喜欢这种复杂的框架。Golang里面一些应用层面的技术需要自己去组装,比如session,cache, log等等. 可选择的web框架有martini, goji等,都是原创 2015-02-03 16:38:05 · 12200 阅读 · 2 评论 -
GoForCPPProgrammers
https://code.google.com/p/go/source/browse/misc/cgo/gmp/gmp.go?r=releasehttps://github.com/golang/go/wiki/GoForCPPProgrammershttp://zacg.github.io/blog/2013/06/06/calling-c-plus-plus-code-from-go-原创 2015-01-15 23:12:10 · 959 阅读 · 0 评论 -
go语言获取短网址真正的地址
如果短网址跳转多次,需要特殊处理,checkRedirect函数会多次返回,返回的error类型会被包装成url.Error类型,在GET方法的返回值里面可以对这个error做接口查询,获取返回值,然后对这个返回值做需要的处理。google group上别人的讨论: https://groups.google.com/forum/#!topic/golang-china/RLdLq-pP6原创 2014-03-17 12:02:02 · 3628 阅读 · 1 评论 -
Golang 处理Kafka消息
package mainimport ( "flag" "github.com/optiopay/kafka" "log" "net/http" "net/http/pprof" "strings" "time" "ooxx/config" "ooxx/lib" "ooxx/model")const LOG_CHANNEL_COUNT = 200const LOG_原创 2016-05-26 16:13:26 · 11982 阅读 · 2 评论 -
golang text/template的用法: if, else, with
package mainimport "text/template"import "os"func main() { type Inventory struct { Material string Count int } sweaters := Inventory{"axe", 0} html := ` "test").Parse("{{.Count}} ite原创 2014-06-05 23:26:04 · 21526 阅读 · 0 评论 -
Amazon Api 签名算法(golang版和java版)
package mainimport "fmt"import "crypto/hmac"import "crypto/sha256"import "time"import "strings"import "encoding/base64"import "net/http"import "net/url"import "io/ioutil"const METHOD ="GET原创 2014-04-08 22:54:16 · 6796 阅读 · 6 评论 -
go语言抓取twitter
1. 第一步修改anaconda库, 以获取Search_meta_data ;2. 调用anaconda, 抓取search数据,略package anacondaimport ( "net/url")type Search_meta_data struct { Completed_in float32 `json:"completed_in"` Max_id原创 2014-03-06 13:43:29 · 2147 阅读 · 0 评论 -
go语言web项目翻页实现
改写自php的一个分页函数,应该够用!package mainimport ( "strings" "strconv" "math" "fmt" "os")func main() { var html string html= multi(100, 10, 3, "http://xxoo.io") userFile := "log.html"原创 2014-03-07 09:36:38 · 2682 阅读 · 1 评论 -
go语言并发
http://pragprog.com/magazines/2012-06/the-beauty-of-concurrency-in-go原创 2014-03-08 16:22:30 · 1459 阅读 · 0 评论 -
golang, methods on values or pointers?
package mainimport "fmt"type t struct { s string}func (o t) f1() { o.s = "f1"}func (p *t) f2() { p.s = "f2"}func main() { t1 := t{ s: "t1", } fmt.Println("t1:", t1.s) t1.f1() fm原创 2014-03-10 13:19:52 · 1852 阅读 · 0 评论 -
golang 1.2.1在生产环境中应用应该注意的问题
golang 1.2.1的GC因为算法的问题,在实际应用过程中,对于长时间运行的damon程序,确实很容易导致内存泄露,有人用cgo来手动管理内存,也有人用pool来管理buffer,这些都很麻烦,还是等1.3发布吧,在 golang 1.2.1中,如果注意一些坑,还是很容易写出稳定运行的程序。1. 避免递归;2.在for里面,把一些每次重复的操作提到外面,比如包的init方法中执行, 这原创 2014-03-27 13:54:06 · 4571 阅读 · 0 评论 -
golang websocket的例子
最近写了一个chrome的websocket extension, server端用的是Netty, 后来发现golang 实现websocket 非常简单,高效, 下面是例子, 简单实现了用户登录,广播,相当于聊天室!package mainimport ( "code.google.com/p/go.net/websocket" "html/template" "log"原创 2014-04-22 17:19:52 · 7174 阅读 · 1 评论 -
go语言检查内存泄露
[root@s3 twitter]# go tool pprof http://localhost:6060/debug/pprof/heap --textRead http://localhost:6060/debug/pprof/symbolFetching /pprof/heap profile from localhost:6060 to /tmp/76z7mNTrzOW原创 2014-03-24 16:38:37 · 5068 阅读 · 1 评论 -
golang 基于epoll/kqueue的socket server
空余时间撸的项目,开源。 golang中使用epoll,代码如下:// +build linuxpackage aio// #include <errno.h>// #include <fcntl.h>// #include <sys/epoll.h>import "C"import ( "syscall" "time"..原创 2018-02-26 11:43:02 · 4463 阅读 · 0 评论