出差二日感

 这两天出差到苏州,工作进展的比较顺利,否则我今天也回不了南京。工作有些体会,在候车和乘车途中也难得看了好久没看的书《编程珠玑》(为什么选这本书带着出差,有这本书的肯定知道这本书区区200多页);也思考了一些问题,忍不住记录下来。

   第一天9:00赶到火车站,大家都知道火车站买票是需要排队的(废话!其实有些人不知道。),9:15终于排到了窗口,这时候挤过来一个胖子(没有侮辱的意思)也要买去苏州的票。售票员说,你怎么不排队呀?他叟地一下掏出一个证件很拽地说,行了吧?售票员一看说,记者证就可以不排队了么?胖子看记者证吓不住人,立马换了语气,我赶时间嘛。售票员说,如果他们同意就可以。然后大家的意思都是算了,售票员说9:30到苏州的票是无座的。那胖子说,那晚一点呢。售票员说,10:40有座,你不是赶时间嘛?真是奇怪了。胖子买票成功,离去。我买了9:30去苏州的无座票,售票员对旁边的同事说:%¥@拿个记者证就能插队了,以后什么证都能插队了。看来这位记者兄弟认为这个队列是优先队列,他的优先级别很高。

   无座票的价格和有座票的价格是一样的,这个大家都知道,所以无座的意思不是真的无,是让你自己去找空座,至于为什么会有空座?要看到你目的地途中有几个停靠站点的上下车旅客情况了(大家都想过这个问题吧?)。上车后换了几个座位都有人,算了,找个舒服的地方先呆着吧,毕竟换来换去很不好受。下一站丹阳再碰碰运气,20分钟就到了。一部分旅客下车了,又有一部分上,换了一次座位后火车启动了,终于安心坐好。下一站无锡,又换了一次座位,顺利坐到苏州。全程1小时30分钟,站立25分钟,坐1小时5分钟。所以下次大家平时出差赶时间时买无座也不用害怕。这一小时的时间看了《编程珠玑》第五章:编程中的次要问题,其中有个找bug的轶事挺好玩的:       一位程序员最近安装了一个新的工作站。当他坐下时一切正常,一旦他站起来就不能登录系统了。而且此bug有100%可复现:坐下可以登录而站起来时重来不能登录。大家可以想想原因,给大家1分钟。好了,可以看下面了。大家肯定开始怀疑地毯下的电线是否松了?存在静电?最后,一个机灵的同事最后问对了一个问题:程序员站着和坐着时分别是如何登录的?伸出手再试试。问题就在键盘上,两个键的键帽松动了。坐下时是触摸打字;但是站起来时,在寻找和敲击键盘,它就不行了,最后拿来改锥拧紧了两个晃悠悠的键帽,一切正常了。    芝加哥的一个银行系统正常运行了几个月了,但是第一次处理国际数据就挂了。程序员花了几天时间查代码也不能找到任何停止改程序的原因。当更仔细观察这个问题时,发现输入有关厄瓜多尔的有些数据时程序停止。更加仔细的检查显示当用户输入首都(Quito,基多)时该程序退出。   呵呵,是不是很有意思。总结:无论在什么情况下,恰当的提问都会引导聪明的程序员迅速找到令人讨厌的bug。

    到达苏州,天热得跟蒸笼似的,好不容易到了我要安装新系统的地方,和另一位做工程的同事一起安装,调试一次性成功,没有问题。坐车准备去另外一个地方升级下那边的版本,但电话联系说那边没人开门,只好坐车去住的地方,下午5点多了,幸亏它没开门,要不还不晓得几点能回来。这段时间在车上没看书,第三次来苏州,抓紧时间打量这座城市,树挺多的,美女挺多的,不过估计又没时间去看看仰慕已久的园林了。
     第二天一早就直接奔到另一个点,三下五除二搞定系统升级,一切正常;电话跟领导汇报,领导让我可以回南京了。直接又奔到火车站已经是上午11点了,最近一班动车去南京的是12:56分的,去候车室等吧。候车的过程中看了“珠玑”中的第七章:封底计算。就是一种快速估算的方法。比如问你长江一天流入大海的水量是多少?之类的。大家有兴趣的可以估算下。这里总结下这章里面的几个原则:1.“72原则”假如你投入1000美元,时间是12年,利息是6%那么届时你将得到2012美元,6×12=72;而9年的时间,利息8%你将得到1999美元,9×8=72;聪明的你肯定总结出了规律:假如你投入一比钱时间是y每年利率是人r%那么你想使你的钱翻番,需要满足r×y=72。如果你要翻10倍呢?我们知道2^10=1024,10翻就相当于1000。比如一个指数函数花了10秒来解决一个规模为n=40的问题,且n每增加1就增加12%的运行时间,根据72法则,n增加6运行时间就翻番,n每增加60,运行时间上涨1000倍。如果n增加到160呢?时间会增加到10^7秒,这是多少时间呢?可能很少有人记得一年是3.155×10^7秒,但是Tom Duff总结了一个经验‘∏秒是一纳世纪’,所以10^7秒大概是4个月。   2."安全系数法则",纳罗斯海峡大桥在1940年的一次暴风雨中断裂了。在这之前8年中,有几座悬浮桥也遭受了同样的命运。这是气动力上升的原因。如果要计算这个问题需要对漩涡进行建模。当时没有人知道怎么建模。那么,为什么布鲁克林大桥至今没有断裂呢?那是因为设计师John Roebling充分意识到了自己的无知,他将桥上的铁索强度设计成基于已知的静态和动态负载的常规设计要求的6倍。所以,在我们对我们的实时软件系统进行性能计算时,我们必须按照2,4或6的系数降低性能,以补偿我们的无知。据悉,在美国,迄今还没有Roebling同时代的其他人所建筑的吊桥还未垮掉。   3.“利特尔法则”比如:你要进入一个很火爆的酒吧,酒吧可以容纳60人,平均人们在里面的停留时间是3小时,所以进入率是20人。队列上已经排了20人,那么我们可能还要等1个小时。利特尔法则阐述到:系统中物体的平均数量就是系统中物体离开系统的平均比率和每个物体在系统中所花费的平均时间的乘积。   总原则:当你使用封底计算时,一定要回忆一下爱因斯坦的名言:“任何事都应该做到尽可能的简单,除非没有更简单的了。”我们知道,考虑安全系数以弥补我们估计的不足,简单计算也将不再是一件很简单的事情。

    好了,候车结束,检票上车,这次我是有座票哦,所以没来的时候那么浮躁。坐过“和谐号”动车的人肯定知道中途停靠的站停车时间是很短的,短到什么程度,可以说苏州站大概有300多人上车,停车时间是2分钟。有人要说了,那怎么会来得及。好,我们运用下上面封底计算的知识。如果一个人上车时间是2秒的话,300人上一个入口需要10分钟,显然不够;幸运的是入口有13个(13列车厢前门下,后门上);在乘务员和乘客的共同努力下,队列排成整齐的L型,每个队列不超过30人,这样1分钟足够了,而且考虑了安全系数,以2的系数降低性能。车来了,顺利上车,坐下,感受到了“和谐号”的舒适,抱歉来的时候坐的也是和谐号,只是一直在换座位不是很安心。在脑中回忆这次出差的收获,思考,1个半小时的车程很快就过去了。思考了很多东西,生活,事业,在此就不一一赘述了。

    有耐性的人可以看看下面几个有趣的封底计算的问题:

    1.在多远的距离下,骑自行车的邮差传送可移动媒介的速度可以比高速数据线传递的更快?

    2.请问通过打字填满一张软盘需要花费你多长的时间?

    3.联合国1998年统计世界人口为59亿,年增长率为1.33%。这个增长率会持续增加么?到2050年时,人口数量会达到多少呢?

    4.请估计下你的城市的死亡率(用每年人口的百分率度量)。

    (完)

你可能感兴趣的:(编程,工作,生活,电话)