<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[我的程序之路]]></title><description><![CDATA[Thinking  in program]]></description><link>https://blog.youkuaiyun.com/fujiaming123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fujiaming123]]></copyright><item><title><![CDATA[ArrayList源码解析]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/54016833</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/54016833</guid><author>fujiaming123</author><pubDate>Wed, 04 Jan 2017 10:51:03 +0800</pubDate><description><![CDATA[前言： 
    ArrayList是基于数组实现的，是一个动态数组，其容量能自动增长，ArrayList就是传说中的动态数组，就是Array的复杂版本，它提供了如下一些好处：动态的增加和减少元素、灵活的设置数组的大小等。 
  一：ArrayList的继承结构与定义：]]></description><category></category></item><item><title><![CDATA[ArrayList源码解析]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/54016823</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/54016823</guid><author>fujiaming123</author><pubDate>Wed, 04 Jan 2017 10:50:40 +0800</pubDate><description><![CDATA[前言： 
    ArrayList是基于数组实现的，是一个动态数组，其容量能自动增长，ArrayList就是传说中的动态数组，就是Array的复杂版本，它提供了如下一些好处：动态的增加和减少元素、灵活的设置数组的大小等。 
  一：ArrayList的继承结构与定义：]]></description><category></category></item><item><title><![CDATA[装饰模式（Decorator）]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/51353655</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/51353655</guid><author>fujiaming123</author><pubDate>Mon, 09 May 2016 15:50:41 +0800</pubDate><description><![CDATA[前言： 
    装饰模式又名包装模式。装饰模式以对客户端透明以的方式扩展对象的功能，换言之，客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下，将对象加以扩展。是继承关系的一个替代方案。 
    （一）装饰模式的简略图： 
    （二）装饰模式的环境角色： 
       1.抽象构件（Component）角色：给出一个抽象接口，以规范准备接受附加责任的对]]></description><category></category></item><item><title><![CDATA[观察者模式(Observer)]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/51338726</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/51338726</guid><author>fujiaming123</author><pubDate>Sat, 07 May 2016 16:59:19 +0800</pubDate><description><![CDATA[前言： 
    观察者（Observer）模式是对象的行为模式，又叫做发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式。 
    观察者模式定义了一种一对多的依赖关系，让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化是，会让通知所有观察者对象，是他们能够自动更新自己。 
    （一）观察者模式的简略图： 
     
    （二）观察者模式的环境角色]]></description><category></category></item><item><title><![CDATA[策略模式]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/51284436</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/51284436</guid><author>fujiaming123</author><pubDate>Fri, 29 Apr 2016 21:43:37 +0800</pubDate><description><![CDATA[前言： 
        策略模式作为一种软件设计模式，指对象有某个行为，但是在不同的场景中，该行为有不同的实现 
算法。比如每个人都要“交个人所得税”，但是“在美国交个人所得税”和“在中国交个人所得税 
”就有不同的算税方法。策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个 
算法或行为族。恰当使用继承可以把公共的代码转移到父类里面，从而避免重复的代码。 
（一）策略模式的定义：]]></description><category></category></item><item><title><![CDATA[排序总结（二）]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/50890643</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/50890643</guid><author>fujiaming123</author><pubDate>Sat, 19 Mar 2016 17:34:52 +0800</pubDate><description><![CDATA[前言：
本篇总结插入排序和希尔排序，把两种放在一起讨论的原因，两种排序的算法的思想是很相似的，可以说希尔排序就是插入排序的改进版本。
一，插入排序
  插入排序（Insertion Sort）是一种简单直观的排序算法。它的工作原理是通过构建有序序列，对于未排序数据，在已排序序列中从后向前扫描，找到相应位置并插入。插入排序在实现上，通常采用in-place排序（即只需用到O(1)的额外空间的排]]></description><category></category></item><item><title><![CDATA[排序总结（一）]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/50879584</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/50879584</guid><author>fujiaming123</author><pubDate>Sun, 13 Mar 2016 19:39:34 +0800</pubDate><description><![CDATA[各种排序的性能总结 
 
一：冒泡排序 
原理：原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束。冒泡排序对n个项目需要O(n^2)的比较次数，且可以原地排序。尽管这个算法是最简单了解和实现的排序算法之一，但它对于少数元素之外的数列排序是很没有效率的。 
例子： 
元数据：1]]></description><category></category></item><item><title><![CDATA[java反射分析]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/48290087</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/48290087</guid><author>fujiaming123</author><pubDate>Wed, 09 Sep 2015 11:19:21 +0800</pubDate><description><![CDATA[Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)检查类，接口，变量以及方法的信息。反射还可以让我们在运行期实例化对象，调用方法，通过调用get/set方法获取变量的值。
一般而言，开发者社群说到动态语言，大致认同的一个定义是：“程序运行时，允许改变程序结构或变量类型，这种语言称为动态语言”。从这个观点看，Perl，Python，Ruby是动态语言，C+]]></description><category></category></item><item><title><![CDATA[进程与线程]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/47976347</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/47976347</guid><author>fujiaming123</author><pubDate>Tue, 25 Aug 2015 14:17:42 +0800</pubDate><description><![CDATA[进程（process）和线程（thread）是操作系统的基本概念，但是它们比较抽象，不容易掌握。

最近，我读到一篇材料，发现有一个很好的类比，可以把它们解释地清晰易懂。

1.



计算机的核心是CPU，它承担了所有的计算任务。它就像一座工厂，时刻在运行。

2.



假定工厂的电力有限，一次只能供给一个车间使用。也就是说，一个车间开工的时候，其他车间都必须停工。]]></description><category></category></item><item><title><![CDATA[链表总结]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/46343693</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/46343693</guid><author>fujiaming123</author><pubDate>Wed, 03 Jun 2015 12:46:52 +0800</pubDate><description><![CDATA[链表是最基本的数据结构，面试官也常常用链表来考察面试者的基本能力，而且链表相关的操作相对而言比较简单，也适合考察写代码的能力。链表的操作也离不开指针，指针又很容易导致出错。综合多方面的原因，链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理，希望能对找工作的同学有所帮助。

链表结点声明如下：

struct ListNode
{
    int m_nKey]]></description><category></category></item><item><title><![CDATA[线索二叉树]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/46120651</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/46120651</guid><author>fujiaming123</author><pubDate>Thu, 28 May 2015 12:31:18 +0800</pubDate><description><![CDATA[一、线索二叉树的原理

    通过考察各种二叉链表，不管儿叉树的形态如何，空链域的个数总是多过非空链域的个数。准确的说，n各结点的二叉链表共有2n个链域，非空链域为n-1个，但其中的空链域却有n+1个。



优点：遍历更快速、使用内存更少

如下图所示。




    因此，提出了一种方法，利用原来的空链域存放指针，指向树中其他结点。这种指针称为线索。]]></description><category></category></item><item><title><![CDATA[二叉树的递归遍历]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/45769147</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/45769147</guid><author>fujiaming123</author><pubDate>Sat, 16 May 2015 16:20:04 +0800</pubDate><description><![CDATA[#include 
#include 
ng namespace stdusi;
struct node
{
    struct node * lchild;
    struct node * rchild;
    int data;
}node;
typedef struct node * BTREE;
/*BTREE CreateBT(int v,BTREE ltree,BTREE rt]]></description><category></category></item><item><title><![CDATA[AVL树的旋转分析与实现]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/45488771</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/45488771</guid><author>fujiaming123</author><pubDate>Mon, 04 May 2015 23:22:20 +0800</pubDate><description><![CDATA[AVL树是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持，而且它须保证树的深度是O(log N).**一棵AVL树是其每个节点的左子树和右子树的高度最多插1的二叉查找树**
当]]></description><category></category></item><item><title><![CDATA[队列的数组实现]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/45440559</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/45440559</guid><author>fujiaming123</author><pubDate>Sat, 02 May 2015 16:15:50 +0800</pubDate><description><![CDATA[#ifndef QUEUE_H_INCLUDED
#define QUEUE_H_INCLUDED
struct QueueRecord;
typedef struct QueueRecord * Queue;
int IsEmpty(Queue);
int  IsFull(Queue Q);
Queue CreateQueue(int MaxElements);
void DisposeQueu]]></description><category></category></item><item><title><![CDATA[中缀表达式转后缀表达式]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/45270363</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/45270363</guid><author>fujiaming123</author><pubDate>Sat, 25 Apr 2015 14:57:56 +0800</pubDate><description><![CDATA[#include 
#include 
#define ElementType char

typedef struct Node *PtrToNode;
typedef PtrToNode Stack;
typedef struct Node
{
    ElementType Element;
    PtrToNode Next;
};

int IsEmpty(Stack S);
Stac]]></description><category></category></item><item><title><![CDATA[栈的实现]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/45118497</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/45118497</guid><author>fujiaming123</author><pubDate>Sat, 18 Apr 2015 23:09:11 +0800</pubDate><description><![CDATA[比较简单，直接上代码了
#ifndef _Stack_h
struct Node;
typedef int ElementType;
typedef struct Node * PtrToNode;
typedef PtrToNode Stack;
int IsEmpty(Stack S);
Stack CreateStack(void);
void DisposeStack(St]]></description><category></category></item><item><title><![CDATA[时间复杂度]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/42588883</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/42588883</guid><author>fujiaming123</author><pubDate>Sat, 10 Jan 2015 21:50:56 +0800</pubDate><description><![CDATA[最近在跟数据结构的课程，发现了这道题从n^3刷到n^2最后刷到nlogn，觉得对于理解算法的时间复杂度比较有帮助，于是记录下来，以便以后查看。

给定K个整数组成的序列{ N1, N2, ..., NK }，“连续子列”被定义为{ Ni, Ni+1, ..., Nj }，其中
 1 

输入格式：

输入第1行给出正整数 K (

输出格式：

在一行中输出最大子列和。如果序]]></description><category></category></item><item><title><![CDATA[linux目录结构]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/41325425</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/41325425</guid><author>fujiaming123</author><pubDate>Thu, 20 Nov 2014 23:14:33 +0800</pubDate><description><![CDATA[root:存放root用户的相关文件
home：存放普通用户的相关文件
bin：存放常用的命令的目录
sbin：要具有一定权限才可以使用命令
boot：存放引导相关的文件
etc：存放配置相关文件
var：存放经常变化的文件
usr：文件默认安装的文件夹
常用命令
pwd:显示当前在哪个路径下.
添加用户：
useradd ——用户名
passwd ——用户名
删除用户u]]></description><category></category></item><item><title><![CDATA[java学习笔记-继承与接口]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/41011329</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/41011329</guid><author>fujiaming123</author><pubDate>Tue, 11 Nov 2014 14:37:58 +0800</pubDate><description><![CDATA[继承:
当子类和父类出现同样的函数时,子类函数重写(覆盖)父类函数.


覆盖:
1.子类覆盖父类,必须保证子类权限大于等于父类.
2.静态只能覆盖静态.
重写和重载
重载:只看同名函数的参数列表.
重写:方法一摸一样.
子父类中的构造函数:
构造函数跟着类名走.
在对子类对象进行初始化时,父类的构造函数也会进行.
那是因为子类的构造函数默认第一行有一条隐式的语句supe]]></description><category></category></item><item><title><![CDATA[字符串替换]]></title><link>https://blog.youkuaiyun.com/fujiaming123/article/details/39344213</link><guid>https://blog.youkuaiyun.com/fujiaming123/article/details/39344213</guid><author>fujiaming123</author><pubDate>Wed, 17 Sep 2014 16:13:52 +0800</pubDate><description><![CDATA[#include
#include
#include 
using namespace std;
int main(){
	int i,j,index,len,len2;
	char str[101],word[101],newword[101],tmp[101];
	while(gets(str)){
	 int index=0;
	 len=strlen(str);
	 cin>>word;
]]></description><category></category></item></channel></rss>