随笔分类 - java
摘要:本文转载自ASM的基础用法 导语 新闻里使用的热补丁修复方案是基于AspectJ,AspectJ是AOP的一种实现。 无意接触到一种小巧轻便的Java字节码操控框架ASM,它也能方便地生成和改造Java代码。 本文主要分为几个部分: 什么是ASM; 为什么要动态生成Java类; 为什么选择ASM;
阅读全文
摘要:本文转载自Java对象内存布局 导语 首先直接抛出问题 Unsafe.getInt(obj, fieldOffset)中的fieldOffset是什么, 类似还有compareAndSwapX(obj, fieldOffset, oldValue, newValue)? 如何实现原子读, 原子写的
阅读全文
摘要:本文转载自字节码增强技术-Byte Buddy 为什么需要在运行时生成代码? Java 是一个强类型语言系统,要求变量和对象都有一个确定的类型,不兼容类型赋值都会造成转换异常,通常情况下这种错误都会被编译器检查出来,如此严格的类型在大多数情况下是比较令人满意的,这对构建具有非常强可读性和稳定性的应用
阅读全文
摘要:本文转载自Byte Buddy学习笔记 简介 Byte Buddy是一个JVM的运行时代码生成器,你可以利用它创建任何类,且不像JDK动态代理那样强制实现一个接口。Byte Buddy还提供了简单的API,便于手工、通过Java Agent,或者在构建期间修改字节码。 Java反射API可以做很多和
阅读全文
摘要:本文转载自Java魔法类:Unsafe应用解析 前言 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使
阅读全文
摘要:本文转载自JVM Attach实现原理剖析 前言 本文旨在从理论上分析JVM 在 Linux 环境下 Attach 操作的前因后果,以及 JVM 为此而设计并实现的解决方案,通过本文,我希望能够讲述清楚如下三个主要方面的内容。 Attach 为什么而出现 Attach的出现究其根本原因,应该就是为了
阅读全文
摘要:本文转载自Java 动态调试技术原理及实践 导语 断点调试是我们最常使用的调试手段,它可以获取到方法执行过程中的变量信息,并可以观察到方法的执行路径。但断点调试会在断点位置停顿,使得整个应用停止响应。在线上停顿应用是致命的,动态调试技术给了我们创造新的调试模式的想象空间。本文将研究Java语言中的动
阅读全文
摘要:本文转载自动态代理方案性能对比 导语 因服务框架需要用动态代理生成客户端接口的stub,所以做了一下性能评测, 动态代理工具比较成熟的产品有: JDK自带的,ASM,CGLIB(基于ASM包装),JAVAASSIST, 使用的版本分别为: JDK-1.6.0_18-b07, ASM-3.3, CGL
阅读全文
摘要:本文转载自javassist 实现动态代理 导语 动态代理是指在运行时动态生成代理类。 常见的动态代理生成方式有: JDK动态代理 Apache BCEL (Byte Code Engineering Library):是Java classworking广泛使用的一种框架,它可以深入到JVM汇编语
阅读全文
摘要:本文转载自JDK源码阅读-FileOutputStream 导语 FileOutputStream用户打开文件并获取输出流。 打开文件 public FileOutputStream(File file, boolean append) throws FileNotFoundException {
阅读全文
摘要:本文转载自JDK源码阅读-FileInputStream 导语 FileIntputStream用于打开一个文件并获取输入流。 打开文件 我们来看看FileIntputStream打开文件时,做了什么操作: public FileInputStream(File file) throws FileN
阅读全文
摘要:本文转载自JDK源码阅读-ByteBuffer 导语 Buffer是Java NIO中对于缓冲区的封装。在Java BIO中,所有的读写API,都是直接使用byte数组作为缓冲区的,简单直接。但是在Java NIO中,缓冲区这一概念变得复杂,可能是对应Java堆中的一块内存,也可能是对应本地内存中的
阅读全文
摘要:本文转载自JDK源码阅读-Reference 导语 Java最初只有普通的强引用,只有对象存在引用,则对象就不会被回收,即使内存不足,也是如此,JVM会爆出OOME,也不会去回收存在引用的对象。 如果只提供强引用,我们就很难写出“这个对象不是很重要,如果内存不足GC回收掉也是可以的”这种语义的代码。
阅读全文
摘要:本文转载自 "ANNOTATION PROCESSING 101" Introduction In this blog entry I would like to explain how to write an annotation processor. So here is my tutorial
阅读全文
摘要:本文转载自 "spring扩展点整理" 背景 Spring的强大和灵活性不用再强调了。而灵活性就是通过一系列的扩展点来实现的,这些扩展点给应用程序提供了参与Spring容器创建的过程,好多定制化的东西都需要扩展点的支持。尤其在使用SpringBoot的过程中。 BeanFactoryPostProc
阅读全文

浙公网安备 33010602011771号