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