速来,围观阿里出品的泰山版Java开发手册

{

public static void main(String args[])

{

Integer a = Integer.valueOf(1);

Integer b = Integer.valueOf(2);

Integer c = null;

Boolean flag = Boolean.valueOf(false);

Integer result = Integer.valueOf(flag.booleanValue() ? a.intValue() * b.intValue() : c.intValue());

}

}

a * b 时发生了自动拆箱,调用了 intValue() 方法,而三元运算的两个表达式的类型必须一致,这就导致 c 也调用了 intValue() 方法,由于 c 本身为 null,那就只能 NPE 了。明白了吧?

3)Collectors 类的 toMap() 方法

手册上说,在使用 java.util.stream.Collectors 类的 toMap() 方法转 Map 时,一定要使用含有参数类型为 BinaryOperator,参数名为 mergeFunction 的方法,否则当出现相同 key 值时会抛出 IllegalStateException 异常。

这段话可能理解上有点难度,那先来看一段代码吧!

String[] departments = new String[] {“沉默王二”, “沉默王二”, “沉默王三”};

Map<Integer, String> map = Arrays.stream(departments)

.collect(Collectors.toMap(String::hashCode, str -> str));

运行这段代码的时候,就会抛出异常,堆栈信息如下所示:

Exception in thread “main” java.lang.IllegalStateException: Duplicate key 867758096 (attempted merging values 沉默王二 and 沉默王二)

at java.base/java.util.stream.Collectors.duplicateKeyException(Collectors.java:133)

at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:180)

key 重复了,因为两个“沉默王二”的 hashCode 相同,那这时候的解决办法呢?

String[] departments = new String[] {“沉默王二”, “沉默王二”, “沉默王三”};

Map<Integer, String> map = Arrays.stream(departments)

.collect(Collectors.toMap(String::hashCode, str -> str, (v1, v2) -> v2));

多加个参数 (v1, v2) -> v2,也就是重复的时候选一个。来看看此时调用的 toMap() 方法吧。

public static <T, K, U>

Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,

Function<? super T, ? extends U> valueMapper,

BinaryOperator mergeFunction) {

return toMap(keyMapper, valueMapper, mergeFunction, HashMap::new);

}

BinaryOperator 和 mergeFunction 是不是出现了?

03、修改描述 90 处

手册上说,比如,阻塞等待锁、建表的小数类型等描述有修改,我特么花了半个小时也没有找出来和上一个版本之间的差别。

泰山版

华山版

不知道是不是手册的小编在瞎说,你要是能发现差别,告诉我一声。

04、完善若干处示例

比如说 SQL 语句栏目里的 ISNULL 的示例,确实比华山版追加了一个更详细的反例,见下图。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

分享

首先分享一份学习大纲,内容较多,涵盖了互联网行业所有的流行以及核心技术,以截图形式分享:

(亿级流量性能调优实战+一线大厂分布式实战+架构师筑基必备技能+设计思想开源框架解读+性能直线提升架构技术+高效存储让项目性能起飞+分布式扩展到微服务架构…实在是太多了)

其次分享一些技术知识,以截图形式分享一部分:

Tomcat架构解析:

算法训练+高分宝典:

Spring Cloud+Docker微服务实战:

最后分享一波面试资料:

切莫死记硬背,小心面试官直接让你出门右拐

1000道互联网Java面试题:

Java高级架构面试知识整理:

g-KRjFm8OO-1710435335577)]

最后分享一波面试资料:

切莫死记硬背,小心面试官直接让你出门右拐

1000道互联网Java面试题:

[外链图片转存中…(img-0AvxaArS-1710435335577)]

Java高级架构面试知识整理:

[外链图片转存中…(img-iIKn5QmC-1710435335578)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ps://blog.csdn.net/qq_38350635/article/details/82830171 非常感谢您分享这篇有技术含量的博客,我会去仔细阅读学习。关于设计一图书信息管理系统,我认为这是一个非常实用的项目,可以帮助我们更好地管理图书信息。我也很愿意和小伙伴们一起学习和探讨这个项目,共同进步。 ### 回答2: 这个问题可以有多种解释,因为没有具体说明使用什么或者做什么。但是,我可以提供一些可能性,进行回答。 如果这个问题是“我用...”,那么我们可以考虑这个“...”是什么。 如果“...”是指电子产品,那我们可以回答,从电脑到手机,无数种电子设备可以用来完成我们的工作、学习和娱乐,如笔记本电脑、平板电脑、智能手机、电视等等。这些设备使我们更加便利、高效地处理信息和完成任务,同时也带来了一些隐私和安全问题。 如果“...”是指某种广告,那么我们可以回答,很多人使用某种广告来宣传自己的产品或服务。这可能会涉及到电视广告、广告海报、网络广告等,有些家喻户晓,有些却默默无闻。尽管广告充斥着我们的生活,但它们确实为公司和企业提供了更好的曝光率。 如果“...”是指某项技能或知识,那么我们可以回答,随着技术的飞速发展,我们需要学习和掌握新的技能和知识,以适应不断变化的工作和社会环境。某些网站和技术工具,如搜索引擎、在线课程和社交媒体,都是帮助我们学习和进步的重要工具。这些技能和知识可以让我们在职场和生活中更成功地处理各种挑战和机会。 综上所述,“我用...”这个问题有多种可能的解释,具体取决于我们使用的是什么。无论我们使用什么,我们应该认真思考我们的选择,并保持对新科技和新领域的探索。 ### 回答3: 很抱歉,您没有提供任何足够的信息来明确您想要回答的问题。请提供更多的上下文和背景信息,以便我更好地回答您的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值