排序:
默认
按更新时间
按访问量

Java agent+ASM实战--监控所有方法执行时间

本文建立在对instrumentation和agent有初步的了解的前提下阅读,关于这2个类的讲解在其它文章中。 这是一个maven项目,pom中需要的配置,lib中有asm的jar包 <plugin> ...

2018-11-16 13:44:48

阅读数:25

评论数:0

maven打包指定lib路径,修改manifest

指定自定义的lib路径,把lib一起打包到jar包中,需要修改compiler插件的定义。 <plugin> <artifactId&...

2018-11-16 10:42:10

阅读数:28

评论数:1

SpringBoot使用(四)--Actuator

Spring Boot的Actuator,它提供了很多生产级的特性,比如监控和度量Spring Boot应用程序。 Actuator的这些特性可以通过众多REST端点、远程shell和JMX获得。 Spring Boot Actuator的关键特性是在应用程序里提供众多Web端点,通过它们了解应用...

2018-11-14 11:30:15

阅读数:21

评论数:0

SpringBoot使用(三)--测试

Spring Framework的核心工作是将所有组件编织在一起,构成一个应用程序。整个过程就是读取配置说明(可以是XML、基于Java的配置、基于Groovy的配置或其他类型的配置),在应用程序上下文里初始化Bean,将Bean注入依赖它们的其他Bean中。 测试一个springboot的web...

2018-11-13 16:05:40

阅读数:15

评论数:0

SpringBoot使用(二)--配置

配置是Spring Framework的核心元素,必须要有东西告诉Spring如何运行应用程序。 在向应用程序加入Spring Boot时,有个名为spring-boot-autoconfigure的JAR文件,其中包含了很多配置类。每个配置类都在应用程序的Classpath里,都有机会为应用程序...

2018-11-13 14:55:32

阅读数:33

评论数:0

SpringBoot使用(一)--- 构建简单的应用

Spring Boot提供了一种新的编程范式,能在最小的阻力下开发Spring应用程序。有了它, 你可以更加敏捷地开发Spring应用程序,专注于应用程序的功能,不用在Spring的配置上多花功 夫,甚至完全不用配置。实际上, Spring Boot的一项重要工作就是让Spring不再成为你成...

2018-11-13 12:26:20

阅读数:12

评论数:0

Java线程间通信--管道

Java提供了多种输入输出流用于对数据进行操作,其中管道流pipeStream是一种特殊的流,用于在不同线程间直接传送数据。 pis.read的时候,如果管道内没有数据,会阻塞。 public class PipeStreamMain { public static void mai...

2018-11-12 14:57:07

阅读数:10

评论数:0

ArrayList

elementData是arraylist的容器,所以arraylist是基于数组的操作。 transient Object[] elementData; add 添加一个元素前,先检查数组容量,如果数组为空,先初始化。 发现容量不够时,需要对数组扩容。 public boole...

2018-11-12 11:08:24

阅读数:9

评论数:0

CountDownLatch

这个类是一个帮助同步的工具类,一个或多个线程等待其它线程完成某些条件之后执行。 CountDownLatch在初始化时有一个变量count用于计数,当count==0时,等待线程将会被唤醒。这是一个一次性的工具,count不能被重置。 一个用例: public class Main { ...

2018-11-12 10:20:54

阅读数:14

评论数:0

ConcurrentHashMap 详解

以hashmap这一篇为基础,分析一下ConcurrentHashMap。 hashmap是线程不安全的,而hashtable性能低下,所以concurrentHashMap应运而生。 ConcurrentHashMap使用锁分段技术,首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当...

2018-11-07 16:43:35

阅读数:35

评论数:0

HashMap 详解

类层次图: hashmap实现了Map接口,提供了所有可选的map操作,允许Null值和null的key,基本和Hashtable差不多。区别是它线程不安全以及允许null。 Hashmap不保证顺序,它的插入和删除都是常量时间的(在哈希值散列分布的情况下)。遍历需要的时间和哈希表的容量以...

2018-11-02 17:10:32

阅读数:36

评论数:0

Serializable接口与serialVersionUID

一个类实现Serializable接口后可以被序列化。这个接口没有方法和字段,只是用来标志这个类可以被序列化。 为了让没有序列化能力的子类能够被序列化,子类可以保存和恢复父类public,protected和包可见(如果有权限)的字段的值(这个需要父类具有无参的可访问的构造函数)。 在反序列化...

2018-11-02 10:54:23

阅读数:13

评论数:0

Condition接口

Condition条件输出一个类监视器的wait,notify,notifyall方法到不同的类,给每一个类不同的wait集合,通过结合它和Lock类实现一起替代传统 的synchronized方法和语句,替代类监视器的使用。 当在一个condition上wait时,一个假的唤醒是被允许的(作为...

2018-11-01 12:16:02

阅读数:19

评论数:0

Object详解

Object类是所有类的父类(包括数组),Object类中共有12个方法(除了init和cinit以外)。 一个静态本地方法registerNatives,在类被加载时执行。 5个方法可以被子类覆盖(也在vtable中)—hashCode(),equals(Object obj),clone(...

2018-10-30 17:13:31

阅读数:31

评论数:0

ASM框架使用(五)--Tree API修改类和方法

Tree API通过ClassNode创建和修改类,ClassNode类的API: 创建一个类:

2018-10-30 15:02:35

阅读数:19

评论数:0

ASM框架使用(四)--泛型与注解

泛型 对于泛型类型Type的解析,必须按照下面的顺序 访问方法签名按照下面的顺序 访问类签名的顺序 其中大部分方法都会返回一个SignatureVisitor,用于访问一个type签名。 SignatureVisitor返回SignatureVisitors(不能返回null)。 AS...

2018-10-28 23:48:39

阅读数:32

评论数:0

ASM框架使用(三)--方法修改以及创建

在jdk 1.6以后编译的类,除了字节码指令以外,还多了一些栈映射桢(stack map frames),用来提高虚拟机校验字节码的速度的。 stack map frames反映了字节码执行过程中,栈帧的变化。 stack map frames中有一种特殊类型Uninitialized(lab...

2018-10-24 16:07:11

阅读数:55

评论数:0

Instrumentation与ClassFileTransformer--字节码转换工具

一个代理实现ClassFileTransformer接口用于改变运行时的字节码(class File),这个改变发生在jvm加载这个类之前。对所有的类加载器有效。 class File这个术语定义于虚拟机规范3.1,指的是字节码的byte数组,而不是文件系统中的class文件。 接口中只有一个...

2018-10-23 16:57:15

阅读数:20

评论数:0

Java虚拟机(十八)--锁与并发、内存模型

对象在jvm中分为对象头和数据体。 对象头由_mark和_metadata组成,在不开启指针压缩的情况下,各占用一个指针宽度。

2018-10-18 16:53:07

阅读数:28

评论数:0

性能调优与时间

下面的程序输出了毫秒计时器与纳秒计时器的最大偏离。 public static void runWithSpin(){ long nowNanos=0,startNanos=0; long startMills=System.currentTimeMillis...

2018-10-18 10:04:02

阅读数:28

评论数:1

提示
确定要删除当前文章?
取消 删除
关闭
关闭