范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

再谈不可变对象实现和优缺点

  所谓对象的本质之一,就是一个装了状态的容器。
  可以想想一个映射到现实世界中的订单对象。
  如果这个容器的状态是可变的,就称之为可变对象,否则称之为不可变对象。之前的文章里反复强调了不可变对象的好处。
  这里再做一个简单的总结。怎样实现一个不可变对象
  不可变对象具体的实现方式也很简单。
  如果用的是Java8这样的老版本,可以把每个字段都标记为final,或者干掉所有等价于set操作的公共方法。
  如果用的是Java17这样的新版本,直接用档案类(record class)就可以了。 不可变对象的设计权衡
  1. 优点
  不可变对象可以被更随意的传递
  在单线程的情况下,不用担心这个对象在经过某个方法之后,被莫名其妙的修改了某些属性。如果是可变对象,为了防止属性变化,需要对该对象做一次拷贝,然后把副本传进去。
  在多线程的情况下,一旦对象构建完成,就不用再担心这个对象被多个线程同时处理时,遇到数据竞争(data racing)的问题。
  想想synchronized或者ReentrantLock吧。如果是面试的时候,白板编程,可能大部分人连单词都拼不对,更别提针对它们的八股文了。
  可变对象不宜作为HashMap/HashSet的Key
  根据HashMap的原理,在计算哈希值的时候,会根据对象的状态(也就是某些或者所有字段)来计算。
  因此,如果用一个可变对象作为key,一旦对象的状态被改变,相信的哈希值也肯定会跟着变,根据某个key就找不到原先的记录了。而不可变对象就不会有这个问题。
  2. 缺点
  对象会创建的特别多
  比如:
  String greeting = "Hello"
  greeting += ", World!"
  因为String类型在Java里是不可变的,因此底层会创建不止一个对象。
  这个现象在Spark里特别明显,每一次针对RDD的操作,不论是filter、map还是group、join等,都会生成一个新的RDD。
  多说一句:可以用设计模式里的享元模式(Flyweight Design Pattern),部分解决这个问题。
  可能存在性能瓶颈
  因为要频繁的拷贝对象,所以性能相对比直接update一个属性会差一点。
  多说一句:如果是非中间件类的开发,这点额外的消耗,相对于一次RPC调用,完全可以忽略不计。

