详细
文章平均质量分 84
a_ittle_pan
拥抱开源!
展开
-
JVM运行时内存区系列之堆
起笔今年的五一,大家可能无法领略到“优美逶迤”的山岭和享受“沁人心脾”的山间泉水。但是可以看到博主的“JVM系列的文章”也不算是虚度了五一嘛!(哈哈🎉🎉✨✨✨🎉✨大家五一节快乐!!!)参考书籍:“深入理解java虚拟机”Java堆Java堆是虚拟机所管理的内存中最大的一块,且所有的对象示例以及数组都应当在堆上分配Java堆是所有的线程共享的的一块内存区域,在虚拟机启动的时候创建。此内存区域的唯一目的就是存放对象示例。从垃圾回收的角度上来看,堆又可以细分为“新生代”(新生代中包含Eden区原创 2022-05-01 11:05:42 · 268 阅读 · 13 评论 -
JVM类加载系列之初始化过程
引言一星期一更的节目可能会迟到,但永远不会缺席!!!参考书籍:“深入理解java虚拟机”初始化(Initiallization)初始化阶段,简言之,为类的静态变量赋予正确的初始值。具体描述:类的初始化是类装载的最后一个阶段,如果前面的步骤都没有问题,那么表示类可以顺利装载到系统中。此时,类才会开始执行Java字节码。(即:到了初始化阶段,才真正开始执行类中定义的Java程序代码。)初始化阶段的重要工作是执行类的初始化方法:clinit()方法该方法仅能由Java编译器生成并由JVM调原创 2022-04-25 20:21:38 · 932 阅读 · 11 评论 -
JVM类加载系列之链接过程
起笔经过一个星期的面试,拿了几个offer,碰到了很多的面试官,感觉最好的是“泛微”。然后稍微总结一下面试官都会问的一个重点:javase的熟练程度 (集合、并发…)spring (IOC、AOP)数据库 (主要是索引和事务)redis(需要比较熟练)jvm(这块有些公司不会问很深入)上面的总结是我个人的一个面试过程总结,不适合所有人,毕竟每个人面试的公司不同,碰到的面试官不同,那么侧重点肯定就会不同(跟部门有关)上面中的几个重点内容中,我个人对于redis的内容是了解不够深入的,所以原创 2022-04-17 11:30:44 · 706 阅读 · 2 评论 -
Spring系列之AOP工作过程详解二
引言还是一星期一更的经典栏目,如约而至上回我们说到了AOP的xml解析过程,今天这篇文章,我们来讲解“代理子类生成”入口代理子类的生成的核心类AspectJAwareAdvisorAutoProxyCreator,这个类是在解析“proxy-target-class”这个属性的时候进行注册,也就是ConfigBeanDefinitionParser的configureAutoProxyCreator方法中注册:public static void registerAspectJAutoProxy原创 2022-04-05 22:21:51 · 1067 阅读 · 0 评论 -
通过Dump文件分析OOM产生的原因
起笔:文章的源起在于本人想向道哥(导演)拿一份公司Dump文件。问题描述本地模拟可能产生OOM的几十种不同的方法(自由发挥),然后通过类随机去调用方法,通过Dump文件分析是哪个方法导致程序的OOM代码实现:代码分析工具:Jprofile(mac版本) 提取码:vvwn 过程:第一步 :设置jvm参数-Xmx20m -Xms20m -XX:+HeapDumpOnOutOfMemoryError第二步:启动程序,生成Dump文件public static void main(原创 2022-03-26 21:09:27 · 1868 阅读 · 0 评论 -
Spring系列之AOP工作过程详解一
引言spring的IOC系列已经正式完结了,这一个星期一直在想着接下来更新什么系列,想了想,面试里面不就是IOC和AOP考的最多吗?那么就索性接下来开始更新AOP系列的文章,就非常的河狸aop:configaop部分的解析器由AopNamespaceHandler注册,其init方法:@Overridepublic void init() { registerBeanDefinitionParser("config", new ConfigBeanDefinitionParser());原创 2022-03-26 18:15:18 · 1003 阅读 · 2 评论 -
Spring系列之IOC容器初始化过程十
refresh中的destroyBeans、cancelRefresh方法没错,我又更新spring系列的文章了,IOC系列文章到这篇文章就结束了。接下来会开始新的系列,有可能是多个系列同时更新,希望大家可以关注之后博主的动态。destroyBeans用于销毁此上下文管理的所有 bean 的模板方法。默认实现在此上下文中销毁所有缓存的单例,调用DisposableBean.destroy()和/或指定的“destroy-method”。可以重写以在标准单例销毁之前或之后添加特定于上下文的 bea原创 2022-03-20 17:08:35 · 639 阅读 · 2 评论 -
Spring系列之IOC容器的初始化过程九
refresh方法中的finishRefresh方法闲话先不聊,咱们直接开始今天的主题,今天我们讲解的是refresh方法中的finishRefresh方法finishRefresh发布相应事件完成此上下文的刷新,调用 LifecycleProcessor 的 onRefresh() 方法并发布ContextRefreshedEventprotected void finishRefresh() { // Initialize lifecycle processor for this c原创 2022-03-19 17:19:14 · 228 阅读 · 0 评论 -
Spring系列之IOC容器初始化八
refresh方法中的finishBeanFactoryInitialization方法一星期一更的springIOC容器博文还是如期而至,随着Spring系列的不断更新,不知不觉已经三个月了,IOC容器初始化理解博文已经快到结尾的阶段。写SpringIOC容器系列的文章的初衷是为了加深自己对SpringIOC的理解同时也是对SpringIOC容器内容的笔记,但随着自己文章的更新,我发现自己已经慢慢地爱上了写博文!!!意气风发的时候更需要注意“谦卑”finishBeanFactoryInitia原创 2022-03-13 17:50:53 · 1556 阅读 · 0 评论 -
Spring系列之IOC容器实例化过程七
refresh方法中的initApplicationEventMulticaster、onRefresh、registerListeners一个星期过去了,开心周末到来,又到了我们最喜欢的spring的解析环节,今天我们主要讲解三个方法,内容不会很多,请放心食用。initApplicationEventMulticaster方法作用: 为spring初始化事件多播器贴上代码:protected void initApplicationEventMulticaster() { Config原创 2022-03-06 11:29:18 · 340 阅读 · 0 评论 -
spring系列之IOC容器实例化过程五
refresh中的postProcessBeanFactory和invokeBeanFactoryPostProcessors废话不多说,直接开始主题,今天我们讲解refresh的postProcessBeanFactory和invokeBeanFactoryPostProcessors方法。老规矩,贴上代码:@Override public void refresh() throws BeansException, IllegalStateException { synchronized (原创 2022-02-19 20:24:07 · 658 阅读 · 0 评论 -
spring系列之IOC容器实例化过程四
fresh中的prepareBeanFactory方法很好,过年期间订下的计划没有完成,我知道我有罪,但是过年这段期间是真的好好玩!!。我觉得好好玩个几天应该也不过分,哈哈哈!!最后希望看到这篇博客的小伙伴可以点点赞,编写不易。prepareBeanFactory方法负责对BeanFactory进行一些特征的设置工作,"特征"包含这么几个方面:BeanExpressionResolverPropertyEditorRegistrar环境注入依赖解析忽略bean伪装LoadTimeWeav原创 2022-02-12 15:53:43 · 626 阅读 · 0 评论 -
spring系列之IOC容器实例化过程三
refresh方法中的obtainFreshBeanFactory方法文章开始之前先啰嗦几句,写spring系列的文章的时候是想着每个星期更新一篇文章,但是上篇文章到现在这篇文章已经过了差不多两个星期,跟自己开始的预期偏离的有点远了,心里还是有点不是那么不得意的,所以趁着春节期间,我争取每天一篇将spring系列全部发完。希望各位看完能点点赞回到正题,上回我们说到refresh的prepareRefresh方法,今天我们来说obtainFreshBeanFactory这个方法。先贴上refresh方法原创 2022-01-30 14:40:19 · 1792 阅读 · 0 评论 -
spring系列之IOC容器实例化过程二
SpringIOC容器Bean的实例化过程书接上回,在SpringIOC容器的实例化过程中,AbstractApplicationContext中有一个非常重要的方法refresh(),spring创造者采用了模板方法设计模式去设计这个方法,IOC主要功能逻辑都在这个方法中实现,如果不知道模板方法模式的可以去看看博主的23种设计模式详解 ,也就是因为这种设计模式的关系,这个方法中相关的逻辑实现会比较复杂,为了更加细致的讲解Spring因此我会每篇文章讲解一部分。 public void refresh原创 2022-01-03 15:42:42 · 749 阅读 · 0 评论 -
Spring系列之IOC容器的实例化过程一
IOC容器初始化过程上一篇文章我们讲解了spring容器中IOC的容器结构,IOC容器总共有:1.ResourceLoader(资源加载组件)2.Resource(资源描述组件)3.BeanDefinitionReader(bean构建组件)4.BeanDefinition(元数据组件)5.BeanRegister(Bean注册组件)6.BeanFactory(bean容器组件)他们在spring的源码的初始化过程是怎么的呢?在这一节,我们通过查看、分析Spring源码进一步的去理解SpringIOC原创 2021-12-26 15:11:13 · 879 阅读 · 0 评论 -
spring系列之IOC容器结构
IOC容器结构IOC(控制反转): 传统javaSE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象,而Ioc是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建。大家都知道spring的核心组件分别是IOC和AOP等,其中IOC是目前开发中用的最多也最熟悉的,那么spring是怎么实现IOC组件功能的呢?我们先从IOC容器的结构出发深入浅出的讲解Spring的IOC组件,由于Spring中的IOC功能实属很强大, 我会将这个作为一个系列去讲解Spring的IO原创 2021-12-19 19:57:14 · 1119 阅读 · 1 评论 -
一篇文章让你明白Protobuf
1.protobufprotocal buffers是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。protocal buffers是有一种灵活,高效,自动化机制的结构数据序列化方法-可类比xml,但是xml更小(3-10倍)、更快(20-100倍)、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。简单来讲, ProtoBuf原创 2021-11-16 10:17:43 · 1367 阅读 · 0 评论 -
SPI服务详解!!!
数据库链接过程1.数据库连接的过程2.classpath3.类加载机制4.SPI机制1.数据库连接的过程在java开发中,数据库连接时必不可少的一个过程,那么数据库的链接过程大体可分为如下几个步骤:1.数据库URL在链接数据库使用各种与数据库类型相关的参数,例如主机名、端口号和数据库名。JDBC URL的一般语法为:jdbc:subprotocol:other stuff其中,subprotocol用于选择链接到数据库的具体驱动程序。other stuff参数的格式随所使用的subprot原创 2021-10-21 15:25:57 · 815 阅读 · 0 评论 -
springboot中的自动装箱原理
引言:大家在使用springboot的时候不得不感叹它的功能强大和方便,但是作为一个合格的程序员,单纯只是去使用框架是远远不够的!我们知道,Spring Boot 项目创建完成后,即使不进行任何的配置,也能够顺利地运行,这都要归功于 Spring Boot 的自动化配置。Spring Boot 默认使用 application.properties 或 application.yml 作为其全局配置文件,我们可以在该配置文件中对各种自动配置属性(server.port、logging.level.原创 2021-09-26 21:10:57 · 790 阅读 · 0 评论 -
详解springMVC原理!--源码级别
SpringMVC详解对于SpringMVC的一些基本概念和基本使用我不在这篇文章中赘述,本文章只探讨它的原理。先上一张SpringMVC的架构图:在SpringMVC中工作的主要组件有DispatchServlet、HandlerMapping、HandlerAdapter、Handler、ViewResolver、View 6个组件(还有其他的组件,这里不做过多描述)。下面对这六个组件进行一个详细的说明。DispatchServlet--------------前端控制器为什么叫他前端控原创 2021-09-04 15:20:58 · 144 阅读 · 0 评论 -
一篇文章彻底弄懂类加载--源码级别讲解!!!!!!
在看文章之前,需要大家理解java程序、.java、.class、类加载器之间的关系。我这里通过一张图将我所理解的他们之间的关系画一下,如果有哪里错误的地方,大家可以指出来!JVM是什么?在上面所画的图中,我们基本能够了解到,我们的java程序的运行是通过一系列的class文件所支持的。而且一个程序的开发中,程序的运行都是由jvm所实现的,但是jvm是由sun公司所开发的,我们无法去修改其内部实现,除非你自己写一个jvm,但是一般人不会去干这事,因此,我们就需要去了解jvm的相关运行原理。jv.原创 2021-08-18 21:17:03 · 609 阅读 · 0 评论 -
23种设计模式详解
目标:基本掌握23种设计模式的基本概念并能够写出相应的例子内容:学习内容1.设计模式的概念解释2.画出设计模式的类图3.举例说明计划:推荐:1、 每天一个设计模式的学习2、 隔一天就进行一个模式的复习3、 顺利敲出相关设计模式的案例设计模式重点:设计模式是一种思想,它的形式是多变的,主要掌握他的设计思想设计模式的七个原则:单一职责、接口隔离、依赖倒转、开闭原则、里式替换、迪米特法则、合成复用原则。设计模式分为三种类型,共23种*创建型模式:单例模式、抽象工厂模式原创 2021-07-06 14:57:24 · 1195 阅读 · 0 评论