无处不在的字节码技术-ASM在cglib和fastjson中的应用

Fastjson源码分析—ASM的作用和实现(1) 2021SC@SDUSC 众所周知,所有json解析工具中,Fastjson速度是最快的。而它能够快速对json字符串进行处理的原因之一,便是它使用了ASM框架。 目录ASM是什么ASM的使用方法ASM在Fastjson中的实现 ASM是什么 首先,我们把关注点放在ASM的定义上。 ASM的使用方法 ASM在Fastjson中的实现 ... 阅读详情

这篇文章我们将讲解 ASM 在 cglib 和 fastjson 上的实际使用案例。

cglib 的简单应用

alt 如果说 ASM 是字节码改写事实上的标准,那么可以说 cglib 则是动态代理事实上的标准。 cglib 是一个强大的、高性能的代码生成库,被大量框架使用

  • Spring:为基于代理的 AOP 框架提供方法拦截
  • MyBatis:用来生成 Mapper 接口的动态代理实现类
  • Hibernate:用来生成持久化相关的类
  • Guice、EasyMock、jMock 等 在实现内部,cglib 库使用了 ASM 字节码操作框架来转化字节码,产生新类,帮助开发者屏蔽了很多字节码相关的内部细节,不用再去关心类文件格式、指令集等

alt 有这样一个 Person 类,想在 doJob 调用前和调用后分别记录一些日志

public class Person {
   
   
    public void doJob(String jobName) {
        System.out.println("who is this class: " + getClass());
        System.out.println("doing job: " + jobName);
    }
}

我们可以使用 JDK 动态代理来实现,不过介于 JDK 动态代理有个明显的缺点(需要目标对象实现一个或多个接口),在这里重点介绍 cglib 的实现方案。 一个典型的实现方案是实现一个 net.sf.cglib.proxy.MethodInterceptor 接口,用来拦截方法调用。这个接口只有一个方法:public Object intercept(Object obj, java.lang.reflect.Method method, Object[] args, MethodProxy proxy) throws Throwable;

这个方法的第一个

