Hash Table是PHP的核心,这话一点都不过分.
PHP的数组,关联数组,对象属性,函数表,符号表,等等都是用HashTable来做为容器的.
PHP的HashTable采用的拉链法来解决冲突, 这个自不用多说, 我今天主要关注的就是PHP的Hash算法, 和这个算法本身透露出来的一些思想.
PHP的Hash采用的是目前最为普遍的DJBX33A (Daniel J. Bernstein, Times 33 with Addition), 这个算法被广泛运用与多个软件项目,Apache, Perl和Berkeley DB等. 对于字符串而言这是目前所知道的最好的哈希算法,原因在于该算法的速度非常快,而且分类非常好(冲突小,分布均匀).
算法的核心思想就是:
hash(i) = hash(i-1) * 33 + str[i]
在zend_hash.h中,我们可以找到在PHP中的这个算法:
static inline ulong zend_inline_hash_func(
javascript1.2之后允许使用[]创建数组:
var firstArray = [];
var secondArray = ['red', 'green', 'blue'];
var thirdArray = [,,,,];
secondArray[4] = 28;
var arrArray = [[]];
try { foo.bar(); } catch (e) { alert(e.name + ': ' + e.message); }
目前我们可能得到的系统异常主要包含以下6种:
Posted on February 5th, 2009 in 前端开发 by lifesinger
老话题了,各种方案和相关讨论都不少,简单总结下:
JavaScript里只有五种基本数据类型:number, string, boolean, null, undefined. 其它的都是复合数据类型object.
值和数据类型是两码事。比如:null是null类型的唯一值,undefined是undefined类型的唯一值,就如true和false是boolean
http://rubynroll.javaeye.com/blog/203133
关键字: svn git
http://blog.qq.com/qzone/622007901/1238388437.htm
天下第一雷事:政府统计中的职工工资,不到三分一能到百姓手里!
| 分类:好好学习 |