夜行记

了解王小波是从他的《黄金时代》,《一直特立独行的猪》开始,一位他是一个独立思考,自由的灵魂,语言有趣,放荡不羁,但是有有深刻的思考,心系广大人民群众。可能是想学习一下他的心态,语言,所以立下flag今年要看完他的《王小波全集》,当然也有契机,就是《蜗牛读书》上有他的书(不过,现在没有版权了,幸好有个bug,加在书架里的不会消失)。

我看了他的中篇小说,忘记有啥了,现在在看他的短篇小说,因为在看其他书,看的比较慢了。最见的感觉是我对他的印象在改变, 他写的一些小说,有些只是为了提供乐趣,没有什么道理,深刻的东西,可能这也是为什么王小波说他最喜欢《黄金时代》,因为它的内涵的确丰富。

我以前看书总想丛书中的到点什么道理,说来就是太功利,现在我知道,我想提高自己的阅读量,因为我相信阅读量提高了,有一天我的写作能力也会提高,哈哈。

昨天看了一篇,我对他评价极高,太有趣了,笑得肚子痛,不过也还是有点道理的。特分享在此,不过内容实在长,这里并不完整,若喜欢还是去看正版的好。

夜行记

玄宗在世最后几年,行路不太平。那年头出门在外的人无不在身上怀有兵刃。虽然如此,见到路边躺着喂乌鸦的死人,还是免不了害怕。一般人没有要紧的大事,谁也不出门,大路上因此空空荡荡。有一天,一个书生骑着骏马,押着车仗,在关中的大道上行走。那时候正值夏日,在马上极目四望,来路上没有行人,去路藏书网上也没有行人,田野上看不到农夫,只有远处地平线上空气翻滚,好像无色的火焰。车轮吱吱响,好像在脑子里碾过。书生在马背上颠簸,只觉得热汗淋漓,昏昏沉沉。旅行真是乏味的事,如果有个人聊聊就好了。书生不想和车夫谈话,因为他们言语粗鄙,也不想和轿车里的女人谈话,因为她们太蠢了。因此他就盼着遇上个行人,哪怕是游方的郎中,走方的小炉匠也好。可是从上午一直走到下午,谁也没遇上。直到夕阳西下,天气转凉时,才遇上一个和尚。

书生想:这和尚的耳朵不知是怎么长的,弹丸飞过是什么声音,屎克螂飞过是什么声音?他又觉得这和尚怪可怜的,嘴里谈着出神入化的武功,背后有人暗算,却都不知道。催命的小鬼儿擦耳根子过去,他还以为是屎克螂!让他想去吧,不值当为他说嘴就把他打死。两人又并肩而行,谈到各种武功,说到拳脚棍棒,和尚又有很多说法,就如骑射剑术,都是书生见所未见,闻所未闻,根本无法想象的事。而且他胖乎乎。傻呵呵,月光下一颗大秃头白森森、亮灼灼,让人看了一发忍不住要朝上面下手。

“上人,你可知如今路上不太平?现在山有山贼,水有水寇。有些贼杀了人往道边上一扔,那是积德的。有的贼杀法新奇,伤天害理。昨天我们过汉水,车夫见水色青青,就下去凫水。一个猛子扎下去,见到水底下一大群人,一个个翻着白眼儿,脚下坠着大铁球,鼻子嘴唇都被鱼啃了去,那模样真是吓死人!我还听说温州有个土贼专门要把人按在酱缸里淹99lib•net死,日后挖出来,腌得像酱黄瓜,浑身都是皱。还有人把活人挂到熏坊里熏死,尸首和腊肉一般无二,差点儿当猪卖了出去。现在的人哪,杀人都杀出幽默感来了!”

“相公,你的马瘸了,看看它是不是漏了蹄?”

虽然书生不信和尚的牛皮,他也怕和尚的本领。忽然天上飞过一片黑云,把月亮遮了个严丝合缝。周围伸手不见五指,两个人都勒马不行。和尚还在喋喋不休。书生拿出弓来,朝黑地里发声的地方打一串连环弹,这回就是神出鬼没的黄鼠狼,也逃不开黑暗中袭来的弹雨。最后一弹刚出手,书生就鼓掌大笑起来。

谁知那和尚吹得高兴,摇头晃脑,那一弹就从他耳边偏过去。书生一看没打中,不禁暗暗心惊。他的准头可以打中三十丈外一个小酒盅,如今打这么大一颗秃头,怎么会打不中?那和尚怎么早不晃头,晚不晃头,偏等他发弹时晃头?莫非这秃头不是吹牛,而是有些真实本领?书生收起弓,赶上去探探和尚的口风:

和尚骑着骡子,护送着一队车仗。轿车里传出女人的笑语,板车上满载箱笼。虽然书生盼望一个谈伴,这一位他可不喜欢。第一,和尚太无耻,居然和女人同行。第二,和尚太肥,连脑后都堆满了一颤一颤的肥肉。因为和尚不留头发,这一点看得十分清楚。等了一天,等来这么一个人,不是晦气么?等到彼此通过姓名,书生就出言相讥,存心要和尚难堪:

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

“依相公说,我们就住宿。”

于是这两人又在山路上同行,渐渐走到山顶上去。终于旭日东升,阳光普照,书生勒住马长出一口气说:

车夫听见马蹄响抬头一看,见到这一增一儒,吓得直翻白眼,这一夜他经过不少惊吓,吓得再不敢说话。和尚说:“相公,宝眷都在这里,我到家去吩咐酒宴,一会儿就回来接你。”

“大师要宿,我们便行。大师要行时,我们就宿。”

“大师,经过十年战乱,不仅是中原残破十室九空,而且人心不古世道浇漓。我听说有些尼姑招赘男人过活,还听说有些和尚和女人同居。生下一批小娃娃,弄得佛门清净地里晾满了尿布,真不成体统!”

于是这两人又在山路上同行,渐渐走到山顶上去。终于旭日东升,阳光普照,书生勒住马长出一口气说:

书生想:这不对。要是不迷路,早该走出山区。可是前面山势更险峻!何况车辆也不见了,这要不是走错路,除非我真的长了一脑子豆腐渣!他说:

虽然书生不信和尚的牛皮,他也怕和尚的本领。忽然天上飞过一片黑云,把月亮遮了个严丝合缝。周围伸手不见五指,两个人都勒马不行。和尚还在喋喋不休。书生拿出弓来,朝黑地里发声的地方打一串连环弹,这回就是神出鬼没的黄鼠狼,也逃不开黑暗中袭来的弹雨。最后一弹刚出手,书生就鼓掌大笑起来。

“依相公说,我们就住宿。”

“你这老贼秃!我不来杀你,已经是十分好了,你倒来取笑我,可是活得不耐烦了?”可是那和尚又说下去:

和尚虽然肥胖,但却一点也不喘,说起话来底气充足,声如驴鸣:“相公说的是!现在的僧寺尼庵,算什么佛门清静?那班小和尚看起女人来,直勾勾地目不转睛。老衲要出门云游,家眷放在寺里就不能放心,只得带了同行。这世道真没了体统!”

“相公,家眷已经还给你,你还跟着我待怎地!”

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

于是这两人又在山路上同行,渐渐走到山顶上去。终于旭日东升,阳光普照,书生勒住马长出一口气说:

“那就依相公说,我们再行一程!”

和尚也在想心事,他也勒住马,长出一口气说:“相公,我也想明白了。”

书生想:这和尚恁地没廉耻!我不要他同行。此时太阳已经落山,前面是个市镇。书生说:“大师要住宿吗?这里有好大客栈,正好住宿!”

书生到轿车前撩开帘子一看,老婆丫环在里面正在熟睡。这些人可享福啦,车一进山就睡着,到现在还没有醒。回头再看和尚,他已经去远了,书生又纵马追上去,这回和尚十分不耐烦。

“大师,经过十年战乱,不仅是中原残破十室九空,而且人心不古世道浇漓。我听说有些尼姑招赘男人过活,还听说有些和尚和女人同居。生下一批小娃娃,弄得佛门清净地里晾满了尿布,真不成体统!”

书生心里还在发痒,他真不乐意世界上有和尚这个人。如果世界上存在这和尚,就得相信跳蚤有户口本,人是豆腐做的。这些事一想痒得受不住,所以根本没法相信。但是同样没法相信的事儿已经发生了。今晚用弹子打斗大一个秃脑袋,三番五次打不中。他只顾想这些心事,忽听和尚说:

“大师,经过十年战乱,不仅是中原残破十室九空,而且人心不古世道浇漓。我听说有些尼姑招赘男人过活,还听说有些和尚和女人同居。生下一批小娃娃,弄得佛门清净地里晾满了尿布,真不成体统!”

“依相公说,我们就住宿。”

书生又偷偷落后,拿出弓来。他心里暗暗祷告说:“和尚和尚,你到阴间别怪我。不是我心狠,是你招得我忍不住,我这一弹就把你脑袋打开花,不痛不痒!让你猛一睁眼就换了世界,这也就对得起你啦!”祝祷完毕,他咬紧牙一弹朝和尚打去,这就如案头上砍西瓜,绝无砍不着的道理。

追了十里路,总算追上了和尚。书生长出一口气,两个人并缰行起来,他可没看见和尚瞪起三角眼,面上罩起了乌云。两人各自想心事,再也不交谈。

“大师宿下,我们乘晚凉再行一程。”

“大师,我们走迷了!”

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

“大师宿下,我们乘晚凉再行一程。”

玄宗在世最后几年,行路不太平。那年头出门在外的人无不在身上怀有兵刃。虽然如此,见到路边躺着喂乌鸦的死人,还是免不了害怕。一般人没有要紧的大事,谁也不出门,大路上因此空空荡荡。有一天,一个书生骑着骏马,押着车仗,在关中的大道上行走。那时候正值夏日,在马上极目四望,来路上没有行人,去路藏书网上也没有行人,田野上看不到农夫,只有远处地平线上空气翻滚,好像无色的火焰。车轮吱吱响,好像在脑子里碾过。书生在马背上颠簸,只觉得热汗淋漓,昏昏沉沉。旅行真是乏味的事,如果有个人聊聊就好了。书生不想和车夫谈话,因为他们言语粗鄙,也不想和轿车里的女人谈话,因为她们太蠢了。因此他就盼着遇上个行人,哪怕是游方的郎中,走方的小炉匠也好。可是从上午一直走到下午,谁也没遇上。直到夕阳西下,天气转凉时,才遇上一个和尚。

车夫听见马蹄响抬头一看,见到这一增一儒,吓得直翻白眼,这一夜他经过不少惊吓,吓得再不敢说话。和尚说:“相公,宝眷都在这里,我到家去吩咐酒宴,一会儿就回来接你。”

“大师要宿,我们便行。大师要行时,我们就宿。”

“大师,我们走迷了!”

“上人,可听见什么声音?”

“那就依相公说,我们再行一程!”

书生听了又好气又好笑,真想骂他一声。但是没有骂,只是想:和尚要同行,也由他。车马行过市集,走上山道,太阳已经落山,一轮满月升起来,又大又圆,又黄又荒唐。月下的景物也显得荒唐。山坡上一株枯树,好像是黑纸剪成。西边天上一抹微光中的云,好像是翻肚皮的死鱼。马蹄声在黑暗中响着,一声声都很清楚。和尚的大秃头白森森,看上去令人心中发痒。书生真想扑过去在上面咬一口。当然,这种事干不得。和尚要问:好好地走路,你啃我干什么?书生又想:捡块石头开了他的瓢儿也能止痒。这种事也干不得。和尚在喋喋不休,听了他的话,书生心里痒得更厉害。和尚在谈女人,谁能想象佛门子弟会说出这种话来?

书生忽然想到:和尚没说过跳蚤有户口本,也没说过人是豆腐做的。他只说能识别跳蚤的牝牡,云母银丝也能杀人。既然他没有这么说,我怎么会这么想:这件事细究起来可有趣啦!原来是我非要这么想,好有理由打死他。现在和尚打不死,我可怎么办好?相信跳蚤有户口本,还是相信自己一脑子豆腐渣?他只顾想心事,就没看到月儿西坠,东方破晓,林间展鸟瞅瞅,山谷里起了雾气。他也没看到这条路走也走不完,原来是和尚领着他在兜圈子。忽然和尚把他领进一个山凹,这里有一辆轿车,车夫在辕上打瞌睡。

书生听了这些话,把脸都憋紫了。他想:幸亏是在深山里说话,没人听见,否则有人听了去,一定要说这是两个牛皮精在比着吹牛皮。倘若如此,那可冤哉枉也!我那射雁、射雕、射雉、射雀,全是真事儿,不比这秃驴射苍蝇、射蚊子、射跳蚤,纯是信口胡吹。别的不要说,捉个跳蚤来,怎么分辨它的牝牡?除非跳蚤会说话,自称它是生某某或者妾某某。纵然如此,你还是不知道它是不是说了实话,因此你只能去查它的户籍——这又是糟糕,跳蚤的户口本人怎能看见?就算能看见;人也不识跳蚤文。所以只好再提一个跳蚤当翻译。你怎么能相信这样的翻译?跳蚤这种东西专吸人血,完全不可信。因此分辨跳蚤的牝壮,根本就不可能。和尚吹这样的牛皮,也不怕闪了舌头!想到这些事,书生心里更是奇痒难熬。他真想在和尚的大秃头上开两个黑窟窿,但是他又想,这种事儿可干不得。和尚的老婆在一边看见,难免要责怪于我。

书生想:这和尚的耳朵不知是怎么长的,弹丸飞过是什么声音,屎克螂飞过是什么声音?他又觉得这和尚怪可怜的,嘴里谈着出神入化的武功,背后有人暗算,却都不知道。催命的小鬼儿擦耳根子过去,他还以为是屎克螂!让他想去吧,不值当为他说嘴就把他打死。两人又并肩而行,谈到各种武功,说到拳脚棍棒,和尚又有很多说法,就如骑射剑术,都是书生见所未见,闻所未闻,根本无法想象的事。而且他胖乎乎。傻呵呵,月光下一颗大秃头白森森、亮灼灼,让人看了一发忍不住要朝上面下手。

“大师,经过十年战乱,不仅是中原残破十室九空,而且人心不古世道浇漓。我听说有些尼姑招赘男人过活,还听说有些和尚和女人同居。生下一批小娃娃,弄得佛门清净地里晾满了尿布,真不成体统!”

“大师要宿,我们便行。大师要行时,我们就宿。”

和尚说,谈女人无趣,不如来谈骑射。书生听了心里又发痒——出家人谈谈击鼓撞钟、敲木鱼念经也罢,他偏要谈跑马射箭!不过这是书生心爱的话题,虽然对着一个和尚,他也禁不住发言道:习射的人多数都以为骑烈马,挽强弓,用长箭,百步穿杨,这就是射得好啦。其实这样的射艺连品都没有。真正会射的人,把射箭当一种艺术来享受。三秋到湖沼中去射雁,拿拓木的长弓,巴蜀的长箭,乘桦木的轻舟,携善凫的黄犬,虽然是去射雁,但不是志在得雁,意在领略秋日的高天,天顶的劲风,满弓欲发时志在万里的一点情趣。隆冬到大漠上射雕,要用强劲的角弓、北地的鸣镝,乘口外的良马,携鲜卑家奴,体会怒马强弓射猛禽时一股冲天的怒意。春日到岭上射鸟雉,用白木的软弓,芦苇的轻箭,射来挥洒自如,不用一点力气,浑如吟诗作赋,体会春日远足的野趣。夏天在林间射鸟雀,用桑木的小弓小箭,带一个垂发的小童提盒相随。在林间射小鸟儿是一桩精细的工作,需要耳目并用,射时又要全神贯注,不得有丝毫的偏差,困倦时在林间小酌。这样射法才叫做射呢。

虽然书生不信和尚的牛皮,他也怕和尚的本领。忽然天上飞过一片黑云,把月亮遮了个严丝合缝。周围伸手不见五指,两个人都勒马不行。和尚还在喋喋不休。书生拿出弓来,朝黑地里发声的地方打一串连环弹,这回就是神出鬼没的黄鼠狼,也逃不开黑暗中袭来的弹雨。最后一弹刚出手,书生就鼓掌大笑起来。

“大师要宿,我们便行。大师要行时,我们就宿。”

“迷什么?没有迷!”

忽然和尚一声暴喝:“深山无人,相公这么一惊一乍,可是要吓死老僧?”书生大吃一惊,连忙把弓收起。过了一会,乌云过去,书生看到和尚安全无恙,两个人重新上路。

“相公,正好要说话,怎么撇了开?相公要宿,我们也宿,相公要行,我们也行!”

“相公,你的马瘸了,看看它是不是漏了蹄?”

书生听了这番话,心里又是一片麻痒。这贼秃吹得真是没谱了。试问云母极脆,何以为刀?银丝极柔,又何以为剑?倘若云母、银丝都杀得了人,用一根头发就能把人脑袋勒了去。试问人身子是豆腐做的吗?原来女蜗造人是这么一个过程:她老人家补天之余,在海边煮了一大锅豆浆,用海水一点,点出一锅豆腐来,这就是咱们的老祖宗。女娲娘娘不简单,一只锅里能煮出男豆腐和女豆腐,两块豆腐一就合,就生下一个小豆腐?真他妈岂有此理。玉皇大帝坐在九天之上,阎罗大帝坐在冥罗地府,主管人的福禄生死,原来是两家合资开了个豆腐坊。好,太好了!书生悄悄落到后面去,偷手取出弹弓,照和尚脑后一弹弹去。

“相公,家眷已经还给你,你还跟着我待怎地!”

和尚说,谈过了骑射,我们来谈剑术。这也是书生心爱的话题,所以他就抢先发言道:百炼的精钢,最后化为缠指之柔。他有柄这种钢打制的宝剑,薄如蝉翼,劈风无声。不用时,这剑可以束在腰里为带,用时拿在手里,剑刃摇曳不定,就如一道光华。挥起来如一匹白练,刺去时变幻不定。倘若此时此剑在我手里,我只消轻轻一挥,不知不觉之间上人的脑袋就滚到地上啃泥巴,那时您老人家只觉得天旋地转,脸皮在地上蹭得生痛,还想不到是自己的脑袋掉下地了呢。书生说完这些话纵声大笑,心里可有点不踏实。确实有这么一把剑,不过不全是他的。这是他家的传世之宝,他爸爸还没死,这剑不能说是他的。这回出山,身边也没有这柄剑,如若和尚要看,他又拿不出来,这就有吹牛皮之嫌。不过这不要紧,可以请和尚到家里去看。倘若他不肯去,非说书生是吹牛皮不可,正好借这个碴儿和他打一架,不敲出他一头青疙瘩不算完。

“相公,你的马瘸了,看看它是不是漏了蹄?”

书生听了又好气又好笑,真想骂他一声。但是没有骂,只是想:和尚要同行,也由他。车马行过市集,走上山道,太阳已经落山,一轮满月升起来,又大又圆,又黄又荒唐。月下的景物也显得荒唐。山坡上一株枯树,好像是黑纸剪成。西边天上一抹微光中的云,好像是翻肚皮的死鱼。马蹄声在黑暗中响着,一声声都很清楚。和尚的大秃头白森森,看上去令人心中发痒。书生真想扑过去在上面咬一口。当然,这种事干不得。和尚要问:好好地走路,你啃我干什么?书生又想:捡块石头开了他的瓢儿也能止痒。这种事也干不得。和尚在喋喋不休,听了他的话,书生心里痒得更厉害。和尚在谈女人,谁能想象佛门子弟会说出这种话来?

虽然书生不信和尚的牛皮,他也怕和尚的本领。忽然天上飞过一片黑云,把月亮遮了个严丝合缝。周围伸手不见五指,两个人都勒马不行。和尚还在喋喋不休。书生拿出弓来,朝黑地里发声的地方打一串连环弹,这回就是神出鬼没的黄鼠狼,也逃不开黑暗中袭来的弹雨。最后一弹刚出手,书生就鼓掌大笑起来。

书生说:‘大师,小生自幼习武,会些弹术剑法。别人说话不合我心意,我就把他脑袋打开花,叫他说不下去。现在我明白了,这种做法非常之不好。小时候下棋,每到要输时我就把刀拔出来往棋盘上一插,于是长胜不败,结果到现在还是一把屎棋。听人说99lib•net话也如此,倘若大师说得不对我胃口就把您打杀,怎能够增加见识。比方说,大师若说生姜是树生的果子,我只能说,您说得不对,却不能把大师打死。因为打不死时,我就太难堪了。大师现在活着站在我面前,难道我就因此相信生姜是树上生的?所以杀人不是好游戏,无论如何,不要杀人。”

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

谁知那和尚吹得高兴,摇头晃脑,那一弹就从他耳边偏过去。书生一看没打中,不禁暗暗心惊。他的准头可以打中三十丈外一个小酒盅,如今打这么大一颗秃头,怎么会打不中?那和尚怎么早不晃头,晚不晃头,偏等他发弹时晃头?莫非这秃头不是吹牛,而是有些真实本领?书生收起弓,赶上去探探和尚的口风:

书生发弹的时候,和尚刚好走到阴影里。转眼之间他又从阴影里走出来,闪光的秃头还是安然无恙。书生这一惊非同小可,因为他放这一弹时格外的小心手稳,绝无脱靶的可能。看来这和尚不是吹牛皮,而是真有本领。他把弓收起来,打马追上。去,心想不得了,和尚说的全是实话,射蚊子射跳蚤实有其事,云母刀、银丝剑也是真的。和尚确实是止咳丸,也确实有人认识跳蚤文。女蜗娘娘确实在海边点了一锅豆腐,药书上也确实写着秃和尚寒平。这都是从和尚不吹牛推出的必然结论!书生这么一想心里马上乱糟糟。抬头一看前面,书生又禁不住惊叫一声:

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

