导航

随笔分类 -  Go语言

摘要:golang.org/x/mobile/gl 实现的是 OpenGL ES 2 的封装。 参考:https://godoc.org/golang.org/x/mobile/gl OpenGL ES(OpenGL for Embedded Systems)是OpenGL三维图形API的子集,针对手机、 阅读全文

posted @ 2016-02-03 10:26 蝈蝈俊 阅读(1919) 评论(0) 推荐(0) 编辑

摘要:我们在源码中可以看到2个文件: main.go 和 main_x.go 这两个包名都是 package main , 都有 main 函数。 不会冲突么? 答案是不会的, main_x.go 文件中有个注释: // +build !darwin,!linux,!windows main.go 文件中 阅读全文

posted @ 2016-02-02 19:51 蝈蝈俊 阅读(754) 评论(0) 推荐(0) 编辑

摘要:需要的工具 设置代理 请参考:http://www.cnblogs.com/ghj1976/p/5087049.html Mac 下命令行设置代理: export http_proxy=http://127.0.0.1:8787 git config --global http.proxy http 阅读全文

posted @ 2016-01-31 21:55 蝈蝈俊 阅读(2188) 评论(3) 推荐(0) 编辑

摘要:看下面两行代码: http.Handle("/file/", http.StripPrefix("/file", http.FileServer(http.Dir("./output/")))) http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./output/")))) ht... 阅读全文

posted @ 2016-01-05 15:41 蝈蝈俊 阅读(6462) 评论(0) 推荐(1) 编辑

摘要:go get 用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code和Launchpad。这个命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行go install。下载源码包的go工具会自动根据不同的域名调用不同的源码工具,对应关系如下: Bi 阅读全文

posted @ 2015-12-29 21:02 蝈蝈俊 阅读(31264) 评论(5) 推荐(1) 编辑

