<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小黄人的博客]]></title><description><![CDATA[海纳百川，从菜鸟做起]]></description><link>https://blog.youkuaiyun.com/ZHLittleRed</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ZHLittleRed]]></copyright><item><title><![CDATA[TCP三次握手和四次挥手.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82947491</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82947491</guid><author>ZHLittleRed</author><pubDate>Fri, 05 Oct 2018 21:57:17 +0800</pubDate><description><![CDATA[文章目录TCP三次握手和四次挥手1 三次握手1.1 基础知识1.2 三次握手过程1.3 现实场景2 四次挥手2.1 基础知识2.2 四次挥手过程2.3 现实场景
TCP三次握手和四次挥手
1 三次握手
1.1 基础知识

SYN（SYNchronization）：同步序号，用来建立连接。
SYN标志位和ACK标志位搭配使用，当SYN=1，ACK=0，表示连接请求；当SYN=1，ACK=1，表示连接...]]></description><category></category></item><item><title><![CDATA[浏览器输入URL全过程.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82947330</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82947330</guid><author>ZHLittleRed</author><pubDate>Fri, 05 Oct 2018 21:38:10 +0800</pubDate><description><![CDATA[文章目录浏览器输入URL全过程1 DNS域名解析2 建立TCP链接3 发送HTTP请求4 服务器处理请求5 返回响应结果6 关闭TCP连接7 浏览器解析渲染页面
浏览器输入URL全过程
1 DNS域名解析
当我们在浏览器输入如同www.baidu.com的时候，其实这些网站的名字都是为了简化人们的记忆来命名的，计算机其实并不认识个东西，浏览器只认识IP地址，所以当输入域名地址时，浏览器首先去本地h...]]></description><category></category></item><item><title><![CDATA[Java异常处理]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82941137</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82941137</guid><author>ZHLittleRed</author><pubDate>Thu, 04 Oct 2018 22:37:55 +0800</pubDate><description><![CDATA[文章目录异常处理1 异常处理的优势2 异常类型2.1 系统错误（Error）2.2 异常（Exception）2.3 运行时异常（RuntimeException）3 免检异常和必检异常
异常处理
1 异常处理的优势
异常处理最根本的优势是将检测错误（由被调用的方法完成）从处理错误（由调用方法完成）中分离出来。
2 异常类型
Throwable类是所有异常类的根。所有的Java异常类都直接或间接地...]]></description><category></category></item><item><title><![CDATA[数组排序.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82937848</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82937848</guid><author>ZHLittleRed</author><pubDate>Thu, 04 Oct 2018 15:27:58 +0800</pubDate><description><![CDATA[文章目录1 排序相关1.1 冒泡排序1.1.1 传统冒泡1.1.2 升级版（设置判断标志位）1.2 选择排序1.3 插入排序1.3.1 直接插入排序1.3.2 希尔排序1.4 快速排序
1 排序相关

稳定性：通俗地讲就是能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。
1.1 冒泡排序
1.1.1 传统冒泡
    /**
     * 冒泡排序算法（从小到大...]]></description><category></category></item><item><title><![CDATA[数据库学习-事务]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82829433</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82829433</guid><author>ZHLittleRed</author><pubDate>Mon, 24 Sep 2018 15:22:35 +0800</pubDate><description><![CDATA[1 事务
1.1 什么是事务
事务可以理解为一个独立的工作单元, 在这个独立的工作单元中, 有一组操作，放在事务(独立工作单元)中的多个操作, 要么全部执行成功, 要么全部执行失败。
事务指的是满足 ACID 特性的一组操作，可以通过 Commit 提交一个事务，也可以使用 Rollback 进行回滚。


1.2 ACID（事务四大特性）
1.2.1 原子性（Atomicity）
事务被视为不可...]]></description><category></category></item><item><title><![CDATA[银行家算法(战争举例、便于理解)]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82811249</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82811249</guid><author>ZHLittleRed</author><pubDate>Sat, 22 Sep 2018 11:52:19 +0800</pubDate><description><![CDATA[1 银行家算法
操作系统的进程可以动态地申请资源，但系统在进行资源分配之前，应先计算此次资源分配的安全性。（若此次分配为安全的，操作系统则将资源分配给进程，否则令进程等待）
避免死锁的实质在于：系统在进行资源分配时，如何使系统不进入不安全状态。
1.1 举例理解
战争举例：
大将军（操作系统）有一个部队（代分配的资源），当然部队中有各种兵种（弓箭手、骑兵等，每个兵种就能完成特定的战争）人有若干（人...]]></description><category></category></item><item><title><![CDATA[数据库学习-范式.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82806642</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82806642</guid><author>ZHLittleRed</author><pubDate>Fri, 21 Sep 2018 19:57:05 +0800</pubDate><description><![CDATA[1 数据库的范式
范式：符合是一种级别的关系模式的集合，表示一个关系内部各属性之间的联系的合理化程度。
通俗点讲就是一张数据表的表结构所符合的某种设计标准的级别。
目前数据库的范式共有6中，即第一范式（1NF）、第二范式（2NF）、第三范式（3NF）、巴斯-科德范式（BCNF）、第四范式（4NF）、第五范式（5NF）。
第二范式是在第一范式的基础上，第三范式是在第二范式的基础上，依次递推。
1.1...]]></description><category></category></item><item><title><![CDATA[抽象类和接口]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82799380</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82799380</guid><author>ZHLittleRed</author><pubDate>Fri, 21 Sep 2018 11:47:08 +0800</pubDate><description><![CDATA[1 抽象类和接口
1.1 抽象类
1.1.1 抽象方法
首先说到抽象类那么我们来说说抽象方法，抽象方法是一种特殊的方法，它只有声明，没有具体的实现：
abstract void fun();

抽象方法必须用abstract字进行声明;如果有一个类有抽象方法，那么这个类就是抽象类。
因为抽象类中含有无具体实现的方法，所以不能用抽象类创建对象。（不能new）
抽象类中也可以不声明一个抽象方法。
1....]]></description><category></category></item><item><title><![CDATA[内部类知识.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82798044</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82798044</guid><author>ZHLittleRed</author><pubDate>Fri, 21 Sep 2018 10:43:45 +0800</pubDate><description><![CDATA[1 内部类
内部类是一个编译时的概念，一旦编译成功，就会成为完全不同的类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。所以内部类的成员变量/方法名可以和外部类的相同。
1.1 成员内部类
成员内部类是外部类的成员，可以直接使用外部类的成员和方法，即使是private。
外部类要访问内部类的所有成员...]]></description><category></category></item><item><title><![CDATA[判断素数.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82791851</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82791851</guid><author>ZHLittleRed</author><pubDate>Thu, 20 Sep 2018 18:43:00 +0800</pubDate><description><![CDATA[1 判断素数
素数就是一个数被除数除了1和它本身就没有其他被除数了（1除外，1不是素数）
1.1 常规判断素数的方法
	/**
	 * 常规判断素数的方法
	 * 从2遍历如果到这个数之前都不可被整除，则该数为素数
	 * @param num
	 * @return
	 */
	public boolean isPrimeNum(int num) {
		if(num &amp;lt;=1) {
			...]]></description><category></category></item><item><title><![CDATA[拓扑排序.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82787601</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82787601</guid><author>ZHLittleRed</author><pubDate>Thu, 20 Sep 2018 15:01:53 +0800</pubDate><description><![CDATA[1 拓扑排序
1.1 什么是拓扑排序
在图论中，拓扑排序是一个有向无环图（必须条件）的所有顶点的进行排序的线性序列。而且序列必须满足两个条件：

每个顶点只出现一次；
若存在一条从顶点 A 到顶点 B 的路径，那么在序列中顶点 A 出现在顶点 B 的前面。

如图就可以进行拓扑排序：

1.2 进行排序

排序序列：1 ，2， 4， 3， 5；
排序规则
每次循环都是找到入度为0的点，对这个点进行...]]></description><category></category></item><item><title><![CDATA[Map的遍历方法.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82782640</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82782640</guid><author>ZHLittleRed</author><pubDate>Thu, 20 Sep 2018 10:38:32 +0800</pubDate><description><![CDATA[1 Map的遍历方法
Map的遍历方法总是写了忘，忘了再记，在这再总结一波。
1.1 使用entries来遍历（推荐）
    /**
     * 使用Map的内部类来遍历map
     */
    public void mapErgodicByEntries(Map&amp;lt;String, String&amp;gt; map) {
        for(Map.Entry&amp;lt;String,...]]></description><category></category></item><item><title><![CDATA[Http的Get请求和Post请求的区别.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82776785</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82776785</guid><author>ZHLittleRed</author><pubDate>Wed, 19 Sep 2018 19:12:38 +0800</pubDate><description><![CDATA[1 Http的Get请求和Post请求的区别


get是从服务器获取数据，post是发送数据到服务器。


get参数通过URL传递，post参数放在Request body中。
所以：get比post更不安全，因为参数直接暴露在URL上，所以不能用来传递敏感信息。
所以：get的url可以存为书签，post的url不可以存为书签。


GET请求在URL中传送的参数是有长度限制的，而POST没...]]></description><category></category></item><item><title><![CDATA[设计模式学习笔记3-代理模式.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82774287</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82774287</guid><author>ZHLittleRed</author><pubDate>Wed, 19 Sep 2018 16:35:19 +0800</pubDate><description><![CDATA[1 设计模式学习笔记3-代理模式
代理的作用就是让我们关注自己的正事，其他的事情由代理商来帮我们办。
举个栗子：我们要去买火车票，但是一般买火车票都需要去火车站去购买，这样大大加大了我们购票的难度，也给我们增加了很多的负担，所以这时就有代理这个概念出现了，就是我们买火车票不需要去车站了而是找一个就近的代理商，在代理商这里直接购买火车票，其余的杂事（如怎么去火车站，排队等）都交给代理来帮我们完成，这...]]></description><category></category></item><item><title><![CDATA[Spring的IOC和AOP的理解.md]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82769842</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82769842</guid><author>ZHLittleRed</author><pubDate>Wed, 19 Sep 2018 11:36:35 +0800</pubDate><description><![CDATA[1 Spring IOC和AOP理解
1.1 Spring IOC理解（反射实现）
控制反转/依赖注入
IOC是遵循了软件设计理念的依赖倒转原则以及接口隔离原则，面向对象的设计就是为了而实现软件的更好的复用性和扩展性。
1.1.1 接口隔离原则（面向接口编程）
如果A要使用B的实例那么不要直接在A中对B进行初始化，而是在A中定义一个接口(Interface)，让B去实现这个接口(Interface...]]></description><category></category></item><item><title><![CDATA[设计模式学习笔记2-单例模式]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82744258</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82744258</guid><author>ZHLittleRed</author><pubDate>Mon, 17 Sep 2018 16:05:14 +0800</pubDate><description><![CDATA[1 单例模式



1.1 懒汉式（线程不安全）



public class Singleton {
    private static Singleton instance;

    private Sinleton() {
    }

    public static Singleton getInstance() {
        if(instance == null) {
...]]></description><category></category></item><item><title><![CDATA[Hibernate缓存机制]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82716832</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82716832</guid><author>ZHLittleRed</author><pubDate>Sat, 15 Sep 2018 19:13:02 +0800</pubDate><description><![CDATA[1 Hibernate缓存机制



1.1 why(为什么用Hibernate缓存)

首先为什么要用缓存，我们都知道Hibernate是一个持久层框架，我们利用Hibernate来访问数据库，每次访问数据都会花费时间，这时为了降低访问的次数，我们就利用了缓存来提高应用程序的运行性能。

缓存中的是数据是对数据源中的数据的一个复制，应用程序访问数据时先读缓存，如果缓存中没有得到想要的的数据，再从...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记5-虚拟机类加载机制]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82503302</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82503302</guid><author>ZHLittleRed</author><pubDate>Fri, 07 Sep 2018 22:00:01 +0800</pubDate><description><![CDATA[摘自《深入理解Java虚拟机》第二版



虚拟机类加载机制

Java从代码到最终执行，一般需要两个过程：


编译
运行


编译：把Java文件通过javac命令变异成字节码，也就是.class文件。

运行：把编译好的.class文件交给JVM运行。

这里说的类加载过程指的是JVM把.class文件中类信息加载进内存，并进行解析生成对应的class对象的过程。



1 类加载过程

类...]]></description><category></category></item><item><title><![CDATA[Java 二叉树的遍历方式（前序、中序、后序的递归与非递归，广度遍历）]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/80109766</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/80109766</guid><author>ZHLittleRed</author><pubDate>Thu, 06 Sep 2018 17:16:00 +0800</pubDate><description><![CDATA[示例树（下面的所有代码都基于此树型结构） 


先序遍历

所谓的先序遍历指的就是先遍历根节点再遍历左节点最后遍历右节点。 
用先序遍历遍历示例树过程 
1.ABC 
2.ABDC 
3.ABDCE...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记4-垃圾回收之垃圾回收算法]]></title><link>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82383794</link><guid>https://blog.youkuaiyun.com/ZHLittleRed/article/details/82383794</guid><author>ZHLittleRed</author><pubDate>Tue, 04 Sep 2018 15:00:04 +0800</pubDate><description><![CDATA[摘自《深入理解Java虚拟机》第二版



1 垃圾回收算法



1.1 标记-清除算法

算法分为两个阶段，标记和清除，首先标记出所有需要回收的对象，在标记完成后统一收回所有被标记的对象。

该算法主要有连个不足：第一就是标记和清除的效率都不高；第二就是空间问题，标记清除之后会产生大量不连续的内存碎片，空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时，无法找到足够的连续内存而不得不...]]></description><category></category></item></channel></rss>