ASM在FastJson中的应用 前言 上文ASM入门篇中除了对ASM的使用做了介绍,同时也提到ASM被使用的一些场景,其中有一项就是ASM被用来代替Java反射;FastJson作为序列化工具,就使用了ASM来代替反射的使用,提高整体的性能。 序列化 序列化就是将对象转换成Json格式的字符串,然后用来持久化或者网络传输;FastJson提供了接口类ObjectSerializer: public interface ObjectSerializer { void write(JSONSerializer seriali 阅读详情

相关推荐

SpringBoot项目里,EasyExcel升级后报cglib的BeanMap$Generator错误?手把手教你用Maven插件定位并解决jar包冲突

本文详细解析了SpringBoot项目中EasyExcel升级后出现的`Could not initialize class net.sf.cglib.beans.BeanMap$Generator`错误,提供了使用Maven插件定位jar包冲突的完整指南,并给出了四种解决方案,帮助开发者彻底解决cglib与asm版本冲突问题。

weixin_30575517的博客 264

Java反射性能四大隐形杀手与分级优化实战

反射是强类型语言中实现动态行为的基础机制,其核心原理依赖运行时类元数据解析、安全检查、泛型类型重建及JIT编译器的间接调用处理。由于JVM对反射调用存在信任降级、安全校验开销、类加载器隔离和泛型擦除等底层限制,导致性能不可控且难以预测。技术价值在于通过精准诊断与分层治理,将反射从‘黑盒慢操作’转化为可量化、可监控、可优化的关键路径。典型应用场景包括Spring BeanUtils属性拷贝、Jackson/Fastjson序列化、MyBatis泛型Mapper解析及Lombok生成代码等高频反射使用环节。本文

diaojin6880的博客 411

Hessian反序列化漏洞:从JDK利用链到高版本绕过与防御实践

Java反序列化漏洞是安全领域的经典议题,其核心原理在于攻击者通过构造恶意序列化数据,在目标系统反序列化时触发特定的方法调用链(Gadget Chain),最终实现任意代码执行。这种漏洞不仅存在于Java原生序列化机制中,也广泛影响Hessian、Fastjson等第三方序列化协议。从技术价值看,理解反序列化机制有助于深入认识Java运行时安全模型和对象生命周期管理。在应用场景上,反序列化漏洞常出现在RPC通信、分布式缓存、持久化存储等涉及对象传输与重构的环节。随着JDK高版本引入了JEP 290反序列化过

weixin_30325487的博客 341

SpringBoot AOP与自定义注解实现敏感字段自动加解密

在数据安全领域,敏感信息加密是保障用户隐私和合规性的基础技术。其核心原理是通过特定算法(如AES)将明文转换为不可读的密文,确保数据在存储和传输过程中的机密性。这项技术的价值在于将安全能力内化为基础设施,实现业务逻辑与安全逻辑的解耦,从而提升系统的可维护性和扩展性。典型的应用场景包括用户手机号、身份证号、邮箱等个人敏感数据的自动化处理。本文聚焦于利用SpringBoot的AOP(面向切面编程)和自定义注解机制,构建一套“声明即加密”的自动化处理框架。通过定义`@SensitiveField`注解,结合可插拔

weixin_30460489的博客 458

AutoLisp文件(.lsp)从编写到加载运行:一份给CAD新手的避坑指南

本文为CAD新手提供了一份AutoLisp文件(.lsp)从编写到加载运行的完整指南,涵盖编写环境配置、文件加载流程、调试技巧及工程化实践建议。通过详细的步骤和常见错误解决方案,帮助用户避免常见陷阱,提升AutoLisp脚本的开发效率和应用效果。

weixin_29228203的博客 895

Imatest-Star模块(西门子星图)

星图分析指南:基于ISO12233标准的MTF测试方法,通过放射状射线和正弦灰度变化评估相机SFR性能。

weixin_64706696的博客 1565

Nano Banana 2哪里使用?Nano Banana 2提示词合集和使用教程

收集最强的Nano Banana 2提示词合集,以及Nano Banana 2哪里使用的教程,并且有10个免费使用渠道。

qq_42927225的博客 1987

4. SAP ABAP OData 服务 Data Provider Class 的 GET_ENTITYSET 方法实现指南

首先第19行CREATEDATA创建er_entityset实例,指定其类型为zcl_zbook_manage_mpc=>tt_book,接着把这个引用映射到刚刚第五行定义的FIELD-SYMBOLS变量上去,这样的话,接下来我们对FIELD-SYMBOLS进行的操作,就会自动反应回引用变量er_entityset.因为我们可能在这个方法里,返回多条图书信息,所以需要用内表类型,而非单条记录的ts_book.ts_book代表一本图书的数据结构。......

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2961

1、CUDA 编程基础

GPU计算的发展历程与重要性。首先回顾了计算机技术的发展,特别是摩尔定律的影响,强调了计算能力的快速提升。然而,随着晶体管尺寸的缩小和频率的停滞,单线程性能增长放缓。为了继续提升性能,多核处理器开始普及,促使软件开发者开始考虑并行计算。介绍了延迟导向设计和吞吐量导向设计的概念,CPU和GPU分别代表了这两种设计方法。GPU是吞吐量导向的,拥有众多弱小的ALU,通过流水线处理提高算术吞吐量。GPU的成功在于其高并行性和高吞吐量,以及能够分摊高昂的固定成本的大量销售额。

Justinyh的博客 580

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

我哎GIS博客 817

MFC C++ 中实现跨平台(WindowsLinux)的远程桌面控制

**输入捕获**:在显示窗口中捕获鼠标/键盘事件(重写 `OnLButtonDown`、`OnMouseMove`、`OnKeyDown` 等),将事件坐标/键值通过网络发送到服务端。- **显示窗口**:使用 `CStatic` 或自定义 `CWnd` 派生类显示远程桌面图像(通过 `StretchDIBits` 绘制解压后的像素数据)。// 转换为相对坐标。- **Wayland 支持**:需使用 `libweston` 或 `xdg-desktop-portal`,较复杂,建议优先支持 X11。

寒寒豆豆软件公司的博客 155

HSM 网络安全 信息安全

HSM HSM信息安全功能 汽车电子网络安全中HSM 的应用场景 选择适合汽车电子网络安全的 HSM 符合汽车安全标准和法规要求的HSM HSM 在汽车电子网络安全中的可靠性和安全性 评估汽车电子网络的安全性 汽车 HSM(Hardware Security Module)模块开发 汽车 HSM(Hardware Security Module)模块测试

天赐好车的博客 1237

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: ElasticSearch系列-高级查询
下一篇: ElasticSearch系列-索引原理与数据写入读取流程
yue_stack
博客等级 码龄3年 6粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值