美文网首页
可变对象导致的诡异现象

可变对象导致的诡异现象

作者: 小小辉 | 来源:发表于2017-01-16 11:38 被阅读0次

       当时在做这么一个需求,需要统计一个应用的所有调用信息,包括各个ip的调用信息,整个应用所有的调用信息。流程大概是这样:

1.从一个rest接口读取所有的调用信息,信息包含appName、ip、count等字段。

2.转换为java的对象,每一个对象代表一个ip的调用信息。

3.有一个HashMap存放所有的对象,key值为ip值。

4.有一个特殊的key为:all,代表所有的调用信息。值为list,包含所有ip的对象。

5.聚合all的list对象,计算一个总值。

      问题来了,我当时为了节省内存,性能。采用的合并聚合的方式是把后边的值聚合到list的第一个对象中去。 最后问题的现象是:有一个ip的count和all的count一模一样。因为all和这个ip引用到了同一个对象,而all把这个对象给修改了。

现在想想,jdk把Integer、String等等对象设置为不可变的对象是多么伟大正确的事情。

相关文章

  • 可变对象导致的诡异现象

    当时在做这么一个需求,需要统计一个应用的所有调用信息,包括各个ip的调用信息,整个应用所有的调用信息。流程大...

  • copy与strong的区别,copy与mutableCopy的

    copy只能修饰不可变的对象,因为修饰可变的对象会得到一个不可变的对象,在调用可变对象的方法时会导致程序崩溃。例如...

  • python中可变对象和不可变对象

    Python在heap中分配的对象分成两类:可变对象和不可变对象。 所谓可变对象是指,对象的内容可变,而不可变对象...

  • python可变对象和不可变对象

    Python在heap中分配的对象分为两类:可变对象和不可变对象。 可变对象:list,dict 不可变对象:in...

  • Python中的可变对象和不可变对象

    Python中的可变对象和不可变对象 什么是可变/不可变对象 不可变对象,该对象所指向的内存中的值不能被改变。当改...

  • python可变和不可变对象

    python中有可变对象和不可变对象,可变对象:list,dict.不可变对象有:int,string,float...

  • Python浅拷贝 深拷贝

    内存泄漏太可怕。 Python 可变对象 & 不可变对象 在Python中,对象分为两种:可变对象和不可变对象。 ...

  • 诡异现象

    大自然中存在着许多诡异现象,都无法解释清楚。 二0一0年的五月,我在当地煤厂上班 ,因为我们这个班组是掘井班,上班...

  • 诡异现象

    上周六车子保养,掀开引擎盖,车子里一堆毛发,什么鬼?哪来的? 服务的小哥,见多识广,见怪不怪,一副有经验的样子,问...

  • 诡异现象

    2021年10月1日,我在花鸟市场上购买了一幅像虎又像猫的书法字画。 2021年10月10日,我搬新居,因为一个人...

网友评论

      本文标题:可变对象导致的诡异现象

      本文链接:https://www.haomeiwen.com/subject/ukzubttx.html