摘要:我们可能需要类似 go get –u …. 这样的方式来实现我们的应用,这时候我们无法简单地使用 flag.Parse 了,而是要用 FlagSet 了, 使用例子如下: package main import ( "flag" "log" "os" ) var () func main() { // 读取命令参数,注意,这里根... 阅读全文

posted @ 2015-12-29 15:32 蝈蝈俊 阅读(1087) 评论(0) 推荐(0) 编辑

摘要:代码: package main import ( "bytes" "fmt" "text/template" "time" ) func FormatNow(format string) string { return time.Now().Format(format) } func main() { ... 阅读全文

posted @ 2015-12-22 13:34 蝈蝈俊 阅读(1299) 评论(0) 推荐(0) 编辑

摘要:graphviz的介绍请参考: http://www.cnblogs.com/ghj1976/p/4539788.html 安装 graphviz 需要在 http://www.graphviz.org/Download_macos.php 下载对应操作系统的版本。 安装完成后,可以用 dot –V 命令查看安装的版本,确认安装 mac 下安装后,会有一个 Graphviz ... 阅读全文

posted @ 2015-11-03 18:29 蝈蝈俊 阅读(4357) 评论(0) 推荐(0) 编辑

摘要:测试代码: package main import ( "fmt" "time" ) const ( num = 10000000 // 测试1千万次发送和接收 ) func main() { TestChan2() } func TestChan2() { st := time.N... 阅读全文

posted @ 2015-06-19 09:41 蝈蝈俊 阅读(1369) 评论(0) 推荐(0) 编辑

摘要:本文的例子代码在: https://github.com/grpc/grpc-go/tree/master/examples/route_guide 功能就类似目前LBS一样,在每个位置上报一些文字信息, 上报方式有多种。 在 .proto 文件中定义服务 在 .proto 文件中定义一个服务很简单, 就像如下的代码: service RouteGuide { ... }... 阅读全文

posted @ 2015-06-11 16:19 蝈蝈俊 阅读(5604) 评论(0) 推荐(0) 编辑

摘要:本篇文章主要解决mac下安装ProtoBuffer,编译go版本gRPC用的.proto文件 安装 protoc 注意,gRPC 需要用到 proto3, 而目前 Release 的版本是 2.6.1, 所以我们需要去下载源码并编译。 https://developers.google.com/pr 阅读全文

posted @ 2015-06-09 17:33 蝈蝈俊 阅读(3943) 评论(0) 推荐(0) 编辑

摘要:gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可... 阅读全文

posted @ 2015-06-03 16:56 蝈蝈俊 阅读(7633) 评论(0) 推荐(0) 编辑

摘要:Go 中监控代码性能的有两个包: net/http/pprof runtime/pprof 这两个包都是可以监控代码性能的, 只不过net/http/pprof是通过http端口方式暴露出来的,内部封装的仍然是runtime/pprof。 runtime/pprof 的用法示例 这里的例子我们用 递归实现的斐波纳契数列来测试性能,斐波纳契数列 的代码如下: pac... 阅读全文

posted @ 2015-06-01 17:33 蝈蝈俊 阅读(1921) 评论(0) 推荐(0) 编辑

摘要:一、快速入门 通过快速入门可以宏观的了解Go相关知识。快速入门可以去学习 go-tour 国内可以访问的中文版的 go-tour 地址有下面一些: http://gotour.qizhanming.com/#1 也可以自行搭建 go-tour 的环境, 搭建方法参考: http://www.cnblogs.com/ghj1976/archive/2013/03/08/29492... 阅读全文

posted @ 2015-05-29 14:46 蝈蝈俊 阅读(1282) 评论(1) 推荐(2) 编辑

摘要:WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。 官方对它的说明如下: A WaitGroup waits for a collection of goroutines to finish. The main goroutine calls Add to set the number of goroutine... 阅读全文

posted @ 2015-05-29 11:11 蝈蝈俊 阅读(19326) 评论(0) 推荐(0) 编辑

摘要:关闭2次 ch := make(chan bool) close(ch) close(ch) // 这样会panic的,channel不能close两次 读取的时候channel提前关闭了 ch := make(chan string) close(ch) i := <- ch // 不会panic, i读取到的值是空 "", 如果channel是bool... 阅读全文

posted @ 2015-05-28 19:31 蝈蝈俊 阅读(863) 评论(0) 推荐(0) 编辑

摘要:ctags(Generate tag files for source code)是vim下方便代码阅读的工具。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。 参考: http://baike.baidu.com/view/9340968.htm 环境准备: 1、安装 sublimet... 阅读全文

posted @ 2015-03-06 15:34 蝈蝈俊 阅读(720) 评论(0) 推荐(0) 编辑

摘要:Qless是一个基于redis的分布式任务架构。相关代码在 https://github.com/seomoz/qless 它是完全有lua实现的,依靠 redis 对lua的支持,http://www.cnblogs.com/ghj1976/p/4298206.html 它实现了对redis的功能扩展。 有关lua的一些语法基础知识可以参考:http://www.cnblogs.c... 阅读全文

posted @ 2015-02-24 09:03 蝈蝈俊 阅读(616) 评论(0) 推荐(0) 编辑

摘要:RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 它的工作流程如下图: golang 使用 RPC的例子如下: 服务器端代码: 这里暴露了一个RPC接口,一个HTTP接口 package main import ( "fmt" ... 阅读全文

posted @ 2015-02-17 15:33 蝈蝈俊 阅读(1671) 评论(0) 推荐(0) 编辑

摘要:channel默认上是阻塞的,也就是说,如果Channel满了,就阻塞写,如果Channel空了,就阻塞读。阻塞的含义就是一直等到轮到它为止。单有时候我们会收到 fatal error: all goroutines are asleep - deadlock! 异常,这是如何呢? 代码例子: package main import "fmt" func main() { ... 阅读全文

posted @ 2015-02-17 11:26 蝈蝈俊 阅读(11781) 评论(1) 推荐(1) 编辑