一条凭空消失的短信引发的思考

[i]一条凭空消失的短信,引发了一个信管人深深的思考,究竟是什么原因,造成了奇怪的现象。因为发生在午夜十二点多,某种神奇的力量删除了短信,还是手机系统的一个Bug。那为什么使用了整整一年第一次发生这样的事情,究竟是偶然还是必然?请收看,即将为您播出的大型记录片——《秘境追踪III》之《一条凭空消失的短信》[/i]

2008年5月26日零点,星像往常一样,跟璇儿打完电话,然后又给她发了条短信,不久之后,璇儿回复了短信:“星,请你相信,我是你一个人的。”星收到查看后,迅速回复了短信,回复完后,返回短信列表,让星想不到的事情发生了——刚刚收到的那条短信,竟然凭空消失了……

在上世纪90年度末期,新的有关鬼与神的传说发展到了手机,电脑网络等新生事物上,一系列有关鬼通过互联网和手机网络与人对话,甚至控制人类的故事开始流传。而这个时间,一般恰好都是零点!

星作为一个思维严整的信管人,首先考虑到的是,可能是误删除了短信。以前发生过这样的事情,收到短信后,由于手忙脚乱,一不小心删除了刚刚收到的短信,以前这也引起过星的不满,因为删除时,系统不会提示删除确认信息,这是违反友好性原则的。可是,当星收到这条短信的时候,很从容的查看短信并回复,不会存在误删的情况。

接下来,星推测这极有可能是手机偶然出现的Bug。是不是短信收到后,系统出现故障,自动将短信删除了呢?星带着这样的疑问,和收到短信的幸福,关掉手机睡去了。



[i] 一条凭空消失的短信,引发了一个信管人深深的思考,究竟是什么原因,造成了奇怪的现象。因为发生在午夜十二点多,某种神奇的力量删除了短信,还是手机系统的一个Bug。那为什么使用了整整一年第一次发生这样的事情,究竟是偶然还是必然?请收看,正在为您播出的大型记录片——《秘境追踪III》之《一条凭空消失的短信》[/i]



2008年5月26日早上7点40分,星打开手机,再次收到璇儿在零点二十几分发来的短信,随之又收到了几个朋友的短信,星回复了其中的一条,然后准备看完其他短信返回短信列表再逐一回复,结果奇怪的现象再次发生,所有刚刚收到的短信都不见了!

星又转到发件箱,发现刚刚发出的短信,以及零点回复璇儿的短信也都不见了。星意识到,这不是一个系统Bug,也不是一个偶然事件。因为,这个手机已经使用了一年零三个月,收发短信数万条,那么26号零点出现了一次错误,那就是说概率是数万分之一。而在26号早上,5条短信都消失了,也就是小概率事件频繁发生,这几乎是不可能的!

那么会不会手机设置问题呢?之前,星的母亲突然收不到星的短信,接连几天都是这样,最终查明原因,竟然是在不知不觉地情况下,将星加入了短信黑名单,收不到短信就不足为怪了。星马上开始在手机中查找有关设置,发现对于发送短信而言,确实存在一个“是否保存发送短信”的选项,而这个选项的当前状态是:保存。而对于收件箱而言,并不存在这样一个设置。因此,设置问题也被排除了。那究竟还会有什么原因,会造成如此诡异的现象呢?



[i]一条凭空消失的短信,引发了一个信管人深深的思考,究竟是什么原因,造成了奇怪的现象。因为发生在午夜十二点多,某种神奇的力量删除了短信,还是手机系统的一个Bug。那为什么使用了整整一年第一次发生这样的事情,究竟是偶然还是必然?请收看,正在为您播出的大型记录片——《秘境追踪III》之《一条凭空消失的短信》[/i]


当星陷入沉思之时,同屋的室友,软件工程专业的王超提示说,有可能是内存已满,接收不到短信。确实很多人的手机会存在这样的情况,但是这同样引起怀疑,一是因为星可以收到短信,只是没有保存下来,有可能是因为没有空间保存,所以只是暂存一下系统马上就删除了?二是因为星的手机可以至少储存1千多条短信,而现在只保存了200多条,数据相差甚远。这时王超又提示,这有可能是因为短信和其他诸如照片、音乐之类的文件共享手机内存,那些文件占据了大量空间,导致了短信无处存储。星发现这是个有意义的提示,便去核查手机内存,系统显示:

我的文件 60.7%已用 我的数据22.4% 已用 SIM卡内存 76.9已用 内存卡 29%已用

可以看出,剩余空间对于每条只有几Kb的短信而言,还是相当充裕的,因此,内存卡不足的假设,也被排除了。

