日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Redis源码剖析(十一)跳表

發(fā)布時(shí)間:2024/4/19 数据库 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis源码剖析(十一)跳表 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在樹(shù)形結(jié)構(gòu)中,常見(jiàn)的平衡樹(shù)有AVL樹(shù)和紅黑樹(shù),但是由于AVL樹(shù)過(guò)于平衡,導(dǎo)致維護(hù)平衡所需的代價(jià)過(guò)大,使用的不多,不過(guò)其中幾種旋轉(zhuǎn)算法還是值得學(xué)習(xí)的。取而代之的是較為平衡的紅黑樹(shù),STL中的map和set都是采用紅黑樹(shù)實(shí)現(xiàn)的,插入和查找效率為O(logN)。

而跳表也是一種較為平衡的數(shù)據(jù)結(jié)構(gòu),與紅黑樹(shù)不同的是,它是鏈狀結(jié)構(gòu)而非樹(shù)形結(jié)構(gòu),不過(guò),跳表的插入查找效率也為O(logN),和紅黑樹(shù)有一拼,而且最重要的是,跳轉(zhuǎn)在實(shí)現(xiàn)上比紅黑樹(shù)簡(jiǎn)單的多

跳表結(jié)構(gòu)

同數(shù)組相比,鏈表的插入刪除效率是O(1),但是如果想要在鏈表中查找某個(gè)元素,就糟糕了,復(fù)雜度會(huì)是O(N),為了提高查找效率,就有了跳表的概念。所謂跳表,就是可以跳躍的鏈表,回想二分查找算法,每次的查找都是跳躍性的,這才使得二分法效率這么高,跳表的設(shè)計(jì)同樣也借鑒了二分法的策略,實(shí)現(xiàn)跳躍查找,當(dāng)然,需要跳表中的元素有序

普通的鏈表每個(gè)節(jié)點(diǎn)僅僅保存了指向下一個(gè)節(jié)點(diǎn)的指針,只能移動(dòng)到下一個(gè)相鄰節(jié)點(diǎn),也就是跳一步。而跳表為了可以一次跳很多步,保存了很多指針,指向該節(jié)點(diǎn)后面的不同節(jié)點(diǎn)

在server.h頭文件中,可以找到跳表節(jié)點(diǎn)的定義和跳表的定義

/* 跳表節(jié)點(diǎn) */ typedef struct zskiplistNode {robj *obj; /* 數(shù)據(jù) */double score; /* 分?jǐn)?shù) */struct zskiplistNode *backward; //前一個(gè)節(jié)點(diǎn)指針struct zskiplistLevel {struct zskiplistNode *forward; //后面某個(gè)節(jié)點(diǎn),也就是next指針unsigned int span; //跨度} level[]; /* 跳表中保存了多個(gè)指向下一個(gè)節(jié)點(diǎn)的指針 */ } zskiplistNode;

跳表實(shí)際上也是保存鍵值對(duì)的結(jié)構(gòu),其中obj保存實(shí)際的數(shù)據(jù)而score用于排序使用,這保證了跳表內(nèi)部是有序的。此外,level數(shù)組記錄了多個(gè)指向后面節(jié)點(diǎn)的指針,同時(shí)也記錄了兩個(gè)節(jié)點(diǎn)之間的跨度

為了方便,接下來(lái)將跳表節(jié)點(diǎn)中指向下一個(gè)節(jié)點(diǎn)的指針?lè)Q為next指針,而level數(shù)組稱為next數(shù)組

/* 跳表 */ typedef struct zskiplist {struct zskiplistNode *header, *tail; //表頭表尾unsigned long length; /* 跳表中節(jié)點(diǎn)個(gè)數(shù) */int level; //跳表總層數(shù) } zskiplist;

跳表定義中記錄了表頭表尾,level記錄了當(dāng)前跳表的總層數(shù)

下面是跳表的一個(gè)例子,可以看到,每個(gè)節(jié)點(diǎn)都有若干個(gè)next指針,通過(guò)這些指針,可以直線跳躍移動(dòng),而不再是只能移動(dòng)到相鄰節(jié)點(diǎn)

圖片轉(zhuǎn)自https://zcheng.ren/2016/12/06/TheAnnotatedRedisSourceZskiplist/

跳表操作

創(chuàng)建跳表

創(chuàng)建跳表由zslCreate函數(shù)實(shí)現(xiàn),函數(shù)中需要調(diào)用zslCreateNode創(chuàng)建跳表節(jié)點(diǎn),主要就是申請(qǐng)內(nèi)存,設(shè)置初值

//t_zset.c /*** 創(chuàng)建一個(gè)跳表節(jié)點(diǎn)* level : 節(jié)點(diǎn)包含的層數(shù),即節(jié)點(diǎn)next數(shù)組的大小,每一層有一個(gè)next指針 * score : 該節(jié)點(diǎn)的分值,用于使跳表數(shù)據(jù)有序* obj : 跳表保存的數(shù)據(jù)**/ zskiplistNode *zslCreateNode(int level, double score, robj *obj) {/* 申請(qǐng)?zhí)砉?jié)點(diǎn)內(nèi)存 */zskiplistNode *zn = zmalloc(sizeof(*zn)+level*sizeof(struct zskiplistLevel));/* 設(shè)置初值 */zn->score = score;zn->obj = obj;return zn; }/* 創(chuàng)建一個(gè)跳表 */ zskiplist *zslCreate(void) {int j;zskiplist *zsl;/* 申請(qǐng)?zhí)韮?nèi)存, 初始總層數(shù)為1 */zsl = zmalloc(sizeof(*zsl));zsl->level = 1;zsl->length = 0;/* 申請(qǐng)表頭節(jié)點(diǎn),默認(rèn)有32層 */zsl->header = zslCreateNode(ZSKIPLIST_MAXLEVEL,0,NULL);/* 對(duì)每一層進(jìn)行初始化 */for (j = 0; j < ZSKIPLIST_MAXLEVEL; j++) {zsl->header->level[j].forward = NULL;zsl->header->level[j].span = 0;}zsl->header->backward = NULL;/* 設(shè)置表尾節(jié)點(diǎn) */zsl->tail = NULL;return zsl; }

值得注意的是,表頭節(jié)點(diǎn)是在創(chuàng)建跳表就申請(qǐng)好的,不屬于跳表數(shù)據(jù)的一部分。

搜索操作

跳表的多數(shù)操作都是基于搜索的,考慮這樣一個(gè)需求,就是在跳表中查找某個(gè)節(jié)點(diǎn),如果該節(jié)點(diǎn)不存在,找到它應(yīng)該插入的位置。雖然Redis中沒(méi)有實(shí)現(xiàn)搜索功能,但是后面會(huì)看到,插入刪除等函數(shù)都是基于搜索的

假設(shè)此時(shí)跳表結(jié)構(gòu)如下,需要從跳表中查找分值為23的節(jié)點(diǎn)

查找操作的步驟如下

  • 從最高層開(kāi)始嘗試移動(dòng),比較next節(jié)點(diǎn)的分值和待查找分值大小
  • 如果next節(jié)點(diǎn)的分值小于待查找分值,則移動(dòng)到next節(jié)點(diǎn)
  • 如果next節(jié)點(diǎn)的分值大于等于待查找分值,則降層,如果此時(shí)為第0層不能繼續(xù)降層,當(dāng)前節(jié)點(diǎn)位置就是待查找節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)
  • 查找完成后,找到的節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)不是待查找節(jié)點(diǎn),就是分值23應(yīng)該插入的位置