书生到轿车前撩开帘子一看,老婆丫环在里面正在熟睡。这些人可享福啦,车一进山就睡着,到现在还没有醒。回头再看和尚,他已经去远了,书生又纵马追上去,这回和尚十分不耐烦。

“那就依相公说,我们再行一程!”

书生又偷偷落后,拿出弓来。他心里暗暗祷告说:“和尚和尚,你到阴间别怪我。不是我心狠,是你招得我忍不住,我这一弹就把你脑袋打开花,不痛不痒!让你猛一睁眼就换了世界,这也就对得起你啦!”祝祷完毕,他咬紧牙一弹朝和尚打去,这就如案头上砍西瓜,绝无砍不着的道理。

和尚说,谈女人无趣,不如来谈骑射。书生听了心里又发痒——出家人谈谈击鼓撞钟、敲木鱼念经也罢,他偏要谈跑马射箭!不过这是书生心爱的话题,虽然对着一个和尚,他也禁不住发言道:习射的人多数都以为骑烈马,挽强弓,用长箭,百步穿杨,这就是射得好啦。其实这样的射艺连品都没有。真正会射的人,把射箭当一种艺术来享受。三秋到湖沼中去射雁,拿拓木的长弓,巴蜀的长箭,乘桦木的轻舟,携善凫的黄犬,虽然是去射雁,但不是志在得雁,意在领略秋日的高天,天顶的劲风,满弓欲发时志在万里的一点情趣。隆冬到大漠上射雕,要用强劲的角弓、北地的鸣镝,乘口外的良马,携鲜卑家奴,体会怒马强弓射猛禽时一股冲天的怒意。春日到岭上射鸟雉,用白木的软弓,芦苇的轻箭,射来挥洒自如,不用一点力气,浑如吟诗作赋,体会春日远足的野趣。夏天在林间射鸟雀,用桑木的小弓小箭,带一个垂发的小童提盒相随。在林间射小鸟儿是一桩精细的工作,需要耳目并用,射时又要全神贯注,不得有丝毫的偏差,困倦时在林间小酌。这样射法才叫做射呢。

此时的月亮比刚才又亮了些。书生心里在大笑,满山的玉树银花仿佛在他身边飞舞。心里想笑,嘴上却不能笑,这可不好受。他想:我要和这位秃大爷谈些悲哀的题目,免得他招得我要打他的秃脑壳。于是他说:

“大师,经过十年战乱,不仅是中原残破十室九空,而且人心不古世道浇漓。我听说有些尼姑招赘男人过活,还听说有些和尚和女人同居。生下一批小娃娃,弄得佛门清净地里晾满了尿布,真不成体统!”

“噢,一个大屎克螂飞过去,嗡的一声!”

于是这两人又在山路上同行,渐渐走到山顶上去。终于旭日东升,阳光普照,书生勒住马长出一口气说:

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

和尚说,看来相公对于射艺很有心得,可称是一位行家。不过在老僧看来,依照天时地利的不同,选择弓矢去射,不免沾上一点雕琢的痕迹。莫如就地取材信手拈来。比如老僧在静室里参禅,飞蝇扰人,就随手取绿豆为丸弹之,百不失一,这就略得射艺的意思。夏夜蚊声可厌,信手撅下竹帘一条,绷上头发以松针射之,只听嗡嗡声一一终止,这就算稍窥射艺之奥妙。跳蚤扰人时,老僧以席蔑为弓,以蚕丝为弦,用胡子茬把公跳蚤全部射杀,母跳蚤渴望爱情,就从静室里搬出去。贫僧的射法还不能说是精妙,射艺极善者以气息吹动豹尾上的秋毫,去射击阳光中飞舞的微尘,到了这一步,才能叫炉火纯青。

和尚虽然肥胖,但却一点也不喘,说起话来底气充足,声如驴鸣:“相公说的是!现在的僧寺尼庵,算什么佛门清静?那班小和尚看起女人来,直勾勾地目不转睛。老衲要出门云游,家眷放在寺里就不能放心,只得带了同行。这世道真没了体统!”

书生想:这和尚有痰气。和你说正经事儿,你只当是胡扯。看来有必要深谈下去,才能激发你的危机感。于是他说:“如今敢出门走路的人也都不简单。这年头儿,出远门儿就如爬刀山下火海,没个三头六臂谁敢出来?所以你看到个走乡的货郎,他可能在腰里挂着铁流星。看到个挑脚的力夫,他袖里可能有袖箭。就是个卖笑的娼妓,怀里还可能有短剑哪!人身上有了家伙,胆就粗,气就壮,在酒楼和陌生人饮酒,一语不合就互挥老拳,手上还戴着带刺的手扣子。在山道上与人争路,气不愤时就抡起檀木棍,打出脑子来就往山洞一扔。只要你敢用白眼瞪我,老子就用八斤重的铁蒺藜拽你,躲得过躲不过是你自己的事,所以如今走路可是要小心。说话要小心,做事也要小心。招得别人发了火,你的脑袋就不安稳。”

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

于是这两人又在山路上同行,渐渐走到山顶上去。终于旭日东升,阳光普照,书生勒住马长出一口气说:

“大师,经过十年战乱,不仅是中原残破十室九空,而且人心不古世道浇漓。我听说有些尼姑招赘男人过活,还听说有些和尚和女人同居。生下一批小娃娃,弄得佛门清净地里晾满了尿布,真不成体统!”

书生听了这些话,把脸都憋紫了。他想:幸亏是在深山里说话,没人听见,否则有人听了去,一定要说这是两个牛皮精在比着吹牛皮。倘若如此,那可冤哉枉也!我那射雁、射雕、射雉、射雀,全是真事儿,不比这秃驴射苍蝇、射蚊子、射跳蚤,纯是信口胡吹。别的不要说,捉个跳蚤来,怎么分辨它的牝牡?除非跳蚤会说话,自称它是生某某或者妾某某。纵然如此,你还是不知道它是不是说了实话,因此你只能去查它的户籍——这又是糟糕,跳蚤的户口本人怎能看见?就算能看见;人也不识跳蚤文。所以只好再提一个跳蚤当翻译。你怎么能相信这样的翻译?跳蚤这种东西专吸人血,完全不可信。因此分辨跳蚤的牝壮,根本就不可能。和尚吹这样的牛皮,也不怕闪了舌头!想到这些事,书生心里更是奇痒难熬。他真想在和尚的大秃头上开两个黑窟窿,但是他又想,这种事儿可干不得。和尚的老婆在一边看见,难免要责怪于我。

书生想,这更是岂有此理!谁要到你家去?我的家眷和行李怎么会到了你家?你请我到你家去做客,我答应了吗?这个秃驴我还是要打死他?女蜗娘娘点豆腐我死活也不信。

书生说:‘大师,小生自幼习武,会些弹术剑法。别人说话不合我心意,我就把他脑袋打开花,叫他说不下去。现在我明白了,这种做法非常之不好。小时候下棋,每到要输时我就把刀拔出来往棋盘上一插,于是长胜不败,结果到现在还是一把屎棋。听人说99lib•net话也如此,倘若大师说得不对我胃口就把您打杀,怎能够增加见识。比方说,大师若说生姜是树生的果子,我只能说,您说得不对,却不能把大师打死。因为打不死时,我就太难堪了。大师现在活着站在我面前,难道我就因此相信生姜是树上生的?所以杀人不是好游戏,无论如何,不要杀人。”

此时月亮已经升到中天,山里一片银色世界。坡上吹着轻轻的风,又干净,又明亮,好像瓦面上的琉璃。月光下满山的树叶都在闪亮,在某些地方晃动。在另一些地方不晃动。书生想,这真是个漂亮的世界。老天保佑,我可别干什么不雅的事情。等到心里的奇痒平息,他就随和尚走去,继续谈到很多事情。

“大师要宿,我们便行。大师要行时,我们就宿。”

书生到轿车前撩开帘子一看,老婆丫环在里面正在熟睡。这些人可享福啦,车一进山就睡着,到现在还没有醒。回头再看和尚,他已经去远了,书生又纵马追上去,这回和尚十分不耐烦。

书生抬头一看,发现已经走到深山里。和尚哈哈大笑,说走夜路有人谈话,真真是有趣。我们不如叫家眷车仗先行,自己在后面深谈。书生点点头,心里说:这样好多啦!我要是憋不住了,没人看见正好揍你。于是他们站在路边,让车辆到前面去。

书生想,这更是岂有此理!谁要到你家去?我的家眷和行李怎么会到了你家?你请我到你家去做客,我答应了吗?这个秃驴我还是要打死他?女蜗娘娘点豆腐我死活也不信。

书生想:这和尚的耳朵不知是怎么长的,弹丸飞过是什么声音,屎克螂飞过是什么声音?他又觉得这和尚怪可怜的,嘴里谈着出神入化的武功,背后有人暗算,却都不知道。催命的小鬼儿擦耳根子过去,他还以为是屎克螂!让他想去吧,不值当为他说嘴就把他打死。两人又并肩而行,谈到各种武功,说到拳脚棍棒,和尚又有很多说法,就如骑射剑术,都是书生见所未见,闻所未闻,根本无法想象的事。而且他胖乎乎。傻呵呵,月光下一颗大秃头白森森、亮灼灼,让人看了一发忍不住要朝上面下手。

这一僧一儒互诉心曲以后,就一起到和尚家里去。和尚要招待书生,把他当成最好的朋友。

和尚也在想心事,他也勒住马,长出一口气说:“相公,我也想明白了。”

书生到轿车前撩开帘子一看,老婆丫环在里面正在熟睡。这些人可享福啦,车一进山就睡着,到现在还没有醒。回头再看和尚,他已经去远了,书生又纵马追上去,这回和尚十分不耐烦。

此时月亮已经升到中天,山里一片银色世界。坡上吹着轻轻的风,又干净,又明亮,好像瓦面上的琉璃。月光下满山的树叶都在闪亮,在某些地方晃动。在另一些地方不晃动。书生想,这真是个漂亮的世界。老天保佑,我可别干什么不雅的事情。等到心里的奇痒平息,他就随和尚走去,继续谈到很多事情。

“大师,我们走迷了!”

“迷什么?没有迷!”

和尚说,看来相公对于射艺很有心得,可称是一位行家。不过在老僧看来,依照天时地利的不同,选择弓矢去射,不免沾上一点雕琢的痕迹。莫如就地取材信手拈来。比如老僧在静室里参禅,飞蝇扰人,就随手取绿豆为丸弹之,百不失一,这就略得射艺的意思。夏夜蚊声可厌,信手撅下竹帘一条,绷上头发以松针射之,只听嗡嗡声一一终止,这就算稍窥射艺之奥妙。跳蚤扰人时,老僧以席蔑为弓,以蚕丝为弦,用胡子茬把公跳蚤全部射杀,母跳蚤渴望爱情,就从静室里搬出去。贫僧的射法还不能说是精妙,射艺极善者以气息吹动豹尾上的秋毫,去射击阳光中飞舞的微尘,到了这一步,才能叫炉火纯青。

书生到轿车前撩开帘子一看,老婆丫环在里面正在熟睡。这些人可享福啦,车一进山就睡着,到现在还没有醒。回头再看和尚,他已经去远了,书生又纵马追上去,这回和尚十分不耐烦。

书生听了又好气又好笑,真想骂他一声。但是没有骂,只是想:和尚要同行,也由他。车马行过市集,走上山道,太阳已经落山,一轮满月升起来,又大又圆,又黄又荒唐。月下的景物也显得荒唐。山坡上一株枯树,好像是黑纸剪成。西边天上一抹微光中的云,好像是翻肚皮的死鱼。马蹄声在黑暗中响着,一声声都很清楚。和尚的大秃头白森森,看上去令人心中发痒。书生真想扑过去在上面咬一口。当然,这种事干不得。和尚要问:好好地走路,你啃我干什么?书生又想:捡块石头开了他的瓢儿也能止痒。这种事也干不得。和尚在喋喋不休,听了他的话,书生心里痒得更厉害。和尚在谈女人,谁能想象佛门子弟会说出这种话来?

和尚说,谈过了骑射,我们来谈剑术。这也是书生心爱的话题,所以他就抢先发言道:百炼的精钢,最后化为缠指之柔。他有柄这种钢打制的宝剑,薄如蝉翼,劈风无声。不用时,这剑可以束在腰里为带,用时拿在手里,剑刃摇曳不定,就如一道光华。挥起来如一匹白练,刺去时变幻不定。倘若此时此剑在我手里,我只消轻轻一挥,不知不觉之间上人的脑袋就滚到地上啃泥巴,那时您老人家只觉得天旋地转,脸皮在地上蹭得生痛,还想不到是自己的脑袋掉下地了呢。书生说完这些话纵声大笑,心里可有点不踏实。确实有这么一把剑,不过不全是他的。这是他家的传世之宝,他爸爸还没死,这剑不能说是他的。这回出山,身边也没有这柄剑,如若和尚要看,他又拿不出来,这就有吹牛皮之嫌。不过这不要紧,可以请和尚到家里去看。倘若他不肯去,非说书生是吹牛皮不可,正好借这个碴儿和他打一架,不敲出他一头青疙瘩不算完。

玄宗在世最后几年,行路不太平。那年头出门在外的人无不在身上怀有兵刃。虽然如此,见到路边躺着喂乌鸦的死人,还是免不了害怕。一般人没有要紧的大事,谁也不出门,大路上因此空空荡荡。有一天,一个书生骑着骏马,押着车仗,在关中的大道上行走。那时候正值夏日,在马上极目四望,来路上没有行人,去路藏书网上也没有行人,田野上看不到农夫,只有远处地平线上空气翻滚,好像无色的火焰。车轮吱吱响,好像在脑子里碾过。书生在马背上颠簸,只觉得热汗淋漓,昏昏沉沉。旅行真是乏味的事,如果有个人聊聊就好了。书生不想和车夫谈话,因为他们言语粗鄙,也不想和轿车里的女人谈话,因为她们太蠢了。因此他就盼着遇上个行人,哪怕是游方的郎中,走方的小炉匠也好。可是从上午一直走到下午,谁也没遇上。直到夕阳西下,天气转凉时,才遇上一个和尚。

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

书生到轿车前撩开帘子一看,老婆丫环在里面正在熟睡。这些人可享福啦,车一进山就睡着,到现在还没有醒。回头再看和尚,他已经去远了,书生又纵马追上去,这回和尚十分不耐烦。

“迷什么?没有迷!”

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

书生盘算了好多,可是和尚却不来质疑。他说像这样的剑只能说是凡品,虽然在凡品中又算是最上等。如果以剃刀在青竹面上剥下一缕竹皮,提在指间就是一柄好剑。拿它朝水上的蜉蝣一挥,那虫子犹不知死,还在飞。飞出一丈多远,忽然分成两半掉下来。倘若老僧手中有这么一柄剑,只消轻轻一挥、相公不知不觉之中就着了和尚的道儿。你还不知道,高高兴兴走回家去。到晚间更衣,要与夫人同入罗绍帐时,才发现已被老僧去了势。说完了和尚哈哈大笑,书生却气坏了,心说:

这一僧一儒互诉心曲以后,就一起到和尚家里去。和尚要招待书生,把他当成最好的朋友。

书生的弹弓铁胎裹漆,要是没学过射箭,任凭你有多大蛮力也拉不开。他的弹丸是安南铜铸成,拿在手里不小心掉下去,能把脚砸肿。这一弹要是打在和尚的脑袋上,势必贯脑而出。书生想到和尚正在夸夸其谈,冷不防嘴里钻出个大铜丸,势必要大吃一惊。要是弹丸从眼眶里钻出去,和尚觉得脸上掉下东西,随手一接,接到自己的眼珠子。这种事儿只要没落到自己身上,谁都觉得有趣。书生觉得自己有幽默感,就大笑起来。

“上人,你可知如今路上不太平?现在山有山贼,水有水寇。有些贼杀了人往道边上一扔,那是积德的。有的贼杀法新奇,伤天害理。昨天我们过汉水,车夫见水色青青,就下去凫水。一个猛子扎下去,见到水底下一大群人,一个个翻着白眼儿,脚下坠着大铁球,鼻子嘴唇都被鱼啃了去,那模样真是吓死人!我还听说温州有个土贼专门要把人按在酱缸里淹99lib•net死,日后挖出来,腌得像酱黄瓜,浑身都是皱。还有人把活人挂到熏坊里熏死,尸首和腊肉一般无二,差点儿当猪卖了出去。现在的人哪,杀人都杀出幽默感来了!”

“你这老贼秃!我不来杀你,已经是十分好了,你倒来取笑我,可是活得不耐烦了?”可是那和尚又说下去:

书生说:“大师,我们还九网是同行。书生在想些心事,想明了要向大师一诉心曲。”

“你这老贼秃!我不来杀你,已经是十分好了,你倒来取笑我,可是活得不耐烦了?”可是那和尚又说下去:

书生忽然想到:和尚没说过跳蚤有户口本,也没说过人是豆腐做的。他只说能识别跳蚤的牝牡,云母银丝也能杀人。既然他没有这么说,我怎么会这么想:这件事细究起来可有趣啦!原来是我非要这么想,好有理由打死他。现在和尚打不死,我可怎么办好?相信跳蚤有户口本,还是相信自己一脑子豆腐渣?他只顾想心事,就没看到月儿西坠,东方破晓,林间展鸟瞅瞅,山谷里起了雾气。他也没看到这条路走也走不完,原来是和尚领着他在兜圈子。忽然和尚把他领进一个山凹,这里有一辆轿车,车夫在辕上打瞌睡。

书生听了这些话,把脸都憋紫了。他想:幸亏是在深山里说话,没人听见,否则有人听了去,一定要说这是两个牛皮精在比着吹牛皮。倘若如此,那可冤哉枉也!我那射雁、射雕、射雉、射雀,全是真事儿,不比这秃驴射苍蝇、射蚊子、射跳蚤,纯是信口胡吹。别的不要说,捉个跳蚤来,怎么分辨它的牝牡?除非跳蚤会说话,自称它是生某某或者妾某某。纵然如此,你还是不知道它是不是说了实话,因此你只能去查它的户籍——这又是糟糕,跳蚤的户口本人怎能看见?就算能看见;人也不识跳蚤文。所以只好再提一个跳蚤当翻译。你怎么能相信这样的翻译?跳蚤这种东西专吸人血,完全不可信。因此分辨跳蚤的牝壮,根本就不可能。和尚吹这样的牛皮,也不怕闪了舌头!想到这些事,书生心里更是奇痒难熬。他真想在和尚的大秃头上开两个黑窟窿,但是他又想,这种事儿可干不得。和尚的老婆在一边看见,难免要责怪于我。

“大师,我们走迷了!”

“相公,你的马瘸了,看看它是不是漏了蹄?”

谁知那和尚吹得高兴,摇头晃脑,那一弹就从他耳边偏过去。书生一看没打中,不禁暗暗心惊。他的准头可以打中三十丈外一个小酒盅,如今打这么大一颗秃头,怎么会打不中?那和尚怎么早不晃头,晚不晃头,偏等他发弹时晃头?莫非这秃头不是吹牛,而是有些真实本领?书生收起弓,赶上去探探和尚的口风:

“当然,相公是老僧的好友,和尚绝不会阉了你。老僧这等剑术,在剑客里也只算一般。有一位大盗以北海的云母为刀,那东西不在正午阳光下谁也看不见,砍起人来,就如人头自己往地下滚,真是好看!还有一位剑客以极细的银丝为剑,剑既无形,剑客的手法又快到无影。不知不觉一剑刺在你左胸,别住了心脏不能跳动。登时你胸闷气短,又请郎中,又灌汤药,越治越不灵。此时剑客先生站在一边看热闹,要是他老人家心情好,上前把剑拔去,你还能活。万一他输了钱,你就死吧,到死还以为是自己得了心绞痛!”

“噢,一个大屎克螂飞过去,嗡的一声!”

“相公,家眷已经还给你,你还跟着我待怎地!”

和尚虽然肥胖,但却一点也不喘,说起话来底气充足,声如驴鸣:“相公说的是!现在的僧寺尼庵,算什么佛门清静?那班小和尚看起女人来,直勾勾地目不转睛。老衲要出门云游,家眷放在寺里就不能放心,只得带了同行。这世道真没了体统!”

“上人,你可知如今路上不太平?现在山有山贼,水有水寇。有些贼杀了人往道边上一扔,那是积德的。有的贼杀法新奇,伤天害理。昨天我们过汉水,车夫见水色青青,就下去凫水。一个猛子扎下去,见到水底下一大群人,一个个翻着白眼儿,脚下坠着大铁球,鼻子嘴唇都被鱼啃了去,那模样真是吓死人!我还听说温州有个土贼专门要把人按在酱缸里淹99lib•net死,日后挖出来,腌得像酱黄瓜,浑身都是皱。还有人把活人挂到熏坊里熏死,尸首和腊肉一般无二,差点儿当猪卖了出去。现在的人哪,杀人都杀出幽默感来了!”

书生说:“大师,我们还九网是同行。书生在想些心事,想明了要向大师一诉心曲。”

书生听了这番话,心里又是一片麻痒。这贼秃吹得真是没谱了。试问云母极脆,何以为刀?银丝极柔,又何以为剑?倘若云母、银丝都杀得了人,用一根头发就能把人脑袋勒了去。试问人身子是豆腐做的吗?原来女蜗造人是这么一个过程:她老人家补天之余,在海边煮了一大锅豆浆,用海水一点,点出一锅豆腐来,这就是咱们的老祖宗。女娲娘娘不简单,一只锅里能煮出男豆腐和女豆腐,两块豆腐一就合,就生下一个小豆腐?真他妈岂有此理。玉皇大帝坐在九天之上,阎罗大帝坐在冥罗地府,主管人的福禄生死,原来是两家合资开了个豆腐坊。好,太好了!书生悄悄落到后面去,偷手取出弹弓,照和尚脑后一弹弹去。

