自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 根据underscore精简的函数(数组篇)

这里将underscore.js内的函数进行精简,指在帮助理解或者快速回忆起underscore.js的原理,更深入的了解函数式编程。本文基于underscore.js1.8.3版本,参考手册为 http://www.css88.com/doc/underscore/这里将精简underscore中提供的针对数组的操作,部分API已经在《根据underscore精简的函数(集合篇)》中体现,不再

2017-05-17 18:03:25 1164

原创 根据underscore精简的函数(集合篇)

这里将underscore.js内的函数进行精简,指在帮助理解或者快速回忆起underscore.js的原理,更深入的了解函数式编程。本文基于underscore.js1.8.3版本,参考手册为 http://www.css88.com/doc/underscore/_.eachfunction each(arr,iteratee){ for(i=0,length=arr.length;

2017-05-16 10:50:11 465

原创 如何编写自己的JavaScript组件

相信大家在开发过程中一定简介或直接的引用了很多各种类库的组件。但是,有时候因为需求的缘故,网上的组件并不能满足我们的需求,这时候就需要我们自己来编写组件。本文以一个简单的例子,来了解一下一个组件搭建的大致流程。组件的基本结构jquery的做法是把挂在window对象上,将其他组件挂在挂在window对象上,将其他组件挂在上,进一步的避免了全局变量的污染。本例只有一个组件,所以采用的做法是直接将组件

2017-05-03 21:40:29 5562

原创 PHP设计模式系列:目录

为了方便查找和学习,现将PHP设计模式系列文章列出目录。PHP设计模式系列:简单工厂模式PHP设计模式系列(一):策略模式PHP设计模式系列(二):装饰模式PHP设计模式系列(三):代理模式PHP设计模式系列(四):工厂方法模式PHP设计模式系列(五):原型模式PHP设计模式系列(六):模板方法模式PHP设计模式系列(七):外观模式PHP设计模式系列(八):建造者模式PHP设计模式系列(九):观察者

2017-05-02 10:49:48 2280 1

原创 PHP设计模式系列(二十三):访问者模式

访问者模式表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。模式结构抽象访问者角色(Visitor):为该对象结构(ObjectStructure)中的每一个具体元素提供一个访问操作接口。该操作接口的名字和参数标识了要访问的具体元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它。具体访问者角色(ConcreteVisitor):实

2017-05-01 22:03:20 806

原创 PHP设计模式系列(二十二):解释器模式

解释器模式给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。模式结构AbstractExpression:抽象表达式。声明一个抽象的解释操作,该接口为抽象语法树中所有的节点共享。TerminalExpression:终结符表达式。实现与文法中的终结符相关的解释操作。实现抽象表达式中所要求的方法。文法中每一个终结符都有一个具体的终结表达式与之相对应。

2017-05-01 21:12:16 372

原创 PHP设计模式系列(二十一):享元模式

享元模式享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。模式结构享元模式包含如下角色:Flyweight: 抽象享元类ConcreteFlyweight: 具体享元类Unsha

2017-05-01 20:44:16 654

原创 PHP设计模式系列(二十):中介者模式

中介者模式中介者模式(Mediator Pattern)定义:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。模式结构中介者模式包含如下角色:Mediator: 抽象中介者ConcreteMediator: 具体中介者Colleague: 抽象同事类Concret

2017-05-01 19:53:22 554

原创 PHP设计模式系列(十九):职责链模式

职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。模式结构抽象处理者角色(Handler:Approver):定义一个处理请求的接口,和一个后继连接(可选)具体处理者角色(ConcreteHandler:President):处理它所负责的请求,可以访问后继者,如果可以处理请求则处理,否则将该

2017-05-01 19:15:57 625

原创 PHP设计模式系列(十八):命令模式

命令模式命令模式(Command Pattern):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。模式结构命令模式包含如下角色:Command: 抽象命令类ConcreteCommand:具体命令类Invoker: 调用者

2017-05-01 18:18:21 465

原创 PHP设计模式系列(十七):桥接模式

桥接模式桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。模式结构桥接模式包含如下角色:Abstraction:抽象类RefinedAbstraction:扩充抽象类Implementor:实现类接口ConcreteImplementor:具

2017-05-01 17:49:51 414

原创 PHP设计模式系列(十六):单例模式