每次搜索操作,不管是找到還是沒(méi)找到,返回的節(jié)點(diǎn)都是目標(biāo)位置的前一個(gè)節(jié)點(diǎn),所以,需要判斷返回節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)的分值與給定分值的關(guān)系從而得知要查找的節(jié)點(diǎn)是否在跳表中。當(dāng)然也可以獲得要插入的位置,比如查找分值為21的節(jié)點(diǎn),返回的同樣是指向20的節(jié)點(diǎn),該節(jié)點(diǎn)的下一個(gè)位置就是分值為21應(yīng)該插入的位置

插入操作

插入操作實(shí)際上就是執(zhí)行了一遍搜索功能,由于插入一個(gè)節(jié)點(diǎn),會(huì)破壞某些節(jié)點(diǎn)的next數(shù)組。所以需要在搜索過(guò)程中記錄每一層的前一個(gè)節(jié)點(diǎn),以插入22為例,每一層的前一個(gè)節(jié)點(diǎn)分別是7,20,20三個(gè)節(jié)點(diǎn)(實(shí)際上是兩個(gè))

//t_zset.c /* 在跳表中插入節(jié)點(diǎn),值為score數(shù)據(jù)為obj */ /* 因?yàn)椴迦牍?jié)點(diǎn)會(huì)破壞原跳表的結(jié)構(gòu),所以需要先找到會(huì)被破壞的那些節(jié)點(diǎn) * 被破壞的節(jié)點(diǎn)是每一層插入位置的前一個(gè)節(jié)點(diǎn),因?yàn)樗膎ext數(shù)組需要更改 */ zskiplistNode *zslInsert(zskiplist *zsl, double score, robj *obj) {/* update保存每一層插入位置的前一個(gè)節(jié)點(diǎn) */zskiplistNode *update[ZSKIPLIST_MAXLEVEL], *x;unsigned int rank[ZSKIPLIST_MAXLEVEL];int i, level;serverAssert(!isnan(score));x = zsl->header;/* 尋找每一層插入位置的前一個(gè)節(jié)點(diǎn) */for (i = zsl->level-1; i >= 0; i--) {rank[i] = i == (zsl->level-1) ? 0 : rank[i+1];/* 實(shí)際上就是跳表的查找規(guī)則* 如果當(dāng)前層上的next指針指向的節(jié)點(diǎn)分值大于要查找的分值,則在同層移動(dòng)* 如果當(dāng)前層上的next指針指向的節(jié)點(diǎn)分值小于要查找的分值,則降層,不移動(dòng) *//* 而如果要查找每一層插入位置的上一個(gè)節(jié)點(diǎn),那么降層時(shí)的節(jié)點(diǎn)就要要找的節(jié)點(diǎn) */while (x->level[i].forward &&(x->level[i].forward->score < score ||(x->level[i].forward->score == score &&compareStringObjects(x->level[i].forward->obj,obj) < 0))) {rank[i] += x->level[i].span;/* 同層移動(dòng) */x = x->level[i].forward;}/* 如果一旦降層,當(dāng)前節(jié)點(diǎn)就是要查找的節(jié)點(diǎn) */update[i] = x;}/* 為新節(jié)點(diǎn)隨機(jī)生成一個(gè)層數(shù) */level = zslRandomLevel();/* 如果隨機(jī)出的層數(shù)大于跳表總層數(shù),那么將跳表擴(kuò)層 */if (level > zsl->level) {for (i = zsl->level; i < level; i++) {rank[i] = 0;update[i] = zsl->header;update[i]->level[i].span = zsl->length;}zsl->level = level;}/* 創(chuàng)建插入的新節(jié)點(diǎn) */x = zslCreateNode(level,score,obj);/* 因?yàn)樾鹿?jié)點(diǎn)只存在[0 : level]層,所以對(duì)于高于level層的那些節(jié)點(diǎn)沒(méi)有影響 */for (i = 0; i < level; i++) {/* 每一層都相當(dāng)于鏈表插入 */x->level[i].forward = update[i]->level[i].forward;update[i]->level[i].forward = x;/* 更新跨度span */x->level[i].span = update[i]->level[i].span - (rank[0] - rank[i]);update[i]->level[i].span = (rank[0] - rank[i]) + 1;}/* 高層節(jié)點(diǎn)的跨度加一 */for (i = level; i < zsl->level; i++) {update[i]->level[i].span++;}/* 設(shè)置新節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)指針 */x->backward = (update[0] == zsl->header) ? NULL : update[0];/* 如果插入位置是跳表末尾,更新表尾節(jié)點(diǎn) */if (x->level[0].forward)x->level[0].forward->backward = x;elsezsl->tail = x;/* 節(jié)點(diǎn)個(gè)數(shù)增加 */zsl->length++;return x; }

