Go语言中文网 为您找到相关结果 209

golang 中strconv包用法

本文转自Golove博客:http://www.cnblogs.com/golove/p/3262925.html strconv 包中的函数和方法 // atob.go ------------------------------------------------------------ // ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False. // 其它任何值都返回一个错误 func ParseBool(str string) (value bool, err error) package main import ( "fmt" "strconv" ...阅读全文

博文 2015-10-16 15:00:31 chenbaoke

golang 使用 iota

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0. const a = iota // a=0 const ( b = iota //b=0 c //c=1 ) 3、自定义类型 自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。 type Stere...阅读全文

博文 2015-01-16 18:00:01 ghj1976

Go语言中的单引号、双引号、反引号

=Start= 搜索关键字: golang single quotes golang double quotes golang back quotes 参考结果: 结论写在最前:在Go语言中不倾向于使用单引号来表示字符串,请根据需要使用双引号或反引号。 一个Go语言字符串是一个任意字节的常量序列。Go语言的字符串类型在本质上就与其他语言的字符串类型不同。Java的String、C++的std::string以及python3的str类型都只是定宽字符序列,而 Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 。 Go语言中的字符串字面量使用 双引号 或 反引号 来创建 : 双引号用来创建 可解析的字符串字面量 (支持转义,但不能用来引用多行); 反引...阅读全文

博文 2016-06-16 13:00:15 diegodu

工作5年C++服务器,转GO的感触,GO服务器业余时间整理的,用时2个月,框架到细节

之前c++服务器,是端游转过手游来的,在我不断的优化下,成功从c++98到c++11,以及32位到64位的转变,从端游服务器,转到手游服务器,上线人数单服1W+没太大压力。 go是我业余的时候接触到的,在现在大环境下,高并发和跨平台是现在开发游戏服务器的主流,之前那套c++说实在是够用,只要能达到那个量,单服性能极致,我只服c++。 skynet+lua,c底层,lua逻辑,我也过来过c++底层,lua逻辑,但实际效果是lua并不是我想要去写的,可能我对lua脚本不感兴趣。go做的事情和skynet做的大同小异,都是携程,抢占式g调度模式,go 有个goroutine和channel,skynet lua虚拟机。 当时设计go的时候,由于跟c++大轮子有点出路,c++是循环轮子模式,单...阅读全文

golang之路-api杂记-格式化float输出

golang之路-格式化float输出 代码: a:=strconv.FormatFloat(10.100,'f',-1,32) 输出: 10.1 a := strconv.FormatFloat(10.101, 'f', -1, 64) 输出: 10.101 a := strconv.FormatFloat(10.010, 'f', -1, 64) 输出:10.01 a:=strconv.FormatFloat(10.1,'f',2,64) 输出:10.10 f 参数可以是e,E,g,G-1 代表输出的精度小数点后的位数,如果是<0的值,则返回最少的位数来表示该数,如果是大于0的则返回对应位数的值64 为float的类型,go中float分为32和64位,因此就需要传入32或者6...阅读全文

博文 2014-12-31 01:00:04 stephen830

NSQ:分布式的实时消息平台

NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub,其当前最新版本是0.3.1版。NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。NSQ具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。另外,官方还提供了拆箱即用Go和Python库。如果读者兴趣构建自己的客户端的话,还可以参考官方提供的协议规范。 NSQ是由四个重要组件构成: nsqd:一个负责接收、排队、转发消息到客户端的守护进程 nsqlookupd:管理拓扑信息并提供最终一致性的发...阅读全文

博文 2015-05-05 11:09:59 李小兵

突然发现一个很好用Golang的json库