“当然,相公是老僧的好友,和尚绝不会阉了你。老僧这等剑术,在剑客里也只算一般。有一位大盗以北海的云母为刀,那东西不在正午阳光下谁也看不见,砍起人来,就如人头自己往地下滚,真是好看!还有一位剑客以极细的银丝为剑,剑既无形,剑客的手法又快到无影。不知不觉一剑刺在你左胸,别住了心脏不能跳动。登时你胸闷气短,又请郎中,又灌汤药,越治越不灵。此时剑客先生站在一边看热闹,要是他老人家心情好,上前把剑拔去,你还能活。万一他输了钱,你就死吧,到死还以为是自己得了心绞痛!”

于是这两人又在山路上同行,渐渐走到山顶上去。终于旭日东升,阳光普照,书生勒住马长出一口气说:

和尚也在想心事,他也勒住马,长出一口气说:“相公,我也想明白了。”

和尚说,谈女人无趣,不如来谈骑射。书生听了心里又发痒——出家人谈谈击鼓撞钟、敲木鱼念经也罢,他偏要谈跑马射箭!不过这是书生心爱的话题,虽然对着一个和尚,他也禁不住发言道:习射的人多数都以为骑烈马,挽强弓,用长箭,百步穿杨,这就是射得好啦。其实这样的射艺连品都没有。真正会射的人,把射箭当一种艺术来享受。三秋到湖沼中去射雁,拿拓木的长弓,巴蜀的长箭,乘桦木的轻舟,携善凫的黄犬,虽然是去射雁,但不是志在得雁,意在领略秋日的高天,天顶的劲风,满弓欲发时志在万里的一点情趣。隆冬到大漠上射雕,要用强劲的角弓、北地的鸣镝,乘口外的良马,携鲜卑家奴,体会怒马强弓射猛禽时一股冲天的怒意。春日到岭上射鸟雉,用白木的软弓,芦苇的轻箭,射来挥洒自如,不用一点力气,浑如吟诗作赋,体会春日远足的野趣。夏天在林间射鸟雀,用桑木的小弓小箭,带一个垂发的小童提盒相随。在林间射小鸟儿是一桩精细的工作,需要耳目并用,射时又要全神贯注,不得有丝毫的偏差,困倦时在林间小酌。这样射法才叫做射呢。

书生又偷偷落后,拿出弓来。他心里暗暗祷告说:“和尚和尚,你到阴间别怪我。不是我心狠,是你招得我忍不住,我这一弹就把你脑袋打开花,不痛不痒!让你猛一睁眼就换了世界,这也就对得起你啦!”祝祷完毕,他咬紧牙一弹朝和尚打去,这就如案头上砍西瓜,绝无砍不着的道理。

书生的弹弓铁胎裹漆,要是没学过射箭,任凭你有多大蛮力也拉不开。他的弹丸是安南铜铸成,拿在手里不小心掉下去,能把脚砸肿。这一弹要是打在和尚的脑袋上,势必贯脑而出。书生想到和尚正在夸夸其谈,冷不防嘴里钻出个大铜丸,势必要大吃一惊。要是弹丸从眼眶里钻出去,和尚觉得脸上掉下东西,随手一接,接到自己的眼珠子。这种事儿只要没落到自己身上,谁都觉得有趣。书生觉得自己有幽默感,就大笑起来。

忽然和尚一声暴喝:“深山无人,相公这么一惊一乍,可是要吓死老僧?”书生大吃一惊,连忙把弓收起。过了一会,乌云过去,书生看到和尚安全无恙,两个人重新上路。

忽然和尚一声暴喝:“深山无人,相公这么一惊一乍,可是要吓死老僧?”书生大吃一惊,连忙把弓收起。过了一会,乌云过去,书生看到和尚安全无恙,两个人重新上路。

“相公,这是去我家的路,老僧一世也没见过比你更有趣的人。所以要请相公到寒寺盘桓几天,宝眷和行李走了近路,现在已经到家了,我和相公走一条远路,意在聆听高论。”

书生想:这和尚恁地没廉耻!我不要他同行。此时太阳已经落山,前面是个市镇。书生说:“大师要住宿吗?这里有好大客栈,正好住宿!”

和尚也在想心事,他也勒住马,长出一口气说:“相公,我也想明白了。”

谁知那和尚吹得高兴,摇头晃脑,那一弹就从他耳边偏过去。书生一看没打中,不禁暗暗心惊。他的准头可以打中三十丈外一个小酒盅,如今打这么大一颗秃头,怎么会打不中?那和尚怎么早不晃头,晚不晃头,偏等他发弹时晃头?莫非这秃头不是吹牛,而是有些真实本领?书生收起弓,赶上去探探和尚的口风:

书生想:这和尚的耳朵不知是怎么长的,弹丸飞过是什么声音,屎克螂飞过是什么声音?他又觉得这和尚怪可怜的,嘴里谈着出神入化的武功,背后有人暗算,却都不知道。催命的小鬼儿擦耳根子过去,他还以为是屎克螂!让他想去吧,不值当为他说嘴就把他打死。两人又并肩而行,谈到各种武功,说到拳脚棍棒,和尚又有很多说法,就如骑射剑术,都是书生见所未见,闻所未闻,根本无法想象的事。而且他胖乎乎。傻呵呵,月光下一颗大秃头白森森、亮灼灼,让人看了一发忍不住要朝上面下手。

“大师要宿,我们便行。大师要行时,我们就宿。”

于是这两人又在山路上同行,渐渐走到山顶上去。终于旭日东升,阳光普照,书生勒住马长出一口气说:

“依相公说,我们就住宿。”

“上人,可听见什么声音?”

和尚说,看来相公对于射艺很有心得,可称是一位行家。不过在老僧看来,依照天时地利的不同,选择弓矢去射,不免沾上一点雕琢的痕迹。莫如就地取材信手拈来。比如老僧在静室里参禅,飞蝇扰人,就随手取绿豆为丸弹之,百不失一,这就略得射艺的意思。夏夜蚊声可厌,信手撅下竹帘一条,绷上头发以松针射之,只听嗡嗡声一一终止,这就算稍窥射艺之奥妙。跳蚤扰人时,老僧以席蔑为弓,以蚕丝为弦,用胡子茬把公跳蚤全部射杀,母跳蚤渴望爱情,就从静室里搬出去。贫僧的射法还不能说是精妙,射艺极善者以气息吹动豹尾上的秋毫,去射击阳光中飞舞的微尘,到了这一步,才能叫炉火纯青。

“上人,可听见什么声音?”

此时月亮已经升到中天,山里一片银色世界。坡上吹着轻轻的风,又干净,又明亮,好像瓦面上的琉璃。月光下满山的树叶都在闪亮,在某些地方晃动。在另一些地方不晃动。书生想,这真是个漂亮的世界。老天保佑,我可别干什么不雅的事情。等到心里的奇痒平息,他就随和尚走去,继续谈到很多事情。

“依相公说,我们就住宿。”

“噢,一个大屎克螂飞过去,嗡的一声!”

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

和尚骑着骡子,护送着一队车仗。轿车里传出女人的笑语,板车上满载箱笼。虽然书生盼望一个谈伴,这一位他可不喜欢。第一,和尚太无耻,居然和女人同行。第二,和尚太肥,连脑后都堆满了一颤一颤的肥肉。因为和尚不留头发,这一点看得十分清楚。等了一天,等来这么一个人,不是晦气么?等到彼此通过姓名,书生就出言相讥,存心要和尚难堪:

和尚说:“这些小贼的行径,有什么幽默感?我知道洞庭湖上有几位水寇,夜里把客商用迷香熏过去,灌上一肚子铅沙,再把肚皮缝上。第二天早上那人起床,只觉得身躯沉重,拼老命才站得住。在舱里走两步,只听肚子里稀里哗啦,就惊惶失措地跑出去,失足落水,立刻就沉底儿啦。还有几位山贼,捉到客人就分筋错骨大动手术,把双手拧成麻花别在脑后,再把两条腿拧得一条朝前一条朝后。然后把人放出去,那人在山道上颠三倒四行不直,最后摔到山涧里。像这样杀人,才叫有幽默感。”

“大师要宿,我们便行。大师要行时,我们就宿。”

书生说:“大师,我们还九网是同行。书生在想些心事,想明了要向大师一诉心曲。”

书生想:这和尚的耳朵不知是怎么长的,弹丸飞过是什么声音,屎克螂飞过是什么声音?他又觉得这和尚怪可怜的,嘴里谈着出神入化的武功,背后有人暗算,却都不知道。催命的小鬼儿擦耳根子过去,他还以为是屎克螂!让他想去吧,不值当为他说嘴就把他打死。两人又并肩而行,谈到各种武功,说到拳脚棍棒,和尚又有很多说法,就如骑射剑术,都是书生见所未见,闻所未闻,根本无法想象的事。而且他胖乎乎。傻呵呵,月光下一颗大秃头白森森、亮灼灼,让人看了一发忍不住要朝上面下手。

“上人,你可知如今路上不太平?现在山有山贼,水有水寇。有些贼杀了人往道边上一扔,那是积德的。有的贼杀法新奇,伤天害理。昨天我们过汉水,车夫见水色青青,就下去凫水。一个猛子扎下去,见到水底下一大群人,一个个翻着白眼儿,脚下坠着大铁球,鼻子嘴唇都被鱼啃了去,那模样真是吓死人!我还听说温州有个土贼专门要把人按在酱缸里淹99lib•net死,日后挖出来,腌得像酱黄瓜,浑身都是皱。还有人把活人挂到熏坊里熏死,尸首和腊肉一般无二,差点儿当猪卖了出去。现在的人哪,杀人都杀出幽默感来了!”

和尚说:“相公,老僧自小习些武艺,专在山道上干没本的生意。和尚虽然抢劫,却不杀人,我专拣相公这样的人同行。你说东,我说西,你说鸡生蛋,我说蛋生鸡。说急了你打我我就露几手把你吓跑,家眷行李就都归我了。现在我想明白了,这种做法非常之不好。就以今晚来说。你打我一弹打不着,两弹打不着,最后打我一串连环弹,你还是不逃走,此时我就太难堪了。你现在站在我面前,难道我就因此一巴掌把你脑袋拍到腔子里?这不好,因为我已经抢了你的行李,又把你打死,实在太凶残。难道我就因此把行李还你?这也不好,因为你已经打了我十七八弹,还是我招着你打的。不抢你的东西,我来挨你打,那不成了受虐狂?所以,抢劫不是好游戏,无论如何,不要抢劫。”

“那就依相公说,我们再行一程!”

“相公,你的马瘸了,看看它是不是漏了蹄?”

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

此时的月亮比刚才又亮了些。书生心里在大笑,满山的玉树银花仿佛在他身边飞舞。心里想笑,嘴上却不能笑,这可不好受。他想:我要和这位秃大爷谈些悲哀的题目,免得他招得我要打他的秃脑壳。于是他说:

“你这老贼秃!我不来杀你,已经是十分好了,你倒来取笑我,可是活得不耐烦了?”可是那和尚又说下去:

虽然书生不信和尚的牛皮,他也怕和尚的本领。忽然天上飞过一片黑云,把月亮遮了个严丝合缝。周围伸手不见五指,两个人都勒马不行。和尚还在喋喋不休。书生拿出弓来,朝黑地里发声的地方打一串连环弹,这回就是神出鬼没的黄鼠狼,也逃不开黑暗中袭来的弹雨。最后一弹刚出手,书生就鼓掌大笑起来。

“相公,正好要说话,怎么撇了开?相公要宿,我们也宿,相公要行,我们也行!”

这一僧一儒互诉心曲以后,就一起到和尚家里去。和尚要招待书生,把他当成最好的朋友。

“大师宿下,我们乘晚凉再行一程。”

“上人,你可知如今路上不太平?现在山有山贼,水有水寇。有些贼杀了人往道边上一扔,那是积德的。有的贼杀法新奇,伤天害理。昨天我们过汉水,车夫见水色青青,就下去凫水。一个猛子扎下去,见到水底下一大群人,一个个翻着白眼儿,脚下坠着大铁球,鼻子嘴唇都被鱼啃了去,那模样真是吓死人!我还听说温州有个土贼专门要把人按在酱缸里淹99lib•net死,日后挖出来,腌得像酱黄瓜,浑身都是皱。还有人把活人挂到熏坊里熏死,尸首和腊肉一般无二,差点儿当猪卖了出去。现在的人哪,杀人都杀出幽默感来了!”

“上人,你可知如今路上不太平?现在山有山贼,水有水寇。有些贼杀了人往道边上一扔,那是积德的。有的贼杀法新奇,伤天害理。昨天我们过汉水,车夫见水色青青,就下去凫水。一个猛子扎下去,见到水底下一大群人,一个个翻着白眼儿,脚下坠着大铁球,鼻子嘴唇都被鱼啃了去,那模样真是吓死人!我还听说温州有个土贼专门要把人按在酱缸里淹99lib•net死,日后挖出来,腌得像酱黄瓜,浑身都是皱。还有人把活人挂到熏坊里熏死,尸首和腊肉一般无二,差点儿当猪卖了出去。现在的人哪,杀人都杀出幽默感来了!”

和尚虽然肥胖,但却一点也不喘,说起话来底气充足,声如驴鸣:“相公说的是!现在的僧寺尼庵,算什么佛门清静?那班小和尚看起女人来,直勾勾地目不转睛。老衲要出门云游,家眷放在寺里就不能放心,只得带了同行。这世道真没了体统!”

于是这两人又在山路上同行,渐渐走到山顶上去。终于旭日东升,阳光普照,书生勒住马长出一口气说:

“依相公说,我们就住宿。”

书生一听,心里更麻痒难忍。强盗响马见了你不

http://www.99lib•net

咳嗽,你是止咳丸吗?我读遍了药书没见有这么一条,秃和尚,性寒平,镇咳平喘,止痰生津,不须炮制,效力如神。是药王爷爷写漏了,还是你来冒充?就算你是止咳九,吃了才能生效,怎么看一眼也管用?你不如去开诊所,让普天下的三期肺痨,哮喘症,气管炎,肺气肿的病号排着队去看你的秃脑袋。吹牛皮不上税,生怕稍有疏漏,吃了小贼的亏,就凭你一个吹牛皮的和尚,走起路来这么舒心。强盗大约是觉得抢和尚晦气,所以放过了你,不过我却放你不过!

和尚说:“这些小贼的行径,有什么幽默感?我知道洞庭湖上有几位水寇,夜里把客商用迷香熏过去,灌上一肚子铅沙,再把肚皮缝上。第二天早上那人起床,只觉得身躯沉重,拼老命才站得住。在舱里走两步,只听肚子里稀里哗啦,就惊惶失措地跑出去,失足落水,立刻就沉底儿啦。还有几位山贼,捉到客人就分筋错骨大动手术,把双手拧成麻花别在脑后,再把两条腿拧得一条朝前一条朝后。然后把人放出去,那人在山道上颠三倒四行不直,最后摔到山涧里。像这样杀人,才叫有幽默感。”

书生想:这和尚的耳朵不知是怎么长的,弹丸飞过是什么声音,屎克螂飞过是什么声音?他又觉得这和尚怪可怜的,嘴里谈着出神入化的武功,背后有人暗算,却都不知道。催命的小鬼儿擦耳根子过去,他还以为是屎克螂!让他想去吧,不值当为他说嘴就把他打死。两人又并肩而行,谈到各种武功,说到拳脚棍棒,和尚又有很多说法,就如骑射剑术,都是书生见所未见,闻所未闻,根本无法想象的事。而且他胖乎乎。傻呵呵,月光下一颗大秃头白森森、亮灼灼,让人看了一发忍不住要朝上面下手。

“上人,可听见什么声音?”

和尚说,看来相公对于射艺很有心得,可称是一位行家。不过在老僧看来,依照天时地利的不同,选择弓矢去射,不免沾上一点雕琢的痕迹。莫如就地取材信手拈来。比如老僧在静室里参禅,飞蝇扰人,就随手取绿豆为丸弹之,百不失一,这就略得射艺的意思。夏夜蚊声可厌,信手撅下竹帘一条,绷上头发以松针射之,只听嗡嗡声一一终止,这就算稍窥射艺之奥妙。跳蚤扰人时,老僧以席蔑为弓,以蚕丝为弦,用胡子茬把公跳蚤全部射杀,母跳蚤渴望爱情,就从静室里搬出去。贫僧的射法还不能说是精妙,射艺极善者以气息吹动豹尾上的秋毫,去射击阳光中飞舞的微尘,到了这一步,才能叫炉火纯青。

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

书生听了这些话,把脸都憋紫了。他想:幸亏是在深山里说话,没人听见,否则有人听了去,一定要说这是两个牛皮精在比着吹牛皮。倘若如此,那可冤哉枉也!我那射雁、射雕、射雉、射雀,全是真事儿,不比这秃驴射苍蝇、射蚊子、射跳蚤,纯是信口胡吹。别的不要说,捉个跳蚤来,怎么分辨它的牝牡?除非跳蚤会说话,自称它是生某某或者妾某某。纵然如此,你还是不知道它是不是说了实话,因此你只能去查它的户籍——这又是糟糕,跳蚤的户口本人怎能看见?就算能看见;人也不识跳蚤文。所以只好再提一个跳蚤当翻译。你怎么能相信这样的翻译?跳蚤这种东西专吸人血,完全不可信。因此分辨跳蚤的牝壮,根本就不可能。和尚吹这样的牛皮,也不怕闪了舌头!想到这些事,书生心里更是奇痒难熬。他真想在和尚的大秃头上开两个黑窟窿,但是他又想,这种事儿可干不得。和尚的老婆在一边看见,难免要责怪于我。

书生想:这和尚有痰气。和你说正经事儿,你只当是胡扯。看来有必要深谈下去,才能激发你的危机感。于是他说:“如今敢出门走路的人也都不简单。这年头儿,出远门儿就如爬刀山下火海,没个三头六臂谁敢出来?所以你看到个走乡的货郎,他可能在腰里挂着铁流星。看到个挑脚的力夫,他袖里可能有袖箭。就是个卖笑的娼妓,怀里还可能有短剑哪!人身上有了家伙,胆就粗,气就壮,在酒楼和陌生人饮酒,一语不合就互挥老拳,手上还戴着带刺的手扣子。在山道上与人争路,气不愤时就抡起檀木棍,打出脑子来就往山洞一扔。只要你敢用白眼瞪我,老子就用八斤重的铁蒺藜拽你,躲得过躲不过是你自己的事,所以如今走路可是要小心。说话要小心,做事也要小心。招得别人发了火,你的脑袋就不安稳。”

书生听了这些话,把脸都憋紫了。他想:幸亏是在深山里说话,没人听见,否则有人听了去,一定要说这是两个牛皮精在比着吹牛皮。倘若如此,那可冤哉枉也!我那射雁、射雕、射雉、射雀,全是真事儿,不比这秃驴射苍蝇、射蚊子、射跳蚤,纯是信口胡吹。别的不要说,捉个跳蚤来,怎么分辨它的牝牡?除非跳蚤会说话,自称它是生某某或者妾某某。纵然如此,你还是不知道它是不是说了实话,因此你只能去查它的户籍——这又是糟糕,跳蚤的户口本人怎能看见?就算能看见;人也不识跳蚤文。所以只好再提一个跳蚤当翻译。你怎么能相信这样的翻译?跳蚤这种东西专吸人血,完全不可信。因此分辨跳蚤的牝壮,根本就不可能。和尚吹这样的牛皮,也不怕闪了舌头!想到这些事,书生心里更是奇痒难熬。他真想在和尚的大秃头上开两个黑窟窿,但是他又想,这种事儿可干不得。和尚的老婆在一边看见,难免要责怪于我。

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

书生想:这不对。要是不迷路,早该走出山区。可是前面山势更险峻!何况车辆也不见了,这要不是走错路,除非我真的长了一脑子豆腐渣!他说:

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

“大师,我们的车辆也不见了!”

和尚说:“这样的行路人也只算些胆小鬼,见到发狠的主儿,只能夹屁而逃,只恨爹娘少生了两条腿。你看和尚我,手无寸铁,坦荡荡走遍天下,随身只有一根撒尿的肉棍儿,谁敢来动老子一根毫毛?老和尚吼一声,能震得别人耳朵里流汤。跺跺脚,对面的人就立脚不稳。山贼水寇、见了我都叫爷爷;响马强盗在我面前,连咳嗽都不敢高声。所以我走起路来,兴高采烈,这样出门才有兴致。小心?小心干什么?”

此时月亮已经升到中天,山里一片银色世界。坡上吹着轻轻的风,又干净,又明亮,好像瓦面上的琉璃。月光下满山的树叶都在闪亮,在某些地方晃动。在另一些地方不晃动。书生想,这真是个漂亮的世界。老天保佑,我可别干什么不雅的事情。等到心里的奇痒平息,他就随和尚走去,继续谈到很多事情。

和尚虽然肥胖,但却一点也不喘,说起话来底气充足,声如驴鸣:“相公说的是!现在的僧寺尼庵,算什么佛门清静?那班小和尚看起女人来,直勾勾地目不转睛。老衲要出门云游,家眷放在寺里就不能放心,只得带了同行。这世道真没了体统!”

和尚说:“相公,老僧自小习些武艺,专在山道上干没本的生意。和尚虽然抢劫,却不杀人,我专拣相公这样的人同行。你说东,我说西,你说鸡生蛋,我说蛋生鸡。说急了你打我我就露几手把你吓跑,家眷行李就都归我了。现在我想明白了,这种做法非常之不好。就以今晚来说。你打我一弹打不着,两弹打不着,最后打我一串连环弹,你还是不逃走,此时我就太难堪了。你现在站在我面前,难道我就因此一巴掌把你脑袋拍到腔子里?这不好,因为我已经抢了你的行李,又把你打死,实在太凶残。难道我就因此把行李还你?这也不好,因为你已经打了我十七八弹,还是我招着你打的。不抢你的东西,我来挨你打,那不成了受虐狂?所以,抢劫不是好游戏,无论如何,不要抢劫。”

