無(wú)意間想起的一個(gè)問(wèn)題
比如往socket里write的時(shí)候,比如往一個(gè)文件里寫(xiě)數(shù)據(jù)的時(shí)候,比如hession序列化的時(shí)候等等,不知道大家有沒(méi)有想過(guò)這個(gè)問(wèn)題。
以下是我的理解:程序在往文件里寫(xiě)數(shù)據(jù),首先要把文件轉(zhuǎn)化成一個(gè)流,數(shù)據(jù)從一塊內(nèi)存空間進(jìn)入cpu進(jìn)行處理,然后再由CPU寫(xiě)入流,此時(shí)的寫(xiě)操作還在內(nèi)存中,經(jīng)過(guò)flush之后數(shù)據(jù)才會(huì)從流進(jìn)入文件。突然想到個(gè)問(wèn)題,流和文件有可能描述的是一個(gè)東西,只是一個(gè)在硬盤(pán)中,一個(gè)在內(nèi)存中,鑒于CPU不能之間與硬盤(pán)進(jìn)行數(shù)據(jù)直接讀寫(xiě)(這樣會(huì)很慢),所以需要有這么一個(gè)流。
讀者可能會(huì)想到為什么讀不需要flush,顯然讀出來(lái)的數(shù)據(jù)是要在內(nèi)存中處理的,比如做數(shù)據(jù)校驗(yàn),求和,甚至打印的操作。
哈哈哈,不知道我的理解有沒(méi)有問(wèn)題??