自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 五、MetaClass实现对类的属性进行包装,MetaObject实现对类实例对象进行包装,可以对属性进行一系列操作

MetaClass 实现了对类的属性进行包装,可以对属性进行一系列操作。比如,当一个配置文件和配置类是相对应的,在读取配置文件后,为了防止配置项是规定项,可以对读取到的配置项进行判断:是否有 setter 方法: /** * 判断 目标类 中是否定义了 key 指定属性对应的 setter 方法 * @param clazz 目标类 * @param prop...

2019-11-28 21:46:22 176

原创 七、使用 LinkedHashMap 实现 Lru

/** * 获取 近期最少使用的项 * 原理:在 LinkedHashMap 中获取对象时,会将对象移动到队列尾部,这样在队列头部的就是最近最少使用的项(PS:需要配合 * access-order 为 true) * @param size map 大小 * @return 近期最少使用的项 */ public Obje...

2019-11-27 21:45:09 148

原创 一、通过可重入锁写一个阻塞版本的 Map

package org.apache.ibatis.block;import java.util.HashMap;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.ConcurrentMap;import java.util.concurrent....

2019-11-27 20:42:18 627

原创 三、将集合转换成数组

/** * 将集合转换成数组 * @param list 集合 * @param arrType 数组类型 * @param <E> 泛型 * @return 数组 */ public <E> Object convertToArray(List<E> list, Class<?&...

2019-11-26 22:23:59 538

原创 五、判断类型是否是集合或者数组类型

/** * 判断返回值类型是否是集合或者数组类型 * @param returnType 类型 * @return 是否是集合或者数组类型 */ public boolean returnsMany(Class<?> returnType) { //判断返回类型是否是集合类型 boolean isC...

2019-11-26 20:11:07 4647 1

原创 四、Mybatis源码-反射模块常用工具方法

常用方法介绍1、解析方法的返回值类型 /** * 解析方法的返回值类型 * @param method 方法 * @param srcType 定义方法的类 * @return 返回值类型 */TypeParameterResolver.resolveReturnType(Method method, Type srcType)...

2019-11-26 19:55:10 131

原创 二、根据方法参数下标索引,获取该方法指定下标参数的名字

/** * 根据方法参数下标索引,获取该方法指定下标参数的名字 * @param method 方法 * @param paramIndex 参数下标 * @return 参数名 */ public static String getMethodParamNameByParamIndex(Method method, int par...

2019-11-26 11:19:44 519

原创 三、单例模式:双重检查锁和静态内部类的两种写法

一、双重检查锁先看看常见错误写法:public class Singleton { private static Singleton instance = null; private Singleton(){} public static Singleton getInstance() { if (instance == null) { ...

2019-11-24 11:18:35 924

原创 二、代理模式与适配器模式的异同

代理模式和适配器模式非常相似,区别在于代理模式可以在真正的业务处理前后进行一些处理,下面简单示例演示下:(一)基本要素1、真正的处理逻辑public class RealSubject { public void operation() { System.out.println("真正的方法调用"); }}2、用户直接调用的接口public inter...

2019-11-21 21:59:28 931

原创 三、Mybatis源码应用---获取指定package下指定类的子类

import org.apache.ibatis.io.ResolverUtil;..... /** * 获取指定package下 superType 的子类 * @param packageName 包名 * @param superType 指定类 * @return 指定package下 superType 的所有子类 */ ...

2019-11-21 20:59:14 271

原创 四、判断类是否是内部类、接口、抽象类

Class<?> type = ...;//判断是否是匿名内部类type.isAnonymousClass();//判断是否是接口type.isInterface();//判断是否是抽象类Modifier.isAbstract(type.getModifiers())...

2019-11-21 20:02:28 2930

原创 二、Mybatis源码-反射模块应用

一、应用场景导入excel,根据列号,转换成属性名,从而通过反射设置属性值。这里使用的是 mybatis 对反射的封装包!**核心思想:**就是通过将实体类封装成 Reflector 对象,通过该对象获取属性对应的 setter 方法 和 参数类型,然后将值设置进去!二、具体应用1、excel2、该 excel 对应的枚举类public enum StudentEnum { ...

2019-11-20 20:10:03 225

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除