<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[VolcanoWec的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/VolcanoWec</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; VolcanoWec]]></copyright><item><title><![CDATA[学习总结与分享-JVM垃圾回收机制与算法]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/106646977</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/106646977</guid><author>VolcanoWec</author><pubDate>Tue, 09 Jun 2020 17:25:35 +0800</pubDate><description><![CDATA[垃圾的判断与算法：
引用计数法：
给对象中添加一个引用计数器，每当它被引用到一个地方时，计数器值就+1,；当引用失效时，计数器值就-1；任何时刻计数器为0的对象就是不可能在被使用。
1)、优点
判定效率很高
(2)、缺点
不会完全准确，因为如果出现两个对象相互引用的问题就不行了。
可达性分析法：
该方法的基本思想是通过一系列的“GC Roots”对象（局部变量，栈等）作为起点进行搜索，如果在“GC Roots”和一个对象之间没有可达路径，则称该对象是不可达的，不过要注意的是被判定为不可达的对象不一定就会成为]]></description><category></category></item><item><title><![CDATA[学习总结与分享-JVM对象的创建过程]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/106344244</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/106344244</guid><author>VolcanoWec</author><pubDate>Mon, 25 May 2020 22:52:40 +0800</pubDate><description><![CDATA[当虚拟机遇到一条new指令时，首先将去检查这个指令的参数能否在常量池中定位到一个类的符号引用，并且检查这个符号引用代表的类是否已经被加载，解析和初始化过，如果没有，那必须先执行相应的类的加载过程。
　　在类加载检查通过后，接下来虚拟机将为新生对象分配内存，对象的大小在类加载完毕之后就可以确认，从物理上来讲就是从堆中分配与新生对象大小相等的内存区域来存放新生对象。
　　分配完成后，虚拟机需要将分配到的内存看空间初始化为零值（除了对象头之外）。这一步保证了对象的实例字段在代码中可以不赋值就直接使用。
将对象的信]]></description><category></category></item><item><title><![CDATA[学习总结与分享-JVM虚拟机类加载过程]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/106213570</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/106213570</guid><author>VolcanoWec</author><pubDate>Tue, 19 May 2020 14:20:31 +0800</pubDate><description><![CDATA[一、什么是类的加载

java文件通过编译器变成了.class文件，接下来类加载器又将这些.class文件加载到JVM中。其中类装载器的作用其实就是类的加载。
二、类加载的过程
类从被加载到虚拟机内存中开始，到卸载出内存为止，它的整个生命周期包括：加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们的顺序如下图所示：

中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中，加载、验证、准备和初始化这四个阶段发生的顺序是确定的，而解析阶段则不一定，它在某些情况下可以在初始化阶段之后开]]></description><category></category></item><item><title><![CDATA[学习总结与分享-Spring AOP基础学习]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/103968253</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/103968253</guid><author>VolcanoWec</author><pubDate>Tue, 14 Jan 2020 17:26:26 +0800</pubDate><description><![CDATA[Spring AOP（面向切面编程） 和 Spring IOC（控制反转） 并称为Spring框架的核心，AOP是通过代理的形式动态的为某个或某些方法在不改变原有逻辑的情况下在方法前方法后加入额外的业务。
AOP的基本概念：
AOP（Aspect Oriented Programming）称为面向切面编程，在程序开发中主要用来解决一些系统层面上的问题，比如日志，事务，权限等待，Struts2的拦截...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-手写Spring MVC完善篇]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/103672917</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/103672917</guid><author>VolcanoWec</author><pubDate>Mon, 23 Dec 2019 21:13:43 +0800</pubDate><description><![CDATA[在上章分享中我们完成了基础的构建，已经可以根据url访问到controller并对相应的参数根据参数名匹配完成赋值，将参数信息打印到网页中，下面我们需要根据ModelAndView中的视图信息字符串，跳转到相应的页面中，并把model中相对应的参数信息替换到页面的指定符号。
代码：
@XxxController
@XxxRequestMapping("/user")
public class Us...]]></description><category></category></item><item><title><![CDATA[学习写作与分享-spring mvc基础功能搭建]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/103568597</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/103568597</guid><author>VolcanoWec</author><pubDate>Mon, 16 Dec 2019 19:49:07 +0800</pubDate><description><![CDATA[spring mvc：
Model		（数据）
View		（视图）
Controller	（业务）
最上层是面向用户的视图层，中间一层是业务逻辑层，最下面一层是数据层。
把数据、展示、业务逻辑进行分离，每一层的变化可以不影响其他层，增加程序的可维护性和可扩展性。
请求、响应过程
View–&gt;Controller–&gt;Model–&gt;Controller-View
MVC解决思路
1...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-Spring IOC尝试自实现仿IOC容器]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/103356107</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/103356107</guid><author>VolcanoWec</author><pubDate>Mon, 02 Dec 2019 21:28:54 +0800</pubDate><description><![CDATA[Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。也是几乎所有Java工作者必须要掌握的框架之一，其优秀的设计思想以及其代码实现上的艺术也是我们需要掌握的。要学习Spring，除了在我们的项目中使用之外，也需要对它的源码进行研读，但是Spring的实现涵盖的知识很多，在加上其中的类的数量也是非常的多，在我们阅读源码时可能会在几十个类之间穿插阅读，很有可能一...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-Spring IOC容器源码之扩展知识浅读]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/103250364</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/103250364</guid><author>VolcanoWec</author><pubDate>Tue, 26 Nov 2019 09:40:57 +0800</pubDate><description><![CDATA[Spring 框架提供了几种 PostProcessor接口用于建模对容器或者bean的后置处理器，它们定义了一些方法，这些方法在特定的时机会被调用。通过这种机制，框架自身或者应用开发人员有机会在不侵入容器或者bean核心逻辑的情况下为容器或者bean做针对某些特定方面的定制或者扩展：能力增强，属性设置，内容修改，对象代理，甚至直接替换整个bean。Spring 提供的 PostProcessor...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-Spring IOC容器源码主线流程浅读]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/103125716</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/103125716</guid><author>VolcanoWec</author><pubDate>Tue, 19 Nov 2019 17:36:14 +0800</pubDate><description><![CDATA[spring ioc容器是spring中最重要的知识之一，是使用spring框架的基础，它为我们提供了快速创建对象，快速注入属性，一次配置多处依赖等功能，也为使用spring框架的各种功能提供了基础依赖。
spring ioc容器的创建与生成bean对象至容器中分为注解的方式与xml配置文件的方式两种，其中注解的方式更为方便与灵活，省去了许多配置文件的繁琐与代码量。xml生成bean方式的源码相较...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-Spring IOC容器的常用注解与生命周期]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/103016694</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/103016694</guid><author>VolcanoWec</author><pubDate>Mon, 11 Nov 2019 20:53:07 +0800</pubDate><description><![CDATA[经过上次的学习，已经初步的了解了Spring IOC的简单容器是如何编写的，也大体明白了Spring IOC容器的作用与原理，那么如何才能使用好Spring IOC使其可以为我们正确的生成实体bean，正确的注入属性呢。
Spring 基于xml文件方式生成bean：
我们上次的学习就是通过配置文件的方式自己手写的简单IOC容器，而Spring已经为我们封装好了方法，只需要通过正确的xml配置，就...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-spring篇之IOC（控制反转）浅析]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/102798891</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/102798891</guid><author>VolcanoWec</author><pubDate>Tue, 29 Oct 2019 15:35:57 +0800</pubDate><description><![CDATA[概述
IOC 的作用：
解耦、单例缓存、Bean生命周期管理、父子容器
IOC 工作要经历2个过程：
启动预加载BeanDefination、实例化对象且缓存单例，传统BeanFactory的实现类是懒加载（loadClass时再实例化bean），而web容器实现是预加载（启动和实例化一起进行)。但是BeanDefination都是预加载的。
IOC的作用
1、解耦：
实现了类与类依赖关系的解耦，...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-dubbo的了解与初步使用]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/102563754</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/102563754</guid><author>VolcanoWec</author><pubDate>Tue, 15 Oct 2019 11:24:11 +0800</pubDate><description><![CDATA[什么是dubbo？
Dubbo是Alibaba开源的分布式服务框架，它最大的特点是按照分层的方式来架构，使用这种方式可以使各个层之间解耦合（或者最大限度地松耦合）。
Dubbo是阿里巴巴SOA服务化治理方案的核心框架，致力于提供高性能和透明化的RPC远程服务调用方案，以及SOA服务治理方案。
通俗来讲dubbo是一种服务与服务之间的通信方式，是为了解决分布式架构服务器所产生的一些问题的框架。
什么...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-zookeeper的安装和java下的基础使用]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/100926620</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/100926620</guid><author>VolcanoWec</author><pubDate>Tue, 17 Sep 2019 17:57:07 +0800</pubDate><description><![CDATA[Zookeeper概念：
ZooKeeper是一个分布式的，开放源码的分布式应用程序协调服务，是Google的Chubby一个开源的实现，是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件，提供的功能包括：配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务，将简单易用的接口和性能高效、功能稳定的系统提供给用户。
特点与用途...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-设计模式之装饰者模式浅析]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/100310856</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/100310856</guid><author>VolcanoWec</author><pubDate>Mon, 02 Sep 2019 16:49:39 +0800</pubDate><description><![CDATA[装饰者模式：
装饰者模式也称为包装模式，以透明动态的方式来动态扩展对象的功能，也是继承关系的一种代替方案。若要扩展功能，装饰者提供比继承更有弹性的替代方案。
装饰者模式基础条件(UML类图)：

1、Component是基类。通常是一个抽象类或者一个接口，定义了属性或者方法，方法的实现可以由子类实现或者自己实现。通常不会直接使用该类，而是通过继承该类来实现特定的功能，它约束了整个继承树的行为。比如...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-设计模式之观察者模式]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/100086522</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/100086522</guid><author>VolcanoWec</author><pubDate>Tue, 27 Aug 2019 00:01:38 +0800</pubDate><description><![CDATA[在完成日常业务中，观察者模式也是十分常见的一种模式，当我们需要改变某一个对象的属性时，其依赖的所有对象都需要做相同的相应的变动的时候，这时使用观察者模式就可以使代码更加的独立健壮。
观察者模式
观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系，当一个对象的状态发生改变时，所有依赖于它的对象都得到通知并被自动更新。在观察者模式中，主题是通知的发布者，它发出通知时并不需要知道谁是它的观...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-设计模式之代理模式入门]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/99713071</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/99713071</guid><author>VolcanoWec</author><pubDate>Tue, 20 Aug 2019 15:26:10 +0800</pubDate><description><![CDATA[设计模式
设计模式（Design Pattern）是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
使用设计模式的目的：为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化；设计模式是软件工程的基石脉络，如同大厦的结构一样。（-----摘自百度百科）
人们所熟知的设计模式共有23种，这次要研究的是其中的一种在日常开发中很常见的模式之一，代理模式。...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-MySQL的优化（完结篇）]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/98105697</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/98105697</guid><author>VolcanoWec</author><pubDate>Thu, 01 Aug 2019 21:44:43 +0800</pubDate><description><![CDATA[在日常代码开发中，我们总是要写各种各样的sql语句，一段程序或者说一次客户端与服务端的交互，最能影响执行速度的就是网络的传输和底层数据的存取等。。那么底层数据的存取如果是使用的是磁盘存储的关系型数据库，那么就是依靠sql语句了，所以，一个或者一组sql的执行效率，直接的影响到了程序的执行速度和用户体验，所以我们在编程时，要学会sql的优化，最大化的优化sql的执行时间，这样不仅可以增加执行速度，还...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-MySQL的MVCC（多版本并发控制）浅析]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/97619639</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/97619639</guid><author>VolcanoWec</author><pubDate>Mon, 29 Jul 2019 23:22:57 +0800</pubDate><description><![CDATA[我们在平时编码操作数据库时，通常会有一个事务A读取一行数据，而又有另一个事务B需要写同一条数据，而为了保证事务A在每次读取时保持一致性和原子性，在传统的事务的锁机制下，这肯定是不允许的，事务B需要等待事务A执行结束后才可以执行，而当类似的需求并发过多的时候，就很容易产生锁阻塞、死锁或者事务一直在等待执行过慢导致报错等等情况，所以数据库就使用了MVCC这个概念来解决事务在并发下的效率问题。
什么是M...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-数据库的事务与锁入门]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/96625443</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/96625443</guid><author>VolcanoWec</author><pubDate>Mon, 22 Jul 2019 22:45:01 +0800</pubDate><description><![CDATA[这次的事务和锁研究，主要是MySQL数据库的innodb引擎，说到数据库，就免不了要说事务和锁机制，这是数据库最重要的组成部分。
什么是事务？
事务（Transaction）是并发控制的基本单位。所谓的事务，它是一个操作序列，这些操作要么都执行，要么都不执行，它是一个不可分割的工作单位
数据库事务（简称：事务）是数据库管理系统执行过程中的一个逻辑单位，由一个有限的数据库操作序列构成。（摘自百科）
...]]></description><category></category></item><item><title><![CDATA[学习总结与分享-MySQL数据库索引底层原理入门浅析]]></title><link>https://blog.youkuaiyun.com/VolcanoWec/article/details/95992181</link><guid>https://blog.youkuaiyun.com/VolcanoWec/article/details/95992181</guid><author>VolcanoWec</author><pubDate>Tue, 16 Jul 2019 15:30:35 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;我们在日常中经常操作数据库，mysql数据库是常用的数据库之一，支持多种索引类型，如B+Tree，哈希索引，全文索引等。这次主要研究的就是常用的B+Tree也叫B+树。
什么是B+树？
&nbsp;&nbsp;

...]]></description><category></category></item></channel></rss>