摘要:
什么是模板方法模式 模板方法(Template Method)设计模式中使用了一个类方法templateMethod(), 该方法是抽象类中的一个具体方法, 这个方法的作用是对抽象方法序列排序,具体实现留给具体类来完成.关键在于模板方法模式定义了操作中算法的"骨架",而由具体类来实现.什么时候使用...
阅读全文
posted @ 2015-09-06 10:38
雪山飞猪
阅读(1179)
推荐(0)
摘要:
_toString方法是在打印对象时自动调用的魔术方法,如果不声明会报以下错Catchable fatal error: Object of class String could not be converted to 示例:PHP里有很多的字符串函数,假如要先过滤字符首尾的空格,再求出字符串的长度...
阅读全文
posted @ 2015-09-05 11:40
雪山飞猪
阅读(2239)
推荐(0)
摘要:
什么是装饰器模式作为一种结构型模式, 装饰器(Decorator)模式就是对一个已有结构增加"装饰".适配器模式, 是为现在有结构增加的是一个适配器类,.将一个类的接口,转换成客户期望的另外一个接口.适配器让原本接口不兼容的类可以很好的合作.装饰器模式是将一个对象包装起来以增强新的行为和责任.装饰器...
阅读全文
posted @ 2015-09-04 19:36
雪山飞猪
阅读(1346)
推荐(0)
摘要:
面向对象编辑中对象被赋予了自省的能力,而这个自省的过程就是反射.反射,直观理解应时根据到达地找出出发地和来源.比方说,我给你一个光秃秃的对象,我可以仅仅通过这个对象就能知道它所属的类,拥有哪些方法.反射指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类,方法,属性,参数等详细信息,包括注释...
阅读全文
posted @ 2015-09-04 11:43
雪山飞猪
阅读(8623)
推荐(0)
摘要:
单例模式的必要性:1. 目的:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。2. 要点: 1). 某一个类只能有一个实例; 2). 必须自行创建这个实例; 3). 必须自行向整个系统提供这个实例。3. 作用:避免重复实例化,节省系统资源。例如在数据库操作方面,会大量存在数据库连接...
阅读全文
posted @ 2015-09-03 12:00
雪山飞猪
阅读(377)
推荐(0)
摘要:
适配器很容易理解, 大多数人家庭都有手机转接器, 用来为移动电话充电,这就是一种适配器. 如果只有USB接头, 就无法将移动电话插到标准插座上. 实际上, 必须使用一个适配器, 一端接USB插头, 一端接插座. 当然, 你可以拿出电气工具,改装USB连接头, 或者重新安装插座, 不过这样会带来很多...
阅读全文
posted @ 2015-09-03 11:47
雪山飞猪
阅读(826)
推荐(0)
摘要:
thinkphp有一个自动填充字段的方法填充规则如下array( array(完成字段1,完成规则,[完成条件,附加规则]), array(完成字段2,完成规则,[完成条件,附加规则]), ......);注:研究源码后发现其实还有第4个参数,是给函数或者回调方法传参数用的,...
阅读全文
posted @ 2015-09-02 14:01
雪山飞猪
阅读(819)
推荐(0)
摘要:
安装说明系统环境:CentOS-6.3 安装方式:yum install (源码安装容易产生版本兼容的问题)安装软件:系统自动下载SVN软件检查已安装版本 #检查是否安装了低版本的SVNrpm -qa subversion#卸载旧版本SVNyum remove subversion一.安装SVNyu...
阅读全文
posted @ 2015-09-01 23:06
雪山飞猪
阅读(12734)
推荐(4)
摘要:
简单来说,HTTP就是一个基于应用层的通信规范:双方要进行通信,大家就要遵守一个规范---HTTP协议。HTTP协议从WWW服务器超文本到本地浏览器 ,可以使浏览器更加高效。HTTP协议不仅能保证计算机正确快速地传输超文本文档,还能确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图...
阅读全文
posted @ 2015-09-01 22:29
雪山飞猪
阅读(370)
推荐(0)
摘要:
一致性哈希算法是分布式系统中常用的算法,为什么要用这个算法?比如:一个分布式存储系统,要将数据存储到具体的节点(服务器)上, 在服务器数量不发生改变的情况下,如果采用普通的hash再对服务器总数量取模的方法(如key%服务器总数量),如果期间有服务器宕机了或者需要增加服务器,问题就出来了。 同一个k...
阅读全文
posted @ 2015-09-01 14:01
雪山飞猪
阅读(6211)
推荐(1)
摘要:
原型设计模式(Prototype Design Pattern)很有意思, 因为它使用了一种克隆技术来复制实例化的对象. 新对象是通过复制原型实例来创建的. 在这里, 实例是批实例化的具体类.原型设计模式的目的是通过使用克隆来减少实例化对象的开销.与其从一个类实例化新对象, 完全可以使用一个已有实例...
阅读全文
posted @ 2015-08-31 11:20
雪山飞猪
阅读(883)
推荐(0)
摘要:
模型:WeChat(回复参考weiphp)find($mid); } /** * 处理来自微信服务器的消息 * @param $callback * @access public * @return void */ static public...
阅读全文
posted @ 2015-08-30 23:36
雪山飞猪
阅读(1428)
推荐(0)
摘要:
面向对象的三大基本特性是:封装、继承、多态 。1.封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是 面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象...
阅读全文
posted @ 2015-08-30 23:34
雪山飞猪
阅读(1764)
推荐(0)
摘要:
工厂模式(FactoryDesign Pattern)作为一种创建型设计模式, 遵循了开放-封闭原则, 对修改封闭, 对扩展开放. 工厂方法(Factory Method)模式就是要创建"某种东西". 对于工厂方法模式, 要创建的"东西"是一个产品,这个产品与创建它的类之间不存在绑定.实际上,...
阅读全文
posted @ 2015-08-30 17:30
雪山飞猪
阅读(815)
推荐(1)
摘要:
今天碰到一个比较有意思的问题, 就是把A到Y这25个字母以下面的形式输出出来ABCDEPQRSFOXYTGNWVUHMLKJI问题很有意思,就是转圈圈把字母填到表格中,要输出这样的格式,其实就需要构造一个下面这样的表格12345161718186152425207142322218131211109...
阅读全文
posted @ 2015-08-28 10:44
雪山飞猪
阅读(2068)
推荐(1)
摘要:
合理设计和使用索引在关键字段的索引上,建与不建索引,查询速度相差近100倍。差的索引和没有索引效果一样。索引并非越多越好,因为维护索引需要成本。每个表的索引应在5个以下,应合理利用部分索引和联合索引。不在结果集中的结果单一的列上建索引。比如性别字段只有0和1两种结果集,在这个字段上建索引并不会有太多...
阅读全文
posted @ 2015-08-26 15:11
雪山飞猪
阅读(930)
推荐(0)
摘要:
数据库的优化主要包括两个方面,一方面是SQL程序语句的优化,另一方面是数据库服务器和配置的优化。查询语句优化主要涉及两个方面:一些普遍遵循的原则,以及怎样对查询语句进行性能分析。基本语句优化的10个原则 在数据库的应用中,程序员通过不断地实践总结了很多经验,这些经验是一些普遍适用的规则。每...
阅读全文
posted @ 2015-08-26 15:03
雪山飞猪
阅读(677)
推荐(0)
摘要:
Session即会话,批一种持续性的、双向的链接。Sesstion和Cookie本质上没有什么区别,都是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接状态的机制。 Session的实现可以有多种,如URL重写、Cookie,通过在Cookie中存储sessionID实...
阅读全文
posted @ 2015-08-26 12:11
雪山飞猪
阅读(287)
推荐(0)
摘要:
Cookie的基本概念和设置Cookie在远程浏览器端存储数据并以此跟踪和识别用户的机制。从实现上说,Cookie是存储在客户端上的小段数据,浏览器(即客户端)通过HTTP协议和服务器端进行Cookie交互。 注意 这里说的是客户端而不是浏览器,实际能管理Cookie的不仅仅是浏览器,当然最常见的...
阅读全文
posted @ 2015-08-26 12:09
雪山飞猪
阅读(299)
推荐(0)
摘要:
上传文件和POST非常相似,都是通过表单采取POST方法提交的。先新建一个接收文件的页面upload.php:var_dump($_POST);var_dump($_FILES);再建立一个发送文件的test.php$post_data = array( 'name' => 'chenqion...
阅读全文
posted @ 2015-08-25 17:12
雪山飞猪
阅读(807)
推荐(0)
摘要:
在移动端,因手机的配置和3/4G网络的原因,从两个方面解决性能优化问题,1.加载不超过3秒,用loading或者资源不要超过1M。2.渲染速度。 基于以上两个方面,所有影响首屏加载和渲染的代码应在处理逻辑中后置。 加载优化: 1.Http请求: 减少Http请求,手机浏览器同时响应请求为4个请求,所
阅读全文
posted @ 2015-08-25 15:00
雪山飞猪
阅读(388)
推荐(0)
摘要:
Socket通常称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通过套接字向网络发出请求或者应答网络请求。Socket即不是一个程序,也不是一个协议,其只是操作系统提供的通信层的一组抽象的API。 由于Socket是开放的、透明的,一旦运行,任何操作Socket的语言都...
阅读全文
posted @ 2015-08-25 14:08
雪山飞猪
阅读(1362)
推荐(0)
摘要:
防止垃圾评论与机器人的攻击手段如下:1)IP限制。其原理在于IP难以伪造。即使是对于拨号用户,虽然IP可变,但这也会大大增加共攻击的工作量。2)验证码。其重点是让验证码难于识别,对于“字母+数字”的验证码,关键在于形变与重叠,增加其破解中切割和字模比对的难度,人眼尚且难以辨识,机器就更难处理了,再者...
阅读全文
posted @ 2015-08-25 09:59
雪山飞猪
阅读(452)
推荐(0)
摘要:
要设计一留言本,一切都将以留言本为核心,抓到什么是什么,按流程走下来,即按用户填写信息->留言->展示的流程进行。现在用面向对象的思维思考这个问题,在面向对象的世界,会想尽办法把肉眼能看见的以及看不见的,但是实际存在的物或者流程抽象出来。既然是留言本,那么就存在留言内容这个实体,这个留言实体(dom...
阅读全文
posted @ 2015-08-23 12:56
雪山飞猪
阅读(302)
推荐(0)
摘要:
什么是依赖倒置呢?简单地讲就是将依赖关系倒置为依赖接口,具体概念如下:1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象(父类不能依赖子类,它们都要依赖于抽象类)2.抽象不能依赖于具体,具体应该要依赖于抽象。注意,这里的接口不是狭义的接口。为什么要依赖接口?因为接口体现对问题的抽象,同时由于抽...
阅读全文
posted @ 2015-08-23 02:01
雪山飞猪
阅读(1962)
推荐(1)
摘要:
替换原则由MIT计算机科学实验室的Liskov女士在1987年的OOPSLA大会上的一篇文章中提出,主要阐述有关继承的一些原则,故称里氏替换原则。2002年,Robert C.Martin出版了一本名为《Agile Software Development Principles Patterns a...
阅读全文
posted @ 2015-08-23 01:12
雪山飞猪
阅读(1436)
推荐(0)
摘要:
1.什么是“开放-封闭”随着软件系统规模的不断增大,软件系统的维护和修改的复杂性不断提高,这种困境促使法国工程院士Bertrand Meyer在1998年提出了“开放-封闭”(Open-Close Principle,OCP)原则,这条原则的基本思想是:Open(Open for extendtio...
阅读全文
posted @ 2015-08-22 23:32
雪山飞猪
阅读(1746)
推荐(0)
摘要:
设计应用程序的时候,如果一个模块包含多个子模块,那么我们应该小心对模块做出抽象。设想该模块由一个类实现,我们可以把系统抽象成一个接口。但是要添加一个新的模块扩展程序时,如果要添加的模块只包含原系统中的一些子模块,那么系统就会强迫我们实现接口中的所有方法,并且清寒要编写一些哑方法。这样的接口被称为肚胖...
阅读全文
posted @ 2015-08-22 12:15
雪山飞猪
阅读(1763)
推荐(0)
摘要:
单一职责原则(Single Pesponsibility Principle, SRP)单一职责有两个含义: 一个是避免相同的职责分散到不同的类中, 别一个是避免一个类承担太多职责为什么要遵守SRP呢?(1)可以减少类之间的耦合如果减少类之间的耦合,当需求变化时,只修改一个类,从而也就隔离了变化;如...
阅读全文
posted @ 2015-08-22 11:34
雪山飞猪
阅读(2149)
推荐(0)
摘要:
PHP里有一套错误处理机制,可以使用set_error_handler接管PHP错误处理,也可以使用trigger_error函数主动抛出一个错误。set_error_handler()函数设置用户自定义的错误处理函数。函数用于创建运行期间的用户自己的错误处理方法。它需要先创建一个错误处理函数,然后...
阅读全文
posted @ 2015-08-22 10:53
雪山飞猪
阅读(375)
推荐(0)
摘要:
构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓动的对象 duration:Number -- 缓动持续时间 vars:Object -- 其它参数(特有属性29个,插件17个,公共属性10
阅读全文
posted @ 2015-08-20 18:06
雪山飞猪
阅读(663)
推荐(0)
摘要:
接口是对多重继承的一种变相实现, Traits可以被视为一种加强型的接口.先来看如下代码trait Hello{ private $name = 'chenqionghe'; public function sayHello() { echo 'hello '; ...
阅读全文
posted @ 2015-08-17 09:50
雪山飞猪
阅读(296)
推荐(0)
摘要:
其中就有一个SPL(标准PHP库)的尝试,SPL中实现一些接口,其中最主要的就是Iterator迭代器接口,通过实现这个接口,就能使对象能够用于foreach结构,从而在使用形式上比较统一.比如SPL中有一个DirectoryIterator类,这个类在继承SplFileInfo类的同时,实现Ite...
阅读全文
posted @ 2015-08-17 09:49
雪山飞猪
阅读(250)
推荐(0)
摘要:
多态的确切含义是: 同一类对象收到相同消息时,会得到不同的结果。而这个消息是不可预测的。多态,顾名思义,就是多种状态,多种结果。以java为例,由于java是强类型语言,因此变量和函数返回值是有状态的。比如,实现一个add函数的功能,其参数可能是两个int型整数,也可能是两个float型浮点数,而返...
阅读全文
posted @ 2015-08-17 09:47
雪山飞猪
阅读(446)
推荐(0)
摘要:
面向对象的优势在于类的复用.继承与多态都是对类进行复用,它们是一个类级别的复用,一个是方法级别的复用.提到继承必提组合,二者有何异同?PHP到底有没有多态?若没有,则为什么没有?有的话,和其他语言中的多态又有什么区别?继承和组合都是提高代码可重用性的手段.在设计模型时,可以按照语言识别类之间的组合关...
阅读全文
posted @ 2015-08-17 09:43
雪山飞猪
阅读(217)
推荐(0)
摘要:
如何防止调用不存在的方法而出错,使用__call魔术重载方法.__call方法原型如下:mixed __call(string $name,array $arguments)当调用一个不可访问的方法(如未定义,或者不可见时), __call()就会被调用.其中$name参数是要调用的方法名称.$ar...
阅读全文
posted @ 2015-08-17 09:40
雪山飞猪
阅读(2648)
推荐(0)
摘要:
当调用或者设置类不存在的方法时,_会调用_set和__get方法以下是示例值为'.$value.''; $this->$name = $value; } public function __get($name) { if(!isset($this->$n...
阅读全文
posted @ 2015-08-17 09:39
雪山飞猪
阅读(611)
推荐(0)
摘要:
PHP中的面向对象先看PHP源码中对变量的定义#zend/zend.htypedef union_zvalue_value{ long lval;/* long value */ double dval;/* double value */ struct { c...
阅读全文
posted @ 2015-08-17 09:38
雪山飞猪
阅读(550)
推荐(0)
摘要:
如客源状态为1:2:3:5:6:9,其中6代表成交状态如果要统计查询出有6这个状态的客源,可以用函数LOCATE(字符,搜索的字符串)来,示例:统计每个分组下全部客源数total,成交客源数dealSELECT count(id) total,`group_id`,`group_name`,`pro...
阅读全文
posted @ 2015-08-01 14:45
雪山飞猪
阅读(402)
推荐(0)
摘要:
du -s [文件名]du -sh [文件名] ls -lh [文件名]
阅读全文
posted @ 2015-08-01 14:37
雪山飞猪
阅读(239)
推荐(0)