摘要:
Java最主流的源码编译器,javac,基本上不对代码做优化,只会做少量由Java语言规范要求或推荐的优化;也不做任何混淆,包括名字混淆或控制流混淆这些都不做。这使得javac生成的代码能很好的维持与原本的源码/AST之间的对应关系。换句话说就是javac生成的代码容易反编译。 Java Class 阅读全文
摘要:
Class文件检查器保证装载的class文件内容有正确的内部结构,并且这些class文件互相间协调一致。Class文件检查器实现的安全目标之一就是程序的健壮性。如果某个有漏洞的编译器,或某个聪明的黑客,产生了一个class文件,而这个class文件中包含了一个方法,这个方法的字节码中含有一条跳转到方 阅读全文
摘要:
九、自增减指令 该指令用于对本地(局部)变量进行自增减操作。该指令第一参数为本地变量的编号,第二个参数为自增减的数量。 比如对于代码: int d=10; d++; d+=2; d--; d++; d+=2; d--; 其指令为: 2: bipush 10 4: istore_2//在我的程序中是其 阅读全文
摘要:
以下只是JVM指令助记符,关于JVM指令的详细内容请阅读《JVM指令详解》 变量到操作数栈:iload,iload_,lload,lload_,fload,fload_,dload,dload_,aload,aload_ 操作数栈到变量:istore,istore_,lstore,lstore_,f 阅读全文
摘要:
文中提及的栈是虚拟机栈中的栈帧的操作数栈,本地变量表是栈帧中的本地变量表,如下图: /** * @Author: qlq * @Description * @Date: 22:44 2018/9/25 */ public class MathTest { public static void mai 阅读全文
摘要:
有时候奇怪的发现往list添加数据的时候,一直被最后一个元素覆盖,首先 ,我们得明白原理: 在new 一个对象的时候,对象的ID是唯一确定的;将对象add入list中时,放入list中的其实是对象的引用 ;而每次循环只是简单 的set 对象的属性,set新的属性值,而add进list中的对象还是同一 阅读全文
摘要:
原本准备把内存模型单独放到某一篇文章的某个章节里面讲解,后来查阅了国外很多文档才发现其实JVM内存模型的内容还蛮多的,所以直接作为一个章节 的基础知识来讲解,可能该章节概念的东西比较多。一个开发Java的开发者,一旦了解了JVM内存模型就能够更加深入地了解该语言的语言特性,可能这个章 节更多的是概念 阅读全文
摘要:
一、对数据库的操作 1. 创建一个库 create database 库名 create database 库名 character set 编码 创建带有编码的 查看编码: 一般使用如下编码: 2. 删除一个库 drop database 库名 3. 使用库 use 库名 4.查看当前正在操作的库 阅读全文
摘要:
1 什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。 2 JDBC原理 早期SUN公司的天才们想编写一 阅读全文