`

犯下这种错误,羞愧难当!

阅读更多
   我很早就过了SJCP,可是在实际项目中居然还是犯下了一个让我羞愧难当的错误,而且这些错误还产生了致使的影响,真是杯具啊!大家给我扔块西瓜皮吧,我得凉快下~~~

错误1:长整数赋值问题

   系统有一个功能要产生邀请码,客户通过邀请码进行注册,但是邀请码要有过期时间,希望60天后过期,过期时间采用毫秒数:
   long EXPIRED_DATE = 60 * 24 * 60 * 60 * 1000;

   可是,测试人员告诉我,邀请码10天不到就过期了,我看了代码,百思不解,最后跟踪了代码,才发现
引用
60 * 24 * 60 * 60 * 1000
并不会自动转化为long,则是一个int,10天的毫秒数就超过了int的最大值,因此10天不到就过期了!
   这儿犯下的错误是对整数字面值赋值时,默认为int型这个基础Java知识的忽视造成的.如果要让字面数字当成long,则必须在字面数字后显示加L标识,即:
   long EXPIRED_DATE = 60 * 24 * 60 * 60 * 1000L;


错误2:数值越界的问题
  
    我写的一个模块允许开发者注册插件,为了控制插件执行的先后顺序,因此我写了一个Orderable接口,插件实现该接口以决定执行的先后顺序(orderNo越小越先执行):
public interface Orderable {
    /**
     * 排序号,越小越在前面
     */
    int getOrdreNo();
}

   
    然后我写了一个Comparator,以便可以通过java.util.Collections的
  
引用
sort(List<T> list,Comparator<? super T> c)
对插件List进行排序。我的Comparator是这样写的:
   public class OrderableComparator implements Comparator {
    private static OrderableComparator intance = new OrderableComparator();

    private OrderableComparator() {
    }

    public int compare(Object obj1, Object obj2) {
        int order1 = Integer.MAX_VALUE;
        int order2 = Integer.MAX_VALUE;
        if (obj1 instanceof Orderable) {
            order1 = ((Orderable) obj1).getOrdreNo();
        }
        if (obj2 instanceof Orderable) {
            order2 = ((Orderable) obj2).getOrdreNo();
        }
        return order1 - order2;//① 大家注意这儿是出鬼的地方!!!
    }

    public static OrderableComparator getIntance() {
        return intance;
    }
}

    但是一个开发者咆哮地告诉我,它的插件的getOrderNo()已经设置为Integer.MIN_VALUE,但是却在最后一位执行!!!
    跟踪了代码,才发现是数值越界的忽视造成了低级错误,下面具体分析一下,如Plugin1的getOrdreNo()为Integer.MIN_VALUE,而Plugin2的getOrdreNo()为1,可是大家想想下面的计算值是多少呢?
  
引用

    Integer.MIN_VALUE - 1
  

   是2147483647!!
   找到问题后改起来是不费工夫的:
    public int compare(Object obj1, Object obj2) {
        int order1 = Integer.MAX_VALUE;
        int order2 = Integer.MAX_VALUE;
        if (obj1 instanceof Orderable) {
            order1 = ((Orderable) obj1).getOrdreNo();
        }
        if (obj2 instanceof Orderable) {
            order2 = ((Orderable) obj2).getOrdreNo();
        }
         
        if(order1 > order2){
            return 1;
        }else if(order1 < order2){
            return -1;
        }else{
            return 0;
        }
    }


    唉,这两个CASE居然是最近几天连接发生了,真是百年成之不足,一旦败之有余啊。看来要恶补一下Java基础并时刻牢记啊!! 
分享到:
评论
4 楼 shihengli2010 2018-01-16  
liu4626846 写道
java解惑有很多这样的问题

顶 java解惑这些都有
3 楼 liu4626846 2012-08-20  
java解惑有很多这样的问题
2 楼 wf_chn 2012-07-11  
看过了,记住了,又忘了。。。。。非要自己做了才能印象深刻
1 楼 静候雨 2012-03-28  
这个要顶啊!!

其实第二点你肯定经过考虑,但是只是对代码优化进行了考虑,并没看到其中的bug。
第一点,太隐含了,JVM没报错,很难发现啊!哈哈!

相关推荐

    羞愧难当.doc

    在探讨古代戏曲文学时,我们经常会遇到像《羞愧难当》这样的作品,它们不仅是历史的见证,也是情感表达和人性探索的艺术载体。这一戏曲段落通过描绘一位四千岁将领在战场上的失败,巧妙地引出了智谋和人性的深层次...

    初中语文文摘社会在一首诗面前羞愧难当

    【标题】: "初中语文文摘社会在一首诗面前羞愧难当" 【描述】: "这篇文章通过个人经历和感受,揭示了城市居民对于农村生活的认知与情感隔阂,以及社会中存在的城乡差距问题。" 【标签】: "资料" 【内容解析】: ...

    AngularJS的脏检查深入分析

    我甚至在新浪前端面试的时候胡说一通,现在想来真是羞愧难当! 没有深入了解就信口开河实在难堪大任。 最后被拒也是理所当然。 误区纠正 首先纠正误区,Angular并不是周期性触发藏检查。 只有当UI事件,ajax请求或者...

    教师易犯的150个错误.doc

    然而,即便是经验丰富的教师,也有可能在教学过程中犯下一些错误。错误并不可怕,可怕的是对错误的无知和忽视。为此,我们从《教师易犯的150个错误》这份文档中提炼出三个典型错误案例,旨在揭示教学中的潜在问题,...

    小学语文近义词羞愧的近义词解释

    “羞愧”这一词语,通常用于描述个体在认识到自己行为不当或有错误时所产生的内疚和懊悔情感。它关联到人的自我认知与道德判断,是个体在社会交往中不可或缺的情感体验。在不同的语境下,为了使表达更为确切和生动,...

    令我羞愧的一件事作文.doc

    3. **自我反思**:作者在事情过后能够认识到自己的错误,并感到羞愧,这是一种自我反省的能力。在IT行业,当项目出现问题时,勇于承认错误并寻求改进是非常重要的。 4. **道德教育**:对班长的不尊重反映出作者在...

    二年级语文上册 面对夜莺感到羞愧教案2 西师大版.doc

    西师大版的《二年级语文上册 面对夜莺感到羞愧教案2》正是以此为出发点,精心设计的教案旨在让二年级的学生在学习语文的同时,感悟环保的重要性,体会汉字的形体美,并通过课文内容培养学生的综合素质。 教案的开始...

    njit8021xclient:南京工程学院802.1X客户端(Linux版兼容H3CiNode V2.40-F0335)

    现在想想实在是羞愧难当,当时不早些把这个代码传上来。 当然当时是因为为了快速达成目的,非常流氓的decompile了一下,直截了当,自觉羞愧难当,所以也是一直没放出来。。 此次也算了却一事啦。。。。。。 ##原型 ...

    13-17岁中学生内疚、羞愧、尴尬情绪理解能力

    本文讨论了13至17岁中学生对于内疚、羞愧、尴尬等消极自我意识情绪理解能力的研究,涉及了情绪心理学、发展心理学、青少年心理学等众多领域。 首先,文章提到了消极自我意识情绪的含义和重要性。自我意识情绪(self...

    英语听力软件没有错误-只有教训.docx

    这种情况下,不应将过去的行为视为错误,因为这会导致内疚和责备,阻碍学习。 5. 宽恕的意义:为了克服这种内疚感,我们需要自我宽恕。宽恕是消除情感债务的过程,它有助于我们从经验中学习,而不是陷入自责。 6. ...

    (季版)二年级语文上册 第10课 面对夜莺感到羞愧学案(无答案)西师大版 学案.doc

    这种拓展训练有助于提升学生的想象力和解决问题的能力,同时强化环保教育。 综上所述,这篇学案旨在通过生字学习、词语理解、朗读训练、课文分析和情境模拟等方式,全面培养二年级学生的基础语文能力,同时注重价值...

    羞愧的近义词和反义词是什么及造句参考.doc

    以“清晰”和“清楚”为例,两者都表示容易理解的意思,但“清晰”更侧重于声音或图像的清晰度,而“清楚”则可以泛指任何情况下的易于理解。这样的细微差别在我们的日常交流和写作中非常重要,使用不当可能会造成...

    羞愧的近义词精选.doc

    例如,“惭愧”和“羞愧”都表达了一种因自己的行为而感到不好意思或对不起的情感。在学习过程中,学生可以找到类似这样的词汇对,比如在小学语文课本《秋天的图画》中,“美丽”的近义词是“漂亮”,“勤劳”的近义...

    1面对夜莺感到羞愧——学习ppt课件

    1面对夜莺感到羞愧——学习ppt课件

    考试故事:我写了篇令自己羞愧万分的高考作文.doc

    考试故事:我写了篇令自己羞愧万分的高考作文.doc

    个人违规违纪检讨书___-条据书信_1.docx

    在工作的过程中,我因为理想化的工作预期,未能充分认识到遵守规章制度的重要性,导致我在处理具体事务时犯下了错误。我深知,一个对党、对国家有用的人,必须脚踏实地,不仅要有着崇高的理想,更要有严谨的工作态度...

    违纪检讨书四篇-7页.pdf

    在反思过去不当行为时,我深刻认识到自己所犯的错误,并为此深感羞愧与懊悔。我写下这篇违纪检讨书,不仅是为了表达我的歉意,更是为了认真剖析错误原因,采取切实可行的整改措施,并对未来做出郑重承诺。 首先,我...

    羞愧的近义词.doc

    文档中的内容主要涉及小学语文的学习材料,特别是关于近义词和反义词的整理。近义词是指意思相近或相同的词语,反义词则是指意思相反的词语,这些都是语言学习中基础但重要的部分,有助于提升学生的词汇理解和语言...

    如何对待员工犯错).pptx

    通过正面激励,鼓励正确的行为,以此来抑制错误,让犯错者自觉羞愧,从而自我纠正。 3. **惩罚的智慧**:惩罚不是简单地扣除奖金或处分,而应具有一定的策略。例如,对于偶尔犯错的员工,设立适当的恢复机制,让...

Global site tag (gtag.js) - Google Analytics