国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - PHP中用hash實(shí)現(xiàn)的數(shù)組

PHP中用hash實(shí)現(xiàn)的數(shù)組

2019-12-07 14:52PHP教程網(wǎng) PHP教程

今天回顧學(xué)習(xí)了PHP中變量實(shí)現(xiàn)的方法,在瀏覽其源碼是發(fā)現(xiàn)在PHP中所有的數(shù)據(jù)類型通過一個(gè)union存儲(chǔ)。php語言是弱類型語言,其實(shí)現(xiàn)中通過記錄變量的類型和值來實(shí)現(xiàn)其管理。

PHP中使用最多的非Array莫屬了,那Array是如何實(shí)現(xiàn)的?在PHP內(nèi)部Array通過一個(gè)hashtable來實(shí)現(xiàn),其中使用鏈接法解決hash沖突的問題,這樣最壞情況下,查找Array元素的復(fù)雜度為O(N),最好則為1. 
而其計(jì)算字符串hash值的方法如下,將源碼摘出來以供查備: 

復(fù)制代碼代碼如下:


static inline ulong zend_inline_hash_func(const char *arKey, uint nKeyLength) 

register ulong hash = 5381;                                                   //此處初始值的設(shè)置有什么玄機(jī)么? 
/* variant with the hash unrolled eight times */ 
for (; nKeyLength >= 8; nKeyLength -= 8) {                         //這種step=8的方式是為何? 
hash = ((hash << 5) + hash) + *arKey++; 
hash = ((hash << 5) + hash) + *arKey++; 
hash = ((hash << 5) + hash) + *arKey++; 
hash = ((hash << 5) + hash) + *arKey++;                         //比直接*33要快 
hash = ((hash << 5) + hash) + *arKey++; 
hash = ((hash << 5) + hash) + *arKey++; 
hash = ((hash << 5) + hash) + *arKey++; 
hash = ((hash << 5) + hash) + *arKey++; 

switch (nKeyLength) { 
case 7: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */                             //此處是將剩余的字符hash 
case 6: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */ 
case 5: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */ 
case 4: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */ 
case 3: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */ 
case 2: hash = ((hash << 5) + hash) + *arKey++; /* fallthrough... */                     
case 1: hash = ((hash << 5) + hash) + *arKey++; break; 
case 0: break; 
EMPTY_SWITCH_DEFAULT_CASE() 

return hash;//返回hash值 


ps:對(duì)于以下函數(shù),仍有兩點(diǎn)不明: 
hash = 5381設(shè)置的理由? 
這種step=8的循環(huán)方式是為了效率么?

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: aa一级毛片 | 精品国产青草久久久久福利 | 超碰在线免费福利 | 欧美成人一区二免费视频软件 | 黄色一级网站 | 日韩在线精品 | 国产精品综合视频 | 午夜特片网 | 亚洲精品视频一区二区三区 | 午夜剧场免费在线观看 | 亚洲视频1区| 国产深夜视频在线观看 | 亚洲久久 | 亚洲成人日韩在线 | 日韩成人精品在线 | 国产伦精品一区二区三区精品视频 | 九九久久九九 | 成人网久久 | 自拍偷拍 欧美日韩 | 国产精品一区二区三区免费 | 免费国产网站 | 亚洲网在线 | 欧美一级网站 | 亚洲日本va中文字幕 | 91精品国产综合久久小仙女陆萱萱 | 欧美日本一区 | 一级毛片视频 | 欧美日韩国产一区二区在线观看 | 亚洲视频在线观看免费 | 成人午夜性a一级毛片免费看 | 欧美日韩在线一区二区三区 | 色爱综合网 | 中文字幕精品一区二区精品 | 色官网 | 亚洲高清在线观看 | 欧美成人精品激情在线观看 | 成人午夜精品久久久久久久蜜臀 | 热99精品 | 午夜寂寞少妇aaa片毛片 | 天堂资源最新在线 | 亚洲三级不卡 |