散列是什么?哈希又是什么?何谓散列表?散列函数又是个什么东东。散列表是一种设计特别牛逼的数据结构。 什么是散列表 散列表(Hash table,也叫哈希表),是存储Key-Value映射的集合。可根据键(key)实现近O(1)的时间内对内存中数据进行读写的数据结构。 需要说明的是这里所说的 散列表 …
关于进程与线程的简单理解(以工厂举例:cup-》工厂,车间-》进程,线程-》工人),可以参考阮一峰的博文进程与线程的一个简单图文解释。 先来了解下进程和线程的概念 关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”。 进程 进程(Process)是计…
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该…
装饰模式:通过在运行时合并对象来扩展功能的一种灵活机制。这是一种比较简单的模式,在父类底下造一个装饰子类。现在我们有地形空间(Tile),平原(Plains)是地形空间的一种,然后地形空间都是被污染的与充满钻石的状态。每个地形空间都有相应的能源指数。<?php /** * 装饰模式 * Cre…
你还记得“组合优于继承”这个设计原则吗?该原则体现了类和对象之间的组织弹性。为了使项目更具灵活性,我们需要将类按一定结构组织起来,以便它们的对象在代码运行时能被构造为有用的结构。下面我们来介绍组合模式,将一组对象组合为可像单一对象一样被使用的结构,这是组合模式的原则。好比是一棵树,有枝有叶,但是你使…
平面继承层次的出现是工厂方法模式带来的一个问题。每次添加产品家族时,你就被迫去创建一个相关的具体创造者。一个快速增长的系统会包含原来越多的产品,这样维护起来就会非常的恶心。一个避免这种依赖的办法就是使用clone复制已存在的具体产品,具体产品本身便成了它们自己生成的基础。<?php /** *…
在大型应用中,我们很可能需要工厂来生产一组相关的类,抽象工厂模式就闪亮登场了。在大型应用中,我们很可能需要工厂来生产一组相关的类,抽象工厂模式就闪亮登场了。<?php /** * 预约编码器 * Class ApptEncoder */ abstract class ApptEncoder{ …
继续我们所说的 简单工厂模式 。将制造者类与要生产的产品类分离开来,由制造者的子类来执行实例化。 <?php /** * 预约编码器 * Class AppEncoder */ abstract class AppEncoder{ abstract function encode(); } /…
工厂模式中的工厂是做什么的呢?工厂是用来制造对象的!这点是必须要明白的。 例子简单说明下是利用不用编码格式实现消息通讯。着重注意产品类和制造类的关系,其他工厂模式会有不同。 <?php /** * 编码器 * Class AppEncoder */ abstract class AppEnco…
单列模式的应用核心是使用静态方法和静态属性来间接实例化对象。 new self()抛出本对象的实例。 <?php /** * 单列模式 * Class Preferences */ class Preferences{ private $props = array(); private sta…