`

一个很丑陋的数值计算问题

    博客分类:
  • java
阅读更多

        前两天我的工程出现的一个问题,出现这个问题后我才知道自己的java基础是多么的烂,实在要为自己找个一点好听点借口就是多么的粗心.唉,感概一下,这是一个普通到不能再普通的问题了,进入正题……一块来看看这个低级失误...   有意思的是和Mian的DefaultIoFuture中的问题很像..    

        在项目中有这样一个需求:把一个新闻对象缓存到内存中,但是要求在每天清理掉过期的新闻对象。比如一个新闻我要求保存30天,那么在新闻的发布日期超过30天的时候,这个新闻会被删除掉。这个一个普通的不能再普通的需求,看看如下新闻对象.

 

public class News {
	private long newsDateTime;
	
	public long getNewsDateTime() {
		 return newsDateTime;
	}
	
	public void setNewsDateTime(long dateTime) {
		this.newsDateTime = dateTime;
	}
	
	...
}

 

OK,接下来看看如何来判断这个新闻是否超过指定的时间.

long nowTime = System.currentTimeMillis();
long newsTime = news.getNewsDateTime();
		
int activeDays = Config.getActiveDays(); //从配置文件中获取需要保存多少天
long interval = activeDays * 24 * 60 * 60 * 1000; //计算出间隔时间
		
long t = nowTime - newsTime;
if(t > interval) {
	System.out.println(news.getNewsID() + "可以被删除掉了.");
}

 代码很简单,用当前时间减去新闻发布时候的时间得出结果后和配置文件中配置的需要保存多少天的时间进行比较,如果大于这个天数那么就删除新闻,否则什么也不做.

 

这段代码有个很大的问题,也很隐蔽.这也是我为什么把他贴出来的原因.如果配置文件是10天,20天,那么代码可以正常工作.如果是30天,几乎所有的新闻都会被删除掉.原因就在于activeDays * 24 * 60 * 60 * 1000这一句上,仔细想想,如果是整形那么30×24×60×60×1000必然变成负数了,所以后面的t > interval也就成立了.

 

以后这种运算千万要注意了.基础也罢粗心也罢,搞的人难堪至极...

分享到:
评论

相关推荐

    数值计算电子版课件pdf

    数值计算是计算机科学和工程领域中的一个重要分支,它主要研究如何用数值方法解决数学问题,尤其是在实际应用中遇到的那些无法或难以通过解析方法解决的问题。这个电子版课件PDF显然是针对这一主题的教学资料,旨在...

    数值计算方法-丁丽娟著

    矩阵特征值和特征向量的计算是数值计算中的一个重要分支,第四章介绍了和法、反幂法、雅可比法和QR方法等几种计算方法。和法和反幂法用于计算矩阵的特征值,而雅可比法和QR方法则是计算特征向量的常用方法。这些方法...

    张军-数值计算

    《数值计算》是一本面向高校计算机及相关专业本科生和研究生的教材及参考书,同时也适用于科学工作者和工程技术人员。本书由张军等人编著,由清华大学出版社出版。该书通过图文并茂的形式,不仅系统地介绍了计算机上...

    数值计算 期末综合大作业

    该数值计算方法采用的是牛顿迭代法,报告中所有格式要求均满足包括运行过程和运行结果,都有很详细的分析,对于实际问题通过结果解释现实问题也有很深刻的理解解释 如若下载本资源后,将代码复制到VS后还报错,或者...

    数值计算大作业报告_数值计算报告_

    《数值计算大作业报告》是针对数值分析与计算这一领域的一份详细研究汇报。这份报告深入探讨了在计算机科学和工程领域中,如何利用数学算法处理和求解不能直接解析的复杂数值问题。数值计算是现代科技发展的基石,它...

    数值计算方法(第三版)

    数值计算是计算机科学中的一个重要分支,它研究如何用计算机处理数学上的计算问题,特别是在面对不能得到精确解或解析解的情况下,如何寻找近似解的方法。此书英文版由Cambridge Press出版,2007年9月发行。 书中...

    数值计算方法___吕同富

    数值计算方法一与计算机相结合是木书的特点,也是科学计算发展的需要随着计算机的 ...有效地利用IGI ATLAI3的超强功能,来处理科学计算问题,有助J--避免那种学过数值计算方 法但不能上机解决实际问题的现象发生.

    《数值计算方法》丁丽娟 课后习题答案

    8. **数值概率与统计**:包括蒙特卡洛方法,这是一种基于随机抽样的数值计算技术,适用于解决复杂问题。 9. **复数域的数值计算**:涉及复数运算和复数函数的数值解法。 通过丁丽娟教授的《数值计算方法》课后习题...

    《数值计算方法》课后习题答案.pdf

    数值计算方法是数学的一个分支,它使用近似算法来解决数学问题,这些数学问题在精确解不存在或难以求得时尤为重要。以下是数值计算方法中一些基本和重要的知识点: 1. **误差分析**:在数值计算中,误差是不可避免...

    数值计算方法实验代码

    在计算机科学领域,数值计算方法是解决数学问题的重要手段,特别是在处理复杂的数学模型和实际问题时。本实验代码由计算机专业学生李星编撰,旨在帮助我们理解和应用数值计算的基本算法。以下是对这些实验代码的详细...

    java 数值计算程序

    共有数值计算中常用的Java方法近200个.内容包括:解线性代数方程组、插值、数值积分、特殊函数、函数逼近、随机数、排序、特征值问题、数据拟合、方程求根和非线性方程组求解、函数的极值和最优化、数据的统计描述...

    数值计算方法答案(北京大学)

    4. **促进科学研究的发展**:许多科学发现都是基于精确的数值计算结果得出的,因此数值计算方法是现代科学研究不可或缺的一部分。 #### 三、常见数值计算方法介绍 1. **线性方程组求解** - 直接法:包括高斯消元...

    现代数值计算方法 现代数值计算方法

    迭代法是一种常用的数值计算策略,通过重复应用一个或多个步骤,逐步逼近问题的精确解。例如,在求解非线性方程或优化问题时,迭代法可以提供有效途径。 #### 3. **数值积分与微分** 数值积分与微分是数值分析的...

    数值计算方法答案 1-7章

    数值计算方法是计算机科学与工程领域中的重要学科,它研究如何用近似方法解决数学问题,特别是在实际计算中无法得到精确解的情况下。本资源“数值计算方法答案 1-7章”由曾金平主编,出版于湖南大学出版社,提供了前...

    很好很全的数值计算方法课件

    数值计算方法是计算机科学与工程领域中的重要分支,它研究如何用近似方法解决实际问题中的数学计算。这些方法在处理不能直接解析求解或计算量过大的问题时显得尤为重要。以下是对压缩包中各文件内容的详细解读: 第...

    数值计算方法资料和课件

    数值计算方法是现代科学技术中不可或缺的一部分,它为解决各种实际问题提供了强大的工具。从工程设计到经济模型预测,从物理模拟到数据处理分析,数值计算方法的原理和应用几乎贯穿了所有科学和工程领域。《数值计算...

    MATLAB数值计算 课后答案

    MATLAB是一种广泛应用于科学计算、数据分析和工程领域的高级编程语言,尤其在数值计算方面表现出强大的功能。本资源是“MATLAB数值计算”的课后答案,2013修订版,由【美】Cleve B. Moler撰写,并有中文翻译版本。这...

    java数值计算算法编程

    通过以上知识点的学习和实践,开发者可以有效地在Java环境下解决各种数值计算问题,无论是简单的数学运算还是复杂的科学计算。对于每个知识点,深入理解原理并结合实际应用,是提升编程能力的关键。

    matlab数值计算.pdf

    这一章将讨论如何利用 MATLAB 解决常见的数值计算问题,并强调 MATLAB 在数组处理、M 函数指令、图形显示指令等方面的优势。 4.2 数值计算 MATLAB 的基本运算单元是数组,因此本章从矩阵分析、线性代数的数值计算...

Global site tag (gtag.js) - Google Analytics