摘要:
1.使用wait()/notifyAll实现生产者和消费者 1 /** 2 * 锁对象类 3 * 协作类 4 */ 5 public class MyQueue { 6 private Queue<Integer> queue; 7 private int limit; 8 9 public MyQ 阅读全文
摘要:
百度了一下,通篇全部都是启动类加载器,扩展类加载器,应用程序类加载器,还有就是双亲委托模式 。 可是一圈下来,新手们依然不知道如何自定义一个类加载器,来生动的展现什么是类加载器。 首先我们在E:upload下新建一个a/BB.java文件。 代码如下: package a; public class 阅读全文
摘要:
建一个简单的web工程。 工程目录: 配置application.properties scanPackage=com.gys.demo #扫描该包下的类 编写注解 package annotation; import java.lang.annotation.*; @Target({Element 阅读全文
摘要:
人狠话不多,先上截图和代码吧。 这是工程目录。看到resources目录下面没有,添加了META-INF和services目录。 添加了一个com.gys.test.IAnimal文件。这个文件名和上面的接口名完全对应。这个目录的文件名是有讲究的,按照SPI规范来的。 上代码: package co 阅读全文
摘要:
这篇文章主要用来展示jdbc的使用,是为了方便阅读MyBatis源码使用的,为源码分析做一个提前热身; 里面很多关键性的信息在MyBatis源码里面都能找到,本篇不做MyBatis源码的分析, 因为MyBatis源码是一个庞大复杂的工程,不是 一时半会,只言片语就能说完的。 jdbc Demo: 1 阅读全文
摘要:
我的这篇博客分析了动态代理对象是如何生成的 java动态代理之JDK源码解析, JDK动态代理的对象是JDK在没有产生任何文件的条件下,JVM直接通过字节数组生成的对象。 可是这种模式我们是没办法复制的。 你可能是一个非常牛逼的高手,能够直接编写存放字节码文件的字节数组;然而没有一个地方让你能够直接 阅读全文
摘要:
网上到处都是懒汉,饿汉模式。给两个Demo就算过去了吧。 饿汉单例模式:在类加载的时候,就开始实例化了。 public class HungrySingleton { private static HungrySingleton one=new HungrySingleton(); private 阅读全文
摘要:
按照网上的惯例,先给出静态代理到动态代理的例子吧;要不然后面的理论和源码分析没有铺垫,大家都有点迷糊。 静态代理: /** * 声音接口,用于代理接口 */ public interface IVoice { void song(); } /** * 歌手类 */ public class Sing 阅读全文
摘要:
为了便于SEO搜索到,首先把报错内容贴出来吧 不同版本的Oracle驱动会报不同的错 1 <dependency> 2 <groupId>com.oracle</groupId> 3 <artifactId>ojdbc6</artifactId> 4 <version>1.0</version> 5 阅读全文
摘要:
为了便于测试,先给出Demo代码: mybatis-oracle-config.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0/ 阅读全文