$$ 01 $$
喜鵲山,喜鵲廟。
“來來來,常常我做的曲奇餅!”小皮端著一盤曲奇餅,擺放在了桌子上。
“小皮啊,你成天不知修煉,凈搞這些有的沒的。”小艾拿起一塊曲奇餅,品嘗起來。
“姐姐啊,你這每天辛苦修煉,也沒見有什么進(jìn)步呀……”
“冰凍三尺,非一日之寒,懂不懂……至少我每天是在進(jìn)步的……”
“哈哈哈哈,不開玩笑了,來,小飛也嘗嘗?!?p> 小飛只是一直普通的喜鵲,自然不能幻化人形。于是她站在盤子旁邊,叼起一塊曲奇,慢慢地啄食。
“小皮姐姐,這個(gè)曲奇餅確實(shí)太美味了!”小飛夸贊道。
三位在一起,吃得其樂融融。
·
“當(dāng)當(dāng)當(dāng)!”一陣敲門聲響起。
小皮說:“不用想,一定是牛郎?!苯又暗剑骸罢?qǐng)進(jìn)!”
“嘎吱——”門推開了,果然是牛郎:“兩位仙子下午好!”
“來,先嘗嘗這曲奇餅吧,小皮的手藝,可是不錯(cuò)呢!”小艾對(duì)牛郎說。
·
牛郎來到桌前,入座。正要拿起曲奇,看到了桌上的另一只喜鵲,便問道:“這位是?”
小艾介紹道:“這是小飛。不過小飛不是神仙,不能幻化人形。”接著小艾又對(duì)小飛說:
“這是牛郎,也是喜鵲通信計(jì)劃的總設(shè)計(jì)師?!?p> 小飛伸出翅膀:“久仰牛郎先生大名!”牛郎也伸出手輕輕握了握小飛的翅膀:“哪里哪里。很高興認(rèn)識(shí)你?!?p> ·
寒暄完畢,牛郎拿起一塊曲奇餅品嘗:“色香味俱全!高手!”
小皮笑道:“別拍馬屁了,你這人無事不登三寶殿,趕緊說正事吧!”
·
----
$$ 02 $$
牛郎整理了一下思緒,說:“你們不覺得,有時(shí)候,聊天聊到一半,然后一被打斷,就不知道剛才聊到哪里了嗎?”
小皮說:“好像沒覺得呀……長這么大,我覺得聊天一直挺正常的,還不至于忘記聊到哪里了吧?”
牛郎說:“那是你聊天的場景過于簡單。每次只和一個(gè)對(duì)象聊天,或者一群人只聊一個(gè)話題,自然不會(huì)有問題。”
“問題在于,如果你同時(shí)與多個(gè)人聊不同的內(nèi)容呢?”
“比如,你可以和小飛聊她的事情,和小艾聊修煉的事情,然后和我聊通信的事情?!?p> “我敢說,不出幾句話,你肯定就聊亂了?!?p> ·
小皮皺了皺眉頭:“怎么可能有這樣的場景……這樣的聊天,明顯是腦子有問題吧……”
牛郎說:“那咱們換個(gè)場景。作為神仙,每天來求取幫助的人或者喜鵲,必然不少吧?”
“那你是怎樣保證人和事情對(duì)應(yīng)起來的呢?”
小皮說:“好像沒人來廟里求神仙呀……”
牛郎有些無語:“你們這神仙,也太悠閑了吧……”
·
小艾說:“我聽說在女媧廟中,會(huì)發(fā)一張?jiān)S愿符給香客,如果后來愿望達(dá)成,那么要拿著這張?jiān)S愿符去還愿?!?p> “那你們想過嗎,為什么需要許愿符呢?”牛郎問。
小艾說:“不知道。咱們廟里人少,小事我順手就給辦了,不合理的活辦不到的當(dāng)場就回絕了,所以沒搞那么麻煩?!?p> 牛郎說:“那我來分享一下我的看法吧。”
·
----
$$ 03 $$
牛郎說:“假如今天有一千位香客來上香許愿。你平均處理一位香客的愿望,要多長時(shí)間呢?包括拒絕的?!?p> 小艾說:“一分鐘吧?!?p> 牛郎說:“那么,一千分鐘約是十六小時(shí),這可是相當(dāng)于每天要加班一天啊?!?p> “假如每個(gè)香客,都把愿望寫到許愿符上,你要處理完一千張?jiān)S愿符,需要多長時(shí)間呢?”
·
小艾想了想,說:“三分鐘吧。你可以認(rèn)為神仙的一個(gè)工作周期大約是一分鐘?!?p> “批量讀取許愿符需要一個(gè)工作周期,篩選出要實(shí)現(xiàn)要拒絕的愿望需要一個(gè)工作周期。”
“實(shí)現(xiàn)每個(gè)愿望都需要一個(gè)工作周期,但是,這里可以并行,比如同時(shí)去實(shí)現(xiàn)刪選出的五百個(gè)愿望?!?p> ·
牛郎解釋說:“這就是許愿符的第一個(gè)作用,將串行事務(wù)并行化,從而提高效率?!?p> ·
“接著,咱們來看下一個(gè)問題:如何將每一個(gè)愿望,與許愿的香客對(duì)應(yīng)起來?!?p> “這也很簡單了吧,許愿符一式兩份,只要將自己手上的符與香客手上的符做對(duì)比,一致即可?!?p> “這里有一個(gè)點(diǎn),很有趣。許愿的人越來越多,一年之后,你手上的許愿符可能達(dá)到幾萬張,如何在幾萬張?jiān)S愿符中快速匹配呢?”
小艾說:“一個(gè)工作周期,我挨著看一遍就找到了?!?p> ·
牛郎說:“太慢了。你知道許愿符是有編號(hào)的吧?為了解釋方便,咱們假定有100張符,現(xiàn)在香客手里拿的是80號(hào)?!?p> “咱們先把手中的100張符按順序排好。這個(gè)事情是一勞永逸的?!?p> “80比50大,所以一分為二,一定在下面的那一摞。”
“80比75大,所以把下面那一摞在一分為二,80還是在一摞?!?p> “以此類推,每次一分為二,確定80在上面還是下面。在第5次時(shí),就可以找到80?!?p> “100小于2的7次方,即7次以內(nèi),可以找到任何一張符。我稱之為‘二分查找法’?!?p> “而你之前的找法,可能平均要50次左右了?!?p> ·
“咱們拓展一下,如果有十億張符,十億大約是2的30次方左右,也就是30次之內(nèi),一定可以找到結(jié)果?!?p> 小艾和小皮聽了,連連拍手:“原來可以這樣!是我們孤陋寡聞了!”
·
----
$$ 04 $$
“好了,咱們有點(diǎn)跑題了?!迸@烧f,“我剛來時(shí)提到的問題,咱們要解決的是,聊天的話題匹配問題。”
“最笨的辦法,是讓每個(gè)人說話前,先說一下,自己上次跟你聊了什么、聊到哪里了?!?p> “不過這樣顯然不好?!?p> ·
“你可以記下每個(gè)人的名字,然后記錄跟這個(gè)人的聊天內(nèi)容、聊到了什么地方?!?p> “這是個(gè)好辦法,但是,一個(gè)人如果想跟你聊了多個(gè)話題,那么你的記錄就會(huì)很復(fù)雜。”
·
“所以,最好的方法,是為每一個(gè)話題,提供一個(gè)唯一的標(biāo)識(shí)?!?p> “比如,今天這次會(huì)話,聊得是魔法。臨走時(shí),你可以拿起一塊曲奇,掰一半給他,讓他下次帶著這塊曲奇過來?!?p> “你拿著另一半曲奇,記錄下對(duì)應(yīng)的聊天內(nèi)容、聊天的進(jìn)度?!?p> “下次有人來,你只要找到與之匹配的曲奇餅,就知道他要聊什么、上次聊到哪里了。”
“聊天結(jié)束,你可以回收這塊曲奇,或者為了某個(gè)話題一直聊下去,頒發(fā)一塊永久曲奇?!?p> ·
“這里,曲奇與許愿符,本質(zhì)上是類似的,都是一個(gè)唯一標(biāo)識(shí)的作用?!?p> 小皮問到:“原理聽明白了,那具體你想做什么?”
牛郎說:“哈哈,沒什么,就是之后的通行中,我可能會(huì)攜帶這種類似于曲奇餅的特殊標(biāo)識(shí)。”
“目前不需要喜鵲特別做什么,所以我只是提前過來告知下?!?p> ·
“小事,沒問題。來來來,咱們繼續(xù)吃這真正的曲奇吧!”
三人與小飛一起,共食曲奇,暢快聊天。