第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Go 中 HTTP ResponseWriter 的寫(xiě)函數(shù)會(huì)緩沖嗎?

Go 中 HTTP ResponseWriter 的寫(xiě)函數(shù)會(huì)緩沖嗎?

Go
楊__羊羊 2021-08-16 19:57:32
假設(shè)我們有一個(gè)處理 HTTP 請(qǐng)求的函數(shù),例如:func handler(w http.ResponseWriter,  r *http.Request) {    w.Write([]byte("first piece of data"))    // do something    w.Write([]byte("second piece of data"))}  我想知道第一次調(diào)用 w.Write() 是否刷新到客戶端?如果它被刷新,那么我們實(shí)際上對(duì)客戶端響應(yīng)了兩次,這很奇怪,因?yàn)槲覀內(nèi)绾蜟ontent-Length在第二次調(diào)用 write 之前確定?如果它沒(méi)有被刷新(比如數(shù)據(jù)在本地緩沖),那么如果我們?cè)诘谝淮握{(diào)用時(shí)寫(xiě)入大量數(shù)據(jù)怎么辦?(那個(gè)堆棧會(huì)溢出嗎?)
查看完整描述

1 回答

?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

我想知道第一次調(diào)用 w.Write() 是否刷新到客戶端?

net/http的默認(rèn)值ResonseWriternet.Conn它寫(xiě)入的內(nèi)容上有一個(gè)(當(dāng)前為 4KB)大的輸出緩沖區(qū)。此外,操作系統(tǒng)通常會(huì)緩沖對(duì)套接字的寫(xiě)入。所以在大多數(shù)情況下會(huì)發(fā)生某種緩沖。

如果它被刷新,那么我們實(shí)際上對(duì)客戶端響應(yīng)了兩次,這很奇怪,因?yàn)槲覀內(nèi)绾卧诘诙握{(diào)用 write 之前確定 Content-Length?

好吧,HTTP 1.1 允許持久連接。此類(lèi)響應(yīng)通常不包含Content-Length標(biāo)題。此外,還有 HTTP 預(yù)告片。

如果您的客戶端不支持 HTTP 1.1 和持久連接,它們將有某種讀取超時(shí),在此期間您可以根據(jù)需要多次寫(xiě)入連接;這是一種回應(yīng)。

與 Go 相比,這更多地與 TCP 套接字和 HTTP 實(shí)現(xiàn)的性質(zhì)有關(guān)。

如果它沒(méi)有被刷新(比如數(shù)據(jù)在本地緩沖),那么如果我們?cè)诘谝淮握{(diào)用時(shí)寫(xiě)入大量數(shù)據(jù)怎么辦?(那個(gè)堆棧會(huì)溢出嗎?)

不,在堆棧上分配緩沖區(qū)是沒(méi)有意義的——緩沖區(qū)的主體將存在于堆中。如果您達(dá)到每個(gè)進(jìn)程的內(nèi)存限制,您的應(yīng)用程序?qū)⒊霈F(xiàn)“內(nèi)存不足”的恐慌。


查看完整回答
反對(duì) 回復(fù) 2021-08-16
  • 1 回答
  • 0 關(guān)注
  • 180 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)