-
并发
查看全部 -
很多goroutine映射到一个线程。多对1的关系。
chan是go里的一等公民。我们可以往chan里放不同类型的数据。也可以从一个声明的chan里取数据。
demo 从8:00开始
查看全部 -
- pipeline:一個library
查看全部 -
- pipeline:一個library
查看全部 -
Go语言编程范式:面向接口、函数式编程、并发编程。
查看全部 -
各个编程语言的使用场景.
查看全部 -
外部排序pipeline
查看全部 -
节点的组装,
传统语言与Go语言 对比
查看全部 -
go run [file] go build [file] [bin]
查看全部 -
进一步学习
go tool tour
http://docscn.studygolang.com/doc/
期待我的 go 语言实战课
查看全部 -
go 语言三大特色
面向接口- Reader/ Writer 接口的使用
函数式编程
并发编程
查看全部 -
课程回顾
原始数据
查看全部 -
网络的扩展
查看全部 -
网络的扩展
查看全部 -
单机版外部排序 pipeline
Reader Source 节点-支持分块
Mergen-搭建归并节点组
pipeline 的搭建及运行——CPU 及线程数量的观测
查看全部 -
package main
import (
"bufio"
"ccmouse/gointro/pipeline"
"fmt"
"os"
)
func main() {
p := createPipeline("small.in", 512, 4)
writeToFile(p, "small.out")
printFile("small.out")
}
func printFile(filename string) {
file, err := os.Open(filename)
if err != nil {
panic(err)
}
defer file.Close()
p := pipeline.ReadSource(file, -1)
for v := range p {
fmt.Println(v)
}
}
func writeToFile(p <-chan int, filename string) {
file, err := os.Create(filename)
if err != nil {
panic(err)
}
defer file.Close()
writer := bufio.NewWriter(file)
defer writer.Flush()
pipeline.WriteSink(writer, p)
}
func createPipeline(
filename string,
filesize, chunkCount int) <-chan int {
chunkSize := filesize / chunkCount
var sortResults []<-chan int
for i := 0; i < chunkCount; i++ {
file, err := os.Open(filename)
if err != nil {
panic(err)
}
file.Seek(int64(i * chunkSize), 0)
source := pipeline.ReadSource(
bufio.NewReader(file), chunkSize)
sortResults = append(sortResults, pipeline.InMemSort(source))
}
return pipeline.MergeN(sortResults...)
}查看全部
举报
0/150
提交
取消