为阻塞型函数调用添加超时机制
我们产品中的一个子模块在进行Oracle实时数据库查询时,常常因数据库性能波动或异常而被阻塞在OCI API的调用上,为此我们付出了“惨痛”的代价。说来说去还是我们的程序设计的不够完善,在此类阻塞型函数调用方面缺少微小粒度的超时机制。 调用阻塞多发生在I/O操作(磁盘、网络、低速设备)、第三方API调用等方面。对于文件/网络I/O操作,我们可利用在非阻塞文件描述符上select /poll的超时机...
我们产品中的一个子模块在进行Oracle实时数据库查询时,常常因数据库性能波动或异常而被阻塞在OCI API的调用上,为此我们付出了“惨痛”的代价。说来说去还是我们的程序设计的不够完善,在此类阻塞型函数调用方面缺少微小粒度的超时机制。 调用阻塞多发生在I/O操作(磁盘、网络、低速设备)、第三方API调用等方面。对于文件/网络I/O操作,我们可利用在非阻塞文件描述符上select /poll的超时机...
_Learn at least one _new language every year_. — Andy Hunt and Dave Thomas_ 自己一直是“每年学习一门新语言”的忠实拥趸,曾先后认真地学习了Haskell、Common Lisp、Python、Go等语言,对Prolog、Scala、...
_2002年的Bug A与2008年的Bug B同时穿越到2013年,并在某个场合相遇了。_ 上周六,项目组本应以一个愉快的心情结束一天的工作的,但一个2002年的Bug A与另外一个2008年的Bug B同时穿越时空来到了2013年,并且恰恰在那时那刻(下班前)相遇了,于是项目组由放松变成了忙碌,由愉快变成了紧张,17:30的下班点也因此延迟到了凌晨1:30。 Bug A来源于2002年我们发布...
_**生命在于运动。**_ _– 伏尔泰_ 我无论如何都没有想到自己居然爱上了跑步。 **\* 缘起** 这要追溯到2011年,当时的我感觉自己的身体状况十分不好,各种疲劳感和不适感统统找了上来,精力也严重不足,于是乎给自己开了副药方 – **晨跑**, 期望通过锻炼身体恢复身体各个部分的机能。我坚持跑了一个多月,效果甚好:精力充沛,心情舒畅,工作效...
程序是什么? 大师们曾给过这样的诠释: _程序 = 数据 + 指令 程序 = 数据结构 + 算法_ 对此我也表示十分认同。但感觉这些观点更多是从机器运行模型或逻辑抽象的角度看待程序的,是左脑的产物。我的右脑告诉我:_**程序是程序员的avatar**_(化身)。这个隐喻式的诠释会让“程序”更有温度,并有些许人性的色彩。 计算机(CPU、主板、内存、磁盘、网络)为程序提供了一个...