这时,星又收到一条短信,他发现收件箱里统计的短信总数,比之前多了一条;星观察了发件箱的短信总数,然后回复了这条短信,发件箱的短信总数也增加了一条。这也引起了星的怀疑,出于职业的敏感,星想到,发送或接收短信时,系统要做三件事,一是接收或发送短信;二、将其保存到本地以供用户查看;三是更新短信总数。设计师们通常会将这三件事情纳入一个事务处理之中,这样首先就要满足ACID中的原子性,即一个事务中的所有事情,要么全发生,要么就全不发生,即全失败。如果据此推论,既然系统已经更新了短信总数,那么也应该同时完成短信存储!那么如果设计师不将其纳入同一个事务之中呢?星觉得这样的可能性同样很小,因为如果存在如此的严重的事务配置缺陷,数万次的短信收发,也应该早就会出现这样的问题了。

那么,据此推论,短信应该是存储在了手机上,那为什么返回列表时,却没有发现呢?难道手机之中还存在什么惊人的秘密吗?



[i] 一条凭空消失的短信,引发了一个信管人深深的思考,究竟是什么原因,造成了奇怪的现象。因为发生在午夜十二点多,某种神奇的力量删除了短信,还是手机系统的一个Bug。那为什么使用了整整一年第一次发生这样的事情,究竟是偶然还是必然?请收看,正在为您播出的大型记录片——《秘境追踪III》之《一条凭空消失的短信》[/i]



星的手机收件箱中有200多条短信,发件箱中也有100多条短信,而每屏只能显示3条短信,因此,星之前并没有逐一审查一遍已经接收的短信。由于发件箱的短信数量相对而言较少,因此星开始逐一查看发件箱的短信,2008年5月25号,共计发出短信57条,而5月26号竟然没有短信!

看了一遍没有发现异常,星又仔细看了每条短信的摘要,忽然找到了刚刚发出的短信!这证明了短信并没有丢失。然后星又随即转入收件箱,5月25号收到短信42条。星仔细查看,很快找到了那些原以为已经消失的短信。

星马上被接收短信的日期吸引了,为什么明明是26号收发的短信,显示的日期是25号呢?忽然,星想起了,26号零点,星刚给璇儿打完电话,回到屋里看到电视上正好出现整点时间,星看了一下自己的手机,显示的时间还是11点58分,于是就很快的修改了手机时间,将时间改为0:00。但是,星忘记了修改日期,也就是手机的时间被改成了2008年5月25日0点0分!又由于手机接到短信后,按照手机时间保存短信,手机的短信列表也是按照手机时间对短信进行排序,因此2008年5月26号接到的短信,实际上被保存成5月25号收到的短信,然后与真正在25号收到的短信混排在了一起。而这些短信由于是按照25日0点多收到的短信,因此排在了真正25号收到的短信的前面,也就是向下移动了40多条短信,每屏只能容纳3条,也就是要按20多下向下方向键才能看到实际上是26号早上收到的短信,而最初发现短信消失时,星并没有向下滚动过这么多条!

星又仔细对比了真正在25号收到的短信和在26号收到但是被保存为25号收到的短信,在短信阅读状态(而非短线列表状态)下,25号收到的短信显示的时间是7:34 05/25/2008,而26号收到的短信会显示7:45,即当天收到的短信不会显示日期。

Moto E2按照手机时间保存短信,查看短信时,则会看到真正的短信“发送时间”,这个时间应该是获得的服务器或者交换机时间。

如果星的手机不是存在那么多条短信,并且是单天就存在50余条短信,应该很快就能发现这个题,但是由于数据量很大,导致了排错的困难。那么,这样一件事情,能带给我们怎样的启示呢?



[i]一条凭空消失的短信,引发了一个信管人深深的思考,究竟是什么原因,造成了奇怪的现象。因为发生在午夜十二点多,某种神奇的力量删除了短信,还是手机系统的一个Bug。那为什么使用了整整一年第一次发生这样的事情,究竟是偶然还是必然?请收看,正在为您播出的大型记录片——《秘境追踪III》之《一条凭空消失的短信》[/i]

星随即总结了这件事对于信息系统开发而言带来的三点重要的启示:

1 当保存重要信息时,应该获得系统时间,而非本地时间,尤其是目前星正在负责研发的财务结算系统,即使是一般的系统,也会由于各个终端的时间不同,而导致共享数据排序的混乱。

2 当出现数据丢失,幻读等奇怪现象时,应该考虑是不是事务处理出现问题。

3 在构建企业信息系统时,由于数据量都比较大,当出现一些莫名其妙的问题时,应该去查看这些数据去辨别错误原因。同时,采用测试驱动开发,也要多试验一些典型数据,当在运行过程中出现由于某些数据引起的异常,应该单独编写测试用例,以编写新的方法来满足需求。

另外,修改手机时间时,特别是跨天修改时,一定要记得修改日期。

星同时对系统的用户友好性的一系列问题展开了思考,也许生活中的每个瞬间都会给你一些启示,每个人生的过程都是一种体验和提高的机会,与其抱怨一些事情,不如认真地去对待,并期望能从中学到什么,以这样的一种心态去面对原本不喜欢的事情,就会获得一种救赎了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值