Rabbitmq集群配置

Submitted by Lizhe on Fri, 09/22/2017 - 09:55
10.10.8.52      vm1
10.10.8.52      vm2

/usr/lib/rabbitmq/bin/rabbitmq-server &

/usr/lib/rabbitmq/bin/rabbitmq-server -detached

/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management

 

/var/lib/rabbitmq/.erlang.cookie 或者$HOME 下

Go 闭包

Submitted by Lizhe on Wed, 09/13/2017 - 10:59

package main

import (
    "fmt"
)

func main() {
    function := squares()
    fmt.Println(function())
    fmt.Println(function())
    fmt.Println(function())
    fmt.Println(function())
}

func squares() func() int {
    var x int
    return func() int {
        x++
        return x*x
    }
}

 

Go html template

Submitted by Lizhe on Tue, 09/12/2017 - 11:39

 

package main

import (
    "html/template"
    "os"
)

func main() {
    const tpl = `hello {{.}}`
    data := "world"

    t, err := template.New("").Parse(tpl)
    if err == nil {
        t.Execute(os.Stdout, data)
    }

}
 

使用结构体

Go 中文字符串处理

Submitted by Lizhe on Fri, 09/01/2017 - 11:37

Go语言本身是使用utf8的, 不过在处理字符串的时候仍然需要注意一些事情

问题很简单,直接看例子吧

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    str := "这是一个测试字符串"
    fmt.Println(str)
    fmt.Println(utf8.RuneCountInString(str))
    fmt.Println(utf8.DecodeRuneInString(str))

Go map ++

Submitted by Lizhe on Mon, 08/28/2017 - 17:23

今天发现go的map结构居然可以直接用 ++ 当值... 好神奇

记录一下

package app

import (
    "bufio"
    "fmt"
    "os"
)

Go debug

Submitted by Lizhe on Mon, 08/28/2017 - 12:08

首先你需要知道几个概念

Go语言输出的exe需要使用gdb(The GNU Project Debugger) 来调试

gdb调试时如果go是64位的, 那么对应的gdb也需要使用64位的

在windows下使用gdb需要gdb.exe, 但是有些版本可能不兼容,如果发现莫名其妙的错误可以尝试换个版本,如果你找不到可用版本我推荐你直接使用liteide自带的版本

 

1 使用liteide 调试

下载liteide    http://liteide.org/en/

然后需要一些简单配置

点击那个console图标,然后配置

474

Go 并发

Submitted by Lizhe on Thu, 08/24/2017 - 15:41

Go语言最大的一个特点就是对并发的原生支持

Go的并发指的是能让某个函数独立于其他函数运行的能力.

当一个函数创建为goroutine时, Go会将其视为一个独立的工作单元. 这个单元会被调度到任何可用的逻辑处理上执行.

Go的运行时调度器能管理被创建的goroutine并为他们分配执行时间.

Go基于叫做CSP ( Communicating Sequential Processes ) 的并发同步模型来保证数据的线程安全, CSP是一种消息传递模型, 通过在goroutine之间传递数据来传递消息,而不是对数据进行加锁来来实现同步访问, 用于传递数据的关键数据类型叫做channel

package main

import (
    "fmt"
    "runtime"
    "sync"
)