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

golang sync WaitGroup

刚才看golang的sync的包,看见一个很有用的功能。就是WaitGroup。 先说说WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。 WaitGroup总共有三个方法:Add(delta int),Done(),Wait()。简单的说一下这三个方法的作用。 Add:添加或者减少等待goroutine的数量 Done:相当于Add(-1) Wait:执行阻塞,直到所有的WaitGroup数量变成0 例子: package main import ( "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup for i := 0; i < 5; i ...阅读全文

博文 2014-10-04 19:26:12 u011511092

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语言的chan

chan是一个FIFO队列,chan分成两种类型同步和异步同步的chan完成发送者和接受者之间手递手传递元素的过程,必须要求对方的存在才能完成一次发送或接受异步的chan发送和接受都是基于chan的缓存,但当缓存队列填满后,发送者就会进入发送队列, 当缓存队列为空时,接受者就会接入等待队列。 chan的数据结构: struct Hchan { uintgo qcount; // total data in the q uintgo dataqsiz; // size of the circular q uint16 elemsize; uint16 pad; // ensures proper alignment of the buffer that follows Hchan in mem...阅读全文

博文 2015-05-18 03:00:01 richmonkey

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 李小兵

【项目分析】公信宝GXS

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

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

golang中os/signal包的使用

os/signal包实现对信号的处理 golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。 func Notify(c chan<- os.Signal, sig ...os.Signal) func Notify(c chan<- os.Signal, sig ...os.Signal)第一个参数表示接收信号的channel, 第二个及后面的参数表示设置要监听的信号,如果不设置表示监听所有的信号。 func main() { c := make(chan os.Signal, 0) signal.Notify(c) // Block until a signal is received. s := ...阅读全文

博文 2015-06-17 20:03:59 chenbaoke

【互联网早报】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中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

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注意Channel的阻塞特性

本博客已迁移至 www.0x520.com 之前用channel练习的时候遇到一个问题,看似好像代码合理,而且编译也不会有问题,但忘记了一个重要的channel特性。 正确的代码: package main import "fmt" func foo(){ defer fmt.Println("World") fmt.Println("Hello") } func sum(x,y int,c chan int){ c <- x + y } func main(){ foo() c := make (chan int); go sum(24,18,c) fmt.Println(<-c); } 如果我把代码改成: package main import "fmt" func foo(){ def...阅读全文

博文 2014-10-04 19:27:33 小小霸王枪

golang 里goroutine产生的线程数量

import "os" func main() { for i:=0; i<20; i++ { go func() { for { b:=make([]byte, 10) os.Stdin.Read(b) // will block } }() } select{} } 会产生21个线程: runtime scheduler(src/pkg/runtime/proc.c)会维护一个线程池,当某个goroutine被block后,scheduler会创建一个新线程给其他ready的goroutine GOMAXPROCS控制的是未被阻塞的所有goroutine被multiplex到多少个线程上运...阅读全文

博文 2015-06-17 20:22:53 kjfcpua

golang 中的 time 包的 Ticker

真实的应用场景是:在测试收包的顺序的时候,加了个 tick 就发现丢包了 那么来看一个应用例子: package main import ( "fmt" "runtime" "time" ) func init() { runtime.GOMAXPROCS(runtime.NumCPU()) } func main() { ch := make(chan int, 1024) go func(ch chan int) { for { val := <-ch fmt.Printf("val:%d\n", val) } }(ch) tick := time.NewTicker(1 * time.Second) for i := 0; i < 20; i++ { select { case ch ...阅读全文

博文 2017-10-06 10:30:01 liang1101

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

关于公司 北京时代复兴投资管理有限公司是业内领先的全资产组合管理机构,是经中国证券基金业协会认可并备案的私募管理机构(登记号 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

golang 阻塞的坑

1、写go程序的时候一定要牢记主线程不能阻塞,一旦阻塞就崩溃,就怕那种某种情况下偶尔会出现几下阻塞的,一定要杜绝。2、select case的执行顺序是乱的,不确定的3、写入管道的时候,一定要保证管道没有被阻塞写否则会崩溃,读取阻塞管道的时候关闭管道会读取到一个0值和一个false ok...阅读全文

博文 2016-02-18 03:00:00 anjianliang

golang信号signal的处理

在实际项目中我们修改了配置文件后,希望在不重启进程的情况下重新加载配置文件,这时候就需要通过信号传递来进行处理了。golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。下面给一个些示例。 监听信号 notify方法原型 func Notify(c chan<- os.Signal, sig ...os.Signal) 第一个参数表示接收信号的管道 第二个及后面的参数表示设置要监听的信号,如果不设置表示监听所有的信号。 package main import ( "fmt" "os" "os/signal" //"syscall" ) func main() { c := make(chan os.Sig...阅读全文

博文 2015-10-14 14:27:22 陈杰斌

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

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

使用神奇的数据采集工具——造数,爬取男神的微博 昨天胡歌(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

channel数据结构

channel是go语言的一大特色,使用原子函数还是使用互斥锁都不如使用channel来的简单,go语言中的channel可以作为函数参数传递和返回值返回,通过发送和接受数据在goroutine之间同步(在学习和使用go语言的时候,我们应该牢记,go语言中所有的结构都是值拷贝的) 本文不对channel使用作讲解,直接上 *酸(dai)菜(ma)* : type hchan struct { qcount uint //队列数据总的数据数量 dataqsiz uint //环形队列的数据大小 buf unsafe.Pointer //指向dataqsiz元素类型大小的数组 elemsize uint16 closed uint32 elemtype *_type // 元素类型 sendx ...阅读全文

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

URL处理

我对大量的URL作请求并且处理。 首先我只有一个进程开一个循环,每次处理一个URL,有些URL始终不响应, http.Get之后就阻塞了?我要怎样跳掉这个URL? 然后我对于每个URL都开一个进程,我的电脑瞬间就死机了。 而且还会出现runtime panic. 这个应该怎么解决? ...阅读全文

【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

区块链技术产生数字货币时代

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 比特币是一种革命性的数字货币,更是一种颠覆性的创新技术。比特币最大的贡献是创造了信用,解决了困扰互联网进一步发展的拜占庭将军问题。 同时,比特币点对点的网络模式,起到了去中心化的作用,可以提供便捷、有效、安全的价值转移服务。并且,比特币网络用比特币奖励矿工们积极挖矿,为比特币的发展提供了巨大动力。 比特币是一种点对点的支付系统,在这个系统内,支持使用者进行点对点交易转账,从而不再需要银行或者类似支付宝这样的第三方了。这些交易数据每过十分钟左右,都会被打包在一个名为“区块”的文档中,这些“区块”依赖加密哈希函数链接在一起,形成了区块链。 我们常说的比特币挖矿,是指矿工们在比特币世界中利用电脑去计算加密过的哈希值,验...阅读全文

博文 2019-09-27 17:02:44 链客

消息中间件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

推荐四款云端营销工具,希望能帮助到各位商家

今年双十一大促将至,我们精心挑选了几款非常好用的云端营销工具,希望能帮助到各位商家~ 大促营销工具1:用DataV搭建自己的双十一大屏 DataV工具的作用: ▲天猫双十一大屏同款可视化工具,帮助用户轻松搭建实时数据看板 ▲满足您实时获得营销活动数据、跨境电商/全球贸易、线下零售分析、远程/内控等多种业务的展示需求 ▲支持绘制各类基础图表,即便没有设计师,也可搭建出高水准的可视化应用 购买DataV工具: 搭建自己的双十一大屏,电商作战最佳拍档,数据化运营起跑点 -- 阿里云DataV数据可视化大屏基础版51元/年起。点击查看详情: http://click.aliyun.com/m/29953/ ![1](https://...阅读全文

golang 中 channel 的非阻塞访问方法

在golang中,基本的channel读写操作都是阻塞的,如果你想要非阻塞的,可以使用如下示例: 即只要在select中加入default,阻塞立即变成非阻塞: package main import "fmt" func main() { messages := make(chan string) signals := make(chan bool) select { case msg := <-messages: fmt.Println("received message", msg) default: fmt.Println("no message received") } msg := "hi" select { case messages <- msg: fmt.Println("...阅读全文

博文 2018-10-24 15:34:49 乐剑天

使用nsq的时候,handler阻塞导致整个阻塞

使用nsq的时候遇到这样一个问题: AddConcurrentHandlers(handler, 8)的时候,已经有多个协程处理收到的消息。然而,当其中一个handle发生阻塞时,会导致整个Consumer阻塞,runtime.GOMAXPROCS(runtime.NumCPU()) 代码调用了。下面的代码也看不出问题,请教一下为什么会发生阻塞? ``` // AddConcurrentHandlers sets the Handler for messages received by this Consumer. It // takes a second argument which indicates the number of goroutines to spawn fo...阅读全文

关于SMT,你需要知道的

想知道什么是SMT,首先你总得了解,这三个字母代表的意思: Smartmesh Token。字面意思一目了然,Smartmesh的通证。要了解Smartmesh,自然要先知道什么是mesh,以及它是如何变得smart。 什么是mesh网络?MESH网络:即”无线网格网络”,它是多跳(multi-hop)网络,是由ad hoc网络发展而来,是解决“最后一公里”问题的关键技术之一。在向下一代网络演进的过程中,无线是一个不可缺的技术。无线mesh可以与其它网络协同通信。是一个动态的可以不断扩展的网络架构,任意的两个设备均可以保持无线互联,具有动态自组织、自配置、自维护等突出特点。Mesh网络的五大优势: 快速部署和易于安装 非视距传输(NLOS) 健壮性 结构灵活 高带宽 Mesh网络关键技术: ...阅读全文

快速获取 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