精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

CMU 15445 學(xué)習(xí)之Hash Table

數(shù)據(jù)庫 其他數(shù)據(jù)庫
哈希表是一個(gè)高效的數(shù)據(jù)結(jié)構(gòu),大多時(shí)候能夠在 O(1) 的情況下插入和查詢數(shù)據(jù),在數(shù)據(jù)庫系統(tǒng)中,有很多地方都使用到了哈希表,例如前面提到的 page table,page directory,以及執(zhí)行 sql 查詢時(shí)一些用于 join 的臨時(shí)數(shù)據(jù)結(jié)構(gòu)。

前面的幾篇文章已經(jīng)將磁盤管理和內(nèi)存 buffer pool 管理的內(nèi)容都介紹完了,接下來繼續(xù)向上一層,來介紹關(guān)于 access method 的內(nèi)容。

圖片

access method 主要是介紹一些數(shù)據(jù)結(jié)構(gòu),例如 Hash Table 和 Tree。這些數(shù)據(jù)結(jié)構(gòu)可以用來做表的索引,以及一些在 sql 計(jì)算時(shí)的臨時(shí)數(shù)據(jù)結(jié)構(gòu)。

在設(shè)計(jì)和使用這些數(shù)據(jù)結(jié)構(gòu)時(shí),需要注意兩個(gè)問題,一是數(shù)據(jù)的組織,怎樣將數(shù)據(jù)組織在內(nèi)存或者磁盤中,并且能夠高效的訪問;二是數(shù)據(jù)結(jié)構(gòu)的并發(fā)訪問問題,需要保證其在多線程環(huán)境下的數(shù)據(jù)安全。

今天先來看一下在數(shù)據(jù)庫里面頻繁被使用,以及數(shù)據(jù)結(jié)構(gòu)中也會(huì)經(jīng)常涉及到的哈希表。

Hash Table 概念

Hash Table 是一個(gè)無序的 key 到 value 的映射實(shí)現(xiàn),它使用一個(gè)哈希函數(shù)計(jì)算數(shù)據(jù)存儲(chǔ)到數(shù)組中(槽位)的位置,并且平均情況下,能夠在 O(1) 的時(shí)間內(nèi)訪問元素。

如下圖所示,我們通過一個(gè) hash 函數(shù),計(jì)算 key 在數(shù)組中中的下標(biāo),然后 key 對應(yīng)了具體的 value。當(dāng)查找數(shù)據(jù)時(shí),也需要計(jì)算哈希值,然后定位到 key 所在的位置進(jìn)行取值。

圖片

Hash 函數(shù)

從前面的描述中可以看到,哈希函數(shù)在 Hash Table 中的作用至關(guān)重要。

哈希函數(shù)可以將任意類型的 key 轉(zhuǎn)換為一個(gè)代表這個(gè) key 的整數(shù),在理想的情況下,我們希望任意不同的 key 經(jīng)過哈希函數(shù)計(jì)算出來的值都是不同的,但在實(shí)際的哈希函數(shù)實(shí)現(xiàn)中,這幾乎是不太可能的。

如果不同的 key 通過哈希函數(shù)計(jì)算出來的值是一樣的,這種情況叫做哈希沖突(conflict),又叫哈希碰撞(collision)。

一般來說,計(jì)算哈希的速度越快,哈希沖突的概率越大,反之則越低,這就需要在實(shí)際設(shè)計(jì)時(shí)進(jìn)行權(quán)衡。

數(shù)據(jù)庫中常見的哈希函數(shù)實(shí)現(xiàn)有下列這幾種:

  • crc64:https://create.stephan-brumme.com/crc32/
  • MurmurHash:https://github.com/aappleby/smhasher
  • Google CityHash:https://github.com/google/cityhash
  • Facebook XXHash:http://cyan4973.github.io/xxHash/
  • Google FarmHash:https://github.com/google/farmhash

Static Hash Scheme

