首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用ASM实现简单的AOP

关于JVM attach和Instrumentation的功能,下次再写文章介绍,本文着重于greys中非常神奇的一个类AdviceWeaver,该类使用asm代码实现了简单的aop功能,本文的实现方式基本参考该类...下文将结合asm使用方法讲解如何实现简单的aop功能。 asm简介 什么是asmASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。...ClassVisitor、MethodVisitor与AdviceAdapter 在使用ASM操作字节码之前,我们需要稍微了解下ClassVisitor,ClassVisitor用来generating...使用AdviceAdapter植入增强代码 如前所述,ASM提供了AdviceAdapter工具类用于在method字节码中插入增强代码,onMethodEnter、onMethodExit、visitMaxs...下面演示下如何调用System.out.println(String str) 首先需要将Object ref压入堆栈(使用ASM取得Ojbect ref通常不是一件容易的事情),我们使用getstatic

1.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

ASM 翻译系列第十五弹:ASM Internal ASM File Directory

原作者:Bane Radulovic 译者: 郭旭瑞 审核: 魏兴华 DBGeeK社群联合出品 ASM File Directory 本篇主要介绍ASM的1号文件,ASM的1号文件是ASM的文件目录...虽然这是一个内部的文件,但ASM实例会把它当做其它ASM文件一样管理,在ASM的文件目录中也会有它自己的条目(指向了它自己),在一个normal和high冗余的磁盘组中,它也会做镜像,随着新文件的产生,...V$ASM_FILE and V$ASM_ALIAS views ASM文件目录中描述的大部分信息都可以通过V$ASM_FILE视图查询到。...然而,该视图中并不会显示ASM元信息文件的信息。V$ASM_FILE视图中没有描述文件名的列,所以为了得到一个有意义的输出,同时我们还需要联合V$ASM_ALIAS视图。...译者注:译者认为这里作者遗漏了一个很重要的定位asm一号文件的方法,通过kfed 读取asm磁盘头的kfdhdb.f1b1locn部分,可以获得ASM一号文件所在的AU,例如下面的例子里显示了一号文件在磁盘的

1.2K40

ASM 翻译系列第十弹:ASM Internal ASM DISK header

原作者:Bane Radulovic 译者: 庄培培 审核: 魏兴华 DBGeeK社群联合出品 ASM disk header ASM磁盘头可能是ASM元数据中最广为人知的部分。...包含ASM元数据的AU会以元数据块的方式进行格式化(一个元数据块的大小为4K)。AU0位于ASM磁盘的起始位置,它始终用于存储ASM元数据。AU0的第一个块,即block 0,就是ASM的磁盘头。...我们对一个LINUX平台上通过asmlib管理的磁盘的block 0,使用kfed工具进行输出观察。 ?...ASM disk header in Exadata Exadata中的ASM磁盘并不是以设备名的方式给操作系统使用。...它们使用专用的名称格式 o/[存储节点IP]/[磁盘名].kfed工具支持这种名称格式,所以kfed可以在exadata环境中使用。查看Exadata磁盘的ASM磁盘头: ?

1.1K70

使用Azure Policy限制所有ASM资源

使用Azure Policy限制所有ASM资源 Azure策略是管理Azure订阅中的标准策略的绝佳工具。可用于创建、分配和管理策略。...通过使用正确的策略类型,可以确保现有资源的符合性。 相信大家都知道Azure 上有两种部署模式,分别为ARM和ASM(又名Classic)。...鉴于ARM的上述优点,客户在部署的时候都希望使用ARM的模式进行部署,但是在某些情况下可能会出现运维人员误操作等原因将资源部署成ASM的模式。...为了避免此种情况的发生,我们一般会推荐客户使用Azure Policy来限制无法在订阅内创建ASM资源。...下面就让我们来一起看一下如何使用一个非常简单的策略定义来实现限制订阅级别上的所有Azure Service Manager(ASM,又名Classic)资源。

34720

ASM初探

ASM 的对象模型(ASM Tree API) 对象模型的 本质 是一个 被封装过后的事件模型,它 使用了树状图的形式来描述一个类,其中包含多个节点,例如方法节点、字段节点等等,而每个节点又有子节点,例如方法节中有操作码子节点...会使用 ClassReader 来解析字节码。...当我们在使用 ASM 进行操控时,可以将它们视为一个个与之对应的事件。...在使用 ASM 进行插桩的时候,我们尤其需要注意以下 两点: 1)、当我们使用 ASM 处理字节码时,需要 逐步小量的修改、验证,切记不要编写大量的字节码并希望它们能够立即通过验证并且可以马上执行。...2)、注意本地变量表和操作数栈的数据交换以及 try catch blcok 的处理,关于异常处理可以使用 ASM 提供的 CheckClassAdapter,可以在修改完成后验证一下字节码是否正常。

