- 博客(9)
- 收藏
- 关注
原创 一文详解java泛型
java泛型详解文章目录java泛型详解一、介绍二、泛型方式1.泛型类2.泛型接口3.泛型方法三、泛型擦除1. 泛型数组2.边界五、常见问题1.基本数据类型不能作为类型参数2.重载问题3.自限定的泛型一、介绍 泛型实现了参数化参数化类型的概念,是代码可以应用于多种类型,设计的初衷应该是希望类或者方法能够具备最广泛的表达能力。在引入泛型之前,一般都是依赖于Object顶层对象实现类似泛型的功能,但是使用Object有一个缺陷是如果类型转换异常,编译器在编译期无法检测这种异常,只有在字节码的运行时期才会
2020-11-18 09:16:07 292
原创 Lombok的@SneakyThrows详解
Lombok的@SneakyThrows详解文章目录Lombok的@SneakyThrows详解一、简介二、原理一、简介 在java的异常体系中Exception异常有两个分支,一个是运行时异常RuntimeException,一个是编译时异常,在Exception下的所有非RuntimeException异常,比如IOException、SQLException等;所有的运行时异常不捕获,编译时异常是一定要捕获,否则编译会报错。@SneakyThrows就是利用了这一机制,将当前方法抛出的异常,包
2020-11-13 09:45:16 27642
原创 SpringBoot的jar包如何启动
SpringBoot的jar包如何启动文章目录SpringBoot的jar包如何启动一、简介二、jar包的内部结构三、加载过程1.使用到的一些类2.过程分析四、总结一、简介 使用过SprongBoot打过jar包的都应该知道,目标文件一般都会生成两个文件,一个是以.jar的包,一个是.jar.original文件。那么使用SpringBoot会打出两个包,而.jar.original的作用是什么呢?还有就是java -jar是如何将一个SpringBoot项目启动,之间都进行了那些的操作? 其实
2020-11-08 14:37:19 2670
原创 SpringMVC中的过滤器和拦截器
SpringMVC中的过滤器和拦截器文章目录SpringMVC中的过滤器和拦截器一、过滤器二、拦截器三、小结一、过滤器 过滤器Filter是通过实现java.servlet.filter接口实现过滤器功能,作用是用于对传入的request和响应的response进行一些处理,比如对请求参数进行校验,或者设置、检验头部信息,再或者对一些非法行为进行校验。由实现的接口可知,过滤器是依赖于servlet容器。所以由于过滤器不依赖于spring容器,它也就无法获取到容器中的对象。创建一个过滤器类继承j
2020-11-05 23:49:03 1198 1
原创 从myBatis Plugin看责任链模式
从myBatis Plugin看责任链模式文章目录从myBatis Plugin看责任链模式一、介绍二、mybatis的责任链三、过滤器相关责任链四、总结一、介绍 在mybatis中从sql的解析到最后结果集的返回,经过了一系列的内部组件,比如参数处理器parameterHandler,语句处理器StatementHandler,结果集处理器ResultSetHandler等。若开发者需要对SQL执行的某一环节进行一些特定的处理,比如参数类型的转换,数据分页功能,打印执行的SQL语句等都可以通过my
2020-11-01 16:49:03 232
原创 本地线程变量(四):FastThreadLocal
FastThreadLocal文章目录FastThreadLocal一、背景二、实例三、原理1.set值2.get值3.remove四、总结一、背景 因为需要,研究了可以通过InheritableThreadLocal进行父子线程中如何传递本地线程变量,通过阿里开源项目TransmitableThreadLocal进行进行线程池传递本地线程变量(详解可查看以往博客)。在查找资料的过程中无意发现了Dobbo的InternalThreadLocal,其实Dobbo的InternalThreadLocal
2020-10-28 11:05:00 435
原创 本地线程变量(三):TransimittableThreadLocal
TransmittableThreadLocal文章目录TransmittableThreadLocal一、背景二、简介三、基本使用四、原理一、背景 上文说到父子线程传递本地变量可以通过InheritableThreadlocoal进行传递,但是如果采用线程池,不一定能传递,因为在线程在线程池中的存在不是每次使用都会进行创建,InheritableThreadlocal是在线程初始化时intertableThreadLocals=true才会进行拷贝传递。所以若本次使用的子线程是已经被池化的线程,从
2020-10-26 11:14:09 622
原创 本地线程变量(二):InheritableThreadLocal
InheritableThreadLocal文章目录InheritableThreadLocal一、简介二、实例三、原理1. `InheritableThreadLocal`的实现2.线程的创建过程四、思考一、简介 在Thread中除了有属性threadLocals引用ThreadLocal.ThreadLocalMap类,其实还有一个属性,也就是inheritableThreadLocals,threadLocals的作用是保存本地线程变量,而inneritableThreadLocals的作用是
2020-10-25 19:54:33 324
原创 本地线程变量(一):ThreadLocal
ThreadLocal初探文章目录ThreadLocal初探一、ThreadLocal的实现原理二、源码1.set()2.get()三、继承性四、内存泄漏一、ThreadLocal的实现原理 Thread有一个内部变量ThreadLocal.ThreadLocalMap,这个类是ThreadLocal的静态内部类,它的实现与HashMap类似,当线程第一次调用ThreadLocal的get/set方法时会初始化它。它的键是这个ThreadLocal对象本身,值是需要存储的变量。也就是说ThreadL
2020-10-25 18:49:09 561
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人