json 我并不想解释json是什么。 库名 GJSON 点这里去star感谢小哥 下载 $ go get -u github.com/tidwall/gjson 与官方的json解析包有什么区别 官方的包,都是一整块数据一起 包装/解析。有如下数据 struct { str1 str2 } json :{str1:"xx",str2:"xx"} 如果要单独得到str1的话,很麻烦的。 官方给的demo package main import "github.com/tidwall/gjson" const json = `{"name":{"first":"Janet","last":"Prichard"},"age":47}` func main() { value := gjson.G...阅读全文

博文 2017-05-27 09:45:09 送你一碗大麦茶

Golang strconv包使用

// atob.go ------------------------------------------------------------ // ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False. // 其它任何值都返回一个错误 func ParseBool(str string) (value bool, err error) func main() { fmt.Println(strconv.ParseBool("1")) // true fmt.Println(strconv.ParseBool("t")) // true fmt.Println...阅读全文

博文 2015-07-29 15:00:01 路人甲777

golang中image包用法

image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述, image接口的值创建方式有如下几种: 1调用NewRGBA和NewPaletted 2解码一个包含gif.jpen或者png格式的image数据的io.Reader 首先介绍一些image接口 type Image //image是一个从颜色模型中采取color.Color的矩形网格 type Image interface { ColorModel() color.Model //ColorModel 返回图片的 color.Model Bounds() Rectangle //图片中非0color的区域 At(x, y int) color.Col...阅读全文

博文 2015-06-18 17:05:38 chenbaoke

Go语言中的字符和字符串

Go语言中的字符 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称。 下面用一个简单的程序来演示字符类型: package main import ( "fmt" "reflect" ) func main() { r := '我' fmt.Printf("%q的类型为:%t 二进制为:%b\n", r, r, r) rType := reflect.TypeOf(r).Kind() fmt.Printf("r的实际类型为:%s\n", rType) } 程序输出: '我'的类型为:%!t(int32=25105) 二进制为:110001000010001 r的实际类型为:int32 Go语言天生支持Unicode,那我产生一个问题:Unicode字符的长度是多...阅读全文

博文 2014-12-30 22:00:02 rubyer

Go语法简略 - 依赖注入

通过对web应用框架背后原理的探索,引入了依赖注入的概念。如果你需要读懂或者写一个框架的话,依赖注入的思想绝对能帮到你。本文记录对依赖注入的探索。 区分依赖和宿主 现在我们把问题简化一下: package main import "fmt" func MethodA(name string, f func(a int, b string)) { fmt.Println("Enter MethodA:", name) f(3030, "zdd") // 给f注入参数 fmt.Println("Exit MethodA:", name) } func MethodB(a int, b string) { fmt.Println(a, b) } func main() { d := MethodB...阅读全文

博文 2015-10-12 19:00:00 zddmail

golang并发编程实践 -- 简单生产者消费者(with chan)

本文简单介绍如何用golang实现经典的生产者消费者模型。 golang语法简洁,凡可以通过几行代码解决的事情,绝不为了解决该问题而在语言中引入不必要的特性。这个和c++正好相反,c++是个庞大的怪物,我这么形容可能很多c++的fans心里要不舒服了,为了让你在看到诸如子类言论时能够心平气和,建议大家使用一下golang吧。本文不是介绍golang编程语言本身的文章,而是从golang如何让并发编程变得容易...阅读全文

博文 2014-10-04 19:26:04 aura521521

imgo——golang图像处理工具库,图像相似度计算,图像二值化

# imgo golang图像处理工具库,图像相似度计算,图像二值化(golang image process lib) 目前只支持jpg,png [![GoDoc](http://godoc.org/github.com/Comdex/imgo?status.svg)](http://godoc.org/github.com/Comdex/imgo) ### 安装 ```shell go get github.com/Comdex/imgo ``` ### 示例 ```go package main import( "github.com/Comdex/imgo" ) func main(){ //...阅读全文

[翻译]mongodb日志分析工具mtools之mplotqueries

mtools是一组非常好用的mongodb日志分析工具,里面最复杂的命令是mplotqueries,上网查了一下,还没有人翻译过。英文不好,费了好大的劲翻完,翻的不好,但没有办法,我英文水平就这么多~ 原文地址:https://github.com/rueckstiess/mtools/wiki/mplotqueries ----------------------------------------------------------------------------------------------------------------------- mplotqueries Thomas Rueckstiess edited this page on 9 Oct · 31 revis...阅读全文

博文 2014-11-27 17:00:01 吕明明

golang中image/color包的用法

color包是image包对于color重点介绍,实现了基本的颜色库 color中定义了如下几个变量 var ( Black = Gray16{0} White = Gray16{0xffff} Transparent = Alpha16{0} Opaque = Alpha16{0xffff} ) func RGBToYCbCr(r, g, b uint8) (uint8, uint8, uint8) //RGBToYCbCr将RGB的三重色转换为Y'CbCr模型的三重色 func YCbCrToRGB(y, cb, cr uint8) (uint8, uint8, uint8) //YCbCrToRGB将Y'CbCr上的三重色转变成RGB的三重色。 type Alpha //Alpha代表...阅读全文

博文 2015-06-18 17:04:31 chenbaoke

go 语言实现通用单链表

## 链表定义 ### 定义错误 ```go import "errors" var ( //ErrIndex 超出列表索引 ErrIndex = errors.New("out of list index") //ErrNotFound 没有找到该元素 ErrNotFound = errors.New("not found this element") ) ``` ### 定义接口 ```go // Comparer 数据接口 type Comparer interface { compare(data interface{}) bool } ``` ### 定义链表结点 ```go // SingleElement 列表结点 type SingleElement struct { Dat...阅读全文

博文 2019-07-17 09:19:21 daymenu

使用golang做http接口压力测试并输出到echarts散点图中

go-post-scatter go http post echarts scatter golang 并发测试 http post 并使用echarts输出表表统计运行时间 项目地址:https://github.com/jixieshi999/go-post-scatter 目录介绍 运行Client生成并发报表 分析基本每次连接执行时间 out 输出目录 config 配置目录 golang代码修改 修改config文件夹里面的config/output.html里面需要替换的内容 用%s代替 修改扩展 由于连接的是自己的golang服务器, 需要修改链接的服务器地址, 和修改代码里面http传输的内容修改才能实现 修改getPostUploadResData方法 修改postLogi...阅读全文

博文 2015-10-26 18:00:06 liuwenhan999

Go 1.4 Beta 1 发布

Go 1.4 Beta 1 发布,此版本是 Go 1.4 的 beta 版本,现已提供下载,反馈bug请前往这里。 此版本仅包括一个小的编程语言修改;对编译器做了重大修改,向后兼容 for-range loop 形式。此版本关键点在实现功能,改进垃圾收集器和为下个版本完整的收集器打好基础。 此版本还添加了新的工具,支持使用 go 命令生成构建时源代码。此版本支持 Android 和 Native Client(NaCl)的 ARM 处理器和 Plan 9 的 AMD64。 Go 1.4 最终版本计划在 2014 年 12 月 1 日发布,更多更新内容请看发行说明...阅读全文

博文 2014-11-01 01:00:01 mengyidan1988

Golang的单引号、双引号与反引号

Go语言的字符串类型string在本质上就与其他语言的字符串类型不同: Java的String、C++的std::string以及Python3的str类型都只是定宽字符序列 Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 即:一个Go语言字符串是一个任意字节的常量序列。 Golang的双引号和反引号都可用于表示一个常量字符串,不同在于: 双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行) 反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式 而单引号则用于表示Golang的一个特殊类型:rune,类似其他语言的byte但又不完全一样,是指:码...阅读全文

博文 2017-02-09 08:16:17 wiowei

RPCX使用案例

花了一个礼拜整理了一下 RPXC的使用方法,大致过程如下:服务器端开发首先,我们需要实现自己的服务,这很简单,就是定义普通的方法即可:package example import ( "context" "fmt" ) type Args struct { A int B int } type Reply struct { C int } type Arith int func (t *Arith) Mul(ctx context.Context, args *Args, reply *Reply) error { reply.C = args.A * args.B fmt.Printf("call: %d * %d = %d\n", args.A, args.B, reply.C) ret...阅读全文

博文 2018-08-07 16:59:58 lsr199461

golang并发编程实践 -- 简单生产者消费者(with lock)

上一篇文章用golang中的channel实现了简单的消费者模型,下面的版本是用传统的锁技术实现的版本,相对比会发现golang提供的channel更好用。而且golang的channel可以完成很多在别的语言里需要很多代码才能实现的功能。以后陆续解答。 package main import ( "fmt" "sync" "time" ) type Queue struct { Elem []int Capacity int Front int Rear int Lock sync.Locker Cond *sync.Cond } func New() *Queue { theQueue := &Queue{} theQueue.Capacity = 10 theQueue.Elem = ...阅读全文

博文 2014-10-04 19:26:11 aura521521

网易云音乐一键下载NeteaseMusicDownloader

网易云音乐一键下载工具(MusicDownloader) ![image](https://static.oschina.net/uploads/space/2017/0302/103950_Hj0A_852973.gif) Golang 写的命令行工具,把需要下载的网址粘贴到命令行中即可。 目前支持直接下载: - 歌单 http://music.163.com/#/playlist?id=****** - 单曲 http://music.163.com/#/song?id=****** - 电台节目 http://music.163.com/#/program?id=******   - 歌手 http://music.163.com/#/artist?id=*****...阅读全文

开源项目 2017-03-02 04:00:09 henson

【GOLANG】Go语言学习-time包

go语言的time包 组成 time.Duration(时长,耗时)time.Time(时间点)time.C(放时间点的管道)[ Time.C:=make(chan time.Time) ] time包里有2个东西,一个是时间点,另一个是时长 时间点的意思就是“某一刻”,比如 2000年1月1日1点1分1秒 那一刻(后台记录的是unix时间,从1970年开始计算) 时长就是某一刻与另一刻的差,也就是耗时 函数 Sleep函数 time.Sleep(time.Duration) 表示睡多少时间,睡觉时,是阻塞状态 fmt.Println("start sleeping...") time.Sleep(time.Second) fmt.Println("end sleep.") //【结果】打印...阅读全文

博文 2015-06-17 23:01:37 zhonglinzhang

golang中string与byte的转换

某些场景下,函数参数需要byte类型的,已知参数是string类型的,那怎么由string类型转换成byte类型呢,比如:bufio.ReadSlice的第二个参数就是byte类型的:func(b *Reader)ReadSlice(delimbyte) (line []byte, errerror)可以通过两个方法由string得到byte,第一个是: 注意到,这里的G既不是""双引号又不是``这种go里面字符串引起来的,而是普通的单引号。第二种方法是: 这种曲折的方法,先转成[]byte,然后再取第一个...阅读全文

开源消息系统 NSQ

NSQ 是无中心设计、节点自动注册和发现的开源消息系统。可作为内部通讯框架的基础,易于配置和发布。 架构: ![nsqd clients](http://static.oschina.net/uploads/img/201501/27073634_i5Ye.gif) 监控界面: ![nsqadmin](http://static.oschina.net/uploads/img/201501/27073635_MSMt.png) 无单点故障: ![nsq clients](http://static.oschina.net/uploads/img/201501/27073636_C0sa.png) 特点: * 追求简单部署 * 追求高可用、避免单点故障、无中心设计 * ...阅读全文

开源项目 2013-08-12 16:00:00 bitly

【有人@你】双11最时髦的消费 全宇宙的程序猿一起来HIGH

每一年,都在为媳妇买、买、买的程序猿,终于迎来了属于自己的狂欢盛宴。 没错,今年双11,阿里云会拿出若干爆款,让小伙伴们一起来high。 红包、折扣、秒杀、全场产品优惠、中奖100%…… 如何玩转阿里云双11,流量够不够都要往下拉! 1、双11当天,00:30、10:30、14:30,三场秒杀活动,云服务器ECS、云数据库RDS、弹性安全网络全部一折秒杀来袭。 2、双11当天单笔实付满1000元,即可参与抽奖,百发百中哦! 3、在校大学生双11当天享受云服务器ECS 9.9元/月+39.9元的云计算在线课程,理论+实践,才是硬本领。 4、只需实名认证,即日起登陆阿里云双11会场就能抢红包,红包最高1111元,100%中奖不掺水。 5、无论企业或个人,认证后即...阅读全文

快速获取 JSON 文档 gjson

gjson 是一个 Go 开发 包,提供了非常快速和简单的方式来获得一个  JSON 文档 的值 。此文库的存在是为 BuntDB 项目提供高效的 JSON 索引。 ### 安装: 开始使用  GJSON,安装  Go ,并运行 go get:

$ go get -u github.com/tidwall/gjson
此操作可恢复文库。 ### 性能: 与   [encoding/json](https://golang.org/pkg/encoding/json/) ,  [ffjson](https://github.com/pque...阅读全文

开源项目 2016-09-18 16:00:05 tidwall

[笔记] Golang String

1 package main 2 3 import ( 4 "fmt" 5 "strconv" 6 "strings" 7 ) 8 9 func main() { 10 // strings demo 11 Contains() 12 Join() 13 Index() 14 Repeat() 15 Replace() 16 Split() 17 18 // strconv demo 19 AppendDemo() 20 FormatDemo() 21 ParseDemo() 22 } 23 24 func Contains() { 25 fmt.Println(strings.Contains("seafood", "foo")) //true 26 fmt.Println(strings...阅读全文

博文 2016-05-05 02:00:06 loveyx

[坐标深圳] 时代复兴寻找后端工程师

关于公司 北京时代复兴投资管理有限公司是业内领先的全资产组合管理机构,是经中国证券基金业协会认可并备案的私募管理机构(登记号 P1016372 )。我们致力于为客户提供有效的全资产组合管理方案。 在股票、债券、商品、外汇、另类投资、量化及程序化交易领域拥有核心竞争力。 关于入职部门 这次招聘的部门是交易执行部,负责统一交易后端( RestTrader )的开发和维护, RestTrader 是时代复兴整个交易系统的核心,通过支持全市场各个资产大类的交易柜台,为策略平台提供稳定、高效、快速的服务。 关于前景、团队、文化 决定跳槽或者选择一家企业的核心点主要有三个:前景、团队成员的靠谱程度、文化。 前景:我们的资产管理规模在 3 年内会超过 50 亿,量化对冲...阅读全文

golang 使用 iota

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0.【自增长】 const a = iota // a=0const ( b = iota //b=0 c //c=1) 3、自定义类型 自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。 type St...阅读全文

<6> go select 和 switch

select和switch语法都能相近,但是有重要不同的一点,switch可以做表达式的比较判断,而select只能是io操作的判断。相同点:都能用return跳出来。 // switch i := 1 switch{ case i==1: //doing case i==2: //doing default: // doing } //select ch := make(chan ,bool) select { case <- ch: // doing 当ch有值的时候,会触发这个case default: // doing } $(function () { $('pre.prettyprint code').each(function () { var lines = $(this)....阅读全文

博文 2015-12-15 00:00:00 a11101171

用 Go 实现图片尺寸的自动调节

我刚上大学那会儿,课上到最后几分钟的时候,我会翘课奔到另外一个我几乎不怎么了解的班上去蹭课。碰巧,那个班上的课是我觉得最棒的课之一 ——计算机视觉。此外,那个课上介绍了一种很赞的算法:Seam Carving,精雕细琢。 这个算法大概是酱紫的:一般我们想改变图片大小的时候,会采用裁剪和缩放的方式,这样一来,图片会损失很多重要信息,在处理过程中,图片甚至被歪曲。那么,我们怎么才能找到图片中视觉信息最少的部分,要调整图片大小的时候,只把这部分移除掉是不是可以呢? 上图展示给我们一副很美的画面:开阔的蓝天,俊逸的城堡。但是,对我们来说,图有点大,我们得往小调一下。怎么弄呢? coraaller翻译于 3周前 2人顶 顶 翻译的不错哦! 第一个进入我们大脑的想法是改变原始图像的尺寸。改变之后的图像(...阅读全文

博文 2016-08-04 19:00:00 hxapp2, coraaller, 无若, HAILINCAI, 昌伟兄

使用 Go 基于 RabbitMQ 实现的消息中间件wmq

WMQ是用golang基于RabbitMQ实现的消息中间件,在系统架构对解耦现有业务起到至关重要的作用,服务基于HTTP的API方式具有跨语言的特点,接入十分简单.能够很好的解决并发控制,异步任务,以及消息订阅与分发.工作原理架构图如下: ![image](https://static.oschina.net/uploads/space/2017/1017/110028_7bml_3703517.png) 特点: 跨语言,基于HTTP协议. 高性能,测试环境下消息生产速率达到3000个/s,而且性能毫无下降,瓶颈出现在后端RabbitMQ上. 提供了web-ui管理系统,对服务进行管理 跨平台,运行简单,直接运行一个二进制文件. 支持集群部署,避免单点故障. 完全实现了R...阅读全文

[golang]一个复杂的中文编码问题

今天在网上遇到一个问题,觉得挺有意思,就帮人解答了。 需求 在编码为Latin1的MySQL数据库中插入中文数据,由另一个系统将Latin1编码的字符串转码为GBK后作为短信内容发出。 简单版解答 import ( "golang.org/x/text/encoding/charmap" "golang.org/x/text/encoding/simplifiedchinese" ) func Convert(src string) (string, error) { gbk, err := simplifiedchinese.GBK.NewEncoder().Bytes([]byte(src)) if err != nil { return "", err } latin1, err :=...阅读全文

博文 2017-09-16 03:04:56 一桶冷水

golang 处理数字3位一组展示,中间用逗号分开

package main import ( "fmt" "strings" ) func main() { strResult := NumberFormat("1234567898.55") fmt.Println(strResult) } //格式护数值 1,234,567,898.55 func NumberFormat(str string) string { length := len(str) if length < 4 { return str } arr := strings.Split(str, ".") //用小数点符号分割字符串,为数组接收 length1 := len(arr[0]) if length1 < 4 { return str } count := (le...阅读全文

博文 2017-12-28 01:21:12 18393910396

如何用Go实现单链表

一、概念介绍下面这副图是我们单链表运煤车队。​每节运煤车就是单链表里的元素,每节车厢里的煤炭就是元素中保存的数据。前后车通过锁链相连,作为单链表运煤车,从1号车厢开始,每节车厢都知道后面拉着哪一节车厢,却不知道前面是哪节车厢拉的自己。第一节车厢没有任何车厢拉它,我们就叫它车头,第五节车厢后面拉其他车厢,我们称为车尾。作为单链表它最大的特点就是能随意增加车队的长度,也能随意减少车队的长度。这是比数组公交车最大的优点。二、Go语言实现讲解1、节点​每节车厢都由车体、绳索和煤炭构成。在Go语言中表示这种自定义组合体的类型就是结构,当然为了通用性,我们这里要把车厢转换成节点也就是元素,煤炭转换成数据,绳索转换成指针。type Node struct { data Object next *Node ...阅读全文

博文 2017-11-09 06:41:27 rhan-zz

崩溃 golang入坑系列

早上(11.30)收到邮件,Vultr东京机房网络故障。当时搭建SS时,考虑到了机房故障。所以特意分出了日本和香港两条线路。但千算万算,忘记数据库还在东京机房中。 现在网络故障,SS服务器无法读取数据库中的账号信息。于是乎,主备两条线同时宕了。哭笑两声,没钱去做异地双活,访问量又不大,就这么凑合吧。 我就不信Vultr网络故障是大概率事件。如果很频繁的出故障,用户会用脚去投票的。 铁路警察各管一段,Vultr的故障让Vultr的运维去背锅吧。我们言归正传,继续聊Golang。 在<撸袖子>那节,我们提到了数组。 其中用了一个很少的篇幅说了一下数组的近亲-切片。当时说到数组使用起来不方便,Golang提供了一种更方便的数组使用方式,就是切片。这节中,我们就先来说切片。 先来复习数组的概念,就是...阅读全文

博文 2017-12-04 15:00:01 vikings-blog

Golang strconv包使用

// atob.go ------------------------------------------------------------ // ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False. // 其它任何值都返回一个错误 func ParseBool(str string) (value bool, err error) func main() { fmt.Println(strconv.ParseBool("1")) // true fmt.Println(strconv.ParseBool("t")) // true fmt.Println...阅读全文

1.9 新特性预览:Logging, interfaces, and allocation

该文翻译自:http://commaok.xyz/post/interface-allocs/几个星期前,Peter Bourgon在golang-dev开了一个关于标准化日志记录的帖子。 日志很常用,因此性能很快提升。 go-kit日志包使用结构化日志,接口如下:type Logger interface { Log(keyvals ...interface{}) error}调用代码:logger.Log("transport", "HTTP", "addr", addr, "msg", "listening")请注意,进入日志调用的所有内容都将转换为interface{}。 这意味着它分配了不少内存。与另一个结构化日志库zap进行比较。 Zap为了避免内存分配和interface{}使...阅读全文

博文 2017-02-13 02:42:51 方圆

GORM 关联查询

定义了一个 User 和 Company, User 中可以包含多个 Company, 如下: type User struct { ID int `gorm:"TYPE:int(11);NOT NULL;PRIMARY_KEY;INDEX"` Name string `gorm:"TYPE: VARCHAR(255); DEFAULT:'';INDEX"` Companies []Company `gorm:"FOREIGNKEY:UserId;ASSOCIATION_FOREIGNKEY:ID"` CreatedAt time.Time `gorm:"TYPE:DATETIME"` UpdatedAt time.Time `gorm:"TYPE:DATETIME"` DeletedAt ...阅读全文

博文 2018-12-05 11:34:43 jouyouyun

golang 知识点总结

1) 日期格式化 //Date.Format("2006-01-02 15:04:05") //时间戳 time.Now().Unix() //int64 //转为字符串 strconv.FormatInt(time.Now().Unix(), 10) 2) json //improt包:"encoding/json" //orm, _ := models.New() //var slice []models.Orginfo //orm.FindAll(&slice) //tjson, _ := json.Marshal(slice) 3)字符串转换 //字符串转int / / 包 strconv //tint, _ := strconv.Atoi(tstr) //int转字符串 //tst...阅读全文

博文 2015-11-19 19:00:01 ziyouzhiqiu

消息中间件NSQ深入与实践

1. 介绍最近在研究一些消息中间件,常用的MQ如RabbitMQ,ActiveMQ,Kafka等。NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。官方和第三方还为NSQ开发了众多客户端功能库,如官方提供的基于HTTP的nsqd、Go客户端go-nsq、Python客户端pynsq、基于Node.js的JavaScript客户端nsqjs、异步C客户端libnsq、Java客户端nsq-java以及基于各种语言的众多第三方客户端功能库。 1.1 Features1). DistributedNSQ提供了分布式的,去中心化,且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和HA(高可用)特性。2). Sc...阅读全文

博文 2017-10-09 05:30:46 Aoho's Blog