和尚说:“这些小贼的行径,有什么幽默感?我知道洞庭湖上有几位水寇,夜里把客商用迷香熏过去,灌上一肚子铅沙,再把肚皮缝上。第二天早上那人起床,只觉得身躯沉重,拼老命才站得住。在舱里走两步,只听肚子里稀里哗啦,就惊惶失措地跑出去,失足落水,立刻就沉底儿啦。还有几位山贼,捉到客人就分筋错骨大动手术,把双手拧成麻花别在脑后,再把两条腿拧得一条朝前一条朝后。然后把人放出去,那人在山道上颠三倒四行不直,最后摔到山涧里。像这样杀人,才叫有幽默感。”

于是这两人又在山路上同行,渐渐走到山顶上去。终于旭日东升,阳光普照,书生勒住马长出一口气说:

书生一听,心里更麻痒难忍。强盗响马见了你不

http://www.99lib•net

咳嗽,你是止咳丸吗?我读遍了药书没见有这么一条,秃和尚,性寒平,镇咳平喘,止痰生津,不须炮制,效力如神。是药王爷爷写漏了,还是你来冒充?就算你是止咳九,吃了才能生效,怎么看一眼也管用?你不如去开诊所,让普天下的三期肺痨,哮喘症,气管炎,肺气肿的病号排着队去看你的秃脑袋。吹牛皮不上税,生怕稍有疏漏,吃了小贼的亏,就凭你一个吹牛皮的和尚,走起路来这么舒心。强盗大约是觉得抢和尚晦气,所以放过了你,不过我却放你不过!

书生听了这番话,心里又是一片麻痒。这贼秃吹得真是没谱了。试问云母极脆,何以为刀?银丝极柔,又何以为剑?倘若云母、银丝都杀得了人,用一根头发就能把人脑袋勒了去。试问人身子是豆腐做的吗?原来女蜗造人是这么一个过程:她老人家补天之余,在海边煮了一大锅豆浆,用海水一点,点出一锅豆腐来,这就是咱们的老祖宗。女娲娘娘不简单,一只锅里能煮出男豆腐和女豆腐,两块豆腐一就合,就生下一个小豆腐?真他妈岂有此理。玉皇大帝坐在九天之上,阎罗大帝坐在冥罗地府,主管人的福禄生死,原来是两家合资开了个豆腐坊。好,太好了!书生悄悄落到后面去,偷手取出弹弓,照和尚脑后一弹弹去。

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

书生又偷偷落后,拿出弓来。他心里暗暗祷告说:“和尚和尚,你到阴间别怪我。不是我心狠,是你招得我忍不住,我这一弹就把你脑袋打开花,不痛不痒!让你猛一睁眼就换了世界,这也就对得起你啦!”祝祷完毕,他咬紧牙一弹朝和尚打去,这就如案头上砍西瓜,绝无砍不着的道理。

和尚说,谈女人无趣,不如来谈骑射。书生听了心里又发痒——出家人谈谈击鼓撞钟、敲木鱼念经也罢,他偏要谈跑马射箭!不过这是书生心爱的话题,虽然对着一个和尚,他也禁不住发言道:习射的人多数都以为骑烈马,挽强弓,用长箭,百步穿杨,这就是射得好啦。其实这样的射艺连品都没有。真正会射的人,把射箭当一种艺术来享受。三秋到湖沼中去射雁,拿拓木的长弓,巴蜀的长箭,乘桦木的轻舟,携善凫的黄犬,虽然是去射雁,但不是志在得雁,意在领略秋日的高天,天顶的劲风,满弓欲发时志在万里的一点情趣。隆冬到大漠上射雕,要用强劲的角弓、北地的鸣镝,乘口外的良马,携鲜卑家奴,体会怒马强弓射猛禽时一股冲天的怒意。春日到岭上射鸟雉,用白木的软弓,芦苇的轻箭,射来挥洒自如,不用一点力气,浑如吟诗作赋,体会春日远足的野趣。夏天在林间射鸟雀,用桑木的小弓小箭,带一个垂发的小童提盒相随。在林间射小鸟儿是一桩精细的工作,需要耳目并用,射时又要全神贯注,不得有丝毫的偏差,困倦时在林间小酌。这样射法才叫做射呢。

和尚说:“这样的行路人也只算些胆小鬼,见到发狠的主儿,只能夹屁而逃,只恨爹娘少生了两条腿。你看和尚我,手无寸铁,坦荡荡走遍天下,随身只有一根撒尿的肉棍儿,谁敢来动老子一根毫毛?老和尚吼一声,能震得别人耳朵里流汤。跺跺脚,对面的人就立脚不稳。山贼水寇、见了我都叫爷爷;响马强盗在我面前,连咳嗽都不敢高声。所以我走起路来,兴高采烈,这样出门才有兴致。小心?小心干什么?”

书生又偷偷落后,拿出弓来。他心里暗暗祷告说:“和尚和尚,你到阴间别怪我。不是我心狠,是你招得我忍不住,我这一弹就把你脑袋打开花,不痛不痒!让你猛一睁眼就换了世界,这也就对得起你啦!”祝祷完毕,他咬紧牙一弹朝和尚打去,这就如案头上砍西瓜,绝无砍不着的道理。

“你这老贼秃!我不来杀你,已经是十分好了,你倒来取笑我,可是活得不耐烦了?”可是那和尚又说下去:

书生说:“大师,我们还九网是同行。书生在想些心事,想明了要向大师一诉心曲。”

书生一听,心里更麻痒难忍。强盗响马见了你不

http://www.99lib•net

咳嗽,你是止咳丸吗?我读遍了药书没见有这么一条,秃和尚,性寒平,镇咳平喘,止痰生津,不须炮制,效力如神。是药王爷爷写漏了,还是你来冒充?就算你是止咳九,吃了才能生效,怎么看一眼也管用?你不如去开诊所,让普天下的三期肺痨,哮喘症,气管炎,肺气肿的病号排着队去看你的秃脑袋。吹牛皮不上税,生怕稍有疏漏,吃了小贼的亏,就凭你一个吹牛皮的和尚,走起路来这么舒心。强盗大约是觉得抢和尚晦气,所以放过了你,不过我却放你不过!

玄宗在世最后几年,行路不太平。那年头出门在外的人无不在身上怀有兵刃。虽然如此,见到路边躺着喂乌鸦的死人,还是免不了害怕。一般人没有要紧的大事,谁也不出门,大路上因此空空荡荡。有一天,一个书生骑着骏马,押着车仗,在关中的大道上行走。那时候正值夏日,在马上极目四望,来路上没有行人,去路藏书网上也没有行人,田野上看不到农夫,只有远处地平线上空气翻滚,好像无色的火焰。车轮吱吱响,好像在脑子里碾过。书生在马背上颠簸,只觉得热汗淋漓,昏昏沉沉。旅行真是乏味的事,如果有个人聊聊就好了。书生不想和车夫谈话,因为他们言语粗鄙,也不想和轿车里的女人谈话,因为她们太蠢了。因此他就盼着遇上个行人,哪怕是游方的郎中,走方的小炉匠也好。可是从上午一直走到下午,谁也没遇上。直到夕阳西下,天气转凉时,才遇上一个和尚。

“相公,你的马瘸了,看看它是不是漏了蹄?”

书生发弹的时候,和尚刚好走到阴影里。转眼之间他又从阴影里走出来,闪光的秃头还是安然无恙。书生这一惊非同小可,因为他放这一弹时格外的小心手稳,绝无脱靶的可能。看来这和尚不是吹牛皮,而是真有本领。他把弓收起来,打马追上。去,心想不得了,和尚说的全是实话,射蚊子射跳蚤实有其事,云母刀、银丝剑也是真的。和尚确实是止咳丸,也确实有人认识跳蚤文。女蜗娘娘确实在海边点了一锅豆腐,药书上也确实写着秃和尚寒平。这都是从和尚不吹牛推出的必然结论!书生这么一想心里马上乱糟糟。抬头一看前面,书生又禁不住惊叫一声:

书生想,这更是岂有此理!谁要到你家去?我的家眷和行李怎么会到了你家?你请我到你家去做客,我答应了吗?这个秃驴我还是要打死他?女蜗娘娘点豆腐我死活也不信。

和尚说:“相公,老僧自小习些武艺,专在山道上干没本的生意。和尚虽然抢劫,却不杀人,我专拣相公这样的人同行。你说东,我说西,你说鸡生蛋,我说蛋生鸡。说急了你打我我就露几手把你吓跑,家眷行李就都归我了。现在我想明白了,这种做法非常之不好。就以今晚来说。你打我一弹打不着,两弹打不着,最后打我一串连环弹,你还是不逃走,此时我就太难堪了。你现在站在我面前,难道我就因此一巴掌把你脑袋拍到腔子里?这不好,因为我已经抢了你的行李,又把你打死,实在太凶残。难道我就因此把行李还你?这也不好,因为你已经打了我十七八弹,还是我招着你打的。不抢你的东西,我来挨你打,那不成了受虐狂?所以,抢劫不是好游戏,无论如何,不要抢劫。”

书生心里还在发痒,他真不乐意世界上有和尚这个人。如果世界上存在这和尚,就得相信跳蚤有户口本,人是豆腐做的。这些事一想痒得受不住,所以根本没法相信。但是同样没法相信的事儿已经发生了。今晚用弹子打斗大一个秃脑袋,三番五次打不中。他只顾想这些心事,忽听和尚说:

和尚说,谈过了骑射,我们来谈剑术。这也是书生心爱的话题,所以他就抢先发言道:百炼的精钢,最后化为缠指之柔。他有柄这种钢打制的宝剑,薄如蝉翼,劈风无声。不用时,这剑可以束在腰里为带,用时拿在手里,剑刃摇曳不定,就如一道光华。挥起来如一匹白练,刺去时变幻不定。倘若此时此剑在我手里,我只消轻轻一挥,不知不觉之间上人的脑袋就滚到地上啃泥巴,那时您老人家只觉得天旋地转,脸皮在地上蹭得生痛,还想不到是自己的脑袋掉下地了呢。书生说完这些话纵声大笑,心里可有点不踏实。确实有这么一把剑,不过不全是他的。这是他家的传世之宝,他爸爸还没死,这剑不能说是他的。这回出山,身边也没有这柄剑,如若和尚要看,他又拿不出来,这就有吹牛皮之嫌。不过这不要紧,可以请和尚到家里去看。倘若他不肯去,非说书生是吹牛皮不可,正好借这个碴儿和他打一架,不敲出他一头青疙瘩不算完。

书生又偷偷落后,拿出弓来。他心里暗暗祷告说:“和尚和尚,你到阴间别怪我。不是我心狠,是你招得我忍不住,我这一弹就把你脑袋打开花,不痛不痒!让你猛一睁眼就换了世界,这也就对得起你啦!”祝祷完毕,他咬紧牙一弹朝和尚打去,这就如案头上砍西瓜,绝无砍不着的道理。

“大师,我们走迷了!”

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

书生想:这和尚恁地没廉耻!我不要他同行。此时太阳已经落山,前面是个市镇。书生说:“大师要住宿吗?这里有好大客栈,正好住宿!”

书生盘算了好多,可是和尚却不来质疑。他说像这样的剑只能说是凡品,虽然在凡品中又算是最上等。如果以剃刀在青竹面上剥下一缕竹皮,提在指间就是一柄好剑。拿它朝水上的蜉蝣一挥,那虫子犹不知死,还在飞。飞出一丈多远,忽然分成两半掉下来。倘若老僧手中有这么一柄剑,只消轻轻一挥、相公不知不觉之中就着了和尚的道儿。你还不知道,高高兴兴走回家去。到晚间更衣,要与夫人同入罗绍帐时,才发现已被老僧去了势。说完了和尚哈哈大笑,书生却气坏了,心说:

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

书生想:这和尚的耳朵不知是怎么长的,弹丸飞过是什么声音,屎克螂飞过是什么声音?他又觉得这和尚怪可怜的,嘴里谈着出神入化的武功,背后有人暗算,却都不知道。催命的小鬼儿擦耳根子过去,他还以为是屎克螂!让他想去吧,不值当为他说嘴就把他打死。两人又并肩而行,谈到各种武功,说到拳脚棍棒,和尚又有很多说法,就如骑射剑术,都是书生见所未见,闻所未闻,根本无法想象的事。而且他胖乎乎。傻呵呵,月光下一颗大秃头白森森、亮灼灼,让人看了一发忍不住要朝上面下手。

“迷什么?没有迷!”

追了十里路,总算追上了和尚。书生长出一口气,两个人并缰行起来,他可没看见和尚瞪起三角眼,面上罩起了乌云。两人各自想心事,再也不交谈。

“大师要宿,我们便行。大师要行时,我们就宿。”

书生又偷偷落后,拿出弓来。他心里暗暗祷告说:“和尚和尚,你到阴间别怪我。不是我心狠,是你招得我忍不住,我这一弹就把你脑袋打开花,不痛不痒!让你猛一睁眼就换了世界,这也就对得起你啦!”祝祷完毕,他咬紧牙一弹朝和尚打去,这就如案头上砍西瓜,绝无砍不着的道理。

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

和尚说,谈过了骑射,我们来谈剑术。这也是书生心爱的话题,所以他就抢先发言道:百炼的精钢,最后化为缠指之柔。他有柄这种钢打制的宝剑,薄如蝉翼,劈风无声。不用时,这剑可以束在腰里为带,用时拿在手里,剑刃摇曳不定,就如一道光华。挥起来如一匹白练,刺去时变幻不定。倘若此时此剑在我手里,我只消轻轻一挥,不知不觉之间上人的脑袋就滚到地上啃泥巴,那时您老人家只觉得天旋地转,脸皮在地上蹭得生痛,还想不到是自己的脑袋掉下地了呢。书生说完这些话纵声大笑,心里可有点不踏实。确实有这么一把剑,不过不全是他的。这是他家的传世之宝,他爸爸还没死,这剑不能说是他的。这回出山,身边也没有这柄剑,如若和尚要看,他又拿不出来,这就有吹牛皮之嫌。不过这不要紧,可以请和尚到家里去看。倘若他不肯去,非说书生是吹牛皮不可,正好借这个碴儿和他打一架,不敲出他一头青疙瘩不算完。

书生想:这不对。要是不迷路,早该走出山区。可是前面山势更险峻!何况车辆也不见了,这要不是走错路,除非我真的长了一脑子豆腐渣!他说:

“那就依相公说,我们再行一程!”

书生到轿车前撩开帘子一看,老婆丫环在里面正在熟睡。这些人可享福啦,车一进山就睡着,到现在还没有醒。回头再看和尚,他已经去远了,书生又纵马追上去,这回和尚十分不耐烦。

书生盘算了好多,可是和尚却不来质疑。他说像这样的剑只能说是凡品,虽然在凡品中又算是最上等。如果以剃刀在青竹面上剥下一缕竹皮,提在指间就是一柄好剑。拿它朝水上的蜉蝣一挥,那虫子犹不知死,还在飞。飞出一丈多远,忽然分成两半掉下来。倘若老僧手中有这么一柄剑,只消轻轻一挥、相公不知不觉之中就着了和尚的道儿。你还不知道,高高兴兴走回家去。到晚间更衣,要与夫人同入罗绍帐时,才发现已被老僧去了势。说完了和尚哈哈大笑,书生却气坏了,心说:

书生到轿车前撩开帘子一看,老婆丫环在里面正在熟睡。这些人可享福啦,车一进山就睡着,到现在还没有醒。回头再看和尚,他已经去远了,书生又纵马追上去,这回和尚十分不耐烦。

“迷什么?没有迷!”

“大师,我们的车辆也不见了!”

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

书生盘算了好多,可是和尚却不来质疑。他说像这样的剑只能说是凡品,虽然在凡品中又算是最上等。如果以剃刀在青竹面上剥下一缕竹皮,提在指间就是一柄好剑。拿它朝水上的蜉蝣一挥,那虫子犹不知死,还在飞。飞出一丈多远,忽然分成两半掉下来。倘若老僧手中有这么一柄剑,只消轻轻一挥、相公不知不觉之中就着了和尚的道儿。你还不知道,高高兴兴走回家去。到晚间更衣,要与夫人同入罗绍帐时,才发现已被老僧去了势。说完了和尚哈哈大笑,书生却气坏了,心说:

“你这老贼秃!我不来杀你,已经是十分好了,你倒来取笑我,可是活得不耐烦了?”可是那和尚又说下去:

和尚说,谈女人无趣,不如来谈骑射。书生听了心里又发痒——出家人谈谈击鼓撞钟、敲木鱼念经也罢,他偏要谈跑马射箭!不过这是书生心爱的话题,虽然对着一个和尚,他也禁不住发言道:习射的人多数都以为骑烈马,挽强弓,用长箭,百步穿杨,这就是射得好啦。其实这样的射艺连品都没有。真正会射的人,把射箭当一种艺术来享受。三秋到湖沼中去射雁,拿拓木的长弓,巴蜀的长箭,乘桦木的轻舟,携善凫的黄犬,虽然是去射雁,但不是志在得雁,意在领略秋日的高天,天顶的劲风,满弓欲发时志在万里的一点情趣。隆冬到大漠上射雕,要用强劲的角弓、北地的鸣镝,乘口外的良马,携鲜卑家奴,体会怒马强弓射猛禽时一股冲天的怒意。春日到岭上射鸟雉,用白木的软弓,芦苇的轻箭,射来挥洒自如,不用一点力气,浑如吟诗作赋,体会春日远足的野趣。夏天在林间射鸟雀,用桑木的小弓小箭,带一个垂发的小童提盒相随。在林间射小鸟儿是一桩精细的工作,需要耳目并用,射时又要全神贯注,不得有丝毫的偏差,困倦时在林间小酌。这样射法才叫做射呢。

“大师,经过十年战乱,不仅是中原残破十室九空,而且人心不古世道浇漓。我听说有些尼姑招赘男人过活,还听说有些和尚和女人同居。生下一批小娃娃,弄得佛门清净地里晾满了尿布,真不成体统!”

“相公,这是去我家的路,老僧一世也没见过比你更有趣的人。所以要请相公到寒寺盘桓几天,宝眷和行李走了近路,现在已经到家了,我和相公走一条远路,意在聆听高论。”

书生心里还在发痒,他真不乐意世界上有和尚这个人。如果世界上存在这和尚,就得相信跳蚤有户口本,人是豆腐做的。这些事一想痒得受不住,所以根本没法相信。但是同样没法相信的事儿已经发生了。今晚用弹子打斗大一个秃脑袋,三番五次打不中。他只顾想这些心事,忽听和尚说:

和尚虽然肥胖,但却一点也不喘,说起话来底气充足,声如驴鸣:“相公说的是!现在的僧寺尼庵,算什么佛门清静?那班小和尚看起女人来,直勾勾地目不转睛。老衲要出门云游,家眷放在寺里就不能放心,只得带了同行。这世道真没了体统!”

书生听了又好气又好笑,真想骂他一声。但是没有骂,只是想:和尚要同行,也由他。车马行过市集,走上山道,太阳已经落山,一轮满月升起来,又大又圆,又黄又荒唐。月下的景物也显得荒唐。山坡上一株枯树,好像是黑纸剪成。西边天上一抹微光中的云,好像是翻肚皮的死鱼。马蹄声在黑暗中响着,一声声都很清楚。和尚的大秃头白森森,看上去令人心中发痒。书生真想扑过去在上面咬一口。当然,这种事干不得。和尚要问:好好地走路,你啃我干什么?书生又想:捡块石头开了他的瓢儿也能止痒。这种事也干不得。和尚在喋喋不休,听了他的话,书生心里痒得更厉害。和尚在谈女人,谁能想象佛门子弟会说出这种话来?

和尚说,谈女人无趣,不如来谈骑射。书生听了心里又发痒——出家人谈谈击鼓撞钟、敲木鱼念经也罢,他偏要谈跑马射箭!不过这是书生心爱的话题,虽然对着一个和尚,他也禁不住发言道:习射的人多数都以为骑烈马,挽强弓,用长箭,百步穿杨,这就是射得好啦。其实这样的射艺连品都没有。真正会射的人,把射箭当一种艺术来享受。三秋到湖沼中去射雁,拿拓木的长弓,巴蜀的长箭,乘桦木的轻舟,携善凫的黄犬,虽然是去射雁,但不是志在得雁,意在领略秋日的高天,天顶的劲风,满弓欲发时志在万里的一点情趣。隆冬到大漠上射雕,要用强劲的角弓、北地的鸣镝,乘口外的良马,携鲜卑家奴,体会怒马强弓射猛禽时一股冲天的怒意。春日到岭上射鸟雉,用白木的软弓,芦苇的轻箭,射来挥洒自如,不用一点力气,浑如吟诗作赋,体会春日远足的野趣。夏天在林间射鸟雀,用桑木的小弓小箭,带一个垂发的小童提盒相随。在林间射小鸟儿是一桩精细的工作,需要耳目并用,射时又要全神贯注,不得有丝毫的偏差,困倦时在林间小酌。这样射法才叫做射呢。

书生发弹的时候,和尚刚好走到阴影里。转眼之间他又从阴影里走出来,闪光的秃头还是安然无恙。书生这一惊非同小可,因为他放这一弹时格外的小心手稳,绝无脱靶的可能。看来这和尚不是吹牛皮,而是真有本领。他把弓收起来,打马追上。去,心想不得了,和尚说的全是实话,射蚊子射跳蚤实有其事,云母刀、银丝剑也是真的。和尚确实是止咳丸,也确实有人认识跳蚤文。女蜗娘娘确实在海边点了一锅豆腐,药书上也确实写着秃和尚寒平。这都是从和尚不吹牛推出的必然结论!书生这么一想心里马上乱糟糟。抬头一看前面,书生又禁不住惊叫一声:

书生想,这更是岂有此理!谁要到你家去?我的家眷和行李怎么会到了你家?你请我到你家去做客,我答应了吗?这个秃驴我还是要打死他?女蜗娘娘点豆腐我死活也不信。

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

“上人,可听见什么声音?”

书生想:这不对。要是不迷路,早该走出山区。可是前面山势更险峻!何况车辆也不见了,这要不是走错路,除非我真的长了一脑子豆腐渣!他说:

“当然,相公是老僧的好友,和尚绝不会阉了你。老僧这等剑术,在剑客里也只算一般。有一位大盗以北海的云母为刀,那东西不在正午阳光下谁也看不见,砍起人来,就如人头自己往地下滚,真是好看!还有一位剑客以极细的银丝为剑,剑既无形,剑客的手法又快到无影。不知不觉一剑刺在你左胸,别住了心脏不能跳动。登时你胸闷气短,又请郎中,又灌汤药,越治越不灵。此时剑客先生站在一边看热闹,要是他老人家心情好,上前把剑拔去,你还能活。万一他输了钱,你就死吧,到死还以为是自己得了心绞痛!”

书生想:这不对。要是不迷路,早该走出山区。可是前面山势更险峻!何况车辆也不见了,这要不是走错路,除非我真的长了一脑子豆腐渣!他说:

虽然书生不信和尚的牛皮,他也怕和尚的本领。忽然天上飞过一片黑云,把月亮遮了个严丝合缝。周围伸手不见五指,两个人都勒马不行。和尚还在喋喋不休。书生拿出弓来,朝黑地里发声的地方打一串连环弹,这回就是神出鬼没的黄鼠狼,也逃不开黑暗中袭来的弹雨。最后一弹刚出手,书生就鼓掌大笑起来。

追了十里路,总算追上了和尚。书生长出一口气,两个人并缰行起来,他可没看见和尚瞪起三角眼,面上罩起了乌云。两人各自想心事,再也不交谈。

“大师,我想明白了!”

书生听了这些话,把脸都憋紫了。他想:幸亏是在深山里说话,没人听见,否则有人听了去,一定要说这是两个牛皮精在比着吹牛皮。倘若如此,那可冤哉枉也!我那射雁、射雕、射雉、射雀,全是真事儿,不比这秃驴射苍蝇、射蚊子、射跳蚤,纯是信口胡吹。别的不要说,捉个跳蚤来,怎么分辨它的牝牡?除非跳蚤会说话,自称它是生某某或者妾某某。纵然如此,你还是不知道它是不是说了实话,因此你只能去查它的户籍——这又是糟糕,跳蚤的户口本人怎能看见?就算能看见;人也不识跳蚤文。所以只好再提一个跳蚤当翻译。你怎么能相信这样的翻译?跳蚤这种东西专吸人血,完全不可信。因此分辨跳蚤的牝壮,根本就不可能。和尚吹这样的牛皮,也不怕闪了舌头!想到这些事,书生心里更是奇痒难熬。他真想在和尚的大秃头上开两个黑窟窿,但是他又想,这种事儿可干不得。和尚的老婆在一边看见,难免要责怪于我。

书生抬头一看,发现已经走到深山里。和尚哈哈大笑,说走夜路有人谈话,真真是有趣。我们不如叫家眷车仗先行,自己在后面深谈。书生点点头,心里说:这样好多啦!我要是憋不住了,没人看见正好揍你。于是他们站在路边,让车辆到前面去。

书生的弹弓铁胎裹漆,要是没学过射箭,任凭你有多大蛮力也拉不开。他的弹丸是安南铜铸成,拿在手里不小心掉下去,能把脚砸肿。这一弹要是打在和尚的脑袋上,势必贯脑而出。书生想到和尚正在夸夸其谈,冷不防嘴里钻出个大铜丸,势必要大吃一惊。要是弹丸从眼眶里钻出去,和尚觉得脸上掉下东西,随手一接,接到自己的眼珠子。这种事儿只要没落到自己身上,谁都觉得有趣。书生觉得自己有幽默感,就大笑起来。

忽然和尚一声暴喝:“深山无人,相公这么一惊一乍,可是要吓死老僧?”书生大吃一惊,连忙把弓收起。过了一会,乌云过去,书生看到和尚安全无恙,两个人重新上路。

忽然和尚一声暴喝:“深山无人,相公这么一惊一乍,可是要吓死老僧?”书生大吃一惊,连忙把弓收起。过了一会,乌云过去,书生看到和尚安全无恙,两个人重新上路。

“噢,一个大屎克螂飞过去,嗡的一声!”

书生一听,心里更麻痒难忍。强盗响马见了你不

http://www.99lib•net

咳嗽,你是止咳丸吗?我读遍了药书没见有这么一条,秃和尚,性寒平,镇咳平喘,止痰生津,不须炮制,效力如神。是药王爷爷写漏了,还是你来冒充?就算你是止咳九,吃了才能生效,怎么看一眼也管用?你不如去开诊所,让普天下的三期肺痨,哮喘症,气管炎,肺气肿的病号排着队去看你的秃脑袋。吹牛皮不上税,生怕稍有疏漏,吃了小贼的亏,就凭你一个吹牛皮的和尚,走起路来这么舒心。强盗大约是觉得抢和尚晦气,所以放过了你,不过我却放你不过!

“相公,这是去我家的路,老僧一世也没见过比你更有趣的人。所以要请相公到寒寺盘桓几天,宝眷和行李走了近路,现在已经到家了,我和相公走一条远路,意在聆听高论。”

书生想,这更是岂有此理!谁要到你家去?我的家眷和行李怎么会到了你家?你请我到你家去做客,我答应了吗?这个秃驴我还是要打死他?女蜗娘娘点豆腐我死活也不信。

书生心里还在发痒,他真不乐意世界上有和尚这个人。如果世界上存在这和尚,就得相信跳蚤有户口本,人是豆腐做的。这些事一想痒得受不住,所以根本没法相信。但是同样没法相信的事儿已经发生了。今晚用弹子打斗大一个秃脑袋,三番五次打不中。他只顾想这些心事,忽听和尚说:

书生的弹弓铁胎裹漆,要是没学过射箭,任凭你有多大蛮力也拉不开。他的弹丸是安南铜铸成,拿在手里不小心掉下去,能把脚砸肿。这一弹要是打在和尚的脑袋上,势必贯脑而出。书生想到和尚正在夸夸其谈,冷不防嘴里钻出个大铜丸,势必要大吃一惊。要是弹丸从眼眶里钻出去,和尚觉得脸上掉下东西,随手一接,接到自己的眼珠子。这种事儿只要没落到自己身上,谁都觉得有趣。书生觉得自己有幽默感,就大笑起来。

追了十里路,总算追上了和尚。书生长出一口气,两个人并缰行起来,他可没看见和尚瞪起三角眼,面上罩起了乌云。两人各自想心事,再也不交谈。

“你这老贼秃!我不来杀你,已经是十分好了,你倒来取笑我,可是活得不耐烦了?”可是那和尚又说下去:

“相公,你的马瘸了,看看它是不是漏了蹄?”

谁知那和尚吹得高兴,摇头晃脑,那一弹就从他耳边偏过去。书生一看没打中,不禁暗暗心惊。他的准头可以打中三十丈外一个小酒盅,如今打这么大一颗秃头,怎么会打不中?那和尚怎么早不晃头,晚不晃头,偏等他发弹时晃头?莫非这秃头不是吹牛,而是有些真实本领?书生收起弓,赶上去探探和尚的口风:

“相公,你的马瘸了,看看它是不是漏了蹄?”

书生想:这不对。要是不迷路,早该走出山区。可是前面山势更险峻!何况车辆也不见了,这要不是走错路,除非我真的长了一脑子豆腐渣!他说:

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

书生想:这不对。要是不迷路,早该走出山区。可是前面山势更险峻!何况车辆也不见了,这要不是走错路,除非我真的长了一脑子豆腐渣!他说:

书生说:“大师,我们还九网是同行。书生在想些心事,想明了要向大师一诉心曲。”

书生又偷偷落后,拿出弓来。他心里暗暗祷告说:“和尚和尚,你到阴间别怪我。不是我心狠,是你招得我忍不住,我这一弹就把你脑袋打开花,不痛不痒!让你猛一睁眼就换了世界,这也就对得起你啦!”祝祷完毕,他咬紧牙一弹朝和尚打去,这就如案头上砍西瓜,绝无砍不着的道理。

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

书生听了这些话,把脸都憋紫了。他想:幸亏是在深山里说话,没人听见,否则有人听了去,一定要说这是两个牛皮精在比着吹牛皮。倘若如此,那可冤哉枉也!我那射雁、射雕、射雉、射雀,全是真事儿,不比这秃驴射苍蝇、射蚊子、射跳蚤,纯是信口胡吹。别的不要说,捉个跳蚤来,怎么分辨它的牝牡?除非跳蚤会说话,自称它是生某某或者妾某某。纵然如此,你还是不知道它是不是说了实话,因此你只能去查它的户籍——这又是糟糕,跳蚤的户口本人怎能看见?就算能看见;人也不识跳蚤文。所以只好再提一个跳蚤当翻译。你怎么能相信这样的翻译?跳蚤这种东西专吸人血,完全不可信。因此分辨跳蚤的牝壮,根本就不可能。和尚吹这样的牛皮,也不怕闪了舌头!想到这些事,书生心里更是奇痒难熬。他真想在和尚的大秃头上开两个黑窟窿,但是他又想,这种事儿可干不得。和尚的老婆在一边看见,难免要责怪于我。

“上人,你可知如今路上不太平?现在山有山贼,水有水寇。有些贼杀了人往道边上一扔,那是积德的。有的贼杀法新奇,伤天害理。昨天我们过汉水,车夫见水色青青,就下去凫水。一个猛子扎下去,见到水底下一大群人,一个个翻着白眼儿,脚下坠着大铁球,鼻子嘴唇都被鱼啃了去,那模样真是吓死人!我还听说温州有个土贼专门要把人按在酱缸里淹99lib•net死,日后挖出来,腌得像酱黄瓜,浑身都是皱。还有人把活人挂到熏坊里熏死,尸首和腊肉一般无二,差点儿当猪卖了出去。现在的人哪,杀人都杀出幽默感来了!”

书生想:这和尚有痰气。和你说正经事儿,你只当是胡扯。看来有必要深谈下去,才能激发你的危机感。于是他说:“如今敢出门走路的人也都不简单。这年头儿,出远门儿就如爬刀山下火海,没个三头六臂谁敢出来?所以你看到个走乡的货郎,他可能在腰里挂着铁流星。看到个挑脚的力夫,他袖里可能有袖箭。就是个卖笑的娼妓,怀里还可能有短剑哪!人身上有了家伙,胆就粗,气就壮,在酒楼和陌生人饮酒,一语不合就互挥老拳,手上还戴着带刺的手扣子。在山道上与人争路,气不愤时就抡起檀木棍,打出脑子来就往山洞一扔。只要你敢用白眼瞪我,老子就用八斤重的铁蒺藜拽你,躲得过躲不过是你自己的事,所以如今走路可是要小心。说话要小心,做事也要小心。招得别人发了火,你的脑袋就不安稳。”

书生的弹弓铁胎裹漆,要是没学过射箭,任凭你有多大蛮力也拉不开。他的弹丸是安南铜铸成,拿在手里不小心掉下去,能把脚砸肿。这一弹要是打在和尚的脑袋上,势必贯脑而出。书生想到和尚正在夸夸其谈,冷不防嘴里钻出个大铜丸,势必要大吃一惊。要是弹丸从眼眶里钻出去,和尚觉得脸上掉下东西,随手一接,接到自己的眼珠子。这种事儿只要没落到自己身上,谁都觉得有趣。书生觉得自己有幽默感,就大笑起来。

“大师,我们走迷了!”

追了十里路,总算追上了和尚。书生长出一口气,两个人并缰行起来,他可没看见和尚瞪起三角眼,面上罩起了乌云。两人各自想心事,再也不交谈。

虽然书生不信和尚的牛皮,他也怕和尚的本领。忽然天上飞过一片黑云,把月亮遮了个严丝合缝。周围伸手不见五指,两个人都勒马不行。和尚还在喋喋不休。书生拿出弓来,朝黑地里发声的地方打一串连环弹,这回就是神出鬼没的黄鼠狼,也逃不开黑暗中袭来的弹雨。最后一弹刚出手,书生就鼓掌大笑起来。

书生听了这些话,把脸都憋紫了。他想:幸亏是在深山里说话,没人听见,否则有人听了去,一定要说这是两个牛皮精在比着吹牛皮。倘若如此,那可冤哉枉也!我那射雁、射雕、射雉、射雀,全是真事儿,不比这秃驴射苍蝇、射蚊子、射跳蚤,纯是信口胡吹。别的不要说,捉个跳蚤来,怎么分辨它的牝牡?除非跳蚤会说话,自称它是生某某或者妾某某。纵然如此,你还是不知道它是不是说了实话,因此你只能去查它的户籍——这又是糟糕,跳蚤的户口本人怎能看见?就算能看见;人也不识跳蚤文。所以只好再提一个跳蚤当翻译。你怎么能相信这样的翻译?跳蚤这种东西专吸人血,完全不可信。因此分辨跳蚤的牝壮,根本就不可能。和尚吹这样的牛皮,也不怕闪了舌头!想到这些事,书生心里更是奇痒难熬。他真想在和尚的大秃头上开两个黑窟窿,但是他又想,这种事儿可干不得。和尚的老婆在一边看见,难免要责怪于我。

“大师要宿,我们便行。大师要行时,我们就宿。”

“那就依相公说,我们再行一程!”

谁知那和尚吹得高兴,摇头晃脑,那一弹就从他耳边偏过去。书生一看没打中,不禁暗暗心惊。他的准头可以打中三十丈外一个小酒盅,如今打这么大一颗秃头,怎么会打不中?那和尚怎么早不晃头,晚不晃头,偏等他发弹时晃头?莫非这秃头不是吹牛,而是有些真实本领?书生收起弓,赶上去探探和尚的口风:

书生忽然想到:和尚没说过跳蚤有户口本,也没说过人是豆腐做的。他只说能识别跳蚤的牝牡,云母银丝也能杀人。既然他没有这么说,我怎么会这么想:这件事细究起来可有趣啦!原来是我非要这么想,好有理由打死他。现在和尚打不死,我可怎么办好?相信跳蚤有户口本,还是相信自己一脑子豆腐渣?他只顾想心事,就没看到月儿西坠,东方破晓,林间展鸟瞅瞅,山谷里起了雾气。他也没看到这条路走也走不完,原来是和尚领着他在兜圈子。忽然和尚把他领进一个山凹,这里有一辆轿车,车夫在辕上打瞌睡。

书生发弹的时候,和尚刚好走到阴影里。转眼之间他又从阴影里走出来,闪光的秃头还是安然无恙。书生这一惊非同小可,因为他放这一弹时格外的小心手稳,绝无脱靶的可能。看来这和尚不是吹牛皮,而是真有本领。他把弓收起来,打马追上。去,心想不得了,和尚说的全是实话,射蚊子射跳蚤实有其事,云母刀、银丝剑也是真的。和尚确实是止咳丸,也确实有人认识跳蚤文。女蜗娘娘确实在海边点了一锅豆腐,药书上也确实写着秃和尚寒平。这都是从和尚不吹牛推出的必然结论!书生这么一想心里马上乱糟糟。抬头一看前面,书生又禁不住惊叫一声:

“那就依相公说,我们再行一程!”

“那就依相公说,我们再行一程!”

书生想:这不对。要是不迷路,早该走出山区。可是前面山势更险峻!何况车辆也不见了,这要不是走错路,除非我真的长了一脑子豆腐渣!他说:

书生想:这和尚的耳朵不知是怎么长的,弹丸飞过是什么声音,屎克螂飞过是什么声音?他又觉得这和尚怪可怜的,嘴里谈着出神入化的武功,背后有人暗算,却都不知道。催命的小鬼儿擦耳根子过去,他还以为是屎克螂!让他想去吧,不值当为他说嘴就把他打死。两人又并肩而行,谈到各种武功,说到拳脚棍棒,和尚又有很多说法,就如骑射剑术,都是书生见所未见,闻所未闻,根本无法想象的事。而且他胖乎乎。傻呵呵,月光下一颗大秃头白森森、亮灼灼,让人看了一发忍不住要朝上面下手。

车夫听见马蹄响抬头一看,见到这一增一儒,吓得直翻白眼,这一夜他经过不少惊吓,吓得再不敢说话。和尚说:“相公,宝眷都在这里,我到家去吩咐酒宴,一会儿就回来接你。”

这一僧一儒互诉心曲以后,就一起到和尚家里去。和尚要招待书生,把他当成最好的朋友。

和尚虽然肥胖,但却一点也不喘,说起话来底气充足,声如驴鸣:“相公说的是!现在的僧寺尼庵,算什么佛门清静?那班小和尚看起女人来,直勾勾地目不转睛。老衲要出门云游,家眷放在寺里就不能放心,只得带了同行。这世道真没了体统!”

“依相公说,我们就住宿。”

书生发弹的时候,和尚刚好走到阴影里。转眼之间他又从阴影里走出来,闪光的秃头还是安然无恙。书生这一惊非同小可,因为他放这一弹时格外的小心手稳,绝无脱靶的可能。看来这和尚不是吹牛皮,而是真有本领。他把弓收起来,打马追上。去,心想不得了,和尚说的全是实话,射蚊子射跳蚤实有其事,云母刀、银丝剑也是真的。和尚确实是止咳丸,也确实有人认识跳蚤文。女蜗娘娘确实在海边点了一锅豆腐,药书上也确实写着秃和尚寒平。这都是从和尚不吹牛推出的必然结论!书生这么一想心里马上乱糟糟。抬头一看前面,书生又禁不住惊叫一声:

书生抬头一看,发现已经走到深山里。和尚哈哈大笑,说走夜路有人谈话,真真是有趣。我们不如叫家眷车仗先行,自己在后面深谈。书生点点头,心里说:这样好多啦!我要是憋不住了,没人看见正好揍你。于是他们站在路边,让车辆到前面去。

书生到轿车前撩开帘子一看,老婆丫环在里面正在熟睡。这些人可享福啦,车一进山就睡着,到现在还没有醒。回头再看和尚,他已经去远了,书生又纵马追上去,这回和尚十分不耐烦。

书生听了这番话,心里又是一片麻痒。这贼秃吹得真是没谱了。试问云母极脆,何以为刀?银丝极柔,又何以为剑?倘若云母、银丝都杀得了人,用一根头发就能把人脑袋勒了去。试问人身子是豆腐做的吗?原来女蜗造人是这么一个过程:她老人家补天之余,在海边煮了一大锅豆浆,用海水一点,点出一锅豆腐来,这就是咱们的老祖宗。女娲娘娘不简单,一只锅里能煮出男豆腐和女豆腐,两块豆腐一就合,就生下一个小豆腐?真他妈岂有此理。玉皇大帝坐在九天之上,阎罗大帝坐在冥罗地府,主管人的福禄生死,原来是两家合资开了个豆腐坊。好,太好了!书生悄悄落到后面去,偷手取出弹弓,照和尚脑后一弹弹去。

追了十里路,总算追上了和尚。书生长出一口气,两个人并缰行起来,他可没看见和尚瞪起三角眼,面上罩起了乌云。两人各自想心事,再也不交谈。

书生说:“大师,我们还九网是同行。书生在想些心事,想明了要向大师一诉心曲。”

和尚说:安南的女子娇小玲珑,性情温柔,拥在膝上别有一番情趣;鲜卑女子高大白净,秀颈修长,最适于在榻上玉体横陈;东瀛的少女深谙礼节,举止得体,用做侍婢再合适也没有;西域的蛮女热情如火,性欲旺盛,家里有一个就够,万不能有两个。谈到中国女人,和尚认为三湘女子温柔,巴蜀女子多才,陇西的女子忠诚,关中的女子适合当老婆。天下只有燕赵的老婆最要不得,因为完全是母老虎。听到最后一句话,书生有点上火,因为他老婆是河北人。于是他接口说道,现在的女人都不成体统,遇上谁就和谁过,也不管他是和尚道士,头上有毛没毛。关于这一点,和尚说不能怪女人。这些年来先是安史之乱,后来又边乱纷纷。天下男了去了十之八九,女孩子却还得嫁人。所以,嫁个和尚也不错。听了这种话,书生差点笑出来,这个和尚有趣得紧啦!

书生想:这和尚恁地没廉耻!我不要他同行。此时太阳已经落山,前面是个市镇。书生说:“大师要住宿吗?这里有好大客栈,正好住宿!”

“相公,家眷已经还给你,你还跟着我待怎地!”

这一僧一儒互诉心曲以后,就一起到和尚家里去。和尚要招待书生,把他当成最好的朋友。

书生一听,心里更麻痒难忍。强盗响马见了你不

http://www.99lib•net

咳嗽,你是止咳丸吗?我读遍了药书没见有这么一条,秃和尚,性寒平,镇咳平喘,止痰生津,不须炮制,效力如神。是药王爷爷写漏了,还是你来冒充?就算你是止咳九,吃了才能生效,怎么看一眼也管用?你不如去开诊所,让普天下的三期肺痨,哮喘症,气管炎,肺气肿的病号排着队去看你的秃脑袋。吹牛皮不上税,生怕稍有疏漏,吃了小贼的亏,就凭你一个吹牛皮的和尚,走起路来这么舒心。强盗大约是觉得抢和尚晦气,所以放过了你,不过我却放你不过!

书生盘算了好多,可是和尚却不来质疑。他说像这样的剑只能说是凡品,虽然在凡品中又算是最上等。如果以剃刀在青竹面上剥下一缕竹皮,提在指间就是一柄好剑。拿它朝水上的蜉蝣一挥,那虫子犹不知死,还在飞。飞出一丈多远,忽然分成两半掉下来。倘若老僧手中有这么一柄剑,只消轻轻一挥、相公不知不觉之中就着了和尚的道儿。你还不知道,高高兴兴走回家去。到晚间更衣,要与夫人同入罗绍帐时,才发现已被老僧去了势。说完了和尚哈哈大笑,书生却气坏了,心说:

“相公,你的马瘸了,看看它是不是漏了蹄?”

“大师,经过十年战乱,不仅是中原残破十室九空,而且人心不古世道浇漓。我听说有些尼姑招赘男人过活,还听说有些和尚和女人同居。生下一批小娃娃,弄得佛门清净地里晾满了尿布,真不成体统!”

书生说:“大师,我们还九网是同行。书生在想些心事,想明了要向大师一诉心曲。”

“依相公说,我们就住宿。”

和尚骑着骡子,护送着一队车仗。轿车里传出女人的笑语,板车上满载箱笼。虽然书生盼望一个谈伴,这一位他可不喜欢。第一,和尚太无耻,居然和女人同行。第二,和尚太肥,连脑后都堆满了一颤一颤的肥肉。因为和尚不留头发,这一点看得十分清楚。等了一天,等来这么一个人,不是晦气么?等到彼此通过姓名,书生就出言相讥,存心要和尚难堪:

此时月亮已经升到中天,山里一片银色世界。坡上吹着轻轻的风,又干净,又明亮,好像瓦面上的琉璃。月光下满山的树叶都在闪亮,在某些地方晃动。在另一些地方不晃动。书生想,这真是个漂亮的世界。老天保佑,我可别干什么不雅的事情。等到心里的奇痒平息,他就随和尚走去,继续谈到很多事情。

“相公,你的马瘸了,看看它是不是漏了蹄?”

和尚也在想心事,他也勒住马,长出一口气说:“相公,我也想明白了。”

于是这两人又在山路上同行,渐渐走到山顶上去。终于旭日东升,阳光普照,书生勒住马长出一口气说:

“当然,相公是老僧的好友,和尚绝不会阉了你。老僧这等剑术,在剑客里也只算一般。有一位大盗以北海的云母为刀,那东西不在正午阳光下谁也看不见,砍起人来,就如人头自己往地下滚,真是好看!还有一位剑客以极细的银丝为剑,剑既无形,剑客的手法又快到无影。不知不觉一剑刺在你左胸,别住了心脏不能跳动。登时你胸闷气短,又请郎中,又灌汤药,越治越不灵。此时剑客先生站在一边看热闹,要是他老人家心情好,上前把剑拔去,你还能活。万一他输了钱,你就死吧,到死还以为是自己得了心绞痛!”

虽然书生不信和尚的牛皮,他也怕和尚的本领。忽然天上飞过一片黑云,把月亮遮了个严丝合缝。周围伸手不见五指,两个人都勒马不行。和尚还在喋喋不休。书生拿出弓来,朝黑地里发声的地方打一串连环弹,这回就是神出鬼没的黄鼠狼,也逃不开黑暗中袭来的弹雨。最后一弹刚出手,书生就鼓掌大笑起来。

追了十里路,总算追上了和尚。书生长出一口气,两个人并缰行起来,他可没看见和尚瞪起三角眼,面上罩起了乌云。两人各自想心事,再也不交谈。

书生抬头一看,发现已经走到深山里。和尚哈哈大笑,说走夜路有人谈话,真真是有趣。我们不如叫家眷车仗先行,自己在后面深谈。书生点点头,心里说:这样好多啦!我要是憋不住了,没人看见正好揍你。于是他们站在路边,让车辆到前面去。

和尚说:“这样的行路人也只算些胆小鬼,见到发狠的主儿,只能夹屁而逃,只恨爹娘少生了两条腿。你看和尚我,手无寸铁,坦荡荡走遍天下,随身只有一根撒尿的肉棍儿,谁敢来动老子一根毫毛?老和尚吼一声,能震得别人耳朵里流汤。跺跺脚,对面的人就立脚不稳。山贼水寇、见了我都叫爷爷;响马强盗在我面前,连咳嗽都不敢高声。所以我走起路来,兴高采烈,这样出门才有兴致。小心?小心干什么?”

“大师,我想明白了!”

和尚说:“相公,老僧自小习些武艺,专在山道上干没本的生意。和尚虽然抢劫,却不杀人,我专拣相公这样的人同行。你说东,我说西,你说鸡生蛋,我说蛋生鸡。说急了你打我我就露几手把你吓跑,家眷行李就都归我了。现在我想明白了,这种做法非常之不好。就以今晚来说。你打我一弹打不着,两弹打不着,最后打我一串连环弹,你还是不逃走,此时我就太难堪了。你现在站在我面前,难道我就因此一巴掌把你脑袋拍到腔子里?这不好,因为我已经抢了你的行李,又把你打死,实在太凶残。难道我就因此把行李还你?这也不好,因为你已经打了我十七八弹,还是我招着你打的。不抢你的东西,我来挨你打,那不成了受虐狂?所以,抢劫不是好游戏,无论如何,不要抢劫。”

此时月亮已经升到中天,山里一片银色世界。坡上吹着轻轻的风,又干净,又明亮,好像瓦面上的琉璃。月光下满山的树叶都在闪亮,在某些地方晃动。在另一些地方不晃动。书生想,这真是个漂亮的世界。老天保佑,我可别干什么不雅的事情。等到心里的奇痒平息,他就随和尚走去,继续谈到很多事情。

“相公,这是去我家的路,老僧一世也没见过比你更有趣的人。所以要请相公到寒寺盘桓几天,宝眷和行李走了近路,现在已经到家了,我和相公走一条远路,意在聆听高论。”

忽然和尚一声暴喝:“深山无人,相公这么一惊一乍,可是要吓死老僧?”书生大吃一惊,连忙把弓收起。过了一会,乌云过去,书生看到和尚安全无恙,两个人重新上路。

书生想:这和尚有痰气。和你说正经事儿,你只当是胡扯。看来有必要深谈下去,才能激发你的危机感。于是他说:“如今敢出门走路的人也都不简单。这年头儿,出远门儿就如爬刀山下火海,没个三头六臂谁敢出来?所以你看到个走乡的货郎,他可能在腰里挂着铁流星。看到个挑脚的力夫,他袖里可能有袖箭。就是个卖笑的娼妓,怀里还可能有短剑哪!人身上有了家伙,胆就粗,气就壮,在酒楼和陌生人饮酒,一语不合就互挥老拳,手上还戴着带刺的手扣子。在山道上与人争路,气不愤时就抡起檀木棍,打出脑子来就往山洞一扔。只要你敢用白眼瞪我,老子就用八斤重的铁蒺藜拽你,躲得过躲不过是你自己的事,所以如今走路可是要小心。说话要小心,做事也要小心。招得别人发了火,你的脑袋就不安稳。”

和尚也在想心事,他也勒住马,长出一口气说:“相公,我也想明白了。”

书生想:这和尚恁地没廉耻!我不要他同行。此时太阳已经落山,前面是个市镇。书生说:“大师要住宿吗?这里有好大客栈,正好住宿!”

玄宗在世最后几年,行路不太平。那年头出门在外的人无不在身上怀有兵刃。虽然如此,见到路边躺着喂乌鸦的死人,还是免不了害怕。一般人没有要紧的大事,谁也不出门,大路上因此空空荡荡。有一天,一个书生骑着骏马,押着车仗,在关中的大道上行走。那时候正值夏日,在马上极目四望,来路上没有行人,去路藏书网上也没有行人,田野上看不到农夫,只有远处地平线上空气翻滚,好像无色的火焰。车轮吱吱响,好像在脑子里碾过。书生在马背上颠簸,只觉得热汗淋漓,昏昏沉沉。旅行真是乏味的事,如果有个人聊聊就好了。书生不想和车夫谈话,因为他们言语粗鄙,也不想和轿车里的女人谈话,因为她们太蠢了。因此他就盼着遇上个行人,哪怕是游方的郎中,走方的小炉匠也好。可是从上午一直走到下午,谁也没遇上。直到夕阳西下,天气转凉时,才遇上一个和尚。

书生发弹的时候,和尚刚好走到阴影里。转眼之间他又从阴影里走出来,闪光的秃头还是安然无恙。书生这一惊非同小可,因为他放这一弹时格外的小心手稳,绝无脱靶的可能。看来这和尚不是吹牛皮,而是真有本领。他把弓收起来,打马追上。去,心想不得了,和尚说的全是实话,射蚊子射跳蚤实有其事,云母刀、银丝剑也是真的。和尚确实是止咳丸,也确实有人认识跳蚤文。女蜗娘娘确实在海边点了一锅豆腐,药书上也确实写着秃和尚寒平。这都是从和尚不吹牛推出的必然结论!书生这么一想心里马上乱糟糟。抬头一看前面,书生又禁不住惊叫一声:

“上人,你可知如今路上不太平?现在山有山贼,水有水寇。有些贼杀了人往道边上一扔,那是积德的。有的贼杀法新奇,伤天害理。昨天我们过汉水,车夫见水色青青,就下去凫水。一个猛子扎下去,见到水底下一大群人,一个个翻着白眼儿,脚下坠着大铁球,鼻子嘴唇都被鱼啃了去,那模样真是吓死人!我还听说温州有个土贼专门要把人按在酱缸里淹99lib•net死,日后挖出来,腌得像酱黄瓜,浑身都是皱。还有人把活人挂到熏坊里熏死,尸首和腊肉一般无二,差点儿当猪卖了出去。现在的人哪,杀人都杀出幽默感来了!”

此时的月亮比刚才又亮了些。书生心里在大笑,满山的玉树银花仿佛在他身边飞舞。心里想笑,嘴上却不能笑,这可不好受。他想:我要和这位秃大爷谈些悲哀的题目,免得他招得我要打他的秃脑壳。于是他说:

书生说:‘大师,小生自幼习武,会些弹术剑法。别人说话不合我心意,我就把他脑袋打开花,叫他说不下去。现在我明白了,这种做法非常之不好。小时候下棋,每到要输时我就把刀拔出来往棋盘上一插,于是长胜不败,结果到现在还是一把屎棋。听人说99lib•net话也如此,倘若大师说得不对我胃口就把您打杀,怎能够增加见识。比方说,大师若说生姜是树生的果子,我只能说,您说得不对,却不能把大师打死。因为打不死时,我就太难堪了。大师现在活着站在我面前,难道我就因此相信生姜是树上生的?所以杀人不是好游戏,无论如何,不要杀人。”

“当然,相公是老僧的好友,和尚绝不会阉了你。老僧这等剑术,在剑客里也只算一般。有一位大盗以北海的云母为刀,那东西不在正午阳光下谁也看不见,砍起人来,就如人头自己往地下滚,真是好看!还有一位剑客以极细的银丝为剑,剑既无形,剑客的手法又快到无影。不知不觉一剑刺在你左胸,别住了心脏不能跳动。登时你胸闷气短,又请郎中,又灌汤药,越治越不灵。此时剑客先生站在一边看热闹,要是他老人家心情好,上前把剑拔去,你还能活。万一他输了钱,你就死吧,到死还以为是自己得了心绞痛!”

追了十里路,总算追上了和尚。书生长出一口气,两个人并缰行起来,他可没看见和尚瞪起三角眼,面上罩起了乌云。两人各自想心事,再也不交谈。

追了十里路,总算追上了和尚。书生长出一口气,两个人并缰行起来,他可没看见和尚瞪起三角眼,面上罩起了乌云。两人各自想心事,再也不交谈。

“你这老贼秃!我不来杀你,已经是十分好了,你倒来取笑我,可是活得不耐烦了?”可是那和尚又说下去:

和尚说,看来相公对于射艺很有心得,可称是一位行家。不过在老僧看来,依照天时地利的不同,选择弓矢去射,不免沾上一点雕琢的痕迹。莫如就地取材信手拈来。比如老僧在静室里参禅,飞蝇扰人,就随手取绿豆为丸弹之,百不失一,这就略得射艺的意思。夏夜蚊声可厌,信手撅下竹帘一条,绷上头发以松针射之,只听嗡嗡声一一终止,这就算稍窥射艺之奥妙。跳蚤扰人时,老僧以席蔑为弓,以蚕丝为弦,用胡子茬把公跳蚤全部射杀,母跳蚤渴望爱情,就从静室里搬出去。贫僧的射法还不能说是精妙,射艺极善者以气息吹动豹尾上的秋毫,去射击阳光中飞舞的微尘,到了这一步,才能叫炉火纯青。

和尚说:“相公,老僧自小习些武艺,专在山道上干没本的生意。和尚虽然抢劫,却不杀人,我专拣相公这样的人同行。你说东,我说西,你说鸡生蛋,我说蛋生鸡。说急了你打我我就露几手把你吓跑,家眷行李就都归我了。现在我想明白了,这种做法非常之不好。就以今晚来说。你打我一弹打不着,两弹打不着,最后打我一串连环弹,你还是不逃走,此时我就太难堪了。你现在站在我面前,难道我就因此一巴掌把你脑袋拍到腔子里?这不好,因为我已经抢了你的行李,又把你打死,实在太凶残。难道我就因此把行李还你?这也不好,因为你已经打了我十七八弹,还是我招着你打的。不抢你的东西,我来挨你打,那不成了受虐狂?所以,抢劫不是好游戏,无论如何,不要抢劫。”

玄宗在世最后几年,行路不太平。那年头出门在外的人无不在身上怀有兵刃。虽然如此,见到路边躺着喂乌鸦的死人,还是免不了害怕。一般人没有要紧的大事,谁也不出门,大路上因此空空荡荡。有一天,一个书生骑着骏马,押着车仗,在关中的大道上行走。那时候正值夏日,在马上极目四望,来路上没有行人,去路藏书网上也没有行人,田野上看不到农夫,只有远处地平线上空气翻滚,好像无色的火焰。车轮吱吱响,好像在脑子里碾过。书生在马背上颠簸,只觉得热汗淋漓,昏昏沉沉。旅行真是乏味的事,如果有个人聊聊就好了。书生不想和车夫谈话,因为他们言语粗鄙,也不想和轿车里的女人谈话,因为她们太蠢了。因此他就盼着遇上个行人,哪怕是游方的郎中,走方的小炉匠也好。可是从上午一直走到下午,谁也没遇上。直到夕阳西下,天气转凉时,才遇上一个和尚。

“大师宿下,我们乘晚凉再行一程。”

“大师宿下,我们乘晚凉再行一程。”

书生想:真糟糕,心不在焉,马瘸了都不知道。于是他下马去,把四个蹄子全看遍,蹄铁全是好好的。这却怪,蹄不漏,马怎会瘸?牵着马走几步,发现它根本不瘸。马既然不瘸,和尚怎么说它瘸?再抬头一看,和尚也不见了,书生真的大吃一惊,觉得是遇上了鬼。他上马向前追去,大呼:“上人!上人!等一等#

“上人,你可知如今路上不太平?现在山有山贼,水有水寇。有些贼杀了人往道边上一扔,那是积德的。有的贼杀法新奇,伤天害理。昨天我们过汉水,车夫见水色青青,就下去凫水。一个猛子扎下去,见到水底下一大群人,一个个翻着白眼儿,脚下坠着大铁球,鼻子嘴唇都被鱼啃了去,那模样真是吓死人!我还听说温州有个土贼专门要把人按在酱缸里淹99lib•net死,日后挖出来,腌得像酱黄瓜,浑身都是皱。还有人把活人挂到熏坊里熏死,尸首和腊肉一般无二,差点儿当猪卖了出去。现在的人哪,杀人都杀出幽默感来了!”

这一僧一儒互诉心曲以后,就一起到和尚家里去。和尚要招待书生,把他当成最好的朋友。

和尚说,看来相公对于射艺很有心得,可称是一位行家。不过在老僧看来,依照天时地利的不同,选择弓矢去射,不免沾上一点雕琢的痕迹。莫如就地取材信手拈来。比如老僧在静室里参禅,飞蝇扰人,就随手取绿豆为丸弹之,百不失一,这就略得射艺的意思。夏夜蚊声可厌,信手撅下竹帘一条,绷上头发以松针射之,只听嗡嗡声一一终止,这就算稍窥射艺之奥妙。跳蚤扰人时,老僧以席蔑为弓,以蚕丝为弦,用胡子茬把公跳蚤全部射杀,母跳蚤渴望爱情,就从静室里搬出去。贫僧的射法还不能说是精妙,射艺极善者以气息吹动豹尾上的秋毫,去射击阳光中飞舞的微尘,到了这一步,才能叫炉火纯青。

“那就依相公说,我们再行一程!”

书生盘算了好多,可是和尚却不来质疑。他说像这样的剑只能说是凡品,虽然在凡品中又算是最上等。如果以剃刀在青竹面上剥下一缕竹皮,提在指间就是一柄好剑。拿它朝水上的蜉蝣一挥,那虫子犹不知死,还在飞。飞出一丈多远,忽然分成两半掉下来。倘若老僧手中有这么一柄剑,只消轻轻一挥、相公不知不觉之中就着了和尚的道儿。你还不知道,高高兴兴走回家去。到晚间更衣,要与夫人同入罗绍帐时,才发现已被老僧去了势。说完了和尚哈哈大笑,书生却气坏了,心说:

谁知那和尚吹得高兴,摇头晃脑,那一弹就从他耳边偏过去。书生一看没打中,不禁暗暗心惊。他的准头可以打中三十丈外一个小酒盅,如今打这么大一颗秃头,怎么会打不中?那和尚怎么早不晃头,晚不晃头,偏等他发弹时晃头?莫非这秃头不是吹牛,而是有些真实本领?书生收起弓,赶上去探探和尚的口风:

书生心里还在发痒,他真不乐意世界上有和尚这个人。如果世界上存在这和尚,就得相信跳蚤有户口本,人是豆腐做的。这些事一想痒得受不住,所以根本没法相信。但是同样没法相信的事儿已经发生了。今晚用弹子打斗大一个秃脑袋,三番五次打不中。他只顾想这些心事,忽听和尚说

读《BDD in Action》(1)

使用 BDD 定义需求

Chapter 3

我们学到如何通过 BDD 来评判一个 Feature 的价值,从而确定要做什么,更重要的不做什么,这是做一个正确的软件的核心。

要对一个问题深入了解,最好的方法莫过于提问题了吧。我们在进行一个软件的设计之前,首先要做的就是要去了解真正的需求,而这个真正的需求往往并不容易找到,所以需要以下四个问题:

  1. 为什么要开发这个软件?(愿景)
  2. 这个软件能给公司带来什么价值?(业务目标)
  3. 这个项目的利益相关者都是谁,这个项目如何影响他们?
  4. 这个软件要为利益相关者提供什么功能才能有效的实现他们的业务目标?

三项技术可以用来分析以上问题:

Feature Injection: 帮助找出那些可以满足业务目标的 Feature 。
Impact Mapping: 可视化 业务目标, 利息相关者 和 Feature 的关系。
Purpose-Based Alignment Model: 帮助评估每个 Feature 需要的投入。

下面分别说明这三个技术:

Feature Injection

它提供了一个框架来让 BDD 聚焦在那些提供真正的业务价值的 Feature 上. 它强调与利益相关者的不断的沟通从而彻底明白我们到底想要做什么并且还要知道为什么。分以下三步:

  1. 捕获价值
    首先我们需要清晰的获知这个系统的业务价值,然后找出能传达出业务价值的Feature,结下来我们就可以聚焦在这些Feature上,这就是捕获价值,实际上是基于价值找到核心的 Feature
  2. 注入 Feature
    价值来自输出,而不是输入。所以,要通过要获得的输出来去反推对应的 Feature。这里注入的意思类似与依赖注入的意思,实际是反向依赖的意思,正常是输出依赖 Feature, 现在是通过输出反推要做那些 Feature。
  3. 找出示例
    以上我们得到的 Feature 描述很片面,为了加深理解,需要更多的影响输出的输入和行为。示例对我们都更容易理解,能够扫除假设和误解。

以下是一场图,说明了不同层次的需求:

  1. 愿景

是高层的目标,要简短凝练,能够凝聚力量,指引方向

在《Crossing the Chasm: Marketing and Selling High-Tech Products to Mainstream Customers》一书中,总结了一个表达愿景的模板:

对于 <目标用户>
他们 <有什么需求>
我们的这个产品 <名称> 属于 <什么类型>什么类类型型
不像 <其他的竟品>
我们的这个产品 <有什么不同>

例如:

对于 学生,上班族
他们 出于某些目的学英语
我们的这个产品 学英语 是一款 移动应用
不像 流利说呀,新东方呀
我们的这个产品 可以随时随地的学习, 还能的分析给出及时的反馈,用户的每一个学习都会有记录并且还有根据评估制定出学习方案,系统的学习。

再例如:

对于 学生,上班族
他们 想分享自己的学习,兴趣,等等其他视频
我们的这个产品 社区 是一款 社区应用
不像 贴吧,优酷
我们 会对用户的上传进行严格审核,我们想方设法鼓励用户投稿,参加活动,鼓励互动

  1. 降低一层,业务目标

业务目标的描述也会有特定的格式:

为了什么目标
作为某某某
我要做什么

例如:

为了在半年内实现用户翻倍
作为 社区的管理者
我要鼓励用户去拉亲朋好友来