接下來了解一下幾種靜態(tài)哈希的實(shí)現(xiàn)方式,所謂靜態(tài),一般是指哈希表的容量大小是固定的,所以能夠存儲(chǔ)數(shù)據(jù)的上限也是確定的,實(shí)際使用并不多,可以做參考。

Linear Probe Hash

線性探測(Linear Probe)是一種比較直觀簡潔的 Hash Table 實(shí)現(xiàn)方式了。

其基本思路是如果映射之后的 key 存儲(chǔ)的位置已經(jīng)被占用了,那么它會(huì)依次遍歷數(shù)組,直到找到一個(gè)空閑的位置插入數(shù)據(jù)。

如下,新插入的數(shù)據(jù) E 通過計(jì)算后,其位置在 A 的位置。

圖片

但是 A 處已經(jīng)有數(shù)據(jù)了,此時(shí)發(fā)生了沖突,所以會(huì)向后遍歷,然后找到 D 之后的空閑位置插入。

圖片

刪除的邏輯比較類似,也是通過哈希函數(shù)計(jì)算 key 的位置,然后找到對應(yīng)的數(shù)據(jù)并刪除。如果 key 并不在原來的位置上,那么需要像插入一樣遍歷,直到找到目標(biāo) key。

刪除一般有兩種做法,一是直接在刪除的位置設(shè)置一個(gè)墓碑值,表示其已被刪除,二是移動(dòng)其他的元素來填充刪除的位置,這種方式并不常用。

重復(fù) key哈希表中對于重復(fù)的 key 的處理方式一般有兩種,一是通過一個(gè) value 鏈表的方式,將同一個(gè) key 的多個(gè)元素串聯(lián)起來。

圖片

這種方式比較簡單直觀,另一種方式是重復(fù)存儲(chǔ),把每個(gè) key 都當(dāng)做是獨(dú)立的,插入方式和上面描述的完全一致。

圖片

Robin Hood Hash

robin hood 哈希類似于線性探測,并有一定的改進(jìn)。

它會(huì)記錄每個(gè) key 與其原始 hash 映射的位置的距離,例如下圖中的 A,因?yàn)椴迦肭皼]有任何數(shù)據(jù),不存在哈希沖突,所以 A 記錄的距離是 0。

圖片

如果此時(shí)插入數(shù)據(jù) C,如果 C 映射的位置也是 A,這樣就產(chǎn)生了哈希沖突,于是向下探測一位,將 C 插到 A 之后的位置,這時(shí)候 C 與其原始映射位置的距離就是 1。

圖片

當(dāng)又有新的 key 插入時(shí),如果產(chǎn)生了沖突,那么繼續(xù)向后探測,并且比較映射距離的值,如果新插入的 key 的距離大于該位置的值,則將新的 key 插入。

圖片

例如上面的這個(gè)例子,如果新插入的 E 映射到了 A 的位置,此時(shí) E 的距離是 0,和 A 的距離相等,繼續(xù)向下,此時(shí) E 的距離是 1,和 C 相等,又繼續(xù),此時(shí) E 變?yōu)?2,大于了 D 的距離 1,于是將 E 插入到 D 的位置,并且將 D 挪到到下一個(gè)空閑的位置。

圖片

Cuckoo Hash

cuckoo hash 使用多個(gè)哈希表,并且每個(gè)哈希表使用一個(gè)不同 seed (隨機(jī)種子)的哈希函數(shù)。當(dāng)插入數(shù)據(jù)時(shí),對 key 輪流用每個(gè)哈希函數(shù)都計(jì)算哈希值,如果對應(yīng)的哈希表有空閑空間,則直接插入。

例如下面的例子,使用了兩個(gè)哈希表,插入 key A 的時(shí)候,計(jì)算兩個(gè)哈希值,并且查詢到第一個(gè)哈希表有空閑,則直接將數(shù)據(jù)插入到哈希表 1 中。

圖片

如果此時(shí)在插入一條數(shù)據(jù) B,如果在哈希表 1 中有沖突,但是在哈希表 2 中沒有沖突,則將數(shù)據(jù)插入到哈希表 2 中。