化身健身教练!OPPO智能电视K9带来全新的大屏体验,满足感爆棚在去年的未来科技大会上,OPPO宣布了要加强在IoT可穿戴设备及智能家居上面的布局,以求给我们创造一个更加美好的科技生活场景。这不,前几天OPPO在OPPOK9系列超次元发布会就给三星F52国行发布,定价1999元,对比K40,差距太明显作为国际手机巨头,三星还没有离开,并正式在国内市场推出了三星F52。这款手机配备了骁龙750G芯片,价格也是1999元。由于价格与K40相同,因此配置差距有多大?下面我们从多个维度Q1手机系统流畅度排行榜ColorOS第一,这几大核心是获胜关键随着科技的不断进步,各路消费者在购机时不止是看重手机的外观影像和性能,系统倒成为了它们选购的重要核心,市场有了需求,厂商也积极地响应,开始专注于系统的设计和开发。在这方面OPPO响AppleWatch7正式发布,提升却不大,你还会入手吗?我们一直在等待苹果手表7系列的到来。有很多人迫不及待地想换掉他们的智能手表,但当你了解到苹果手表7系列的变化和升级后,也许你会改变主意。就像媒体在发布会前曝光的信息一样,Apple担心即将到来的夏天?索尼随身空调了解一下空调,人类史上最伟大的发明之一,拯救了无数个宅男宅女的生命和精神。尤其是在夏天到来的时候,把空调一开,躺在床上刷剧刷微博,无比惬意。但可惜的是,空调太过庞大,并不能随身携带。外出的荣耀又一款新机!天玑120066w,网友少说得四千起步?自从荣耀离开华为以来,市场反应一直很平稳,甚至人们都在疯狂地抱怨它。以第一部手机,即荣耀v40离开后的情况为例,它配备了天玑1000处理器并卖给了三千五百部,但大多数手机制造商都没这款游戏本没什么存在感,但也悄悄更新了配置飞行堡垒,一个曾经大名鼎鼎现在却默默无闻的游戏本品牌。在游戏本刚兴起的时候,华硕就推出了飞行堡垒系列争夺市场,也确实成功的吸引了不少用户。但是这些用户中有绝大部分在接下来的时间里变vivoX60Pro一款外观高强度强的手机,你喜欢吗?如今,手机行业不仅看重性能,更看重外观。如果是一款外观高强度强的手机,一定会深受用户的喜爱。随着科技的日益进步,玻璃机身已不再稀罕。手机厂商不仅在材质上进行了优化,还在屏幕设计和摄荣耀X10终于现货了,128GB价格亲民,可能是最值得买的5G手机相信有很多人都是华为和荣耀的忠实粉丝,也被称为花粉。熟悉市场行情的都知道,去年荣耀X10长期处于一机难求的状态,原因相信大家都知道。作为一款1899元起卖的5G手机,这款手机在巅峰你是首富你就应该捐钱!元芳你怎么看?文后有个投票,逼人捐钱该不该?大家的选择是什么呢?上周天津港爆炸事件牵动了全国人民的心,截至今日上午11时,已发现遇难者人数114人,失联人数70人,住院698人。事故发生后,有不很抱歉,本轮XX手机已售罄最近小编在逛论坛的时候,发现了这样一个吐槽贴。大概就是,楼主想买一台刚发布不久的魅蓝2,结果按发售时间整点去抢购愣是没抢到。其实这已经成了国产智能手机圈里的一种奇怪的现象,甭管什么
山寨iPhone见得多,山寨小米你见过吗?我买手机没被坑过,但周围的朋友亲戚倒是被坑过。小米和三星被山寨最多倒是没错,因为我周围情况差不多比如说小米和红米系列,山寨的可是非常之多。尤其是红米系列,上图是小米系列山寨与真机对你觉得空气加湿器有用吗?为什么?谢谢邀请。有用,但要看你处在什么环境。居住在有地暖的楼层,空气非常干燥,特别是冬天,用加湿器增加湿度非常好,让人呼吸通畅,很舒服,也可以降低感冒的发生。加湿器?从来不用,家中不湿答现在中国和美国的量子计算机发展谁更优秀一?什么是量子?量子就是微观世界中的粒子,当粒子之间相互作用所产生的力叫力学把两者结合在一起就是一种量子力学现象,又可称量子纠缠或粒子纠缠。量子相互纠缠的两大亮点是快和不确定性。由于不中国能建最新公告拟合计100亿元投资设立氢能业务及数字科技子公司中国能建公告,拟50亿元投资设立全资子公司中能建氢能源发展有限公司,抢抓氢能行业发展的机遇拟50亿元投资设立全资子公司中能建数字科技集团有限公司,系公司数字化转型和科技强企打造公司跻身中国市场前三单飞后荣耀手机销量劲增新加坡联合早报网站近期报道称,据市场调研公司CounterpointResearch称,自华为分拆后,业已独立的荣耀品牌在今年第3季度手机销量劲增,成中国国内市场第3大智能手机品牌司马南对话北大教授曹和平中国的芯片差距到底有多大?光刻机的应用司马南说到数字,很多人都知道,美国人从芯片入手来卡我们的脖子,现在芯片是我们最大的短板。我们每年进口的芯片比我们进口粮食花的钱还要多。华为能够设计出世界上最先进的芯片,美有微软苹果,日有丰田索尼,中国有什么国际知名的品牌世界经济在不断地发展提高,经济全球化也已经成了大势所趋,随着经济的发展,大量的企业不断涌入市场当中,在不同的行业当中也出现了众多具有代表性的品牌,在这样一个经济全球化的时代当中,出你知道各品牌手机的老总是哪个国家哪里人吗?品牌一小米手机系统比手机早上市一段时间该公司的CEO原先是国内名知名软件公司的掌门人(该软件公司推出的某款产品在功能上对抗了Microsoft自带的经典软件套装)。该手机品牌在销售摩根大通CEO加密货币没有内在价值但区块链是真实的全球知名投行摩根大通CEO杰米戴蒙(JamieDimon)对投资者投资加密货币发出警告。加密货币没有内在的价值。你基本上只是在买一个代币,我会非常小心。戴蒙在周三发布的CBS波士顿2021。11。28最新电脑配置推荐与方向更多关注与咨询关注于微信公众号装机不是程序猿CPUI310105散热赛普累屠城主板微星H510M爆破弹显卡核显内存影驰金属大师DDR430008G固态数码映众256GNVMEM。2晨鸣纸业入选2021年度山东省科技领军企业近日,山东省科学院情报研究所省创新发展研究院省科技服务发展推进中心,在济南联合举行2021年度山东省科技领军企业名单发布会,向社会发布了200家科技领军企业名单,晨鸣纸业等企业从全