编译阶段---编译阶段的主要任务是检查Java源程序是否符合Java语法规则.---符合Java语法则生成正常的字节码文件(xxx.class),不符合Java语法规则就不会生成字节码文件.---由于字节码文件不是纯碎的二进制文件,所以这种文件无法在操作系统中直接执行.---javac是一个java编译器工具/命令.---一个java源文件可以编译生成多个.class文件,编译结束后,可以将cla
分类:
编程语言 时间:
2020-03-04 23:28:19
阅读次数:
82
ClassLoader是什么? 它负责将 Class 的字节码形式(本质就是一个字节数组 byte[])转换成内存形式的 Class 对象 字节码有特定的复杂的内部格式,可以来自于磁盘文件 *.class,也可以是 jar 包里的 *.class,也可以来自远程服务器提供的字节流 很多字节码加密技术 ...
分类:
其他好文 时间:
2020-03-04 12:57:44
阅读次数:
66
反射作用 在程序运行的过程中,动态的创建对象 反射的基石 字节码文件对象 Class类的对象 是Java的一个类型 定义一个类class A{} Java中的关键字,用来定义一个类! 字节码文件 java源文件进行编译(javac)之后的.class文件 字节码文件对象 jvm把字节码文件加载到jv ...
分类:
编程语言 时间:
2020-03-01 21:34:43
阅读次数:
70
刚刚开始学习Java,碰到以下问题。 一、原因解释: 1、开发一个Java程序需三步骤,编写,编译,执行。 上面直接执行Hello.java程序是不行的,因为还没有经过编译,计算机中找不到字节码,所以会出错。 2、javac 编译时需加后缀 Hello.java;另外,java Hello解释执行时 ...
分类:
编程语言 时间:
2020-03-01 14:43:09
阅读次数:
81
上节,我们探讨了动态代理,在前几节中,我们多次提到了类加载器ClassLoader,本节就来详细讨论Java中的类加载机制与ClassLoader。 类加载器ClassLoader就是加载其他类的类,它负责将字节码文件加载到内存,创建Class对象。与之前介绍的反射、注解、和动态代理一样,在大部分的 ...
分类:
编程语言 时间:
2020-03-01 01:05:35
阅读次数:
76
一、原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。 而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。 1、如果目标对象实现了接口,默认情况下会采用JDK的动态 ...
分类:
编程语言 时间:
2020-02-29 20:22:51
阅读次数:
73
1、Java基本数据类型: 2、Java的main方法: 被static修饰,类名与文件名相同;void:方法的返回值,无返回值;main方法是程序的入口,有且只有一个; String[] args:参数列表,运行时的命令参数; 程序要运行到内存当中:磁盘上的代码经过编译生成字节码文件(二进制)—— ...
分类:
编程语言 时间:
2020-02-28 14:02:59
阅读次数:
62
获取src路径下的文件的方式 >ClassLoader 类加载器:可以加载类的字节码文件进内存,随便一个字节码文件都可以 | getClass():取得当前对象所属的Class对象 | getClassLoader():取得该Class对象的类装载器,类装载器负责从Java字符文件将字符流读入内存, ...
分类:
其他好文 时间:
2020-02-28 13:35:47
阅读次数:
58
个人博客 "http://www.milovetingting.cn" ASM字节码插桩 前言 热修复的多Dex加载方案中,对于5.0以下的系统存在CLASS_ISPREVERIFIED的问题,而解决这个问题的一个方案是:通过ASM插桩,在类的构造方法里引入一个其它dex里的类,从而避免被打上CLA ...
分类:
其他好文 时间:
2020-02-25 23:54:29
阅读次数:
139
程序计数器(私有) 程序计数器:"是一个非常小的内存空间,用来保证程序依次执行",它可以看作是当前线程所执行的字节码的行号指示器 由于java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在切出后切回的时候需要一个标识。 栈 (私有) "基本类型、运算、方法服务、指向堆内存的指 ...
分类:
编程语言 时间:
2020-02-25 00:11:09
阅读次数:
92