一.前言 动态语言:程序运行时,可以改变程序结构或变量类型.典型的代表:Python,ruby,JavaScript 如JavaScript代码: function test(){ var s="var a=3;var b=5;alert(a+b)" eval(s) } 但是 C.C++.Java不是动态语言,但是Java有一定的动态性,可以称之为准动态语言,可以利用反射机制.字节码操作获得类似动态语言的特性. Java的动态性让编程更加灵活. 二.反射的概念 指的是程序已经运行起来了…
一.概念 应用场景:如在线评测系统,客户端编写代码,上传到服务器端编译运行:服务器动态加载某些类文件进行编译 /*** * */ package cn.sxt.jvm; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import javax.tools.JavaCompiler; import java…
1.反编译工具之_jd-gui 官网下载地址:http://java-decompiler.github.io/#jd-gui-download 使用: 下载后解压直接使用即可. jd-gui的优势是图形化界面 操作简单,但gui很久没有更新了 存在无法反编译的情况.   2.反编译工具之_CFR 官网下载地址:http://www.benf.org/other/cfr/ 使用: (1)命令行操作: 进入到CFR所在目标 执行命令(需反编译jar:http_operator.jar.反编译后输出…
java 动态编译自己写过程的机会比较少,记录一下: package com.xzlf.dynamicCompile; import java.io.IOException; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; import javax.tools.JavaCompiler; import javax.tools.ToolProvider; /** * java…
1.JDK6 动态编译组件 Java SE 6 之后自身集成了运行时编译的组件:javax.tools,存放在 tools.jar 包里,可以实现 Java 源代码编译,帮助扩展静态应用程序.该包中提供主要类可以从 Java String.StringBuffer 或其他 CharSequence 中获取源代码并进行编译.接下来通过代码一步步讲述如何利用 JDK6 特性进行运行时编译. // 通过 ToolProvider 取得 JavaCompiler 对象,JavaCompiler 对象是动…
一.概念 [基本] /** * */ package cn.sxt.jvm; import javassist.ClassPool; import javassist.CtClass; import javassist.CtConstructor; import javassist.CtField; import javassist.CtMethod; public class Test_0420_Javassist { public static void main(String[] args…
一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Java平台和脚本语言的桥梁. 可以把一些复杂的业务逻辑交给脚本语言处理,从而大大提高了开发效率. [代码示例] /*** * 测试脚本引擎 ,就是Java和脚本语言的中介 */ package cn.sxt.jvm; import java.io.FileReader; import java.net.…
一.RandomAccessFile 随机访问流 [版本1] /* *RandomAccessFile 所谓随机读取就是 指定位置开始或指定位置结束 的读取写入文件 * 实现文件的拆分与合并 模拟下载的原理 */ package cn.sxt.test; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class Test_0403_RandomAccessFile…
一.概念 ------->1.BufferedReader/BufferedWriter [参考19.03.31文章] *Reader/Writer-------->2.InputStreamReader/ OutputStreamWriter(转换流,实现字节转字符)--->2-1:FileReader和FileWriter(文件字符类[19.03.31文章]) [代码示例] /**字符流相关 * 2.InputStreamReader/ OutputStreamWriter(转换流,…
一.字节流分类概括 -->1.ByteArrayInputStream /ByteArrayOutputStream(数组字节输入输出)        InputStream/OutputStream            -->2.FileInputStream/FileOutputStream(文件字节输入输出流[参考19.03.30文章]) (四大抽象类之二,与Reader/Writer平辈)   -->3.ObjectInputStream/ObjectOutputStream(…