首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏快乐阿超

    byte-buddy

    //github.com/raphw/byte-buddy.git 引入: <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy

    1.2K50编辑于 2023-01-10
  • 来自专栏后端技术学习

    java agent和byte-buddy组合的简单使用

    一、java agent和byte-buddy组合的使用场景 java agent开了一扇门,bytebuddy在开的这扇门中打开了一片新的天地。 三、基于java agent和byte-buddy组合简单使用 首先需要准备好premain,然后基于premain中定义的转换器,在转换器中,添加需要拦截的方法,拦截的规则,最终将其安装到Instrumentation 的依赖 <dependencies> <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy "); } } 以上是对byte-buddy的简单入门案例,通过上面的案例可以很好的理解sermant的原理。 参考: byte-buddy开源地址:https://github.com/raphw/byte-buddy sermant开源地址:https://github.com/huaweicloud/Sermant

    1.6K10编辑于 2024-02-17
  • 来自专栏快乐阿超

    byte-buddy实现mybatis-plus动态mapper

    完整源码:https://gitee.com/VampireAchao/stream-query

    99530编辑于 2023-01-12
  • 来自专栏Eliauk的小窝

    想修改第三方库的方法?我来教你

    当业务中被第三方库的一些方法限制时,我们可以通过修改第三方库的方法实现来满足我们的需求 本文使用了byte-buddy[1]参考资料 1、场景 es用Query.Builder 构建条件的时候, 上边只是一种场景,下边如何修改举例,就不使用公司项目是,我们从stream-query中选一个方法来修改 我们之间修改这个方法的内容,让他直接返回一个我们想要的值 2.1、引入byte-buddy <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> <version HighlightHelper.highlight("some", List.of(), s -> s); System.out.println(result); } 2.3、运行结果 [1] byte-buddy

    44510编辑于 2024-06-23
  • 来自专栏Linyb极客之路

    如何低侵入的记录调用日志

    实现手段 我这边提供2种思路 javaagent + byte-buddy springboot自动装配 + AOP javaagent 1、什么是javaagent javaagent是一个简单优雅的 java agent,利用java自带的instrument特性+javassist/byte-buddy字节码可以实现对类的拦截或者增强。 1、什么是byte-buddy Byte Buddy是一个JVM的运行时代码生成器,你可以利用它创建任何类,且不像JDK动态代理那样强制实现一个接口。 Byte Buddy还提供了简单的API,便于手工、通过Java Agent,或者在构建期间修改字节码 2、byte-buddy教程 注: 如果再介绍byte-buddy使用,则篇幅会比较长,因此提供以下 其实这两种实现在一些开源的方案用得挺多的,比如byte-buddy在skywalking和arthas就有使用到,比如MethodInterceptor 在spring事务中就有用到。

    1.4K01发布于 2021-05-05
  • 来自专栏Linyb极客之路

    如何低侵入的记录调用日志

    03 实现手段 我这边提供2种思路 javaagent + byte-buddy springboot自动装配 + AOP javaagent 1 什么是javaagent javaagent是一个简单优雅的 java agent,利用java自带的instrument特性+javassist/byte-buddy字节码可以实现对类的拦截或者增强。 1 什么是byte-buddy Byte Buddy是一个JVM的运行时代码生成器,你可以利用它创建任何类,且不像JDK动态代理那样强制实现一个接口。 Byte Buddy还提供了简单的API,便于手工、通过Java Agent,或者在构建期间修改字节码 1 byte-buddy教程 注: 如果再介绍byte-buddy使用,则篇幅会比较长,因此提供以下 其实这两种实现在一些开源的方案用得挺多的,比如byte-buddy在skywalking和arthas就有使用到,比如MethodInterceptor 在spring事务中就有用到。

    74830编辑于 2022-01-07
  • 来自专栏杨不易呀

    javaAgent通过字节码对方法增强和使用 byte-buddy 来实现类的增强

    前言 在上一篇讲述了入门和实操https://cloud.tencent.com/developer/article/2360594 本章节使用字节码和byte-buddy来玩 通过字节码对方法增强 新建一个 } } }).start(); } } PreMainAgent 重新 install,然后在运行效果如下图所示: 使用 byte-buddy ); } public static void buttyBuddyDemo(String agentOps, Instrumentation inst) { // Byte-Buddy

    1.8K30编辑于 2023-11-20
  • 来自专栏crossoverJie

    OpenTelemetry 实战:gRPC 监控的实现原理

    首先我们应用可以创建这些链路信息的前提是:使用了 OpenTelemetry 提供的 javaagent,这个 agent 的原理是在运行时使用了 byte-buddy 增强了我们应用的字节码,在这些字节码中代理业务逻辑 此时就需要 byte-buddy 登场了,它可以动态修改字节码从而实现类似于修改源码的效果。 io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers#extendsClass/ isMethod 等函数都是 byte-buddy Golang 增强而在 Golang 中因为没有 byte-buddy 这种魔法库的存在,不可以直接修改源码,所以通常的做法还是得硬编码才行。 如果没有那就需要查看源码,找到核心逻辑,再使用 byte-buddy 进行埋点。比如 Pulsar 并没有在客户端提供一些扩展接口,只能找到它的核心函数进行埋点。

    57010编辑于 2024-10-01
  • 来自专栏码匠的流水账

    聊聊skywalking的AbstractPlatformTransactionManagerInstrumentation

    * * @param typeDescription target class description * @param newClassBuilder byte-buddy's * @return new byte-buddy's builder for further manipulation. */ @Override protected * * @param typeDescription target class description * @param newClassBuilder byte-buddy's * @return new byte-buddy's builder for further manipulation. */ private DynamicType.Builder * * @param typeDescription target class description * @param newClassBuilder byte-buddy's

    59700发布于 2020-03-04
  • 来自专栏芋道源码1024

    链路追踪 SkyWalking 源码分析 —— Agent 插件体系

    因此,SkyWalking 引入了 byte-buddybyte-buddy 是一个代码生成和操作库,用于在 Java 应用程序 运行时创建和修改 Java 类,而徐无需编译器的帮助。 除了参与 Java 类库一起提供代码生成工具外,byte-buddy 允许创建任意类,并不限于实现用于创建运行时代理的接口。 此外,byte-buddy 提供了一个方便的 API ,用于 Java Agent 或在构建过程中更改类。 下面笔者默认胖友已经对 byte-buddy 有一定的了解。 这个方法信息量比较大,笔者对 byte-buddy 不是很熟悉,花费了较多时间梳理与理解。建议,如果胖友此处不是理解的很清晰,可以阅读完全文,在回过头再捋一捋这块的代码实现。 插件的拦截 在上文中,我们已经提到,SkyWalking 通过 JavaAgent 机制,对需要拦截的类的方法,使用 byte-buddy 动态修改 Java 类的二进制,从而进行方法切面拦截,记录调用链路

    2.9K32发布于 2019-10-29
  • 来自专栏CodeGuide | 程序员编码指南

    字节码编程,Byte-buddy篇一《基于Byte Buddy语法创建的第一个HelloWorld》

    二、开发环境 JDK 1.8.0 byte-buddy 1.10.9 byte-buddy-agent 1.10.9 本章涉及源码在:itstack-demo-bytecode-2-01,可以关注公众号 就像很熟悉的 Java; public class Hi { public static void main(String[] args) { System.out.println("Byte-buddy 到这里其实一个基本的方法就通过 Byte-buddy ,改造完成。 接下来的这一段主要是用于加载生成后的 Class 和执行,以及调用方法 toString()。也就是最终我们输出了想要的结果。

    1.3K00发布于 2020-05-09
  • 来自专栏CodeGuide | 程序员编码指南

    字节码编程,Byte-buddy篇一《基于Byte Buddy语法创建的第一个HelloWorld》

    二、开发环境 JDK 1.8.0 byte-buddy 1.10.9 byte-buddy-agent 1.10.9 本章涉及源码在:itstack-demo-bytecode-2-01,可以关注「公众号 就像很熟悉的 Java; public class Hi { public static void main(String[] args) { System.out.println("Byte-buddy 到这里其实一个基本的方法就通过 Byte-buddy ,改造完成。 接下来的这一段主要是用于加载生成后的 Class 和执行,以及调用方法 toString()。也就是最终我们输出了想要的结果。

    62120发布于 2020-07-14
  • 来自专栏CodeGuide | 程序员编码指南

    字节码编程,Byte-buddy篇一《基于Byte Buddy语法创建的第一个HelloWorld》

    二、开发环境 JDK 1.8.0 byte-buddy 1.10.9 byte-buddy-agent 1.10.9 本章涉及源码在:itstack-demo-bytecode-2-01,可以关注公众号 就像很熟悉的 Java; public class Hi { public static void main(String[] args) { System.out.println("Byte-buddy 到这里其实一个基本的方法就通过 Byte-buddy ,改造完成。 接下来的这一段主要是用于加载生成后的 Class 和执行,以及调用方法 toString()。也就是最终我们输出了想要的结果。

    1.3K00发布于 2020-05-08
  • 来自专栏CodeGuide | 程序员编码指南

    字节码编程,Byte-buddy篇二《监控方法执行耗时动态获取出入参类型和值》

    关于这部分系列文章可以访问链接进行专题系列的学习:https://bugstack.cn/itstack/itstack-demo-bytecode.html 那么,本章节我们会使用 Byte-buddy 二、开发环境 JDK 1.8.0 byte-buddy 1.10.9 byte-buddy-agent 1.10.9 本章涉及源码在:itstack-demo-bytecode-2-02,可以关注公众号 关于字节码编程专栏已经完成了大部分文章的编写,包括如下文章;(学习链接:https://bugstack.cn/itstack/itstack-demo-bytecode.html) - [`字节码编程,Byte-buddy

    1.9K00发布于 2020-05-13
  • 来自专栏CodeGuide | 程序员编码指南

    字节码编程,Byte-buddy篇二《监控方法执行耗时动态获取出入参类型和值》

    「关于这部分系列文章可以访问链接进行专题系列的学习」:https://bugstack.cn/itstack/itstack-demo-bytecode.html 「那么」,本章节我们会使用 Byte-buddy 二、开发环境 JDK 1.8.0 byte-buddy 1.10.9 byte-buddy-agent 1.10.9 本章涉及源码在:itstack-demo-bytecode-2-02,可以关注「公众号 关于字节码编程专栏已经完成了大部分文章的编写,包括如下文章;(「学习链接」:https://bugstack.cn/itstack/itstack-demo-bytecode.html) 字节码编程,Byte-buddy

    1.6K10发布于 2020-07-14
  • 来自专栏CodeGuide | 程序员编码指南

    字节码编程,Byte-buddy篇三《使用委托实现抽象类方法并注入自定义注解信息》

    作者:小傅哥 博客:https://bugstack.cn ❝沉淀、分享、成长,让自己和他人都能有所收获 ❞ 一、前言 截至到本章节关于字节码框架 Byte-buddy 的大部分常用 API 的使用已经通过案例介绍比较全面了 二、开发环境 JDK 1.8.0 byte-buddy 1.10.9 byte-buddy-agent 1.10.9 本章涉及源码在:itstack-demo-bytecode-2-03,可以关注「公众号 ", "dataApi").define("clazzDesc", "查询数据信息").define("timeOut", 350L).build()) .make(); 这部分基本是Byte-buddy 将创建的类写入目录 // 输出类信息到目标文件夹下 dynamicType.saveIn(new File(ApiTest.class.getResource("/").getPath())); 这部分内容是 Byte-buddy

    98230发布于 2020-07-14
  • 来自专栏后端技术学习

    Sermant的整体流程学习梳理

    更多需要了解的,可以参考byte-buddy这个开源项目。 三、入口方法执行的全流程 四、spi的加载过程 启动核心服务的过程是spi的加载过程,此时会初始化所有的服务。 参考:sermant官网:https://sermant.io/zh/ sermant开源地址:https://github.com/huaweicloud/Sermant byte-buddy开源地址 :https://github.com/raphw/byte-buddy

    62210编辑于 2024-02-27
  • 来自专栏CodeGuide | 程序员编码指南

    基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》

    type> </dependency> <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy <include>javassist:javassist:jar:</include> <include>net.bytebuddy:byte-buddy

    2.4K30发布于 2020-07-14
  • 来自专栏CodeGuide | 程序员编码指南

    调研字节码插桩技术,用于系统监控设计和实现

    二、准备工作 本文会基于 AOP、字节码框架(ASM、Javassist、Byte-Buddy),分别实现不同的监控实现代码。 ---- 接下来我们开始介绍关于使用字节码插桩非入侵的方式进行系统监控,关于字节码插桩常用的有三个组件,包括:ASM、Javassit、Byte-Buddy,接下来我们分别介绍它们是如何使用的。 六、Byte-Buddy 2015年10月,Byte Buddy被 Oracle 授予了 Duke's Choice大奖。该奖项对Byte Buddy的“ Java技术方面的巨大创新 ”表示赞赏。 所以在使用字节码框架的时候,可以考虑选择使用 Byte-buddy 这个非常好用的字节码框架。 Byte-buddy 是一个非常方便的框架,目前使用也越来越广泛,并且上手使用的学习难度也是几个框架中最低的。

    1.4K40发布于 2021-07-23
  • 来自专栏CodeGuide | 程序员编码指南

    方案设计:基于IDEA插件开发和字节码插桩技术,实现研发交付质量自动分析

    关于字节码插桩,可以了解ASM、Javassist、Byte-Buddy,它们都可以做此项工作。 IDEA 插件开发,因为我们需要在研发人员开发过程中进行采集,也不破坏研发的操作习惯。 三、对字节码插桩 这里我们使用的字节码插桩组件是 Byte-buddy,它是一个代码生成和操作库,用于在 Java 应用程序运行时创建和修改 Java 类,而无需编译器的帮助。 ; System.out.println("方法耗时:" + (System.currentTimeMillis() - start) + "ms"); } } 这个就是使用 Byte-Buddy

    10.2K182发布于 2021-02-23
领券