- 浏览: 980008 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (223)
- JDBC技术 (29)
- Java Base (21)
- SSH框架的集合 (5)
- Javascript部分 (16)
- Sping2.5框架 (6)
- Hibernate框架 (19)
- JDBC中的数据库连接 (5)
- Ajax技术应用 (9)
- Java工具包下载 (3)
- Database (4)
- Java Web (13)
- 我的生活 (4)
- Struts2 (25)
- S2SH (1)
- Prototype (1)
- jfreeChart (5)
- JPA (7)
- JBPM (1)
- JasperReport (6)
- DWR (1)
- freeMark (2)
- IBatis (2)
- FCKeditor (2)
- POI (1)
- JQuery (6)
- JSON (1)
- JavaMail (3)
- Flex (2)
- CSS收藏夹 (1)
- 润乾报表 (2)
- 开源技术 (1)
- Android (2)
- Android_UI (1)
- Android_OS (6)
- Android_OpenLibs (3)
- Volley (1)
- JS_OpenLibs (1)
- Hessian (3)
- OS (1)
最新评论
-
damoluomu:
简单易懂
Java Web开发Session超时设置 -
di1984HIT:
学习了~~~~~~
Java Web开发Session超时设置 -
lord_is_layuping:
...
Java Web开发Session超时设置 -
15111285554:
...
Java Web开发Session超时设置 -
sfg1314:
暂停后重新下载就会报错:ClientAbortExceptio ...
Java Web 文件下载之断点续传
/** * Java 类加载器 * * @author 张明学 * */ public class ClassLoaderStudy { public static void main(String[] args) throws Exception { // 获取:加载ClassLoaderStudy的类加载器 System.out.println(ClassLoaderStudy.class.getClassLoader().getClass().getName());// AppClassLoader // 获取:加载ClassLoaderStudy所遍历的类加载器 ClassLoader classLoader = ClassLoaderStudy.class.getClassLoader(); while (null != classLoader) { System.out.println(classLoader.getClass().getName()); classLoader = classLoader.getParent(); } /** * Java 提供了三个类加载器 * BootStrap ------> getParent() == null;负责加载JRE/lib/rt.jar中的class * ExtClassLoader ------> getParent() == BootStrap; 负责加载JRE/lib/ext/*.jar中的class * AppClassLoader ------> getParent() == ExtClassLoader; 负责加载CLASSPATH指定的所有jar目录 * 每个一个加载器(除BootStrap外)包括自己定义的类加载器,加载一个class时首先交给它的父加载器,父加载器再交给它的父加载器 * 直到BootStrap类加载器,当父加载器没有找到时再交给它的子加载器,一层层的找,若都没有找到就报:java.lang.ClassNotFoundException * * 当需要加载一个类默认首选使用当前线程的类加载器去加载,若A类中引用了B类则B也是由该加载器去加载 */ // 用自己的类加载去加载自己加过密的class文件 // 必须要把原来目录中的(即:bin\com\mengya\classLoader\)下面的myClass删除,因为 // 加载myClass时MyClassLoader首先会交给父加载器,若父加载器在原目录中找到了myClass的class文件 // 那么就是父加载器去加载了,也就轮不到自己定义的MyClassLoader加载了。 Class clazz = new MyClassLoader().loadClass("com.mengya.classLoader.myClass"); // 因为自己编写的myClass是加过密的,故编译器不能正确编译myClass文件,即不能出现MyClass。 // 故让MyClass继承另一个类,用的时候让它的父类(接口等)去引用加过密的myClass实例 MyClassInter test = (MyClassInter) clazz.newInstance(); // MyClass myClass = null;编译器报错 System.out.println(test.toString()); } }
/** * 自定义的类加载器(继承ClassLoader重写findClass方法) * * @author 张明学 * */ public class MyClassLoader extends ClassLoader { @Override protected Class<?> findClass(String name) throws ClassNotFoundException { String destPath = "F:\\MyEclipseWorkspace\\JavaBase\\myClassLib"; String className = name.substring(name.lastIndexOf('.') + 1); String classFileName = destPath + "\\" + className + ".class"; InputStream fileInStream = null; ByteArrayOutputStream byteArrayOutStream = null; try { fileInStream = new FileInputStream(classFileName); byteArrayOutStream = new ByteArrayOutputStream(); encrypt(fileInStream, byteArrayOutStream); byte[] classByte = byteArrayOutStream.toByteArray(); return defineClass(classByte, 0, classByte.length); } catch (Exception e) { e.printStackTrace(); } finally { try { byteArrayOutStream.close(); fileInStream.close(); } catch (IOException e) { e.printStackTrace(); } } return super.findClass(name); } /** * 用来加密class文件 * * @param args */ public static void main(String[] args) { // 原class文件 String srcPath = "F:\\MyEclipseWorkspace\\JavaBase\\bin\\com\\mengya\\classLoader\\MyClass.class"; // 加密class文件存放目录 String destPath = "F:\\MyEclipseWorkspace\\JavaBase\\myClassLib"; InputStream fileInStream = null; OutputStream fileOutStream = null; try { fileInStream = new FileInputStream(srcPath); String fileName = srcPath.substring(srcPath.lastIndexOf('\\') + 1); String destFilePath = destPath + "\\" + fileName; fileOutStream = new FileOutputStream(destFilePath); encrypt(fileInStream, fileOutStream); } catch (Exception e) { e.printStackTrace(); } finally { try { fileOutStream.close(); fileInStream.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 对class文件加(解)密 * * @param inStream * class文件输入流 * @param outStream * class文件输出流 */ public static void encrypt(InputStream inStream, OutputStream outStream) throws Exception { int b = -1; while ((b = inStream.read()) != -1) { outStream.write(b ^ 0xff); } } }
/** * 自己定义的类加载加载的测试类 * * @author 张明学 * */ public class MyClass implements MyClassInter { @Override public String toString() { return "Hello !"; } }
public interface MyClassInter { }
发表评论
-
HttpURLConnection附件上传
2015-05-15 18:25 3344整合了一个自己写的采用Http做附件上传的工具,分享一下! ... -
java自带线程池和队列详细讲解
2014-11-29 16:39 8449Java线程池使用说明 一简介 线程的使用在java中占 ... -
使用CGLIB的代理技术
2010-06-09 19:04 1482import java.lang.reflect.Method ... -
使用反射和注解模拟Spring的依赖注入
2010-06-09 19:00 4457作为一个应用Java的反射和注解的一个使用。 首简写一个XM ... -
Java基础十:JDK 动态代理类分析(java.lang.reflect.Proxy使用)
2010-05-28 19:25 4093/** * JDK 动态代理类分析(java.lang.r ... -
Java基础八:泛型,?通配符
2010-05-28 19:17 6227/** * JDK1.5 泛型 * * @aut ... -
Java基础七:注解Annotation使用说明
2010-05-28 19:14 3967import java.lang.annotation.Ele ... -
Java基础六:apache的Beanutils简单使用对JavaBean操作的封装
2010-05-28 19:08 2122/** * apache的Beanutils简单使用 ... -
Java基础五:内省(对JavaBean的操作)
2010-05-28 19:05 2305/** * Person JavaBean * ... -
Java基础四: 反射(构造方法,成员变量,普通方法,数组)
2010-05-28 18:58 5721/** * 反射(构造方法,成员变量,普通方法,数组) ... -
Java基础三: 枚举高级应用(向枚举值对象中添加变量和方法)
2010-05-28 18:45 3790/** * JDK1.5 枚举高级应用(向枚举值对象中添加 ... -
Java基础二: hashCode的作用简要说明,可能导致对象在集合中无法删除
2010-05-28 18:30 1579import java.util.ArrayList; im ... -
Java基础一: 自动装箱,折箱、静态导入、可变参数
2010-05-28 18:24 1569自动装,折箱 /** * JDK1.5 自动装箱,折箱 ... -
apache StringUtils常见用法说明
2009-10-28 17:24 43741.空字符串检查使用函数: StringUtils.isBla ... -
产生随机字符串(a-z A-Z 0-9)
2009-09-25 17:47 3045实现方法一: public class RandomFile ... -
计算离当前日期之前或之后任意天的日期
2009-06-18 13:33 1463/** * 日期计算 * * @author z ... -
计算Java日期Date,DateFormat,GregorianCalendar的使用
2009-06-16 17:09 17913概要 不管你是处理财务交易还是计划着下一步的行动,你都要知 ... -
Java计算日期今天,昨天,上周,上月
2009-06-16 16:53 8374功能:今天,昨天,本周,上周,本月,上月 范围:以周一作为一 ... -
@SuppressWarnings(unchecked)作用解释.doc
2009-05-13 09:17 34565解释一: 屏蔽某些编译时的警告信息 ... -
JDK实现AOP动态代码
2009-04-20 14:29 62代理类: import java.lang.refle ...
相关推荐
这样,每次调用代理类中的方法,都会先检查实现类的class文件是否是最新的,如果不是则重新加载,达到动态加载实现类class的目的。 关键字: Java实现热加载; Java动态加载class; Java覆盖已加载的class; Java...
本工具是对java class文件进行加密保护的工具!本工具全面支持linux/unix/windows操作系统。 众所周知,java编译后的class文件是一种中间字节字文件, 很容易被反编译工具反编译,而传统的java源代码保护方法基本都是...
JAVA CLASS文件加密工具对CLASS文件进行加密保护,加密密钥高达256位(bit,即:32字节),并采用多重加密的算法,既安全又高效。加密后的CLASS文件不可能被破解;反编译工具对加密后的CLASS文件无能为力,根本就不...
java自定义类加载classloader文档,包括代码,以及详细的原理及过程
<br>举例说明:例如,本加密工具安装在c:\hideasoft\java_protect,执行加密后的CLASS文件的命令行如下: java -agentlib:c:\hideasoft\java_protect\hidea <您的CLASS类及参数> 应用场合 独立的应用...
ClassLoader的API使用和自定义
ClassLoader类加载器讲解,理解JAVA类加载机制
java应用程序类加载器(ClassLoader for java Application),类似exe4j, 方便启动java程序, 配置灵活,支持多平台选择性配置
自定义Java类加载器demo,自定义了一个classLoader,重写了loadClass 和findClass,注意 loadClass打破了双亲委派机制,所有的类都要在自定义的class文件中找到,而findClass遵循了双亲委派机制
它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 ...
本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...
本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...
Java允许使用不同的类加载器,甚至自定义的类加载器。类加载器从源文件(通常是.class 或 .jar文件)获得不依赖平台的字节码,然后将它们加载到JVM内存空间,所以它们能被解释和执行。默认状态下,应用程序的每个类...
它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 ...
破解java加密的ClassLoader.java,在classloader植入破解代码
自定义classloader的使用
Java的类加载机制:加载,连接,初始化。JAVA类加载器: Bootstrap ClassLoader : 根类加载器, Extension ClassLoader: 扩展类加载器, System ClassLoader : 系统类加载器, Java反射
简单的自定义类加载器问候世界hello word,基于磁盘的ClassLoader
本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...
Java加壳核心代码,请调试后使用。本资源配合博客进行讲解,博客地址:http://blog.csdn.net/JavaBuilt/article/details/79522837