<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[王俊祥的菜鸟博客]]></title><description><![CDATA[资深菜鸟]]></description><link>https://blog.youkuaiyun.com/IamMaking</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; IamMaking]]></copyright><item><title><![CDATA[iOS开发---轮播图模块（连续循环滚动版）]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/47303397</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/47303397</guid><author>IamMaking</author><pubDate>Wed, 05 Aug 2015 21:01:45 +0800</pubDate><description><![CDATA[//  基于ScrollView的轮播模块，循环滚动
//  ViewController.m
//  Slider-轮播-循环滚动版
//
//  Created by JamesXiang on 15/7/25.
//  Copyright (c) 2015年 JamesXiang. All rights reserved.
//

#import "ViewController.h"

@i]]></description><category></category></item><item><title><![CDATA[iOS开发---轮播图模块（普通版）]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/47090533</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/47090533</guid><author>IamMaking</author><pubDate>Mon, 27 Jul 2015 20:47:08 +0800</pubDate><description><![CDATA[//
//  ViewController.m
//  Slider-轮播
//
//  Created by JamesXiang on 15/7/21.
//  Copyright (c) 2015年 JamesXiang. All rights reserved.
//

#import "ViewController.h"

@interface ViewController () 

@]]></description><category></category></item><item><title><![CDATA[设计模式入门之访问者模式Visitor]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/26621879</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/26621879</guid><author>IamMaking</author><pubDate>Thu, 22 May 2014 21:08:21 +0800</pubDate><description><![CDATA[访问者模式定义：表示一个作用于某对象结构中的各个元素的操作，它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。
从定义上看，这个模式跟装饰模式的定义很相似（动态地给一个对象添加一些额外的职责），但是装饰模式更多是在原有的基础上进行功能加强或者修改；而访问者模式更多是为对象添加全新的功能。
这个模式中用到了二次分发技术，跟tcp协议的三次握手有些类似，首先请求拿到对方的控制权，对方进行接受，然后开始使用控制权
访问者模式本质：预留通路，回调实现
优点：扩展性好，复用性好，分离无关行为
缺点：对象结]]></description><category></category></item><item><title><![CDATA[设计模式入门之桥接模式Bridge]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/26292575</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/26292575</guid><author>IamMaking</author><pubDate>Mon, 19 May 2014 23:47:22 +0800</pubDate><description><![CDATA[桥接模式定义：将抽象部分与它的实现部分分离，使得他们都可以独立地变化
广义来讲，桥接模式非常普遍，面向抽象编程，面向接口编程就可以看作是他的体现
从客户端的调用可以看出来，不管是要增加消息类型还是发送消息的方式，完全是件非常简单的事情，因为没有耦合，扩展起来非常轻松。
Java中的JDBC就是非常典型的桥接应用
桥接模式的本质：分离抽象和实现
桥接模式很好地提现了开闭原则OCP]]></description><category></category></item><item><title><![CDATA[设计模式入门之职责链模式Chain Of Responsibility]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/26289259</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/26289259</guid><author>IamMaking</author><pubDate>Mon, 19 May 2014 22:55:07 +0800</pubDate><description><![CDATA[职责链模式：使多个对象都有机会处理请求，从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链，并沿着这条链传递该请求，直到有一个对象处理它为止
职责链模式的本质：分离职责，动态组合
优点：请求者和接受者松散耦合，请求者不需要知道接受者是谁
优点：动态组合职责
缺点：产生很多细粒度对象，不一定能被处理，这时就需要提供默认的处理
职责链模式在找到接受者后就会处理完毕，然后结束
如果找到接受者后进行处理再交给下一个对象处理，那么就成为功能链了，也就是装饰器模式了
何时选择职责链模式：
1.如果有多个对]]></description><category></category></item><item><title><![CDATA[设计模式入门之装饰器模式Decorator]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/26140959</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/26140959</guid><author>IamMaking</author><pubDate>Sun, 18 May 2014 12:20:31 +0800</pubDate><description><![CDATA[装饰模式定义：动态地给一个对象添加一些额外的职责。
就增加功能来说，装饰模式比生成子类更为灵活
这也提现了面向对象设计中的一条基本原则，即：尽量使用对象组合，而不是对象继承
在Java中比较常见的一种装饰器模式体现如下：
new DataInputStream(new BufferedInputStream(new FileInputStream("IOtest.txt")));
FileInputStream完成他自己的功能，然后由装饰器完成需要增加的功能]]></description><category></category></item><item><title><![CDATA[设计模式入门之备忘录模式Memento]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25660105</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25660105</guid><author>IamMaking</author><pubDate>Mon, 12 May 2014 23:34:09 +0800</pubDate><description><![CDATA[备忘录模式定义：在不破坏封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态
备忘录模式本质：保存和恢复内部状态
优点：更好的封装性，由于使用了内部类和窄接口，所以外部就算持有备忘录接口对象也无法访问其中的属性
备忘录模式中内部内和窄接口是最给力的设计，这样给把对象的接口给外部保存
但是接口中没有方法，所以外部无法访问，充分保证了封装性
只有创建它的原发器才可以设置和获取它的值]]></description><category></category></item><item><title><![CDATA[算法入门之快速排序]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25565643</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25565643</guid><author>IamMaking</author><pubDate>Sun, 11 May 2014 23:23:58 +0800</pubDate><description><![CDATA[快速排序原理：
快速排序先把等待排序的集合打乱顺序，把第一个元素作为基准元素，为第二个元素和最后一个元素分配两个指针i和j，如果a[i]小于基准元素则i++，如果a[j]大于基准元素则j--，这样把大于基准元素的a[i]和小于基准元素的a[j]互换，以此类推，最终把基准元素与a[j]相交换，就得到一个a[j]左侧全部小于a[j]，右侧全部大于a[j]的一个近似有序数组，然后按照如上步骤重新寻找每个被a[j]分开的数组中的分隔点，最终得到有序数组。
在通用排序中，一般都会选取快速排序来解决问题。]]></description><category></category></item><item><title><![CDATA[设计模式入门之状态模式State]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25555945</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25555945</guid><author>IamMaking</author><pubDate>Sun, 11 May 2014 17:56:59 +0800</pubDate><description><![CDATA[//状态模式定义：
//允许一个对象在其内部状态改变时改变它的行为
//对象看起来似乎修改了它的类
//感觉状态模式在实现上跟策略模式太相似了，但是功能是不一样的
//状态模式根据状态的变化来选择相应的行为，不同的状态对应不同的类，各个实现类是平行的，但不可以相互交换
//而侧罗模式是根据需要来选择相应的实现类，各个实现类是平等的，可以相互交换
//实例：投票，根据不同的投票次数对投票者进行不同的]]></description><category></category></item><item><title><![CDATA[设计模式入门之策略模式Strategy]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25554259</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25554259</guid><author>IamMaking</author><pubDate>Sun, 11 May 2014 17:24:41 +0800</pubDate><description><![CDATA[//策略模式定义：
//定义一些列算法，把他们一个个封装起来，并且使他们可互相交换。
//本模式使得算法可独立于使用它的客户而变化
//实例：对不同的客户给出不同的折扣价格，上代码
//策略接口
public class Strategy {
	public double calcPrice(double goodsPrice);
}
//普通用户价格算法
public class NormalC]]></description><category></category></item><item><title><![CDATA[几款“理想”“习惯”应用体验报告]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25471691</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25471691</guid><author>IamMaking</author><pubDate>Sat, 10 May 2014 13:27:16 +0800</pubDate><description><![CDATA[从大四开始知道学习开始，自己就开始对实现理想、自我提升、养成习惯等行为感兴趣，于是在13年过年在家的时间趁着自学php，写了一个叫做习惯小站的网站（目前已经下线了），网站主要功能是签到，用户给自己添加一个习惯，比如：每天早起，每天进行签到，从连续签到和数字中得到满足感，从而刺激用户进步。找工作后就基本没怎么管过，也就没怎么关注这方面的产品了。
        今天分析四款产品：十年后，一起阔步，唯卡正能量，念。]]></description><category></category></item><item><title><![CDATA[设计模式入门之模板方法模式TemplateMethod]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25373279</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25373279</guid><author>IamMaking</author><pubDate>Fri, 09 May 2014 11:16:31 +0800</pubDate><description><![CDATA[模板方法模式定义：
定义一个算法的骨架，而将步骤延迟到子类中。这种模式可以使得在不改变算法骨架（模板）的情况下修改每个步骤的具体实现
从功能上来看，这个模式跟生成器模式有些相像，只不过生成器模式定义了创建对象的过程，而模板方法模式定义了算法过程
.接口和抽象类
（1）接口是特殊的抽象类，接口中所有方法必须是抽象的，不能有具体实现；而抽象类中可以有实现的方法
（2）抽象类不一定包含抽象方法，有抽象方法的类一定是抽象类
（3）需要约束子类行为时用接口，既要约束子类行为，又要为其提供公共功能时用抽象类
模板方法模]]></description><category></category></item><item><title><![CDATA[算法入门之归并排序（自底向上方法）]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25344761</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25344761</guid><author>IamMaking</author><pubDate>Thu, 08 May 2014 23:41:40 +0800</pubDate><description><![CDATA[与上一篇的自顶向下方法相反，我们直接从最小的问题开始解决，最终大问题迎刃而解
实现如下：
其中只有merge_sort改变了

function less($m, $n) {
    return $m < $n;
}

function merge(&$a, $lo, $mid, $hi) {
    $i = $lo;
    $j = $mid+1;
    $tmp = array]]></description><category></category></item><item><title><![CDATA[算法入门之归并排序（自顶向下方法）]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25344053</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25344053</guid><author>IamMaking</author><pubDate>Thu, 08 May 2014 23:32:27 +0800</pubDate><description><![CDATA[归并排序原理：
归并排序用到的是分治思想，即把一个大问题分成两个小问题，然后把一个小问题再分为两个更小的小问题，从最小的问题开始解决，然后把小问题的结果进行整合，最终解决大问题，这种思想是自顶向下的方法，特点是先进行递归，最终进行排序，在之后的快速排序中可以看到，快速排序特点是先进行排序，后进行递归]]></description><category></category></item><item><title><![CDATA[算法入门之希尔排序]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25249149</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25249149</guid><author>IamMaking</author><pubDate>Wed, 07 May 2014 23:26:34 +0800</pubDate><description><![CDATA[希尔排序原理：
希尔排序是把j]]></description><category></category></item><item><title><![CDATA[算法入门之插入排序]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25199201</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25199201</guid><author>IamMaking</author><pubDate>Wed, 07 May 2014 11:52:02 +0800</pubDate><description><![CDATA[插入排序原理：
从数组第二个元素开始，与之前的元素进行比较大小，如果小于q]]></description><category></category></item><item><title><![CDATA[算法入门之选择排序]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25166275</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25166275</guid><author>IamMaking</author><pubDate>Wed, 07 May 2014 00:08:46 +0800</pubDate><description><![CDATA[选择排序：
首先从一个序列里找出一个最小的yuan'su]]></description><category></category></item><item><title><![CDATA[设计模式入门之迭代器模式Iterator]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/25079539</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/25079539</guid><author>IamMaking</author><pubDate>Mon, 05 May 2014 23:31:45 +0800</pubDate><description><![CDATA[迭代器模式定义：提供一种方法顺序访问一个聚合对象中的各个元素，而又不需要暴露该对象的内部实现
Iterator:：迭代器接口。定义访问和遍历元素的接口
ConcreteIterator：具体的迭代器实现对象。实现对聚合对象的遍历，并跟踪遍历时的当前位置
Aggregate：聚合对象。定义创建相应迭代器对象的接口
ConcreteAggregate：具体聚合对象。实现创建相应的迭代器对象]]></description><category></category></item><item><title><![CDATA[设计模式入门之命令模式Command]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/24848267</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/24848267</guid><author>IamMaking</author><pubDate>Thu, 01 May 2014 19:51:23 +0800</pubDate><description><![CDATA[//命令模式定义：将一个请求封装为一个对象，从而使你可用不同的请求对客户进行参数化
//对请求排队或者记录请求日志，以及支持可撤销的操作
//模式结构
//命令接口
public interface Command {
	public void execute();
}
//具体的命令，需要封装与之对应的执行者Receiver
public class ConcreteCommand implem]]></description><category></category></item><item><title><![CDATA[设计模式入门之适配器模式Adapter]]></title><link>https://blog.youkuaiyun.com/IamMaking/article/details/22823083</link><guid>https://blog.youkuaiyun.com/IamMaking/article/details/22823083</guid><author>IamMaking</author><pubDate>Wed, 30 Apr 2014 10:43:59 +0800</pubDate><description><![CDATA[今天看完了适配器模式，开始用自己的话进行总结，希望有所提高。
顾名思义，适配器---我们在生活中都有用到过，比如我们经常用的笔记本的电源，就是个变压器，其实就是适配器，他的作用非常简单明了，就是把220V的电压转成笔记本可以用的电压。这里220v的电压就是被适配者，笔记本电压就是目标电压，而变压器就充当着适配器的身份。
再举个例子，一个人他会两种外语，英语和法语，突然有一天上级要让他去德国工作]]></description><category></category></item></channel></rss>