最新文章列表

Javassist实现JDK动态代理

提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模拟实现。 JDK动态代理 示例 以下是一个基于JDK动态代理的hello world示例,在很多地方都可以看到类似的版本。
zhanjia 评论(0) 有871人浏览 2018-08-12 19:04

javaagent+javassist实现故障注入遇到问题

  ClassPool pool = ClassPool.getDefault();  CtClass ctclass = pool.get(className);   上面二行代码,在web容器下是拿不到Class对象,官方已经解释了,如下: The default ClassPool returned by a static method ClassPool.getDefault( ...
strongant 评论(0) 有1343人浏览 2018-04-13 19:02

Javassist使用经验

最近在做某个软件的破解程序的时候,很久前使用的javassist粉末登场了一次。 使用过程中开始有点不顺,经过调试总算OK了。 现将解决内容公布如下: 1. 在修改某jar包某类的方法时,如果想直接重写方法体,注意方法体里面的各种类,要直接写类全局名称,因为编译时是可能imports会出现问题。 2. 在方法体内,引用形参,用$1,$2,$3,不能用反编译过来的变量名字。 3. for循环,编译时 ...
godlewis 评论(0) 有704人浏览 2018-01-25 20:18

Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

  由于JVM通过字节码的二进制信息加载类的,那么,如果我们在运行期系统中,遵循Java编译系统组织.class文件的格式和结构,生成相应的二进制数据,然后再把这个二进制数据加载转换成对应的类,这样,就完成了在代码中,动态创建一个类的能力了。     在运行时期可以按照Java虚拟机规范对class文件的组织规则生成对应的二进制字节码。当前有很多开源框架可以完成这些功能,如ASM,Javass ...
bijian1013 评论(0) 有1859人浏览 2017-07-01 18:03

Javassist实现动态代理

Javassist实现动态代理   动态代理模式简述:之所以会出现代理这种模式就是因为我们常有这么一种需求:在被代理类的方法调用前后执行一些其它的逻辑,这些逻辑不适合由被代理类来实现,那这些逻辑谁来实现?当然是代理类。那代理类是谁?从哪里来?代理类是我们利用字节码生成工具动态创建的,然后利用反射实例化而得到代理对象。   tips:这篇文章讲的不是动态代理模式的思想而是怎么实现(简单实现) ...
莫名的拉风 评论(2) 有6553人浏览 2016-10-02 12:56

教您使用DynamicGecco抓取JD全部商品信息

关于gecco爬虫框架 如果对gecco还没有了解可以参看一下gecco的github首页。gecco爬虫十分的简单易用。之前有一篇文章《教您使用java爬虫gecco抓取JD商品信息》,使用的是传统的注解方式,建议看这篇文章前先了解之前的文章。这里介绍一下DynamicGecco方式,比之前更简单,抓取全部京东商品只要3个类就能搞定了。 什么是DynamicGecco DynamicGec ...
xtuhcy 评论(0) 有2445人浏览 2016-07-18 11:23

DynamicGecco实现爬取规则的动态加载

Gecco爬虫框架中的SpiderBean Gecco是一个快速爬虫开发框架,能让开发人员快速的将爬取下来的页面转换为一个简单的java bean。所有的java bean都需要继承同一个接口SpiderBean。根据返回数据格式的不同可以将SpiderBean分成两个子接口——HtmlBean和JsonBean。SpiderBean的定义通常如下: @Gecco(matchUrl=" ...
xtuhcy 评论(0) 有3107人浏览 2016-07-05 11:48

转javassist用法

Javassist是一个执行字节码操作的强而有力的驱动代码库。它允许开发者自由的在一个已经编译好的类中添加新的方法,或者是修改已有的方法。但是,和其他的类似库不同的是,Javassist并不要求开发者对字节码方面具有多么深入的了解,同样的,它也允许开发者忽略被修改的类本身的细节和结构。字节码驱动通常被用来执行对于已经编译好的类的修改,或者由程序自动创建执行类等等等等相关方面的操作。这就要求字节码引 ...
357029540 评论(0) 有1510人浏览 2016-06-23 10:31

动态代理-初级篇

最近想总结一下java的动态代理,动态代理有很多种实现方案,下面介绍三种最常用的动态搭理方案:1.jdk自带动态代理2.javassist实现动态代理3.cglib实现动态代理 接口和实现类代码: package com.java.day1.dynamicproxy.one; public interface Interface { void doSomeThing(); } ...
xuehanxin 评论(0) 有1340人浏览 2016-04-04 11:38

javassist使用中遇到的问题记录

Javassit提供了运行时操作Java字节码的方法,其效率低于asm。javassist主要是提供了代码级别的修改(也有bytecode级别),相比与asm的字节码级别的修改,学习成本低,开发效率高。因此,在实际应用中javassist是一个非常不错的选择。以下是在使用javassist的过程中碰到的问题及处理方法: 1、ClassLoader问题 我们知道java中有ExtClassLoa ...
youaremoon 评论(0) 有3666人浏览 2016-03-01 11:07

通过javassist向编译后的指定类中的方法注入时间戳

实现步骤如下: 1.javac -cp .;./javassist.jar JassistTiming.java 2.javac StringBuilder.java 3.java StringBuilder 1000 2000 4000 8000 16000 Constructed string of length 1000 Constructed string of length 2000 ...
can_do 评论(0) 有1105人浏览 2015-10-22 09:52

为什么try-catch的代码块,在javac之后的class,javassist会无法正常解析方法参数

在如下的代码,然后使用javac编译之后,得出Student.class  再根据javap -v Student.class,可以查看class的字节码结构,下面我只是截出本地参数的部分 由上图可看出,出来的参数列表并没有根据slot排序,这样就会导致javassist中获取参数名时异常,不知有没有朋友类似情况的博友吗?求指教。   
imzhiyang 评论(0) 有613人浏览 2015-10-06 21:23

java字节码操作框架集合

(1) ObjectWeb ASM轻量级的Java字节码处理框架。它可以动态生成二进制格式的stub类或其他代理类,或者在类被JAVA虚拟机装入内存之前,动态修改类。ASM 提供了与 BCEL和SERP相似的功能,只有22K的大小,比起350K的BCEL和150K的SERP来说,是相当小巧的,并且它有更高的执行效率,是BCEL的7倍,SERP的11倍以上。 该项目主页:http://asm.obje ...
xiemingmei 评论(0) 有1327人浏览 2014-09-28 15:01

javassist/cglib入门资料

javassist javassist学习 javassist 学习笔记 Java 编程的动态性, 第四部分: 用 Javassist 进行类转换 cglib CGLib: The Missing Manual 性能测试 动态代理方案性能对比 不过这个测试结果有点老了,在我的Win7, JDK1.6_0_43 64bit机器上测试下来,JDK自带的proxy已经很快了,基本上各大框架难分伯仲 ...
xpenxpen 评论(0) 有826人浏览 2014-09-25 15:09

Javassist简单入门实例 - 修改Class并写入磁盘

package com.lj.javassist; import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; public class Example01 { public static void main(String[] args) throws Exception ...
alleni123 评论(0) 有2507人浏览 2013-11-16 18:32

Eclipse里使用javassist实例

这两天比较无聊,随便找点东西进行学习。目标就瞄准了javassist。关于javassist的介绍google一下,这里也不介绍了。   对于某一个类,直接在编译好的.class文件插入一些内容。   比如: package test.param; public class Screen { public void draw(int i , int j){ S ...
qq54903099 评论(0) 有1363人浏览 2013-08-30 15:25

使用Javassist重写Java Bean的toString方法

项目中有很多的界面对象描述类,他们都是接口View的实现,在输出的时候,需要按照特定格式输出成xml表现; 起初采用Commons beanutils的分析对象的方法,获取所有属性的值,构建格式输出; 如有以下的Class class LabelView implements View { private String id; private String value; pu ...
xsmart 评论(0) 有3064人浏览 2013-07-01 13:31

简单el表达式实现

一个简单的el表达式实现   实现还在完善种,现在只能处理引用类型的的属性字段和函数,不支持容器类数组!不支持子类型   线来个测试用例   package com.isnowfox.oel; import java.util.Date; import com.isnowfox.core.junit.BaseTest; import com.isnowfox.util.R ...
zuoge85 评论(0) 有1805人浏览 2013-06-21 01:05

Apache Struts 2.2.1 GA版发布

Apache软件基金会发布了Struts 2.2.1 GA版。Struts 2.2.1包含了重要的安全修复。Apache建议开发者将现有的Struts2应用升级到Struts 2.2.1。 Struts 2.2.1的内部变化主要有: XWork已经迁移到了Apache软件基金会,现在成为了Struts 2的一部分。新版XWork 2.2.0也随着Struts 2.2.1一同发布。未来,XW ...
wangming2012 评论(0) 有1689人浏览 2013-04-19 17:16

Java字节码修改 可以解决什么问题

对于Java程序员来说,工作中经常会遇到这样一些问题,比如引用了些第三方提供的非开源jar包,这个时候我们需要用它,甚至需要改它的内容。怎么办?下面看看开发中会遇到哪些问题? 某个类的里面的字段默认值不符合需求要改掉. 某个方法里面有很多校验,想直接return ;绕过校验。 某个方法里面的计算方法太复杂,想用自己的计算方式。替换方法体。 首先声明一点,如果是收费的,切勿参加商业性质。 ...
lfl2011 评论(0) 有2225人浏览 2013-03-14 23:07

最近博客热门TAG

Java(141747) C(73651) C++(68608) SQL(64571) C#(59609) XML(59133) HTML(59043) JavaScript(54918) .net(54785) Web(54513) 工作(54116) Linux(50906) Oracle(49876) 应用服务器(43288) Spring(40812) 编程(39454) Windows(39381) JSP(37542) MySQL(37268) 数据结构(36423)

博客人气排行榜

    博客电子书下载排行

      >>浏览更多下载

      相关资讯

      相关讨论

      Global site tag (gtag.js) - Google Analytics