为了账号安全,请及时绑定邮箱和手机立即绑定

搭建并行处理管道,感受GO语言魅力

难度中级
时长 2小时17分
学习人数
综合评分9.67
51人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.6 逻辑清晰

最赞回答 / gypsy_gyq
1、channel 是分缓冲通道和非缓冲通道的,在 make channel 的时候,如果没有指定通道容量,那么这就是一个非缓冲通道。非缓冲通道的特点是,必须发送和接收同时进行,否则就会等待;而缓冲通道不需要发送和接收同时进行,但是当通道满的时候,发送方也会阻塞,必须等到接收方从通道中拿走数据后才能继续发送。2、所以上面的代码没有指定容量,是一个非缓冲通道,那么必然是发送和接收同时进行的,也可以理解为 放一个 range 一个。

最赞回答 / 慕仔3302377
只要一个类型,实现了一个接口的任意方法,都能隐式转换为该接口类型

可以看下具体的代码
// io.go 
// io.Writer 接口定义
type Writer interface {   
   Write(p []byte) (n int, err error)
}

// file.go
// File结构体write方法
func (f *File) Write(b []byte) (n int, err error) {
    // .......
}

最新回答 / Team_军师
因为开始已经把in1输入到变量v1了,不更新v1的话,for循环会一直拿到的是v1的第一个值

最新回答 / weixin_慕九州6566345
后面会有,n判断buffer里是否还有数据,之后会对没有的情况做处理

最新回答 / 醒说信做_陈满
如果你单机跑整个程序(你的机器内存8G,但你需要派排序的文件8.5G)这样子会导致程序因为内存空间不足导致panic,因此通过分片(分块)的方法,将大文件分子别在不同的机器上面进行处理,最终再由一个机器分别汇总结果并输出到文件。

最新回答 / Tscheung
解决了,因为多敲了一句out <-a[0], 跟着老师敲没跟着删掉这句话

最新回答 / 慕梦前来
把端口调小看,不要用那么大的,不好

最新回答 / 慕丝8833399
是覆盖了,覆盖了8个字节,刚好是一个int。然后这个buffer转成int,并由out channel 发送出去
课程须知
1、了解一门编程语言,对基本算法如排序有了解
老师告诉你能学到什么?
1、go语言的历史和设计初衷 2、go语言的安装与开发环境 3、简单的go语言程序 4、了解go语言并发编程 5、实现一个并行数据处理管道

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消