用户您好!请先登录!

分类目录设计模式

《重构》概要

1. 重构概述

1.1 重构的概念(What)

Refactoring

名词:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低修改成本。

动词:使用一系列重构方法,在不改变软件可观察行为的前提下,调整其结构。

1.2 为什么要重构(Why)

改进软件设计

提高代码质量和可读性,使软件系统更易理解和维护

帮助尽早的发现缺陷

提高编程速度

阅读更多

隐藏在Arthas和CAT背后的动态代理技术

了解Spring中AOP的人都知道,其AOP实现原理是基于Java动态代理和CGLIB代理两种方式实现的,其实Java语言中除了上述两种外,还有其它三种实现技术,也是它们支撑着Arthas和CAT的底层核心原理:

  • 静态代理,工程师编辑代理类代码,实现代理模式;在编译期就生成了代理类。
  • 基于 JDK 实现动态代理,通过jdk提供的工具方法Proxy.newProxyInstance动态构建全新的代理类(继承Proxy类,并持有InvocationHandler接口引用 )字节码文件并实例化对象返回。(jdk动态代理是由java内部的反射机制来实例化代理对象,并代理的调用委托类方法)
  • 基于CGlib 动态代理模式 基于继承被代理类生成代理子类,不用实现接口。只需要被代理类是非final 类即可。(cglib动态代理底层是借助asm字节码技术
  • 基于 Aspectj 实现动态代理(修改目标类的字节,织入代理的字节,在程序编译的时候 插入动态代理的字节码,不会生成全新的Class )
  • 基于 instrumentation 实现动态代理(修改目标类的字节码、类装载的时候动态拦截去修改,基于javaagent) -javaagent:spring-instrument-4.3.8.RELEASE.jar (类装载的时候 插入动态代理的字节码,不会生成全新的Class )

阅读更多