March 25, 2016
Profiling Go Programs
"转自: http://blog.golang.org/profiling-go-programs (需翻墙)\nThe Go Blog Profiling Go Programs 24 June 2011\nAt Scala Days 2011, Robert Hundt presented a paper titled Loop Recognition in C++/Java/Go/Scala. The paper implemented a specific loop finding algorithm, such as you might use in a flow analysis pass of a compiler, in C++, Go, Java, Scala, and then used those programs to draw conclusions about typical performance concerns in these languages. The Go program presented in that paper runs quite …"
March 24, 2016
golang中并发实例
"package main import ( \u0026#34;fmt\u0026#34; //\u0026#34;runtime\u0026#34; \u0026#34;os\u0026#34; \u0026#34;runtime/pprof\u0026#34; // 引用pprof package \u0026#34;time\u0026#34; ) func main() { f, _ := os.Create(\u0026#34;profile_file\u0026#34;) pprof.StartCPUProfile(f) // 开始cpu profile,结果写到文件f中 defer pprof.StopCPUProfile() // 结束profile startTime := time.Now().Second() //runtime.GOMAXPROCS(runtime.NumCPU()) // 注意这里的缓存大小 ch := make(chan int, 100) quit := make(chan bool) // 注意这里把读取chan操作放在了写入chan之前了(为了安全建议对chan的goroutines读取放在前面,写入放在后面) // 如果把这行放在了for逻辑后面,则上 …"
March 24, 2016
在Golang中使用json
"由于要开发一个小型的web应用,而web应用大部分都会使用json作为数据传输的格式,所以有了这篇文章。\n包引用 import ( \u0026ldquo;encoding/json\u0026rdquo; \u0026ldquo;github.com/bitly/go-simplejson\u0026rdquo; // for json get )\n用于存放数据的结构体 type MyData struct { Name string json:\u0026quot;item\u0026quot; Other float32 json:\u0026quot;amount\u0026quot; }\n这里需要注意的就是后面单引号中的内容。\njson:\u0026quot;item\u0026quot;\n这个的作用,就是Name字段在从结构体实例编码到JSON数据格式的时候,使用item作为名字。算是一种重命名的方式吧。\n编码JSON var detail MyData\ndetail.Name = \u0026ldquo;1\u0026rdquo; detail.Other = \u0026ldquo;2\u0026rdquo;\nbody, err := json.Marshal(detail) if err != nil { …"
March 24, 2016
golang的json操作
"package main import ( \u0026#34;encoding/json\u0026#34; \u0026#34;fmt\u0026#34; \u0026#34;os\u0026#34; ) type ConfigStruct struct { Host string `json:\u0026#34;host\u0026#34;` Port int `json:\u0026#34;port\u0026#34;` AnalyticsFile string `json:\u0026#34;analytics_file\u0026#34;` StaticFileVersion int `json:\u0026#34;static_file_version\u0026#34;` StaticDir string `json:\u0026#34;static_dir\u0026#34;` TemplatesDir string `json:\u0026#34;templates_dir\u0026#34;` SerTcpSocketHost string `json:\u0026#34;serTcpSocketHost\u0026#34;` SerTcpSocketPort int `json:\u0026#34;serTcpSocketPort\u0026#34;` Fruits …"
March 23, 2016
golang中的md5的用法
"代码\npackage main import ( \u0026#34;crypto/md5\u0026#34; \u0026#34;encoding/hex\u0026#34; \u0026#34;fmt\u0026#34; ) func main() { // md5 加密的第一种方法 srcData := []byte(\u0026#34;iyannik0215\u0026#34;) cipherText1 := md5.Sum(srcData) fmt.Printf(\u0026#34;md5 encrypto is \u0026#34;iyannik0215\u0026#34;: %x n\u0026#34;, cipherText1) // md5 加密的第二种方法 hash := md5.New() hash.Write(srcData) cipherText2 := hash.Sum(nil) hexText := make([]byte, 32) hex.Encode(hexText, cipherText2) fmt.Println(\u0026#34;md5 encrypto is \u0026#34;iyannik0215\u0026#34;:\u0026#34;, string(hexText)) } # …"
March 21, 2016
koa中生成器函数generator执行顺序详解
"ES6的generator http://book.apebook.org/minghe/koa-action/co/start.html\nfunction* gen() { var a = yield \u0026#39;start\u0026#39;; console.log(a); var b = yield \u0026#39;end\u0026#39;; console.log(b); return \u0026#39;over\u0026#39;; } var it = gen(); console.log(it.next()); // {value: \u0026#39;start\u0026#39;, done: false} console.log(it.next(22)); // 22 {value: \u0026#39;end\u0026#39;, done: false} console.log(it.next(333)); // 333 {value: \u0026#39;over\u0026#39;, done: true} 带有 * 的函数声明表示是一个 generator 函数,当执行 gen() 时,函数体内的代码并没有执行,而是返回了一个 generator 对象。 …"
March 15, 2016
给一个正在运行的Docker容器动态添加Volume(转)
"之前有人问我Docker容器启动之后还能否再挂载卷,考虑mnt命名空间的工作原理,我一开始认为这很难实现。不过现在我认为是它实现的。\n简单来说,要想将磁盘卷挂载到正在运行的容器上,我们需要:\n使用nsenter将包含这个磁盘卷的整个文件系统mount到临时挂载点上; 从我们想当作磁盘卷使用的特定文件夹中创建绑定挂载(bind mount)到这个磁盘卷的位置; umount第一步创建的临时挂载点。 注意事项 在下面的示例中,我故意包含了$符号来表示这是Shell命令行提示符,以帮助大家区分哪些是你需要输入的,哪些是机器回复的。有一些多行命令,我也继续用\u0026gt;。我知道这样使得例子里的命令无法轻易得被拷贝粘贴。如果你想要拷贝粘贴代码,请查看文章最后的示例脚本。\n详细步骤 下面示例的前提是你已经使用如下命令启动了一个简单的名为charlie的容器:\n$ docker run --name charlie -ti ubuntu bash 我们需要做的是将宿主文件夹 /home/jpetazzo/Work/DOCKER/docker 挂载到容器里的 /src 目录。好了,让我们开始吧。 …"
March 12, 2016
node出现“dyld: bad external relocation length”的解决办法
"mac下有时候在执行 npm的过程中,我们强制中止了操作或者一些命令出现问题会提示“dyld: bad external relocation length”这个错误,这个时候只要将未下载完的文件删除即可,我这里使用 n 4.4.3下载的时候,网络出现异常,提示这个错误,只要删除 /usr/local/n/versions/node/4.4.3 这个目录即可。\n如果还是不行的话,可以试着执行一下\nbrew doctor 命令,根据提示操作就可以了。\n我遇到的情况是使用node版本控制n安装新版本号的时候,好像安装包下载的不完整,但提示安装成功了,在最后提示这个错误。试了好多方法卸载重装也不行,最后根据 brew doctor 的提示,执行了\nbrew link --overwrite node 彻底解决了。"
March 12, 2016
nodejs中package.json文件说明
"推荐: http://jingpin.jikexueyuan.com/article/34254.html\npackage.json 中包含各种所需模块以及项目的配置信息(名称、版本、许可证等)meta 信息。\npackage.json文件可以通过npm init 来创建\n包含可配置项 name 名称 应用描述 description 版本号 version 应用的配置项 config 作者 author 资源仓库地址 respository 授权方式 licenses 目录 directories 应用入口文件 main 命令行文件 bin 项目应用运行依赖模块 dependencies 项目应用开发环境依赖 devDependencies 运行引擎 engines 脚本 script 简单模式\n==========================\n{ name: \u0026#34;myApp\u0026#34;, version :\u0026#34;0.0.1\u0026#34; } 完整模式\n===========================\n{ \u0026#34;name\u0026#34;: \u0026#34;myApp\u0026#34;, …"