work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 58 下一页

2019年6月15日

摘要: 1、创建Sample 打印结果: 2、现在要将扩展类加载器的路径指定为当前路径 显示结果: 会发现还是应用加载器加载。这里扩展类加载器会有一些区别,它需要打包成class打包成jar文件 然后将MyTest1.class打包到jar文件中 此时会发现有com文件夹下有MyTest1.class, t 阅读全文

posted @ 2019-06-15 21:56 work hard work smart 阅读(336) 评论(0) 推荐(0) 编辑

摘要: 一、创建Sample 1、创建实例 2、创建测试类 3、MyTest16类和之前的一致 public class MyTest16 extends ClassLoader{ private String className; //目录 private String path; private fin 阅读全文

posted @ 2019-06-15 19:44 work hard work smart 阅读(710) 评论(0) 推荐(0) 编辑

摘要: 1、创建类 查看打印结果 说明AESKeyGenerator类是由扩展加载器加载的。 修改扩展加载器的加载路径为当前路径 -Djava.ext.dirs=./ 再次打印,结果会抛出异常。 阅读全文

posted @ 2019-06-15 18:25 work hard work smart 阅读(253) 评论(0) 推荐(0) 编辑

摘要: 1、类加载器加载路径 返回结果 将打印结果变成多行数据 2、修改类加载器启动类加载器 现在想把自己生成的类交给启动类加载器,那要怎么做呢? 主需要把生成的class文件放到根加载器的加载路径下 C:\Program Files\Java\jdk1.8.0_131\jre\classes 创建测试类 阅读全文

posted @ 2019-06-15 17:12 work hard work smart 阅读(597) 评论(0) 推荐(0) 编辑

摘要: 一、自定义类加载器在复杂类情况下的运行分析 1、使用之前创建的类加载器 2、创建MyCat类 3、创建MySample类 4、创建测试类 打印结果 增加-XX:+TraceClassLoading后的打印结果 如果去掉Object object = clazz.newInstance(); 打印结果 阅读全文

posted @ 2019-06-15 13:21 work hard work smart 阅读(216) 评论(1) 推荐(0) 编辑

2019年6月13日

摘要: 1、当某个类被加载,连接和初始化后,它的生命周期就开始了。当代表这个类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,这个类在方法区内的数据也会被卸载,从而结束这个类的生命周期。 2、一个类何时结束生命周期,取决于代表它的Class对象何时结束生命周期。 3、由Java虚拟 阅读全文

posted @ 2019-06-13 22:58 work hard work smart 阅读(1167) 评论(1) 推荐(0) 编辑

2019年6月9日

摘要: 一、创建自定义类加载器 打印结果 二、完善上一个实例创建的类加载器 命名空间: 每个类加载器都有自己的命名空间,命名空间由该加载器及所有父加载器所加载的类组成。 在同一个命名空间中,不会出现类的完整名字(包括类的包名)相同的两个类。 在不同的命名空间中,有可能会出现类的完整名字(包括类的包名)相同的 阅读全文

posted @ 2019-06-09 22:37 work hard work smart 阅读(299) 评论(0) 推荐(0) 编辑

摘要: 创建如下Demo 运行结果 创建Demo2 打印结果: 创建Demo3 打印结果 4、Demo4 使用反射使类初始化 打印结果 说明反射Class.forName会使类初始化。而调用ClassLoader类的loadClass方法加载一个类,并不是对类的主动使用,不会导致类的初始化 阅读全文

posted @ 2019-06-09 20:22 work hard work smart 阅读(188) 评论(0) 推荐(0) 编辑

摘要: 1、创建FinalTest类,里面有一个final常量x 然后在Main方法里打印fianl常量。打印结果 2、然后去掉final, 打印结果为: 3、将fianl常量改为随机生成 打印结果 阅读全文

posted @ 2019-06-09 20:19 work hard work smart 阅读(373) 评论(0) 推荐(0) 编辑

摘要: 1、类加载器的层次结构 在双亲委托机制中,各个加载器按照父子关系形成了树形结构(逻辑意义),除了根加载器之外,其余的类加载器都有且只有一个父加载器。 打印结果 null说明classLoader是启动类加载器 2、类加载器的双亲委托机制 3、返回String类的ClassLoader 返回结果 nu 阅读全文

posted @ 2019-06-09 19:29 work hard work smart 阅读(296) 评论(0) 推荐(0) 编辑

摘要: BeanFactory和FactoryBean的联系和区别 BeanFactory是整个Spring容器的根容器,里面描述了在所有的子类或子接口当中对容器的处理原则和职责,包括生命周期的一些约定。 FactoryBean本身存活在BeanFactory当中,也是一种工厂。这个工厂的作用是用于获取Fa 阅读全文

posted @ 2019-06-09 12:40 work hard work smart 阅读(241) 评论(0) 推荐(0) 编辑

2019年6月8日

摘要: 一、下载Spring 源码 进入 https://github.com/spring-projects/spring-framework/tags 选择下载spring freamework的版本 https://repo.spring.io/release/org/springframework/ 阅读全文

posted @ 2019-06-08 21:46 work hard work smart 阅读(173) 评论(0) 推荐(0) 编辑

摘要: 当Java虚拟机初始化一个类时,要求它的所有父类都已经初始化,但是这条规则不适于接口 1) 当初始化一个类时,并不会先初始化它所实现的类的接口。 2) 在初始化一个接口时,并不会先初始化它的父接口 因此,一个父接口并不会因为它的子接口或者实现类的初始化而初始化。只有当程序首次使用特定接口的镜头变量时 阅读全文