1.3K10

ASM 翻译系列第十六弹:ASM Internal ASM Active Change Directory

原作者:Bane Radulovic 译者: 郭旭瑞 审核: 魏兴华 DBGeeK社群联合出品 ASM Active Change Directory 当ASM实例要对多个元信息block进行原子修改时...,ASM的active change directory 简称ACD会记录相应的日志,ACD是ASM元信息的3号文件。...随着更多的实例挂载了该磁盘组,ACD的chunk数也会同比例增长,每个实例会使用属于自己的ACD chunk区。...Closer look at ASM active change directory 接下来使用kfed工具对ACD进行查看。上一个查询显示ACD是从ASMDISK6磁盘的第三个AU开始的。...输出中我们只需要关注一个地方就可以了,那就是kfracdc.thread=1,这代表该ACD属于ASM实例一。在一个集群环境中,该值是与ASM实例号相对应的。

84540

ASM 翻译系列第二十弹:ASM Internal ASM file number 7

ASM动态逻辑卷设备是由ASM动态逻辑卷构建的。一个磁盘组中可以配置一个或多个ASM动态逻辑卷设备。ASM集群文件系统通过ADVM接口构建在ASM磁盘组之上。...ADVM像数据库一样,也是ASM的一个客户端。当一个逻辑卷被访问时,相应的ASM文件会被打开并且ASM extent的信息会被发送到ADVM驱动。...MIRROR Stripe Columns: 4 Stripe Width (K): 128 Usage: Mountpath: $ 到现在,还没有相应的挂载目录与逻辑卷相关联,所以还不能使用它们...---------- 0 53 1 ASMDISK6 0 53 0 ASMDISK5 接下来,使用...Conclusion 一个磁盘组中可以配置一个或多个ASM动态逻辑卷设备。ASM集群文件系统通过ADVM接口构建于ASM磁盘组之上。ADVM跟数据库一样,也是ASM的一个客户端。

1.1K70

ASM 翻译系列第十七弹:ASM Internal ASM Disk Directory

原作者:Bane Radulovic 译者: 郭旭瑞 审核: 魏兴华 DBGeeK社群联合出品 ASM Disk Directory 本篇文章讲述ASM元信息的2号文件,ASM的2号文件是ASM...对ASM来说,磁盘目录只是一个普通的ASM文件,在ASM的文件目录中也会有它的条目,如果磁盘组做了冗余策略,它也会相应做镜像,也会像其他文件一样根据实际需要做空间的伸长。...V$ASM_DISK_STAT view 视图V$ASM_DISK_STAT展示了跟V$ASM_DISK相同的信息,不过查询V$ASM_DISK_STAT并不会执行发现所有磁盘的操作。...Locating the disk directory 我们可以在ASM实例中查询固态表X$KFFXP来查看哪些AU属于ASM的2号文件,同时通过join视图V$ASM_DISK_STAT来获取ASM的磁盘名称...让我们使用kfed工具查看下磁盘目录的具体内容,由于数据在3个AU中是一样的,我们只需要查看第一个AU的内容就可以了,这里是ASMDISK4的AU 2: $ kfed read /dev/oracleasm

1.1K80

创建ASM实例及ASM数据库

