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