golang中并发sync和channel

golang中实现并发非常简单,只需在需要并发的函数前面添加关键字"go",但是如何处理go并发机制中不同goroutine之间的同步与通信,golang 中提供了sync包和channel机制来解决这一问题. sync 包提供了互斥锁这类的基本的同步原语.除 Once 和 WaitGroup 之外的类型大多用于底层库的例程。更高级的同步操作通过信道与通信进行。 type Cond func NewCond(l Locker) *Cond func (c *Cond) Broadcast() f...阅读全文

2014-12-01 15:19 chenbaoke
阅读:39196 评论:0

golang处理多个项目src的编译问题

最近在折腾Golang 第一次花功夫研究静态语言,想想就有点小激动,是不是可以走向人生巅峰啦? 碰到一个梗每次编译的时候在多个项目中要来回切换GOPATH GOBIN这两个环境变量于是就写了个Makefile在src目录下执行就OK啦 export GOPATH=$HOME/pj/go02 export PATH=$PATH:$GOPATH/bin export GOBIN=$GOPATH/bin all: go install ./main/main.go run: $GOPATH/bin/m...阅读全文

阅读:5867 评论:0

Go的语言特性总结

写在前面: 近来关于对Golang的讨论有很多,七牛的几个大牛们也断定Go语言在未来将会快速发展,并且很可能会取代Java成为互联网时代最受欢迎的编程语言。Go语言是google推出的编程语言,在已经成功的给世人创造了改变人们生活的操作系统之后,google似乎感觉有必要再为世人带来一款强大的编程语言,而Go语言依靠自己众多友好的特性也不负众望正在被开发者接触,我有幸在学习高性能并发编程的时候认识了Go语言,在了解了Go的一些特性之后决定系统的学习一番。我发现关于Go的学习资料并不多,以至于我需...阅读全文

阅读:11903 评论:0

go语言的坑

Go语言是一个简单却蕴含深意的语言。但是,即便号称是最简单的C语言,都能总结出一本《C陷阱与缺陷》,更何况Go语言呢。Go语言中的许多坑其实并不是因为Go自身的问题。一些错误你再别的语言中也会犯,例如作用域,一些错误就是对因为 Go 语言的特性不了解而导致的,例如 range。 其实如果你在学习Go语言的时候去认真地阅读官方文档,百科,邮件列表或者其他的类似 Rob Pike 的名人博客,报告,那么本文中提到的许多坑都可以避免。但是不是每个人都会从基础学起,例如译者就喜欢简单粗暴地直接用Go语言...阅读全文

阅读:2269 评论:1

go语言实现线程池

话说真的好久没有写博客了,最近赶新项目,工作太忙了。这一周任务比较少,又可以随便敲敲了。 逛论坛的时候突发奇想,想用go语言实现一个线程池,主要功能是:添加total个任务到线程池中,线程池开启number个线程,每个线程从任务队列中取出一个任务执行,执行完成后取下一个任务,全部执行完成后回调一个函数。 不知道有没有卵用,但是我尝试用它开启3个线程,下载10个文件,效果还是不错的。第一次写这方面的东西,可能写得不好。 思路就是把任务放到channel里,每个线程不停的从channel中取出任务执...阅读全文

2015-07-22 15:32 wolfred7464
阅读:11912 评论:0

使用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...阅读全文

2015-09-02 17:14 liuwenhan999
阅读:4993 评论:0

golang 图片处理,剪切,base64数据转换,文件存储

本文主要介绍: 1. 图片文件的读写。 2. 图片在go缓存中如何与base64互相转换 3. 图片裁剪 本文中,为了方便查看,去掉所有错误判断 base64 -> file ddd, _ := base64.StdEncoding.DecodeString(datasource) //成图片文件并把文件写入到buffer err2 := ioutil.WriteFile("./output.jpg", ddd, 0666) //buffer输出到jpg文件中(不做处理,直接写到文件) data...阅读全文

阅读:4495 评论:0

Go 语言入门二: 如何编写 Go 代码

本文是 How to Write Go Code 的学习笔记。通过示范介绍了Go 语言的开发过程和 go 工具的使用。 1. 代码结构 go 语言特点 go 开发者通常将所有代码组织在一个工作空间下 一个工作空间包含多个版本控制库(git) 一个版本控制库中包含一个或多个应用包 一个包由多个go 源代码文件组成 1.1 工作空间 工作空间包含三个子目录 src 包含所有源代码文件 pkg 包含所有包对象,库依赖文件等 bin 包含所有可执行文件 go 工具编译源码产生的结果,会存放到 pkg 和...阅读全文

阅读:441 评论:0

Go 微服务实践

简介 近一两年来,微服务架构已经成为热门话题(microservices.io),与传统的一体化应用架构相比,微服务架构在开发、测试、部署方面都有众多吸引人之处,越来越多没有历史包袱的新项目都启用微服务架构的模式来开发。 我们这个团队经过深入思考之后,决定在一起美这个APP的后端开发中,选择Go作为开发语言,采用微服务模式来实现,经过近半年的实践,形成了一些心得,简单总结后分享出来,希望能够给大家一些帮助。 框架选择 不同的团队在选择基础框架(库)时考虑的要素不同,我们团队更喜欢小而美的框架,尽...阅读全文

