内容列表

  • 2020-01-07 0 737
    Java Agent入门实战(三)-JVM Attach原理与使用

    之前的permain方法只能在java程序启动之前执行,并不能程序启动之后再执行,但是在实际的很多的情况下,我们没有办法在虚拟机启动之时就为其设定代理,这样实际上限制了instrument的应用。而Java SE 6的新特性改变了这种情况,可以通过Java Tool API中的attach方式来达到这种程序启动之后设置代理的效果。 Attach API 不是 Java 的标准 API,而是 Sun...

  • 2020-01-06 0 614
    Java Agent入门实战(二)-Instrumentation源码概述

    Instrumentation接口设计初衷是为了收集Java程序运行时的数据,用于监控运行程序状态,记录日志,分析代码用的。接下来从源码的流程来介绍一下 实现类InstrumentationImpl的void addTransformer(ClassFileTransformer transformer, boolean canRetransform); 从这段代码知道,转换器ClassFileT...

  • 2019-12-31 0 891
    Java Agent入门实战(一)-Instrumentation介绍与使用

    学会Java Agent你能做什么? 自动添加getter/setter方法的工具lombok就使用了这一技术 btrace、Arthas和housemd等动态诊断工具也是用了instrument技术 Intellij idea 的 HotSwap、Jrebel 等也是该技术的实现之一 pinpoint、skywalking、newrelic、听云的 APM 产品等都基于 Instrumentat...

  • 2020-07-19 0 940
    ☆技术问答集锦(13)Java Instrument原理

    1 Java Instrument能做什么?最大的作用? 使开发者可以构建一个独立于应用程序的代理程序Agent,用来监控和协助运行在JVM上的程序,更重要的是能够替换和修改某些类的定义; 最大的作用:可以实现一种虚拟机级别支持的AOP实现方式; 2 在JDK 1.5 、1.6中,Java Instrument做了哪些变动支持? JDK 1.5:支持静态Instrument,就是在JVM启动前静态...

  • 2020-07-19 0 1,204
    ☆基于Java Instrument的Agent实现

    0 介绍 使用 Instrumentation,使得开发者可以构建一个独立于应用程序的代理程序(Agent),用来监测和协助运行在 JVM 上的程序,甚至能够替换和修改某些类的定义。有了这样的功能,开发者就可以实现更为灵活的运行时虚拟机监控和 Java 类操作了,这样的特性实际上提供了 一种虚拟机级别支持的 AOP 实现方式,使得开发者无需对 JDK 做任何升级和改动,就可以实现某些 AOP 的功...

  • 2020-07-19 0 966
    Java 8 Stream 教程

    本文采用实例驱动的方式,对JAVA8的stream API进行一个深入的介绍。虽然JAVA8中的stream API与JAVA I/O中的InputStream和OutputStream在名字上比较类似,但是其实是另外一个东西,Stream API是JAVA函数式编程中的一个重要组成部分。 本文描述如何使用JAVA8的Stream API。通过本文,你可以了解Stream API的执行顺序,不同的...

  • 2020-06-21 0 969
    JDK13 GA发布:5大特性解读

    JDK13 GA版本 5大新特性如下: 350: Dynamic CDS Archives351: ZGC: Uncommit Unused Memory353: Reimplement the Legacy Socket API354: Switch Expressions (Preview)355: Text Blocks (Preview) 350: Dynamic CDS Archives...

  • 2019-10-26 3 1,879
    为了进字节跳动,我精选了29道Java经典算法题,带详细讲解

    前言: 如题,很多粉丝私信,让分享一些算法面试题,今天他来了;精选29道Java经典算法面试题,并且做了详细的讲解,希望能够帮助到大家! Java经典算法题 1. Java 的 16 进制与字符串的相互转换函数 /** * 将指定 byte 数组以 16 进制的形式打印到控制台 * @param hint String * @param b byte[] * @return ...