- 浏览: 224395 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (163)
- c++ (30)
- JavaScript (30)
- java (61)
- jQuery (3)
- ACE (2)
- oracle (9)
- jni (0)
- android (2)
- shell (1)
- myeclipse (1)
- Hibernate (1)
- linux (2)
- sqlserver (2)
- windows (2)
- sql (2)
- php (2)
- css (1)
- 学习 (1)
- ExtJs (1)
- RSS (1)
- 报文 (1)
- 跟我学Spring3 (6)
- dos (1)
- server (1)
- nosql (4)
- mongodb (6)
- photoshop (1)
- WebService (2)
- 股票 (1)
- OpenGL (3)
- Spring3MVC (6)
- 生活 (1)
- struts2 (1)
- 云盘 (1)
- blog (1)
- nosql nodejs mongoose (1)
最新评论
-
sblig:
配置分片: mongo -port 27017config ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
sblig:
配置路由:mongs: 40000 40100 40200sc ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
fuanyu:
哥们,干得漂亮。。
struts2 高危漏洞修复 -
sblig:
配置列子如下
<?xml version="1 ...
跟我学Spring3 学习笔记一 -
sblig:
307622798 写道博主你好,最近在看你的js系列文章,发 ...
JavaScript 学习笔记 二 对象的访问
ASM 进行动态生成class
import org.objectweb.asm.ClassWriter; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; public class HelloWorld extends ClassLoader implements Opcodes{ public static void main(String[] args) { ClassWriter cw = new ClassWriter(0); cw.visit(V1_1, ACC_PUBLIC, "Example", null, "java/lang/Object", null); MethodVisitor mw = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); mw.visitVarInsn(ALOAD, 0); mw.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); mw.visitInsn(RETURN); mw.visitMaxs(1, 1); mw.visitEnd(); mw = cw.visitMethod(ACC_PUBLIC+ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null); mw.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); mw.visitLdcInsn("Hello World!"); mw.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V"); mw.visitInsn(RETURN); mw.visitMaxs(2, 2); mw.visitEnd(); byte[] code = cw.toByteArray(); FileOutputStream fos; try { fos = new FileOutputStream("Example.class"); fos.write(code); fos.close(); HelloWorld loader = new HelloWorld(); Class exampleClass = loader .defineClass("Example", code, 0, code.length); exampleClass.getMethods()[0].invoke(null, new Object[] { null }); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
cglib 动态生成class 并进行拦截
public class MyClass { public void print() { System.out.println("I'm in MyClass.print!"); } } import net.sf.cglib.proxy.Callback; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; public class Main { public static void main(String[] args) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(MyClass.class); enhancer.setCallback((Callback) new MethodInterceptorImpl()); MyClass my = (MyClass) enhancer.create(); my.print(); } private static class MethodInterceptorImpl implements MethodInterceptor { public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { // log something System.out.println(method + " intercepted!"); proxy.invokeSuper(obj, args); return null; } } }
发表评论
-
[Java性能剖析]远程调试配置
2014-07-10 10:48 808一、服务器操作如下: 找到文件:apache-tomcat-5 ... -
[jdk工具命令]Java SE 文档
2014-07-10 10:43 777oracle java se documentation j ... -
[jdk命令工具]jconsole远程项目监控
2014-07-10 10:37 788入口:catalina.sh JAVA_OPTS=&quo ... -
[jvm参数]JVM简单配置
2014-07-10 10:35 1224-Xms256m -Xmx512M -XX:MaxPermSi ... -
struts2 高危漏洞修复
2013-07-23 10:30 11881. /** * 过滤器 */ ... -
转:调查服务器响应时间的利器 tcprstat
2012-11-16 13:50 1485http://rdc.taobao.com/blog/cs/? ... -
跟我学Spring3 学习笔记七 初始化与销毁
2012-10-18 16:45 2093最后 遗留一个问题, ... -
跟我学Spring3 学习笔记六 注入
2012-10-18 14:31 2232跟我学Spring3 学习笔 ... -
FtpUtil ftp工具类 过滤文件名
2012-10-10 16:25 6944工具类: import java.io.Buff ... -
java 高性能网络编程 NIO
2012-09-28 16:31 1515服务器端: // 1. 分配一个 Serve ... -
java 高性能网络编程 mina
2012-09-28 10:52 1690服务器端: // 创建一个非阻塞的server端so ... -
代理 下载网页,挖掘数据
2012-09-25 13:51 897URL url = new URL("http:// ... -
java nio 编程学习 一
2012-09-21 16:08 1177Java.nio中的主要类ServerSocketChanne ... -
MongoDB 实战笔记 四
2012-09-20 14:12 1142import java.net.UnknownHostExce ... -
Json 添加元素拼接JSON字符串(转)
2012-09-20 13:55 7054package com.util; import jav ... -
MongoDB 实战笔记 三
2012-09-20 13:37 2479导出mongoexport -d m ... -
MongoDB 实战笔记 二
2012-09-20 11:45 936MongoDB 实战笔记 count 查询记录 ... -
MongoDB 实战笔记 一
2012-09-20 11:30 1180MongoDB 实战笔记 来建立一个 test 的集 ... -
Struts 学习笔记 二
2012-09-17 16:56 875login.jsp 登陆页面 <html:form ac ... -
Struts 学习笔记 一
2012-09-14 15:36 1147struts 1.2 涉及到的包: commons-b ...
相关推荐
NULL 博文链接:https://name327.iteye.com/blog/1554558
ASM是一个开源的Java字节码操控和分析框架,它能够用来动态生成类或者增强已有类的功能。ASM可以被用来创建Java代理、实现元编程、甚至深入到Java虚拟机(JVM)层面进行性能优化。在Java开发中,ASM库允许我们直接...
在Java编程中,动态编译字符串成Java代码并将其加载到JVM(Java虚拟机)是一种高级技巧,常用于运行时代码生成、元编程或插件系统等场景。这一技术的核心在于利用Java的反射API和Java Compiler API。下面将详细阐述...
Java动态生成代码并编译载入是一个高级的编程技术,主要用于那些需要在应用程序运行时根据某些模板和数据动态地生成、编译和加载Java代码的场景。这种技术在需要高度定制化处理或是运行时参数化生成业务逻辑的系统中...
"Xml文件自动生成C# Class类"这个主题就涉及到了这一过程。这里我们将详细探讨如何实现这一功能,以及它在实际开发中的应用。 首先,XML文件是一种基于文本的数据存储格式,具有良好的可读性和结构化特性。它可以...
标题中的“读取Excel生成Class类代码”是指利用C#编程语言,在Visual Studio 2017环境下,开发一个Winform应用程序,该程序能够读取Excel文件中的数据,并将其转换成C#类(Class)的代码形式。这个过程通常涉及以下...
在C#编程中,动态生成标签是一项常见的任务,特别是在创建用户界面时,如果需要根据数据或其他条件自适应地创建控件,动态生成标签就显得尤为有用。本篇将深入探讨如何在C#窗体应用程序中实现这一功能。 一、基础...
在ASP.NET开发中,动态生成控件是一种常见的技术,它允许开发者在运行时根据需要创建、修改或删除页面上的用户界面元素。这种技术对于构建高度交互性和灵活性的应用程序尤其有用,比如在线表单、购物车或者任何需要...
在Java中,通常情况下,class文件是在编译时生成的,但是有时候我们需要在运行时动态生成class。这可以通过两种方法来实现,一种是使用JDK自带的工具类,另一种是使用第三方库,例如CGLib和Javassist。 使用JDK自带...
CGLib的核心是ASM库,它能直接操作字节码,从而实现对类的动态生成和修改。 ### 动态代理的实现 1. **Enhancer**:CGLib中的核心类,用于创建代理对象。你可以通过`Enhancer`设置回调函数、目标对象、父类等,然后...
在C#编程中,动态生成源代码并进行编译是一项重要的技术,特别是在元编程、插件系统或自动化脚本编写等场景中。这项技术允许我们在程序运行时创建、修改和执行新的代码,增加了代码的灵活性和扩展性。下面将详细阐述...
实际上,动态生成UI组件可以扩展到更多复杂的场景,如根据数据源生成列表项,或者在用户交互后动态添加新的控件。理解并掌握这种技术对于Android开发者来说是非常重要的,因为它能够提供更高的灵活性和自定义性。 ...
动态生成tab页是常见的功能需求,它允许用户在不同的内容面板之间切换,而无需页面刷新。本教程将深入探讨如何使用JS实现动态生成tab页,并结合HTML和CSS创建一个完整的框架界面。 首先,我们需要理解基本的HTML...
在Android开发中,动态加载Class是一项重要的技术,它允许应用程序在运行时加载未知或更新的类,从而提高软件的灵活性和可扩展性。这在处理插件化、热修复或者模块化开发时尤为常见。本篇文章将深入探讨如何在...
本篇将深入探讨如何在C#中动态地生成TabControl的选项卡,并在每个选项卡上添加独立的窗体。 首先,我们需要了解TabControl的基本使用。在Windows Forms应用程序中,可以通过设计视图或代码方式添加TabControl。...
本压缩包文件提供了两个示例项目,分别展示了JDK动态代理和CGLib动态代理的实现,帮助我们理解这两种技术的工作原理以及它们生成的class文件结构。 首先,我们来详细了解JDK动态代理。JDK动态代理基于Java的接口...
在IT行业中,动态生成、编译以及运行Java文件是一项重要的技术,它允许程序在运行时创建新的Java代码并执行。这种技术广泛应用于元编程、插件系统、代码自动生成等场景,极大地提高了软件的灵活性和可扩展性。下面将...
新闻动态生成HTML是Web开发中的一个重要技术,它主要用于创建动态的、交互式的网站内容,以展示最新的资讯或更新。在ASP.NET框架下,这一过程变得更加高效和便捷。ASP.NET是微软公司推出的一种服务器端Web应用程序...
当我们谈论“通过Assembly动态生成WebService”时,实际上是指利用.NET的反射、元数据以及IL(Intermediate Language)生成能力,实现在运行时动态创建和部署一个WebService服务。 一、WebService基础知识 ...
### 动态生成与编译:深入理解.NET Framework中的CodeDOM机制 #### 一、引言 在.NET Framework中,动态生成与编译是一项非常重要的技术。这项技术的核心是CodeDOM(代码文档对象模型),它使得开发人员能够在运行时...