摘要:
原文链接:http://www.orlion.ga/749/ 解释: 中介者模式用于开发一个对象,这个对象能够在类似对象相互之间不直接交互的情况下传送或调解对这些对象的集合的修改,处理具有类似属性并且属性需要保持同步的非耦合对象时,最佳的做法是使用基于中介者模式的对象 需求: 同事类:有两个类A和B 阅读全文
摘要:
原文链接:http://www.orlion.ga/752/ 解释: 访问者模式构造了包含某个算法的截然不同的对象,在父对象以标准方式使用这些对象时就会将该算法应用于父对象。需要的对象包含以标准方式应用于某个对象的算法时,最佳的做法是使用访问者模式。假如一个对象中存在着一些与本对象不相干(或者关系较 阅读全文
摘要:
原文链接:http://www.orlion.ga/744/ 解释: 通过在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性。 代码: 代码来自:http://blog.csdn.net/hguisu/article/details/7533759,《PHP设计模式 阅读全文
摘要:
原文链接:http://www.orlion.ga/741/ 解释: 通过分配或委托至其他对象,委托设计模式能够去除核心对象中的判决和复杂的功能性。(就是能够减少is else语句) 需求: 对于一个用户集合UserList: UserList管理着许多用户,其中outXml()方法将这些用户以xm 阅读全文
摘要:
原文链接:http://www.orlion.ga/735/ 解释: 如果已有对象的部分内容或功能性发生了改变,但是不需要修改原始对象的结构,那么使用装饰器设计模式最合适 需求: 我们本来有一个UserList类: App.php: 其中outUsers是把UserList保存的所有的用户打印出来, 阅读全文
摘要:
原文链接:http://www.orlion.ga/719/ 解释: 观察者设计模式能够更便利创建和查看目标对象状态的对象,并且提供和核心对象非耦合的置顶功能性。 代码: 首先是CD类: 其中attachObserver()方法注入CD的观察者,而notifyObserver()方法则是通知CD的观 阅读全文
摘要:
原文链接:http://www.orlion.ga/727/ 解释: 原型设计模式创建对象的方式是复制和克隆初始对象或原型,这种方式比创建新实例更为有效,在需要经常创建资源集中型对象的情况下,原型模式可以提供更快速执行的途径。 代码: 声明一个克隆自身的接口: 具体克隆对象 App.php 关于浅复 阅读全文
摘要:
原文链接:http://www.orlion.ga/714/ 解释: 策略模式帮助构建的对象不必包含本身的逻辑,而是能够根据需要利用其他对象中的算法。 需求: 我们本来有一个CD类: 后来我们想让CD以JSON格式输出,这时可以直接加入一个getAsJson()方法,但是后期我们可能还会让CD以其他 阅读全文
摘要:
原文链接:http://www.orlion.ga/201/ 一、划分算法 1、划分 划分是快速排序的根本机制。划分数据就是把数据分成两组,所有大于特定值的数据在一组,所有小于特定值的在一组。比如将{3,1,9,0,4,7,2,6,5,8}以特定值为5划分为{3,1,0,4,5}和{9,0,7,6, 阅读全文
摘要:
原文链接:http://www.orlion.ga/193/ 由上图可看到希尔排序先约定一个间隔(图中是4),然后对0、4、8这个三个位置的数据进行插入排序,然后向右移一位对位置1、5、9进行插入排序按照此规律直到全部参与了排序。然后将间隔约定为4-1=3,然后继续进行如上的排序方法。具体过程如下: 阅读全文
摘要:
原文链接:http://www.orlion.ga/384/ 一、红黑树 1、普通的二叉树有一个问题,当插入的数据是有序的时候,二叉树就是非平衡的了,而对于非平衡树它的快速查找(插入、删除)指定数据项的能力就丧失了。红黑树就是一种解决非平衡树的方法,它是增加了某些特点的二叉搜索树。 2、自顶向下插入 阅读全文
摘要:
原文链接:http://www.orlion.ga/267/ 为什么使用二叉树呢?因为它通常结合了另外两种数据结构的优点:一种是有序数组,另一种是链表。在树中查找数据项的速度和在有序数组中查找一样快,并且插入数据项和删除数据项的速度也和链表一样。 二叉搜索树: 非平衡树:树的大部分的节点是在根的一边 阅读全文
摘要:
原文链接:http://www.orlion.ga/216/ 一、@Autowired beans.xml配置成如下: 当我们在配置文件中配置了<context:annotation-config/>时,spring会自动帮我们初始化四个bean(AutowiredAnnotationBeanPos 阅读全文
摘要:
原文链接:http://www.orlion.ga/205/ 一、AOP简介 1、AOP概念 参考文章:http://www.orlion.ml/57 2、AOP的产生 对于如下方法: 想在saveUser方法中执行保存用户之前和之后记录当前时间以求出saveUser花费了多少时间,方法有很多种,最 阅读全文
摘要:
原文链接:http://www.orlion.ga/189/ 一、scope bean的scope属性中常用的有两种:singleton(单例,默认)和prototype(原型,每次创建新对象) 例:beans.xml 在java文件中: 二、集合注入 UserDAOImpl.java: beans 阅读全文
摘要:
原文链接:http://www.orlion.ga/1153/ PDO是一种数据库抽象层,不止可以访问mysql还可以访问其他数据库。 一、__construct() $dsn:通常,一个 DSN 由 PDO 驱动名、紧随其后的冒号、以及可选的驱动程序的数据库连接变量信息,如主机名、端口和数据库名。 阅读全文
摘要:
原文链接:http://www.orlion.ga/1147/ mysqli有面向对象风格和面向过程风格,个人感觉还是用面向对象风格比较好(毕竟是面向对象) 1、mysqli::_construct() $host、$username、$passwd、$dbname、$port不用多说了,规则与my 阅读全文
摘要:
概述 在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount的值,如果refcount为0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的GC实现。然而在这种简单 阅读全文
摘要:
原文链接:http://www.orlion.ga/711/ 一、安装 然后修改php.ini,加上: 如果php-fpm启动的话就重启。 二、使用 将xhprof解压包中的xhprof_html目录和xhprof_lib目录复制到服务器web目录或者是项目目录或者是其他任何php有权限能访问到的目 阅读全文
摘要:
原文链接:http://www.orlion.ga/731/ php用clone复制对象有一个问题,下面用代码来说明问题: 输出是: 输出说明了一个问题:$cloneFoo->bar->name = 'new bar obj';这句话本意是想把$cloneFoo中的$bar的name修改了。但是却顺 阅读全文