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

<三> go 枚举

在go语言中,没有直接支持枚举的关键字,也就造成go没有直接枚举的功能。但是go提供另一种方法来实现枚举,那就是const+iota // 实现枚举例子 type State int // iota 初始化后会自动递增 const ( Running State = iota // value --> 0 Stopped // value --> 1 Rebooting // value --> 2 Terminated // value --> 3 ) func (this State) String() string { switch this { case Running: return "Running" case Stopped: return "Stopped" default:...阅读全文

博文 2015-11-20 09:00:01 a11101171

go语言25个关键字总结

var和const :变量和常量的声明 var varName type 或者 varName : = value package and import: 导入 func: 用于定义函数和方法 return :用于从函数返回 defer someCode :在函数退出之前执行 go : 用于并行 select 用于选择不同类型的通讯 interface 用于定义接口 struct 用于定义抽象数据类型 break、case、continue、for、fallthrough、else、if、switch、goto、default 流程控制 chan用于channel通讯 type用于声明自定义类型 map用于声明map类型数据 range用于读取slice、map、channel数...阅读全文

博文 2014-10-04 19:26:29 T_star

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

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

golang中defer的执行

golang中defer的执行 大家都知道golang的defer关键字,它可以在函数返回前执行一些操作,最常用的就是打开一个资源(例如一个文件、数据库连接等)时就用defer延迟关闭改资源,以免引起内存泄漏。例如: func do() (ok bool) { file,_ := os.Open("c:\a.txt") defer file.Close() // doSomething return ok } 我们可以在官方的文档中看到defer的执行顺序是逆序的,也就是先进后出的顺序: for i := 0; i < 5; i++ { defer fmt.Printf("%d ", i) } 打印结果是:4,3,2,1,0 那么再看这个例子: func deferRet(x,y int) ...阅读全文

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

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

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

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

【项目分析】公信宝GXS

作为一个区块链超级小白,最开始的时候我以为公信宝就等同于布洛克城app,就是上传我们的数据,然后挖矿。在读了项目白皮书和其它资料后,才知道公信宝的世界超越我的想象,让我们一起来看看吧。 一、项目简介 GXChain(公信链)是公信宝团队打造的一条数据交换公有区块链,是公信宝数据交易所的底层链,不仅支撑着公信宝数据交易所高频的数据交易交换,还支持开发者开发应用。在公信链上开发应用,不仅可以利用区块链的技术特性,还可以获得各行业多维度数据的支持,做出非常落地于民生的有价值应用。 已经开发出来并上线的应用,证明了公信链在商业上的可用性,基于GXChain的第一个企业级应用——公信宝去中心化交易所,已经在2017年9月24日正式商业化落地。 基于公信链的第二个应用,也是第一个大型个人端应用——公信宝...阅读全文

博文 2018-06-28 18:34:40 不可一日不拱卒

go - 继承

1 方法的继承 在go中没有继承的关键字,但是我们可以通过interface这个类型做出继承的效果,看如下代码,Car就继承了Start和Stop这两个方法 import ( "fmt" ) type Engine interface { Start() Stop() } type Car struct { Engine } func (this *Car) Start() { fmt.Println("Car->Start()") } func main() { fmt.Println("Start Main func()") car := new(Car) car.Start() } 2 成员变量的继承 相当与定义Person人这个类,然后定义男人Man继承人的姓名,年龄这个两个成员属性...阅读全文

博文 2015-11-16 17:00:01 a11101171

golang 中的 type switch 类型判断

golang 语言中 也有 类是 javascript 的 typeof 判断类型的 方法 比如 func (a interface{}){ //第一种 if inst,ok:=a.(TypeA);ok{ inst.MethodA() } //第二种 switch inst:=a.(type){ case TypeA: inst.MethodA() default: fmt.Println("unknow") } } a可能是任意类型 a.(某个类型) 返回两个值 inst 和 ok ,ok代表是否是这个类型,Ok如果是 inst 就是转换后的 类型 a.(type) type是关键字 结合switch case使用 TypeA(a) 是强制转...阅读全文

博文 2014-10-04 19:26:55 健哥大人

【互联网早报】2017.12.01

## 国内新闻 1.快看漫画宣布完成1.77亿美元D轮融资 http://tech.163.com/17/1201/08/D4IDFMUC00097U7R.html 2.天鸽互动Q3纯利1.28亿元 同比增长56.8% http://tech.sina.com.cn/i/2017-11-30/doc-ifypikws9635963.shtml 3.奇点金服获投1亿 企业理财市场可达万亿级别 http://www.ebrun.com/20171130/257474.shtml ## 国际新闻 1.Apple Watch的第一个心电图医疗配件,终获FDA批准 https://www.leiphone.com/news...阅读全文

Golang 简单的启用一个线程

// code by shaoyongyang package main import ( "fmt" "time" ) func say(s string) { fmt.Println(s) } func main() { go say("who are you?") go say("who are you?1") fmt.Println(2) time.Sleep(1e9) } 好吧,我之前都在想为什么say方法里面没有任何输出,查了很多资料后发现,是因为程序已经结束运行了,启动的线程还在运行。 在最后面加入线程休眠时间就可以了。 启用一个线程仅仅 go say("see i am new thread") ,仅仅使用go关键字即...阅读全文

博文 2015-02-01 08: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

空接口(interface {})类型判断

空接口可以存储任意类型的数据,当需要判断到底是何种类型时,可以使用以下方法。 1 直接断言 比如我们收到一个类型为interface{}的变量unknown,可以通过如下代码直接断言是否为string类型: val, ok := unknow.(string) 如果返回ok为true,则变量unknown为string类型,同时返回一个val存储string类型的值。如果我们确定unknown为string类型,也可以不返回ok变量,直接强转获取其值: val := unknow.(string) 但是使用这种方法有一定的风险,如果不是string类型,会发生panic: panic: interface conversion: interface {} is int, not string...阅读全文

博文 2019-08-01 21:02:45 moonbamboo

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

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(){ //...阅读全文

Golang关键字—— if/else

Golang中,if/else 关键字用于条件判断,如果满足条件就做某事,否则做另一件事: if age >= 18 { fmt.Println("成年人") } else { fmt.Println("未成年") } 多重判断: if score >= 90 { fmt.Println("优秀") } else if score >= 70 { fmt.Println("良好") } else if score >= 60 { fmt.Println("一般") } else { fmt.Println("差") } Golang允许在条件判断语句里声明一个变量,该变量的作用域只在该条件逻辑块内: if score := 40; score >= 90 { fmt.Println("优秀:...阅读全文

博文 2015-05-21 10:00:00 nianhua

golang笔记-注释-标识符

Go语言注释 行注释://xxxxxx 块注释:/* xxxxxx */ Go语言关键字,严格区分大小写。 1.break 2.default 3.func 4.interface 5.select 6.case 7.defet 8.go 9.map 10.struct 11.chan 12.else 13.goto 14.package 15.switch 16.const 17.fallthrough 18.if 19.range 20.type 21.contiue 22.for 23.import 24.return 25.var Go语言预定义标识符 1.append 2.bool 3.byte 4.cap 5.close 6.complex 7.complex64 8.compl...阅读全文

博文 2016-04-09 23:00:01 golangerblog

golang expected declaration, found 'IDENT'

这个问题是因为:=只能在函数内部使用,如果声明全局变量需要使用var关键字 例如 func foo() { id := 1 } 如果声明为全局变量则需要这样声明 var id = 1 PS:Go中引入:=是为了减少一些临时变量的定义,所以一个好的习惯是:=只用来声明临时变量,对于一个函数中常用的变量还是使用var进行声明。 附: Short_variable_declarations $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

博文 2015-12-12 17:00:01 jiaolongdy

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

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

[翻译]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 吕明明

关于Skycoin, 我所知道的50件事#skycoin

关于Skycoin,你应该知道的50件事1.Skycoin是新一代去中心化互联网和世界上最先进的区块链应用 平台。2.Skycoin是由比特币和以太坊的早期开发者发明的第三代区块链 平台。它还修复了其他区块链网络相关的安全问题,并将加密货币的 创建与挖掘过程分离。使Skycoin真正地做到了去中心化,满足了 Satoshi创建比特币的原始愿景。3. 正在从头开始重建互联网,使得用户可以摆脱对网络服务 提供商(ISP)的依赖。这也解决了过去用户数据被ISP监控,追踪、 销售等问题。Skyminers加密和处理人们的互联网数据。需要使用天线在全球范围 内发送/传输数据,而无需通过地下/海底光纤电缆和卫星以便ISP来 提供互联网。这样,巨型ISP公司就无法控制互联网。人们有权力对 自己的互联网做主...阅读全文

博文 2019-05-22 01:34:45 钢铁肥蛋嘭嘭嘭

使用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浮点数转字符串保留小数点后N位解决办法

最近在项目中碰到很多次float转string,同时要求保留小数点后几位,并且去掉小数点后0的场景 虽然问题很简单,但是隔了挺久没处理这种场景就有些生疏了,自己也搜了一下,很多回答都不太满意。这里贴一下自己的做法,如果有更好的解决办法的话,还请多多指教 // 主要逻辑就是先乘,trunc之后再除回去,就达到了保留N位小数的效果 func FormatFloat(num float64, decimal int) string { // 默认乘1 d := float64(1) if decimal > 0 { // 10的N次方 d = math.Pow10(decimal) } // math.trunc作用就是返回浮点数的整数部分 // 再除回去,小数点后无效的0也就不存在了 retur...阅读全文

redigo设置超时时间

如果你不传入timeout的值,那么默认0值的话,这两个set deadline的逻辑就跳过了。。。如果不设置read/write timeout 会导致什么问题呢?假如网络有波动,执行一个redis 命令的时候,一直没收到服务器的响应,会导致这次请求一直没有返回,晾在那。直到redis服务器设置的超时时间到了,关闭连接,然后就会读到一个EOF的错误。单点redis的情况,如果不设置MaxActive,redispool的连接数是没有上限的,问题就不会暴露出来,这对我们的服务来说,影响也不大,就是在错误日志中,会多几条redis相关的EOF日志,但是这样真的没问题么?当然有问题,如果是从redis读消息,没有设置read timeout,一直读不到,这个协程就卡在那,迟迟不给响应,对用户来说...阅读全文

博文 2018-10-19 18:34:42 Michael_001

全面系统学测试 从小白入门到实战就业

​全面系统学测试 从小白入门到实战就业 完整无密 【点击下载】本课程为慕课网销量最高、备受好评的测试入门课程2020年全新升级版。升级课程亮点:1、测试设计、测试执行、测试总结、黑盒测试、白盒测试、自动化测试、性能测试、手机测试、面试讲解等全方位多角度进行讲解;2、辅助以支付宝、余额宝等实战项目演练,更增加主流热门电商类测试项目全流程与微信红包项目实战;3、掌握从简单业务场景到复杂业务场景下的不同测试实战技巧,满足入门+提高双重需求适合人群软件测试初学者、刚刚从事软件测试行业的新手,在校大学生、应届毕业准备从事软件测试行业,准备转行进入软件测试行业的小伙伴技术储备要求0基础入门,无论你的基础怎么样,你的背景怎么样都可以学习这门课程第1章 课程介绍本章主要介绍课程学习内容,学习收获,学习路线及...阅读全文

又拍图片管家亿级图像之搜图系统的两代演进及底层原理

又拍图片管家亿级图像之搜图系统的两代演进及底层原理 前言 又拍图片管家当前服务了千万级用户,管理了百亿级图片。当用户的图库变得越来越庞大时,业务上急切的需要一种方案能够快速定位图像,即直接输入图像,然后根据输入的图像内容来找到图库中的原图及相似图,而以图搜图服务就是为了解决这个问题。 本人有幸独立负责并实施了整个以图搜图系统从技术调研、到设计验证、以及最后工程实现的全过程。而整个以图搜图服务也是经历了两次的整体演进:从 2019 年初开始第一次技术调研,经历春节假期,2019 年 3、4 月份第一代系统整体上线;2020 年初着手升级方案调研,经历春节及疫情,2020 年 4 月份开始第二代系统的整体升级。 本文将会简述两代搜图系统背后的技术选型及基本原理。 基础概要 图像是什么? 与图像打...阅读全文

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中的接口与继承

接口 interface是关键字; 接口的力量:interface是只要你实现了接口定义的类型(方法),就可以作为接口的实例拿来用,在语言层面上不再需要其它的约束。 继承 在结构体中嵌入匿名类型成员,就可以继承匿名类型的方法。 不仅可以嵌入匿名类型成员,还可以嵌入匿名的接口,或者匿名的指针对象,是一种纯虚继承,继承的只是接口的规范,而实现还得靠自己...阅读全文

博文 2019-02-10 21:34:44 areece

超级简单ORM的实现方式

//根据传入的struct中定义的字段名自动小写首字母,查询得到的值自动插入struct中.当然也可以用tag查询,但是需要首先把tag取出来,然后做一个map把tag值和对应的field存储起来. func SelectOne(i interface{}, query string, a ...interface{}) { rows, err := db.Query(query, a...) if nil != err { log.Println(err) return } cols, err := rows.Columns() if nil != err { log.Println(err) return } is := ma...阅读全文

程序员自白:为什么我们能将月入五万活得像月薪五千

点击上方“CSDN”,选择“置顶公众号”关键时刻,第一时间送达!最近 IT 圈里流行着一个话题:月薪 5W 的程序员,活得却好似月薪 5K。究竟是什么原因,让表面上高收入的程序员生活得如此简约质朴呢?咱们在这里简单分析一下:原因一:穷说到穷,可能有人不服气了:都月薪 5W 了,怎么还能叫穷呢?我们这里所说的穷,更多的是指出身普通。至少在国内,没听说过有哪个富二代在苦逼写代码、改 Bug,绝大多数小伙伴们都是一身清贫地在北上广打拼。如果有幸达到税前月薪 5W,扣去个税和保险,剩下不过 3.5W。对于有房贷,有娃的程序员们,5W 的薪资真的不多,拿什么来奢侈?原因二:忙这个理由应该没有什么争议。互联网大厂的程序员们全年 996,天天对着电脑,谁还有时间关注时尚,谁还有时间逛街消费?原因三:圈子单...阅读全文

博文 2017-10-26 00:13:27 程序员小灰

数据告诉你,胡歌的微世界

使用神奇的数据采集工具——造数,爬取男神的微博 昨天胡歌(35岁)生日刚刚过去,各位胡椒粉有什么想说的呢,一路走来,有多少人知道胡歌最早是这样的: 当胡歌说道要先把饥寒问题管制时,许多粉丝心伤到眼泪都进去了。 爬微博原因:过去的生日胡歌都会发微博,那时候微博上是这样的: 2015年(33岁) 2014年(32岁) 2013年(31岁) 然而在2016年,胡歌发了这样一条微博 造数君爬取了老大的微博,做了一个简单的分析,当然啦,数据采集不光要告诉你能够采集到什么,还要一并教你怎么采集: 选用的是微博移动端胡歌的微博 , 记住一定要切换到高级模式,加上cookie 翻页非常简单,就是page的值 https://weibo.cn/hu_ge?page={{1-360}} 然后就轻松拿到了胡歌所有...阅读全文

博文 2017-09-21 02:34:47 造数科技

一道经常考的面试题

前段时间在找工作,也遇到一些不错的面试题,其中有一道很常见,记录一下,里面还有一点搞不明白的: 下面两段程序的输出是什么? 第一段: func main() { var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Add(1) go func() { fmt.Println(i) wg.Done() }() } wg.Wait() } 第二段: func main() { var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Add(1) go func(n int) { fmt.Println(n) wg.Done() }(i) } wg.Wait() } 很多面试题解析里面说第一段的10个g...阅读全文

博文 2019-09-06 10:02:56 fox_lin

Golang协程与通道整理

协程goroutine 不由OS调度,而是用户层自行释放CPU,从而在执行体之间切换。Go在底层进行协助实现 涉及系统调用的地方由Go标准库协助释放CPU 总之,不通过OS进行切换,自行切换,系统运行开支大大降低 通道channel 并发编程的关键在于执行体之间的通信,go通过通过channel进行通信 channel可以认为类似其他OS体系中的消息队列,只不过在go中原生支持,因而易用 消息队列有哪些值得关注的地方?常见问题包括创建、关闭或删除、阻塞、超时、优先级等,golang中也不例外。罗列如下: 可否探测队列是满或空?或者说是否可以不阻塞地尝试读写? 读阻塞和写阻塞时关闭会怎样? 关闭后未读取的消息会被抛弃? 往关闭的channel发送数据或读取数据会怎样? 怎样探测channel的...阅读全文

IPFS+FILECOIN:下一个网络世界的霸主,没有之一

【前言】 在没有比特币系统以前,互联网世界一片祥和。自从BTC的问世,这一传统互联网领域的被区块链的这一新的生产关系逐渐蚕食。 任何伟大想法的出现以及落地,必须要有一种完美的激励体系才能让其发扬光大。 今天,当ipfs遇上filecoin,下一个网络世界的霸主应运而生,而且这个霸主没有之一。 下面小编就带您详细了解一下下一个网络世界的霸主。【背景】当前互联网正处于一场革命中:1、集中式专有服务正在被去中心化开放服务所代替;2、信任式参与被可验证式计算所代替;3、脆弱的位置寻址被弹性的内容寻址所代替;4、低效率的整体式服务被点对点算法市场所代替;5、比特币、以太坊和其他的区块链网络已经证明了去中心化交易账本的有效性。这些公共账本处理复杂的智能合约应用程序和交易价值数百亿美金的加密资产。这些系统...阅读全文

博文 2018-07-08 09:34:41 向往自由的孩子

开源消息系统 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

使用 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 处理数字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

怎样才不浪费IP的价值?

当年的“我叫MT”迅速唤起了很多玩家小学时代集卡、打卡的热情,它有意思,也多少有点儿怀念的味道;而后至今不断推出的各式纯卡牌手游几乎“转瞬即逝”,甚至有不少难以突围到玩家面前。等到“刀塔传奇”推出,让卡牌游戏变得“活”了起来,我们再一次欢呼:又有能玩儿的了。 但随着不断的IP、内容的填充,各类技术、玩法的堆加,手游被扮得越来越好看诱人,但真让玩家进行深入体验后,能够持续在一款游戏上进行投入的(无论是金钱还是时间)却越来越少。就好像有人说:“手游不能再带给我太大的惊喜了,无论噱头有多足。” 我想,这大概就是手游“活不好”了吧。 对于如今的手游市场情况来看,由于玩家要求的不断增高,大多“模版式”的游戏已经难以满足用户的胃口,企业购买用户的成本开始逐渐加大,这无疑给市场营...阅读全文

golang 发送多人邮件 textproto.Error{Code:554, Msg:"Transaction failed: Illegal semicolon, not in group"

网上很多版本发送邮件都是用; 号,关键在于,多个邮件分割不能用; 号,需要用,号 // send mail func SendMail(subject string, message string, from *mail.Address, to []string, smtpConfig SmtpConfig, isHtml bool) error { auth := smtp.PlainAuth( "", smtpConfig.Username, smtpConfig.Password, smtpConfig.Host, ) contentType := "text/plain" if isHtml { contentType = "text/html" } msg := fmt.Sprin...阅读全文

博文 2015-01-23 03:00:00 zhangqingping

在线安装 IntelliJ IDEA的 golang 插件

IntelliJ IDEA是非常受欢迎的开发工具,如果我们希望使用IntelliJ IDEA 进行Go语言的开发,需要安装Golang插件。网上的资料几乎都是建议开发者编译源码进行安装,但这是不必要的。还有更简单快捷的在线安装方式,这里给出基本步骤(基于IntelliJ IDEA 14.1,不同版本界面会有细微差异,但步骤相似):1. 在“Settings”菜单,点击“Plugins”,打开插件管理窗口:2. 点击“ Browse repositories”,打开插件仓库管理窗口:3. 点击“Manage repositories...”,打开自定义仓库窗口:4. 在URL中输入:https://plugins.jetbrains.com/plugins/alpha/50475. 点击“OK...阅读全文

博文 2015-11-11 09:00:01 stri-zhaolei

[Golang] 从零开始写Socket Server(1): Socket-Client框架

第一次跑到互联网公司实习 。。感觉自己进步飞快啊~第一周刚写了个HTTP服务器用于微信公共号的点餐系统~ 第二周就直接开始一边自学GO语言一边写用于Socket的服务器了。。。 因为发现Golang这一块资料挺少的,接下来我会在Blog里把整个Server的Coding,还有遇到的坑都记录下来~ 在golang中,网络协议已经被封装的非常完好了,想要写一个Socket的Server,我们并不用像其他语言那样需要为socket、bind、listen、receive等一系列操作头疼,只要使用Golang中自带的net包即可很方便的完成连接等操作~ 在这里,给出一个最最基础的基于Socket的Server的写法: package main import ( "fmt" "net" "log" "...阅读全文

博文 2015-09-07 23:00:00 ahlxt123

【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

佛系程序员的月薪五万指南

摘要: 大师:很简单,我这里有一份佛系月薪 5 万指南,我看你骨骼清奇、脑门光亮,一看就是将要大富大贵之人,这份指南可以助你快速实现小目标! ![图片描述](http://img.blog.csdn.net/20180412102533464?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVucWlpbnNpZ2h0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 程序员问大师…… 青年:大师,你看咪蒙的助理都月薪 5 万了,我也想月薪 5 万! 大师:很简单,我这里有一份佛系月薪 5 万指南,我看你骨骼清奇、脑门光亮...阅读全文