-
并發(fā)
查看全部 -
很多goroutine映射到一個線程。多對1的關系。
chan是go里的一等公民。我們可以往chan里放不同類型的數(shù)據(jù)。也可以從一個聲明的chan里取數(shù)據(jù)。
demo 從8:00開始
查看全部 -
- pipeline:一個library
查看全部 -
- pipeline:一個library
查看全部 -
Go語言編程范式:面向接口、函數(shù)式編程、并發(fā)編程。
查看全部 -
各個編程語言的使用場景.
查看全部 -
外部排序pipeline
查看全部 -
節(jié)點的組裝,
傳統(tǒng)語言與Go語言 對比
查看全部 -
go?run?[file] go?build?[file] [bin]
查看全部 -
進一步學習
go tool tour
http://docscn.studygolang.com/doc/
期待我的 go 語言實戰(zhàn)課
查看全部 -
go 語言三大特色
面向接口- Reader/ Writer 接口的使用
函數(shù)式編程
并發(fā)編程
查看全部 -
課程回顧
原始數(shù)據(jù)
查看全部 -
網絡的擴展
查看全部 -
網絡的擴展
查看全部 -
單機版外部排序 pipeline
Reader Source 節(jié)點-支持分塊
Mergen-搭建歸并節(jié)點組
pipeline 的搭建及運行——CPU 及線程數(shù)量的觀測
查看全部 -
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
提交
取消