是一个纯软件级别的实现方式,第三方RAID工作在卷层次上,使用统一条带大小,ASM可以工作在文件层次级别,不同文件可以使用 不同的条带大小 2.ASM的优点 磁盘增加:增加磁盘变得非常容易。...下载路径:ASMLib下载 注意下载支持该内核的包,分为两部分,一是Library and Tools,二是Drivers for kernel 如本人的Linux的内核为: [root@oradb...ASM discovered an insufficient number of disks for diskgroup "DG1" SQL> ho ls -hlt /dev/raw # LINUX...来创建asm磁盘 c.使用root帐户配置ASMLib驱动及创建ASM磁盘,Oracle建议使用ASMLIB驱动来配置ASM磁盘 [root@oradb ~]# /etc/init.d/oracleasm...数据库 使用dbca工具根据提示来创建使用ASM存储的数据库 创建使用ASM存储的数据库完毕之后,对于ASM数据库启动应首先保证ASM实例先被启动,因为RDBMS是ASM实例服务的一个客户端 接下来再来启动

1.3K30

ASM 翻译系列第十八弹:ASM Internal ASM file number 5

原作者:Bane Radulovic 译者: 魏兴华 审核: 魏兴华 ASM file number 5 本章讲述ASM的5号文件,5号文件是ASM的模板目录,包含了磁盘组中所有的文件模板的信息...有两种类型的模板:一种是系统自带的,一种是用户创建的,默认的模板(系统自带的)已经包含ASM的所有文件类型,创建文件时会根据文件类型自动匹配,用户创建的模板只会在用户特别指定时会使用。...有趣的是,我们可以使用它创建任何的数据库文件。...接下来我们使用我们上面创建的模板来添加一个数据文件: SQL> create tablespace NOT_IMPORTANT datafile '+DATA(NO_MIRRORING)' size 1m...一个比较好的使用模板的方法是在一个normal冗余的磁盘中创建一个三重镜像的模板,注意如果想要使这个做法生效,我们至少需要这个磁盘组中有3个failgroup。

1K60

ASM 翻译系列第十九弹:ASM Internal ASM Continuing Operations Directory

原作者:Bane Radulovic 译者: 魏兴华 审核: 魏兴华 ASM Continuing Operations Directory ASM中一些运行时间较长的操作,例如rebalance..., drop disk, create/delete/resize file,这些信息ACD的简要结构不足以描述其变化,这些操作需要通过ASM的COD目录去追踪,COD是ASM的4号文件,每一个磁盘组都会有一个...Background operation 后台操作是由ASM实例的后台进程去执行的,它作为磁盘组的维护任务的一部分,而非特殊要求,直到完成或者ASM实例挂掉,如果ASM实例挂掉,执行恢复的实例需要重新执行后台操作...ASM的前台进程发起请求,为了能够记录这个rollback操作,必须在ASM的COD目录中申请一个槽位,COD目录的block 1展示了所有的槽位和使用状态,如果所有的槽位当时都是忙的,那么这个操作会休息一段时间...,直到发现其中一个可以使用

1.1K50

ASM 翻译系列第二十七弹:ASM INTERNAL ASM METADATA BLOCK

原作者:Bane Radulovic 译者: 邱大龙 审核: 魏兴华 DBGeeK社群联合出品 ASM METADATA BLOCK ASM的元数据由ASM实例进行维护和管理,元信息本身非常重要...,ASM磁盘组中的文件要想被Oracle DB和其他客户端正常使用,就要求元信息一定要是完好无损的,ASM的元信息以元信息块的形式存储在磁盘组中。...有些ASM 元数据在每个ASM 磁盘的固定位置,被称为物理元信息,有些ASM元数据是以文件(目录)形式保存,被称为虚拟元数据,虚拟元数据像所有其他普通ASM 文件一样被管理,它也会根据磁盘组冗余属性决定是否做镜像...ASM metadata lives in ASM disk groups ASM 元数据存储在磁盘组内,换而言之就是磁盘组是ASM 元数据存在的基本前提,值得强调的是ASM 不会在磁盘组之外存储任何东西...ASM metadata blocks ASM元数据结构是由一个或多个ASM 元数据块构成。

90680

ASM 翻译系列第九弹:高级知识ASM Toolbox

ASMCA - ASM configuration assistant ASMCA有两种使用方式,第一种是比较容易使用的图形界面,还有一种是静默方式。...kfed - ASM metadata editor 前面的章节,在对ASM元数据块进行健康检查过程中我们已经谈及如何使用kfed工具,使用它深入地了解了ASM的磁盘头信息,还有它在进行ASM磁盘映射到...kfed不仅能读取元数据,它还有编辑功能,在前面还未谈及如何使用它编辑ASM元数据块,需要强调的是,类似于修改元数据的操作可能会导致ASM和数据库不能正常使用。...kfod - ASM discovery tool 这是一个只做发现磁盘这一单一工作的专业工具。它在grid软件安装的过程中会被调用,但是它也能随时独立使用。...但是对足够幸运能拥有Exadata的人来讲,知道如何使用它是非常重要的。 sqlplus 别忘了sqlplus。它还是最强大的ASM维护和管理工具。

1.1K31

ASM Instances管理

使用Server Control Utility (SRVCTL)管理ASM 可以使用SRVCTL做如下操作: 从OCR中添加和删除ASM记录 启用,禁用,启动和停止ASM实例 显示ASM实例的配置和状态...注意:如果磁盘组中的磁盘都是好的,这时使用mount force,会导致命令失败 2.1 startup 参数 我们使用startup命令来启动ASM实例 和Oracle数据库启动一样,startup...有一些参数可以使用 FORCE 在启动ASM之前先执行 shutdown abort命令 MOUNT or OPEN 开启ASM实例并mount磁盘组,这是默认参数 NOMOUNT 开启ASM实例但是不...关闭ASM实例 ASM实例的关闭包括dismount磁盘组和关闭实例两步 关闭ASM前需要先关闭相关的数据库实例 我们使用shutdown命令来关闭ASM实例,它有如下参数: NORMAL ASM 等待现有...ASMB 进程运行在数据库端用来和ASM进程通信以及管理存储,ASM端运行cp命令或者使用spfile启动时会在ASM端出现 GMON进程负责维护磁盘组中的磁盘成员关系 MARK 进程负责将写入损坏磁盘失败的

92010
领券