<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dcxmaozi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dcxmaozi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dcxmaozi]]></copyright><item><title><![CDATA[java 垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/106497752</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/106497752</guid><author>dcxmaozi</author><pubDate>Tue, 02 Jun 2020 15:55:15 +0800</pubDate><description><![CDATA[怎样判断是对象否为垃圾？

引用计数法

引用计数法是为对象添加一个引用计数器，然后用一块额外的内存区域来存储每个对象被引用的次数。 当对象每有一个地方引用它时，那我们对该对象的引用计数就会加1，反之每有一个引用失效时，我们对该对象的引用计数就会减1。 当对象的被引用次数为0时，那么我们可以认为这个对象是不会被再次使用了，通过这种方式我们能快速直观的定位到这些已死的对象，从而进行清理。



引用计数法的缺陷

需要额外的空间记录对象的引用次数，并且需要动态的维护这个统计数。

无法解决循环引用的问题，当两]]></description><category></category></item><item><title><![CDATA[创建对象过程]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/106357585</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/106357585</guid><author>dcxmaozi</author><pubDate>Tue, 26 May 2020 15:51:40 +0800</pubDate><description><![CDATA[首先看下类的生命周期 ：





对象的创建其实包含了初始化和实例化两个阶段，我们在使用一个对象时，JVM首先会检查相关类型是否已经加载并初始化，如果没有，则JVM立即进行加载并调用类构造器完成类的初始化。在类初始化过程中或初始化完毕后，根据具体情况才会去对类进行实例化。

实例化时候，java虚拟机就会为其分配内存来存放自己及其从父类继承过来的实例变量。在为这些实例变量分配内存的同时，这些实例变量先会被赋予默认值(零值)。在内存分配完成之后，Java虚拟机才会对新创建的对象赋予我们程序员给定的值

创.]]></description><category></category></item><item><title><![CDATA[jvm 总结]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/106220141</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/106220141</guid><author>dcxmaozi</author><pubDate>Tue, 19 May 2020 18:08:07 +0800</pubDate><description><![CDATA[一、JVM 内存区域

Java虚拟机在运行时，会把内存空间分为若干个区域，根据《Java虚拟机规范（Java SE 7 版）》的规定，Java虚拟机所管理的内存区域分为如下部分：方法区、堆内存、虚拟机栈、本地方法栈、程序计数器。





1、方法区

方法区主要用于存储虚拟机加载的类信息、常量、静态变量，以及编译器编译后的代码等数据。在jdk1.7及其之前，方法区是堆的一个“逻辑部分”（一片连续的堆空间），但为了与堆做区分，方法区还有个名字叫“非堆”，也有人用“永久代”（HotSpot对方法区的...]]></description><category></category></item><item><title><![CDATA[阿里巴巴 easyExcel 遇到的问题]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/105972999</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/105972999</guid><author>dcxmaozi</author><pubDate>Thu, 07 May 2020 15:07:13 +0800</pubDate><description><![CDATA[1、easyExcel pom文件中的 POI 的版本要和 easyExcel 中的POI版本一致



2、异常信息


com.alibaba.excel.exception.ExcelGenerateException: Can not close IO.

	at com.alibaba.excel.context.WriteContextImpl.finish(WriteCont...]]></description><category></category></item><item><title><![CDATA[springMVC 简单实现]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/103878720</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/103878720</guid><author>dcxmaozi</author><pubDate>Tue, 07 Jan 2020 17:31:59 +0800</pubDate><description><![CDATA[在Spring MVC中，将一个普通的java类标注上Controller注解之后，再将类中的方法使用RequestMapping注解标注，那么这个普通的java类就够处理Web请求，示例代码如下：


/**
 2  * 使用Controller注解标注LoginUI类
 3  */
/**
 * 使用Controller注解标注LoginUI类
 */
@Controller
pu...]]></description><category></category></item><item><title><![CDATA[自己动手实现springMVC框架]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/103584421</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/103584421</guid><author>dcxmaozi</author><pubDate>Tue, 17 Dec 2019 17:45:23 +0800</pubDate><description><![CDATA[首先，SpringMVC简单来说就是一个前端控制器，通过RequestMapping和Controller注解去完成一个控制层的编写，再和我们的DAO层和Service层进行交互完成页面的展示和数据的持久化

首先说一下SpringMVC的运行流程

向服务器发送HTTP请求，请求被前端控制器 DispatcherServlet 捕获。
DispatcherServlet 根据 &lt;servl...]]></description><category></category></item><item><title><![CDATA[spring 源码分析 - 3]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/103366446</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/103366446</guid><author>dcxmaozi</author><pubDate>Tue, 03 Dec 2019 14:52:41 +0800</pubDate><description><![CDATA[1、测试主类入口

AnnotationConfigApplicationContext可以实现基于Java的配置类（包括各种注解）加载Spring的应用上下文。避免使用application.xml进行配置。相比XML配置，更加便捷。


public class Test {
    public static void main(String[] args) {
        Annot...]]></description><category></category></item><item><title><![CDATA[spring 源码分析-2]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/103257311</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/103257311</guid><author>dcxmaozi</author><pubDate>Tue, 26 Nov 2019 15:28:19 +0800</pubDate><description><![CDATA[spring源码解析和时序图



下载源码、安装

Spring5源码下载

第一步：https://github.com/spring-projects/spring-framework/archive/v5.0.2.RELEASE.zip

第二步：下载gradle

http://downloads.gradle.org/distributions/gradle-1.6-bin.z...]]></description><category></category></item><item><title><![CDATA[spring 源码分析 学习总结]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/103142384</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/103142384</guid><author>dcxmaozi</author><pubDate>Tue, 19 Nov 2019 15:35:07 +0800</pubDate><description><![CDATA[spring源码解析和时序图

IOC容器创建主要分为创建容器、 bean的扫描、容器初始化、获取bean、创建bean几个步骤，下面以AnnotationConfigApplicationContext（）容器初始化为入口解析整个IOC容器创建的过程。



1、创建容器

容器创建测试代码入口


   public static void main(String[] args) {
  ...]]></description><category></category></item><item><title><![CDATA[spring学习总结]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/103028868</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/103028868</guid><author>dcxmaozi</author><pubDate>Tue, 12 Nov 2019 15:23:31 +0800</pubDate><description><![CDATA[BeanFactory:

1:负责生产和管理bean的一个工厂。

2：事IOC容器的核心接口，它的职责包括：实例化、定位、配置应用程序中的对象及建立这些对象的依赖。

3：多种实现：如DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等，其中XmlBeanFactory就是常用的一个，该实现将以XML方式描述组成应用的对象...]]></description><category></category></item><item><title><![CDATA[spring ioc 学习总结]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/102914528</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/102914528</guid><author>dcxmaozi</author><pubDate>Tue, 05 Nov 2019 14:25:18 +0800</pubDate><description><![CDATA[IOC(inversion of control)，其意思是反转控制，起源程序员的春天spring中的概念。 那么什么是反转控制呢，我们的对象创建都交给IOC了，程序员从我们平常代码中大量的new代码解脱出来，消除了大量冗余的代码。

自己的理解：

没有IOC之前我们要做饭的话需要自己每天去菜市场买菜、用了IOC之后呢 我们只需要告诉菜贩子今天要吃什么菜，然后菜贩子把菜准备好送上门； 然而IOC...]]></description><category></category></item><item><title><![CDATA[dubbo配置zk 学习总结]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/102682631</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/102682631</guid><author>dcxmaozi</author><pubDate>Tue, 22 Oct 2019 14:59:56 +0800</pubDate><description><![CDATA[1.上传zk安装包

2.解压

3.配置（先在一台节点上配置）

  3.1添加一个zoo.cfg配置文件

  $ZOOKEEPER/conf

  mv zoo_sample.cfg zoo.cfg

  3.2修改配置文件（zoo.cfg）

    dataDir=/itcast/zookeeper-3.4.5/data

    server.1=itc...]]></description><category></category></item><item><title><![CDATA[dubbo总结]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/102572069</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/102572069</guid><author>dcxmaozi</author><pubDate>Tue, 15 Oct 2019 18:10:04 +0800</pubDate><description><![CDATA[　　1.首先文件结构是这样的









就是一个父模块中有三个子模块







这就是父模块中的所有依赖内容









首先会抽出一个模块放所有bean和所有接口











然后是服务提供者

　　pom依赖文件中首先要把接口和bean模块加入进来









　　这样我们就可以直接实现interface中的接口和bean ...]]></description><category></category></item><item><title><![CDATA[Zookeeper]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/100704509</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/100704509</guid><author>dcxmaozi</author><pubDate>Tue, 10 Sep 2019 16:58:55 +0800</pubDate><description><![CDATA[Zookeeper基本概念：

Zookeeper 作为 Hadoop 项目中的一个子项目，是 Hadoop 集群管理的一个必不可少的模块，它主要用来控制集群中的数据，如它管理Hadoop 集群中的 NameNode，还有 Hbase 中 Master Election、Server 之间状态同步等

Zookeepr其实主要提供了两个重要的机制

（1）文件系统



（2）通知机制。客户端...]]></description><category></category></item><item><title><![CDATA[装饰者模式总结]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/100518423</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/100518423</guid><author>dcxmaozi</author><pubDate>Tue, 03 Sep 2019 15:06:53 +0800</pubDate><description><![CDATA[装饰者模式（DecoratorPattern）、顾名思义。是用Decorator去装饰Component、因为实现了同一接口或者抽象类、Decorator同样可以装饰Decorator！通过这种模式我们也可以看出一个设计模式的设计原则下面通过对实际问题的分析来了解这种模式；

对与星巴克咖啡我们都不会陌生、当然这里不会介绍他的编年史什么什么的、只是对其出售的咖啡的一种销售策略的价格做一下...]]></description><category></category></item><item><title><![CDATA[观察者模式]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/100099966</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/100099966</guid><author>dcxmaozi</author><pubDate>Tue, 27 Aug 2019 15:19:50 +0800</pubDate><description><![CDATA[观察者模式，又可以称之为发布-订阅模式，观察者，顾名思义，就是一个监听者，类似监听器的存在，一旦被观察/监听的目标发生的情况，就会被监听者发现，这么想来目标发生情况到观察者知道情况，其实是由目标将情况发送到观察者的。

　　观察者模式多用于实现订阅功能的场景，例如微博的订阅，当我们订阅了某个人的微博账号，当这个人发布了新的消息，就会通知我们。

　　现在我们举一个类似的情况，并使用代码来实现，为大...]]></description><category></category></item><item><title><![CDATA[动态代理总结]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/99852198</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/99852198</guid><author>dcxmaozi</author><pubDate>Tue, 20 Aug 2019 15:50:25 +0800</pubDate><description><![CDATA[代理模式是Java中常见的一种模式，英文名字叫走Proxy或者Surrogate，代理的本意是一个人代表另一个人，或者一个机构代表另一个机构，采取行动，因而，代理和现实生活中的中介有很大的类似，你买房子、卖房子，可以自己去操作，但是需要了解和买卖房产无关的细节，如契税等，而找一个中介，则不用关心这些与买卖房产无直接关系的中间细节，只关心业务本身。

静态代理：

具体用户管理实现类


pu...]]></description><category></category></item><item><title><![CDATA[mysql架构总结]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/98612145</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/98612145</guid><author>dcxmaozi</author><pubDate>Tue, 06 Aug 2019 14:35:42 +0800</pubDate><description><![CDATA[mysql 总体架构分为：

连接层：客户端(Client Connection)、系统管理(Services)、连接池管理（Connection pool）。

连接层是一些客户端和连接服务，包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念，为通过认证安全接入的客户端提供线程。同样...]]></description><category></category></item><item><title><![CDATA[mysql  mvcc理解]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/97800025</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/97800025</guid><author>dcxmaozi</author><pubDate>Tue, 30 Jul 2019 17:19:39 +0800</pubDate><description><![CDATA[在Mysql中MVCC是在Innodb存储引擎中得到支持的，Innodb为每行记录都实现了三个隐藏字段：

6字节的事务ID（DB_TRX_ID）
7字节的回滚指针（DB_ROLL_PTR）
隐藏的ID
6字节的事物ID用来标识该行所述的事务，7字节的回滚指针需要了解下Innodb的事务模型。

1. Innodb的事务相关概念
为了支持事务，Innbodb引入了下面几个概念：
red...]]></description><category></category></item><item><title><![CDATA[数据库锁机制]]></title><link>https://blog.youkuaiyun.com/dcxmaozi/article/details/97007574</link><guid>https://blog.youkuaiyun.com/dcxmaozi/article/details/97007574</guid><author>dcxmaozi</author><pubDate>Tue, 23 Jul 2019 16:43:32 +0800</pubDate><description><![CDATA[每个数据库几乎都会实现自己的锁机制，锁机制是数据库区别于文件系统的主要标志之一，用于管理对共享资源的并发访问。

Mysql数据库InnoDB引擎支持行级锁，也就是说我们可以对表中某些行数据执行锁定操作，锁定操作的影响是：如果一个事物对表中某行执行了锁定操作，而另一个事务也需要对同样的行执行锁定操作，这样第二个事务的锁定操作有可能被阻塞，一旦被阻塞第二个事务只能等到第一个事务执行完毕（提交或回滚）...]]></description><category></category></item></channel></rss>