- 博客(7)
- 收藏
- 关注
原创 Stream流使用Collectors.toMap空指针问题
mergeFunction是一个函数,它接收两个参数:旧值(已存在于Map中的值)和新值(当前要添加到Map中的值),并返回一个合并后的值。Collectors.toMap函数是Java 8中的一个静态方法,它用于将Stream中的元素转换为一个Map集合。toMap方法的第二个参数,被map.merge使用了,可以看到value值不能为null,否则会报npe。在前些天的项目过程中发现一个stream流的npe,问题,最后定位是这一行代码出的问题。
2023-10-11 14:50:13
1021
原创 浅谈反射中调用method.invoke(obj, args)时为什么要传入一个目标对象?
最近在做回调函数的时候需要回调执行之前的操作,其中用到了反射里的invoke方法,我不禁思考既然得到了method得class文件,也获得了参数,那么为什么要传入一个目标对象obj呢?我们已知.class文件通过IO加载到内存中时JDK创造了至少四个对象:Class、Field、Method、Constructor,以Method对象为例,其中有很多字段也就是说我们在.java文件中写的方法,被“解构”以后存入了Method对象中。所以对象本身是一个方法的映射,一个方法对应一个Method对象.
2021-12-01 18:09:43
970
1
原创 关于回调函数的梳理
1.什么是回调函数?回调函数,是一个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。 在Java中,指针即所谓的引用。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。为了方便理解,我们用dota2中英雄释放技能的流程来举例子,当巫妖释放大招完之后,肯定不能等技能持续时间消耗殆尽再结束施法,因为技能持续的事件与释放者的释放后是不影响的。这样的设定.
2021-11-22 17:11:59
309
原创 闲谈fail-fast机制
之前在做一些业务逻辑时需要遍历字符串后添加或删除某个符合条件的值,了解到fail-fast的设计思想,下面简单探讨一下。fail-fast 是一种通用的系统设计思想,一旦检测到可能会发生错误,就立马抛出异常,程序将不再往下执行。很多时候,我们会把 fail-fast 归类为 Java 集合框架的一种错误检测机制,但其实 fail-fast 并不是 Java 集合框架特有的机制。@Test public void failRemove(){ List<String&
2021-11-04 14:36:09
199
原创 关于POJO类使用包装类型的思考
关于基本数据类型与包装数据类型的使用标准如下: 1) 所有的POJO类属性必须使用包装数据类型。 2) RPC方法的返回值和参数必须使用包装数据类型。 3) 所有的局部变量推荐使用基本数据类型。说明:POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证。【正例】:数据库的查询结果可能是 null,因为自动拆箱,用基本数据类型接收有 NPE 风险。( NPE 下文有解释)【反例】:某业务的交易报表上显示成交总额涨跌情况,即正负 x.
2021-10-15 17:51:16
576
原创 浅谈Spring自动注入实现策略模式
前几天,导师分配了一个任务,让我优化几个if语句用策略模式的方法。下面介绍两种实现方法:1.工厂模式+策略模式2.spring自动注入方法一:首先是工厂模式+策略模式的方案,我们先定义一个技能种类的接口public interface SkillType { //释放技能 void release();}创建实现类public class SkillTypeImpl_1 implements SkillType { @Override pu
2021-08-30 17:42:30
811
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人