眾所周知,java在處理大量數(shù)據(jù)時(shí),將其加載到內(nèi)存中必然會(huì)導(dǎo)致內(nèi)存溢出。在一些數(shù)據(jù)處理中,我們要處理海量數(shù)據(jù)。在數(shù)據(jù)處理中,我們常用的手段有分解、壓縮、并行、臨時(shí)文件等等。比如我們想把數(shù)據(jù)庫(kù)(不管是什么數(shù)據(jù)庫(kù))的數(shù)據(jù)導(dǎo)出到一個(gè)文件中,這個(gè)文件通常是Excel或者文本格式的CSV對(duì)于Excel來(lái)說(shuō),對(duì)于POI和JXL的接口,你往往沒(méi)有辦法控制內(nèi)存什么時(shí)候?qū)懙酱疟P(pán)上,這很惡心,而且這些API在內(nèi)存中構(gòu)造的對(duì)象大小會(huì)比數(shù)據(jù)原來(lái)的大小大很多倍,所以你要拆分Excel。好在POI開(kāi)始意識(shí)到這個(gè)問(wèn)題,在3.8.4版本之后開(kāi)始提供緩存線的數(shù)量。提供了SXSSFWorkbook的接口,可以設(shè)置內(nèi)存中的行數(shù),但是很遺憾,當(dāng)你超過(guò)這個(gè)數(shù)的時(shí)候,它會(huì)在你每增加一行的時(shí)候,把相對(duì)行數(shù)之前的那一行寫(xiě)到磁盤(pán)(如果你設(shè)置了2000行,當(dāng)你寫(xiě)第20001行的時(shí)候,他會(huì)把第一行寫(xiě)到磁盤(pán))。其實(shí)這個(gè)時(shí)候他會(huì)保存臨時(shí)文件以免消耗內(nèi)存,但是你會(huì)發(fā)現(xiàn)
5、學(xué) 數(shù)據(jù)庫(kù)以后可以做什么?是那個(gè)只會(huì)寫(xiě)代碼的碼農(nóng);學(xué)數(shù)據(jù)庫(kù)學(xué)得好,基本可以謀生;在此基礎(chǔ)上,學(xué)好操作系統(tǒng)和計(jì)算機(jī)網(wǎng)絡(luò),你就能成為一名優(yōu)秀的程序員。如果能把離散數(shù)學(xué)、數(shù)字電路、架構(gòu)、數(shù)據(jù)結(jié)構(gòu)/算法、編譯原理做透,再加上豐富的實(shí)踐經(jīng)驗(yàn)和特定領(lǐng)域的知識(shí),也算是一個(gè)優(yōu)秀的工程師。電腦其實(shí)就是存儲(chǔ)/IO/CPU三塊;而計(jì)算就是兩件事:數(shù)據(jù)和算法(狀態(tài)和傳遞函數(shù))。
從最抽象的意義上來(lái)說(shuō),這些應(yīng)用程序所做的就是取數(shù)據(jù)進(jìn)來(lái),存儲(chǔ)在數(shù)據(jù)庫(kù),需要的時(shí)候再取出來(lái)。抽象是對(duì)抗復(fù)雜性的最強(qiáng)武器。操作系統(tǒng)提供存儲(chǔ)的基本抽象:內(nèi)存尋址空間和磁盤(pán)邏輯塊號(hào)。在此基礎(chǔ)上,文件系統(tǒng)提供了從文件名到地址空間的KV存儲(chǔ)抽象。另一方面,數(shù)據(jù)庫(kù)提供了應(yīng)用程序一般存儲(chǔ)要求的高級(jí)抽象?;ヂ?lián)網(wǎng)應(yīng)用多為數(shù)據(jù)密集型應(yīng)用。對(duì)于真實(shí)世界的數(shù)據(jù)密集型應(yīng)用程序,除非你準(zhǔn)備從基本組件的輪子開(kāi)始構(gòu)建,否則沒(méi)有太多機(jī)會(huì)擺弄花哨的數(shù)據(jù)結(jié)構(gòu)和算法。
6、為什么要學(xué) 數(shù)據(jù)庫(kù)?為什么學(xué)習(xí)數(shù)據(jù)庫(kù)?因?yàn)樗匾粋€(gè)沒(méi)有數(shù)據(jù)庫(kù)的系統(tǒng)是死系統(tǒng),只有有數(shù)據(jù)庫(kù)才是活的~當(dāng)然如果你只是想做一個(gè)靜態(tài)的網(wǎng)頁(yè)數(shù)據(jù)庫(kù)也沒(méi)用,但是現(xiàn)在網(wǎng)絡(luò)提倡的理念是互動(dòng)的~大家都需要交流,那么這些交流的信息呢?使用數(shù)據(jù)庫(kù)儲(chǔ)存貝類。什么時(shí)候需要使用數(shù)據(jù)庫(kù)?當(dāng)你需要存儲(chǔ)信息的時(shí)候,比如動(dòng)態(tài)的網(wǎng)站、門(mén)戶網(wǎng)站,它們的一些信息是動(dòng)態(tài)的,那么這個(gè)時(shí)候就用數(shù)據(jù)庫(kù)了。什么是數(shù)據(jù)庫(kù)?
為什么數(shù)據(jù)庫(kù)在網(wǎng)絡(luò)時(shí)代更重要?這個(gè)問(wèn)題比較容易,因?yàn)榫W(wǎng)絡(luò)提倡互動(dòng),所以你必須用數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)互動(dòng)?,F(xiàn)在網(wǎng)絡(luò)在向開(kāi)放互動(dòng)的方向發(fā)展,不會(huì)再是站長(zhǎng)說(shuō)了算,網(wǎng)絡(luò)被改造成了一個(gè)交流平臺(tái),大家可以對(duì)他進(jìn)行評(píng)判,也只能在這個(gè)平臺(tái)上交流。那你想交流什么呢?如果交換大量信息呢?很簡(jiǎn)單,用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)。