PHP--SPL扩展学习笔记

    一. SPL是干嘛的
        SPL是用于解决典型问题(standard problems)的一组接口与类的集合。 

        数据结构:
          1.实现双向列表
          SplDoublyLinkedList implements Iterator , ArrayAccess , Countable {} 

          2.栈(Stack)是一种特殊的线性表,因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈)
          SplStack extends SplDoublyLinkedList implements Iterator , ArrayAccess , Countable {} 

          3.队列(SplQueue) 就像我们生活中排队一样,和栈一样,它的特性是先进先出(FIFO)。
          SplQueue extends SplDoublyLinkedList implements Iterator , ArrayAccess , Countable {}

          4.优先队列SplPriorityQueue是基于堆(后文介绍)实现的。
          SplPriorityQueue implements Iterator , Countable {}

          5.堆(Heap)就是为了实现优先队列SplPriorityQueue而设计的一种数据结构,它是通过构造二叉堆(二叉树的一种)实现。
           abstract SplHeap implements Iterator , Countable {}

          6.阵列 处理巨大数量的固定长度数组是采用
             SplFixedArray implements Iterator , ArrayAccess , Countable {}

          7.映射  用来存储一组对象的,特别是当你需要唯一标识对象的时候。
             SplObjectStorage implements Countable , Iterator , Serializable , ArrayAccess {}
时间: 2024-10-12 15:55:48

PHP--SPL扩展学习笔记的相关文章

DOM扩展学习笔记

对DOM的两个主要扩展是Selectors API(选择符API)和HTML5,还有一个不太瞩目的Element Traversal元素遍历规范为DOM添加了一些属性,另外还有一些专有扩展. 选择符API 元素遍历 HTML5 专有扩展 选择符API 让浏览器原生支持css查询,原理就是所有实现这一功能的JavaScript库都会写一个基础的CSS解析器,然后再使用已有的DOM方法查询文档并找到匹配的节点.当把这个功能变成原生API后,解析和树查询操作可以在浏览器内部通过编译后的代码来完成,极大

PCNTL--PHP进程控制扩展学习笔记

PHP的进程控制支持实现了Unix方式的进程创建, 程序执行, 信号处理以及进程的中断. 进程控制不能被应用在Web服务器环境,当其被用于Web服务环境时可能会带来意外的结果. 目前该扩展只能运行在*unix下,PCNTL现在使用了ticks作为信号处理的回调机制,ticks在速度上远远超过了之前的处理机制. 这个变化与"用户ticks"遵循了相同的语义.您可以使用declare() 语句在程序中指定允许发生回调的位置.这使得我们对异步事件处理的开销最小化.在编译PHP时 启用pcnt

DuiLib学习笔记(二) 扩展CScrollbar属性

DuiLib学习笔记(二) 扩展CScrollbar属性 Duilib的滚动条滑块默认最小值为滚动条的高度(HScrollbar)或者宽度(VScrollbar).并且这个值默认为16.当采用系统样式的滚动条,或者 Troy的源码(https://github.com/qdtroy/DuiLib_Ultimate)自带的样式时,是没有问题的,因为这两种样式默认高(宽)度都是16,当滑块最小时,也有16*16,背景图片(九宫格式)不会出拉伸BUG.但是,当自定义背景图片时,如果图片本身大小超过16

C#可扩展编程之MEF学习笔记(一):MEF简介及简单的Demo

在文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架).单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明: Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库. 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置. 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬依赖项. 通过 MEF,不

JUnit4学习笔记(四):利用Rule扩展JUnit

一.Rule简介 Rule是JUnit4中的新特性,它让我们可以扩展JUnit的功能,灵活地改变测试方法的行为.JUnit中用@Rule和@ClassRule两个注解来实现Rule扩展,这两个注解需要放在实现了TestRule借口的成员变量(@Rule)或者静态变量(@ClassRule)上.@Rule和@ClassRule的不同点是,@Rule是方法级别的,每个测试方法执行时都会调用被注解的Rule,而@ClassRule是类级别的,在执行一个测试类的时候只会调用一次被注解的Rule 二.JU

Java程序员的JavaScript学习笔记(14——扩展jQuery UI)

计划按如下顺序完成这篇笔记: Java程序员的JavaScript学习笔记(1--理念) Java程序员的JavaScript学习笔记(2--属性复制和继承) Java程序员的JavaScript学习笔记(3--this/call/apply) Java程序员的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序员的JavaScript学习笔记(5--prototype) Java程序员的JavaScript学习笔记(6--面向对象模拟) Java程序员

C#可扩展编程之MEF学习笔记(三):导出类的方法和属性

前面说完了导入和导出的几种方法,如果大家细心的话会注意到前面我们导出的都是类,那么方法和属性能不能导出呢???答案是肯定的,下面就来说下MEF是如何导出方法和属性的. 还是前面的代码,第二篇中已经提供了下载链接,大家可以下载学习. 首先来说导出属性,因为这个比较简单,和导出类差不多,先来看看代码,主要看我加注释的地方,MusicBook.cs中的代码如下: using System; using System.Collections.Generic; using System.Linq; usi

ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法

一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归.所以抛弃之前的那种事件响应的模型,抛弃服务器端控件也理所当然. 但是,如果手写Html标签效率又比较低,可重用度比较低.这时,我们该怎样来提高效率呢?首先,经过上篇我们知道可以通过ViewData传递数据,于是我们可以写出以下的Html代码: <input name="UserName&quo

iOS: 学习笔记, swift扩展

// // YYExtension.swift // // Created by yao_yu on 14-7-18. // Copyright (c) 2014年 yao_yu. All rights reserved. // import Foundation extension String{ func strip() -> String{ return stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineC