闺蜜不开心又不肯说什么事,是不信任我吗?
“要明确对方的情绪跟我们有关,但并非全部由我们引发。”
-《在人际关系中成长》胡慎之
红和莉是非常要好的朋友,小学是同桌,中学是同班,大学是同校。但是最近,明明莉情绪利落、时常走神,但是红问她怎么了,莉只说:“没什么。”
红开始怀疑自己跟莉的友谊是不是没那么坚固。以前两个人之间可是没有任何秘密的。现在,明显莉有了心事,却不愿意告诉自己。红觉得是不是哪里自己做错了什么。
我们在亲密关系中,常常会陷入这样的误区。
好朋友之间因为不再共享所有的秘密而心生嫌隙,夫妻之间因为丈夫回来心事重重,不肯告诉妻子发生了什么,从而产生夫妻之间的信任危机。
这本《在人际关系中成长》就告诉了我们,别人的情绪不好,不一定是我们造成的。
丈夫今天回家不开心,可能只是工作不顺利,而妻子又不是同行,所以不想提。闺蜜心事重重,可能是家里发生的事情所致,不愿意“家丑”外扬所以不说。也可能,他们只是不愿意让妻子或者闺蜜担心才不说。
总之,对方不开心,不一定是你的责任。
(这是@ 青衣的书影世界 2021年第290篇原创作品。)
#读书笔记##胡慎之#
“要明确对方的情绪跟我们有关,但并非全部由我们引发。”
-《在人际关系中成长》胡慎之
红和莉是非常要好的朋友,小学是同桌,中学是同班,大学是同校。但是最近,明明莉情绪利落、时常走神,但是红问她怎么了,莉只说:“没什么。”
红开始怀疑自己跟莉的友谊是不是没那么坚固。以前两个人之间可是没有任何秘密的。现在,明显莉有了心事,却不愿意告诉自己。红觉得是不是哪里自己做错了什么。
我们在亲密关系中,常常会陷入这样的误区。
好朋友之间因为不再共享所有的秘密而心生嫌隙,夫妻之间因为丈夫回来心事重重,不肯告诉妻子发生了什么,从而产生夫妻之间的信任危机。
这本《在人际关系中成长》就告诉了我们,别人的情绪不好,不一定是我们造成的。
丈夫今天回家不开心,可能只是工作不顺利,而妻子又不是同行,所以不想提。闺蜜心事重重,可能是家里发生的事情所致,不愿意“家丑”外扬所以不说。也可能,他们只是不愿意让妻子或者闺蜜担心才不说。
总之,对方不开心,不一定是你的责任。
(这是@ 青衣的书影世界 2021年第290篇原创作品。)
#读书笔记##胡慎之#
#为什么MySQL数据量大了要分库分表#
是这样的。随着用户量的激增和时间的堆砌,存在数据库里面的数据越来越多,此时的数据库就会产生瓶颈,出现资源报警、查询慢等场景。
首先单机数据库所能承载的连接数、I/O及网络的吞吐等都是有限的,所以当并发量上来了之后,数据库就渐渐顶不住了。再则,如果单表的数据量过大,查询的性能也会下降。因为数据越多 B+ 树就越高,树越高则查询 I/O 的次数就越多,那么性能也就越差。因为上述的原因,不得已就得上分库分表了。把以前存在一个数据库实例里的数据拆分成多个数据库实例,部署在不同的服务器中,这是分库。把以前存在一张表里面的数据拆分成多张表,这是分表。一般而言:分表:是为了解决由于单张表数据量多大,而导致查询慢的问题。大致三、四千万行数据就得拆分,不过具体还是得看每一行的数据量大小,有些字段都很小的可能支持更多行数,有些字段大的可能一千万就顶不住了。
分库:是为了解决服务器资源受单机限制,顶不住高并发访问的问题,把请求分配到多台服务器上,降低服务器压力。顺着这个思路,再接着追问几个常见面试题。你们一般怎么分库的?一般分库都是按照业务划分的,比如订单库、用户库等等。有时候会针对一些特殊的库再作切分,比如一些活动相关的库都做了拆分。因为做活动的时候并发可能会比较高,怕影响现有的核心业务,所以即使有关联,也会单独做拆分。
那你觉得分库会带来什么问题呢? 首先是事务的问题。我们使用关系型数据库,有很大一点在于它保证事务完整性。而分库之后单机事务就用不上了,必须使用分布式事务来解决,而分布式事务基本的都是残缺的(我之前文章把分布式事务汇总了一波,后台搜索分布式事务就有了)。这是很重要的一点需要考虑。 连表 JOIN 问题在一个库中的时候我们还可以利用 JOIN 来连表查询,而跨库了之后就无法使用 JOIN 了。此时的解决方案就是在业务代码中进行关联,也就是先把一个表的数据查出来,然后通过得到的结果再去查另一张表,然后利用代码来关联得到最终的结果。这种方式实现起来稍微比较复杂,不过也是可以接受的。还有可以适当的冗余一些字段。比如以前的表就存储一个关联 ID,但是业务时常要求返回对应的 Name 或者其他字段。这时候就可以把这些字段冗余到当前表中,来去除需要关联的操作。那你们怎么分表的?分表其实有两种:垂直分表水平分表垂直分表,来看个图,很直观:
垂直分表就是把一些不常用的大字段剥离出去。像上面的例子:用户名是很常见的搜索结果,性别和年龄占用的空间又不大,而地址和个人简介占用的空间相对而言就较大,我们都知道一个数据页的空间是有限的,把一些无用的数据拆分出去,一页就能存放更多行的数据。内存存放更多有用的数据,就减少了磁盘的访问次数,性能就得到提升。水平分表,则是因为一张表内的数据太多了,上文也提到了数据越多 B+ 树就越高,访问的性能就差,所以进行水平拆分。
其实不管这些,浅显的理解下,在一百个数据里面找一个数据快,还是在一万个数据里面找一个数据快?即使有索引,那厚的书目录多,翻目录也慢~那分表会有什么问题?垂直分表还好,就是需要关联一下,而水平分表就有点麻烦了。 排序、count、分页问题如果一个用户的数据被拆分到多个表中,那查询结果分页就不像以前单张表那样直接就能查出来了,像 count 操作也是一样的。只能由业务代码来实现或者用中间件将各表中的数据汇总、排序、分页然后返回。像 count 操作的结果其实可以缓存下来,然后每次数据增删都更新计数。
路由问题分表的路由可以分:Hash 路由范围路由路由表Hash 路由,其实就是选择表中的某一列,然后进行 Hash 运算,将 Hash 运算得到的结果再对子表数进行取模,这样就能均匀的将数据分到不同的子表上。这跟 HashMap 选哪个桶是一样的原理。优点就是数据分布均匀。缺点就是增加子表的时候麻烦,想想 HashMap的扩容,是不是得搬迁数据?这个分表也是一样的,我们可都知道,数据迁移一件麻烦事!范围路由,其实很简单,可以是时间,也可以是地址,表示一定的范围的即可。比如本来一张 User 表,我可以分 User_HZ、User_BJ、User_SH,按照地名来划分 User。再比如 log 表,我可以将表分为 log_202103、 log_202104,把日志按照年月来划分。优点就是相对而言比较容易扩展,比如现在来个 GZ,那就加个 User_GZ。如果到了 5 月,那就建个 log_202105。缺点就是数据可能分布不均匀,例如 BJ 的用户特别多或者某个月搞了促销,日志量特别大,等等。路由表,就是专门搞个表来记录路由信息,来看个图就很清楚了。
从图中我们就能得知,UserID 为 2 的用户数据在要去 User_3 这个用户表查询。优点就是灵活咯,如果要迁移数据,直接迁移然后路由表一改就完事儿了~缺点就是得多查一次,每次查询都需要访问路由表,不过这个一般会做缓存的。 全局主键问题以前单表的时候很简单,就是主键自增,现在分表了之后就有点尴尬了。所以需要一些手段来保证全局主键唯一。还是自增,只不过自增步长设置一下。比如现在有三张表,步长设置为3,三张表 ID 初始值分别是1、2、3。 这样第一张表的 ID 增长是 1、4、7。第二张表是2、5、8。第三张表是3、6、9,这样就不会重复了。UUID,这种最简单,但是不连续的主键插入会导致严重的页分裂,性能比较差。分布式 ID,比较出名的就是 Twitter 开源的 sonwflake 雪花算法,具体就不展开了,不然就又是一篇文章了,简单点利用 redis 来递增也行。
那上面说的路由问题的 Sharding-Key 如何设计呢?我们分表是按照某个列来拆分的,那个列就是 Sharding-Key,查询的时候必须带上这个列才行。例如上面提到的 log_202103,那表明查询条件一定得带上日期,这样才能找到正确的表。所以设计上得考虑查询的条件来作为 Sharding-Key。举个常常会被问的订单表 Sharding-Key 例子。你想着查找订单的时候会通过订单号去找,所以应该利用订单 ID 来作为 Sharding-Key。但是你想想,你打开外卖软件想查找你的历史订单的时候,你是没有订单 ID 的,你只有你的 UserID,那此时只能把所有子表都通过 UserID 遍历一遍,这样效率就很低了!所以你想着那用 UserID 来作为 Sharding-Key 吧!
但是,商家呢?商家肯定关心自己今天卖了多少单,所以他也要查找订单,但他只有自己的商家 ID,所以如果要查询订单,只能把所有子表都通过商家 ID 遍历一遍,这样效率就很低了!所以 Sharding-Key 是满足不了所有查询需求的,只能曲线救国。一般做法就是冗余数据。将订单同步到另一张表中给商家使用,这个表按商家 ID 来作为 Sharding-Key,也可以将数据同步到 ES 中。一般而言这里的数据同步都是异步处理,不会影响正常流程。
是这样的。随着用户量的激增和时间的堆砌,存在数据库里面的数据越来越多,此时的数据库就会产生瓶颈,出现资源报警、查询慢等场景。
首先单机数据库所能承载的连接数、I/O及网络的吞吐等都是有限的,所以当并发量上来了之后,数据库就渐渐顶不住了。再则,如果单表的数据量过大,查询的性能也会下降。因为数据越多 B+ 树就越高,树越高则查询 I/O 的次数就越多,那么性能也就越差。因为上述的原因,不得已就得上分库分表了。把以前存在一个数据库实例里的数据拆分成多个数据库实例,部署在不同的服务器中,这是分库。把以前存在一张表里面的数据拆分成多张表,这是分表。一般而言:分表:是为了解决由于单张表数据量多大,而导致查询慢的问题。大致三、四千万行数据就得拆分,不过具体还是得看每一行的数据量大小,有些字段都很小的可能支持更多行数,有些字段大的可能一千万就顶不住了。
分库:是为了解决服务器资源受单机限制,顶不住高并发访问的问题,把请求分配到多台服务器上,降低服务器压力。顺着这个思路,再接着追问几个常见面试题。你们一般怎么分库的?一般分库都是按照业务划分的,比如订单库、用户库等等。有时候会针对一些特殊的库再作切分,比如一些活动相关的库都做了拆分。因为做活动的时候并发可能会比较高,怕影响现有的核心业务,所以即使有关联,也会单独做拆分。
那你觉得分库会带来什么问题呢? 首先是事务的问题。我们使用关系型数据库,有很大一点在于它保证事务完整性。而分库之后单机事务就用不上了,必须使用分布式事务来解决,而分布式事务基本的都是残缺的(我之前文章把分布式事务汇总了一波,后台搜索分布式事务就有了)。这是很重要的一点需要考虑。 连表 JOIN 问题在一个库中的时候我们还可以利用 JOIN 来连表查询,而跨库了之后就无法使用 JOIN 了。此时的解决方案就是在业务代码中进行关联,也就是先把一个表的数据查出来,然后通过得到的结果再去查另一张表,然后利用代码来关联得到最终的结果。这种方式实现起来稍微比较复杂,不过也是可以接受的。还有可以适当的冗余一些字段。比如以前的表就存储一个关联 ID,但是业务时常要求返回对应的 Name 或者其他字段。这时候就可以把这些字段冗余到当前表中,来去除需要关联的操作。那你们怎么分表的?分表其实有两种:垂直分表水平分表垂直分表,来看个图,很直观:
垂直分表就是把一些不常用的大字段剥离出去。像上面的例子:用户名是很常见的搜索结果,性别和年龄占用的空间又不大,而地址和个人简介占用的空间相对而言就较大,我们都知道一个数据页的空间是有限的,把一些无用的数据拆分出去,一页就能存放更多行的数据。内存存放更多有用的数据,就减少了磁盘的访问次数,性能就得到提升。水平分表,则是因为一张表内的数据太多了,上文也提到了数据越多 B+ 树就越高,访问的性能就差,所以进行水平拆分。
其实不管这些,浅显的理解下,在一百个数据里面找一个数据快,还是在一万个数据里面找一个数据快?即使有索引,那厚的书目录多,翻目录也慢~那分表会有什么问题?垂直分表还好,就是需要关联一下,而水平分表就有点麻烦了。 排序、count、分页问题如果一个用户的数据被拆分到多个表中,那查询结果分页就不像以前单张表那样直接就能查出来了,像 count 操作也是一样的。只能由业务代码来实现或者用中间件将各表中的数据汇总、排序、分页然后返回。像 count 操作的结果其实可以缓存下来,然后每次数据增删都更新计数。
路由问题分表的路由可以分:Hash 路由范围路由路由表Hash 路由,其实就是选择表中的某一列,然后进行 Hash 运算,将 Hash 运算得到的结果再对子表数进行取模,这样就能均匀的将数据分到不同的子表上。这跟 HashMap 选哪个桶是一样的原理。优点就是数据分布均匀。缺点就是增加子表的时候麻烦,想想 HashMap的扩容,是不是得搬迁数据?这个分表也是一样的,我们可都知道,数据迁移一件麻烦事!范围路由,其实很简单,可以是时间,也可以是地址,表示一定的范围的即可。比如本来一张 User 表,我可以分 User_HZ、User_BJ、User_SH,按照地名来划分 User。再比如 log 表,我可以将表分为 log_202103、 log_202104,把日志按照年月来划分。优点就是相对而言比较容易扩展,比如现在来个 GZ,那就加个 User_GZ。如果到了 5 月,那就建个 log_202105。缺点就是数据可能分布不均匀,例如 BJ 的用户特别多或者某个月搞了促销,日志量特别大,等等。路由表,就是专门搞个表来记录路由信息,来看个图就很清楚了。
从图中我们就能得知,UserID 为 2 的用户数据在要去 User_3 这个用户表查询。优点就是灵活咯,如果要迁移数据,直接迁移然后路由表一改就完事儿了~缺点就是得多查一次,每次查询都需要访问路由表,不过这个一般会做缓存的。 全局主键问题以前单表的时候很简单,就是主键自增,现在分表了之后就有点尴尬了。所以需要一些手段来保证全局主键唯一。还是自增,只不过自增步长设置一下。比如现在有三张表,步长设置为3,三张表 ID 初始值分别是1、2、3。 这样第一张表的 ID 增长是 1、4、7。第二张表是2、5、8。第三张表是3、6、9,这样就不会重复了。UUID,这种最简单,但是不连续的主键插入会导致严重的页分裂,性能比较差。分布式 ID,比较出名的就是 Twitter 开源的 sonwflake 雪花算法,具体就不展开了,不然就又是一篇文章了,简单点利用 redis 来递增也行。
那上面说的路由问题的 Sharding-Key 如何设计呢?我们分表是按照某个列来拆分的,那个列就是 Sharding-Key,查询的时候必须带上这个列才行。例如上面提到的 log_202103,那表明查询条件一定得带上日期,这样才能找到正确的表。所以设计上得考虑查询的条件来作为 Sharding-Key。举个常常会被问的订单表 Sharding-Key 例子。你想着查找订单的时候会通过订单号去找,所以应该利用订单 ID 来作为 Sharding-Key。但是你想想,你打开外卖软件想查找你的历史订单的时候,你是没有订单 ID 的,你只有你的 UserID,那此时只能把所有子表都通过 UserID 遍历一遍,这样效率就很低了!所以你想着那用 UserID 来作为 Sharding-Key 吧!
但是,商家呢?商家肯定关心自己今天卖了多少单,所以他也要查找订单,但他只有自己的商家 ID,所以如果要查询订单,只能把所有子表都通过商家 ID 遍历一遍,这样效率就很低了!所以 Sharding-Key 是满足不了所有查询需求的,只能曲线救国。一般做法就是冗余数据。将订单同步到另一张表中给商家使用,这个表按商家 ID 来作为 Sharding-Key,也可以将数据同步到 ES 中。一般而言这里的数据同步都是异步处理,不会影响正常流程。
项目二 翻译查理三章
第二章
威利·旺卡先生的工厂
晚上吃过晚饭,也就是那种清汤寡水的卷心菜汤,查理总是走进他的外公外婆、爷爷奶奶住的房间听他们讲故事,听完故事再跟他们道声晚安,然后他才去睡觉。
老人们的年纪都过了九十岁,他们干瘪得就象桃脯,憔悴得就象一具具骷髅。每天,在查理去看望他们之前,他们就蜷缩在一张床上,两个人睡一头,戴着睡帽不让头受冷,就这么打着瞌睡消磨时光,什么也干不了。可只要查理打开门,说:“乔爷爷,约瑟芬奶奶,乔治外公,乔治娜外婆,晚上好。”顿时四位老人就会猛地坐起身来,枯老起皱的脸上光彩焕发,绽开愉悦的笑容。接着谈话开始了。他们都非常热爱这个小男孩,是他照亮了他们的生命,他们整天盼望的就是晚上他的到来。时常,查理的父母也会一起进来,站在门口,听老人讲故事。就这样。每天晚上大约有半小时光景房间里一片欢乐,全家人把饥饿和贫困都忘记了。
一天晚上,查理进来问候他的祖父母们,他问他们:“旺卡的巧克力工厂真是世界上最大的吗?。”
“怎么?”四位老人顿时一起叫了起来。“当然是真的!天哪,你还不知道吗?它大约有其他工厂的五十倍那么大!”
“那么威利·旺卡真是世界上最最聪明的巧克力制造商吗?”
“我亲爱的孩子,”乔爷爷从枕头上稍稍抬起一点身子说,“威利·旺卡先生是有史以来最令人惊叹,最不可思议,也是最最杰出的巧克力制造商!我想人人都知道这一点!”
“我知道他很有名,爷爷,我也知道他非常聪明……”
“聪明!”老人叫了起来,“他岂止聪明!他是巧克力法师!他可以造出任何东西──只要他想造!这不是事实吗,我亲爱的?”
其余三个老人慢慢地点着头说:“绝对没错,千真万确。”
乔爷爷又说:“难道我还从没把威利·旺卡先生和他工厂的事告诉过你吗?”
“从没讲过。”小查理回答道。
“天哪!我这是怎么搞的!”
“请你现在就告诉我好吗,爷爷?”
“当然。来,坐到我旁边。亲爱的,好好听着。”
四个老人中数乔爷爷最老。他已经九十六岁半了,一般人最多也只能活到这么大年纪。就象所有年龄非常大的老人一样,他十分虚弱,白天他几乎不说什么话。可到了晚上,只要他最钟爱的孙子查理一进这间房间,他就似乎变得十分年轻了,这真令人不可思议。他的疲顿一扫而光,他变得象个年轻人一样热切和兴奋。
“哦,威利·旺卡先生真是个了不起的人!”乔爷爷赞叹道。“比方说吧,就是他发明了二百多种新的巧克力,每一种的馅心都是不同的,每一种都比其他巧克力工厂生产的巧克力更甜,奶油味更足,尝起来更可口!”
“一点没错!”约瑟芬奶奶喊道,“他把这些巧克力送到世界各地,不是这样吗,乔?”
“是的,我亲爱的,是这么回事,他也把它们送给所有的国王和总统。可他制造的并不单单是巧克力。哦,不!威利·旺卡先生暗中还有一些真正奇妙的发明!你们知道吗,他发明了一种方法,做出的巧克力冰淇淋不用放在冰箱里也一直不会融化。甚至在大热天把这种冰淇淋在太阳下放一上午也不会化掉!”
“那是不可能的!”小查理瞪大眼珠看着祖父说。
“听起来当然是不可能的!”乔爷爷大声说道,“而且根本是荒谬的!然而威利·旺卡先生做出了这种巧克力!”
“一点不假!”其余三个老人都点着头,同意他的话。“旺卡先生做出了这种巧克力。”
“还有,”乔爷爷继续讲下去,现在他讲得很慢,这样查理能一字不漏地听到他讲的每一句话,“威利·旺卡先生能做出带紫罗兰香味的果汁软糖和每吮吸十秒钟就会改变颜色的硬糖,以及一放进嘴里就融化的又小又薄的糖果。他还能做出味道永远嚼不走的口香糖,还有糖气球,这种糖气球可以吹得很大很大,你得用针把它戳破,然后才能吃。他还用一种极其秘密的方法做出带黑斑点的可爱的蓝色鸟蛋,把这种蛋放进嘴里,蛋会越变越小,突然一下子蛋没有了,却有一只非常小的粉红色的糖雏鸟坐在你的舌尖上。”
乔爷爷停了一会儿,用舌尖慢慢地添了一圈嘴唇。“一想起这些,就使我馋涎欲滴。”他说。
“我的口水也要流下来了,”小查理说。“不过还是继续讲下去吧。”
在他们讲话的时候,查理的父母,巴克特先生和太太不出声地走进门。两人也站在门边,静静地听着。
“把那个疯狂的印度王子的事告诉查理,”约瑟芬奶奶说,“他一定会喜欢听的。”
“你是说蓬迪切里王子吗?”乔爷爷问,他开始格格格大笑起来。
“那完全是个疯子!”乔治外公说。
“可非常有钱。”乔治娜外婆说。
“他干了些什么,啊?”小查理迫不及待地问道。
“听着,”乔爷爷说道,“我来告诉你。”
第三章
旺卡先生和印度王子
“蓬迪切里王子写了一封信给威利·旺卡先生,”乔爷爷讲述起来。“请他无论如何到印度去帮他用巧克力建造一座宏伟的宫殿。”
“旺卡先生帮他造了吗,爷爷?”
“是的,他帮他造了。噢,那是一座多么了不起的宫殿啊!宫殿里有一百个房间,宫殿里所有的东西都是用深色或浅色巧克力做成的!砖是巧克力,砌砖的粘泥也是巧克力,窗户是巧克力,所有的墙和天花板都是用巧克力做的,当然,地毯、挂画,家具以及床也都是巧克力做的,而在你打开浴室的水龙时,喷涌而出的也是滚烫的巧克力。
“一切完工后,旺卡先生对蓬迪切里王子说:‘然而,我得警告你,这一切维持不了多久,因此最好你现在就开始一点点吃掉它们。’
“‘胡说!’王子高声叫起来,‘我才不打算吃掉我的宫殿呢!甚至不会去啃下一点楼梯或是舔一下墙!我要住在这座宫殿里!’
“不用说,旺卡先生的话是对的,因为没过多久,有一天,烈日炎炎,天气非常热,整座宫殿开始一点点融化,并且慢慢地坍了下去。但这时这个异想天开的王子正在客厅里打盹,等他醒来,发现自己正漂浮在一个粘稠的褐色的巧克力大湖里呢。”
小查理一动不动地坐在床边,瞪圆了双眼不错眼珠地盯着祖父,脸上神采焕发。他问道:“你不是在骗我吧,这一切都是真的吗?”
“全是真的!”四个老人一齐大声回答道,“千真万确!你可以去问随便哪个人!”
“我还要告诉你一件事,那也是真的,”乔爷爷说,这时他身子前倾,更靠近查理,他的声音放得更低了,变成了一种轻柔而神秘的低语,“从来……没有一个人……从那儿……出来过!”
“从哪儿出来?”查理问。
“也没有一个人……到那儿……去过!”
“去过哪儿?”查理叫了起来。
“当然是旺卡的工厂!”
“爷爷,你这是什么意思?”
“我是说的那些工人,查理。”
“工人?”
乔爷爷说:“所有的工厂在早晨都有大批工人进去,晚上又有大批工人出来
──然而旺卡的工厂却没有!你可曾见过有一个人进去──或是出来过吗?”
小查理的眼光慢慢地一个接一个地扫过四个老人的脸,他们也看看他。老人们的脸上都挂着亲切的笑容。同时却也十分认真,没有一丝开玩笑或是糊弄人的神色。
“怎么样,看见过没有?”乔爷爷问道。
“我……我真的弄不明自,爷爷,”查理木讷地答道,“我走过那座工厂的时候,门看上去总是关着的。”
“正是这样!”乔爷爷说。
“可总该有人在那儿干活……”
“没一个人,查理。反正没有一般的人。”
“那么又是什么人呢?”查理大声问道。
“啊──哈……你得明自,奥妙就在这儿……那就是威利·旺卡先生表现出的又一个聪明的地方。”
巴克特太太正站在门边,这时她大声说道:“查理,亲爱的,该去睡觉了。今晚就到这儿吧。”
“可妈妈,我一定得听听……”
“明天吧,宝贝……”
“好啦,”乔爷爷说。“明晚我会把其余的都告诉你的。”
第二章
威利·旺卡先生的工厂
晚上吃过晚饭,也就是那种清汤寡水的卷心菜汤,查理总是走进他的外公外婆、爷爷奶奶住的房间听他们讲故事,听完故事再跟他们道声晚安,然后他才去睡觉。
老人们的年纪都过了九十岁,他们干瘪得就象桃脯,憔悴得就象一具具骷髅。每天,在查理去看望他们之前,他们就蜷缩在一张床上,两个人睡一头,戴着睡帽不让头受冷,就这么打着瞌睡消磨时光,什么也干不了。可只要查理打开门,说:“乔爷爷,约瑟芬奶奶,乔治外公,乔治娜外婆,晚上好。”顿时四位老人就会猛地坐起身来,枯老起皱的脸上光彩焕发,绽开愉悦的笑容。接着谈话开始了。他们都非常热爱这个小男孩,是他照亮了他们的生命,他们整天盼望的就是晚上他的到来。时常,查理的父母也会一起进来,站在门口,听老人讲故事。就这样。每天晚上大约有半小时光景房间里一片欢乐,全家人把饥饿和贫困都忘记了。
一天晚上,查理进来问候他的祖父母们,他问他们:“旺卡的巧克力工厂真是世界上最大的吗?。”
“怎么?”四位老人顿时一起叫了起来。“当然是真的!天哪,你还不知道吗?它大约有其他工厂的五十倍那么大!”
“那么威利·旺卡真是世界上最最聪明的巧克力制造商吗?”
“我亲爱的孩子,”乔爷爷从枕头上稍稍抬起一点身子说,“威利·旺卡先生是有史以来最令人惊叹,最不可思议,也是最最杰出的巧克力制造商!我想人人都知道这一点!”
“我知道他很有名,爷爷,我也知道他非常聪明……”
“聪明!”老人叫了起来,“他岂止聪明!他是巧克力法师!他可以造出任何东西──只要他想造!这不是事实吗,我亲爱的?”
其余三个老人慢慢地点着头说:“绝对没错,千真万确。”
乔爷爷又说:“难道我还从没把威利·旺卡先生和他工厂的事告诉过你吗?”
“从没讲过。”小查理回答道。
“天哪!我这是怎么搞的!”
“请你现在就告诉我好吗,爷爷?”
“当然。来,坐到我旁边。亲爱的,好好听着。”
四个老人中数乔爷爷最老。他已经九十六岁半了,一般人最多也只能活到这么大年纪。就象所有年龄非常大的老人一样,他十分虚弱,白天他几乎不说什么话。可到了晚上,只要他最钟爱的孙子查理一进这间房间,他就似乎变得十分年轻了,这真令人不可思议。他的疲顿一扫而光,他变得象个年轻人一样热切和兴奋。
“哦,威利·旺卡先生真是个了不起的人!”乔爷爷赞叹道。“比方说吧,就是他发明了二百多种新的巧克力,每一种的馅心都是不同的,每一种都比其他巧克力工厂生产的巧克力更甜,奶油味更足,尝起来更可口!”
“一点没错!”约瑟芬奶奶喊道,“他把这些巧克力送到世界各地,不是这样吗,乔?”
“是的,我亲爱的,是这么回事,他也把它们送给所有的国王和总统。可他制造的并不单单是巧克力。哦,不!威利·旺卡先生暗中还有一些真正奇妙的发明!你们知道吗,他发明了一种方法,做出的巧克力冰淇淋不用放在冰箱里也一直不会融化。甚至在大热天把这种冰淇淋在太阳下放一上午也不会化掉!”
“那是不可能的!”小查理瞪大眼珠看着祖父说。
“听起来当然是不可能的!”乔爷爷大声说道,“而且根本是荒谬的!然而威利·旺卡先生做出了这种巧克力!”
“一点不假!”其余三个老人都点着头,同意他的话。“旺卡先生做出了这种巧克力。”
“还有,”乔爷爷继续讲下去,现在他讲得很慢,这样查理能一字不漏地听到他讲的每一句话,“威利·旺卡先生能做出带紫罗兰香味的果汁软糖和每吮吸十秒钟就会改变颜色的硬糖,以及一放进嘴里就融化的又小又薄的糖果。他还能做出味道永远嚼不走的口香糖,还有糖气球,这种糖气球可以吹得很大很大,你得用针把它戳破,然后才能吃。他还用一种极其秘密的方法做出带黑斑点的可爱的蓝色鸟蛋,把这种蛋放进嘴里,蛋会越变越小,突然一下子蛋没有了,却有一只非常小的粉红色的糖雏鸟坐在你的舌尖上。”
乔爷爷停了一会儿,用舌尖慢慢地添了一圈嘴唇。“一想起这些,就使我馋涎欲滴。”他说。
“我的口水也要流下来了,”小查理说。“不过还是继续讲下去吧。”
在他们讲话的时候,查理的父母,巴克特先生和太太不出声地走进门。两人也站在门边,静静地听着。
“把那个疯狂的印度王子的事告诉查理,”约瑟芬奶奶说,“他一定会喜欢听的。”
“你是说蓬迪切里王子吗?”乔爷爷问,他开始格格格大笑起来。
“那完全是个疯子!”乔治外公说。
“可非常有钱。”乔治娜外婆说。
“他干了些什么,啊?”小查理迫不及待地问道。
“听着,”乔爷爷说道,“我来告诉你。”
第三章
旺卡先生和印度王子
“蓬迪切里王子写了一封信给威利·旺卡先生,”乔爷爷讲述起来。“请他无论如何到印度去帮他用巧克力建造一座宏伟的宫殿。”
“旺卡先生帮他造了吗,爷爷?”
“是的,他帮他造了。噢,那是一座多么了不起的宫殿啊!宫殿里有一百个房间,宫殿里所有的东西都是用深色或浅色巧克力做成的!砖是巧克力,砌砖的粘泥也是巧克力,窗户是巧克力,所有的墙和天花板都是用巧克力做的,当然,地毯、挂画,家具以及床也都是巧克力做的,而在你打开浴室的水龙时,喷涌而出的也是滚烫的巧克力。
“一切完工后,旺卡先生对蓬迪切里王子说:‘然而,我得警告你,这一切维持不了多久,因此最好你现在就开始一点点吃掉它们。’
“‘胡说!’王子高声叫起来,‘我才不打算吃掉我的宫殿呢!甚至不会去啃下一点楼梯或是舔一下墙!我要住在这座宫殿里!’
“不用说,旺卡先生的话是对的,因为没过多久,有一天,烈日炎炎,天气非常热,整座宫殿开始一点点融化,并且慢慢地坍了下去。但这时这个异想天开的王子正在客厅里打盹,等他醒来,发现自己正漂浮在一个粘稠的褐色的巧克力大湖里呢。”
小查理一动不动地坐在床边,瞪圆了双眼不错眼珠地盯着祖父,脸上神采焕发。他问道:“你不是在骗我吧,这一切都是真的吗?”
“全是真的!”四个老人一齐大声回答道,“千真万确!你可以去问随便哪个人!”
“我还要告诉你一件事,那也是真的,”乔爷爷说,这时他身子前倾,更靠近查理,他的声音放得更低了,变成了一种轻柔而神秘的低语,“从来……没有一个人……从那儿……出来过!”
“从哪儿出来?”查理问。
“也没有一个人……到那儿……去过!”
“去过哪儿?”查理叫了起来。
“当然是旺卡的工厂!”
“爷爷,你这是什么意思?”
“我是说的那些工人,查理。”
“工人?”
乔爷爷说:“所有的工厂在早晨都有大批工人进去,晚上又有大批工人出来
──然而旺卡的工厂却没有!你可曾见过有一个人进去──或是出来过吗?”
小查理的眼光慢慢地一个接一个地扫过四个老人的脸,他们也看看他。老人们的脸上都挂着亲切的笑容。同时却也十分认真,没有一丝开玩笑或是糊弄人的神色。
“怎么样,看见过没有?”乔爷爷问道。
“我……我真的弄不明自,爷爷,”查理木讷地答道,“我走过那座工厂的时候,门看上去总是关着的。”
“正是这样!”乔爷爷说。
“可总该有人在那儿干活……”
“没一个人,查理。反正没有一般的人。”
“那么又是什么人呢?”查理大声问道。
“啊──哈……你得明自,奥妙就在这儿……那就是威利·旺卡先生表现出的又一个聪明的地方。”
巴克特太太正站在门边,这时她大声说道:“查理,亲爱的,该去睡觉了。今晚就到这儿吧。”
“可妈妈,我一定得听听……”
“明天吧,宝贝……”
“好啦,”乔爷爷说。“明晚我会把其余的都告诉你的。”
✋热门推荐