圖片

如果此時(shí)再插入一個(gè) key C,經(jīng)過哈希函數(shù)計(jì)算后,發(fā)現(xiàn)它和兩個(gè)哈希表都有沖突。

圖片

這時(shí)候需要選擇一個(gè)哈希表,將其中的 key 先拿出來,騰一個(gè)位置給 C,例如可以將 C 插入到 A 的位置。然后對 A 再計(jì)算哈希值,如果 A 在哈希表 2 中沒有沖突,則直接將 A 插入到哈希表 2 中。

cuckoo hash 在 Github 上也有對應(yīng)的一些實(shí)現(xiàn):https://github.com/efficient/libcuckoo

Dynamic Hash Scheme

前面提到的這幾種哈希表的實(shí)現(xiàn)方式,都可以認(rèn)為是靜態(tài)的,即哈希表中能存儲(chǔ)多少數(shù)據(jù),是一開始就確定下來的,并不會(huì)涉及到擴(kuò)容。

但實(shí)際環(huán)境中,我們大多數(shù)時(shí)候都希望哈希表是可以隨著數(shù)據(jù)量的增長而擴(kuò)張的,下面再介紹幾種更常用的,可以自動(dòng)動(dòng)態(tài)擴(kuò)容的哈希表實(shí)現(xiàn)。

Chained Hash

鏈?zhǔn)焦⒁粋€(gè)哈希表通過多個(gè) bucket 來維護(hù),如果出現(xiàn)了哈希沖突,則將相同的 key 放到同一個(gè) bucket 中,如果 bucket 超過了規(guī)定的容量,則以鏈表串聯(lián)起一個(gè)新的 bucket。

每個(gè) bucket 一般會(huì)有一個(gè)指針,標(biāo)識其位置,當(dāng)一個(gè) key 經(jīng)過 hash 之后,可以通過這個(gè)指針找到它所屬的 bucket。

圖片

Extendible Hash

extendible hash(可擴(kuò)展哈希)和 chained hash 比較類似,都使用到了bucket 這個(gè)概念,同時(shí)也會(huì)有一個(gè)執(zhí)行 bucket 的指針數(shù)組。

與之不同的是,extendible hash 將 key 計(jì)算哈希值后,會(huì)將其值轉(zhuǎn)換為一個(gè)二進(jìn)制表示,然后它會(huì)維護(hù)一個(gè) global counter,記錄定位到 bucket 指針數(shù)組,需要取 key 的二進(jìn)制的多少位;每個(gè) bucket 也有一個(gè) counter,記為 local counter,表示的是定位到該 bucket 需要二進(jìn)制的多少位。

圖片

例如上面的例子,第一個(gè) bucket 的 counter 是 1 ,當(dāng) key 定位到該 bucket 的時(shí)候,需要取 key 的前一位。而 bucket 2 和 3 的 counter 都是 2,需要取二進(jìn)制的前兩位。

如果需要查詢數(shù)據(jù),先對 key 計(jì)算哈希值,例如下圖中的 A,計(jì)算其哈希值后,global counter 是 2,所以只需要取前兩位即可,然后通過 bucket 的指針獲取到 bucket 的位置,遍歷其中的數(shù)據(jù)進(jìn)行查找。

圖片

如果需要新插入數(shù)據(jù),則和查找的過程類似,同樣計(jì)算哈希值,然后找到對應(yīng)的 bucket,將數(shù)據(jù)放到 bucket 的空閑位置即可。

如果對應(yīng)的 bucket 沒有空閑的位置了,這時(shí)候需要進(jìn)行 split 分裂操作。

首先將 global counter 的值增加 1,然后新建一個(gè) bucket,將舊的對應(yīng)的那個(gè) bucket 的 counter 也增加 1,并且讓新的 bucket 的 counter 等于這個(gè)值。然后重新通過這個(gè) key 的二進(jìn)制位來移動(dòng)舊的 bucket 中的數(shù)據(jù)。

