自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GeorgeWang

change the world.

  • 博客(43)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 并查集

第一次遇到并查集这个数据结构,发现这是一种很高效的算法,便打算纪录下来;当题目给定多条整数对,我们需要设计数据结构来保存已知的所有整数对的足够多的信息,并用它们来判断一对新对象是否是相连的; 并查集就适用于这种动态连通性问题。 union-find算法有这五种方法 * UF * void union() * int find() * bool connected

2016-09-04 23:16:15 498 1

原创 JavaScript 数组和字符串操作

数组1. 数组的创建var obj1 = new Array();var obj2 = new Array(5);var obj3 = new Array(1,2,3);var obj4 = [];其中第一种定义是没有定义size的,单单创建一个数组;第二种定义虽然指定了size,但是满了之后仍然可以往里面添加元素,并且数组长度也会随之改变;一般实际开发中会使用第四种,而不是第一种;2

2016-08-15 00:34:39 417

原创 原型模式 详解

定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象; 创建型模式 浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值; 深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值;角色抽象原型类(Prototype):抽象原型类,声明克隆自身的接口;具体原型类(ConcreteProt

2016-07-20 00:57:45 537

原创 备忘录模式 详解

定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态; 行为型模式角色发起人角色(Originator):记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据;备忘录角色(Memento):负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态;管理者角色(Caretaker):对备忘录 进行管理,保存和提供备忘录;从网

2016-07-16 14:11:05 489

原创 责任链模式 详解

定义是一种对象的行为模式,在责任链模式里,很多对象由每个对其下家的引用而连接起来形成的一条链,请求在这个链上传递,直到链上的某一个对象决定处理此请求,发出这个请求的客户端并不知道链上的哪一个对象最终会处理这个请求; 行为型模式角色抽象处理者角色(Handler):定义处理请求的接口;抽象处理者角色(ConcreteHandler):具体处理者接到请求后,可以选择处理该请求或者传递给下家;

2016-07-15 00:51:05 545

原创 代理模式 详解

定义代理模式是对象的结构模式,代理模式给某一个对象提供一个代理对象,并由代理对象控制原对象的引用; 行为型模式角色抽象对象角色(AbstractObject):声明了目标对象和代理对象的共同接口,任何可以使用目标对象的地方都可以使用代理对象;目标对象角色(RealObject):定义了代理对象所代表的目标对象;代理对象角色(ProxyObject):代理对象内部含有目标对象的引用,从而可

2016-07-14 02:03:51 404

原创 解释器模式 详解

解释器模式 详解定义给定一种语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子; 行为型模式角色上下文环境(Context):一般用来存放文法中各个终结符所对应的具体值;抽象表达式(Expression):声明一个所有的具体表达式角色都需要实现的抽象接口,这个接口主要是interpret方法,称作解释操作;终结符表达式(Terminal Expressio

2016-07-12 08:27:10 338

原创 状态模式 详解

定义当一个对象在内在状态改变时允许改变其行为,这个对象看起来像是改变了其类; 行为型模式角色上下文环境(Context):定义了客户程序需要的接口并维护了一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete State对象来处理;抽象状态(State):定义了一个接口以封装使用上下文环境的一个特定状态相关的行为;具体状态(Concrete State): 实现抽象状态定

2016-07-10 18:11:22 441

原创 组合模式 详解

定义将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性; 结构型模式角色抽象构件角色(Component):组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理,;部分构件角色(Leaf):没有子节点,实现抽象构件角色的接口;组合构件角色(Composite): 有子节点,实现抽象构件的角色声

2016-07-09 15:57:33 406

原创 迭代器模式 详解

定义提供一种方法访问一个容器对象中各个元素,而又不需要暴露该对象的内部细节; 行为型模式角色迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口;具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置;容器角色(Container): 容器角色负责提供创建具体迭代器角色的接口;具体容器角色(Concrete Co

2016-07-09 02:38:08 354

原创 桥接模式 详解

定义将抽象部分与它的实现部分分离,是它们都可以独立地变化; 结构型模式角色抽象化角色(Abstaction):定义抽象接口,拥有一个Implementor类型对象引用;重定义抽象化角色(RefinedAbstraction):扩展Abstraction中的接口定义;实现化角色(Implementor): 实现化的接口;具体实现化角色(ConcreteImplementor): 实现实现

2016-07-05 00:53:24 1183

原创 工厂模式 详解

定义定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类; 创建类模式角色抽象工厂角色(AbstractFactory):模式的核心,提供具体工厂角色必须实现的接口或者必须继承的父类;具体工厂角色(ConcreteFactory):含有和具体业务逻辑有关的代码,由应用程序调用以创建对应的具体产品的对象;抽象产品角色(AbstractProduct):

2016-07-04 00:57:28 487

原创 命令模式 详解

定义旨在将方法调用、请求或操作封装到单一对象中,从而根据我们不同的请求对客户进行参数化和传递可供执行的方法调用。此外,这种模式将调用操作的对象与知道如何实现该操作的对象解耦,并在交换出具体类(对象)方面提供更大的整体灵活性;它为我们提供了一种分离职责的手段,这些职责包括从执行命令的任意地方发布命令以及将该职责转而委托给不同对象; 创建类模式角色命令角色(Command):是一个抽象类,类中对

2016-07-02 21:34:58 482

原创 适配器模式 详解

定义将一个类转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作; 创建型模式角色目标接口(Flyweight):客户所期待的接口,目标可以是具体的或抽象的类,也可以是接口;需要适配的类(Adaptee):需要适配的类或适配者类;适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口;适用场景已经存在的类的接口不符合我们的需求;

2016-07-02 17:33:41 389

原创 代码设计 六大原则

单一职责原则 Single Responsibility Principle定义:一个类或者一个接口,最好只负责一项职责。问题由来:类T负责两个不同的职责P1和P2。由于职责P1需要发生改变而需要修改T类,就有可能导致原来运行正常的职责P2功能发生故障。解决方法:遵循单一职责原则。分别建立新的类来对应相应的职责;这样就能避免修改类时影响到其他的职责; 当遇到职责扩散的时候,在逻辑足够简单的时候,

2016-07-02 02:13:22 16128

原创 单例模式 详解

定义保证一个类仅有一个实例,并且提供一个访问它的全局访问点; (在该实例不存在的情况下,可以通过一个方法创建一个类来实现创建类的新实例;如果实例已经存在,它会简单返回该对象的引用) 创建型模式适用场景当类只有一个实例而且客户可以从一个众所周知的访问点访问它时;该唯一的实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时;实现代码var Singleton =

2016-07-01 00:34:05 272

原创 享元模式 详解

定义采用一个共享来避免大量拥有相同内容对象的开销;运用共享技术有效地支持大量细粒度的对象;(共享的对象必须是不可变的,不然一变则全变) 享元模式分为单纯享元模式和复合享元模式; 结构型模式角色抽象享元角色(Flyweight):此角色是所有的具体享元类的超类,为这些类规定出需要实现的公共接口或抽象类。那些需要外部状态的操作可以通过方法的参数传入。抽象享元的接口使得享元变得可能,但是并

2016-06-28 07:14:06 494

原创 建造者模式 详解

定义是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 创建类模式角色建造者角色(Product):给出一个抽象接口,以规范产品对象的各个组成部分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建;抽象建造者角色(ConcreteBuilder):实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。在创建过程完

2016-06-27 01:33:55 678

原创 动态规划 分类

动态规划分类1. 线性DP2. 区间DP3. 树形DP4. 状态DP5. 背包问题题型1. 背包问题(包括各种背包)2. 最长非降子序列模型3. 最大字段和模型4. 最长公共子序列(LCS)模型5. 括号序列模型6. 递推模型7. 线段模型8. 单词划分模型9. 股票模型10. 连续划分模型11. 游戏模型

2016-06-26 01:39:11 694

原创 外观模式 详解

定义为子系统中的一组接口提供一个统一的入口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。角色外观角色(Facade):在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任;在正常的情况下,它将所有从客户端发来的请求委派到相应的子系统,传递给相应的子系统对象处理;子系统角色(Subsystem classes):通常有一到多个子系统角色,每一个

2016-06-26 00:52:26 417

原创 策略模式 详解

定义Strategy定义了一系列的算法,并且将每个算法封装来,而且使它们还可以相互替换;策略模式让算法独立于使用它的客户而独立变化;角色环境类(Context):用一个ConcreteStrategy对象来配置,维护一个对Strategy对象的引用,可定义一个接口来让Strategy访问它的数据;抽象策略类(AbstractStrategy):定义所有支持的算法的公共接口。Context使用这个

2016-06-21 13:22:12 414

原创 装饰者模式 详解

定义Decorator是一种结构型设计模式,旨在促进代码复用; 装饰者模式可以动态的给一个对象增加其他职责;就扩展功能来说,装饰者模式比生成子类更为灵活。角色抽象构件角色(AbstractComponent):定义对象的接口,可以给这些对象动态增加职责;抽象装饰角色(AbstractDecorator):维护一个指向Component实例的引用,并且定义了与Component一致的接口;具体

2016-06-20 19:28:39 498

原创 中介者模式 详解

定义是一个行为设计模式,它允许我们公开一个统一的接口,系统的不同部分可以通过该接口进行通信,而不需要显示的相互作用;适用场景如果一个系统的各个组件之间看起来有太多的直接关系,这个时候则需要一个中心控制点,以便各个组件可以通过这个中心控制点进行通信; 该模式促进松散耦合的方式是:确保组件的交互是通过这个中心点来进行处理的,而不是通过显示的引用彼此;角色抽象中介者(AbstractMediato

2016-06-19 17:17:46 4048 1

原创 A* 寻路

定义寻路步骤从起点A开始,把它作为待处理的方格存入到一个开启列表(开启列表就是一个等待检查方格的列表)寻找起点A周围可以到达的方格,将它们存入到开启列表,并设置它们的父方格为A从开启列表中删除起点A,并把A加入到关闭列表(关闭列表中存放的是不需要再次检查的方格)从开启列表中选择 F 值最低的方格,进行移动,把最低的方格设置为当前点,设置当前点的父方格为 A,假设为P把点 P 从开启列表中删

2016-06-18 20:26:59 510

原创 观察者模式 详解

定义一个或多个观察者对目标的状态感兴趣,它们通过将自己依附在目标对象上以便注册所感兴趣的内容。目标状态发生改变并且观察者可能对这些改变感兴趣,就会发送一个通知消息,调用每个观察者的更新方法。当观察者不再对目标感兴趣的时候,它们可以简单的将自己从中分离。组成角色抽象目标角色(AbstractSubject)抽象观察者角色(AbstractObserver)具体目标角色(ConcreteS

2016-06-18 17:31:50 1339 1

原创 二叉树遍历的所有递归和迭代实现

@[二叉树|排列|前序|中序|后序]无论是在面试过程中还是实际项目中,我们都会遇见二叉树的遍历,当然这个只要了解了原理,其实很简单;二叉树的排列包括(注意顺序) * 前序排列:先遍历树的跟节点,然后是树的左子节点,再然后才是右子节点; * 中序排列:先遍历树的左子节点,然后是跟节点,再然后才是右子节点; * 后序排列:先遍历树的左子节点,然后是树的右子节点,再然后

2016-06-16 02:33:34 2781

原创 Javascript 创建对象的6种方法

在Javascript开发过程中经常会遇见创建对象的时候;下面我总结了6种常用创建对象的方法:构造函数法原型法构造函数+原型法动态原型法JSON法create法1.构造函数法其主要就是利用构造函数function来创建对象.具体例子:function Person(name, age, sex, phone){ //prototy this.name = name;

2016-06-15 01:45:14 454

原创 Chipmunk物理引擎

层(Layer)的生命周期函数: (1)ctor构造函数。初始化层时调用; (2)onEnter(),进入层时调用; (3)onEnterTransitionDidFinish()。进入层而且过渡动画结束时调用; (4)onExit()。退出层时调用; (5)onExitTransitionDidStart()。退出层而且开始过渡动画时调用; (6)cleanup()。层对象被清除的时候

2016-03-03 19:22:59 498

原创 cocos2dx 锚点的位置设置

关于cocos2dx 锚点的位置setAnchorPoint的取值范围0~1,距离设置的是一张图片setAnchorPoint(Point(0,0))表示在图片左下角,setAnchorPoint(Point(1,1))表示在图片右上角setAnchorPoint(Point(0.5,0,5))表示在图片的中心点setAnchorPoint(Point(0,1))表示在图片的左上角setAnchor

2016-03-02 08:29:24 3348

原创 KVO和KVC的理解

这是关于KVO和KVC的理解,在学习ios的路线中,绕不开这两个概念;我们首先对这两个的概念进行理解;KVO:键值监听,当指定的对象的属性被修改了,允许对象接收到通知的机制。每次指定的被观察对象的属性被修改的时候,KVO都会自动的去通知相应的观察者。KVC:最基本的KVC由NSKeyValueCoding协议提供支持,一个非正式的协议,提供一种机制间接访问对象的属性,KVO就是基于KV

2016-01-20 22:40:32 566

原创 iOS 触摸事件处理

触摸事件有三种方法,分别是碰到屏幕时,在屏幕上滑动时,离开屏幕时,这三个方法都是自动触发的;- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [super touchesBegan:touches withEvent:event];//让下一个响应者可以有机会继续处理}- (void)touchesM

2016-01-20 09:50:02 425

原创 MediaPlayer实现视频播放

在iOS开发中,经常会遇到视频的播放,还好ios framework 给我们提供这样的控件-MediaPlayer但是,要是用这个控件,先要将加入framework中,以及import;好,接下来我们看代码:我们先定义视频对象/** 视频播放控制器*/@property (nonatomic,strong) MPMoviePlayerController *moviePl

2016-01-19 23:39:38 508

原创 tableView下拉图片放大

这个实现很简单,只需要两个东西,分别是tableView和imageView;先定义这两个东西:@property (strong, nonatomic)UITableView *tableView;@property (strong, nonatomic)UIImageView *topImageView;接着就是对这两个东西进行初始化 self.tableView

2016-01-19 11:58:53 372

原创 viewDidLoad和loadView和viewWillAppear的区别

相信大家在学习ios的过程中,肯定会遇到这些方法,现在我来讲讲这些方法的区别。我们先来了解每个方法的作用:viewDidLoad-加载视图;viewWillAppear-VC对象的视图即将加入窗口时调用;viewDidAppear-VC对象的视图已经加入窗口时调用;viewWillDisappear-VC对象的视图即将消失,被覆盖或是隐藏时调用;viewDidDisappe

2016-01-19 09:38:09 626

原创 如何实现切换ViewController

这里我知道的有两种方法,不知道其他人有没有比较好的方法可以留言给我哈。。。第一种方法是创建多个ViewController,再用一个ViewController包含前面的创建的ViewController(我觉得这种比较好处理后面每个包含的ViewController里面的事情)第二种方法是创建多个View,再用一个ViewController包含前面的View好,先祭上第一种

2016-01-15 06:23:41 607

原创 原型模式,建造者模式,桥接模式

同样的,今天就介绍三种模式;先从第一种模式开始讲起,原型模式;用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,原型模式要解决的问题是不用重新初始化对象,而是动态的获取对象运行时的状态,你只需要对对象做部分属性或行为的修改;原型模式实现的关键是实现Clone函数,对于c++来说,其实就是拷贝构造函数,需要实现深拷贝;看代码://父类class Resume

2015-11-01 03:53:50 882

原创 工厂模式,策略模式,适配器模式

今天一下介绍三种设计模式,这样面试的时候就不怕被问了!首先是工厂模式,工厂模式分为简单工厂模式,工厂方法模式,抽象工厂模式;1,简单工厂模式,他的主要的特点是需要在工厂中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类。以怪兽来做例子:   enum MonsterType {MonsterTypeA, MonsterTypeB};class Monster{p

2015-11-01 02:43:47 910

原创 cocos2dx 的内存管理机制

从c++的方面考虑,目前c++没有完整的垃圾回收机制,cocos2dx中的内存管理机制可以看成是基于智能指针的一个变体,但是同时也可以像使用垃圾回收机制那样,不需要声明智能指针。由于cocos2dx是从iphone中抽离出来的,所以很多东西和oc很像,就当作复习oc吧;1.引用计数cocos2dx的所有的对象几乎都继承自Ref基类,它的作用主要就是对对象进行计数的管理;当一个对象使用由

2015-10-22 22:00:17 1161

原创 init() 和 onEnter() 的区别

init()和onEnter()这俩个方法都是CCNode的方法。其区别如下:1.其被调用的顺序是先init(),后onEnter()。2.init()在类的初始化时只会调用一次。3.onEnter在该类被载入场景的时候被调用,可能会发生多次。4.CCLayer* cclayer = new MyLayer();

2015-07-14 15:29:21 421

原创 opengl 关于纹理贴图

网上的大部分是根据输入图像的,但是我要弄得是根据程序生成纹理贴图好了,开始第一个是关于根据程序生成的纹理贴图的棋盘#include #include #include /* Create checkerboard texture */#define checkImageWidth 64#define checkImageHeight 64stati

2014-11-29 17:08:50 1286

50个C、C++面试题

50个C、C++面试题,这里面包含了很多有用的面试题和代码,很不错的资源分享给大家

2015-09-02

游戏编程PDF

游戏编程,很全,一本PDF,尽情下载吧,c++游戏编程,学游戏的别错过的书

2015-05-20

安卓版贪吃蛇游戏

安卓版贪吃蛇游戏,内容较丰富,能够运行,代码简单又注释哦,不懂可问我

2014-05-22

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除