`

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

    博客分类:
  • 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也就成立了.

 

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

分享到:
评论

相关推荐

    java数值计算算法示例程序

    在Java编程领域,数值计算算法是至关重要的一个部分,它涉及到数学、物理学、工程学等多个领域的实际应用。这个“java数值计算算法示例程序”压缩包提供了丰富的代码示例,帮助开发者深入理解并掌握如何在Java中实现...

    数值计算电子版课件pdf

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

    数值计算方法-丁丽娟著

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

    张军-数值计算

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

    数值计算 期末综合大作业

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

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

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

    数值计算方法(第三版)

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

    数值计算方法___吕同富

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

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

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

    数值计算方法实验代码

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

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

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

    java 数值计算程序

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

    数值计算方法习题精析(黄云清)

    作者黄云清,数值计算方法课后习题,内容涉及数值计算方法的数学基础、数值计算方法在工程、科学和数学问题中的应用以及所有数值方法的MATLAB 程序等,涵盖了经典数值分析的全部内容。包括:非线性方程的数值解法;...

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

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

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

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

    数值计算方法(第二版)PPT教案(马东升)

    《数值计算方法(第二版)》是由马东升教授编撰的一部深入讲解数值计算理论与实践的教程,涵盖了...通过学习《数值计算方法(第二版)》,读者可以掌握处理复杂计算问题的实用技巧,并能灵活运用到各自的科研和工作中。

    数值计算方法资料和课件

    《数值计算方法》是一门深入探讨如何通过数值方法解决各种数学问题的学科。这门课程主要涵盖以下几个核心知识点: 1. **误差分析**:在数值计算中,由于计算机的有限精度,任何计算过程都不可避免地会产生误差。这...

    北京理工大学《数值计算方法》练习题(含答案).pdf

    数值计算是云计算中一个非常重要的部分。云计算作为一种通过网络按需提供可配置的计算资源共享池(资源包括网络、服务器、存储、应用软件、服务)的模式,其基础就是快速准确的计算。数值计算方法的应用能够使云计算...

    java数值计算算法编程

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

Global site tag (gtag.js) - Google Analytics