MoDou Blog

Thinking will not overcome fear but action will.

不学无数—JAVA中的I/O和NIO

JAVA中的I/O和NIO

JAVA中的I/O和NIO I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其突出,很容易成为一个性能瓶颈。 什么是I/O I/O ? 或者输入/输出 ? 指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,...

不学无数—Mybatis自动映射器Mapper原理分析

Mybatis自动映射器Mapper原理分析

在使用MyBatis时,有时候会想,为什么只写一个接口没有编写任何的实现类,但是就能返回接口的实例,并且调用接口的方法返回数据库中的数据?此时脑海中浮现了写动态代理时候的记忆,记得动态代理也是接管了接口,不需要实际的代理角色。然后经过源码的Debug发现果然是运用了动态代理的技术。如果对于动态代理技术不熟悉的同学可以看不学无数—动态代理 Mybatis自动映射器Mapper的源码分析 首...

不学无数—装饰模式

装饰模式

装饰模式 在开始之前 我们可以用一个简单的例子引出来装饰模式,在小的时候,相信大家都有过这样的经历:小学每年会有好几次的考试,如果有一次成绩非常差,而且考完以后学校会有个很损的招,就是打印出来成绩单,然后让家长签字。那么拿着这个成绩单,肯定是不会直接告诉家长成绩什么的,肯定是会加一些,例如,语文考了65,就会说我们班最高的才75。如果成绩单没有排名的话,那么也会添油加醋的说排名靠前,这样...

不学无数—Spring注入后反射的空指针异常

Spring注入后反射的空指针异常

Spring注入后反射的空指针异常 自动装配是在spring环境下当使用该类的实例时由spring容器完成了类的实例化过程,包括对依赖对象的实例化过程。 而通过反射创建实例时,是根据你调用的构造函数完成的实例化过程,没有容器的自动化创建实例了,所以需要自己对依赖对象进行注入。 所以依赖spring容器实例化和自己用反射实例化是两种独立的方式,不能相互渗透的。 ...

不学无数—记一次常见异常而导致的Debug源码之旅

记一次常见异常而导致的Debug源码之旅

1. 出现的异常以信息 代码如下: Mapper接口中的代码: List<String> queryTransCdByType(String type); MapperXML中的SQL代码: <select id="queryTransCdByType" resultType="String" parameterType="String"> SELECT ...

不学无数—动态代理

动态代理

动态代理 1. 什么是动态代理 在上一章节中,我们讲的是代理其实都是静态代理,动态代理是在运行阶段动态的创建代理并且动态的处理对所代理方法的调用。在动态代理上所做的所有调用都会被重定向到单一的调用处理器中。在现在很流行的Spring中有一个AOP(面向切面)的其中核心实现技术就是动态代理的技术。 2. 为什么要用动态代理 动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而...

不学无数-Java代理模式

Java代理模式

1. 代理 Provide a surrogate or placeholder for another object to control access to it(为其他对象提供一种代理以控制对这个对象的访问) 1.1 什么是代理 代理是基本的设计模式之一,它是你为了提供额外或者不同的行为,而插入的用来代替”实际对象“的对象。这些操作通常是涉及到与”实际对象“的通信。 举个...

不学无数—InterruptedException异常

InterruptedException异常

InterruptedException异常 在了解InterruptedException异常之前应该了解以下的几个关于线程的一些基础知识。 线程的状态 线程在一定的条件下会发生状态的改变,下面是线程的一些状态 初始(NEW):新建一个线程的对象,还未调用start方法 运行(RUNNABLE):java线程中将已经准备就绪(Ready)和正在运行中(Running)...

不学无数—组合模式

组合模式

组合模式 在DebugMybatis的源码时,在DynamicSqlSource.getBoundSql动态获取sql的时候,Debug会发现相同的方法但是进去的实现类却不相同,不明白为什么会这样,于是上网查了资料说是运用了组合的设计模式。 1. 数据结构 聊组合模式为什么会聊到数据结构呢?看到最后你应该就会明白了 相信大家都知道数据结构这门学科,在数据结构中有树这样的概念,...

不学无数—反射和内省的区别

反射和内省的区别

反射和内省的区别 内省是基于反射实现的,主要用来操作JavaBean,通过内省可以很方便的动态获得bean的set/get方法,属性,方法名,他相当于是反射的工具类一样 1. 反射 反射其实简单来说就是通过类的名字获得对于这个类的描述,这种描述包括方法、构造器、属性的描述。举个例子来说就是通过类名可以进行实例化对象、对类中的方法的调用、对类中属性的赋值。在许多的框架中反射是经常...