单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。模式特点一个类只能有一个实例它必须自行创建这个实例它必须自行向整个系统提供这个实例结构图PHP代码实现<?php/** * 单例模式 */class Singleton{ private static $instance; private function __construct(){} publ

2017-05-01 15:58:24 545

原创 PHP设计模式系列(十五):迭代器模式

迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。模式结构Iterator: 抽象迭代器:所有迭代器都需要实现的接口,提供了游走聚合对象元素之间的方法。ConcreteIterator:具体迭代器:利用这个具体的迭代器能够对具体的聚合对象进行遍历。每一个聚合对象都应该对应一个具体的迭代器。Aggregate: 抽象聚合类。ConcreteAggregate:具体

2017-05-01 15:23:26 478

原创 PHP设计模式系列(十四):组合模式

组合模式组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 “组合对象” 的含义。模式结构Component :组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。 Leaf:叶子对象。叶子结点

2017-05-01 13:00:24 481

原创 PHP设计模式系列(十三):备忘录模式

备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。模式结构Originator(发起人):记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。Memento(备忘录):负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。Carataker(管理角色):对备忘录进行管理,保存

2017-05-01 11:16:45 728

原创 PHP设计模式系列(十二):适配器模式

适配器模式适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。模式结构适配器模式包含如下角色:Target:目标抽象类Adapter:适配器类Adaptee:适配者类适配器模式有对象适配器和类适配器两种实现,但由于类适配器

2017-05-01 10:23:12 546

原创 PHP设计模式系列(十一):状态模式

状态模式状态模式(State Pattern) :允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。模式结构状态模式包含如下角色:Context: 环境类State: 抽象状态类ConcreteState: 具体状态类结构图PHP代码实现<?php/** * 状态模式 *//

2017-04-30 16:28:57 1316

原创 PHP设计模式系列(十):抽象工厂模式

抽象工厂模式抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。模式结构抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品结构图PHP代码实

2017-04-30 15:44:22 1096

原创 PHP设计模式系列(九):观察者模式

观察者模式观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式是一种对象行为型模式。模式结构观察者

2017-04-30 12:50:23 521

原创 PHP设计模式系列(八):建造者模式

建造者模式建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。模式结构建造者模式包含如下角色:Builder:抽象建造者

2017-04-29 21:44:38 693

原创 PHP设计模式系列(七):外观模式

外观模式外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。模式结构外观模式包含如下角色:Facade: 外观角色SubSystem:子系统角色结构图PHP代码实现<?php/** * 外观模式

2017-04-29 20:43:13 1044

原创 PHP设计模式系列(六):模板方法模式

模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模式结构抽象模板(AbstractClass)角色: 定义一个或多个抽象方法让子类实现。这些抽象方法叫做基本操作,它们是顶级逻辑的组成部分。 定义一个模板方法。这个模板方法一般是一个具体方法,它给出顶级逻辑的骨架,而逻辑的组成步骤在对应的抽象操作中,这些操作将会

2017-04-29 20:07:52 1381

原创 PHP设计模式系列(五):原型模式

原型模式原型对象,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式就是clone就是内存拷贝,比new的好处是创建对象快速,适合大对象创建。原型模式与工厂模式作用类似,都是用来创建对象与工厂模式的实现不同,原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象,这样就免去了类创建时重复的初始化操作原型模式适用于大对象的创建,创建一个大对象需要很大的

2017-04-29 18:56:25 734

原创 PHP设计模式系列(四):工厂方法模式

工厂方法模式工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟

2017-04-29 14:42:04 2200

原创 PHP设计模式系列(三):代理模式

代理模式代理模式(Proxy Pattern) :给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式。模式结构代理模式包含如下角色:Subject: 抽象主题角色Proxy: 代理主题角色RealSubject: 真实主题角色结构图PHP代码实现<?php//Subject: 抽象主题角色interfac

2017-04-29 13:42:59 677

原创 PHP设计模式系列(二):装饰模式

装饰模式装饰模式(Decorator Pattern) :动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。其别名也可以称为包装器(Wrapper),与适配器模式的别名相同,但它们适用于不同的场合。根据翻译的不同,装饰模式也有人称之为“油漆工模式”,它是一种对象结构型模式。模式结构装饰模式包含如下角色:Component: 抽象

2017-04-29 12:37:38 761

原创 PHP设计模式系列(一):策略模式

策略模式策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。组成抽象策略角色:策略类,通常由一个接口或者抽象类实现。具体策略角色:包装了相关的算法和行为。环境角色:持有一个策略类的引用,最终给客户端调用。实现结构图步骤定义抽象角色类(定义好各个实现的

2017-04-28 15:46:26 1387

原创 PHP设计模式系列:简单工厂模式

简单工厂模式简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类

2017-04-28 09:25:22 1723

原创 PHP排序算法系列:桶排序

桶排序桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是比较排序,他不受到O(n log n)下限的影响。原理设置一个定量的数组当作空桶子。寻访

2017-04-26 22:19:40 842 1

原创 Vue.js--基于$.ajax获取数据并与组件的data绑定

Vue.js与jQuery不冲突???在实际的应用中,几乎90%的数据是来源于服务端的,前端和服务端之间的数据交互一般是通过ajax请求来完成的。 说到ajax请求,第一反应肯定想到了jQuery,项目中如果引入jQuery会帮助我们简化很多操作,简化DOM操作,ajax方法获取后端数据等。 然而,Vue.js和jQuery冲突吗??? 答案显然是不冲突!!! 接下来会实现Vue.js组件中

2017-04-25 15:58:53 27784 2

原创 PHP排序算法系列:归并排序

归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程归并排序的核心就是如何将两个有序序列进行合并,假定有两个有序数组,比较两个有序数组的首个元素,谁小就取谁

2017-04-23 10:07:24 524

原创 PHP排序算法系列:直接选择排序

直接选择排序直接选择排序(Straight Select Sorting) 的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,….,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,…..,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小

2017-04-21 09:50:02 475

原创 PHP排序算法系列:快速排序

快速排序快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C.A.R.Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原理快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随

2017-04-20 21:33:25 342

原创 PHP排序算法系列:希尔排序

希尔排序希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。原理先将整个待排元素序列分割成若干个子序列(由相隔某个“增量(gap)”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。希尔排序过程PHP代码实现function

2017-04-18 16:32:08 1913

原创 PHP排序算法系列:插入排序

插入排序有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后

2017-04-18 10:30:29 1175

原创 PHP排序算法系列:冒泡排序

冒泡排序冒泡排序(英语:Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。原理假定有一组数据(乱序),现要将这些数据按从小到大进行排序。 1 从左到

2017-04-15 10:08:13 494

原创 前端搭建Nodejs+npm+gulp开发环境

一 安装NodeJSNodeJS官网地址:https://nodejs.org/zh-cn/ 首先到NodeJS的官网下载安装文件,如果是windows的机子,会得到msi的安装文件,双击之后一路next就可以了。 安装完成后,在命令行执行node -v(显示NodeJS版本)和npm -v(显示npm版本)查看NodeJS是否安装成功。 NPM是随同NodeJS一起安装的包管理工具,能解决N

2017-03-31 10:37:01 638

原创 git常用命令简介

将自己的代码推送到github上时会经常用到一些命令,这里总结了一些常用的命令为后续在出现问题时可以快速的查找解决方案。git init  初始化git目录 git add  增加文件 git commit  提交修改到暂存区 -a跳过暂存区域 –amend撤销刚刚的提交操作 git status  查看文件状态 git log  查看修改日志 .gitignore  忽略某些文件

2017-02-21 14:19:05 244

原创 让ubuntu的man命令支持中文

在使用linux时,会碰到很多不是很熟悉的命令,这时通常需要使用man来查阅一些命令的帮助信息。但是默认的语言是英文的,这里记录一下让ubuntu的man命令支持中文的方法。ubuntu源里面已经包含了中文的man包,所以不用从其他地方down了,直接 sudo apt-get install manpages-zh 即可。这时运行man ls 即可看到中文的说明。

2017-02-20 20:35:51 669

原创 windows下MongoDB的安装

下载MongoDB安装文件进入MonogoDB的官网,进入下载页,选择合适自己系统版本的安装程序进行安装。安装MongoDB双击下载的MongoDB的.msi文件,这里采用默认的进行安装即可,也可点击“Custom”(自定义)安装选项来指定安装目录。这时候的MongoDB应该安装在C:\Program Files\MongoDB路径下(这里指的是64位操作系统)运行MongoDB搭建MongoDB的

2017-02-08 20:44:58 788

空空如也

空空如也

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

TA关注的人

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