Java自学之路
文章平均质量分 67
通过视频来学习java,以及结合目前的编程经验做一些业务上的总结
zhangge3663
这个作者很懒,什么都没留下…
展开
-
JVM插码之六:jacoco插码及问题“$jacocodata 属性 Method not found: is$jacocoData”
在使用jacoco统计自动化代码覆盖率jacoco统计自动化代码覆盖率1. 简介1.1. 什么是JacocoJacoco是一个开源的代码覆盖率工具,可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。1.2. 什么是代码覆盖率代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率转载 2021-05-02 12:30:51 · 2251 阅读 · 1 评论 -
JVM插码之五:Java agent+ASM实战--监控所有方法执行时间
本文建立在对instrumentation和agent有初步的了解的前提下阅读,关于这2个类的讲解在其它文章中。这是一个maven项目,pom中需要的配置,lib中有asm的jar包pom.xml文件:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mav转载 2021-05-02 12:29:45 · 1080 阅读 · 0 评论 -
JVM插桩之四:Java动态代理机制的对比(JDK和CGLIB,Javassist,ASM)
一、class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class文件内的信息,生成对应的Class对象:class字节码文件是根据JVM虚拟机规范中规定的字节码组织规则生成的、具体class文件是怎样组织类信息的,可以参考 此博文:深入理解Java Class文件格式系列。或者是Java虚拟机规范。下面通过...转载 2021-05-02 12:21:27 · 719 阅读 · 0 评论 -
JVM插桩之三:javaagent介绍及javassist介绍
本文介绍一下,当下比较基础但是使用场景却很多的一种技术,稍微偏底层点,就是字节码插桩技术了...,如果之前大家熟悉了asm,cglib以及javassit等技术,那么下面说的就很简单了...,因为下面要说的功能就是基于javassit实现的,接下来先从javaagent的原理说起,最后会结合一个完整的实例演示实际中如何使用。1、什么是javassist?Javassist是一个开源的分析、编辑和创建Java字节码的类库。其主要的特点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机转载 2021-05-02 08:31:06 · 1536 阅读 · 0 评论 -
JVM插桩之二:Java agent基础原理
Javaagent只要作用在class被加载之前对其加载,插入我们需要添加的字节码。Javaagent面向的是我们java程序员,而且agent都是用java编写的,不需要太多的c/c++编程基础,不过这篇文章里也会讲到JVMTIAgent(c实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。对于javaagent或许大家都听过,甚至使用过,常见的用法大致如下:java -javaagent:myagent.jar=mode=test Test我们通过-jav转载 2021-05-02 07:39:19 · 1242 阅读 · 0 评论 -
JVM插桩之一:JVM字节码增强技术介绍及入门示例
字节码增强技术:AOP技术其实就是字节码增强技术,JVM提供的动态代理追根究底也是字节码增强技术。目的:在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修改。Java字节码增强主要是为了减少冗余代码,提高性能等。应用场景:某一天系统出现OOM,通过工具分析,各类的对象占用了很大空间,但是这个对象被许多程序访问,那么就很难找到,工程的全文匹配也只能找到自己的业务代码调用的地方,深入的反射,三方包调用无法匹配。这个时候AOP就可以帮助完成。两种实现机制:转载 2021-05-01 18:19:48 · 1238 阅读 · 0 评论 -
java动态加载jar文件并执行方法
在项目开发的过程中,有时候需要动态灵活的加载某个jar包并执行里面的方法的时候,我们可以使用本篇文章写得方式去动态的加载jar包而不用使用原始方式引入jar包作为lib去使用,接下来介绍如何动态加载jar包。直接上代码:核心的方法就是下面这个loadJar方法,我们传入一个jar包的路径即可。public static void loadJar(String jarPath) { File jarFile = new File(jarPath); // 从URLClassLoade转载 2021-05-01 16:49:34 · 5948 阅读 · 0 评论 -
反射获取成员方法并运行
/* * 反射获取成员防范并运行 * public void eat() {} */public class ReflectDemo6 { public static void main(String[] args) throws Exception { Class c = Class.forName("cn.itcasat.demo1.Person"); Object obj = c.newInstance(); // 获取class.转载 2021-05-01 16:32:46 · 99 阅读 · 0 评论 -
如何在命令提示符下编译运行含有Package的java文件
在用Eclipse编译运行java文件时不用考虑Package的问题,但是如何在命令提示符下运行添加Package的java文件呢?package test;import test.B;public class A { public static void main(String[] args) { B b = new B(); b.print(); }}package test;public class B { void p转载 2021-04-23 16:01:13 · 331 阅读 · 0 评论 -
Springboot笔记
一、Spring的Java配置方式 1.1 @Configuration 和 @Bean Spring的Java配置方式是通过@Configuration和@Bean这两个注解实现的: 1.1.1 @Configuration作用于类上,相当于一个xml配置文件; 1.1.2 @Bean 作用于方法上,相当于xml配置中的<bean>; ...原创 2018-09-24 22:32:33 · 134 阅读 · 0 评论
分享