例如下面的例子,需要插入 key C,但是它所映射的 bucket 已經(jīng)滿了。

圖片

此時(shí)將 global counter 增加為 3,并且新增一個(gè) bucket,counter 為舊的值加一,也為 3。然后將舊的那個(gè) bucket 按照新的進(jìn)制位重新存放,此時(shí) bucket 中就有空閑的位置了。

圖片

更詳細(xì)內(nèi)容可以參考:https://zhuanlan.zhihu.com/p/375039823

Linear Hash

前面提到的 extendible hash 在分裂的時(shí)候,需要擴(kuò)展 bucket 指針數(shù)組(又叫 slot array),這時(shí)候一般需要對哈希表加全局鎖,以防止并發(fā)讀寫沖突。但是這樣鎖的粒度較大,容易造成哈希表的讀寫瓶頸。

另一種 linear hash 會(huì)維護(hù)一個(gè)分裂指針 split pointer,當(dāng)有任意的 bucket 分裂時(shí),split pointer 指向的 bucket 也會(huì)分裂。這種方式介紹不多,實(shí)際使用應(yīng)該也較少,就不詳細(xì)介紹了。

Conclusion

哈希表是一個(gè)高效的數(shù)據(jù)結(jié)構(gòu),大多時(shí)候能夠在 O(1) 的情況下插入和查詢數(shù)據(jù),在數(shù)據(jù)庫系統(tǒng)中,有很多地方都使用到了哈希表,例如前面提到的 page table,page directory,以及執(zhí)行 sql 查詢時(shí)一些用于 join 的臨時(shí)數(shù)據(jù)結(jié)構(gòu)。

但是哈希表的應(yīng)用場景也有限,因?yàn)樗鎯?chǔ)的所有 key 都是無序的,這樣雖然適合點(diǎn)查,但是無法進(jìn)行范圍掃描,在更加通用的場景下,數(shù)據(jù)庫中的表索引使用最廣泛的還是 B+ 樹。

責(zé)任編輯:武曉燕 來源: roseduan寫字的地方
相關(guān)推薦

2022-10-08 00:00:00

SQLDDL數(shù)據(jù)

2022-10-09 08:53:06

存儲(chǔ)容量SSD

2022-10-12 08:52:00

內(nèi)存緩沖管理

2022-10-30 10:03:20

B+數(shù)據(jù)庫數(shù)據(jù)

2022-09-30 11:08:44

MySQLPostgreSQLOracle

2021-02-19 22:18:11

數(shù)據(jù)庫系統(tǒng)管理

2022-12-09 07:57:15

2010-07-23 14:41:30

Perl Hash

2021-09-28 09:36:13

redisHash結(jié)構(gòu)

2019-09-30 08:23:47

Hash表哈希表Java

2011-07-21 17:35:11

iPhone Table 圖片

2022-06-06 14:56:03

機(jī)器人算法模型

2017-08-15 22:35:54

自監(jiān)督學(xué)習(xí)視覺傳遞

2011-08-11 11:27:11

MySQLalter table

2021-03-15 14:54:47

編譯器工具代碼

2017-11-24 10:43:43

Madlib機(jī)器學(xué)習(xí)

2023-10-04 10:55:42

機(jī)器狗AI

2023-02-17 14:35:15

HashMapNode類型

2022-01-06 09:53:21

機(jī)器學(xué)習(xí)人工智能神經(jīng)網(wǎng)絡(luò)

2020-11-06 09:00:00

機(jī)器學(xué)習(xí)集成學(xué)習(xí)人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

