导航

随笔分类 -  Go语言

摘要:先看例子, json文件中有些元素不是我们想要的,在反序列化时可以当它们不存在,下面例子抛弃了 aaa、ccc这两节。 package main import ( "encoding/json" "fmt" ) type Book struct { Title string Author []string ... 阅读全文

posted @ 2015-02-14 09:24 蝈蝈俊 阅读(338) 评论(0) 推荐(0) 编辑

摘要:我们在for多层嵌套时,有时候需要直接跳出所有嵌套循环, 这时候就可以用到go的label breaks特征了。 先看一个范例代码: package main import ( "fmt" ) func main() { fmt.Println("1") Exit: for i := 0; i 15 { ... 阅读全文

posted @ 2015-02-10 10:47 蝈蝈俊 阅读(2174) 评论(0) 推荐(0) 编辑

摘要:go 自带的 encoding/json 支持json的序列化和反序列化, 然而它是基于反射的,有下面几个缺点: 反射是性能差的代名词, 并且无法在编译时进行优化。 只有 Public 字段才可以,反射库只能反射出暴露出来的字段,这意味着你无法对private 字段进行JSON转化。 https://github.com/benbjohnson/megajson 针对这个问题做了... 阅读全文

posted @ 2015-02-09 16:50 蝈蝈俊 阅读(978) 评论(0) 推荐(0) 编辑

摘要:json 处理的例子代码, 解析结果看后面注释。 package main import "encoding/json" import "fmt" import "os" type Response1 struct { Page int Fruits []string } type Response2 struct { ... 阅读全文

posted @ 2015-02-09 16:13 蝈蝈俊 阅读(3933) 评论(1) 推荐(0) 编辑

摘要:不论应用是如何部署的,我们都期望能扑捉到应用的错误日志, 解决思路: 自己写代码处理异常拦截,甚至直接在main函数中写异常拦截。 stderr重定向到某个文件里 使用 syscall.Dup2 第一种方法比较简单, 我们这里主要看后两种: 使用 stderr替换的代码: package main import ( "fmt" "os"... 阅读全文

posted @ 2015-02-06 09:25 蝈蝈俊 阅读(9487) 评论(1) 推荐(0) 编辑

摘要:在实际项目中我们可能有下面的需求: 1、修改了配置文件后,希望在不重启进程的情况下重新加载配置文件; 2、当用 Ctrl + C 强制关闭应用后,做一些必要的处理; 这时候就需要通过信号传递来进行处理了。golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。 监听信号 notify... 阅读全文

posted @ 2015-02-04 15:16 蝈蝈俊 阅读(1829) 评论(0) 推荐(0) 编辑

摘要:labix.org/v2/mgo/bson 包虽然是MongoDB的golang实现,其中产生唯一ID的算法是独立的,不依赖MongoDB, 提炼这部分的代码如下: package main import ( "crypto/md5" "crypto/rand" "encoding/binary" "encoding/hex... 阅读全文

posted @ 2015-01-29 10:26 蝈蝈俊 阅读(1779) 评论(0) 推荐(0) 编辑

摘要:先看实现代码: package main import ( "crypto/md5" "encoding/hex" "fmt" ) func main() { h := md5.New() h.Write([]byte("123456")) // 需要加密的字符串为 123456 cipherStr :... 阅读全文

posted @ 2015-01-28 16:41 蝈蝈俊 阅读(3141) 评论(0) 推荐(0) 编辑

摘要:先写一个公共函数, 比如在 common 包下有这么一个方法: // 写超时警告日志 通用方法func TimeoutWarning(tag, detailed string, start time.Time, timeLimit float64) { dis := time.Now().Sub(start).Seconds() if dis > timeLimit { ... 阅读全文

posted @ 2015-01-28 15:17 蝈蝈俊 阅读(3489) 评论(0) 推荐(0) 编辑

摘要:Linux下终端控制台字体颜色 在使用putty、secureCRT、XShell等终端仿真器连接linux系统时,ls、vim等工具的输出都含有各种颜色,这些颜色的输出大大地增强了文本的可读性。 通常我们可以使用echo命令加-e选项输出各种颜色的文本,例如:echo -e "\033[31mRed Text\033[0m",可以输出红色的字体“Red Text”。其中:"\033[31m... 阅读全文

posted @ 2015-01-22 16:16 蝈蝈俊 阅读(3602) 评论(0) 推荐(0) 编辑

摘要:iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误... 阅读全文

posted @ 2015-01-14 16:55 蝈蝈俊 阅读(806) 评论(0) 推荐(0) 编辑

摘要:Go 支持按照条件编译,具体来说它是通过 go/build包 里定义的tags和命名约定来让Go的包可以管理不同平台的代码 。 我们这里以下面这个开源项目为例,来看Go的按条件编译, 这个开源项目是把Go的os包进行了扩展。 https://bitbucket.org/kardianos/osext/src osext 是获得当前执行程序的执行目录和文件信息。 执行情况如下... 阅读全文

posted @ 2015-01-05 16:23 蝈蝈俊 阅读(3208) 评论(0) 推荐(0) 编辑

摘要:InfluxDB 的用户有三种:cluster admin 集群admindatabase admin 数据库admindatabase user 数据库用户cluster admin具有下面权限:增加和删除数据库对任何数据库的database admin 和 database user 用户增加和... 阅读全文

posted @ 2014-11-20 14:47 蝈蝈俊 阅读(4890) 评论(0) 推荐(0) 编辑

摘要:在网上搜索golang编码转化时,我们经常看到的文章是使用下面一些第三方库: https://github.com/djimenez/iconv-go https://github.com/qiniu/iconv 如果我们在windows下使用这个库,会看到错误: iconv.go:6:20: fatal error: iconv.h: No such file or directory ... 阅读全文

posted @ 2014-11-19 14:46 蝈蝈俊 阅读(9146) 评论(0) 推荐(0) 编辑

摘要:有时候我们会碰到下面错误:code.google.com certificate error: certificate is for www.google.com,类似如下: D:\>go get code.google.com/p/go-charset # cd .; hg clone -U https://code.google.com/p/go-charset d:\mycodes\g... 阅读全文

posted @ 2014-11-19 08:52 蝈蝈俊 阅读(750) 评论(0) 推荐(0) 编辑

摘要:比如有这样一个对象: type ProductConfig struct { Site map[string]string } 对应的初始化可以如下写: var pc ProductConfig pc = ProductConfig{Site: map[string]string{"rakuten": "http://item.rakuten.co.jp/auc-... 阅读全文

posted @ 2014-11-15 10:47 蝈蝈俊 阅读(1818) 评论(0) 推荐(0) 编辑

摘要:InfluxDB 是一个开源,分布式,时间序列,事件,可度量和无外部依赖的数据库。 InfluxDB有三大特性: Time Series (时间序列):你可以使用与时间有关的相关函数(如最大,最小,求和等) Metrics(度量):你可以实时对大量数据进行计算 Events(事件):它支持任意的事件数据 端口暴露 influxdb会监听4个端口: tcp 0 0 0.0... 阅读全文

posted @ 2014-11-13 15:25 蝈蝈俊 阅读(12442) 评论(0) 推荐(0) 编辑

摘要:一、简介 RRDtool是指Round Robin Database工具,即环状数据库。从功能上说,RRDtool可用于数据存储+数据展示。著名的网络流量绘图软件MRTG和集群监控系统Ganglia都使用的RRDtool。 数据存储方面,RRDtool采用“Round Robin”模式存储数据。所谓“Round Robin”是一种存储数据的方式,使用固定大小的空间来存... 阅读全文

posted @ 2014-11-12 21:05 蝈蝈俊 阅读(1823) 评论(0) 推荐(0) 编辑

摘要:golang 支持生产图片的源码在下面地址可以看到: https://github.com/vdobler/chart 这个项目 的 example 目录下编译后,执行下面命令就可以生产所有它支持的图表。 example/example –All 这些生产的图表效果如下: bestof.png xautoscale.png xbar1.png xbar2.png ... 阅读全文

posted @ 2014-11-11 21:46 蝈蝈俊 阅读(2696) 评论(0) 推荐(1) 编辑

摘要:安装命令: # for 64-bit systems wget http://s3.amazonaws.com/influxdb/influxdb-latest-1.x86_64.rpm sudo rpm -ivh influxdb-latest-1.x86_64.rpm 具体安装过程如下: wget http://s3.amazonaws.com/influxdb/influxd... 阅读全文

posted @ 2014-11-10 17:19 蝈蝈俊 阅读(3545) 评论(0) 推荐(0) 编辑