保存成功
订阅成功
保存失败,请重试
提交成功
CSDM

CSDM

技术经理、架构师
擅长JVM优化、数据库优化、架构设计...更多
创作文章2

Spring 源码分析(AOP 篇)CGLIB 及“JDK 动态代理”原理分析

很多开发工程师都想阅读 Spring 源码,可能大多数人和我一样,从阅读到很快放弃。究其原因: 1. 方法不对; 2. 自己阅读源码太耗时间; 笔者在阅读源码的过程中查看了市面上几乎所有的视频和书籍资料,个人感觉这些资料都看起来对耐心是个巨大的挑战,甚至“没法看”(个人观点)。 在实际的开发过程中使用到的 Spring 的功能遵循 28 法则,大部分的开发人员对 Spring 的很多功能不了解,这就导致在看 Spring 源码过程不知所云。所以本专栏会以“应用代码”先行,然后剖析其源码,接着画图总结其原理。最终形成整个框架的运行原理图,在工作中深入源码解决问题,HOLD 住全场。 所以根据笔者阅读源码的痛苦经历及阅读心得,准备写一系列的 Spring 源码解析的文章,避开我阅读的坑,节约源码阅读的时间,在脑海中快速建立 SpringFramework 的整体知识框架。准备讲源码分析分为 3 个大篇幅(见下文),每篇包括若干篇文章。 本文就是“AOP 篇”中的《CGLIB 及“JDK 动态代理”原理分析》。先写这篇文章,主要是因为这个主题相对独立,先看大家的订阅及反馈,决定是否写余下的内容。 - Spring 源码分析(IOC )- N 篇文章 - Spring 源码分析(AOP)- N 篇文章 - Spring 源码分析(事务)- N 篇文章 你将在本 Chat 中收获: 1. 设计模式-代理模式 2. 不使用“JDK 动态代理”和 CGLIB 存在的问题 3. JDK 动态代理和 CGLIB 底层原理 4. SpringFramework 如何选择“JDK 动态代理”和 CGLIB 适合人群: 具有 Java 基本知识,有一定 Spring 使用经验
106 订阅

深入 JVM 字节码,一步一图解析类的加载、链接、初始化、创建对象、程序执行的流程

很多工程师在学习 Java 虚拟机的时候,觉得很抽象,和实际的开发工作结合不起来,而且学完就忘。主要原因是:在脑海中没有建立一张程序执行流程图,不了解这些虚拟机为什么这么设计?规则的实现原理是什么?Java 程序执行时栈、堆、方法区里都是什么样的状态? 在本 Chat 中,会用“Java 程序 + 画图 + 字节码 + 字节码的 Java 伪代码”的形式学习如下内容: 1. 简单图解堆、栈、栈帧、方法区 2. 一步一图解析一个最简单的程序的整体流程。在这里,初步熟悉类的加载、链接、初始化、创建对象、程序执行的流程。为后面的面试题做好知识储备。 3. 使用一个相对复杂的面试题,一步一图解析程序中类的加载、链接、初始化过程,方法区是什么状态。在这里,你会对程序执行过程中 JVM 中各个部件的状态了然于胸 4. JVM 参数调优思路,了解这些思路,后续的调优工作和 JVM 面试你将不会无话可说 5. 最后会给出一些 JVM 面试题,面试题并非网上烂大街的面试题,而是:“说说你们先上 JVM 的参数是如何设置的?”,“你们线上出现过 OOM 么?如何排查?”等等,我们会给出回答问题的思路,让你在面试中脱颖而出!! 备注: 为了照顾到字节码不熟悉的同学,在给出字节码的同时,我会把字节码翻译成大家能看懂的 Java 伪代码,所以大家不必担心。 你将收获: 1. 精通类加载及程序执行的过程,以及执行过程中虚拟机各个部件的状态。 2. 深入字节码层面了解 JVM 规则的底层原理 3. 实战干货面试题 相信你看完本 Chat,绝对可以干翻 90% 以上的 Java 程序猿!! 适合人群: 具有 Java 的基本知识,对虚拟机的堆、栈等部件有基本概念的同学
Java
341 订阅
微信扫描登录