自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 RateLimiter源码解析

RateLimiter源码解析

2023-07-01 16:55:43 1250

原创 Java中的即时编译器

这周学习了关于java即时编译器的内容,发现了不少虚拟机的秘密,整理出来分享给大家。本篇内容主要是参考了《深入理解Java虚拟机》第11章,整理了其中的核心内容,想看书了解即时编译器的也可(书下载链接:https://pan.baidu.com/s/16wy7PZlXlg38QYtfRb9l2g 提取码:9c31 )。本篇文章将会从以下几个方面讲解java即时编译器:概述为什么HotSpot采用解释器和编译器并存的运行架构?HotSpot中的分层编译工作模式即时编译的触发条件编译器优化技术

2021-03-05 19:49:18 718

原创 远程方法调用(RMI)的实现

远程方法调用RMI(Remote Method Invocation),指的是运行在一个Java虚拟机中的对象调用另一个虚拟机上对象的方法,可通过Java RMI实现,Java RMI是分布式应用系统的百分之百纯Java解决方案。1 通过反射机制简单实现在分析Java RMI之前,我们先自己做一个简单的实现,其中利用了反射机制。这个例子很常见,来自于孙卫琴老师的《JAVA网络编程精解》第10章(书籍下载链接:https://pan.baidu.com/s/1DgrLoIbHNXi7v9x0vE8iVQ

2021-02-27 21:41:46 591 2

原创 动态代理最全详解系列[5]-Cglib动态代理源码分析

上一篇我们对Cglib动态代理进行了代码测试,这一篇文章我们看下Cglib实现动态代理的原理,其实分析动态代理弄懂两件事就行:代理类怎么生成的、代理类方法如何调用的被代理类方法。1 代理类的生成首先代理类对象是调用enhancer.create()生成的,其中会调用super.create()。public class Enhancer extends AbstractClassGenerator { public Object create(Class[] argumentTypes, O

2021-02-25 21:17:13 431 1

原创 动态代理最全详解系列[4]-Cglib介绍及动态代理实现

  本篇我们介绍一下Cglib是如何实现动态代理的。Cglib是什么?Cglib是一个强大的代码生成包,广泛地被许多AOP框架使用,用来提供方法的拦截,下图展示了Cglib和一些语言、框架的关系:根据图总结一下:(1)最底层是字节码,Java中就是.class文件;(2)字节码上面是ASM,一种可以直接操作字节码的框架;(3)ASM上面是CGLIB、Groovy、BeanShell,后两个是脚本语言非Java体系中的内容,它们都通过ASM来操作字节码;(4)再往上就是我们比较熟悉的Hiber

2021-02-22 17:21:50 257

原创 动态代理最全详解系列[3]-ProxyGenerator生成代理类的字节码文件源码分析

在之前的生成代理类的源码分析中,我们会看到调用ProxyGenerator.generateProxyClass()生成代理类的字节码文件,下面我们到ProxyGenerator中看看,代理类的字节码到底是怎么生成的。/***ProxyGenerator中的一些字段*///代理类全限定名private String className;//代理类要实现的接口private Class<?>[] interfaces;//代理类访问标志private int accessFlag

2021-02-22 17:19:09 1357 3

原创 动态代理最全详解系列[2]-Proxy生成代理类对象源码分析

  之前我们通过JDK中的Proxy实现了动态代理,Proxy用起来是比较简便的,但理解起来不是那么清晰,是因为我们并没有看见代理类是怎么生成的,代理类怎么调用的被代理类方法,所以下面我们进入源码看一下。源码分析首先进入创建代理对象的方法Proxy.newProxyInstance()中:@CallerSensitivepublic static Object newProxyInstance(ClassLoader loader,

2021-02-22 17:17:49 754 4

原创 动态代理最全详解系列[1]-综述及Proxy实现

为什么引入动态代理?通过之前分析静态代理可以看到,由于代理类与接口绑定了,所以每个接口要分别实现代理类,然后对每个被代理对象(接口的实现类的对象)生成代理对象。所以静态代理有这样的缺点:1.所有接口的代理类都需要手动去实现;2.所有切点添加同一操作的话,如日志打印,需要为每个切点分别添加;所以需要引入动态代理,动态代理可以根据接口和被代理对象动态地生成代理对象。动态代理的应用场景Spring AOP就是基于动态代理实现的,所以说动态代理是实现Spring框架的关键。如何实现动态代理?动

2021-02-21 22:44:51 235 4

原创 设计模式之代理模式

代理模式简介代理模式是常用的一种设计模式,我们需要知道这几点:(1)代理类和被代理类之间有关联关系,一个代理对象与一个被代理对象关联;(2)代理对象本身并不真正实现服务,而是去调用被代理对象的服务;(3)使用者通过调用代理对象间接地使用被代理对象的服务;(4)代理类主要负责在调用被代理对象服务之前或之后进行一些预处理或事后消息处理,如打印日志、安全检查等;代理模式使用场景代理模式的使用场景:(1)想要隐藏某个类时;(2)想要扩展类的功能时;代理模式分为静态代理和动态代理,下面我们看下

2021-02-21 22:43:27 183 5

原创 Java反射机制详解

  Java1.1中引入反射(Reflection),被视为动态语言的关键,反射机制允许程序在运行期通过ReflectionAPI获取任何类的内部信息,并能操作任何对象的属性及方法。反射机制原理反射的实现是借助于Class类,在Java中“万物皆对象”,类也不例外,类自身也是对象,每个类都是Class类的对象。当某个类被加载后,在方法区中就会创建一个代表该类的Class类对象,该对象保存有该类的所有信息,作为访问该类的入口。所以在运行期间,想用发射获取某个类的信息的话,首先JVM检查该类是否已被

2021-02-21 22:41:13 254 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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