2006-03-19
一个DoubleNode的爱情
转自http://spaces.msn.com/guoanjie/
一个DoubleNode的爱情 – 纪CS 134 Assignment 5
他是一个DoubleNode.
他和一个DLLQueue一同生活在一片内存的堆栈里. DLLQueue在他出现很久以前就住在这段堆栈里, 少说也有1毫秒了吧. 那时偌大的堆栈竟然只有DLLQueue孤身一人, 也难怪他整日无所事事搜寻伙伴, 甚至有时极目远眺512MB浩瀚的内存, 试图找到一些乐趣. DoubleNode来时DLLQueue大概兴奋坏了吧, 匆匆忙忙地在堆栈里为他分配了一片空间, 努力把他安置得舒适, 还把自己唯一的两样家产 – head和tail reference – 都慷慨地送给了他. DoubleNode受宠若惊, 对这位长辈心存感激, 无话不说. DLLQueue也十分关心DoubleNode, 时常用peek()领着他出门玩耍.
可是偶尔DoubleNode不免感到空虚和孤寂. DLLQueue知识渊博, 但毕竟年事已高, 需要多多休息. 没有人陪伴的时候, DoubleNode便只好瞥着自己空空的prev和next哀叹. "没关系, 我会为你找到一个同龄伙伴的." DLLQueue许诺到. DoubleNode默默点点头, 微笑, 企盼.
她终于来了, DLLQueue用enqueue()带来的另一个DoubleNode. 第一眼见到她, 他便被那沉鱼落雁的微笑俘虏了, 再无法自拔. 他祈祷着, 感激着, 感激100微秒孤寂漫长的等待终将换来自己的幸福. 她也不时羞涩地看他, 在心里默默笑他按捺不住兴奋的神态. 他们相爱了. 她setPrev(他), 伸过手来轻轻扯住他的衣裾, 撒娇般地摇曳着. DLLQueue欣慰地笑了, 俯在他耳边轻语了几句, 让他也setNext(她), 温柔地搂住她. “你们已经在一起了, 你要和她分享些什么呢?” DLLQueue微笑到. DoubleNode会意地点点头, 把tail reference送给了她. 他和她沉浸在甜蜜的海洋中.
就这样, 他拉着她, 在DLLQueue为他们营造的温馨的家中. 他依然时常跟随DLLQueue的peek()出门, 但都会迫不及待地赶回来, 和她讲述外面的大千世界; 而她只是默默笑着, 倾听着, 在家中打理着一切. DLLQueue从不让她接触peek(), 但她没有一丝怨言, 在她心里, 只要一直这样听他讲着, 就足够了. 而他, 更是希望这份幸福能够无限期地延续下去, 超过1秒, 10 秒, 甚至1分钟, 超越一切variable曾经经历的时限.
然而, 风平浪静的日子并没能像童话里那样持续到永远. 仅仅50微秒, 那个他出现了, 那个newNode. 起初他并没有在意这个新来的竞争者, 毕竟自己和她在一起已经那么久了, 还有什么好担心的呢? 不料newNode在创生时就已setPrev(她), 在他全然不知的情况下搂住了她的纤腰. 他惊惶了. 他试图用getNext()来挽回她, 甚至强迫她离开那个第三者, 但一切都无济于事. enqueue()已经抢先一步让她setNext(newNode), 他们之间已形成了新的结合. 她甚至把他赠送的tail reference也给了那个入侵者.
他手足无措了, 只好求助于DLLQueue.
“对不起, 我是Queue, 必须遵守FIFO (first-in first-out)的规则, 假如你们之中真的必须有一个要离开的话, 那只能是你.”
他心碎了. 他就要再次离开了, 只不过这次来迎接他的不再是友好的peek(), 而是dequeue(). dequeue()一来就野蛮地扯住了他的灵魂 – item, 强迫他离开她. “她早已不再爱你了, 何苦这样勉强自己呢? 还是随我离开吧.” 他哭泣着, 恳求着, 甚至把自己仅剩的head reference也交给她, 试图赢得她的回心转意. 但一切都无济于事, 她收下了head reference, 非但没有改变主意, 甚至主动setPrev(null), 松开了那只扯着他衣角的手.
他真的绝望了. 他的身体开始瓦解, 气力一点点地减弱. 尽管仍竭尽全力拉着她, 但他心里已经很清楚, 自己的终结不远了. 这时已再没有任何reference保护着他, 不久Java Garbage Collector一来, 他就要坠入地域的深渊了. Java Garbage Collector终于还是来了. 他终于看透了这一切, 哀嚅了一声, 用尽最后一丝力量把魂魄item挣脱. 泪涌了出来, 滴在已死的躯壳上, 浸湿了全身, 和Java Garbage Collector一同侵蚀着. 那肉体开始幻化, 消逝, 一点点变成混沌的无意义的二进制码. 还有那曾倔强地拉着她的next.
他终于平静了下来. 已经没有任何希望了. 或许有一天他会再次被enqueue(), 获得新的躯壳, 再次进入DLLQueue, 默默地和她生活在同一个屋檐下, 但那已不再一样了. newNode在她死前是不会离开的, 而这残忍的隔阂也许会令他比死更难过. 也许不久她也会被dequeue(), 然后我们的灵魂一同再次获得新生呢? 他思量着. 也许, 也许永远不.
一切结束了. 这就是一个DoubleNode的一生, 短暂而又永恒的一生.
凌 于2006.02.23午
