一、為什么Impala要使用C++語(yǔ)言,而不是Java
1.其實(shí)Impala是:Java前端與C++處理后端 這種形式的。
2.我們知道:Java是不能夠直接在操作系統(tǒng)層面上運(yùn)行的,但是C++可以。這就導(dǎo)致了C++的性能比Java高那么一些,Impala如果是個(gè)追求性能的偏執(zhí)狂的話,它自然不會(huì)放過(guò)一丁點(diǎn)的優(yōu)化可能(其實(shí),如果它用Java實(shí)現(xiàn),也不是不行,畢竟現(xiàn)在Java 8的出現(xiàn),使得java與C++在性能上的差異進(jìn)一步縮小。你看,Presto不就是用Java實(shí)現(xiàn)的嗎,Presto與Impala比起來(lái)性能一點(diǎn)也不差!)。
3.會(huì)Java的人比會(huì)C++的人多很多,Impala既然付“失大眾取小眾”的代價(jià),也要堅(jiān)持性能至上的原則,想必他們對(duì)自己的產(chǎn)品還是很有自信的:就算我不親民,但因?yàn)槲业男阅苌系恼T惑,你還是回來(lái)用我~
4.也許是對(duì)未來(lái)的預(yù)期。多少年來(lái),對(duì)分布式系統(tǒng)來(lái)說(shuō),最大的瓶頸是IO(磁盤(pán)IO和網(wǎng)絡(luò)IO),而不是CPU。似乎隨著未來(lái)硬件技術(shù)的發(fā)展,IO將不再是分布式系統(tǒng)的主要瓶頸。這就使得CPU的計(jì)算能力將重新成為分布式系統(tǒng)的主要瓶頸,而兩者中,C++是更會(huì)利用CPU的那一個(gè),所以,在分布式領(lǐng)域,似乎未來(lái)在理論上是C++的天下······(這當(dāng)然是一派人的觀點(diǎn)。而我的觀點(diǎn)不是這樣的,我認(rèn)為未來(lái)的發(fā)展趨勢(shì)是機(jī)器要去遷就人,而不是人去遷就機(jī)器,要讓人放下簡(jiǎn)單易用多生態(tài)的Java,不是那么容易的)
延伸閱讀:
二、字符集(Character set)是什么
是多個(gè)字符(英文字符,漢字字符,或者其他國(guó)家語(yǔ)言字符)的集合,字符集種類(lèi)較多,每個(gè)字符集包含的字符個(gè)數(shù)不同。
特點(diǎn):
①字符編碼方式是用一個(gè)或多個(gè)字節(jié)表示字符集中的一個(gè)字符
②每種字符集都有自己特有的編碼方式,因此同一個(gè)字符,在不同字符集的編碼方式下,會(huì)產(chǎn)生不同的二進(jìn)制
常見(jiàn)字符集:
ASCII字符集:基于羅馬字母表的一套字符集,它采用1個(gè)字節(jié)的低7位表示字符,高位始終為0。
LATIN1字符集:相對(duì)于ASCII字符集做了擴(kuò)展,仍然使用一個(gè)字節(jié)表示字符,但啟用了高位,擴(kuò)展了字符集的表示范圍。
GBK字符集:支持中文,字符有一字節(jié)編碼和兩字節(jié)編碼方式。
UTF8字符集:Unicode字符集的一種,是計(jì)算機(jī)科學(xué)領(lǐng)域里的一項(xiàng)業(yè)界標(biāo)準(zhǔn),支持了所有國(guó)家的文字字符,utf8采用1-4個(gè)字節(jié)表示字符。