<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[kingyxfly的博客]]></title><description><![CDATA[工作中遇到的问题]]></description><link>https://blog.youkuaiyun.com/kingyxfly</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kingyxfly]]></copyright><item><title><![CDATA[我理解下的的虚拟机类加载机制]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/79873679</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/79873679</guid><author>kingyxfly</author><pubDate>Mon, 09 Apr 2018 22:10:42 +0800</pubDate><description><![CDATA[引言

工作中，绝大多数我们多只关心业务逻辑实现，对于实现业务的类的生命周期并没有怎么关注。在我们实现业务逻辑时，不知不觉用到最多的就是类的生命周期中的“使用”阶段。

曾经我也试着去看关于类加载的一些博客或者虚拟机相关的书籍，初看时一知半解，文字上能懂得七七八八，但是真正的含义却知甚微。经过对基础知识的积累，再次回头看，一阵顿悟。虽然有些还是不能完全理解，但确实感觉到了很大的进步，特此记录。若有...]]></description><category></category></item><item><title><![CDATA[Spring框架的基本原理分析]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/79826333</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/79826333</guid><author>kingyxfly</author><pubDate>Thu, 05 Apr 2018 14:47:07 +0800</pubDate><description><![CDATA[引言

工作有一段时间了，工作中基本每个项目都用到了Spring框架，说实话，很多人应该和我一样，只是“使用”了这个框架，对于框架的基本原理应该没怎么研究过。前段时间，和同事交流时，提到了Spring核心组件：IOC(控制反转)、AOP(面向切面编程)。交流的时候，只能大概说说，并不能完整讲出来。回来后，找相关文章和源码研究了下，特此记录。



Spring框架概念

Spring是一个开源的容...]]></description><category></category></item><item><title><![CDATA[单例模式：双重检查+synchronized关键字+volitle关键字]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/79810446</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/79810446</guid><author>kingyxfly</author><pubDate>Tue, 03 Apr 2018 22:38:11 +0800</pubDate><description><![CDATA[实现单例模式，有3个要点：


  
  某个类只能有一个实例；
  这个实例只能本类自己创建；
  创建的这个实例必须向整个系统开放。
  


为了满足这3个要点，单例模式必须：


  
  在本类中实例化；
  构造器必须私有，外界不能通过调用构造器创建对象；
  必须对外提供一个静态的方法供外界获取该类的实例。
  


简单的一个单例模式：双重检查 + synchronized关键字 ...]]></description><category></category></item><item><title><![CDATA[HashMap源码分析以及常见问题]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78997905</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78997905</guid><author>kingyxfly</author><pubDate>Sun, 07 Jan 2018 21:39:27 +0800</pubDate><description><![CDATA[HashMap基本用法

通过HashMap与Hashtable比较：


HashMap能接受为null的键和值，Hashtable键和值都不能为null（通过put方法跟踪源码就一目了然）；
HashMap是非synchronized的，所以快，Hashtable是synchronized，相对慢（源码）；
HashMap 数组+链表 的存储结构，存储键值对；而一般的集合List、Set则是存]]></description><category></category></item><item><title><![CDATA[如何使用Maven搭建SpringMVC项目]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78942439</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78942439</guid><author>kingyxfly</author><pubDate>Sun, 31 Dec 2017 17:15:37 +0800</pubDate><description><![CDATA[创建一个Maven Project右键 -> New -> Other... -> 搜索‘maven’ -> 选择‘Maven Project’ -> Next创建一个简单项目勾选：Create a simple project（自动创建约定的项目目录结构，即不使用骨架）-> Next确定唯一标示填写如截图中的内容 -> Nex -> Finish
Group id: 组织id，域名倒写；
Arti]]></description><category></category></item><item><title><![CDATA[Maven入门介绍]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78885588</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78885588</guid><author>kingyxfly</author><pubDate>Sun, 24 Dec 2017 16:19:05 +0800</pubDate><description><![CDATA[个人博客：http://letus179.com项目依赖管理在项目合作开的时，我们是如何进行项目依赖管理的呢？ 
我们通常会在新建项目的时候，同时建立一个lib目录，在其中放着项目所依赖的各方类库，这样提交到SVN之后， 每个开发人员检出项目到本地，得到项目的工作副本，这样所有开发人员就会持有统一的项目依赖了。这样有2个比较明显的问题。管理中的问题依赖冗余随着项目的增多，模块的增多，这种方式就会有问]]></description><category></category></item><item><title><![CDATA[SpringMVC基本介绍]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78823175</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78823175</guid><author>kingyxfly</author><pubDate>Sun, 17 Dec 2017 00:38:27 +0800</pubDate><description><![CDATA[个人博客：www.letus179.com对SpringMVC的了解来自实际项目以及在项目过程遇到问题时，查找相关资料，并没有系统地学习这些。很多会用，但是不太清楚具体原理，最新重新学习SpringMVC，开头一章系统的介绍，让我有所顿悟。对于这些知识的学习，让我对SpringMVC基本配置认识更加深刻，特此将重要的知识点摘录下来。依赖注入有两个组件A和B，A依赖于B。现在假定A是一个类，且A有方法]]></description><category></category></item><item><title><![CDATA[jvm加载class文件的原理机制分析]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78670713</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78670713</guid><author>kingyxfly</author><pubDate>Wed, 29 Nov 2017 22:22:48 +0800</pubDate><description><![CDATA[个人博客：www.letus179.com案例分析A、B类中均包含静态代码块，非静态代码块以及构造器，A类是B类的父类。public class A {  static {
    System.out.print("A中静态代码块>>>");
  }  {
    System.out.print("A中非静态代码块>>>");
  }  public A() {
    System.out.p]]></description><category></category></item><item><title><![CDATA[抽象类（abstract class）和接口（interface）分析]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78628842</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78628842</guid><author>kingyxfly</author><pubDate>Fri, 24 Nov 2017 22:22:25 +0800</pubDate><description><![CDATA[个人博客：www.letus179.com概念抽象类：包含抽象方法的类就称为 抽象类； 
接口： 抽象方法的集合，方法没有具体实现即不包含方法体。两者异同相同点
都不能被实例化；
接口的实现类或抽象类的子类都必须实现接口或抽象类中的方法后才能被实例化
不同点
接口中的方法是高度抽象的，只有定义，没有具体的实现；抽象类中可以有定义也可以有实现；
接口中的方法默认为public abstract， 可以]]></description><category></category></item><item><title><![CDATA[重载（Overload）和重写（Override）解析]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78597787</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78597787</guid><author>kingyxfly</author><pubDate>Tue, 21 Nov 2017 22:26:54 +0800</pubDate><description><![CDATA[个人博客：www.letus179.com概念
重载Overload重载发生在一个类中，同名的方法如果有不同的参数列表（参数类型不同、参数个数不同或者二者都不同）。
访问修饰符：重载与访问修饰符无关 
返回类型： 重载与返回值无关
方法名： 重载方法名需完全一致 
参数列表： 重载参数列表需完全不同重写Override发生在子类与父类之间，重写要求子类被重写方法与父类被重写方法有相同的返回类型，比父]]></description><category></category></item><item><title><![CDATA[反射机制基础解析]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78511427</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78511427</guid><author>kingyxfly</author><pubDate>Sun, 12 Nov 2017 13:38:02 +0800</pubDate><description><![CDATA[个人博客：www.letus179.com概念
  Reflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fields, methods, and constructors to op]]></description><category></category></item><item><title><![CDATA[浅谈java对象浅度克隆和深度克隆]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78511397</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78511397</guid><author>kingyxfly</author><pubDate>Sun, 12 Nov 2017 13:33:05 +0800</pubDate><description><![CDATA[浅谈java对象浅度克隆和深度克隆标签（空格分隔）： 浅度克隆  深度克隆个人博客：www.letus179.com需要克隆的原因在工作中我们有时会遇到这样的需求：
  A对象包含一些有用信息，这时候需要一个和A完全相同的B对象。拿到B对象后，只需要稍微调整下就ok。A和B是两个独立的对象，只是B的初始值来自于A。而A/B对象中包含了比较复杂的数据结构。此时通过简单的赋值，并不能满足这种需求。
我之]]></description><category></category></item><item><title><![CDATA[JDK8新特性之接口的静态方法和默认方法]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78473769</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78473769</guid><author>kingyxfly</author><pubDate>Tue, 07 Nov 2017 23:18:42 +0800</pubDate><description><![CDATA[JDK8之前我们在接口中定义成员变量只能是public static final的，定义的成员方法只能是public abstract的，默认省略。JDK8前后这一概念等价。定义接口BeforeJDK8Interface如下： 
name和name1表述等价，getName()和getName1()表述等价。public interface BeforeJDK8Interface {    Stri]]></description><category></category></item><item><title><![CDATA[int和Integer解析]]></title><link>https://blog.youkuaiyun.com/kingyxfly/article/details/78463141</link><guid>https://blog.youkuaiyun.com/kingyxfly/article/details/78463141</guid><author>kingyxfly</author><pubDate>Mon, 06 Nov 2017 23:14:18 +0800</pubDate><description><![CDATA[Java是一个近乎纯洁的面向对象编程语言，但是为了编程的方便还是引入了基本数据类型，但是为了能够将这些基本数据类型当成对象操作，Java为每一个基本数据类型都引入了对应的包装类型（wrapper class），int的包装类就是Integer，从Java 5开始引入了自动装箱/拆箱机制，使得二者可以相互转换。
Java 为每个原始类型提供了包装类型：
原始类型: boolean，char，byte，]]></description><category></category></item></channel></rss>