os.mkdir(path,0777)不能创建777权限的目录
想要直接创建777权限的目录有什么方法? os.chmod(path,0777)倒可以,不过要分两步走,先创建目录,再修改权限。能一步创建目录就能使权限为777吗...阅读全文
想要直接创建777权限的目录有什么方法? os.chmod(path,0777)倒可以,不过要分两步走,先创建目录,再修改权限。能一步创建目录就能使权限为777吗...阅读全文
【问题】 我有一个文件夹,文件夹名字叫 12 ,并且我创建了一个Go源文件 12_test.go,代码如下: package main import "fmt" func main() { fmt.Println("Hello world") } 运行下面命令时出了错: go build 12_test.go "go build command-line-arguments: no buildable Go source files in D:\12" 【解决】 _test后缀在Go语言中有着特殊含义,是用来给Go程序做测试的,build工具会忽略它们,它们会运行 go test。从文件名中删除_test,或者重命名就可以解决这个问题...阅读全文
go web好像不能在80端口运行,没有权限。 如果root运行的话,有写入操作等又有很大的风险。 apache等http软件可以root运行,然后工作在apache较小权限的用户下。 go web如何部署在生产环境比较好...阅读全文
在使用go的过程中,我们有时候会引入一些第三方库来使用,而通常的方式就是使用go get,可是这样的方式有一个非常严重的问题,假设第三方库更新了相关接口,非常有可能你就无法使用了,所以我们一套非常好地包管理机制。在读生产环境下go语言最佳实践有感一文中,我介绍过soundcloud公司的做法,直接将第三库的代码check下来,放到自己project的vendor文件夹里面,或者使用godep。只是如今,我发现了一种更好的包管理方式gopkg。它通过约定使用带有版本号号的url来让go tool去check指定的版本号库,尽管如今仅仅支持github的go repositories,可是我认为已经足够强大。一个非常easy的样例,我们通过例如以下方式获取go的yaml包go get gopkg...阅读全文
本文主要讲述os.Mkdir、os.MkdirAll区别以及在创建文件目录过程中的一些其他技巧。 os.Mkdir("abc", os.ModePerm) //创建目录 os.MkdirAll("dir1/dir2/dir3", os.ModePerm) //创建多级目录 首先,试图从一个Go可执行文件创建一组嵌套目录(如’dir1/dir2/dir3’),并打印错误出来看看。 err:=os.Mkdir(“dir1/dir2/dir3”,os.ModePerm) if err!=nil{ fmt.Println(err) } result:mkdir ./dir1/dir2/dir3: The system cannot find the path specified. Mkdir 用于创...阅读全文
go 官方库的文件操作分散在多个包中,感觉有点乱,比如os,ioutil包,基于别人总结的基础上简单总结一下 1.文件基本操作 1.1创建空文件 package main import ( "os" "log" ) var ( newFile *os.File err error ) func main(){ //创建文件 newFile,err=os.Create("text.txt") checkErr(err) log.Println(newFile) newFile.Close() } /** 检查错误 */ func checkErr(err error){ if err!=nil{ log.Fatal(err) } } 1.2 truncate 文件 package main i...阅读全文
SSA概述SSA在Go1.7中被引入,这个特性对编译器的性能有很大的提高,但是也导致编译过程有些减速。下面来结合网上的资粮和书籍,简单说明一下SSA以及SSA的应用。 SSA 代表 static single-assignment,是一种IR(中间表示代码),要保证每个变量只被赋值一次。这个能帮助简化编译器的优化算法。 y := 1 y := 2 x := y 比如上面这段代码,y = 1其实是不可用的,这个要通过定义的可达分析来确定y是要用1还是2,而SSA有一个标识符可以称之为版本或者“代“。 y1 := 1 y2 := 2 x1 := y2 这样就没有任何间接值了。用SSA表示的好处是对于同一个变量的无关使用表示成不同“代”,可以方便很多编译器的优化算法的实现。 一个概念: Φ(读作f...阅读全文
在使用go的过程中,我们有时候会引入一些第三方库来使用,而通常的方式就是使用`go get`,但是这种方式有一个很严重的问题,如果第三方库更新了相关接口,很有可能你就无法使用了,所以我们一套很好地包管理机制。 在读生产环境下go语言最佳实践有感一文中,我介绍过soundcloud公司的做法,直接将第三库的代码check下来,放到自己工程的vendor目录里面,或者使用godep。 不过现在,我发现了一种更好的包管理方式gopkg。它通过约定使用带有版本号的url来让go tool去check指定的版本库,虽然现在只支持github的go repositories,但是我觉得已经足够强大。 一个很简单的例子,我们通过如下方式获取go的yaml包 go get gopkg.in/yaml.v1 ...阅读全文
var lab *walk.Label var text *walk.TextEdit var txt *walk.LineEdit var button *walk.PushButton mw := new(MyMainWindow) if err := (MainWindow{ AssignTo: &mw.MainWindow, Title: "通讯服务器", MinSize: Size{500, 600}, Layout: VBox{}, Children: []Widget{ Label{ AssignTo: &lab, Text: "监听端口",...阅读全文
linux安装go环境这里不做讲解 假设gopath GOPATH="/root/go" 那么把工程上传到这个/root/go/src/ 这个目录下,假设工程名字是future,那么cd /root/go/src/future 执行go build,这时候cd future后ls会发现多了一个绿色的future文件 这个时候如果只想执行一个(关闭putty的时候自动停止运行)执行./future ,但是我们部署的工程往往希望在后台一直运行,这时侯如果刚才的已经执行了./future命令,再执行nohup ./future &> future.log &就会报错,翻译过来是说这个程序已经在运行了,首先ps aux|grep future 找出这个pid ,假如是21432 ,直接执行kill ...阅读全文
Google在golang.org和appspot上分别搭建了基于浏览器的交互式Go编程指南-go tour,便于golang学习.但由于中国特色的网络环境无法正常访问,so决定自己搭建一个go tour. 准备工作: export GOPATH=$HOME/golang 下载相关内容(推荐使用http://gopm.io下载) [不用"go install code.google.com/p/go-tour/gotour"的原因是网络环境和没安装hg.] go-tour:code.google.com/p/go-tour/gotour go.tools:code.google.com/p/go.tools (依赖) go.net:code.google.com/p/go.net (依赖) ...阅读全文
一、创建GOPATH:选择一个目录或者在我们想要的地方创建一个作为GOPATH的目录,我的GOPATH是:“/home/cox/goProjects”。 二、配置系统变量:在shell里面输入“sudo gedit /etc/environment”,在打开的文件末尾加入:“export GOPATH=/home/cox/goProjects”。注意:这个目录是我选中的目录,替换成你使用的目录! 三、重启一下Linux,在shell里面输入“go env”,我们应该能够看到GOPATH已经是我们刚刚配置的目录了...阅读全文
首先下载intellijdea13.1.4b(建议大家使用14,因为13.1.14a版本有bug,容易下错) http://pan.baidu.com/s/1i3kns5B 再去下载go1.2 http://www.golangtc.com/download 最后下载intellijIDEA的go插件:http://plugins.jetbrains.com/plugin/5047?pr=idea 这个插件最新支持到go1.2版本。所以上面要求大家下载1.2版本的go。 安装插件过程如下:进入setting > plugins > install plugin from disk > 选择gojar插件 >完成 > 重启。 新建一个go项目,看到 new project>go 安装成功。 体...阅读全文
本文最早发布于 Rootrl's Blog 缘起 我们公司开发环境很特殊,一台本地服务器,然后分配多个ssh账户给开发者。平时上传代码只能ftp/sftp连接上传(以前用过samba共享,但被关了。。)。所以我们平时是在Phpstorm上用sftp远程打开服务器上的项目,然后设置自动上传。这样一般工作没问题。但是有个坑:Phpstorm无法捕获类似git checkout这些更改文件的变化。。所以也就无法让本地代码跟服务器保持一致了。所以也就诞生了想写个这个同步机制的念头,这种场景Golang很适合。于是就开始撸起来。。 项目地址:https://github.com/rootrl/Mancy 实现 大致思路是监测一个文件夹的变化(本地代码库),如果有变化就通过sftp上传到服务器上。 监测...阅读全文
package main import ( "log" "github.com/go-fsnotify/fsnotify" ) func main() { watcher, err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } defer watcher.Close() done := make(chan bool) go func() { for { select { case event := <-watcher.Events: log.Println("event:", event) if event.Op&fsnotify.Write == fsnotify.Write { log.Println("modifie...阅读全文
故事的起因在这里。 之前发了一篇帖子,讲了暴漫用golang重构了worker系统,有好多朋友问到语言选择的问题。 其实在用Golang重写我们的worker系统之前是做过很多调研的。 真正让我们下定决心的是 Parse的一篇文章:How We Moved Our API From Ruby to Go and Saved Our Sanity。 文中讲了Facebook的Parse团队为什么选择Golang代替Ruby。 我翻译下关键几点: Parse面临的问题 Parse跟暴漫的技术栈比较相似: 服务器Unicorn,部署使用Capistrano。在高流量面前很多问题都被指数级放大,在每次部署的时候 app server重启都要很长时间。并且Unicorn的重启并不是真正的‘gracef...阅读全文
大家好,我是一名留学生,现在在国外找工作。前几天收到一个公司通知,要我用GO完成一个题目,我从没有用过GO。自己尝试着写了一些,但还是有一些地方不明白。公司也催的急,所以所剩时间不多,而且我还在上课,时间也不是特别多。周围的朋友也不会这个语言,故在此发帖,请各位大神给我指导一下啊。 必有重谢! qq:76926409...阅读全文
获取目录中所有文件 使用包: io/ioutil 使用方法: ioutil.ReadDir 读取目录 dirmane 中的所有目录和文件(不包括子目录) 返回读取到的文件的信息列表和读取过程中遇到的任何错误 返回的文件列表是经过排序的 FileInfo type FileInfo interface { Name() string // base name of the file Size() int64 // length in bytes for regular files; system-dependent for others Mode() FileMode // file mode bits ModTime() time.Time // modification time IsDi...阅读全文
package main import ( "flag" "fmt" ) import ( . "github.com/CodyGuo/win" ) var ( arg string ) func init() { flag.StringVar(&arg, "uFlags", "", "shutdown logoff reboot") } func main() { flag.Parse() switch arg { case "logoff": logoff() case "reboot": reboot() case "shutdown": shutdown() default: fmt.Println("您输入的参数有误.") } } func logoff() { ExitWindo...阅读全文
今天早上想把文件传到网盘里,而且还想修改把文件名改成文件名的md5,一个一个修改比较麻烦。 最近一直在研究Go语言,该语言比较简洁,可以编译成可执行程序,所以就用Go语言写了一个小工具叫md5ren。 实现的功能是在要修改的文件夹中执行命令md5ren,达到的目标是将该文件夹下所有的文件以及文件夹都修改成原始名称的md5值,如果是文件,则保留原文件的后缀。 使用到的Go语言的功能有: 列出一个文件夹下的所有文件 判断文件类型,是文件还是文件夹 写文件 生成字符串的MD5值 列出一个文件夹下的所有文件 files, err := ioutil.ReadDir(dir) 判断文件类型 通过ioutil.ReadDir返回的结果为FileInfo类型的数据,FileInfo有IsDir方法,可以判...阅读全文
1.下载WebStorm进行安装 2.打开File-->Setting-->Plugins-->Browse Repositories-->  点击install 安装完毕,重启webstorm 3.设置SDK安装目录  //创建目录 os.MkdirAll("dir1/dir2/dir3", os.ModePerm) //创建多级目录 首先,试图从一个Go可执行文件创建一组嵌套目录(如’dir1/dir2/dir3’),并打印错误出来看看。 err:=os.Mkdir(“dir1/dir2/dir3”,os.ModePerm) if err!=nil{ fmt.Println(err) } result:mkdir ./dir1/dir2/dir3: The system cannot find the path specified. Mkdir 用于创...阅读全文
最近在做一些性能优化的工作,其中有个结构体占用的空间比较大,而且在内存中的数量又特别多,就在想有没有优化的空间,想起了 c 语言里面的字节对齐,通过简单地调整一下字段的顺序,就能省出不少内存,这个思路在 golang 里面同样适用 基本数据大小 在这之前先来看下 golang 里面基本的类型所占数据的大小 So(unsafe.Sizeof(true), ShouldEqual, 1) So(unsafe.Sizeof(int8(0)), ShouldEqual, 1) So(unsafe.Sizeof(int16(0)), ShouldEqual, 2) So(unsafe.Sizeof(int32(0)), ShouldEqual, 4) So(unsafe.Sizeof(int64(0)...阅读全文
linux系统相关书籍中关于文件描述符及相关内容,通常会出现一张类似这样的图  或者这样的图  第一个图来自Michael Kerrisk的《Linux/UNIX系统编程手册》,第二个图来自《UNIX环境高级编程》(也就是APUE)。 文中对相关信息做了论述并且配上了上面这样的图,但是我相信很多人看完以后觉得好像懂了,那么请尝...阅读全文
``` /** 批量文件重命名,替换文件名 王参加 2018-03-08 23:00 */ package main import ( "flag" "fmt" "os" "path/filepath" "strings" ) func main() { // 解析命令行参数 var dir string flag.StringVar(&dir, "d", "", "要替换的目录物理路径,如:/tmp/go/") var oldstr string flag.StringVar(&oldstr, "o", "", "要替换的字符:例如:替换 .php 或者 .inc.") var newstr string ...阅读全文
Golang程序中如何监听并处理信号? 当运行一个终端程序或守护(daemon)进程时,经常需要响应来自用户或系统的信号来实现诸如:退出/重启/清理(clean up) 等工作,又或者利用信号通知机制实现一些业务功能,如:更新缓存、发送通知。。。 以下例子将会演示在 golang 中如何监听并处理信号: package main import ( "fmt" "os" "os/signal" "syscall" "time" ) const FILENAME = "go-example.txt" func main() { SignalHandler() CreateFile() for { fmt.Println("- Sleeping") time.Sleep(10 * time.Sec...阅读全文
golang-nuts上有人提了一个问题[1],询问怎么样把减少两个类似数据结构和算法的重复代码。简而言之,有两个struct:QuickFindSet和QuickUnionSet,它们各有Count, IsConnected, Find, Union等方法。他发现这两个struct的一些函数的实现是一样的,因此他希望能消除这些重复代码。 ? www.usr.cc 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 04...阅读全文
一,创建GOPATH:选择一个目录或者在我们想要的地方创建一个作为GOPATH的目录,我的GOPATH是:“/home/sunylat/gopath”。 二,配置系统变量:在shell里面输入“sudo gedit /etc/environment”,在打开的文件末尾加入:“export GOPATH=/home/sunylat/gopath”。注意:这个目录是我选中的目录,替换成你使用的目录! 随后我们重启一下ubuntu,在shell里面输入“go env”,我们应该能够看到GOPATH已经是我们刚刚配置的目录了...阅读全文
在使用go的过程中,我们有时候会引入一些第三方库来使用,而通常的方式就是使用go get,但是这种方式有一个很严重的问题,如果第三方库更新了相关接口,很有可能你就无法使用了,所以我们一套很好地包管理机制。在读生产环境下go语言最佳实践有感一文中,我介绍过soundcloud公司的做法,直接将第三库的代码check下来,放到自己工程的vendor目录里面,或者使用godep。不过现在,我发现了一种更好的包管理方式gopkg。它通过约定使用带有版本号的url来让go tool去check指定的版本库,虽然现在只支持github的go repositories,但是我觉得已经足够强大。一个很简单的例子,我们通过如下方式获取go的yaml包go get gopkg.in/yaml.v1 而实际上,该...阅读全文
HBase长时间无法关闭[Waiting on regionserver(s) to go down] 为了释放已经删除的region,重启hbase,执行./bin/stop-hbase.sh。 等了很久还未关闭,查看master日志,显示一直在等待regionserver 2015-07-08 09:11:25,800 INFO org.apache.hadoop.hbase.master.ServerManager: Waiting on regionserver(s) to go down Colander-hb01,60020,1435801056660 再去查看此regionserver情况,日志显示Region is not online 2015-07-08 09:17:34...阅读全文
在包含tom-toml库的时候必须进行重命名吗...阅读全文
1.import机制● main -> import pkg1 -> const -> var ... -> init() -> main()● pkg1 -> import pkg2 -> const -> ...● pkg2 -> ... import( "time" //普通写法 . "fmt" //使用此包内的成员时不带fmt前缀 j "encoding/json" //json包重命名 // 引入包顺序遵循 标准库,项目包,第三方包 ) 不要使用相对路径引入包(以GOPATH/src作为根目录) import 后面跟着包路径。go语言的惯例只是一个特例,即恰好目录名与包名一致。import中的foo只是一个文件系统的路径。而下面foo.Foo()中的foo则是包名。而这个包是在sr...阅读全文
golang 服务平滑重启小结 背景 golang 程序平滑重启框架 supervisor 出现 defunct 原因 使用 master/worker 模式 背景 在业务快速增长中,前期只是验证模式是否可行,初期忽略程序发布重启带来的暂短停机影响。当模式实验成熟之后会逐渐放量,此时我们的发布停机带来的影响就会大很多。我们整个服务都是基于云,请求流量从 四层->七层->机器。 要想实现平滑重启大致有三种方案,一种是在流量调度的入口处理,一般的做法是 ApiGateway + CD ,发布的时候自动摘除机器,等待程序处理完现有请求再做发布处理,这样的好处就是程序不需要关心如何做平滑重启。 第二种就是程序自己完成平滑重启,保证在重启的时候 listen socket FD(文件描述符) 依然可以...阅读全文
// main project main.go package main import ( "fmt" //_ "main/hello/imp" "main/hello/imp" "runtime" ) func main() { for skip := 0; ; skip++ { pc, file, line, ok := runtime.Caller(skip) if !ok { break } fmt.Printf("skip = %v, pc = %v, file = %v, line = %v\n", skip, pc, file, line) } imp.Print() } package imp import ( "fmt" ) func init() { fmt.Printl...阅读全文
Go 语言开发工具 LiteIDE X33.1 正式发布。 新版本对菜单进行调整和规范,新增了工具菜单,编辑菜单保持可见,重命名了部分工具窗口。 修复了编辑器内查找功能的全文替换错误, 对快速打开文件操作 ( ctrl+p / command+p ) 改用线程方式重新实现,新增了快速打开命令功能 ( ctrl+shift+p / command+shift+p ),集成了 gomodifytags 并提供GUI界面实现对结构体 Tags 的快速增删功能。 LiteIDE X33.1 使用 go1.10beta1 编译, 支持 Go1.9 / Go1.10beta1 或者更低的 Go 版本。 Links - LiteIDE Home http://liteide.org -...阅读全文
一 关键字 关键字一共25个,都是小写。 break default func interface select case defer go map struct chan else goto package switch const fallthrough ifrange type continue for import return var 二 Go程序的一般结构 1. Go程序是通过package来组织的。 2. 只有package名称为main的包可以包含main函数。 3. 一个可执行程序有且仅有一个main包。 4. 通过import关键字来导入其它非main包。 5. 通过const关键字来进行常量的定义。 6. 通过函数体外部使用var关键字来进行全局变量的声明与赋值。 7....阅读全文
文:http://blog.golang.org/2012/03/go-version-1-is-released.html —————-翻译分隔线—————- Go 版本 1 发布 今天,在 Go 编程语言的开发上标记了一个主要的里程碑。我们宣布 Go 版本 1,或者简称为 Go 1,定义了一个语言和一系列的核心库作为基础,用于创建可信赖的产品、项目和出版物。 Go 1 是 Go 的第一个发布,提供了二进制包。可用于 Linux、FreeBSD、Mac OS X 以及,令人非常兴奋的——Windows。 对于用户来说 Go 1 驾驭起来相当稳定。编写 Go 1 程序的人可以完全确信在大多数环境下,即使再过若干年,仍然无需对程序做任何修改,它还能编译和运行。类似的,编写关于 Go 1 书籍的...阅读全文
网站优化分中比较重要的一环就是建设外链,外链可以快速提高一个网站的权重,那么外链是如何提高网站权重,从而获得高排名呢?搜索引擎初期是通过关键字匹配程度来排名的。但是这种方式有个严重的漏洞,就是很多人为了优化而优化,大量堆积关键字。为了解决这个问题,PageRank就是根据网站链接被引用次数作为判断一个网页权重的依据,如果一个网站被多个网站指向,那么搜索 引擎会认为这个网站具有较高的权威性,给予好的得分,所以权重就自然提高了。那么是不是只要是外链都可以获得好的权重呢?其实并不是这样的,只有高质量的外链才能获搜索引擎的认可,什么样的外链是高质量的?比如一个网站的首页链接,高质量文章内容中 引用的链接。首页权重是最高的。而且导出链接较少。一个首页链接要高于几十个内页链接。而且内页链接也必须看内容相...阅读全文
goread 安装配置 系统ubuntu 13.04 web服务器apache https://github.com/mjibson/goread 安装步骤 这个就不详细说了,可以看他的README,只大概说一下 1.安装python2.7并确保其在PATH中 2.安装Git,Mercurial并确保git and hg 在PATH中 3.安装GO App Engine SDK并确保其在PATH中,这个的简单说一下,把zip包下载下来,然后解压到一个目录,然后把这个目录加入到PATH中即可. 4.使用命令 goapp get -d github.com/mjibson/goread 下载goread,并把下载的目录加到GOPATH中 5.cd $GOPATH/src/github.com/m...阅读全文
go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2]。想要产生dll,可以这样 workaround ,参考 golang [issuse#11058][1]: 首先得装一个 windows 下的 gcc 开发环境,我用了 [msys2][3] 。 需要配置一个快点的源,我用[中国科技大学的源][4]。 安装 gcc 工具链: pacman -S mingw-w64-x86_64-toolchain (注意这里有个坑, msys64 根目录有两个 mingw64.* 文件会导致 pacman 安装失败,我是暴力重命名了冲突的文件。) 编译静态链接库: go build -buildmode=c-archive -o libfoo.a foo.go...阅读全文
HBase长时间无法关闭[Waiting on regionserver(s) to go down] 为了释放已经删除的region,重启hbase,执行./bin/stop-hbase.sh。 等了很久还未关闭,查看master日志,显示一直在等待regionserver 2015-07-08 09:11:25,800 INFO org.apache.hadoop.hbase.master.ServerManager: Waiting on regionserver(s) to go down Colander-hb01,60020,1435801056660 再去查看此regionserver情况,日志显示Region is not online 2015-07-08 09:17:34...阅读全文
golang-nuts上有人提了一个问题[1],询问怎么样把减少两个类似数据结构和算法的重复代码。简而言之,有两个struct:QuickFindSet和QuickUnionSet,它们各有Count, IsConnected, Find, Union等方法。他发现这两个struct的一些函数的实现是一样的,因此他希望能消除这些重复代码。 // quick-find type QuickFindSet struct { numOfComponents uint items []uint } func NewSet(n uint) QuickFindSet { set := QuickFindSet{ numOfComponents: n, items: make([]uint, n) } f...阅读全文
本文作者: 伯乐在线 - yemengying 。未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者。前言 由于自己最近灵感枯竭,所以我决定翻译一篇别人的文章 O(∩_∩)O~。作为一个一直想学 Go,但想了好久还没入门的人,我挑了篇写 Go 的文章,顺便帮自己熟悉一下 Go。原文是 Dave Cheney 根据自己 GolangUK 的演讲所整理的,全文以 SOLID 原则为线路,讲述了什么样的 Go 代码才算是好代码,当然 SOLID 原则也适用于其他语言。 英文原文比较长,由我和 Kevin 合译。 世界上有多少个 Go 语言开发者? 介个世界上有多少 Go 开发者捏?在脑海中想一个数字,我们会在最后回到这个话题。 Code review 有多少人将 code review 当做自己工...阅读全文
http://blog.csdn.net/qiurisuixiang/article/details/8732900 Email : hahayacoder@gmail.com 1 有一款叫做gocode的插件能帮助Go的代码智能补全,使用它能使开发更加高效 2 下载gocode,下载地址https://github.com/nsf/gocode/ 3 将下载好的gocode-master解压到任意目录下 4 打开cmd,切换到解压后的目录中,执行go install,执行成功后该目录下会生成一个gocode-master.exe(和该目录同名)的文件 5 将该exe文件重命名成gocode.exe,然后复制到go安装目录下的bin目录中 6 重启启动LiteIDE,体验代码补全功能吧...阅读全文
package main import ( "fmt" "time" ) var slaveDns = map[int]map[string]interface{}{ 0: {"connectstring": "root@tcp(172.16.0.164:3306)/shiqu_tools?charset=utf8", "weight": 2}, 1: {"connectstring": "root@tcp(172.16.0.165:3306)/shiqu_tools?charset=utf8", "weight": 4}, 2: {"connectstring": "root@tcp(172.16.0.166:3306)/shiqu_tools?charset=utf8", "weight...阅读全文