一个好的业务目标应该具有一些特征:

  • 具体: 不仅要让读者知道做什么,还要知道为什么,出于什么利益考虑
  • 可测量: 这有利于表达期望达到的目标,方便判断是否完成,一般可以通过时间和数量来实现可测量比如:半年时间,实现用户的翻倍
  • 可实现:
  • 相关:这应该最重要的,要基于当前的情况,比如以上的用户翻倍,是基于有了一定的用户量了
  • 时间限制

业务目标可以有多个,基本上可以分为以下四类:

  • 增加收入
  • 减少支出
  • 保护收入
  • 避免未来的支出

非营利的组织呢,业务目标分为:

  • 提高服务
  • 减少支出
  • 减少未来支出

不断的问why来挖掘商业目的

无论是业务负责人还是用户,他们都不能表达他们的需求,他们只是说出他们具体的方案来,或者想要的功能来。这时候就需要对他们的需求进行拷问,找到深层的需求,然后再讨论他是否是最佳方案。

这里用到了《你的灯还亮着吗》

Impact Mapping: 一种可视化方式

Impact Mapping 将 业务目标, 牵扯到的人员, Feature 的关联可视化了, 如图:

通过不断的问问题(Why, Who, How, What),使用思维导图,来发散,并且具体化

它是一个工具,可以在这里深入学习:
Impact Mapping website

或者看书: Impact Mapping by Gojko Adzic

谁会收益?找出利益相关者和他们的需求

所有项目都是要让组织受益,组织是由人组成的,所以需要这出他们从他们开始。

这些利益相关这包括,使用产品的用户,包括项目管理这等等,还包括间接相关的人,维护系统的人等等。

一旦找到了利益相关者,理解了他们的需求,就可以考虑项目要具备什么功能来满足他们了。

功能点(capability) 是高层的概念,不是实现,它们具有选择不同实现的灵活性。

哪个 Feature 将会提供最大的 ROI? 用 Purpose-Based Alignment Model 找出它来

是一个二维相限, 横轴是业务上的重要性, 纵轴是与竞品的不同

KISS原理(翻译)

What does KISS stand for?

原文 https://people.apache.org/~fhanik/kiss.html

KISS 是“保持一个东西的简单,用起来傻瓜式的”英文(KEEP IT SIMPLE AND STUPID)缩写。

神马意思?

这个原则让我在做软件工程的这几年里获得了巨大的成功。今天,困扰广大软件工程师和开发人员的一个大问题就是他们要去克服复杂的问题。

通常,当一个开发者遇到一个难题时,他们几乎都会想到将他分解成更小的部分,以便于他们可以理解然后尝试用代码实现解决方案。 我想说的是他们分解的还不够小,对那小部分也理解不够深。这导致他们即使解决最简单的问题,也会使用非常复杂的实现。另一个副作用是产生面条代码(就是那种很乱的代码),我们可能只想到 BASIC 使用了 goto 就是面条代码了,实际上也包括在 Java 里那些包含500到1000行代码的雷。

This code clutter is a result of the developer realizing exception cases to his original solution while he is typing in code. These exception cases would have solved if the developer had broken down the problem further.
这种代码混乱是因为开发者在编写代码实现他们的解决方案的过程中意识到了很多异常情况需要处理。如果研发者分解问题更细,这些异常情况是可以解决的。

我如何从 KISS 原则中获益

  • 能更快地解决更多问题
  • 用更少的代码解决更困难的问题
  • 写出高质量的代码
  • 构建更大的系统,更容易维护
  • 代码更灵活,更容易扩展,当有新需求时更容易满足它们
  • 比想象的实现更多
  • 能在很大的项目中团队中工作

如何在我的工作中应用 KISS 原则

只需要几步, 非常简单,但是某些也是挑战。就像听起来的那样,保持简单,就是耐心的问题,主要是对你自己。

  • 谦逊,不要把自己想象成一个天才,这是第一个错误。谦逊了,你最终就能达到天才的状态,但即使不是,谁又在乎呢。你的代码是简单的,所以没必要是天才。
  • 把任务分解成子任务,足够小,小到你认为自己4到12个小时就能解决它。
  • 把你的问题分解的足够小,每个问题能用1各类或者非常少的类就能实现。
  • 保持方法足够小,小到只有三四十行,每个方法应该解决一些小问题,如果一个方法里有很多条件判断,把他们分解成更小的方法。不仅仅因为这样更容易读,更容易维护,而且也更容易找到bug。别忘了多使用重构功能。
  • 同样的类也要足够小
  • 先解决这个问题,有了方案,在写代码。而不是在写代码的过程中解决问题,这也没有错,事实上,你可以两种方式结合起来做。
    如果你能将一个事情分解的非常小,那就尽量在编码的时候去这样做吧。但是别害怕一遍一遍一遍的去重构你的代码。最终的结果才重要,代码更少当然更好
  • 不要害怕扔掉代码。当遇到不存在的需求,或者发现更好的解决方案时,删掉就代码吧。如果你遵照以上建议,重写的代码比会最少,如果不遵守肯定会有很多重写。
  • 在其他情况下也要尽可能的简单,这是最难的模式,但是一旦你坚持了,当回头看时,你会感叹当时是怎么写出来的呀。

有什么遵循 KISS 原则的例子吗?

有很多,我将会找一些放在这. 但是现在我先告诉你:

世界上最伟大的算法总是那些代码行数最少的一些。很容易理解. 算法的创建着把问题分解的足够小,足够简单,以便于可以用代码实现它们。很多伟大的问题解决者不是开发人员,但是却能写出伟大的代码。

KISS 只能应用于 Java

绝对不是,他可以一个用于各种其他的语言,甚至可以扩展应用到你生活的各个地方。
唯一的不能使用 KISS 原则的地方是:情感, 爱, 最重要的你的婚姻。


这篇文章是2016年写的,实际是直接把英文内容复制过来的,也不知到当时看没看完,一点印象都没有了。现在 2020年3月2日,翻译成了中文,感觉没什么高深了,就当练练翻译吧。

最后的 KISS 不能应用于 情感,爱,婚姻, 直接升华了,很棒。

其实这个就是说的 TDD,或者更先进说法 BDD。或者说 TDD/BDD 遵循了 KISS 原则,试图将问题提前分解,每次只去解决一个很小的问题。当然 TDD/BDD 包含了更多。

《挪威的森林》读后感

今天看完了 《挪威的森林》,相当的棒,上次有这种感觉大概是在看完《悲惨的世界》的时候,因为比较长,所以看的时间就会长,但是因为被内容吸引,所以会一直看,一有空就看,感觉这段时间自己真的参与其中。在我看来这是从看电影中得不来的。因为电影顶长大多也就三个小时,虽然现在有美剧,但是一口气看下来感觉有点过意不去,感觉太放纵。而读书就没有这种感觉。另外,电影里有些对话或者细节可能很容易忽略,读书就好一点,当然这可能是能力的问题了。

村上春树这个人早有耳闻,一直也想看他的书,但是小说在我的读书列表里拍的是比较靠后的,小说里排在前面的都是一些世界名著,比如《雾都孤儿》,《复活》,《巴黎圣母院》。现在这些书都还没有看,去看了《挪威的森林》,为什么呢?让我们慢慢说来,年初的时候,我想提高自己的写作能力,所以找了好多书,其中有一本 《当我谈跑步时我在谈些什么》,网上人家推荐的,我就看了,发现当他在谈跑步时,他并没有谈写作。不过却让我对村上春树产生了兴趣。此时,我在呼和浩特一个民俗居住,他家厕所门口有个书架,我上厕所出来,偶尔会看看都有什么书,于是就发现了《挪威的森林》这本书,因为当时还在看《当我谈跑步时我在谈些什么》这本书,就打算看完了,在看《挪威的森林》。

《当我谈跑步时我在谈些什么》这本书算是村上春树的一本自传,只不过是围绕跑步,以跑步为线索的,读完,我以为我对他有所了解。然而,当我看到《挪威的森林》的后半部分时,我发现,我真的不了解他,让我很是触动,竟然对色情描写这么多。对于一个看惯了岛国动作片的人来说,这不失为一剂清新剂。这里要再次感慨,电影不如读书有感觉。

当然,给我触动的不仅仅是对色情的描写,还有在塑造的人物形象的技能,简直是高超,太鲜明了。我好像不曾看过言情的小说,但是我却很讨厌它们,也不知道怎么形成的这种观念。看名字就不想看,《娇宠王妃》呀,《独宠娇女》呀,我刚去我同事的微信读书书架找来的,哈哈,希望她看不到。女生比较喜欢看言情,她好像不只一次说我看的那些书都是啥呀(我喜欢看非虚构,方法论等)。每个人都有自己的喜好,所以也不会去评论啥,她也是打趣的说一说,我其实对品种不是太挑,我挑的是品质,因为读每一本书都有它的价值,但是价值的大小不同,我专挑那些经过时间检验的,不过有些功能书,也没得挑。

在《挪威的森林》这本书里,我特别敬佩的是,村上春树怎么能将两个性格迥异的年轻女孩子描写的这么传神,这么地道,这么丰满。感觉这难度,要比刘慈欣构造那个宇宙理论都难,当然他们之间没有可比性。但是村上春树对细节的描绘,简直就像真实经历过一样,我们一般人真正经历过也不会描绘这么详细。

《挪威的森林》里描绘的青年的生活,跟我的青年生活区别还是比较大的,当然打飞机自慰这一点是一样的,但是跟女孩子上床,而且跟女孩子的对话,女孩子的言论这么赤裸裸,我是有点不能接受的,至少在我从来没有发生过。可能日本的文化在这方面比中国要开放许多,可能我没交过女朋友的原因。不过仔细回想,我还真遇到过一个有点像绿子的女孩,当然并没有说话那么赤裸裸,但是有一次在地铁站门口看我对打底裤好奇,于是掀起裙子给我看,我还真有点接受不了,感觉有点尴尬。不过的的确确让我知道了打底裤是什么,安全裤是什么。事情过了,无论难过,还是难堪,写下来,总感觉还是挺有意思的。

对于绿子,我一开始还比较讨厌,感觉说话太过了,相处太累了,野蛮女友。不过后来感觉也挺喜欢,有什么感情表达出来,不藏着噎着,最后渡边君也选择绿子。

自由开发者2个月总结

再次看这个记录,已经是2018年的尾巴,有点不甘心,2018就这样过去了,我的自由开发者之路,随着我的西藏骑行之路的开始而结束,又一次留下了一个半成品。我要把这个记录发出来,因为我要接受我曾经的我,即使很不成熟,因为我会变的更好。

对于苦行,我觉得还是很有发言权的,因为我曾经干过不少在别人看来身体痛苦的事情。比如初中学期结束的时候,我会用背包背所有的书,大概有二三十斤吧,然后骑着自行车回家,尤其到寒假,马路上都在晒的小麦,骑自行车在上面无论自行车技术多么高超,都会很吃力的。而我,最惨的一次,骑着自行车,还要拿着凳子,我只能把凳子放到车把上,手扶着椅子,玩着杂技骑行,可能那次就在摊在马路上的小麦上滑到了,书好像是包在被子里的,结果都散在了小麦上。头顶上是火红的太阳,我在小麦上整理书,包起来,感觉特别难看,好像连太阳都在哈哈嘲笑我。脸上很热,很红,不知道是太阳晒得,还是难堪导致的。

高中,我开始走着回家,从英雄山中学做14路,然后转乘9路,到泰山医学院,那时候还没有直接通到家附近的32路,我就从泰山医学院走回家,不过走路对我来说并不算“苦”,只能算“行”。

大学里,走路更是多了,经常会走着去海边。到了毕业,去到北京,刚开始,吃饭是用一个从两元超市买的大海碗残次品,用一个热得快,在大海碗里放水,加热,然后削土豆片,白菜,放到里面,然后沾调料吃,虽然现在想想挺苦的,其实当时吃的可香着呢,能吃两三个馒头。再后来,在北京骑行过两次比较远距离的路程,一次是午夜从火车站骑摩拜回沙河高教园,另一次比较久了,都忘记去到哪里了。这两次都是比较艰难的,路程长,拿着行李多,不方便。

而这次的自由开发者的旅行,我尽量缩减要拿的东西,但是,因为要外出一年,就是这些必需品已经够多够沉了。好吧,主要还是因为我要练吉他,带了吉他,还想着拍照,带了单反。

我是信仰吃苦是福的,有着苦行僧的精神。

这是第二个月的总结,其实已经超过了半月了。现在,明显状态,心态,意志力不如刚开始的时候了。是该重整旗鼓了。每天,每周,每月的总结计划,都应该进行起来了。

来说说住的情况吧,从日照一个人住一个新房子,到济南住一个小隔间,再到天津住狗窝样的房子,再到呼和浩特住那样的婚房,再到银川住人家楼顶加盖的阁楼,热得不行,再到兰州住在这么一个闹市中的一个小单间了。不谈钱,只谈居住条件,感觉越来越不咋地。

下一站,就要去青海了,属于青藏高原啦,一定要做好准备,要开始跑步锻炼身体了,要开始做俯卧撑,要开始做仰卧起坐,总之,运动量一定要提高。

在学习了许岑的英语课后,对练技能也有了更深的认识,对重复也有了更深的理解,所以,许岑的英语任务,一定要一点不差的完成,不管花多少事件,还要把那个关于自信的TED演讲重复看上20遍,并且要去实践,而第一个要实践的行为就是去搭讪。它是最能检查我的自信的标准。加油吧。

ExponentiallyBucketedHistogram

接 QueueWork

在看 QueueWork 源码的时候,故意忽略掉了 debug 的相关代码,但是 ExponentiallyBucketedHistogram 这个类名看着还是挺吓人的。如果什么东西看着很可怕,让我们不敢接近,那我们就农村包围城市,逐渐了解它,知道发出那声感叹:原来没什么呀!!

源码在这

先从字面理解

Exponentially 是以指数方式地,成倍地
Bucketed 桶
Histogram 直方图,柱状图

额,还不知道是什么东西,会生成直方图?

### 看看怎么用的

1
2
3
4
5
6
7
8
9
10
11
12
private final static ExponentiallyBucketedHistogram
mWaitTimes = new ExponentiallyBucketedHistogram(16);

// ...

if (waitTime > 0 || hadMessages) {
mWaitTimes.add(Long.valueOf(waitTime).intValue());
mNumWaits++;
if (DEBUG || mNumWaits % 1024 == 0 || waitTime > MAX_WAIT_TIME_MILLIS) {
mWaitTimes.log(LOG_TAG, "waited: ");
}
}

发现用法实在是简单,只是在每次处理完任务后,把处理事件添加到这个直方图中,在达到一定条件的时候让这个直方图打印一下日志。

直面 ExponentiallyBucketedHistogram

还是要先看看累的注释的:
这个类是一个直方图,直方图的值都是正数,每个柱是前一个柱的2倍。
表示不太理解

有个属性是整数数组,在构造函数里初始化。

构造函数

这个构造函数够我们好好学习一会了。

1
2
3
4
public ExponentiallyBucketedHistogram(@IntRange(from = 1, to = 31) int numBuckets) {
numBuckets = Preconditions.checkArgumentInRange(numBuckets, 1, 31, "numBuckets");
mData = new int[numBuckets];
}

首先 @IntRange 是包 android.annotation 中的,这些注释很有用,在 Android Studio 里,在我们传的值不符合规则时,会标出黄线予以警告。这里 @IntRange 声明了参数 numBuckets 取值范围为 1 ~ 31。

接下来,Preconditions 这个类也是一个 Android 内部使用的类,根据名字“先决条件”,可以知道,是做先验检查。这个语句会在检查参数符合要求好正常返回,否则抛出异常。你可能会疑惑,之前的注解不就干这事情吗?并不是,注解只是能让 AndroidStudio 显示提示,程序员在写代码时,可能会忽视它,而这里,直接抛异常,让你无法忽略。而且,注解是在编译时给提醒,在编代码的过程中,就能提示。而这个先验检查则需要在运行时,如果大家都很关注注解的提示,也就不需要这个先验检查了。

add

1
2
3
4
5
6
7
public void add(int value) {
if (value <= 0) {
mData[0]++;
} else {
mData[Math.min(mData.length - 1, 32 - Integer.numberOfLeadingZeros(value))]++;
}
}

负责添加熟知,这里的 value,在 QueueWork 传进的处理一次任务花费的时间。根据注释的说明,在看代码,可以知道,当值小于等于0时都放到第一柱里,否则,否则就比较复杂了。首先得搞清楚 Integer.numberOfLeadingZeros 是个什么鬼? 看文档发现是看一个无符号整数在二进制是开头有多少个0。这个代码也是很奇妙呀:

1
2
3
4
5
6
int n = 1;
if (i >>> 16 == 0) { n += 16; i <<= 16; }
if (i >>> 24 == 0) { n += 8; i <<= 8; }
if (i >>> 28 == 0) { n += 4; i <<= 4; }
if (i >>> 30 == 0) { n += 2; i <<= 2; }
n -= i >>> 31;

>>> 是无符号数右移, 使用了二分发,有兴趣的可以研究一下。numberOfLeadingZeros 的注释中说
ceil(log2(x)) = 32 - numberOfLeadingZeros(x - 1),而在这个代码里,就跟等式右边类似的表达式,这样基本可以知道,那条语句的意思,对于添加的一个值,求他的log2,如果值比数组的最大的桶下标大,就取下表最大值。

而一个整形值,32位,这就是那个幻数的来历了,还记的构造函数的取值范围吗? 1 ~ 31,也出于这里的原因。为什么呢?

32 位用 log2 来划分,实际有33中取值,0 ~ 32,但是这分桶是看区间,所以是 1 ~ 31。其实细节还是不是很清楚,不过这时候我基本已经理解这个柱状图大体是个怎么个样子了。
hello

reset

本来想去看 log() 原来,还有个 reset 方法,虽然很简单,但是也涨了只是,

1
Arrays.fill(mData, 0);

如果以前我要做这工作,可能会自己遍历来了。实际这个方法也是想我要做的一样遍历,不过写起来方便嘛。Arrays 里有很多方便的方法,类似的还有 Strings,Collections

log

log方法用文字来表达了上面图像的内容,使用 StringBuilder 来构建字符串。输出格式类似这样:

1
hello[<1: 200, <2: 300, <4: 100, >=4: 800]

到此为止


  1. 最近在背英语单词呢,又学到了两个单词
  2. Arrays.fill(mData, 0) 填充一个数组
  3. numberOfLeadingZeros() 返回一个整数的二进制时的高位的0的个数

QueuedWork

QueuedWork源码

这是一个内部工具类,也就是说不会暴露 API,我们不能使用,但是我们可以从这里开始学习呀!

下面,我们先来翻译一下它的类注释

这个内部类用来追踪进程全局的待执行的任务
新的任务,会被入队列
还可以添加 ‘finisher’-runnables,会保证这些 finisher 在任务完成后执行
这个类是为了解决 SharedPrefenrences 一部保存而写的,我们会在 Activity.onPause 等类似的周期函数里等待保存任务完成。
但是我们未来也可能会把该类用到其他地方
入队的异步任务会在单独的专门的线程执行

对于一个陌生的东西,它可能有很多我们不知道的东西,某些可能我们缺少相关的基础只是,而另一些则是因为缺少上下文,所以,我们一开始,我们只从这个源码着手,先去认识了解那些我们知道的,采取农村包围城市方针,一点一点攻克,最后剩下的是需要外面的知识。

LOG_TAG

使用类的 simpleName 赋值,之前技术Leader说这样会有问题,我所了解的一点是 TAG 的长度有限制,至今还不知道有什么问题。

DEBUG

用来打印一些 debug 的 log,我们应用里,直接封装了打印日志的函数,在这些函数里面进行判断,感觉更好一些。

DELAY????

MAX_WAIT_TIME_MILLIS

最大等待时长,根据注释,只是为了打印一个 warning,在等待任务完成时,会记录消耗的时长。

sLock 和 sProcessingWork

是这个类里面的两个锁

sLock 是这个类的锁,各种操作都需要用这个锁同步
sProcessingWork 是为了保证同时只有一个线程处理任务队列,因而保证任务执行的顺序是添加的顺序。因为整个任务队列执行的事件都被锁住,所以使用单独的锁,一遍可以执行其他操作。

在方法中详细聊

sFinishers

整个变量是需要执行的 Finisher,也就是任务都执行完后,要执行的操作。
注释很棒,来看看

1
/** Finishers {@link #addFinisher added} and not yet {@link #removeFinisher removed} */

