vitess源码阅读笔记cache系列之用go实现通用资源池

更新日志: 更新至2012.4.8的vitess代码 新的代码增加了同步用的条件变量,没有空闲资源时的排队不再使用channel来同步(使用其它编程语言的同学可以方便的移植这个代码了),转而使用condition variable。不再使用mu.RLock,统一使用Lock,不再纠结。 整体代码清晰了许多。 为了进一步提高性能和代码复用,vitess还提供了通用的池管理,RoundRobin.go中实现了通用的资源池,方便管理池内资源总数,超时。 先上第一道菜:RoundRobin在整个vite...阅读全文

博客园 2014-10-04 19:26:27 gongaut

go语言四—脚本二

记录一些go脚本,使用定时器,信号,go轻量级线程,调用系统命令,压缩,计算md5,列表,获取本机IP等功能 (向程序发送信号如:kill -2 进程号) package main import ( "os"; "os/signal"; "os/exec" "syscall" "net" "time" "strconv"; "strings" "bufio" "io/ioutil" "fmt" "archive/zip" "crypto/md5" l "container...阅读全文

ITEYE博客 2013-08-02 10:59 ciaos

go语言最好的帮助在哪里?

go语言本身是开源的,目前下载的开发包直接是带go源代码的,最好的参考资料实际是在go语言自身的源代码里面(…\src\pkg),        源代码里面有go基础库各项功能的实现代码,比如:\src\pkg\encoding\binary\binary.go对于学习整型变量与byte之间的转换就很有帮助。         [转]其它Go语言资料收集wonderfogo的博客(原文)已经很全了,直接转过来。         资料收集很全,感谢原文作者。 搜索引擎 官网搜索 点这里 搜索官网上...阅读全文

博客园 2013-04-29 09:19 youyou

打造完美的go开发环境

这篇原来是给公司里使用go开发的交流用的,主要是工具的安装,用markdown写的,发布了内部gitlab上,仓促发布到blog上面,也没改啥格式,现在整理一下,然后增加一点说明 基础开发工具 sublime text2下载 为何使用sublime text2?相信很多喜欢轻量级工具,开大量chrome网页以及使用大量小而精软件的开发者都喜欢editor吧,当然最主要是vim mode! 安装package control 打开后,按ctrl + ~打开命令行,或者在view->sh...阅读全文

博客园 2014-08-14 12:20 qgymje

mgo-后续测试(指定字段,获取id)

测试完mgo中的DBRef后,想接着测试指定字段的显示,才发现原来采用框架编码,很多问题被隐藏了起来: 1.显示指定字段:   之前在使用mgo时一直是查询全部字段,在mongo终端环境写为如下格式: > db.logs.find({},{"log":1}) { "_id" : "3a06384a40a8e587806f194c6c80253e", "log" : "这是一个测试日志" } { "_id" : "36bb718040a4362b8035ebd822125dba", "log" ...阅读全文

博客园 2014-01-25 14:23 forrestsun

go语言实现两个数组合并(merge)

//x数组,i:x数组的起始下标  y数组,j:y数组的起始下标 //说明:x和y数组都是有序的数组 func merge(x []int, i int, y []int, j int) []int {    xlen := len(x)//x数组的长度    ylen := len(y)//y数组的长度    z := make([]int, xlen+ylen)//创建一个大小为xlen+ylen的数组切片    k := 0//数组切片z的下标 ...阅读全文

开源中国博客 2013-12-02 17:57 zongjh

go语言基础总结

// second //以下代码不可以直接使用,go语言中凡是声明过的变量都要使用,否则会报错 //以下代码只是go语言基础总结,包括了从变量声明到switch分支 package main import ( "fmt" ) //声明常量 const ( i = 0 s string = "Test" Start string = "go语言开始" //首字母大写的变量是公有的(待验证) ) //声明一组全局变量 var ( k int s2...阅读全文

ITEYE博客 2014-01-17 16:17 wangfeiaini

go语言调用百度帐号

1:你要注册一个开发者,创建应用,填写完基本信息之后就要填写回调地址了 2:选择右上角的管理控制台---选择左下角的 其他API -- 选择安全设置--授权回调页 3:测试代码 如下: package main import (     // 自己引包 ) type AccessToken struct {     AccessToken string `json:"access_token"`     ExpiresIn    int     `json:"expi...阅读全文

开源中国博客 2013-12-11 17:59 zongjh

go-tour的安装

首先当然是安装go运行环境,安装方法参看: http://www.cnblogs.com/ghj1976/archive/2013/01/16/2863142.html   一、安装 Mercurial         Mercurial 是一个跨平台的分布式版本控制软件。Mercurial主要由Python语言实现,不过也包含一个用C实现的二进制比较工具。Mercurial一开始的主要运行平台是Linux。现在Mercurial已经被移植到Windows、Mac OS X 和大多数类Unix系...阅读全文

博客园 2013-03-08 09:21 ghj1976

go sync.Mutex 设计思想与演化过程 (一)

go语言在云计算时代将会如日中天,还抱着.NET不放的人将会被淘汰。学习go语言和.NET完全不一样,它有非常简单的runtime 和 类库。最好的办法就是将整个源代码读一遍,这是我见过最简洁的系统类库。读了之后,你会真正体会到C#的面向对象的表达方式是有问题的,继承并不是必要的东西。相同的问题,在go中有更加简单的表达。   go runtime 没有提供任何的锁,只是提供了一个PV操作原语。独占锁,条件锁 都是基于这个原语实现的。如果你学习了go,那就就知道如何在windows下高效的方式实...阅读全文

博客园 2013-06-24 23:57 niniwzw

用 C# 简单模拟 Google Go 语言中的 Channel 和 goroutine 机制

前段时间尝试了一点 Google 的 Go 语言,感觉其很多特性还是不错的。Go 语言旨在结合传统编译型的静态语言和解释型的动态语言的优点,在其中找到一个平衡。从而打造一个既快速(编译执行),又方便编程的语言(动态语言往往语法简单快捷)。同时,Go 语言还具备丰富的特性以支持并发编程,这在现在多核非常普及的情况下,是很重要和强大的一个功能。 Go 语言的并发特性主要有 goroutine, channel 等。 goroutine - 可以大致理解为一种轻量级的线程(或微线程),它是一种“分...阅读全文

博客园 2010-08-25 19:07 RChen