新聞中心
Scala代碼實(shí)例之Kestrel系列到了本篇就基本結(jié)束了,***再總結(jié)一下。

我們一直強(qiáng)調(diào)成都網(wǎng)站建設(shè)、成都網(wǎng)站制作對于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對待,選擇一個安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)站設(shè)計公司不一定是大公司,成都創(chuàng)新互聯(lián)作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。
代碼讀到這里,基本上已經(jīng)把核心部分的代碼都已經(jīng)讀完了。只剩下一個KestrelHandler.scala,我們就簡單地說一說。
如果對Apache Mina的API有一個簡單的了解之后,閱讀KestrelHandler.scala已經(jīng)不會有什么問題。KestrelHandler是當(dāng)Mina獲得一個新的鏈接請求之后創(chuàng)建出來的對象,對象的主流程就是一個act。通過 react 的機(jī)制來處理所有往來的信息,當(dāng)然除了異常處理之外,只有MinaMessage.MessageReceive(msg)是會調(diào)用到PersistentQueue的一些操作。具體的函數(shù)就是handle,這里用到了一個叫做asInstanceOf的方法,這是Scala最基礎(chǔ)類的一個方法,用途就是強(qiáng)制類型轉(zhuǎn)換,在做與Java接口的時候,可能會經(jīng)常遇到它。
handle處理報文的格式,兼容memcached的協(xié)議,也沒有太多需要解釋的地方。
總結(jié)一下:
讀完 Kestrel 之后,給我的感覺就是,Scala的語法非常輕盈,跟六脈神劍+凌波微步似的,有的時候還真抓不住。Scala的語法和結(jié)構(gòu)相當(dāng)靈活,比如有些地方需要嚴(yán)格地寫,會有很多的 () 和 . ,但是簡化的寫法,就用空格隔開了。另外Scala也沿襲了Ruby的語法特點(diǎn),不需要每句話的***都要;,直接用回車對語法進(jìn)行判斷,這些優(yōu)化讓程序看起來更像是一些自然語言,或者——呃——更加智能。
由于Scala弱化了變量類型,同時還強(qiáng)化了類的定義,所有變量都是類,所有的方法也都是類,連消息傳遞中,也使用了case class這樣的特殊類,并且讓常見的單例模式,或者常用的需要重載的函數(shù),都由編譯器自動實(shí)現(xiàn),確實(shí)可以讓代碼大大的精簡,變得很輕盈。
這種語言的設(shè)置,經(jīng)過先輩語言,比如Lisp,Python證明,對于把Scala語言作為初學(xué)語言的人來說,幾乎是沒有門檻的,因?yàn)檫@無非是一套劍譜而已。而對于從C,Java這樣的語言轉(zhuǎn)過去的工程師來說,確實(shí)有點(diǎn)困難,因?yàn)榇驊T了橫拳的人,直接告訴他,虛空一指就能讓敵人動彈不得,用這樣的招式多半有點(diǎn)心虛,擔(dān)心這真氣不那么靠譜。而且有的時候,因?yàn)椴皇熘缸V,打出來的命中率也不高。所以如果可以的話,還是會堅持用自己習(xí)慣的語法來寫Scala。
寫慣Pascal的人,寫C,總用不習(xí)慣 a++這樣的語法一樣,寫出漂亮的Scala程序,還是需要慢慢地才會適應(yīng)過來。
關(guān)于Kestrel本身,就算是不學(xué)習(xí)Scala語言,它的一些設(shè)計方式也是非常值得學(xué)習(xí)的。比如說Journal.scala對文件緩存這個機(jī)制的處理方式,非常的巧妙。而為了提高每個鏈接的效率,而讓client等待一段時間,不是直接告訴client沒有新的消息,這樣的細(xì)節(jié)處理,會大大提高消息隊列整體的性能。非常值得學(xué)習(xí)。
畢竟它是用在Twitter上的一個核心消息隊列算法呀。
【相關(guān)閱讀】
- 從Java走進(jìn)Scala(Scala經(jīng)典讀物)
- A Scala Tutorial for Java programmers
- 專題:Scala編程語言
- 細(xì)說Kestrel.scala中的PersistentQueue
- Scala快速入門:從下載安裝到定義方法
本文標(biāo)題:Scala代碼實(shí)例之Kestrel:總結(jié)
地址分享:http://m.5511xx.com/article/cdhcedd.html


咨詢
建站咨詢