是添加了的,还没有移除的 Finishers,一块说明了两个操作 addFinisher 和 removeFinisher,它俩实现很多简单就是队列表元素的添加和删除,添加了同步。
学习了 {@link #method hint} 注释中的 mark 的使用
还要注意到一个注解

@GuardedBy(“sLock”)

只是指示作用, 比注释简洁,明确的说明被它修饰的方法或属性在访问前需要先获取 sLock的锁

一眼看下去,发现 sFinishers, sHandler, sWork, sCanDelay, mWaitTimes 都需要 sLock 是这个锁

sHandler

通过 getHandler() 实现懒创建,还是个单例

1
2
3
4
5
6
7
8
9
10
11
private static Handler getHandler() {
synchronized (sLock) {
if (sHandler == null) {
HandlerThread handlerThread = new HandlerThread("queued-work-looper",
Process.THREAD_PRIORITY_FOREGROUND);
handlerThread.start();
sHandler = new QueuedWorkHandler(handlerThread.getLooper());
}
return sHandler;
}
}

我们发现是使用 HandlerThread,创建一个新线程, 初始化的时候原来不仅要设置名称,还可以设置优先级 Process.THREAD_PRIORITY_FOREGROUND。
接着启动它后,实例化了一个 QueuedWorkHandler 对象,这是一个很正常的通过 HandlerThread 来创建消息队列的流程。
QueuedWorkHandler 是个内部类

1
2
3
4
5
6
7
8
9
10
11
private static class QueuedWorkHandler extends Handler {
static final int MSG_RUN = 1;
QueuedWorkHandler(Looper looper) {
super(looper);
}
public void handleMessage(Message msg) {
if (msg.what == MSG_RUN) {
processPendingWork();
}
}
}

这个类是个私有静态内部类,顶一个了一个 MSG_RUN, 实现 handleMessage 仅仅是针对 MSG_RUN 来调用处理未处理的工作。processPendingWork(); 是核心,我们最后说。

sWork

不必多说,这就是未处理的工作队列。通过 queue 向里面添加工作

sCanDelay???

mWaitTimes 和 mNumWaits???

全是静态属性,静态方法

我才发现,这个类原来所有的方法属性都是静态的。只能算个工具类。

queue

入队一个任务,并且通知工作线程处理,这里还有参数 shouldDelay,跟 sCanDelay 配合决定是否延时通知线程处理,我不太理解为什么需要延时处理。

hasPendingWork 只是返回队列是否为空

好,只剩下两个方法

processPendingWork

之前在阅读 QueuedWorkHandler 的代码时,提到过它,我们大体知道了 QueueWork 的核心逻辑了,在入队一个任务时,会发消息给执行线程,而 handler 收到消息就会处理,怎么处理呢,就是交个 processPendingWork 处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
synchronized (sProcessingWork) {
LinkedList<Runnable> work;
synchronized (sLock) {
work = (LinkedList<Runnable>) sWork.clone();
sWork.clear();
// Remove all msg-s as all work will be processed now
getHandler().removeMessages(QueuedWorkHandler.MSG_RUN);
}
if (work.size() > 0) {
for (Runnable w : work) {
w.run();
}
}
}

这里用了两个锁,可以从中学习到很好的同步写法。先说 sLock,首先将 sWork 克隆到本地变量 work,然后清空 sWork,在移除 MSG_RUN,则一些列保证原子性,就像其他对 sWork的操作一样。之前在说 sProcessingWork 时已经说过,它的作用是保证处理任务的顺序按照入队的顺序。怎么保证的呢,work里的按顺序遍历自不必多说,关键是在执行完 sWork 想 work 的克隆后,如果来了任务,而且还在另一个重入该方法,如果没锁,那就是在两个线程里分别遍历两个列表,这顺序肯定不能保证。而有了 sProcessingWork,这种情况就解决了。

之前已经提到处理任务时会计时,是为了 debug 的,直接忽略掉了。

waitToFinish

不知你有没有发现一个问题, processPendingWork 如果只是在 QueuedWorkHandler 里调用,那一定在一个线程里,也就不需要之前的同步了。这里就解决了这个疑问, waitToFinish 一个公开得方法,它直接调用了 processPendingWork 方法,所以还是会被其他线程执行的。

该方法首先一处 MSG_RUN,然后处理未处理的工作,最后处理掉所有 Finisher,我们忽略了 debug 的操作。

移除 MSG_RUN

这很好理解,因为接下来就出列悬而未决的任务了,所以没必要通知工作线程去处理了。

sCanDelay 设成 false,因为在这个方法里必须将所有悬而未决的任务处理掉,所以就不需要 delay 了,之前说过不明白为什么 delay,先在觉得可能就是为了在最后这一刻能够集中处理一下,额,太牵强了。

StrictMode

一看名就感觉很高级,完全不知所云, 但但是说出它的作用你就知道了它是什么了。我们知道在 UI 线程不能做好事操作,比如读写磁盘 和 网络请求。使用 StrictMode 可以检测到这种操作,并且你可以制定要做如何的相应。

StrictMode.allowThreadDiskWrites(),
是一个提供方便的方法,他会设置允许写磁盘操作,因为我们的保存配置的操作是写操作,同时,会返回当前的 ThreadPolicy,代码中会保存原来的策略,在执行完任务后再还原。

清理掉 Finisher

最后,可以看到,使用了一个死循环,不断的从列表里 poll 出 Finsiher,只有没有了,返回 null 才退出死循环。

这个方法在哪调用

这个方法会在 Activity 的 onPause(), Broadcast 的 onReceive, 在服务处理了 command 后,总之保证悬而未决的任务处理掉。

这里就可以发现一个问题,这个方法是会阻塞UI线程的, 所以,任务要尽量少,任务工作量也应该尽量小。具体到保存配置,就是不要太频繁的 apply,配置的内容尽量少。


  1. 第一个提高的能力,翻译
  2. {@link #method hint}
  3. @GuardedBy(“sLock”)
  4. StrickMode
  5. 同步策略
  6. 死循环不断 poll,检测到null退出循环
  7. IntnetThread, Handler 的使用

今日记简介

记录你的美好时光

今日记是一款免费的日记软件。你可以用它来记录你生活的点滴,而这些点滴就组成了我们的美好的时光。

以一周为一个卡片来展现列表

列表将一周的记录设计成一个卡片,这样某一天没有记录将显而易见,我们会很想去完成他。然而就像生活,如果一天过去了,我们是无法再过那一天的,我们要过好当下的一天。

更佳的写作体验

—- 今日记自己实现了对于键盘的响应,解决了在键盘弹出和收起时的内容的弹跳问题。
—- 今日记实现了更好的段间距,再也不用使用多于空行来添加段间距,而且显示更加美观。

当前位置,天气,心情

—- 使用谷歌服务,自动定位
—- 自动获取天气
—- 用户也可以自己选择位置,天气
—- 用户可以选择当前心情

日记锁

—- 实现了密码锁,自己设置密码
—- 指纹识别解锁,无需设置,只要系统设置了指纹,就可以使用

统计

—- 25个字打卡,根据《微习惯》,制定小目标,轻松实现,养成好习惯
—- 统计每天/每周/每月/每年的字/文章的数量,能够获得成就感,对过去更好的总结回顾


这个软件是我独自设计开发,会一直维护下去,希望能帮助别人养成记日记的习惯,一块记录自己的故事,之后会加入分享。
Google Play

当我学吉他时,我在学什么

题目是我仿照最近在看的村上春树的书名 《当我谈跑步时,我在谈些什么》

我的吉他是去年3月26日买的,这个日期是我在京东上查的,刚查到还有点震惊,已经一年多了。那我的吉他学习速度还真是挺慢的。

记得当时,我只想买个尤克里里,却被我们技术头买了雅马哈的 FGX800C,不过很好,的确要比尤克里里共鸣效果好得多,好听的多。

竟然一年多了!!容我再感叹一下。这一年,我完全是自学,从网上看视频,主要看了果木浪子的吉他教程,还看了许岑的指弹教程,不过只看了几集,学了点练基本功的方式。期间,有一段时间没有练,让吉他在那落灰了,也不知为什么就停下了,但是我知道为什么我有重新开始练了,是因为我看了 《微习惯》这根书,要问我,读书的意义,我会说它会改变我,让我变得更好。

之前说我的学习吉他的速度挺慢的,因为现在我的练习成果是:

  1. 能弹一段 《兰花草》两个和弦
  2. 能弹一段 《七月上》四个和弦
  3. 能弹一首 《平凡之路》四个和弦 分解和弦和扫弦,之前都是分解和弦
  4. 能弹卡尔卡西二十二条的分解和弦的前五条
  5. 能较快的连着弹 1324 3412 4231 2143 1342 3124 (许岑教程里的)
  6. 练了练击钩滑,还有泛音,只是看看难不难,发现不是太难,不过手指独立性就难了
  7. 奥,F和弦大横按基本攻克,还能与C和弦切换,这可是个大成果

就这些,其实我并不知道别人的进度咋样,我依然觉得我能坚持下来,算是入门了,这就很厉害了。

这些成果中,《平凡之路》是我练习最久的,一个原因是这首歌的伴奏太好听了,自从弹它以后,我就把《七月上》给丢一边了,完全没感觉了。另一个原因是它有扫弦练习,作为我的攻克扫弦的第一首歌曲,还是因为它很好听的原因。

关于扫弦,我之前一直很想练习,但是无奈找不到合适的节奏型,网上也有很多,但是只有节奏型,我还是练不下去,直到开始练习《平凡之路》。

其实最初打算练习吉他,出于爱好当然是一个原因,另一个原因是看了《刻意练习》,是,还是看书影响了我,那段时间看了好多刻意练习的相关内容,有许岑的时间,是一个音频。还有另一本书《关键20个小时,学习任何技能》,其中就有作者用 20 个小时学习尤克里里,还做了个 TED演讲,表演了他的尤克里里弹唱。我可能被最后这本书洗脑了吧:)

我的学习过程并没有特别艰难,有个技能不会,那我就先练习别的,比如大横按,其实好早我就在练了,但是总是摁不好,练一会还手疼,我也不急不躁,我深信,只要我不放弃,我就能攻克它。当然这里面可能也有热爱的缘故吧。

虽然,受了 “刻意练习” 的影响,但是我却很少去 “刻意练习”,因为“刻意练习”的确是太苦了,太枯燥了,这可能就是我的学习进度慢的原因。

在练习吉他的过程中,我还是或多或少的运用一下刻意练习的,比如十分钟,只做一个练习。同时,我还悟出一点自己的东西,就是把一个东西炼精的过程中,练就自己的功夫。

这一点是我在练习《平凡之路》过程中得到的,平凡之路,我现在对他已经很熟悉了,它的四个和弦里第四个是一个旋律,是比较难按的,我被它憋了好久。扫弦也是一个拦路虎。其实在《七月上》的时候也有所感受,那首歌里歌词跟伴奏是错开的,不是一齐唱,当时还是困扰了我一段时间的,然而,在练《平凡之路》时,虽然也是错开的,但完全没有困扰我。我就是这样获得自信的,我知道,当我再去学习另一首歌,它有伴奏,伴奏节奏型可能不同,但是我也基本能很快练习起来。

更重要的是,我不仅在弹吉他时有了自信,在学习其他东西时也有了自信。而且这种对一个东西炼精的方法,也可以推广到其他领域。

比如我在编程,我打算好好研究一下 Android 里的 SharedPreferences 的实现,不仅仅是他的实现逻辑,大的结构,而是它牵扯到的方方面面,比如锁的使用,CountDownLatch等等。

其实,我一直有这种心理,就是当使用了某个库,或者 API,我就想彻底把它弄懂,但是无奈总是一个没有时间为借口,不了了之,导致自己总是感觉有种不踏实的感觉。以后,会更多的花时间来精炼每一个自己学习的东西。

这岂不就是“刻意练习”!!

从源码来看 SharePreference

SharePreference 是 Android 应用保存配置的类,保存键值对,它的使用还是比较简单的,我们只需要跟三个接口打交道:

  1. SharedPreferences 负责读取配置(getXXX()),从 Context#getSharedPreferences 获取对象
  2. Editor 负责保存配置(putXXX()), 最后要使用 (apply/commit 提交配置),从 SharedPreferences.editor 获取对象
  3. OnSharedPreferenceChangeListener 负责监听配置变化,需要传给 SharedPreferences

需要特别注意的是,SharePreference 特别声明该类不支持跨进程。在老版本是允许的,是一个坑。

获取 SharedPreferences 对象

Contex 的实现类 ContextImpl

在 getSharedPreferences(String name, int mode) 方法里:

1
2
3
4
5
6
7
8
9
10
synchronized (ContextImpl.class) {
if (mSharedPrefsPaths == null) {
mSharedPrefsPaths = new ArrayMap<>();
}
file = mSharedPrefsPaths.get(name);
if (file == null) {
file = getSharedPreferencesPath(name);
mSharedPrefsPaths.put(name, file);
}
}

这里使用 synchronized 防止并发访问 mSharedPrefsPaths 这样每个线程得到的都是相同的 mSharedPrefsPaths,并能根据 name 获取到自己正确的文件名。getSharedPreferencesPath 会根据 name 生成文件路径。我们跟进这个方法发现配置文件保存目录为 data/shared_prefs。

继续,进到重载方法 getSharedPreferences(File file, int mode) 方法里:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
synchronized (ContextImpl.class) {
final ArrayMap<File, SharedPreferencesImpl> cache = getSharedPreferencesCacheLocked();
sp = cache.get(file);
if (sp == null) {
checkMode(mode);
if (getApplicationInfo().targetSdkVersion >= android.os.Build.VERSION_CODES.O) {
if (isCredentialProtectedStorage()
&& !getSystemService(UserManager.class)
.isUserUnlockingOrUnlocked(UserHandle.myUserId())) {
throw new IllegalStateException("SharedPreferences in credential encrypted "
+ "storage are not available until after user is unlocked");
}
}
sp = new SharedPreferencesImpl(file, mode);
cache.put(file, sp);
return sp;
}
}
if ((mode & Context.MODE_MULTI_PROCESS) != 0 ||
getApplicationInfo().targetSdkVersion < android.os.Build.VERSION_CODES.HONEYCOMB) {
// If somebody else (some other process) changed the prefs
// file behind our back, we reload it. This has been the
// historical (if undocumented) behavior.
sp.startReloadIfChangedUnexpectedly();
}

我们发现,有做了一个 缓存,之前是 name -> File, 现在是 File -> SharedPreferencesImpl, 同样进行了同步。下面对存储加密并且没有解开的情况抛异常,接下来的一个判断解决了我们开头的那个 “特别注意”, 我们忽略了一个参数 mode,这个参数有一个可选值为 Context.MODE_MULTI_PROCESS, 在 HONEYCOMB 之前,其他进程在我们之后修改了配置,我们会重新加载它,先在不做处理,也不推荐使用这个参数了。

这样,我们得到了 SharedPreferencesImpl 的对象。

如果要我去实现一个 SharedPreferences

接口已经有了,如果让我们去实现他们,我们可能会实现的非常简单。

  1. 首先打算用 HashMap 来存储键值对,作为内存缓存。
  2. 实现那些获取值的方法。
  3. 存储为 xml,在初始化 SharedPreference 的时候读取解析成 HashMap。
  4. 感觉都不需要 单独有个 Editor,为什么不直接在 SharePreference 里定义写的方法呢?
  5. 对于写的方法也不过是对 HashMap 的 put。
  6. apply/commit 分别实现异步和同步的把 HashMap 保存为 xml。

是不是很简单?考虑到并发,我们需要把读和写的操作加锁。

好,下面就把我的想法和 SharedPreferencesImpl 实现比较一下,它的实现实在是太复杂了。我们要去探索它复杂背后的原由。

SharedPreferencesImpl

这是 SharedPreferencesImpl 的源码

SharedPreferencesImpl 所有代码都在上面一个文件中,只有一个队列的代码单独为一个文件,最后在讨论它。

我们上面考虑到的步骤,它都实现了,下面我们就一次来看看。

加载数据到内存

它的确使用了 Map 来缓存数据,从文件解析 xml 来加载数据,在构造函数里调用了 startLoadFromDisk() 来加载, 它里面 new 了一个新线程 调用了 loadFromDisk()。在它里面,的确做了解析 xml 成 map 的步骤。

访问操作

在获取 SharedPreferencesImpl 之前,也就是文章开头介绍的两个同步,对于特定名称的配置,实际上保证了单例。但是因为 loadFromDisk() 是在单独线程执行完成的,也就是说数据还没有读取完成,构造函数就返回了,也就可以调用 get 方法了,这肯定出问题,所以所有的访问操作,你会看到都是如下的样式:

1
2
3
4
5
6
7
@Override
public boolean XXXX(String key) {
synchronized (mLock) {
awaitLoadedLocked();
return mMap.XXXX(key);
}
}

关键就在 awaitLoadedLocked(),它会判断如果还没有加载完成就会一直等待,并且如果加载过程中出现异常,这时候也会报错。

1
2
3
4
5
6
7
8
9
while (!mLoaded) {
try {
mLock.wait();
} catch (InterruptedException unused) {
}
}
if (mThrowable != null) {
throw new IllegalStateException(mThrowable);
}

着我们就知道,如果我们的配置文件如果太大,加载过程就会很长,如果我们的访问操作在UI线程就可能倒置界面卡顿,虽然只有一次。

为什么要有个专门的 Editor

我们先来把简单的打扫完成,EditImpl 内使用一个 HashMap 来存储修改了的键值对,所有的写操作除了 clear 使用了一个专门的属性来保存,其他操作都是作用在这个 HashMap 上。

而关键的逻辑在 commitToMemory() 里, commit 和 apply 都是调用了它。实现将加载的 map 和修改的 map 做差,然后将结果存到了专门的一个 内部类里 MemoryCommitResult。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
synchronized (mEditorLock) {
boolean changesMade = false;
if (mClear) {
if (!mapToWriteToDisk.isEmpty()) {
changesMade = true;
mapToWriteToDisk.clear();
}
mClear = false;
}
for (Map.Entry<String, Object> e : mModified.entrySet()) {
String k = e.getKey();
Object v = e.getValue();
// "this" is the magic value for a removal mutation. In addition,
// setting a value to "null" for a given key is specified to be
// equivalent to calling remove on that key.
if (v == this || v == null) {
if (!mapToWriteToDisk.containsKey(k)) {
continue;
}
mapToWriteToDisk.remove(k);
} else {
if (mapToWriteToDisk.containsKey(k)) {
Object existingValue = mapToWriteToDisk.get(k);
if (existingValue != null && existingValue.equals(v)) {
continue;
}
}
mapToWriteToDisk.put(k, v);
}
changesMade = true;
if (hasListeners) {
keysModified.add(k);
}
}
mModified.clear();
if (changesMade) {
mCurrentMemoryStateGeneration++;
}
memoryStateGeneration = mCurrentMemoryStateGeneration;
}

先看 mClear 标志,如果清空,直接把 mapToWriteToDiskWriteToDisk 清空,mapToWriteToDiskWriteToDisk 是谁,就是 mMap,当前的配置键值对。接下来遍历 mModified,这个遍历完全放在判断 mClear 的 else 里嘛!不过考虑到监听值得变化,还是不能放到 else 里的,对于提交修改的key,在 clear 的时候还是会收到修改的回调,但是如果只是 clear 了,不会收到修改的回调。这部分逻辑在 notifyListeners(final MemoryCommitResult mcr):

1
2
3
4
5
6
7
8
9
10
11
12
13
if (Looper.myLooper() == Looper.getMainLooper()) {
for (int i = mcr.keysModified.size() - 1; i >= 0; i--) {
final String key = mcr.keysModified.get(i);
for (OnSharedPreferenceChangeListener listener : mcr.listeners) {
if (listener != null) {
listener.onSharedPreferenceChanged(SharedPreferencesImpl.this, key);
}
}
}
} else {
// Run this function on the main thread.
ActivityThread.sMainThreadHandler.post(() -> notifyListeners(mcr));
}

这里还保证了回调一定在 UI 线程,这写法很棒,判断如果不是在主线成,就在主线程再调一遍自己。尤其是使用了 lambda,更加有没。

apply() 和 commit() 实现区别

commit() 里:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
MemoryCommitResult mcr = commitToMemory();
SharedPreferencesImpl.this.enqueueDiskWrite(
mcr, null /* sync write on this thread okay */);
try {
mcr.writtenToDiskLatch.await();
} catch (InterruptedException e) {
return false;
} finally {
if (DEBUG) {
Log.d(TAG, mFile.getName() + ":" + mcr.memoryStateGeneration
+ " committed after " + (System.currentTimeMillis() - startTime)
+ " ms");
}
}
notifyListeners(mcr);
return mcr.writeToDiskResult;

在提交内存后,也就是将修改事假到当前键值对map后,生成了一个 MemoryCommitResult 对象,在传给 enqueueDiskWrite() 后,会被传给 Runnable 里执行的 writeToFile(), 紧接着把 Runnable 入队列。

接下来,入队列后,调用 mcr.writtenToDiskLatch.await(),实现同步,这就是为什么说 commit 是同步的。writtenToDiskLatch 是一个 CountDownLatch,会在 mcr 的 setDiskWriteResult 被调用后,通知阻塞的线程运行,而 setDiskWriteResult 在上面的 writeToFile() 方法内,将改变后的配置写入完成后调用。

上面是 commit 如何实现同步保存的,下面再看看 apply 如何实现异步的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
final MemoryCommitResult mcr = commitToMemory();
final Runnable awaitCommit = new Runnable() {
@Override
public void run() {
try {
mcr.writtenToDiskLatch.await();
} catch (InterruptedException ignored) {
}
if (DEBUG && mcr.wasWritten) {
Log.d(TAG, mFile.getName() + ":" + mcr.memoryStateGeneration
+ " applied after " + (System.currentTimeMillis() - startTime)
+ " ms");
}
}
};
QueuedWork.addFinisher(awaitCommit);
Runnable postWriteRunnable = new Runnable() {
@Override
public void run() {
awaitCommit.run();
QueuedWork.removeFinisher(awaitCommit);
}
};
SharedPreferencesImpl.this.enqueueDiskWrite(mcr, postWriteRunnable);

它同样的先提交改动到内存,返回一个 MemoryCommitResult 的对象,然后在 Runnable 里等待写入文件完成,把这个 Runnable 加入了 QueuedWork。接下来,又在一个 postWriteRunnable 里执行之前那个 awaitCommit, 并从QueuedWork移除刚才设置的它, 为什么呢?

Android为了让在一个页面设置的配置在其他界面生效采取了一个机制,就是要保证在当前界面不可见时一定要保证配置保存完毕。所以在 ActivityThread 里的处理服务停止和 Activity 停止的地方调用了 QueuedWork 的 waitToFinish, 它里面就会遍历,所有的通过 addFinisher 添加的 Runnable。 而在每个写入操作完成后,当然可以移除了。


官方源码:
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/SharedPreferencesImpl.java
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/QueuedWork.java
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/ActivityThread.java
墙裂推荐这篇文章,太好了,我得好好学习了
请不要滥用SharedPreference