阿里合伙人爹味发言,惊掉了我的下巴

大家好,我是鸭鸭。

最近,阿里大文娱的高管樊路远在灵犀互娱的内部演讲惊掉了我的下巴。

不知怎么的,樊路远在讲座里一口气提到“感恩阿里”,甚至把阿里形容成了“救世主”——这波“爹味”发言堪比杨子。

图片

樊路远在演讲中提到,灵犀互娱是从网易出来的,创业失败后“像三国里投奔袁绍一样”,被阿里收购了。听得我一愣:这啥意思?灵犀是“被收养”了?按他说法,要不是阿里收购,灵犀“就倒闭了,啥也不是”。

这也太直接了吧,仿佛灵犀所有的成就都得感谢阿里,能做出《三国志战略版》就是阿里去日本买了 ip,找了明星代言,投了很多钱做广告,不然做不出爆款游戏。

这种话听上去很让人不舒服,毕竟,收购意味着商业上的决定,而不是成就的全部。樊路远的“救世主”自信,有点过头了。

并且他还说你们团队以前走火入魔过,现在重新学习阿里价值体系,公司说你不行你就不行。广州以前都是朝廷流放的地方,当年这里都是蛮夷,讲的都是鸟语,听不懂。

这是什么逆天发言??还开地图炮呢??

除此之外他还一直敲打现在的灵犀互娱总裁周柄枢。樊路远说他是个“小屁孩”,说什么周从 P7 升到 M4,要感恩阿里才有今天。

你听听,这话说得多像父亲在教育儿子啊。周柄枢从 P7 到 M4,照理说是他自己努力的结果,怎么就变成了“灰溜溜”加入阿里的“失败者”呢?

我能理解樊路远想传达的“感恩”精神,但这个“教育”方式让人不太舒服,给人一种“你就该感恩,我才是对的”的高高在上的感觉。人家已经是公司的总裁了,凭什么把自己当成父亲,给人家上“人生课”?

由于演讲太过劲爆,事后发酵,12.7日晚樊路远一看势头不对在公司内网进行了道歉,自罚三个月工资。

图片

樊路远演讲后的道歉,也许是为了平息风波,但真心话,这种“道歉”恐怕也不能完全让员工释怀。演讲里充满了“爹味”的管理理念,不是一句道歉就能改变的。

这种过于居高临下的“父子”关系,显然不太能赢得员工的心。你们怎么看?欢迎来评论区聊聊!

继续今天的面试题:

Java 中的 IdentityHashMap 是什么?

回答重点

IdentityHashMap 是 Java 中的一个 Map 实现,和普通的 HashMap 不同,它使用 引用相等性(reference equality) 作为键的比较方式。换句话说,它使用 == 来比较键值,而不是 equals() 方法。因此,只有当两个键的引用相同时,才被认为是相同的键。

使用场景:

  • 对象身份区分:适用于需要基于对象身份(引用)进行区分的场景,比如需要跟踪对象实例,而不是逻辑上的值相等性。
  • 特殊缓存:有时用于构建缓存或映射结构,确保即使两个对象内容相同,但只要它们是不同的实例,就会被当作不同的键。

扩展知识

主要特性总结:

  • 引用相等:IdentityHashMap 使用 == 比较键的相等性,而不是通过 equals(),这使得它适合那些需要基于对象身份(引用)的场景。
  • 哈希实现:虽然名字中有 “Hash”,但 IdentityHashMap 并不使用对象的 hashCode() 方法,而是依赖 System.identityHashCode(),这是基于对象引用的哈希值。
  • 允许 null 键和 null 值:类似 HashMapIdentityHashMap 也允许 null 键和 null 值,但它使用的是对 null 的引用比较。
  • 非线程安全:与 HashMap 类似,IdentityHashMap 不是线程安全的,在多线程环境下需要手动同步。

IdentityHashMap 源码分析

首先看它覆盖的 hash 方法:

图片

可以看到,它用了个 System.identityHashCode(x),而不是 x.hashCode()

而这个方法会返回原来默认的 hashCode 实现,不管对象是否重写了 hashCode 方法

图片

默认的实现返回的值是:对象的内存地址转化成整数,是不是有点感觉了?

然后我们再看下它的 get 方法:

图片

可以看到,它判断 key 是否相等并不靠 hash 值和 equals,而是直接用了 == 。

而 == 其实就是地址判断!

只有相同的对象进行 == 才会返回 true。

因此我们得知,IdentityHashMap 的中的 key 只认它自己(对象本身)。

即便你伪造个对象,就算值都相等也没用,put 进去 IdentityHashMap 只会多一个键值对,而不是替换,这就是 Identity 的含义。

比如以下代码,identityHashMap 会存在两个 Yes:

Map<String, String> identityHashMap = new IdentityHashMap<>();
identityHashMap.put(new Yes("1"), "1");
identityHashMap.put(new Yes("1"), "2");

这里眼尖的小伙伴发现代码里,为什么返回值是 tab[i+1]?

图片

这是因为 IdentityHashMap 的存储方式有点不一样,它是将 value 存在 key 的后面。

图片

认识到这就差不多了。它是一个非常特殊和有限用途的映射实现,主要用于需要引用相等性的场景。在一些框架中,代理对象可能需要根据实际对象实例进行映射,而不是逻辑相等的对象,这时候 IdentityHashMap 就派上用场了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值