- 浏览: 323917 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
zxjlwt:
学习了。http://surenpi.com
利用ClassFileTransformer实现aop -
幽蓝阿狸:
但是,这个在javaweb项目中只能执行一次,一旦类已经被载入 ...
利用ClassFileTransformer实现aop -
xusheng87:
支持一下!
apache+tomcat配置 -
geyaandy:
貌似懂了不少 膜拜
spring事物之连接泄露 -
xiaophai:
支持一下!
apache+tomcat配置
看了文章http://www.iteye.com/topic/1116696(这个文章非常好)中的字节码 部分,第一次接触到了java5新特性 instrumentation的ClassFileTransformer类,Instrumentation 的最大作用,就是类定义动态改变和操作。在 Java SE 5 及其后续版本当中,开发者可以在一个普通 Java 程序(带有 main 函数的 Java 类)运行时,通过 –javaagent 参数指定一个特定的 jar 文件(包含 Instrumentation 代理)来启动 Instrumentation 的代理程序。在类的字节码载入jvm前会调用ClassFileTransformer的transform方法,从而实现修改原类方法的功能,实现aop,这个的好处是不会像动态代理或者cglib技术实现aop那样会产生一个新类,也不需要原类要有接口。详细如下:
1.原类Business.java:
package model;
public class Business {
public boolean doSomeThing() {
System.out.println("执行业务逻辑");
return true;
}
public void doSomeThing2() {
String s = "执行业务逻辑2";
System.out.println(s);
}
}
点击run运行结果如下:
也可将bci.MyClassFileTransformer及bci.Test同时打到aop.jar包中,且将aop.jar放在d:\下,由于MyClassFileTransformer需要依赖misc.javassist-3.9.0.GA.jar包,所以同时将该包也放在d:\下,
修改aop.jar包的manifest.mf文件如下:
Manifest-Version: 1.0
Premain-Class: bci.MyClassFileTransformer
Class-Path: misc.javassist-3.9.0.GA.jar
Main-Class: bci.Test
注意格式(这些规则当时调式了好久。。真怪异):
1.每个属性都是回车结尾;
2.class-path当前路径是jar包所在的路径,由于aop.jar的路径是d:\aop.jar,所以其所引用的路径是d:\misc.javassist-3.9.0.GA.jar;如果依赖多个jar包,则以空格分隔;
3.如果Class-Path需要分行写,那么要注意,第一行的最后要留一个空格,下一行的开头要留一个空格,如果第三行不是Class-Path的内容了,则第二行末尾不用留空格。
4.将Main-Class放在Class-Path后定义。
5.属性名:(空格)属性值,注意加上空格。
在d:\下运行命令:
java -javaagent:aop.jar -jar aop.jar(作为可执行jar运行)
或者:java -javaagent:aop.jar bci.Test(运行bci.Test类)
结果如下:
如果在manifest.mf文件中不设置class-parh属性,也可以利用-cp参数(依赖包)运行aop.jar:
java -javaagent:aop.jar -cp misc.javassist-3.9.0.GA.jar bci.Test(运行bci.Test类)
注意此时不可java -javaagent:aop.jar -cp misc.javassist-3.9.0.GA.jar -jar aop.jar(作为可执行jar运行)这样运行,因为-jar 和-cp不可同时使用,-cp会被忽略,最终报misc.javassist-3.9.0.GA.jar中的类找不到错误。
评论
http://surenpi.com
发表评论
-
java 字节流与字符流的区别
2013-06-27 14:20 838转:http://blog.csdn.net/cynhafa ... -
axis学习笔记
2013-06-25 16:33 1058转:http://www.cnblogs.com/mingz ... -
java 类加载器
2013-06-25 16:00 785转:http://www.ibm.com/devel ... -
ArrayList原理
2013-06-24 16:00 812ArrayList是List接口的可变数组的实现。实现了 ... -
HashMap原理
2013-06-21 17:33 1244http://www.cnblogs.com/xwdrea ... -
http与socket的区别
2013-06-14 15:46 9101、TCP连接 手机能够使用联网功能是因为手机底层实现了 ... -
开发疑难错误解决汇总
2013-06-13 13:56 7941.javax.naming.NameNotFoundExce ... -
方便的方法
2013-05-28 18:43 7701. String template="http:/ ... -
webx
2013-04-21 11:09 8225<pipeline> <valve ... -
java垃圾回收机制
2013-04-20 10:56 858JVM分代垃圾回收策略的基础概念 由于不同对象的生命周期不一样 ... -
Java 内存泄露模拟
2012-11-06 16:10 1897转:http://my.oschina.net/gofan/b ... -
jvm内存原型
2012-11-06 16:00 860转:http://my.oschina.net/liuxuew ... -
eclipse svn 插件安装
2012-11-01 19:13 864重新装了win7 64位的操作系统,eclipse还是用 ... -
java异常信息完整性的控制
2012-10-26 10:53 1475转:http://www.blogjava.net/softw ... -
数据库连接池原理
2012-10-17 14:07 1150转:http://www.oschina.net/questi ... -
redict forwrod 区别
2012-09-14 17:12 1427window.location.href 点击“后退”有效 ... -
List<object> 排序
2012-03-12 10:56 889如:对List 按照AccountName降序或者升序排序pu ... -
toString
2012-02-17 09:40 856public String toString() { ... -
http详解3
2011-11-17 10:50 1563在学习了http详解1和2后,自己写了下面的登录的例子; ... -
http详解2
2011-11-16 16:17 744转自http://www.iteye.com/topic/11 ...
相关推荐
在 类的字节码载入JVM前 会调用ClassFileTransformer的transform方法,从而实现修改原类方法的功能,实现AOP,这个的好处是 不会像动态代理或者CGLIB技术实现AOP那样会产生一个新类,也不需要原类要有接口 。...
其实现的核心原理就是利用javaAgent,在premain函数中使用java.lang.instrument.ClassFileTransformer,对允许 对TProfile(https://github.com/taobao/TProfiler)产生了兴趣,于是就下下来研究了一下: ...
加载(ClassFileTransformer ctf)->加载ClassFileTransformer 删除(ClassFileTransformer ctf)->删除ClassFileTransformer reset(String ... classNames)->加载类的原始版本(无任何字节码修改) 重新转换...
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
本文档是课题研究的研究报告内含调研以及源码设计以及结果分析
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
多线程应用程序设计.pdf
蚁群算法路径规划matlab
IEC 60695-11-3:2012.pdf
触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
python实现的基于蒙特卡洛树搜索的AI黑白棋源码带详细注释.zip python实现的基于蒙特卡洛树搜索的AI黑白棋源码带详细注释.zip python实现的基于蒙特卡洛树搜索的AI黑白棋源码带详细注释.zip python实现的基于蒙特卡洛树搜索的AI黑白棋源码带详细注释.zip python实现的基于蒙特卡洛树搜索的AI黑白棋源码带详细注释.zip python实现的基于蒙特卡洛树搜索的AI黑白棋源码带详细注释.zip python实现的基于蒙特卡洛树搜索的AI黑白棋源码带详细注释.zip
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
孪生神经网络-python源码.zip
触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板
触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板