posted @ 2019-06-08 16:45 work hard work smart 阅读(537) 评论(0) 推荐(0) 编辑

摘要: 1、类加载流程图 从磁盘加载到销毁的完整过程。 2、类加载流程图2 1、加载: 就是把二进制形式的java类型读入java虚拟机中 2、连接: 验证、准备、解析。 连接就是将已经读入到内存的类的二进制数据和合并到虚拟机的运行时环境中 验证: 类文件的结构检查 语义检查 字节码验证 二进制兼容性验证 阅读全文

posted @ 2019-06-08 15:26 work hard work smart 阅读(237) 评论(0) 推荐(0) 编辑

摘要: 1、创建一个Mytest6类和Singleton类 输出结果 2、将counter2成员变量的位置移动到构造函数后面 输出结果如下: 首先Singleton singleton = Singleton.getInstance(); 是调用Singleton类的getInstance(),属于主动调用 阅读全文

posted @ 2019-06-08 12:59 work hard work smart 阅读(228) 评论(0) 推荐(0) 编辑

摘要: 1、创建两个接口,MyParent5接口,MyChild5 接口继承自MyParent5接口 接口成员变量默认为:public static final 打印结果 1、删除MyParent5.class 程序还是能正常运行。 2、接着讲MyChild5.class 程序还是能正常运行 总结: 当一个 阅读全文

posted @ 2019-06-08 12:30 work hard work smart 阅读(254) 评论(0) 推荐(0) 编辑

摘要: 1、创建数组 创建一个MyParent4[] 数组 打印结构 说明此处并不符合主动使用的场景,所有不会初始化MyParent4。 打印myParent4s.getClass()的结果为数组类型。[Lcom.example.jvm.classloader.MyParent4 这个类型是JVM在运行期创 阅读全文

posted @ 2019-06-08 10:47 work hard work smart 阅读(624) 评论(1) 推荐(0) 编辑

2019年6月7日

摘要: 1、定义一个常量 打印结果: 此时MyParent2类不会进行实例化,因为str是一个常量。常量在编译阶段,会存如调用这个常量的方法所在类的常量池中。本质上,调用类并没有直接引用到定义常量的类,因此并不会触发定义常量的类初始化。 注意: 这里值的是将常量str存放到MyTest2类的常量池中,之后M 阅读全文

posted @ 2019-06-07 22:27 work hard work smart 阅读(248) 评论(0) 推荐(0) 编辑

摘要: 主动使用和被动使用Demo 1、创建工程一个Gradle工程 下一步 下一步 点击完成 2、创建类 输出结果: 会发现MyChild1的类静态块没有执行。 总结:对于静态字段来说,只有直接定义了该字段的类才会被初始化。 修改后的类: 执行结果 因为使用到了MyChild的类,它会被初始化。当一个类在 阅读全文

posted @ 2019-06-07 20:40 work hard work smart 阅读(453) 评论(0) 推荐(0) 编辑

摘要: 1、下载Gradle 我这里下载的是Gradle4.0 将下载的文件放在D:\gradle\gradle-4.0路径下 2、为Gradle配置环境变量 修改Path变量: %GRADLE_HOME%\bin 阅读全文

posted @ 2019-06-07 19:55 work hard work smart 阅读(168) 评论(0) 推荐(0) 编辑

上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 58 下一页