故事的背景:
笔者最近在做一个类SNS的项目,其中使用了MongoDB进行Feed信息存储,并使用定时器删除过期信息。
定时器的时间变量为60天,设定
private long msgInvalidDue = 60 * 24 * 3600 * 1000;
之所以这么写常量,完全是为了代码的易读易维护。
故事的发生:
在项目上线的某天,突然发现,2周前的数据丢失了,遍历了程序,没发现逻辑问题,甚至开始当心MongoDB造成的数据丢失(业内也是发生过的)。 笔者当时纠结啊~~
但第二天又发现数据的丢失是持续而且有规律的,于是,焦点便集中到了“定时删除任务”。左查右查没发现问题,只能一步一步的进行跟踪调试。。。。
故事的结局:
很难令人想象,问题就出现在msgInvalidDue这个long型常量上。按道理它的值应该是5184000000L的(表示60天的时间),但是它实际值却是 889032704(大约10天时间),why???? 居然是int在计算过程中的溢出~~~~太隐晦的bug了~~正确的写法
private long msgInvalidDue = 60 * 24 * 3600L * 1000;
任意一个常量上加L,转long型就OK了,坑爹哇~~~这回真是阴沟里翻船了~~
分享到:
相关推荐
铜孪晶——PCB品质的一个隐形杀手.pdf
扩展名改为cmd,双击打开出现一个隐形硬盘,可以放种子--
java语言实现数字图像水印,讲解地道,无论是java爱好者还是C++学习者,都适合,思路清晰,语言精练
作为数字媒体版权保护的重要手段。数字水印技术近年来引起了人们极大的兴趣与关注,本文论述并讨论了...图象隐形水印的基本要求2.图象隐形水印的原理和研 究方法3.图象隐形水印技术的研究现状包括水印基本理论和算法
让你的IP地址1秒钟变一次变成隐型siapro7int带注册码,好东西赶快。
NULL 博文链接:https://1975417219.iteye.com/blog/1982691
一个隐形的“电杀手”.docx
如何为Windows XP系统中设置一个隐形密码.docx
如果在网络中也有这样一件隐形衣,将自己隐形于网络,岂不就既能尽情地网络冲浪,又不必再为网络安全问题而担忧? 网神之网络隐形衣(以下简称网络隐形衣)就能帮助人们实现这一理想目的。
软件的核心功能:探测淘宝店铺宝贝是否被淘宝网隐形降权。
WaterMark.exe 加隐形水印软件
北京隐形耳机 隐形耳机介绍【详解】.docx
隐形杀手是一个电脑保护软件,本软件可以用来限制你指定的任何程序的运行,比如个人电脑里某些程序或文件不想让别人运行或打开,或在网吧里为了安全,可以限制某些程序的运行。在公司里可以用他来限制oicq等之类的...
被隐形降权的宝贝,不可能排到最前面,隐形降权这个问题是比较恶心的,可以通俗的这样说降权宝贝是指被直接枪毙的(但是可以去申诉,有机会成功),隐形降权宝贝是犯罪嫌疑人,处于观察阶段(无法申诉),从某种意义...
隐形相机
本文论述并讨论了如下问题:图象隐形水印的基本要求,图象隐形水印的原理和研 究方法,图象隐形水印技术的研究现状,包括水印基本理论和算法,数据隐藏理论与方法,水印作为所有权证明的有效性,水印技术的应用动向...
简单的说,就是这个宝贝权重被扣了很多分,要么想办法解决上面的因素,要么就是想办法给这个宝贝加分,有些宝贝隐形降权恢复了,基本是有干净的正常的自然流量注入和自然的成交了一段时间然后恢复了,也就是说被...
电子相册 模板 Flash 隐形的翅膀
提出一种隐形的非盲流水印技术,借鉴扩频通信原理,使用伪噪声码对水印位进行扩展,通过调制包间隔到达时延将扩展水印嵌入目标数据流中。实验结果表明,该技术可有效抵御时间分析攻击,且对时间扰乱具有鲁棒性。