《Go程式語言》第一章 原始碼

2022-03-13 04:42:54 字數 2722 閱讀 9671

fetch.go

// fetch 輸出從url獲取的內容

//讀取響應的主體內容

body, err := ioutil.readall(resp.body)

//避免資源洩露

resp.body.close()

//處理讀取失敗情況

if (err != nil)

//列印

fmt.printf("%s", body) }}

//執行命令: go run fetch.go

fetchall.go

// fetchall 併發獲取url的內容並且報告耗時

// 接收從ch通道過來的資訊

for range os.args[1:]

//列印程式總耗時

fmt.printf("%0.2fs elapsed\n", time.since(start).seconds())

}func fetch(url string, ch chan<- string)

//通過copy函式讀取響應內容,將內容寫入到輸出流discard進行丟棄,返回位元組數nbyte和錯誤資訊

nbytes, err := io.copy(ioutil.discard, resp.body)

//避免資源洩露

resp.body.close()

if (err != nil)

//大致的獲得該goroutine結束的耗時

secs := time.since(start).seconds()

//通過通道向main傳送相關資訊

ch <- fmt.sprintf("%2fs %7d %s", secs, nbytes, url)}/*

go run fetchall.go

0.069750s 201483

0.514788s 11077

0.766819s 7161

0.77s elapsed

*/

server1.go

//server1 是乙個迷你回聲伺服器

/*1.main函式將乙個處理函式和以/開頭的url鏈結在一起,代表所有的url都使用這個處理函式,然後啟動伺服器監聽進入8080埠處的請求

2.乙個請求由乙個http.request型別的結構體表示,它包含很多關聯的域,其中乙個是所請求的url

當乙個請求到達時,被轉交給處理函式,並且從請求的url提取路徑部分,然後使用fmt.fprintf格式化,然後作為響應傳送出去

*/

server2.go

//server2是乙個迷你的回聲和計數伺服器

)var mu sync.mutex //全域性計算器鎖

var count int

//計算器

func main()

//處理程式回顯請求的url的路徑部分

//回顯服務目前為止呼叫的次數

// server3 要求處理程式回顯http請求

)var mu sync.mutex //全域性計算器鎖

var count int

//計算器

func main()

//處理程式回顯請求的url的路徑部分

fmt.fprintf(w, "host=%q\n", r.host)

fmt.fprintf(w, "remoteaddr=%q\n", r.remoteaddr)

if err := r.parseform(); err != nil

for k, v := range r.form

}//回顯服務目前為止呼叫的次數

php原始碼分析 第一章

環境 lsb release a lsb version core 4.0 ia32 core 4.0 noarch graphics 4.0 ia32 graphics 4.0 noarch printing 4.0 ia32 printing 4.0 noarch distributor id ...

C 程式語言(第一章)

一.全書結構 1,1 3章,c 程式設計風格,以及有關c 標準庫的綜述 2,4 9章,c 內部型別 3,10 15,c 物件導向和通用型程式設計 4,16 22,c 標準庫 5,23 25,設計和開發軟體 6,附錄 二.給c程式設計師得建議 1,c 裡幾乎不需要用巨集,用const或enum定義明顯...

Hadoop原始碼分析 第一章 Hadoop指令碼

詳細的內容放在附件中,以下列出大綱,以後會陸續有新的章節放出 第一章指令碼部分寫作大綱,包含以下主題 大綱 1.介紹的集群啟動過程並畫出執行序列圖,用一段文字對整體執行過程進行說明 2.說明集群啟動和停止的方式有哪幾種 start all.sh sop all.sh 和start dfs.sh st...