Vert.x裡面那些b格很高的玩意

Vert.x有一點好,就是Vert.x的整個項目組,將目標和眼光放在了將來,你在這個項目中,總是能看到將來可能會流行的各種軟體產品,效率都是剛剛的不說,而且是一般造化不深的程序猿是搞不定的,舉個例子,如果你只是想找一個會tomcat和mysql在windows上開發的java程序猿,很容易,市場上到處都是,乃至過時的spring,hibernate之類的也是如此,web端node.js之類的,但是這些程序猿一般都只會死套框架,對一些原理基本上是不懂,甚至說出了非同步的動態類型語言(js)比靜態類型語言(java)要快的笑話,其實對於一個程序猿來說,不僅僅要學會使用各種api,更重要的是,不滿足於點滑鼠,所以喜歡用windows開發的程序猿,不是一個好的程序猿,矽谷程序猿已經全面轉向macosx了,因為mac在命令行上跟linux有著諸多的共同點,都是unix-like系統嘛,滿足於點滑鼠,說明這個程序猿沒有進取之心,甚至缺乏基本的審美能力,這樣的生活態度,無論做什麼都不會做得有多好,你可以觀察一下生活中的這種人,都是差不多就行了,對於工作,都是敷衍了事,從本質上說他/她並不熱愛它的工作,只是混口飯吃而已,其次,不能滿足於死套框架,會用api就行了,必需要學會原理,學會分析,比如hashmap的get方法的複雜度,這點在大數據時代顯得尤為重要,因為一點點演算法複雜度的改良,都可以讓效率大幅提升,差多少呢?舉個例子,我曾經用hashmap處理幾個g的數據,用了20s,同學用了arraylist,結果跑了12個小時,差距甚大,基於這兩點,就可以理解為什麼國外程序猿可以做一輩子,而國內程序猿,基本上過了30多歲,市場競爭力就急劇下滑,找個會套api的程序猿有什麼難的呢?不需要科班出身都能做。

扯遠,說一下Vert.x裡面那些b格很高的工具,Vert.x本身不用說了,在web端,有一個非常重要的web模版,叫做thymeleaf(讀作time leaf),這個可以說是最好的模版了,其實web的動態網頁本質上就是一堆模版,無論是jsp還是freemarker(struts),都是模版工具,但是這些模版對於html有明顯的侵入,比如jsp的<%%>,也就是會修改html的語法,導致一般美工用瀏覽器打開html的時候,會變形,所以一般都是讓美工先做完,然後程序猿再上,無法並行,這樣做效率就很低,尤其是如果要改的話,麻煩就來了。那怎麼辦呢?thymeleaf說,瀏覽器對於它不認識的標籤,會自動忽略,比如<a href="1.html" th:href="2.html">,這裡面th:開頭的部分,瀏覽器不認識,所以自動忽略,所以thymeleaf說,那就在原來的基礎上增加tag,尤其是瀏覽器不認識的tags吧,然後在運行時,自動替換掉原先的tag,比如<a href="1.html" th:href="2.html">,在運行時自動替換1.html為2.html,以這種非侵入的方式來保證美工人員和開發人員可以同時進行,同時,th:的語法也非常便於記憶,你想替換掉哪個標籤,在那個標籤前面加上th:前綴就好了,以這種方式分離了美工和程序猿的工作,保證兩者可以並行,以提升開發效率,當然vert.x也支持其他大路貨,比如freemarker。

另外一個b格很高的工具是對於hikari(日語光的意思)連接池的支持,傳統的c3p0資料庫連接池運行極為緩慢,簡直無法忍受,tomcat自帶的連接池效率也差不多,都很慢,為此人們搞出了bonecp,以增加效率,但是bonecp長時間不更新,同時作者也開始承認hirakicp才是其替代品,甚至鼓勵用戶轉向hikari,所以vert.x也增加了對於hikari的支持,但是目前支持的版本呢,跟c3p0連接池的參數是不一樣的,已經提交一個issue給Vert.x項目組,他們回應已經在修改了,估計下一個版本會更新,到時候看看文檔就好了,hikari連接池可以說是目前為止最快的連接池,overhead基本上為0,可能跟日本人的民族性有關,在hikari的github界面上,有不少benchmark,可以過去觀摩一下,當然有連接池還不夠,我們還需要有b格比較高的database來配合,那這個db呢,我選擇了postgresql,可能有讀者會問,為什麼不選擇mysql呢?因為mysql是大路貨,b格太低,笑,其實pg在性能上是超過mysql的,而且增加了對於json等的支持,背後是大學這種公益組織,所以不像mongodb一樣存在商業陷阱,也不像mysql,是oracle家的棄子,誰都能看出來oracle欲殺之而後快,只是迫於輿論壓力,不敢那麼明目張胆罷了,而且pg自帶分詞,可以省了solr這一步,不過這裡說一下,對於中文這種維度比較高的語言,分詞查詢的效果並不明顯,遠不如英文法語這種分詞管用。

不知不覺寫了這麼多,差不多是時候收尾了,因為Vert.x連接的工具代表著業界最新趨勢和潮流,除了連接池和html模版以外,還有其他很多部件,都是這些年新冒出來的,如果有志成為構架師,而不僅僅是一般程序猿的話,應該不滿足於用那些大路貨,而應該對於新的趨勢產品有所了解,Vert.x是一個很好的入口,就看Vert.x在連接什麼,你就可以猜出,什麼東西在矽谷is prevailing,當然Vert.x裡面有幾個red hat的私貨,比如Ceylon,這個忽略就好了。

題外:你為什麼用mac啊?因為b格高,裝b啊,一個b格低的程序猿是干不好程序猿這一行的

推薦閱讀:

追求客戶端和伺服器編程語言的一致有多大的意義?
windows10下用gem安裝jekyll失敗,怎麼辦?(已解決)
brew升級後ruby報錯怎麼辦?
如何快速學習 Ruby on Rails?
使用 Visual Studio 開發的情況下 C# 的編程效率能否和 Python、Ruby 媲美?

TAG:PostgreSQL | Groovy | Ruby |