刪除操作

刪除操作首先在跳表中查找需要?jiǎng)h除的節(jié)點(diǎn),如果找到,則將其刪除。需要注意,刪除和插入一樣,都會(huì)破壞某些節(jié)點(diǎn)的next指針,所以需要更新

zslDelete函數(shù)用于找到匹配的節(jié)點(diǎn),zslDeleteNode函數(shù)用于將節(jié)點(diǎn)從跳表中刪除

//t_zset.c /* 從跳表中刪除節(jié)點(diǎn) */ void zslDeleteNode(zskiplist *zsl, zskiplistNode *x, zskiplistNode **update) {int i;/* 對(duì)于每一層,改變其next數(shù)組和跨度 */for (i = 0; i < zsl->level; i++) {/* 如果當(dāng)前節(jié)點(diǎn)的當(dāng)前層的next節(jié)點(diǎn)是要?jiǎng)h除的節(jié)點(diǎn),改變其next指針和跨度 */if (update[i]->level[i].forward == x) {update[i]->level[i].span += x->level[i].span - 1;update[i]->level[i].forward = x->level[i].forward;} else {/* 否則,只需要改變跨度 */update[i]->level[i].span -= 1;}}/* 刪除節(jié)點(diǎn)后面的后繼節(jié)點(diǎn)的前驅(qū)指針也需要改變 */if (x->level[0].forward) {x->level[0].forward->backward = x->backward;} else {zsl->tail = x->backward;}/* 如果刪除的是最高層節(jié)點(diǎn),同時(shí)刪除后最高層為空,就將跳表層數(shù)降低 */while(zsl->level > 1 && zsl->header->level[zsl->level-1].forward == NULL)zsl->level--;/* 節(jié)點(diǎn)個(gè)數(shù)減少 */zsl->length--; }/* 刪除分值score和數(shù)據(jù)obj匹配的節(jié)點(diǎn) */ int zslDelete(zskiplist *zsl, double score, robj *obj) {zskiplistNode *update[ZSKIPLIST_MAXLEVEL], *x;int i;x = zsl->header;/* 尋找待刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn),和插入操作的查找相同 */for (i = zsl->level-1; i >= 0; i--) {while (x->level[i].forward &&(x->level[i].forward->score < score ||(x->level[i].forward->score == score &&compareStringObjects(x->level[i].forward->obj,obj) < 0)))x = x->level[i].forward;update[i] = x;}/* 判斷是否存在要?jiǎng)h除的節(jié)點(diǎn),x是插入位置前的節(jié)點(diǎn),那么它的next指針就是需要?jiǎng)h除的節(jié)點(diǎn) */x = x->level[0].forward;if (x && score == x->score && equalStringObjects(x->obj,obj)) {/* 如果是,則調(diào)用刪除節(jié)點(diǎn)操作 */zslDeleteNode(zsl, x, update);zslFreeNode(x);return 1;}return 0; /* not found */ }

計(jì)算某個(gè)節(jié)點(diǎn)的排名

Redis跳表可以計(jì)算某個(gè)數(shù)據(jù)在跳表中的排名,由zslGetRank函數(shù)完成,函數(shù)仍然使用查找方法

//t_zset.c /* 計(jì)算數(shù)據(jù)o在跳表中的排名 */ unsigned long zslGetRank(zskiplist *zsl, double score, robj *o) {zskiplistNode *x;unsigned long rank = 0;int i;/* 和插入刪除相同的查找操作 */x = zsl->header;for (i = zsl->level-1; i >= 0; i--) {while (x->level[i].forward &&(x->level[i].forward->score < score ||(x->level[i].forward->score == score &&compareStringObjects(x->level[i].forward->obj,o) <= 0))) {/* 跨度代表當(dāng)前節(jié)點(diǎn)到下一個(gè)節(jié)點(diǎn)跳過(guò)了幾個(gè)節(jié)點(diǎn),所以排名需要增加跨度個(gè) */rank += x->level[i].span;x = x->level[i].forward;}/* 當(dāng)降層后,說(shuō)明當(dāng)前層的下一個(gè)節(jié)點(diǎn)的值已經(jīng)大于score了,需要降低一層繼續(xù)查找* 當(dāng)然也有可能已經(jīng)找到,所以需要判斷是否匹配 */if (x->obj && equalStringObjects(x->obj,o)) {return rank;}}return 0; }

對(duì)象系統(tǒng)中的跳表

跳表是作為有序集合的底層實(shí)現(xiàn)存在的,在object.c文件中,可以看到創(chuàng)建有序集合時(shí)將編碼設(shè)置為跳表

//object.c /* 創(chuàng)建有序集合對(duì)象,底層使用跳表實(shí)現(xiàn) */ robj *createZsetObject(void) {/* 申請(qǐng)有序集合內(nèi)存 */zset *zs = zmalloc(sizeof(*zs));robj *o;/* 為有序集合創(chuàng)建字典 */zs->dict = dictCreate(&zsetDictType,NULL);/* 創(chuàng)建有序集合中的跳表 */zs->zsl = zslCreate();o = createObject(OBJ_ZSET,zs);/* 設(shè)置編碼格式為跳表 */o->encoding = OBJ_ENCODING_SKIPLIST;return o; }

小結(jié)

跳表是較平衡的數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)簡(jiǎn)單,插入刪除等都是建立在搜索上的。可以發(fā)現(xiàn),搜索是先嘗試在高層上移動(dòng),因?yàn)橐苿?dòng)的跨度大,可以快速的達(dá)到目的地,當(dāng)不滿足在高層移動(dòng)的條件時(shí),再降層移動(dòng),直到降到最低層。

總結(jié)

以上是生活随笔為你收集整理的Redis源码剖析(十一)跳表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

