`

Java 类加载器、动态代理类等(系列下)

阅读更多

 

@version 1.0 2011.01.12


9,类加载器

→类加载器的委托机制

 

→自定义类加载器编写原理

   扩展1:  http://blog.csdn.net/miyao16/archive/2009/11/30/4909374.aspx

   扩展2:  http://www.iteye.com/topic/136427

 

    

→class文件转换为字节码 defineClass()

→class文件加密

----------------------------------

//自定义加密算法
private static void cypher(InputStream ips ,OutputStream ops) throws Exception{
      int b = -1;
      while((b=ips.read())!=-1){
            ops.write(b ^ 0xff);
      }
}

 

//自定义类加载器 加载加密后的class文件(解密)
public MyClassLoader(){

}
public MyClassLoader(String classDir){
      this.classDir = classDir;
}
private String classDir;
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
      // TODO Auto-generated method stub
      String classFileName = classDir + "\\"  + 
      name.substring(name.lastIndexOf('.')+1) + ".class";
      try {
           FileInputStream fis = new FileInputStream(classFileName);
            ByteArrayOutputStream  bos =  new ByteArrayOutputStream();
            cypher(fis,bos); 
            fis.close();
            System.out.println("aaa");
            byte[] bytes = bos.toByteArray();
            return defineClass(bytes, 0, bytes.length);
      } catch (Exception e) {
            e.printStackTrace();
      }
return null;
}

 

//测试用例
public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub
    String srcPath = args[0];
    String destDir = args[1];
    FileInputStream fis = new FileInputStream(srcPath);
    String destFileName = srcPath.substring( srcPath.lastIndexOf('\\')+1);
    String destPath = destDir + "\\" + destFileName;
    FileOutputStream fos = new FileOutputStream(destPath);
    cypher(fis,fos);
    fis.close();
    fos.close();
}
 

 


10,动态类

→动态代理类设计原理与方法

 

→可配置AOP框架(spring)分析

 

 

 

 

 




 

分享到:
评论

相关推荐

    深入探讨 Java 类加载器

    类加载器(class ...本文首先详细介绍了 Java 类加载器的基本概念,包括代理模式、加载类的具体过程和线程上下文类加载器等,接着介绍如何开发自己的类加载器,最后介绍了类加载器在 Web 容器和 OSGi™ 中的应用。

    深入探讨 Java 类加载器.pdf

    类加载器(class ...本文首先详细介绍了 Java 类加载器的基本概念,包括代理模式、加载类的具体过程和线程上下文类加载器等,接着介绍如何开发自己的类加载器,最后介绍了类加载器在 Web 容器和 OSGi™ 中的应用。

    java设计模式【之】JDK动态代理【源码】【场景:帮爸爸买菜】.rar

    * 动态代理中的静态方法:java.lang.reflect.Proxy.newProxyInstance (ClassLoader(类加载器),interface(接口),handler(监听处理器)) * * 代码示例:《帮爸爸买菜》 * 1.Father: 被代理类,必须需要实现接口 ...

    facade:在 Java 类加载器壁上打Kong

    正面 在 Java 类加载器壁上打Kong。 该库有助于允许具有由同一... 这个库通过使用代理和反射的组合来解决这个限制,为外部类加载器创建的已知对象创建一个外观。 有关更多详细信息,请参阅。 有关更改列表,请参阅。

    Java类的加载、链接和初始化

    一、Java的类加载机制回顾与总结: ...代理模式则指的是一个类加载器既可以自己完成Java类的定义工作,也可以代理给其它的类加载器来完成。由于代理模式的存在,启动一个类的加载过程的类加载器和终

    java深度历险

    创建自己的类加载器 14 参考资料 15 JAVA线程:基本概念、可见性与同步 16 JAVA线程基本概念 16 可见性 17 JAVA中的锁 18 JAVA线程的同步 19 中断线程 20 参考资料 20 JAVA垃圾回收机制与引用类型 22 JAVA垃圾回收...

    JAVA_API1.6文档(中文)

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

    【Visio源文件】类加载器的层次结构图

    所有Java应用都至少引用java.lang.Object类,也就是在运行的时候,java.lang.Object这个类需要被加载到Java虚拟机中,如果这个加载过程由Java自己的类加载器来完成,则在虚拟机中会存在多个版本的java.lang.Object类...

    java开源包4

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

    agent7:Java代理以重新加载.class文件; 它使用Java 7+中可用的文件监视API

    每当当前工作目录(或其子目录)中的.class文件更改时,Agent7都会在所有类加载器中重新加载相应的类。 DCEVM Agent7可以与普通Java一起运行。 但是,它旨在与一起使用。 动态代码演化虚拟机(DCE VM)是对Java ...

    Java 1.6 API 中文 New

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

    java基础学习总结笔记

    知识主要包括:Java基础常识、如何安装Java工具、Java语言的基础组成、Java面向对象、Java多线程、Java常用类、集合(重点)、IO流、GUI图形界面、网络编程、正则表达式、反射、注解、类加载器、动态代理等等,另外...

    java api最新7.0

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    疯狂JAVA讲义

    学生提问:图11.15和图11.16显示的所有按钮都紧挨在一起,如果希望像FlowLayout、GridLayout等布局管理器指定组件的间距该怎么办? 397 11.4 AWT 常用组件 398 11.4.1 基本组件 398 11.4.2 对话框 400 11.5 事件...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JavaAPI1.6中文chm文档 part1

    javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据...

    java开源包11

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

    java开源包6

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

Global site tag (gtag.js) - Google Analytics