欧美激情一区二区三区成人| 精品一区二区三区视频在线观看| 精品国产麻豆免费人成网站| 国产精品333| 欧美成人综合一区| 亚洲中文字幕无码一区| 亚洲1234区| 亚洲视频一二三区| 精品欧美一区二区久久久伦| 国产天堂第一区| 在线观看亚洲| 日韩在线视频观看正片免费网站| 美国黄色一级视频| 国产综合色在线观看| 日本精品在线| 久久综合影音| 欧美大片免费观看| 人妻少妇无码精品视频区| 国产高清亚洲| 色天天综合色天天久久| 无码毛片aaa在线| 女人天堂在线| 成人涩涩免费视频| 国产日韩精品一区二区| 国产www在线| 亚洲视频日本| 久久精品国产亚洲| 超薄肉色丝袜一二三| 美女福利视频网| 亚洲区小说区| 精品va天堂亚洲国产| 夜夜精品视频一区二区| 日本sm极度另类视频| 黄页网站免费观看| 99国产精品一区二区| 亚洲日韩中文字幕| 91黄色免费视频| 日韩视频一区二区三区四区| 欧美日韩精品电影| www.99在线| 奇米777日韩| 精品久久久久久中文字幕| 2018中文字幕第一页| 国产激情视频在线| 最新国产精品久久精品| 欧美三级在线免费观看| 国产95亚洲| 欧美日韩成人综合在线一区二区| 日韩一级免费在线观看| 婷婷亚洲五月| 欧美成人精品3d动漫h| 奇米影音第四色| 欧美日韩精品免费观看视欧美高清免费大片| 亚洲国产精品久久久久婷婷884 | 国产无遮挡裸体免费久久| 国产99免费视频| 精品国产123区| 精品一区电影国产| 精品中文字幕在线播放| 国产最新在线| 亚洲综合欧美| 97色在线视频观看| 日韩人妻无码一区二区三区99| 天堂在线中文| 99精品网站| 上原亚衣av一区二区三区| 永久免费毛片在线观看| 国产欧美日韩精品一区二区免费 | 久久99精品网久久| 国产精品欧美风情| 亚洲天堂777| 精品在线一区二区三区| 91精品在线一区| av一区二区三| 成人午夜视频福利| 精品久久久久久一区二区里番| 午夜成人鲁丝片午夜精品| 91丨porny丨国产| 日本一区免费| 色呦呦在线观看视频| 亚洲国产aⅴ成人精品无吗| 国产欧美日韩网站| 免费亚洲电影| 欧美精品久久天天躁| 黑人巨大猛交丰满少妇| 米奇精品关键词| 亚洲夜晚福利在线观看| 久久噜噜色综合一区二区| 国产精品a级| 国产精品18久久久久久首页狼| 国产精品久久久久久久免费看| 成人精品高清在线| 日本在线观看一区二区| 一本大道亚洲视频| 午夜影院免费版| 精品自拍偷拍| 综合av色偷偷网| 欧美日韩国产精品综合| 亚洲一区成人| 成人国产精品一区二区| 精品在线视频观看| 国产在线视频三区| 久久99精品国产自在现线| 亚洲一二在线观看| 久久这里只有精品国产| 首页亚洲欧美制服丝腿| 国产精品久久久久久福利一牛影视| 亚洲五码在线观看视频| 成人免费看黄| 精品剧情v国产在线观看在线| 亚洲AV无码国产成人久久| **女人18毛片一区二区| 欧美在线激情网| 国产高清免费观看| 中文字幕乱码亚洲精品一区| 无码 制服 丝袜 国产 另类| 中文字幕日本一区| 日韩毛片中文字幕| 久久久久噜噜噜亚洲熟女综合| 日韩av一区二| 日韩欧美在线视频日韩欧美在线视频| 亚洲精品无码久久久久久| 中文成人在线| 韩国精品在线观看 | 国产又大又黄视频| 国产一区二区免费看| 日韩电影天堂视频一区二区| av在线最新| 日韩欧美中文字幕制服| 永久免费看mv网站入口| 全国精品久久少妇| 欧美一区视久久| 欧美三级网站| 亚洲国产精品电影在线观看| 欧美成人精品欧美一级| 韩国理伦片一区二区三区在线播放 | 欧美大尺度激情区在线播放| 中文文字幕一区二区三三| 91小视频免费看| 99热亚洲精品| 一区二区三区四区视频免费观看| 操日韩av在线电影| 国产又大又黄的视频| 中文字幕成人网| 日本在线观看免费视频| 欧美日韩伦理在线免费| 日本欧美一级片| 黄视频在线观看免费| 色天天综合色天天久久| 波多野在线播放| 免费在线观看视频一区| 性欧美精品一区二区三区在线播放 | 福利在线午夜| 欧美三级一区二区| 亚洲视频重口味| 国产在线观看免费一区| 五月天激情图片| 99久热这里只有精品视频免费观看| 欧美激情在线观看视频| 欧美自拍偷拍第一页| 午夜精品123| 白丝女仆被免费网站| 日韩av一二三| 亚洲AV无码成人精品一区| 欧美日韩国产一区二区在线观看| 欧美第一黄网免费网站| 污污视频在线免费看| 欧美日韩在线观看视频| 男人的天堂官网| 激情偷乱视频一区二区三区| 日韩免费在线观看av| 精品午夜电影| 国产精品成人免费电影| 黄色网页在线免费看| 精品国产在天天线2019| 国产原创视频在线| 国产精品美女久久久久久久久久久 | www.国产一区二区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产日韩欧美综合| 欧美草逼视频| 国产亚洲成精品久久| 国产日韩欧美中文字幕| 亚洲福利视频一区| 久久午夜精品视频| 国产精品888| 日韩欧美精品在线观看视频| 国产精品99久久| 国产亚洲精品自在久久| 日韩不卡在线| 久久久久久久久久久成人| 久久久久久女乱国产| 91精品国产乱| 高潮毛片又色又爽免费 | caoporen国产精品视频| 天堂中文视频在线| 在线播放亚洲| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 国产精品qvod| 国产日韩欧美视频| 忘忧草在线日韩www影院| www国产精品视频| 日韩一区二区三区中文字幕| 91精品国产欧美一区二区成人| 久久久蜜桃一区二区| 亚洲美女少妇撒尿| 丰满的亚洲女人毛茸茸| 波多野结衣中文字幕一区二区三区 | 日本一区不卡| aiai久久| 91久久久久久久一区二区| 亚洲欧美se| 伦伦影院午夜日韩欧美限制| 九一在线视频| 欧美精品一区二区三区一线天视频| 在线观看视频中文字幕| 色综合中文字幕| 国产精选第一页| 亚洲欧美日韩一区二区 | 国产精品自拍小视频| 在线观看的黄色| 久久久久久12| 亚洲综合影视| 毛片精品免费在线观看| av中文天堂在线| 亚洲欧美中文日韩在线| 深爱五月激情五月| 精品欧美一区二区三区精品久久| 黑人久久a级毛片免费观看| 一区二区三区在线视频观看| 国产全是老熟女太爽了| 激情开心成人网| 久久成人这里只有精品| 国产视频网址在线| 亚洲国产第一页| 亚洲女同志亚洲女同女播放| 欧美精品日韩精品| 亚洲综合五月天婷婷丁香| 久久久久久久久久久妇女| 国产日韩欧美一区二区| 国产一区二区三区免费观看在线| 国产精品91久久久| 92国产精品| 欧美一级大胆视频| а√天堂中文在线资源8| 美女视频久久黄| 成人av免费| 欧美猛交ⅹxxx乱大交视频| 国产在线69| 日韩视频―中文字幕| 波多野结衣在线网站| 国产一区二区动漫| 国产一级在线| 亚洲一区999| jizz日韩| 精品国产区一区二区三区在线观看| 日韩欧美小视频| 久久av红桃一区二区小说| 精品美女在线观看视频在线观看 | 一区二区成人在线| 国产一级生活片| 精品免费在线观看| 天堂а√在线中文在线新版| 一本大道久久精品懂色aⅴ| 中文字幕手机在线视频| 欧美人xxxx| 亚洲产国偷v产偷v自拍涩爱| 亚洲国产精品成人va在线观看| 美女欧美视频在线观看免费| 视频在线观看一区二区| 超碰porn在线| 97精品伊人久久久大香线蕉| 欧美成人资源| 成人中文字幕+乱码+中文字幕| 久久综合偷偷噜噜噜色| 九九热久久66| 成人系列视频| 欧美一区二区视频在线播放| 国产情侣一区| 污视频网站观看| 欧美成人在线免费视频| 黑人精品视频| 日韩女在线观看| 成人豆花视频| 精品国产福利| 日韩欧美一区二区三区在线视频 | 少妇真人直播免费视频| 国产欧美一区二区精品忘忧草| 一区二区三区国| 91精品人妻一区二区三区果冻| 欧美一级在线观看| 天堂v视频永久在线播放| 色青青草原桃花久久综合| 国产乱码在线| 国产男人精品视频| 日韩免费电影在线观看| 波多野结衣三级在线| 91麻豆精品一区二区三区| 国产在线青青草| 看片的网站亚洲| 日本69式三人交| 中文字幕一区在线观看| 国产又大又黑又粗免费视频| 99久久久久| 日本十八禁视频无遮挡| 久久激情综合网| 一级特黄a大片免费| 亚洲人成伊人成综合网小说| 精品国产xxx| 亚洲国产精品一区二区三区| 麻豆传媒视频在线观看免费| 国产99久久久欧美黑人| 日本精品一区二区三区在线观看视频| 日本一区二区三不卡| 在线 亚洲欧美在线综合一区| 911福利视频| 日本一区二区三区免费乱视频 | 国产成人亚洲综合91精品| 视频一区中文字幕精品| 亚洲午夜精品一区二区三区| 久久精品官网| 中文在线永久免费观看| 一区二区三区在线视频免费| 国产一区二区三区四区视频| 亚洲第一伊人| 18深夜在线观看免费视频| 国产精品你懂的在线| 无码一区二区三区| 天堂久久久久va久久久久| 国产精品国产精品| 91亚洲国产| 中文字幕亚洲欧洲| 国产肉丝袜一区二区| 亚洲欧美综合自拍| 日韩电影中文字幕在线| 91桃色在线| 国产精品永久入口久久久| 国产精品99免费看| 国产xxx在线观看| 亚洲制服欧美中文字幕中文字幕| av免费观看在线| 欧美激情精品久久久久久变态| 无码国模国产在线观看| 日本一级黄视频| 粉嫩一区二区三区在线看| 国产主播在线观看| 亚洲国产精品99久久| 国产福利电影在线播放| 精品国产免费久久久久久尖叫 | 5月丁香婷婷综合| 久久综合九色综合久| 欧美亚洲国产视频小说| 国产精品对白| 可以在线看的av网站| 91丨porny丨国产| 青青艹在线观看| 中文综合在线观看| 亚洲欧美专区| 成人黄色片免费| 北条麻妃一区二区三区| 国产一级做a爱片久久毛片a| 久草在线综合| 鲁丝一区二区三区免费| 美女精品在线观看| 在线观看国产精品一区| 欧美日韩久久久| 污视频在线免费观看网站| 国产精品露出视频| 久久久综合网| 国产免费美女视频| 精品人在线二区三区| 成人小电影网站| 中文字幕中文字幕在线中心一区 | 91九色蝌蚪国产| 激情婷婷欧美| 三上悠亚ssⅰn939无码播放 | 国产精品久久久久一区二区三区厕所| 亚洲第一色av| 亚洲成人在线免费| 国产精品四虎| 99久久一区三区四区免费| 国产人成精品一区二区三| 国产又粗又猛又爽又黄av| 欧美一区二区三区日韩| 日韩在线伦理| 亚洲综合网中心| 99久久婷婷国产| 波多野结衣一区二区三区四区| 久久精品视频在线观看| 久久精品国产亚洲blacked| 久久精品网站视频| 亚洲自拍偷拍图区| 阿v免费在线观看| 国产精品美女黄网| 卡一卡二国产精品| 青青国产在线观看| 久久亚洲精品成人| 国产91久久精品一区二区| 丰满饥渴老女人hd| 欧美亚男人的天堂|