天天夜操 | 91免费视频黄 | 在线免费观看的av | 天天干天天插 | 蜜桃视频日本 | 亚洲人人网 | 国产小视频国产精品 | 国产成人亚洲在线观看 | 日韩欧美一区二区不卡 | 天天操天天玩 | 成人v| 97超碰国产精品女人人人爽 | 国产在线国偷精品产拍 | 午夜av一区二区三区 | 国产综合精品一区二区三区 | 久久综合久久综合这里只有精品 | 日韩精品视| 久久免费视频在线观看6 | 日本色小说视频 | 99色亚洲 | 日韩在线视频二区 | av电影 一区二区 | 在线观看一级视频 | 五月婷婷操 | 日韩欧美视频 | 欧美一级艳片视频免费观看 | 日韩在线观看一区 | 日本美女xx | 日韩在线视频一区二区三区 | 91日韩在线 | 国产成人黄色在线 | 天天操天天干天天爱 | 黄色中文字幕在线 | 精品女同一区二区三区在线观看 | 麻豆视频一区二区 | 亚洲精品欧美视频 | 亚洲一区二区精品3399 | 亚洲黑丝少妇 | 国内精品久久久久久久 | 狠狠躁夜夜av | 天天插综合网 | 一区中文字幕在线观看 | 狠狠操.com| 欧美亚洲国产精品久久高清浪潮 | 国产精品区在线观看 | 欧美在线日韩在线 | 天天鲁一鲁摸一摸爽一爽 | 亚洲精品日韩在线观看 | 激情五月婷婷综合 | 天天操天天操天天操天天操天天操 | 亚洲狠狠丁香婷婷综合久久久 | 精品久久久久久电影 | 免费福利影院 | 久久精品www人人爽人人 | 亚州性色| 国产精品久久久久永久免费观看 | 四虎5151久久欧美毛片 | 久草在线播放视频 | 久久国产精品免费一区二区三区 | av在线免费播放 | av中文在线观看 | 丁香色天天 | 一区二区中文字幕在线 | 天海冀一区二区三区 | av资源在线观看 | 天天夜夜狠狠操 | 久久黄色影视 | 香蕉网在线 | 狠狠干免费 | 久久久久美女 | 欧美网站黄色 | 国产96视频| 99视频精品| 日本中出在线观看 | 久久激情五月婷婷 | 最近字幕在线观看第一季 | 亚洲精品国产片 | 婷婷看片 | 国产精品视频一二三 | 免费视频色 | 激情综合电影网 | 成人国产精品久久久 | 久久天天躁狠狠躁亚洲综合公司 | 91在线精品秘密一区二区 | 蜜桃av人人夜夜澡人人爽 | 亚洲精品国内 | 成年人黄色在线观看 | 久久字幕 | 国产精品久久久久久99 | 人人搞人人干 | 日日躁夜夜躁aaaaxxxx | 欧美黑人巨大xxxxx | 久久久久亚洲精品 | 欧美一级艳片视频免费观看 | 午夜精品视频免费在线观看 | 人人爱人人舔 | 毛片.com | 日女人免费视频 | 在线观看视频你懂 | 在线欧美中文字幕 | 九色琪琪久久综合网天天 | 超碰人人av| 五月综合色婷婷 | 成年美女黄网站色大片免费看 | 粉嫩一区二区三区粉嫩91 | 久久影院精品 | 一区二区成人国产精品 | 精品国产99国产精品 | 91污在线观看 | 天天射天天干 | 五月天九九 | avav99| 最近2019中文免费高清视频观看www99 | 国产在线免费观看 | 毛片网站在线 | 中文字幕电影高清在线观看 | 天天干国产 | 国产高清精 | 国产主播大尺度精品福利免费 | 成人在线视 | 亚洲精品短视频 | 亚洲精品视频中文字幕 | 国产精品九九九 | 午夜精品福利一区二区三区蜜桃 | 五月宗合网 | 99re中文字幕| 人人爽人人爽人人爽学生一级 | 五月婷婷影视 | 国产中文字幕精品 | 99精品在线观看视频 | www.99av| 亚洲成人高清在线 | 成人黄色毛片视频 | 久久亚洲综合色 | 日日爱夜夜爱 | www.婷婷com | 激情在线网 | 97精品国自产拍在线观看 | 久草在线欧美 | 久久久久久国产精品久久 | 国产精品18久久久久久久久久久久 | 亚洲最大色 | 久久最新| a色网站 | 久久伊人国产精品 | 国产日韩欧美在线影视 | 亚洲第一香蕉视频 | 亚洲视频免费在线观看 | av网站在线观看免费 | av福利电影| 在线精品一区二区 | 涩涩网站在线 | 在线观看色网站 | 精品久久网站 | 国产成人久久精品亚洲 | 一性一交视频 | 可以免费观看的av片 | 97偷拍在线视频 | 日韩精品中文字幕av | av免费在线网 | 久久免费精彩视频 | 国产精品中文字幕av | 黄色动态图xx| 久久国产欧美日韩 | 天天操天天能 | 欧美高清视频不卡网 | 久久免费久久 | 永久免费视频国产 | 在线观看91 | 国产成人在线网站 | 激情综合亚洲精品 | 亚洲天堂网在线观看视频 | 500部大龄熟乱视频 欧美日本三级 | 黄色的片子 | 欧美精品免费在线观看 | 免费看片成人 | 中文资源在线观看 | 91成人精品 | 午夜精品久久久久久久久久久久久久 | 中国一级片在线观看 | 日韩午夜视频在线观看 | 久久精品一区二区三区四区 | 男女全黄一级一级高潮免费看 | 91麻豆精品国产自产在线游戏 | 91精品天码美女少妇 | 男女拍拍免费视频 | 欧美久久成人 | 91原创在线观看 | 中文永久免费观看 | 啪啪小视频网站 | 亚洲精品国产拍在线 | 国产综合小视频 | 欧美成人影音 | 婷婷激情综合五月天 | 天天天在线综合网 | 日韩精品一区在线观看 | 国产不卡精品 | 最近中文字幕高清字幕免费mv | 九九九九免费视频 | 亚洲aⅴ乱码精品成人区 | 最近免费观看的电影完整版 | 亚洲三级网站 | 在线超碰av | 日韩免费电影一区二区 | 亚洲波多野结衣 | 国产青青青| 黄色成人av| 一区国产精品 | 99热最新| 日韩三级视频在线观看 | 欧美激情va永久在线播放 | 99性视频 | 久久av电影 | av高清一区二区三区 | 天天爱天天操 | 在线观看免费观看在线91 | 狠狠地日| 国产va精品免费观看 | 国产免费人成xvideos视频 | 一区二区三区高清在线观看 | 久久天天操 | 99精品国产在热久久下载 | 亚洲精品99久久久久久 | 91最新地址永久入口 | 国产视频在线观看一区二区 | 久久婷婷一区 | 亚洲国产精品一区二区久久,亚洲午夜 | 999成人网| 色吊丝在线永久观看最新版本 | 黄色的网站免费看 | 超碰免费公开 | 毛片精品免费在线观看 | 在线免费高清一区二区三区 | 超碰人人舔| 成人在线播放免费观看 | 亚洲丁香日韩 | 久久成人在线视频 | 2023天天干| 国产成人无码AⅤ片在线观 日韩av不卡在线 | 国产超碰在线 | 精品1区二区 | 超碰在线日韩 | 日韩中文字幕网站 | 亚州av网站大全 | 亚洲一级黄色片 | 久久国产热视频 | 国产精品激情 | 日韩免费一区二区在线观看 | 插婷婷 | 欧美做受xxx | 欧美日韩精品在线一区二区 | 天天干一干 | 91高清视频| 91在线视频免费播放 | 在线看福利av | 日韩精品一区二区三区免费观看 | 99精品国产免费久久久久久下载 | 蜜桃传媒一区二区 | 亚洲污视频 | 色婷婷视频网 | 天天草天天插 | 欧美精品久久久久久久久老牛影院 | 最新国产在线 | 国产精品久久久777 成人手机在线视频 | 韩国av免费 | 国产高清精品在线观看 | 国产日韩视频在线播放 | 中文字幕永久在线 | 国产精品一区免费观看 | 欧美视频日韩 | 国产精品久久99综合免费观看尤物 | 日韩av手机在线看 | 五月婷视频 | 精品国模一区二区 | 91porny九色91啦中文 | 天天爱综合 | 成人h在线观看 | 亚洲精品mv在线观看 | 中文永久免费观看 | 欧美亚洲久久 | 超碰人人99 | 西西大胆免费视频 | 国语自产偷拍精品视频偷 | 欧美在线视频一区二区三区 | 天天插天天射 | 中文字幕不卡在线88 | 91精品在线免费视频 | 五月在线视频 | 国产五月 | 久久精品99久久久久久 | 91视频a| 在线黄色av | 中文字幕婷婷 | 在线观看麻豆av | 亚洲精品美女久久17c | 国产高清无线码2021 | 成人h视频在线播放 | 超碰人人超碰 | 天天操天天爱天天爽 | 亚洲免费av在线 | 天天干天天爽 | 国产一区二区精品 | 国产做aⅴ在线视频播放 | www亚洲精品 | 色综合久| 黄色的视频网站 | 99国产精品一区 | 国产精品6999成人免费视频 | 国产欧美日韩精品一区二区免费 | 久久久国产精品成人免费 | 日日夜夜添 | www.久久色 | 奇米网在线观看 | 一级特黄av | 久久久精华网 | 三级黄色片在线观看 | 免费手机黄色网址 | 日韩精选在线观看 | 天堂av在线免费 | 国产又粗又猛又黄又爽的视频 | 久草久热| 欧美一级片免费在线观看 | 婷婷开心久久网 | 91亚洲精品乱码久久久久久蜜桃 | av成人在线观看 | 91电影福利| 国产精品 亚洲精品 | 四虎永久免费在线观看 | 欧美日韩国产高清视频 | www.天天成人国产电影 | 婷婷综合在线 | 精品96久久久久久中文字幕无 | 国产成人在线观看 | 欧美性色19p| 国产乱对白刺激视频不卡 | 亚洲激情一区二区三区 | 999久久久久 | 日韩欧美一区二区在线 | 丁香久久久 | 国产精品久久久久久电影 | 亚洲午夜精品一区 | 色综合天天狠天天透天天伊人 | 五月婷婷在线视频 | 91成年人在线观看 | 视频一区二区视频 | 激情开心色 | 亚洲精品综合在线 | 99婷婷| 国产无套一区二区三区久久 | 天天草天天干天天 | 国产成人精品一区二区在线 | 国产精品久久中文字幕 | 99在线精品免费视频九九视 | 久久人人插 | 国产理论在线 | 久久久资源 | 欧美性大战 | 久操中文字幕在线观看 | 午夜精品久久久久久久爽 | 国产精品夜夜夜一区二区三区尤 | 最近中文字幕免费观看 | 日韩在线免费看 | 97小视频 | 日日夜夜添 | 免费黄av | 精品国产一区二区三区久久久久久 | 欧美视频xxx | 999ZYZ玖玖资源站永久 | 久久久国产精品久久久 | 日韩理论在线观看 | 久久久久久毛片精品免费不卡 | 精品99999 | 亚洲成人精品 | 国产精品自产拍在线观看桃花 | 久久综合九色综合久久久精品综合 | 亚洲精品在线视频网站 | 国产日韩欧美在线播放 | 国产亚洲欧美精品久久久久久 | 婷婷综合在线 | 97色综合 | 久久视频精品在线观看 | 欧美日韩在线视频观看 | 黄色软件在线观看免费 | 免费在线中文字幕 | 在线精品亚洲一区二区 | 日韩在线观看小视频 | 色噜噜日韩精品欧美一区二区 | 欧美一区免费在线观看 | 中文字幕乱码日本亚洲一区二区 | 日本在线观看中文字幕无线观看 | 88av网站 | 国产日韩欧美在线观看 | 又爽又黄又刺激的视频 | 国产精品免费观看久久 | 国产精品久久久久久久久搜平片 | 天天天插 | 操碰av| 91免费观看网站 | 在线观看国产成人av片 | 中文字幕久久精品 | 在线观看黄色的网站 | 日韩免费三区 | a黄色片在线观看 | 91精品国产综合久久福利不卡 | 欧美精品一区二区免费 | 天操夜夜操 | 午夜国产福利在线 | 在线观av | 久久久久久久久久网站 | www.国产视频 | 婷婷丁香狠狠爱 | 日韩mv欧美mv国产精品 | 国产高清视频免费最新在线 | 国产一级二级视频 | 狠狠色噜噜狠狠狠狠2022 | 在线最新av | 日日夜夜精品免费 | 麻豆视频免费在线 | 美女一二三区 | 国产精品第十页 | 人人要人人澡人人爽人人dvd | 成人91在线| 亚洲精品国偷拍自产在线观看蜜桃 | 丁香婷婷综合激情 | 亚洲乱码精品久久久久 | 日韩一区二区在线免费观看 | 色偷偷888欧美精品久久久 | 国产色在线观看 | av大片网址 | 不卡在线一区 | 日韩网站在线 | 久久精品黄 | 深爱五月激情五月 | www.夜夜爽 | 91视频3p| 久久精品日本啪啪涩涩 | 日韩高清一二三区 | 天天视频亚洲 | 日韩欧美有码在线 | 黄色精品免费 | 国产精品久久久久久妇 | 国产人在线成免费视频 | 精品久久久久久国产偷窥 | 成人免费视频网站 | 91 在线视频 | 久久亚洲综合国产精品99麻豆的功能介绍 | 久久国产精品99久久久久久老狼 | 欧美一级在线观看视频 | 99久久精品国产观看 | 日韩欧美有码在线 | 精品在线观看免费 | 国产一区在线视频观看 | 日韩欧美精品一区二区三区经典 | 亚洲a免费 | 91日韩在线 | 伊人资源站| 天天天干夜夜夜操 | 精品久久久久一区二区国产 | 久久www免费视频 | 亚洲国产播放 | 观看免费av| 香蕉久久国产 | 日本一区二区三区免费观看 | 国产成人不卡 | 天堂网中文在线 | 91久久国产自产拍夜夜嗨 | 国产成人综合图片 | 国产91精品一区二区麻豆亚洲 | 亚洲精品视频第一页 | 国产成人精品一区二区三区福利 | 午夜三级大片 | 久久综合久久久久88 | 日韩av影视在线观看 | 免费观看第二部31集 | 欧美日韩视频在线观看一区二区 | 成人福利在线播放 | 一区二区三区av在线 | 中文字幕在线观看国产 | 少妇搡bbbb搡bbb搡忠贞 | 国产在线1区 | 国内少妇自拍视频一区 | 波多野结衣一区 | 国产精品中文 | 亚洲第一中文网 | 麻豆免费在线视频 | 9在线观看免费高清完整版在线观看明 | 日日操日日插 | 99久久国产免费免费 | 亚洲免费精品一区二区 | 午夜视频福利 | 91精品黄色| 91大神精品视频在线观看 | 色婷婷电影网 | 在线国产视频一区 | 99精品视频在线观看播放 | 天天操天天射天天 | 六月丁香在线视频 | 特级毛片网 | 国产精品久久久久久久免费观看 | 亚洲每日更新 | 国产资源免费在线观看 | 亚洲特级片| 91精品久久香蕉国产线看观看 | 久久五月婷婷综合 | 欧美日韩国产精品一区二区三区 | 久久精品视频18 | 一区二区三区精品在线视频 | 国产精品一区二区三区在线 | 精品一区二区综合 | zzijzzij日本成熟少妇 | 国产成免费视频 | 久久都是精品 | 免费福利片 | 中文国产在线观看 | 日本动漫做毛片一区二区 | 国产精品黄网站在线观看 | 亚洲欧美日韩国产一区二区三区 | 99久久久国产精品免费99 | 日日夜精品 | 狠狠躁夜夜a产精品视频 | 中文字幕色综合网 | 色婷婷视频在线观看 | 亚洲午夜久久久影院 | 黄色毛片一级 | 久久久久久久免费看 | 国内精品免费久久影院 | 在线之家免费在线观看电影 | 久久人人爽人人人人片 | 久草精品视频在线看网站免费 | 狠狠躁天天躁 | 香蕉影院在线观看 | 国产伦理一区二区三区 | www操操操 | 午夜 在线 | 久久久久久久久久久网 | 在线看成人 | 国内精品久久久久影院一蜜桃 | 日韩欧美xx | 中文一二区 | 99精品一区 | 黄色在线观看免费 | 黄色免费看片网站 | 久久视| 麻豆 videos | 日韩爱爱网站 | 久久永久免费视频 | 四虎影视国产精品免费久久 | 国产精品一区在线观看 | 不卡精品视频 | av网站在线观看播放 | 国产成人免费在线观看 | 日韩免费播放 | 欧美专区国产专区 | 在线观看亚洲电影 | 91久久国产自产拍夜夜嗨 | 免费国产黄线在线观看视频 | 日韩精品最新在线观看 | 正在播放久久 | 欧美91视频| 天天操天天干天天干 | 最新国产视频 | 国产美女免费视频 | av免费电影在线观看 | 四虎免费在线观看视频 | 一区二区三区免费在线观看视频 | 亚洲国产精品成人综合 | 久草精品视频在线观看 | 四虎国产免费 | 婷婷在线资源 | av在线免费播放网站 | 456成人精品影院 | 婷婷久久网站 | 久久久福利 | 视频91 | 国产麻豆视频 | 日韩三级中文字幕 | 99久高清在线观看视频99精品热在线观看视频 | 精品99在线 | 天天干天天操天天干 | 欧美精品一级视频 | 在线观看91视频 | 午夜精品一区二区三区视频免费看 | 日韩精品久久久久久久电影竹菊 | 黄色av电影免费观看 | 亚洲黄色片| 国产黄色免费在线观看 | 国产精品自在欧美一区 | 国产精品视频免费看 | 免费日韩三级 | 久草视频看看 | 91精品视频在线观看免费 | 久久久久久国产精品久久 | 日韩中文字幕免费 | 国产一区成人在线 | 国产高清成人 | 久草在线电影网 | 美女视频久久 | 丁香婷婷综合激情 | 人人爽人人澡人人添人人人人 | 中文字幕中文字幕 | a天堂中文在线 | 国产精品美女久久久久久2018 | 黄色大全视频 | 日韩精品久久久免费观看夜色 | 一区二区中文字幕在线观看 | 一级欧美日韩 | 不卡电影免费在线播放一区 | 久草资源在线观看 | 天天综合色天天综合 | 国产精品一区二区麻豆 | 亚洲人成影院在线 | 美女视频一区 | 97精品视频在线 | 免费av网址在线观看 | 日日干日日操 | 9在线观看免费高清完整版 玖玖爱免费视频 | 国产h片在线观看 | 亚洲久草视频 | 国产高清视频免费 | 久久免费中文视频 | 手机在线视频福利 | 香蕉视频久久 | 天天躁天天躁天天躁婷 | 成人高清在线观看 | 久久a v电影| av免费看av| 国产成人精品福利 | 97视频免费在线看 | 精品久久免费 | 欧美精品久久久久性色 | 亚洲视频久久久 | 99在线免费视频观看 | 日本一区二区三区免费看 | 日韩三区在线观看 | 国产99久 | 欧美日韩在线观看视频 | 超碰在线98 | 久久综合色天天久久综合图片 | 亚洲一级片免费观看 | 日本爽妇网 | 久久久久久久久爱 | 24小时日本在线www免费的 | 成人毛片一区 | 久草网在线视频 | 黄色精品久久 | 久草综合视频 | 黄色av一级 | av播放在线| 久久久久麻豆v国产 | 国产女v资源在线观看 | 国产亚洲视频在线观看 | 三级在线国产 | 日韩三级视频 | 超碰日韩在线 | 国产麻豆精品久久 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 天天做日日做天天爽视频免费 | 一区二区三区免费在线观看视频 | 粉嫩av一区二区三区免费 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 手机av资源 | 中文字幕在线观看91 | 色综合久久久久 | 国产精品v欧美精品v日韩 | 超碰人人99 | 亚洲aⅴ久久精品 | 一区二区视频电影在线观看 | 国产精品一区二区无线 | 国产视频每日更新 | 在线看中文字幕 | 808电影 | 日韩av电影手机在线观看 | 色综合天天射 | 激情在线网站 | 四虎免费在线观看视频 | 久久久久久久久久久久久久免费看 | 欧美日韩伦理在线 | 久久免费公开视频 | 国产精品久久久久久影院 | 国产精品一区二区免费看 | 久久精品资源 | www久久国产 | 欧美成年人在线观看 | 久久99国产精品久久99 | 国产精品原创视频 | 婷婷丁香七月 | 欧美一级电影片 | 久久视频| 天天天天天天天操 | 欧美a免费 | 97在线免费视频观看 | av在线不卡观看 | 久久久精品成人 | 久久久久久综合网天天 | 黄色大片入口 | 成人黄色电影视频 | 99精品国产99久久久久久97 | 99在线热播 | 亚洲人天堂 | 五月婷婷在线视频观看 | 四虎亚洲精品 | 日韩av片无码一区二区不卡电影 | 午夜电影中文字幕 | a在线观看视频 | 精品自拍sae8—视频 | 在线视频久 | 国产黑丝袜在线 | 国产精品精品国产色婷婷 | 一级一片免费视频 | 成人在线观看免费视频 | 99在线精品视频在线观看 | 成 人 黄 色 片 在线播放 | 在线a视频 | a色视频 | 97偷拍视频 | 91视频大全 | 在线国产中文字幕 | 国产中文字幕一区 | 日本在线观看一区二区三区 | 亚洲免费av在线播放 | 日韩三级.com | 视频国产 | 成 人 黄 色 片 在线播放 | 91av视频免费观看 | 日韩黄色中文字幕 | 日本免费一二三区 | 久久资源在线 | 91av原创| 午夜资源站 | 亚洲日本一区二区在线 | 狠狠躁日日躁狂躁夜夜躁av | 男女激情麻豆 | 久久久蜜桃 | 91av99| 黄色小说免费在线观看 | 久久久久久久久久久久久9999 | 欧美精品在线一区二区 | 色在线最新| 人人精久 | 久久亚洲福利 | 国产成人免费 | 精品国产乱码久久久久久三级人 | 亚洲精品久久久蜜臀下载官网 | 国产色视频 | 亚洲成a人片在线观看网站口工 | 国产一区二区影院 | 免费观看www视频 | 国产精品 美女 | 免费99精品国产自在在线 | 高清有码中文字幕 | 国产美女免费观看 | 69热国产视频| 亚州国产视频 | 天天操夜夜看 | 欧美久久久久久久久中文字幕 | 一区二区三区在线免费观看 | 天天操天天干天天摸 | 人人讲下载| av不卡免费看 | 麻花传媒mv免费观看 | 欧美福利精品 | 中文字幕乱码在线播放 | 婷婷中文字幕 | 国产一级精品绿帽视频 | 91视频高清完整版 | 成人丁香花 | 亚洲亚洲精品在线观看 | 亚洲国产成人久久综合 | 欧美日韩免费观看一区二区三区 | 国产一区成人 | 精品亚洲va在线va天堂资源站 | 99热这里只有精品免费 | 日韩欧美高清在线 | 国产精品久久久久999 | 国产精品美女在线 | 午夜久久久久 | 国产精品白虎 | 91中文字幕在线观看 | 在线免费看黄网站 | 国产精品a级 | 欧美a级一区二区 | 亚洲精品女 | 91高清在线看 | 久久综合色一综合色88 | 国产一区二区观看 | 国产小视频网站 | 6080yy精品一区二区三区 | se视频网址 | 玖玖在线免费视频 | 亚洲最大免费成人网 | 国产精品女人久久久 | 亚洲最大av | 看片网站黄色 | 成人国产精品久久久 | 日韩中文字幕免费在线观看 | 国产三级久久久 | 亚洲欧美日韩在线一区二区 | 午夜精品久久久久久 | 精品久操 | 亚洲有 在线 | 国产在线观看你懂得 | 亚洲精品在线一区二区三区 | 欧美日韩xxx | 日韩电影在线视频 | 久久电影网站中文字幕 | 在线观看va | 精品国产成人av在线免 | 四虎5151久久欧美毛片 | 久久女教师 | 久久无码精品一区二区三区 | 激情黄色一级片 | 337p日本欧洲亚洲大胆裸体艺术 | 国产精品成人在线 | 亚洲九九九在线观看 | 黄色软件在线观看 | 国产一级特黄毛片在线毛片 | 视频高清 | 97超碰精品| 黄色av成人在线观看 | 综合久久网站 | 视频国产一区二区三区 | 玖玖综合网 | 午夜视频黄 | 国产成人在线观看 | 久久午夜电影 | 91亚洲欧美激情 | 97精品国产97久久久久久免费 | 国产精品不卡av | 亚洲成成品网站 | 综合久久久久久久久 | 一本色道久久综合亚洲二区三区 | 91精品久久久久久综合乱菊 | 亚洲1级片 | 精一区二区| 激情综合色综合久久综合 | 91精品在线免费观看视频 | 国产中文字幕网 | 国产精品毛片一区视频播 | 99热最新网址 | 三级黄在线 | 91成人在线视频观看 | 超碰在线观看99 | 日本精品视频在线 | 国产精品久久久久久久久婷婷 | 999电影免费在线观看 | 啪啪资源 | 国产精品h在线观看 | 成人午夜电影在线播放 | 粉嫩一二三区 | 日韩毛片在线一区二区毛片 | 精品国产电影一区二区 | 欧美日韩二三区 | 久久综合五月婷婷 | 国产精品专区在线观看 | 国产福利中文字幕 | 婷婷五天天在线视频 | 色婷婷激情 | 精品国产一区二区三区久久久久久 | 狠狠艹夜夜干 | 久久成人精品电影 | 97在线免费视频 | 国产一级黄色片免费看 | 99精品免费视频 | 国产精品黄色在线观看 | 国产高清永久免费 | 国内精品久久久久影院日本资源 | 中文字幕在线视频第一页 | 免费黄色在线 | 色婷婷五| 青青河边草免费观看 | 久久久电影网站 | 亚洲 欧美 变态 国产 另类 | 日韩一级片观看 | a国产精品| 国产成a人亚洲精v品在线观看 | 中文字幕av有码 | 久久高清免费视频 | 天天曰天天曰 | 国产精品一区二区电影 | 99c视频在线| 中文字幕二区在线观看 | 国产v亚洲v| 国产精品入口麻豆 | 午夜精品久久久久久久爽 | 国产精品九九九九九九 | 国产精品一区二区久久精品爱涩 | 中文字幕精品一区二区三区电影 | 在线观看中文av | 国产精品系列在线观看 | 91精品国自产拍天天拍 | 国产黄色精品在线观看 | 亚洲 欧美 国产 va在线影院 | 欧美日韩在线观看一区二区三区 | 97超碰人人澡人人爱 | 玖玖精品在线 | 人人干人人草 | 中文字幕一二 | 天天天干天天天操 | 综合精品久久久 | 日韩欧美在线一区 | 欧美黑吊大战白妞欧美 | 国产精品美女久久久久久网站 | 少妇性xxx| 中字幕视频在线永久在线观看免费 | 丁香五月亚洲综合在线 | 久久少妇免费视频 | 久久午夜免费观看 | www.夜夜操.com | 911精品视频 | 久久久九色精品国产一区二区三区 | 在线黄频 | 三级a毛片 | 美女福利视频网 | 97视频免费 | 国产激情久久久 | 99在线精品视频 | 日韩精品在线一区 | 日韩精品一区二区三区中文字幕 | 怡红院av| 亚洲国产小视频在线观看 | 97成人精品视频在线播放 | 亚洲精品白浆高清久久久久久 | 日韩精品无码一区二区三区 | 亚洲精品国产免费 | 最新日韩视频在线观看 | 不卡的一区二区三区 | 亚洲一区尤物 | 亚洲一级免费电影 | 人成免费网站 | 日本中文乱码卡一卡二新区 | 日日干天天插 | av免费网| 久久视频精品在线 | 色婷婷成人网 | 精品一区二区av | 国产精品亚洲片在线播放 | 精品视频一区在线 | 99这里只有久久精品视频 | 国产成人一区二区三区电影 | 中文字幕视频播放 | 欧美日韩久久久 | 新版资源中文在线观看 | 国产精品一区二区三区四 | 国产精品理论在线观看 | 五月婷婷亚洲 | 久久人人爽人人爽人人片av软件 | 开心婷婷色 | 国产精品久久久久三级 | 成人av在线影视 | 国产美女精品久久久 | 国产一级黄色片免费看 | 成人久久电影 | 精品久久久久久久久久久院品网 | 一区二区三区精品在线视频 | 欧美一级片在线播放 | 韩日精品在线 | 色网av | 亚洲精品资源 | 久久精品99国产精品酒店日本 | 免费a级黄色毛片 | 亚洲人视频在线 | 中文字幕av专区 | 国产无套精品久久久久久 | 超碰在线成人 | 97超碰人人澡人人爱 | 国产午夜小视频 | 日韩动漫免费观看高清完整版在线观看 | 色就是色综合 | 成人免费xxx在线观看 | 五月在线视频 | 亚洲国产精品推荐 | 在线观看中文字幕亚洲 | 国产亚洲欧洲 | 国产成人一二三 | 日日爱av| 99热国产在线观看 | 亚洲国产免费网站 | 国产精品一区二区免费在线观看 | 午夜精品区 | 久久久国产精品麻豆 | 国产视频欧美视频 | 久久久久久97三级 | 五月综合婷| 黄色三级av | 亚洲一区久久久 | 日韩精品你懂的 | 婷婷五月情 | 91手机视频在线 | 日韩成人在线免费观看 | 国产成人精品av在线观 | 国产不卡在线看 | 在线综合色 | 国产福利一区二区在线 | 国产精品成人av久久 | 久久人人爽人人爽人人 | 国产视频在线观看一区二区 | 免费视频黄 | 在线免费观看黄网站 |