<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaoguobaf的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaoguobaf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaoguobaf]]></copyright><item><title><![CDATA[创建线程的方法]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52575571</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52575571</guid><author>xiaoguobaf</author><pubDate>Sun, 18 Sep 2016 16:32:13 +0800</pubDate><description><![CDATA[从操作系统的角度来看，线程是CPU调度的最小单位——可以理解为一种资源、权利，即能够获得CPU的使用权网上很多文章中说java创建线程的方法有两种（Thread Runnable）或三种（外加Callable Future），这种说法不能说是错误的，但是很容易误导人，实际上，创建线程（拥有CPU使用权的线程）只有一种方法，那就是继承Thread类。实现Runnable（包括Callable Futu]]></description><category></category></item><item><title><![CDATA[策略模式]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52563119</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52563119</guid><author>xiaoguobaf</author><pubDate>Sat, 17 Sep 2016 14:40:41 +0800</pubDate><description><![CDATA[1、定义
  策略模式定义了算法族，分别封装起来，让他们之间可以相互替代，此模式的变化独立于使用算法的客户
上述中的算法即行为、方法，策略模式通俗点说，解决一个问题有多种方法，程序在运行时会自己去选择执行什么方法策略模式的角色：
抽象策略角色（Strategy）：策略类，通常由一个接口或者抽象类实现 
具体策略角色（ConcreteStrategy)：包装了相关的算法和行为 
环境角色(Contex]]></description><category></category></item><item><title><![CDATA[IPC]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52174310</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52174310</guid><author>xiaoguobaf</author><pubDate>Wed, 10 Aug 2016 17:12:14 +0800</pubDate><description><![CDATA[前言有了信号量和管程，为什么还需要进程间通信机制(Interprocess communication, IPC)呢？其一，信号量和管程传递的信息较为简单，无法传递大量信息；其二，不适用于多CPU情况消息传递(message passing)发送进程S和接受进程R的地址空间不同，S不能在R的地址空间进行任何操作，所以消息的发送需要操作系统来完成，操作系统有一组消息缓冲区，发送进程要发送消息时，调用s]]></description><category></category></item><item><title><![CDATA[互斥和同步]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52174285</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52174285</guid><author>xiaoguobaf</author><pubDate>Wed, 10 Aug 2016 17:10:35 +0800</pubDate><description><![CDATA[前言进程间通信(Inter Process Communication)主要有三个问题：
进程如何把信息传递给另一个进程
确保两个或更多的进程在关键活动中不会出现交叉，比如两个进程试图争夺同一资源
正确的顺序，某个进程运行前必须等待另外一个进程的运行完、
注意后面两个问题和解决方法同样适用于线程1、互斥原子性(Atomic)：连续的，在执行过程中不允许被中断原语：完成某种特定功能的一段程序，具有原子]]></description><category></category></item><item><title><![CDATA[进程和线程的区别]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52174169</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52174169</guid><author>xiaoguobaf</author><pubDate>Wed, 10 Aug 2016 17:02:12 +0800</pubDate><description><![CDATA[进程和线程的区别]]></description><category></category></item><item><title><![CDATA[线程]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104977</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104977</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 16:35:01 +0800</pubDate><description><![CDATA[前言线程，具有进程的某些性质，又称轻量级进程。引入线程的原因：
应用需要——对于一个单线程的进程，它在完成一项任务时，那么就不能执行其他任务
开销的考虑——进程的相关操作（创建、撤消、进程间通信、切换等）需要内核的介入，时间空间开销大（系统调用、上下文切换），而线程的相关操作开销要小
性能的考虑——对于多CPU，需要大量计算和大量IO处理，多线程可以允许计算和IO重叠处理，从而加快应用程序的执行速度]]></description><category></category></item><item><title><![CDATA[进程]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104973</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104973</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 16:34:44 +0800</pubDate><description><![CDATA[前言操作系统中最核心的概念是进程，操作系统的其他所有内容都是围绕着进程的概念展开的多道程序设计：在伪并行情况下的进程集，它允许多个程序同时进入内存并运行，其目的是为了提高系统效率。通过将内存（主存，也就是RAM）分为几个部分，没一部分存放不同的作业，内存中的不同作业是使用硬件来保护的每道程序都有各自的逻辑PC，但实际上只有一个物理上的PC，故在程序运行时，每道程序的逻辑PC被装入到实际的PC中，当该]]></description><category></category></item><item><title><![CDATA[RBT(红黑树)的删除算法]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104857</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104857</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 16:26:37 +0800</pubDate><description><![CDATA[2-3树中删除最小键作为一个热身，回到2-3树来看下删除，简单起见，从删除最小键开始。如果含有最小键的节点不是2节点（3节点或4节点），那么直接删除该节点，不会破坏树的平衡性，但是如果是2节点，由于删除后变为空节点，有可能会破坏平衡性，故删除最小键的思路是沿左链接向下进行变换，确保当前节点不是2节点。  根节点根节点的左右孩子都为2节点此时将3个2节点合并为一个4节点  根节点的右孩子不为2节点左孩]]></description><category></category></item><item><title><![CDATA[RBT(红黑树)插入算法]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104852</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104852</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 16:26:12 +0800</pubDate><description><![CDATA[#2-3查找树为了保持平衡性，同时也为了避免AVL那样多次的判断和旋转，需要一些灵活性，故允许一个节点可以保存两个键，它有三条链接，称3节点，BST中的节点称2节点。  2-3查找树的定义：它是一棵查找树或空树，由2节点和3节点组成，2节点含有一个键和两条链接，2节点的左子树中的键均小于该节点的键，右子树中的键均大于该节点的键；3节点含有两个键和三条链接，左子树中的键小于该节点的键，中子树中的键在该]]></description><category></category></item><item><title><![CDATA[AVL]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104843</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104843</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 16:25:35 +0800</pubDate><description><![CDATA[前言由于二叉查找树(BST)没有平衡条件，插入可能使树的结构不平衡，一种比较极端的情况就是其结果看起来就是一个带有两个链接的链表一样。如按顺序向BST中插入ABCDE，结果将是： 
 
重建图： 
 
若采用AVL，结果是： 
 
从层序遍历的结果来看，此时重建的AVL也是一棵满二叉树。 
AVL即带有平衡条件的二叉查找树，其平衡条件是每个节点的左子树和右子树的高度最多差1的二叉查找树（空树的高度定]]></description><category></category></item><item><title><![CDATA[二叉查找树（BST）]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104840</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104840</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 16:25:14 +0800</pubDate><description><![CDATA[前言二叉查找树是一棵二叉树，如果用来构造符号表的话，那么每个节点含有一个键值对，对于每个节点，其键大于其左子树中所有节点的键，且小于其右子树中所有节点的键，如果中序遍历二叉查找树并打印其键，那么键将按从小到大的顺序打印。如果仅仅是为了描述二叉查找树，是可以不用构造符号表的，每个节点只含有键就够了，但是本着实用主义，还是构造了符号表，符号表又称字典、索引，数据库的曾删改查就是基于符号表(B-树、红黑树]]></description><category></category></item><item><title><![CDATA[二叉树遍历]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104834</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104834</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 16:24:55 +0800</pubDate><description><![CDATA[1 二叉树的先序遍历先序遍历从树的头节点开始，按照先根节点，然后左子树，再右子树的顺序遍历整棵树。 
先给出二叉树节点的定义  package binaryStree;
/**
 * 二叉树节点定义
 * @author 小锅巴
 */
public class TreeNode {
    public TreeNode left;//左链接
    public TreeNode right;/]]></description><category></category></item><item><title><![CDATA[try catch finally中有return语句的执行情况及原因分析]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104399</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104399</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 15:54:26 +0800</pubDate><description><![CDATA[前言之前在学习Java异常时遇到了try cathc finally中有return的情况，但是到底return执不执行，以怎样的顺序执行，以及原因是什么，还没弄清楚。  1 执行顺序以及原因先来看一个简单的例子，为了便于阅读方法的字节码指令，没有采用static方法  package chapter6;
/**
 * @author 小锅巴
 */
public class Finally {]]></description><category></category></item><item><title><![CDATA[String、StringBuffer、StringBuilder]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104220</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52104220</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 15:40:38 +0800</pubDate><description><![CDATA[1、StringString的部分源码（jdk1.8.0_65）如下：  public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private fi]]></description><category></category></item><item><title><![CDATA[锁与volatile的内存语义]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52103996</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52103996</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 15:27:59 +0800</pubDate><description><![CDATA[原文地址：http://blog.youkuaiyun.com/u011116672/article/details/50147233  参考的资料应该是这里和这里，原博主总结得挺好的，我就直接转载了]]></description><category></category></item><item><title><![CDATA[并发基础]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52103844</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/52103844</guid><author>xiaoguobaf</author><pubDate>Wed, 03 Aug 2016 15:10:10 +0800</pubDate><description><![CDATA[前言并发和操作系统的相关度很高，会多次回到操作系统中，为什么要回到操作系统呢？JVM屏蔽了底层硬件、操作系统的不一致性，以向程序员在不同的硬件、操作系统上提供一致的开发环境，但是，最终的实现还是要依赖底层硬件、操作系统的，java中的线程还是要映射到操作系统上的大部分是各种资料的总结，若有错误或者不足，欢迎交流讨论1、基本概念关于竞争条件、临界区、原子性、互斥等概念，请移步操作系统，这里说下同步和互]]></description><category></category></item><item><title><![CDATA[Java泛型之一]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/51167455</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/51167455</guid><author>xiaoguobaf</author><pubDate>Sat, 16 Apr 2016 12:52:09 +0800</pubDate><description><![CDATA[Bruce说学习泛型的最大障碍是类型擦除，泛型的博文我分成两篇，这篇主要是类型擦除、边界、通配符，使用泛型的约束和局限性以及可能带来的问题放在另外一篇，作者水平有限，如有错误或者不足，欢迎交流讨论。0 前言一般的类和方法，要么使用基本类型，要么使用自定义的类，不能编写应用与多种类型的代码，在Java增加泛型之前，泛型程序设计是使用继承实现的，即使用Object类型或者Object数组。采用继承实现会]]></description><category></category></item><item><title><![CDATA[互联网协议入门（二）]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/51152200</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/51152200</guid><author>xiaoguobaf</author><pubDate>Thu, 14 Apr 2016 15:53:46 +0800</pubDate><description><![CDATA[原文地址：http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html

上一篇文章分析了互联网的总体构思，从下至上，每一层协议的设计思想。

这是从设计者的角度看问题，今天我想切换到用户的角度，看看用户是如何从上至下，与这些协议互动的。

============================]]></description><category></category></item><item><title><![CDATA[互联网协议入门（一）]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/51152169</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/51152169</guid><author>xiaoguobaf</author><pubDate>Thu, 14 Apr 2016 15:50:38 +0800</pubDate><description><![CDATA[原文地址：http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

我们每天使用互联网，你是否想过，它是如何实现的？

全世界几十亿台电脑，连接在一起，两两通信。上海的某一块网卡送出信号，洛杉矶的另一块网卡居然就收到了，两者实际上根本不知道对方的物理位置，你不觉得这是很神奇的事情吗？

互联网]]></description><category></category></item><item><title><![CDATA[数据结构之栈]]></title><link>https://blog.youkuaiyun.com/xiaoguobaf/article/details/51148167</link><guid>https://blog.youkuaiyun.com/xiaoguobaf/article/details/51148167</guid><author>xiaoguobaf</author><pubDate>Thu, 14 Apr 2016 00:16:55 +0800</pubDate><description><![CDATA[1、顺序存储结构与链式存储结构顺序存储结构数据存在内存地址连续的一块区域，数组便是这种存储结构的典型表现。由于是在一块的内存区域，只要确定第一个元素的内存地址，后面的元素就可以在这快区域上随机存取。下面的示意图展示了顺序存储结构在内存中的存储形式： 
  链式存储结构 
链式存储结构区别于顺序存储结构的一点就是数据是存放内存中任意一个地址中，每个数据除了有自己的数据属性还有下一个数据内存地址的引用，]]></description><category></category></item></channel></rss>