AOP 利器 ——ASM 基礎(chǔ)入門
ASM 是一個(gè) Java 字節(jié)碼操作框架,用于動(dòng)態(tài)生成類或增強(qiáng)既有類功能。它能直接生成二進(jìn)制 class 文件,并在類被加載到 Java 虛擬機(jī)之前動(dòng)態(tài)改變類行為。ASM 框架提供常見的字節(jié)碼分析和生成工具,幫助快速進(jìn)行類生成或分析轉(zhuǎn)換。
在 Android 開發(fā)中,Android Gradle 1.5 版本后的 Transform 機(jī)制允許第三方插件在 .class 文件打包成 dex 之前進(jìn)行動(dòng)態(tài)修改,為動(dòng)態(tài)修改字節(jié)碼文件提供了入口,例如添加埋點(diǎn)、插入日志等。
ASM 在多個(gè)出色項(xiàng)目中被廣泛使用,包括一個(gè)由官方提供的入門電子書(英文版),國內(nèi)也有漢化版本可供查閱。
ASM 框架結(jié)構(gòu)分為核心 API 和樹 API 兩大部分。核心 API 包括基于事件和基于對(duì)象兩種形式的類生成與解析。核心 API 中定義了類訪問類的事件序列,而樹 API 則以對(duì)象樹形式表示類,構(gòu)建在核心 API 之上。
ASM 源碼目錄結(jié)構(gòu)清晰,大致分為幾個(gè)關(guān)鍵包:組織字節(jié)碼處理的核心 API、提供工具和適配器的 commons 包、定義泛型操作的 signature 包、以及基于對(duì)象的樹 API 相關(guān)操作。
核心 API 包括 ClassVisitor、FieldVisitor、MethodVisitor 和 AnnotationVisitor,用于訪問 .class 文件中的 fields、methods 和 annotations 相關(guān)指令。ClassReader 和 ClassWriter 分別用于加載和生成字節(jié)碼文件。
TraceClassVisitor 和 CheckClassAdapter 功能強(qiáng)大,前者用于輸出字節(jié)碼指令,后者用于提前檢測(cè)類的有效性,確保生成的類符合 JVM 驗(yàn)證規(guī)則。
MethodVisitor 用于處理方法,允許訪問和生成方法。方法執(zhí)行順序有嚴(yán)格規(guī)定,以確保正確性。LocalVariablesSorter 和 AdaviceAdapter 提供插入局部變量和代碼的功能。FieldVisitor 則用于訪問和生成字段。
AnnotationVisitor 用于訪問注解,SignatureVisitor 用于處理泛型類型簽名。樹 API 包含 ClassNode、FieldNode 和 MethodNode 等,用于生成和表示類、字段和方法。
ClassNode 生成類對(duì)象,F(xiàn)ieldNode 生成字段對(duì)象,ClassWriter 和 ClassReader 用于與 ClassNode 交互。MethodNode 生成方法對(duì)象,InsnList 用于表示指令集合。Tree API 能將事件序列轉(zhuǎn)換為對(duì)象樹,反之亦然。
ASM 提供了基于樹 API 的方法分析模塊,支持?jǐn)?shù)據(jù)流分析和指令集分析。正向分析和反向分析幫助優(yōu)化方法執(zhí)行。Analyzer.getFrames 方法返回計(jì)算幀,可用于刪除無用代碼。
總結(jié),ASM 是 Java 字節(jié)碼操作的強(qiáng)大工具,適用于動(dòng)態(tài)類生成、增強(qiáng)類功能、修改字節(jié)碼和分析方法。深入學(xué)習(xí)可以利用 asm4-guide,推薦的案例開源庫可作為學(xué)習(xí)資源。
酈聞19230446938: org.springframework.web.servlet.ModelAndView這個(gè)類在spring框架中的哪個(gè)jar包中? -
松溪縣末端: ______ ModelAndView.java這個(gè)類在spring-webmvc-4.x.jar這個(gè)jar包中.Spring——jar包詳解1、org.springframework.aop ——Spring的面向切面編程,提供AOP(面向切面編程)的實(shí)現(xiàn);2、org.springframework.asm——spring 2.5.6的時(shí)候需要asm jar...
酈聞19230446938: struts1+hibernate+srping頁面同一表單多次操作,第一次提交表單可以取到數(shù)據(jù),第二次提交表單取不到數(shù)據(jù) -
松溪縣末端: ______ 重啟tomcat!把tomcat中的項(xiàng)目刪掉!!在檢查action中的list對(duì)不對(duì)!!還有jsp頁面也可能有錯(cuò)誤
酈聞19230446938: 匯編語言程序設(shè)計(jì)中使用哪種軟件工具 -
松溪縣末端: ______ 1、MASM. 微軟公司為x86 微處理器家族開發(fā)的匯編開發(fā)環(huán)境,擁有可視化的開發(fā)界面,使開發(fā)人員不必再使用DOS環(huán)境進(jìn)行匯編的開發(fā),編譯速度快,支持80x86匯編以及Win32Asm,是Windows下開發(fā)匯編的利器. 2、NASM. 全稱The...
酈聞19230446938: 我在學(xué)校體檢,他在單上寫在 肺asm什么的《肺asm后面還有一個(gè)字不知道是什么》 請(qǐng)問這是什么病呢? -
松溪縣末端: ______ 氣道平滑肌(Airway smoothmuscle,ASM)是肺通氣的重要組成部分. 在氣道D經(jīng)小于2 mm的肺呼吸性小氣道軟骨趨于消失,平滑肌相對(duì)增多,變?yōu)橐患⌒怨艿?因而是氣道阻力調(diào)節(jié)的活躍區(qū)域.各種病理因素通過影響ASM的神經(jīng)調(diào)控、受體活化、細(xì)胞因子釋放等病理生理過程,對(duì)ASM的正常功能帶來干擾,從而嚴(yán)重影響肺通氣,造成病人呼吸困難.隨著ASM生物學(xué)基礎(chǔ)研究的逐步深入,現(xiàn)已認(rèn)識(shí)到ASM不僅是影響氣道張力的因素,同時(shí)也由于它自身受各種刺激因子的影響,通過細(xì)胞分泌,增殖過程,產(chǎn)生的氣道重塑也是肺部疾病 ,尤其是COPD的重要病理生理學(xué)基礎(chǔ).ASM有問題的話一般是哮喘或其他氣管炎之類的...
在 Android 開發(fā)中,Android Gradle 1.5 版本后的 Transform 機(jī)制允許第三方插件在 .class 文件打包成 dex 之前進(jìn)行動(dòng)態(tài)修改,為動(dòng)態(tài)修改字節(jié)碼文件提供了入口,例如添加埋點(diǎn)、插入日志等。
ASM 在多個(gè)出色項(xiàng)目中被廣泛使用,包括一個(gè)由官方提供的入門電子書(英文版),國內(nèi)也有漢化版本可供查閱。
ASM 框架結(jié)構(gòu)分為核心 API 和樹 API 兩大部分。核心 API 包括基于事件和基于對(duì)象兩種形式的類生成與解析。核心 API 中定義了類訪問類的事件序列,而樹 API 則以對(duì)象樹形式表示類,構(gòu)建在核心 API 之上。
ASM 源碼目錄結(jié)構(gòu)清晰,大致分為幾個(gè)關(guān)鍵包:組織字節(jié)碼處理的核心 API、提供工具和適配器的 commons 包、定義泛型操作的 signature 包、以及基于對(duì)象的樹 API 相關(guān)操作。
核心 API 包括 ClassVisitor、FieldVisitor、MethodVisitor 和 AnnotationVisitor,用于訪問 .class 文件中的 fields、methods 和 annotations 相關(guān)指令。ClassReader 和 ClassWriter 分別用于加載和生成字節(jié)碼文件。
TraceClassVisitor 和 CheckClassAdapter 功能強(qiáng)大,前者用于輸出字節(jié)碼指令,后者用于提前檢測(cè)類的有效性,確保生成的類符合 JVM 驗(yàn)證規(guī)則。
MethodVisitor 用于處理方法,允許訪問和生成方法。方法執(zhí)行順序有嚴(yán)格規(guī)定,以確保正確性。LocalVariablesSorter 和 AdaviceAdapter 提供插入局部變量和代碼的功能。FieldVisitor 則用于訪問和生成字段。
AnnotationVisitor 用于訪問注解,SignatureVisitor 用于處理泛型類型簽名。樹 API 包含 ClassNode、FieldNode 和 MethodNode 等,用于生成和表示類、字段和方法。
ClassNode 生成類對(duì)象,F(xiàn)ieldNode 生成字段對(duì)象,ClassWriter 和 ClassReader 用于與 ClassNode 交互。MethodNode 生成方法對(duì)象,InsnList 用于表示指令集合。Tree API 能將事件序列轉(zhuǎn)換為對(duì)象樹,反之亦然。
ASM 提供了基于樹 API 的方法分析模塊,支持?jǐn)?shù)據(jù)流分析和指令集分析。正向分析和反向分析幫助優(yōu)化方法執(zhí)行。Analyzer.getFrames 方法返回計(jì)算幀,可用于刪除無用代碼。
總結(jié),ASM 是 Java 字節(jié)碼操作的強(qiáng)大工具,適用于動(dòng)態(tài)類生成、增強(qiáng)類功能、修改字節(jié)碼和分析方法。深入學(xué)習(xí)可以利用 asm4-guide,推薦的案例開源庫可作為學(xué)習(xí)資源。
相關(guān)評(píng)說:
松溪縣末端: ______ ModelAndView.java這個(gè)類在spring-webmvc-4.x.jar這個(gè)jar包中.Spring——jar包詳解1、org.springframework.aop ——Spring的面向切面編程,提供AOP(面向切面編程)的實(shí)現(xiàn);2、org.springframework.asm——spring 2.5.6的時(shí)候需要asm jar...
松溪縣末端: ______ 重啟tomcat!把tomcat中的項(xiàng)目刪掉!!在檢查action中的list對(duì)不對(duì)!!還有jsp頁面也可能有錯(cuò)誤
松溪縣末端: ______ 1、MASM. 微軟公司為x86 微處理器家族開發(fā)的匯編開發(fā)環(huán)境,擁有可視化的開發(fā)界面,使開發(fā)人員不必再使用DOS環(huán)境進(jìn)行匯編的開發(fā),編譯速度快,支持80x86匯編以及Win32Asm,是Windows下開發(fā)匯編的利器. 2、NASM. 全稱The...
松溪縣末端: ______ 氣道平滑肌(Airway smoothmuscle,ASM)是肺通氣的重要組成部分. 在氣道D經(jīng)小于2 mm的肺呼吸性小氣道軟骨趨于消失,平滑肌相對(duì)增多,變?yōu)橐患⌒怨艿?因而是氣道阻力調(diào)節(jié)的活躍區(qū)域.各種病理因素通過影響ASM的神經(jīng)調(diào)控、受體活化、細(xì)胞因子釋放等病理生理過程,對(duì)ASM的正常功能帶來干擾,從而嚴(yán)重影響肺通氣,造成病人呼吸困難.隨著ASM生物學(xué)基礎(chǔ)研究的逐步深入,現(xiàn)已認(rèn)識(shí)到ASM不僅是影響氣道張力的因素,同時(shí)也由于它自身受各種刺激因子的影響,通過細(xì)胞分泌,增殖過程,產(chǎn)生的氣道重塑也是肺部疾病 ,尤其是COPD的重要病理生理學(xué)基礎(chǔ).ASM有問題的話一般是哮喘或其他氣管炎之類的...