自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

aeoluspu的专栏

胡言乱语 随手记

  • 博客(37)
  • 收藏
  • 关注

转载 Collection Functions

packagemainimport "strings"import "fmt"//Returns the first index of the target string t, or -1 if no match is found.func Index(vs []string, t string) int {    for i, v := range vs { 

2016-01-29 18:01:50 414

翻译 defer

packagemainimport "fmt"import "os"func main() {    f := createFile("/tmp/defer.txt")    defer closeFile(f)    writeFile(f)}func createFile(p string) *os.File {    fmt.Print

2016-01-28 17:59:58 321

翻译 Atomic Counters

packagemainimport "fmt"import "time"import "sync/atomic"import "runtime"func main() {    var ops uint64 = 0    for i := 0; i 50; i++ {        go func() {            for {

2016-01-28 11:08:27 320

转载 rate limiting

packagemainimport "time"import "fmt"func main() {    requests := make(chan int, 5)    for i := 1; i 5; i++ {        requests i    }    close(requests)    limiter := time.Ti

2016-01-28 10:05:56 468

原创 为何有大量show slave status产生

今天接到同事邮件,某台mysql数据库slave库延迟。第一时间感觉不太可能啊,这台机器性能还是可以的。马上登陆服务器上查看,执行show slave status 后 就卡顿了。直接kill掉本回话后,查看show processlist,发现大量show slave status进程。这些进程是哪里来的呢,发现是监控zabbix脚本发出的请求,马上停掉zabbix客户端监控,发现没有大的改

2016-01-27 22:30:17 616

翻译 Worker Pools

packagemainimport "fmt"import "time"func worker(id int, jobs chan int, results chan int) {    for j := range jobs {        fmt.Println("worker", id, "processling job", j)        time

2016-01-26 15:47:23 356

翻译 tickers

packagemainimport "time"import "fmt"//timers用于在某一时你想做某些事情时,tickers用于在某一时间段内重复做某事func main() {    ticker := time.NewTicker(time.Millisecond * 500)    go func() {        for t := ran

2016-01-26 14:10:33 499

翻译 timer

packagemainimport "time"import "fmt"/* 我们常常想在某一时刻或某一个区间执行go代码,go提供了timer和ticker特性使这两个任务变得容易。 */func main() {    /* timers在未来代表一个单独的事件。你需要告诉timer你想等待多长时间,他将提供一个需要关注的通道,timeer需要等待2秒*/ 

2016-01-26 11:38:07 300

原创 英文记录

at some point : 某一时刻at some interval:某一区间

2016-01-26 11:37:43 349

翻译 Closing Channels

packagemainimport "fmt"func main() {    jobs := make(chan int, 5)    done := make(chan bool)    go func() {        for {            j, more := jobs            if more {

2016-01-25 17:55:28 407

翻译 Non-Blocking Channel Operations

packagemainimport "fmt"func main() {    messages := make(chan string)    signals := make(chan bool)    select {    case msg := messages:        fmt.Println("received message", ms

2016-01-25 17:42:55 381

原创 mongodb 如何追踪集群数据

先留

2016-01-25 17:42:17 426

翻译 timeout

packagemainimport "time"import "fmt"func main() {    c1 := make(chan string, 1)    go func() {        time.Sleep(time.Second * 2)        c1 "result 1"    }()    select {  

2016-01-25 13:45:54 313

翻译 select

packagemainimport "time"import "fmt"func main() {    //创建两个通道    c1 := make(chan string)    c2 := make(chan string)    //创建开启通道    go func() {        time.Sleep(time.Second *

2016-01-25 11:38:02 298

翻译 channel directions

packagemain//channel directions//通道作为函数参数,你需要指明通道是作为发送还是接受。//这种指明提高了程序类型的安全import "fmt"func ping(pings chan string, msg string) {    pings msg}// 通道作为参数func pong(pings cha

2016-01-25 10:18:18 372

翻译 Channel Synchronization

packagemainimport "fmt"import "time"func worker(done chan bool) {    fmt.Print("working...")    //暂停    time.Sleep(time.Second)    fmt.Println("done")    done true}func

2016-01-22 17:31:20 386

翻译 buffer channel

packagemainimport "fmt"func main() {    messages := make(chan string, 2)    messages "buffered"    messages "channel"    fmt.Println(messages)    fmt.Println(messages)}

2016-01-22 16:49:18 352

翻译 channel --通道

packagemain// channel是连接goroutine的通道,可以发送值从一个channel到另一个channel。// 也可以接受来自其他channel的信息import "fmt"func main() {    //make创建channel    messages := make(chan string)    //通过    go

2016-01-22 16:13:48 33489

翻译 channel

packagemain// channel是连接goroutine的通道,可以发送值从一个channel到另一个channel。// 也可以接受来自其他channel的信息import "fmt"func main() {    //make创建channel    messages := make(chan string)    //通过    go

2016-01-22 16:02:18 6507

翻译 goroutine

packagemainimport "fmt"func f(from string) {    for i := 0; i 3; i++ {        fmt.Println(from, ":", i)    }}func main() {    f("direct")    //go并发 关键字go    go f("goroutin

2016-01-22 15:52:16 305

翻译 error--

第一次看这个,觉的比较难懂,后续需要继续看packagemainimport "errors"import "fmt"//By convention, errors are the last return value and have type error, a built-in interface.func f1(arg int) (int, error) {

2016-01-21 19:22:25 783

原创 mysql add index演变历程

mysql 5.5之前都是通过copytable方式,跟add column方式一样。5.5开始使用inplace方式,此方式在原表的基础上添加索引,抛开了copytable过程,缩短了添加索引过程,在次过程中表被锁定,只读不能写。5.6之后启用online模式。可以在线读写,完全不阻塞表。沿用5.5的inplace方式,在修改过程中,写入的新数据通过rowlog存放。索引添加完毕,重新回放r

2016-01-21 15:45:27 679

翻译 value

go具有各种各样的数值类型如strings,integers,floats,booleans等等,下面有一些基本的examplesstrings 可以通过+号连接合并一个新string。integers 和floats 都跟其他语言一样,基于基本的运算。booleans 还有你希望的booleans用法如下:package mainimport "fmt"

2016-01-21 15:44:04 310

原创 map

package mainimport "fmt"func main() {    // map 定义    m := make(map[string]int)    //map赋值    m["k1"] = 7    m["k2"] = 14    //map输出    fmt.Println("map:", m)    //m

2016-01-21 15:43:24 305

翻译 range

package main// range 如何遍历slice,遍历map映射一样import "fmt"func main() {    // range遍历求和    nums := []int{2, 3, 4}    sum := 0    for _, num := range nums {        sum += num 

2016-01-21 15:42:44 319

翻译 function

package mainimport "fmt"// 传递两int型值,返回他们的和func plus(a int, b int) int {    return a + b}func plusplus(a int, b int, c int) int {    return a + b + c}// 像其他语言一样调用

2016-01-21 15:42:01 241

原创 Multiple Return Values

package mainimport "fmt"//return返回多值,这特性是go的惯用习惯,如返回时返回两个value,一个结果,一个错误标识。func vals() (int, int) {    return 3, 7}func main() {    // 两个变量接受函数的返回值    a, b := vals()

2016-01-21 15:41:01 391

原创 variadic functions

package mainimport "fmt"//variadic functions 可变参数函数func sum(nums ...int) {    //输出函数参数值    fmt.Println(nums, "")    total := 0    // for range 遍历参数值    for _, num := range

2016-01-21 15:40:15 327

原创 for

package mainimport "fmt" //除了这三种方式,还有其他方式 等到range、channel和其他数据结构时再学习func main() {    //最通用流行方式,单个条件    i := 1    for i 3 {        fmt.Println(i)        i = i + 1    } 

2016-01-21 15:39:28 261

原创 if...else

package mainimport "fmt"func main() {    // if .. else ..    if 7%2 == 0 {        fmt.Println("7 is even")    } else {        fmt.Println("7 is odd")    }    // if ..

2016-01-21 15:37:58 329

原创 switch

package mainimport "fmt"import "time"func main() {    i := 2    fmt.Println("write", i, "as")    switch i {    case 1:        fmt.Println("one")    case 2:       

2016-01-21 15:36:58 241

原创 array

package mainimport "fmt"func main() {    //定义一个int型数组    var a [5]int    fmt.Println("emp", a)    //数据项赋值    a[4] = 100    //打印数组    fmt.Println("set:", a)    //打印元素

2016-01-21 15:36:03 207

原创 slice

package mainimport "fmt"func main() {    //创建一个空的slices    s := make([]string, 3)    fmt.Println("emp", s)    //slice赋值    s[0] = "a"    s[1] = "b"    s[2] = "c"    

2016-01-21 15:35:01 253

原创 Closures--闭包

package mainimport "fmt"// 闭包 不管是否是局部变量还是全局变量,调用闭包,闭包中的变量都有效//闭包格式func intSeq() func() int {    i := 0    //匿名函数    return func() int {        i += 1        return i

2016-01-21 15:34:05 249

原创 Recursion--递归

package mainimport "fmt"// 经典递归 Recursionfunc fact(n int) int {    if n == 0 {        return 1    }    return n * fact(n-1)}func main() {    fmt.Println(fact(7))

2016-01-21 15:33:19 252

原创 struct --结构体

package mainimport "fmt"//定义结构体 结构体是个变化的type person struct {    name string    age int}func main() {    //初始化struct结构体    fmt.Println(person{"BOb", 20})    fmt.P

2016-01-21 14:40:39 316

原创 interface --接口

package mainimport "fmt"import "math"// 定义接口type geometry interface {    area() float64    perim() float64}// 定义结构体type rect struct {    width, height float64}

2016-01-21 14:38:55 368

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除