2017-02-20 15:00:34 徐学良
阅读:5291 评论:1

是的,为了更好的支持微服务,我们从PHP迁移到了Go

起初,我们认为坚持一门熟悉的语言是负责任的事情——我们是一个小团队,却已经冒了两次险:切换到微服务和完全重写我们的 Web 应用程序(高流量游戏平台)。但是,最终我们决定放弃 PHP 拥抱 Go,下面我将解释为什么这么做,并分享一些在我们的微服务架构中数据库相关的想法。微服务和 PHP:概念性错配我们熟悉的语言是 PHP,它支撑了我们现有的应用程序,有两个模糊的论据可以支持我们继续这么做下去:我们熟悉 PHP,它开发很快题。为什么要放弃对我们有用的东西?市面上有很多 PHP 开发人员。 选择 P...阅读全文

2017-05-17 Jesse 译
阅读:3517 评论:0

golang 面试题

分享出来几个go面试题,都非常简单,如果您有一些开发时候使用到的小技巧欢迎评论。 目前我写出来11个(再更新一道题目),未来会不定期更新。。。 1、写出下面代码输出内容。 package main import ( "fmt" ) func main() { defer_call() } func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() ...阅读全文

阅读:21215 评论:29

GO 工具包安装方法

go 安装依赖包一般会通过四种路径 1.github.com/ 2.golang.org/ 3.gopkg.in/ 4.honnet.co/ 比如我们可以通过go get github.com/xxx来下载安装包下载好之后, 通过go install github.com/xxx来安装包安装包会下载到$GOPATH/src文件中安装后的执行文件在$GOPATH/bin文件常见错误当我们执行go get golang.org/x/tools/cmd/goimports会报错package gola...阅读全文

2017.07.06 14:36 依然饭太稀
阅读:6891 评论:0

快速掌握 Golang context 包,简单示例

预览目录 Context 原理 遵循规则 Context 包 WithCancel 例子 WithDeadline 例子 WithTimeout 例子 WithValue 例子 参考连接 对于 Golang 开发者来说context(上下文)包一定不会陌生。但很多时候,我们懒惰的只是见过它,或能起到什么作用,并不会去深究它。 应用场景:在 Go http 包的 Server 中,每一个请求在都有一个对应的goroutine去处理。请求处理函数通常会启动额外的goroutine用来访问后端服务,比...阅读全文

2017-08-28 01:52 Deepzz's Blog
阅读:1626 评论:0

Go 在万亿级大数据平台开发中的实战

导语迅猛发展的互联网将我们带入了大数据时代,大数据已经成为发展中不可或缺的力量支撑,大数据挑战和机遇并存,如何更好合理、灵活应用大数据是企业的关注所在。七牛大数据团队研发工程师孙健波为大家带来题为Go 在大数据开发中的实战经验的技术分享。以下是此次演讲内容整理。作者介绍:孙健波,InfoQ 专栏作者,硕士毕业于浙江大学计算机学院,2015 年底加入七牛,参与并负责七牛大数据平台整条链路多模块的架构设计以及开发工作,包括大数据计算引擎、时序数据库服务以及日志检索服务。在此之前主要研究和参与 Clo...阅读全文

阅读:12338 评论:0

Go coding in Go way-Gopher China演讲分享

导言:不同语言编程思维造就了编程风格以及代码形式的不一,那么如何运用GO编程思维去写GO代码?今天的分享就是基于对GO编码的一些观点分析,带领大家使用GO的编程思维来编写代码,当然本次分享中如果有不足之处也请大家指出和谅解。 |语言与思维方式我们首先从人类学语言假说开始,萨丕尔.沃夫假曾说过,语言可以影响或决定思维方式。在这里我要提一个大家可能都熟知的美国电影——《降临》,这部大片是根据美国华裔作家的小说改编的,主要剧情理论核心便印证了上述我们提到的假说——“语言影响思维并决定思维”。女主角在政...阅读全文

阅读:578 评论:0

浅谈 Golang sync 包的相关使用方法

更多精彩文章:https://deepzz.com Desc:Go sync 包的使用方法,sync.Mutex,sync.RMutex,sync.Once,sync.Cond,sync.Waitgroup 尽管 Golang 推荐通过 channel 进行通信和同步,但在实际开发中 sync 包用得也非常的多。另外 sync 下还有一个 atomic 包,提供了一些底层的原子操作(这里不做介绍)。本篇文章主要介绍该包下的锁的一些概念及使用方法。 整个包都围绕这 Locker 进行,这是一个 i...阅读全文

阅读:11228 评论:3

GoLang 字符串处理大全

GoLang基础数据类型--->字符串处理大全 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 欢迎加入: 高级运维工程师之路 598432640 任何一门语言都有它的好处,Golang的长处就是在于它的高并发能力,所以现在练习好Golang的用法,有利于你找一份好的工作哟~在学习任何一本语言,它的基本数据类型我们应该都得熟记于心,今天我们处理的主角就是字符串。让我们一起看看Golang对字符串的用法吧。我们此处主要针对strings这个包的某些方法的用法做演示。 1.Cont...阅读全文

阅读:4988 评论:0