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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > MAC >内容正文

MAC

go map搬迁的实现

發(fā)布時(shí)間:2023/11/23 MAC 39 博士
生活随笔 收集整理的這篇文章主要介紹了 go map搬迁的实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
  • 能具體解釋一下這兩種情況嗎?
  • 下面開始準(zhǔn)備搬遷了
  • 別著急,正式搬遷才剛剛開始
    • 先找找可能的目標(biāo)桶位置吧
    • 遍歷bucket鏈表,一個(gè)個(gè)遷移
    • 事后事(整理)也別忘記了
  • 最后,要不要看下是不是全搬遷完了呢?

    為什么要搬遷?無非是要么桶用的太多,要么太多的數(shù)據(jù)都到了overflow里面了

    go針對這兩種情況做出了不同的搬遷處理

    • bucket用太多:擴(kuò)容兩倍,重新hash
    • overflow用太多:不擴(kuò)容,不重新hash,只是搬遷而已

    以下代碼基于go1.17

    能具體解釋一下這兩種情況嗎?

    桶用太多

    go用了一個(gè)負(fù)載因子loadFactor來衡量。也就是如果數(shù)量count大于loadFactor * bucket數(shù),那么就要擴(kuò)容

    代碼如下

    const (
    ?? ?// Maximum number of key/elem pairs a bucket can hold.
    ?? ?bucketCntBits = 3
    ?? ?bucketCnt ? ? = 1 << bucketCntBits
    
    ?? ?// Maximum average load of a bucket that triggers growth is 6.5.
    ?? ?// Represent as loadFactorNum/loadFactorDen, to allow integer math.
    ?? ?loadFactorNum = 13
    ?? ?loadFactorDen = 2
    )
    
    // 在元素?cái)?shù)量大于8且元素?cái)?shù)量大于負(fù)載因子(6.5)*桶總數(shù),就要進(jìn)行擴(kuò)容
    func overLoadFactor(count int, B uint8) bool {
    ?? ?return count > bucketCnt && uintptr(count) > loadFactorNum*(bucketShift(B)/loadFactorDen)
    }

    overflow太多

    overflow太多在go中分兩種情況

    • bucket數(shù)量小于1<<15時(shí),overflow超過桶總數(shù)
    • bucket數(shù)量大于1<<15時(shí),overflow超過1<<15
    // overflow buckets 太多
    func tooManyOverflowBuckets(noverflow uint16, B uint8) bool {
    ?? ?if B > 15 {
    ?? ??? ?B = 15
    ?? ?}
    ?? ?return noverflow >= uint16(1)<<(B&15)
    }

    下面開始準(zhǔn)備搬遷了

    準(zhǔn)備搬遷工作是由hashGrow方法完成的,他主要就是進(jìn)行申請新buckets空間、初始化搬遷進(jìn)度為0、將原桶標(biāo)記為舊桶等

    func hashGrow(t *maptype, h *hmap) {
    ?? ?// 判斷是bucket多還是overflow多,然后根據(jù)這兩種情況去申請新buckets空間
    ?? ?bigger := uint8(1)
    ?? ?if !overLoadFactor(h.count+1, h.B) {
    ?? ??? ?bigger = 0
    ?? ??? ?h.flags |= sameSizeGrow
    ?? ?}
    ?? ?oldbuckets := h.buckets
    ?? ?newbuckets, nextOverflow := makeBucketArray(t, h.B+bigger, nil)
    
    ?? ?flags := h.flags &^ (iterator | oldIterator)
    ?? ?if h.flags&iterator != 0 {
    ?? ??? ?flags |= oldIterator
    ?? ?}
    ?? ?// commit the grow (atomic wrt gc)
    ? // 更新最新的bucket總數(shù)、將原桶標(biāo)記為舊桶(后面判斷是否在搬遷就是通過這個(gè)進(jìn)行判斷的)
    ?? ?h.B += bigger
    ?? ?h.flags = flags
    ?? ?h.oldbuckets = oldbuckets
    ?? ?h.buckets = newbuckets
    ? // 初始化搬遷進(jìn)度為0
    ?? ?h.nevacuate = 0
    ? // 初始化新桶overflow數(shù)量為0
    ?? ?h.noverflow = 0
    
    ? // 將原來extra的overflow掛載到old overflow,代表這已經(jīng)是舊的了
    ?? ?if h.extra != nil && h.extra.overflow != nil {
    ?? ??? ?// Promote current overflow buckets to the old generation.
    ?? ??? ?if h.extra.oldoverflow != nil {
    ?? ??? ??? ?throw("oldoverflow is not nil")
    ?? ??? ?}
    ?? ??? ?h.extra.oldoverflow = h.extra.overflow
    ?? ??? ?h.extra.overflow = nil
    ?? ?}
    ? // extra指向下一塊空閑的overflow空間
    ?? ?if nextOverflow != nil {
    ?? ??? ?if h.extra == nil {
    ?? ??? ??? ?h.extra = new(mapextra)
    ?? ??? ?}
    ?? ??? ?h.extra.nextOverflow = nextOverflow
    ?? ?}
    }

    別著急,正式搬遷才剛剛開始

    正式搬遷其實(shí)是在添加、刪除元素的時(shí)候順便干的。在發(fā)現(xiàn)搬遷的時(shí)候,就可能會(huì)做一到兩次的搬遷,每次搬遷一個(gè)bucket。具體是一次還是兩次就是下面的邏輯決定的

    搬遷正在使用的bucket對應(yīng)old bucket(如果沒有搬遷過的話)

    若還正在搬遷就再搬一個(gè)以加快搬遷

    func growWork(t *maptype, h *hmap, bucket uintptr) {
    ?? ?// make sure we evacuate the oldbucket corresponding
    ?? ?// to the bucket we're about to use
    ?? ?evacuate(t, h, bucket&h.oldbucketmask())
    
    ?? ?// evacuate one more oldbucket to make progress on growing
    ?? ?if h.growing() {
    ?? ??? ?evacuate(t, h, h.nevacuate)
    ?? ?}
    }

    先找找可能的目標(biāo)桶位置吧

    對于不擴(kuò)容的情況,可能只有一個(gè)——就是原來序號對應(yīng)的桶(就是下面的x)。

    對于擴(kuò)容2倍的情況,顯然既有可能是在原來序號對應(yīng)桶,也有可能是原來序號加上擴(kuò)容的桶數(shù)的序號

    比如B由2變成了3,那么就要看hash第3bit到底是0還是1了,如果是001,那么和原來的一樣,是序號為1的桶;如果是101,那么就是原來序號1+22 (擴(kuò)容桶數(shù))=序號為5的桶

    ?? ??? ?// xy contains the x and y (low and high) evacuation destinations.
    ?? ??? ?var xy [2]evacDst
    ?? ??? ?x := &xy[0]
    ?? ??? ?x.b = (*bmap)(add(h.buckets, oldbucket*uintptr(t.bucketsize)))
    ?? ??? ?x.k = add(unsafe.Pointer(x.b), dataOffset)
    ?? ??? ?x.e = add(x.k, bucketCnt*uintptr(t.keysize))
    
    ?? ??? ?if !h.sameSizeGrow() {
    ?? ??? ??? ?// Only calculate y pointers if we're growing bigger.
    ?? ??? ??? ?// Otherwise GC can see bad pointers.
    ?? ??? ??? ?y := &xy[1]
    ? ? ? // newBit在擴(kuò)容的情況下等于1<<(B-1)
    ?? ??? ??? ?y.b = (*bmap)(add(h.buckets, (oldbucket+newbit)*uintptr(t.bucketsize)))
    ?? ??? ??? ?y.k = add(unsafe.Pointer(y.b), dataOffset)
    ?? ??? ??? ?y.e = add(y.k, bucketCnt*uintptr(t.keysize))
    ?? ??? ?}

    遍歷bucket鏈表,一個(gè)個(gè)遷移

    每一個(gè)bucket在溢出之后都會(huì)附接overflow桶,每個(gè)bucket包括overflow儲(chǔ)存著8個(gè)元素

    • 若元素tophash為空,則表示被搬遷過,繼續(xù)下一個(gè)
    • 計(jì)算hash值
    • 若超出當(dāng)前bucket容量,就新建一個(gè)overflow bucket
    • 將原來的key、value復(fù)制到新bucket新位置
    • 定位到下一個(gè)元素

    在上面的步驟計(jì)算hash值在overflow用太多的情況下是不用的

    此外,在桶用太多的情況下,計(jì)算hash

    for ; b != nil; b = b.overflow(t) {
    ? // 找到key開始位置k,和value開始位置e
    ?? ?k := add(unsafe.Pointer(b), dataOffset)
    ?? ?e := add(k, bucketCnt*uintptr(t.keysize))
    ? // 遍歷bucket中元素進(jìn)行搬遷
    ?? ?for i := 0; i < bucketCnt; i, k, e = i+1, add(k, uintptr(t.keysize)), add(e, uintptr(t.elemsize)) {
    ? ? // 獲取tophash,若發(fā)現(xiàn)是空,說明已經(jīng)搬遷過。并標(biāo)記為空且已搬遷
    ?? ??? ?top := b.tophash[i]
    ?? ??? ?if isEmpty(top) {
    ?? ??? ??? ?b.tophash[i] = evacuatedEmpty
    ?? ??? ??? ?continue
    ?? ??? ?}
    ?? ??? ?if top < minTopHash {
    ?? ??? ??? ?throw("bad map state")
    ?? ??? ?}
    ?? ??? ?k2 := k
    ? ? // 若key為引用類型就解引用
    ?? ??? ?if t.indirectkey() {
    ?? ??? ??? ?k2 = *((*unsafe.Pointer)(k2))
    ?? ??? ?}
    ? ? // X指的就是原序號桶
    ? ? // Y指的就是擴(kuò)容情況下,新的最高位為1的時(shí)候應(yīng)該去的桶
    ?? ??? ?var useY uint8
    ?? ??? ?if !h.sameSizeGrow() {
    ?? ??? ??? ?// Compute hash to make our evacuation decision (whether we need
    ?? ??? ??? ?// to send this key/elem to bucket x or bucket y).
    ?? ??? ??? ?hash := t.hasher(k2, uintptr(h.hash0))
    ? ? ? // 若正在迭代,且key為NaNs。是不是使用Y就取決最低位是不是1了
    ?? ??? ??? ?if h.flags&iterator != 0 && !t.reflexivekey() && !t.key.equal(k2, k2) {
    ?? ??? ??? ??? ?useY = top & 1
    ?? ??? ??? ??? ?top = tophash(hash)
    ?? ??? ??? ?} else {
    ? ? ? ? // 如果最高位為1,那么就應(yīng)該選Y桶
    ?? ??? ??? ??? ?if hash&newbit != 0 {
    ?? ??? ??? ??? ??? ?useY = 1
    ?? ??? ??? ??? ?}
    ?? ??? ??? ?}
    ?? ??? ?}
    
    ?? ??? ?if evacuatedX+1 != evacuatedY || evacuatedX^1 != evacuatedY {
    ?? ??? ??? ?throw("bad evacuatedN")
    ?? ??? ?}
    
    ? ? // 標(biāo)記X還是Y搬遷,并依此獲取到搬遷目標(biāo)桶
    ?? ??? ?b.tophash[i] = evacuatedX + useY?
    ?? ??? ?dst := &xy[useY] ? ? ? ? ? ? ? ??
    
    ? ? // 若目標(biāo)桶已經(jīng)超出桶容量,就分配新overflow
    ?? ??? ?if dst.i == bucketCnt {
    ?? ??? ??? ?dst.b = h.newoverflow(t, dst.b)
    ?? ??? ??? ?dst.i = 0
    ?? ??? ??? ?dst.k = add(unsafe.Pointer(dst.b), dataOffset)
    ?? ??? ??? ?dst.e = add(dst.k, bucketCnt*uintptr(t.keysize))
    ?? ??? ?}
    ? ? // 更新元素目標(biāo)桶對應(yīng)的tophash
    ? ? // 采用與而非取模,應(yīng)該是出于性能目的
    ?? ??? ?dst.b.tophash[dst.i&(bucketCnt-1)] = top
    ? ? // 復(fù)制key到目標(biāo)桶
    ?? ??? ?if t.indirectkey() {
    ?? ??? ??? ?*(*unsafe.Pointer)(dst.k) = k2 // copy pointer
    ?? ??? ?} else {
    ?? ??? ??? ?typedmemmove(t.key, dst.k, k) // copy elem
    ?? ??? ?}
    ? ? // 復(fù)制value到目標(biāo)桶
    ?? ??? ?if t.indirectelem() {
    ?? ??? ??? ?*(*unsafe.Pointer)(dst.e) = *(*unsafe.Pointer)(e)
    ?? ??? ?} else {
    ?? ??? ??? ?typedmemmove(t.elem, dst.e, e)
    ?? ??? ?}
    ? ??
    ? ? // 更新目標(biāo)桶元素?cái)?shù)量、key、value位置
    ?? ??? ?dst.i++
    ?? ??? ?// These updates might push these pointers past the end of the key or elem arrays. ??
    ? ? // That's ok, as we have the overflow pointer at the end of the bucket to protect against pointing past the end of the bucket.
    ?? ??? ?dst.k = add(dst.k, uintptr(t.keysize))
    ?? ??? ?dst.e = add(dst.e, uintptr(t.elemsize))
    ?? ?}
    }

    事后事(整理)也別忘記了

    如果發(fā)現(xiàn)沒有在使用舊buckets的就把原buckets中的key-value清理掉吧(tophash還是保留用來搬遷時(shí)判斷狀態(tài))

            // Unlink the overflow buckets & clear key/elem to help GC.
            if h.flags&oldIterator == 0 && t.bucket.ptrdata != 0 {
          // 計(jì)算當(dāng)前原bucket所在的開始位置b
                b := add(h.oldbuckets, oldbucket*uintptr(t.bucketsize))
                // Preserve b.tophash because the evacuation
                // state is maintained there.
          // 從開始位置加上key-value的偏移量,那么ptr所在的位置就是實(shí)際key-value的開始位置
                ptr := add(b, dataOffset)
          // n是總bucket大小減去key-value的偏移量,就key-value占用空間的大小
                n := uintptr(t.bucketsize) - dataOffset
          // 清理從ptr開始的n個(gè)字節(jié)
                memclrHasPointers(ptr, n)
            }
    

    最后,要不要看下是不是全搬遷完了呢?

    在本次搬遷進(jìn)度是最新進(jìn)度的情況下(不是最新就讓最新的去干吧)

    • 更新進(jìn)度
    • 嘗試往后看1024個(gè)bucket,如果發(fā)現(xiàn)有搬遷完的,但是沒更新進(jìn)度就順便幫別人更新了
    • 若是全部bucket都完成搬遷了,那就直接將原buckets釋放掉
    func advanceEvacuationMark(h *hmap, t *maptype, newbit uintptr) {
      // 更新進(jìn)度
        h.nevacuate++
        // Experiments suggest that 1024 is overkill by at least an order of magnitude.
        // Put it in there as a safeguard anyway, to ensure O(1) behavior.
      // 向后看,更新已經(jīng)完成的進(jìn)度
        stop := h.nevacuate + 1024
        if stop > newbit {
            stop = newbit
        }
        for h.nevacuate != stop && bucketEvacuated(t, h, h.nevacuate) {
            h.nevacuate++
        }
      // 若是完成搬遷,就釋放掉old buckets、重置搬遷狀態(tài)、釋放原bucket掛載到extra的overflow指針
        if h.nevacuate == newbit { // newbit == # of oldbuckets
            // Growing is all done. Free old main bucket array.
            h.oldbuckets = nil
            // Can discard old overflow buckets as well.
            // If they are still referenced by an iterator,
            // then the iterator holds a pointers to the slice.
            if h.extra != nil {
                h.extra.oldoverflow = nil
            }
            h.flags &^= sameSizeGrow
        }
    }

    到此這篇關(guān)于go map搬遷的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)go map搬遷內(nèi)容請搜索電腦知識網(wǎng)www.pcxun.com以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持電腦知識網(wǎng)www.pcxun.com!

    總結(jié)

    以上是生活随笔為你收集整理的go map搬迁的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    久久免费中文视频 | 天天色天天射综合网 | 热久久视久久精品18亚洲精品 | 国产首页 | 亚洲欧美日韩国产一区二区 | 日本中文字幕在线看 | av电影在线免费 | 日韩av二区 | 免费av视屏| 91热视频 | 欧美亚洲一级片 | 91禁在线观看 | 日韩av手机在线看 | 最近免费中文视频 | 久久伊人精品一区二区三区 | 免费观看午夜视频 | 日韩中文字幕视频在线观看 | 欧美人人爱| 91精品播放 | 亚洲无在线 | japanese黑人亚洲人4k | 国产精品一区二区免费看 | 中文国产成人精品久久一 | 国产中文字幕av | sesese图片 | 国产精品九九久久久久久久 | 亚洲资源在线 | 在线观看久久久久久 | 国产在线观看91 | 操操操影院 | 国产色妞影院wwwxxx | 九九涩涩av台湾日本热热 | 久草在线这里只有精品 | 亚洲做受高潮欧美裸体 | 久久国产精品99久久久久 | 国产亚洲精品日韩在线tv黄 | www99久久| 高清av网 | 久久这里只有精品1 | 久久亚洲欧美日韩精品专区 | 亚州精品天堂中文字幕 | 亚洲成人国产精品 | www.91av在线| 在线观看亚洲精品视频 | 久久精品国产亚洲 | av资源免费在线观看 | 亚洲国产精品va在线 | 久久精品国产精品亚洲精品 | 97av视频| 91精品国产高清自在线观看 | 久久久91精品国产一区二区三区 | 深爱开心激情网 | 国产精品久久99 | 99热这里只有精品8 久久综合毛片 | 三级av在线播放 | 九九综合九九 | 四虎永久免费在线观看 | 一级成人网 | 992tv人人网tv亚洲精品 | 日本中文字幕在线看 | 91精品久久久久久综合乱菊 | 国内精品久久久久久久影视简单 | 久久免费的视频 | 91在线视频播放 | 日韩在线高清视频 | 麻豆精品国产传媒 | 国产精品视频在线观看 | 99久久这里有精品 | 一级黄色免费 | 狠狠干网| 国产高清视频在线播放 | 国产成人精品在线观看 | 久久免费精品视频 | 欧美日韩不卡一区二区三区 | 色悠悠久久综合 | 中文字幕在线观看视频免费 | 日本中文字幕在线免费观看 | 亚洲va欧洲va国产va不卡 | 激情丁香综合五月 | 香蕉在线视频播放网站 | 伊人电影天堂 | 国产香蕉视频在线观看 | 久久精品视频日本 | 天天天色| 久久精品中文视频 | 久草精品视频在线观看 | 久久亚洲视频 | 色综合天天做天天爱 | 激情五月婷婷综合 | 久久综合精品国产一区二区三区 | 婷婷四房综合激情五月 | 日日爱av| 丁香花在线视频观看免费 | 欧美视频在线观看免费网址 | 亚洲成a人片77777kkkk1在线观看 | 国产精品免费观看国产网曝瓜 | 麻豆va一区二区三区久久浪 | 成人av片在线观看 | 99色网站 | 中文视频在线 | 日韩在线网 | 深爱激情开心 | 亚洲国产精品女人久久久 | 国产 视频 久久 | 美腿丝袜一区二区三区 | 天天草天天草 | 在线观看www视频 | 久久99热精品这里久久精品 | 国产精品久久久久久久久免费 | 91中文视频 | av在线小说| 婷婷精品视频 | 成人永久免费 | av一级片网站 | 91免费看黄色 | 国产伦理一区二区三区 | 一区二区视频电影在线观看 | 中文字幕 欧美性 | 国产成人免费精品 | 日日草天天草 | 一区二区三区中文字幕在线观看 | 天天综合五月天 | 久久观看最新视频 | 亚洲精品国产精品国自 | 丁香婷婷色月天 | 激情深爱五月 | 美女久久一区 | 久久艹在线 | 美女网色| 国产精品久久久久免费观看 | 国产人成一区二区三区影院 | 国产精品久久久久久一二三四五 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 99夜色 | 国产在线综合视频 | 亚洲精品无 | 午夜视频在线网站 | 在线播放 日韩专区 | 国产成人高清在线 | 欧美激情综合五月色丁香 | 久久一区二 | 中文视频一区二区 | 91麻豆精品国产91久久久无限制版 | 91精品看片 | 三级小视频在线观看 | 中文字幕日韩国产 | 18久久久久久 | 1024久久| 97精品国产97久久久久久粉红 | 五月开心综合 | 97视频在线观看免费 | 国产精品www | 国产精品久久久久久久久久久久午夜 | 亚洲天堂香蕉 | 亚洲日本色 | 成年人在线免费看视频 | 中文字幕在线资源 | 日本电影黄色 | 久久久久久久久久久久久影院 | 亚洲精品福利在线观看 | 黄色www | 日韩爱爱网站 | 精品国产一二三四区 | 国产偷国产偷亚洲清高 | 色噜噜狠狠狠狠色综合久不 | 久久久综合 | 久久综合久久综合这里只有精品 | 国产精品久久久久久久久久久久久 | 在线成人欧美 | 麻豆影视在线免费观看 | 天堂久色| 国内精品久久久久影院一蜜桃 | 中文资源在线观看 | 狠狠黄| 精品国产成人在线 | 狠狠干,狠狠操 | 国产亚洲亚洲 | 91视频黄色 | 人人添人人澡 | 最新av网址在线 | 涩涩色亚洲一区 | 日本黄色免费在线观看 | 欧美经典久久 | 手机看片99 | 亚洲国产精品成人女人久久 | 成人午夜网 | 国产亚洲精品久久久久久网站 | 麻豆成人在线观看 | 黄污污网站 | 欧美在线不卡一区 | 精品二区视频 | 色网站在线免费 | 精品国产亚洲日本 | 开心婷婷色 | 在线视频一二区 | 中文字幕av在线电影 | 一本一道久久a久久精品蜜桃 | 久久久久欠精品国产毛片国产毛生 | 亚洲精品一区二区网址 | 天天爽夜夜爽人人爽一区二区 | 日本巨乳在线 | 国产色视频网站 | 中文字幕免费在线 | 92国产精品久久久久首页 | 精品a视频| 一级片观看 | 亚洲天堂社区 | 国产专区第一页 | 久草在线视频免赞 | 最新av电影网站 | 国产中文字幕视频 | 亚州精品成人 | 四虎成人在线 | 国产又粗又猛又色 | 亚洲伦理一区二区 | 成人教育av | 免费a v观看 | 久久伊人婷婷 | 青草视频在线免费 | 最新成人av | 三三级黄色片之日韩 | 亚洲天堂网在线视频观看 | 丁五月婷婷| 人人射人人澡 | 国产一区二区三区免费在线 | 免费性网站| 精品国产一区二区三区久久久 | 91在线91拍拍在线91 | 日韩美一区二区三区 | 高清国产午夜精品久久久久久 | 亚洲国产中文字幕在线视频综合 | 久久精品视频在线免费观看 | 日本久久成人 | 永久免费看av | 99精品免费久久久久久久久日本 | zzijzzij亚洲日本少妇熟睡 | 日本精品va在线观看 | 国产日韩精品欧美 | 久久97视频| 中文字幕国产精品 | 五月天久久久久久 | 国产美女搞久久 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 精品视频在线视频 | 亚洲电影av在线 | 99精品一区二区 | 久操视频在线免费看 | 天天操天天干天天操天天干 | 99日韩精品| 免费人做人爱www的视 | 天天射成人 | 五月婷婷六月丁香激情 | 九九热在线精品视频 | 精品视频在线视频 | 天天干天天操天天做 | 国产一级精品在线观看 | 中文在线www| 热99在线 | 久久精品视频免费播放 | 国产一级黄色av | 亚洲国产精品传媒在线观看 | 激情欧美xxxx | 97韩国电影| 国产成人精品一区二区三区在线 | 成人一级片视频 | 日韩一区视频在线 | 亚洲黄色免费在线 | 韩国av免费在线观看 | 免费观看国产精品 | 在线观看视频你懂得 | 操处女逼| 黄色三级久久 | 亚洲在线免费视频 | 国产成人精品亚洲 | 狠狠狠综合 | 久久午夜网 | 日韩av在线资源 | 免费在线看v| 天天干,天天射,天天操,天天摸 | 久久久久国产视频 | 91理论片午午伦夜理片久久 | 亚洲精品动漫成人3d无尽在线 | 欧美韩日在线 | 久草成人在线 | 欧美日韩精品在线一区二区 | 久久久成人精品 | 麻豆久久一区 | 亚洲一级片免费观看 | 国产女教师精品久久av | 精品视频中文字幕 | 九9热这里真品2 | 日本丶国产丶欧美色综合 | 欧美精品在线一区二区 | 天天色天天综合 | 久久在线免费观看视频 | 国产精品久久久久久爽爽爽 | www日韩视频 | 99国产精品久久久久久久久久 | 国产成人a亚洲精品v | 国产精品刺激对白麻豆99 | 97天堂 | 欧美激情综合五月色丁香小说 | av韩国在线 | av线上看 | 国产亚洲精品日韩在线tv黄 | 久久久久久黄 | 精品国内自产拍在线观看视频 | 国产涩涩在线观看 | 亚洲丁香久久久 | 久久不射电影网 | 黄色小说视频在线 | 成人午夜免费福利 | 午夜视频99 | 久久精品久久久久久久 | 免费看v片 | 成人h在线| 日韩电影中文,亚洲精品乱码 | 亚洲涩涩网 | 人交video另类hd| 五月丁婷婷 | 国产精品18久久久久久首页狼 | 九9热这里真品2 | 国产成人三级一区二区在线观看一 | 亚洲精品午夜一区人人爽 | 中文字幕国语官网在线视频 | 久久久久久蜜桃一区二区 | 日本少妇高清做爰视频 | 天天色综合1 | 久久免费播放视频 | 国内精品视频在线 | 成年人在线播放视频 | 欧美国产日韩久久 | 2018精品视频| 国产精品久久网站 | av一本久道久久波多野结衣 | 午夜av电影院| 国产精品电影一区二区 | 2021国产视频| 国产精品免费人成网站 | 久热色超碰 | avove黑丝| 亚洲精品在线视频 | 亚洲在线高清 | 日韩av一区在线观看 | 在线免费视频a | 欧美精品乱码久久久久久按摩 | 精品一区二区在线看 | 亚洲精品黄色在线观看 | 欧洲亚洲国产视频 | 人人插人人玩 | 色综合中文综合网 | 国产精品18久久久久久久久 | 国产精品美女久久久久久久 | 国产青草视频在线观看 | 午夜精选视频 | 人交video另类hd| 国产精品一区免费观看 | 久久a v电影 | 91九色在线视频观看 | 久久久久免费精品 | 精品视频免费在线 | 亚洲综合在线观看视频 | 色干综合 | 久久在线看 | 91视频国产高清 | 亚洲午夜久久久久久久久久久 | 免费在线观看一区二区三区 | 国产一级片免费视频 | 激情五月婷婷 | 日韩欧美电影网 | 亚洲午夜小视频 | 欧美人交a欧美精品 | 成人国产精品一区 | 国产69精品久久久久久久久久 | 免费涩涩网站 | 色综合色综合久久综合频道88 | 一区三区视频 | 一区二区欧美日韩 | 天天射天天色天天干 | 2023年中文无字幕文字 | 天天射天天添 | 91成人小视频 | 蜜臀aⅴ国产精品久久久国产 | 美女在线观看网站 | 久久这里精品视频 | 99精品国产一区二区 | 狠狠激情中文字幕 | 黄色三级久久 | 国产精品男女视频 | 在线观看中文字幕亚洲 | 极品久久久 | 91视频免费网站 | 日韩欧美在线播放 | 天堂网一区二区三区 | 久久久国产一区二区三区 | 国产一级在线观看视频 | 久草视频中文 | 少妇按摩av | 国产精品亚洲精品 | 97色在线观看 | 69国产在线观看 | 在线观看视频你懂得 | 五月婷婷中文网 | 天天爽夜夜爽人人爽曰av | 蜜臀91丨九色丨蝌蚪老版 | 黄色网址a | 精壮的侍卫呻吟h | 一级片视频免费观看 | 亚州精品一二三区 | 亚洲午夜小视频 | 精品一区欧美 | 国产日韩精品在线 | 福利网在线 | 日韩精品短视频 | 久久激情综合 | 在线免费观看黄色大片 | 欧美韩日视频 | 免费在线色| 国产成人精品在线观看 | 国产精品久久久久久久久岛 | 成人在线观看日韩 | 欧美婷婷综合 | 成年人在线免费看视频 | 亚洲欧美激情精品一区二区 | 国产免费人成xvideos视频 | 亚洲欧美国产日韩在线观看 | 国产第一页精品 | 欧美一级特黄aaaaaa大片在线观看 | 国产探花在线看 | 国产精品久久久久国产精品日日 | www.色五月| 日本韩国在线不卡 | 天堂网av在线 | 久久精品国产一区二区三区 | 黄色一级免费电影 | 国产一区二区三区 在线 | 在线看片中文字幕 | 一区二区三区日韩精品 | 五月婷婷色综合 | 又黄又爽的视频在线观看网站 | 亚一亚二国产专区 | 欧美一级片在线免费观看 | 午夜精品久久久99热福利 | 欧美在线不卡一区 | 久久精品欧美日韩精品 | 免费观看第二部31集 | 在线你懂的视频 | 丁香婷婷深情五月亚洲 | 7799av| 国产色啪| 久久久久久国产精品免费 | 狠狠躁天天躁 | 人人狠狠综合久久亚洲 | 国产日韩高清在线 | 国产爽视频 | 99综合久久 | 日韩免费一级a毛片在线播放一级 | 97超碰在线久草超碰在线观看 | 国产美女精彩久久 | 欧美日韩中文在线视频 | 色综合久久中文字幕综合网 | 99久久电影| 91大神精品视频 | 毛片www | 精品国产乱码久久久久 | 黄色三级免费观看 | 一级黄色片在线免费观看 | www夜夜操com| 国产亚洲成人网 | 99性视频 | 国产精品 日韩 欧美 | 日韩视频在线观看视频 | 日韩av女优视频 | 91香蕉视频在线下载 | 国产高清视频免费最新在线 | 狠狠干电影| 欧美小视频在线观看 | 久久久久久蜜桃一区二区 | 懂色av一区二区在线播放 | 夜夜干天天操 | 婷婷免费在线视频 | www.香蕉视频在线观看 | 免费毛片一区二区三区久久久 | 园产精品久久久久久久7电影 | av在线小说| 婷婷色中文网 | 81精品国产乱码久久久久久 | 精品久久一区二区 | av在线之家电影网站 | 久久久精品小视频 | 国产精品专区在线 | 一二三精品视频 | 日韩中文字幕免费电影 | 日韩精品一区二区三区第95 | 欧美人人爱 | 久久www免费视频 | 亚洲精品美女久久久 | 久久久久久久久艹 | 美女视频国产 | 99亚洲精品视频 | 亚洲影视九九影院在线观看 | 日韩精品一区二区三区丰满 | 日本中文字幕视频 | 在线免费亚洲 | 国产一区在线视频 | 又粗又长又大又爽又黄少妇毛片 | 欧美日韩后| 国产成人资源 | 欧美日韩视频观看 | 中文字幕在线观 | 久久艹艹 | 久久久不卡影院 | 欧美在线视频精品 | 亚洲国产97在线精品一区 | 中文字幕在线视频第一页 | 国产精品毛片久久蜜 | 国产经典 欧美精品 | 97香蕉超级碰碰久久免费软件 | 在线观看国产中文字幕 | 中文字幕一区二区三区四区 | 最新极品jizzhd欧美 | 国产综合91 | 久久免费影院 | 亚洲一级国产 | 7777xxxx| 免费视频a | 精品在线小视频 | 久久国产系列 | 中文字幕123区 | 成人毛片100免费观看 | 亚洲成人黄色av | 欧美激情va永久在线播放 | 丁香婷婷社区 | 成年人电影免费在线观看 | 免费国产黄线在线观看视频 | 91人人视频在线观看 | 欧美日韩视频一区二区三区 | 久久久精品一区二区三区 | 日日夜夜免费精品视频 | 日本资源中文字幕在线 | 国产 日韩 在线 亚洲 字幕 中文 | 性日韩欧美在线视频 | 国产精品免费在线播放 | 久久久久久久久久久久亚洲 | 天天射网站 | 一区二区三区在线免费播放 | 亚洲精品视频久久 | 亚洲精品在线观看视频 | 免费观看成人网 | 成人在线播放网站 | 国产精品国产三级在线专区 | 韩国精品一区二区三区六区色诱 | 97超碰人人爱 | 天天操夜夜操 | 最近中文字幕第一页 | 日韩欧美国产成人 | 亚洲 欧美 日韩 综合 | 在线观看一级视频 | 福利久久 | 激情亚洲综合在线 | 国产电影一区二区三区四区 | 免费在线观看av电影 | 国产精品久免费的黄网站 | 亚洲天天摸日日摸天天欢 | 久久91久久久久麻豆精品 | 91欧美在线 | 国产不卡在线视频 | 99精品一级欧美片免费播放 | 久久系列 | 国产精品久久久久久久电影 | 色婷婷综合视频在线观看 | 五月激情视频 | 日韩av看片| 97精品视频在线播放 | 日韩精品一区二区免费 | 中文字幕电影高清在线观看 | 亚洲综合视频在线播放 | 天天撸夜夜操 | 亚洲精品欧洲精品 | 亚洲资源一区 | www九九热 | 天干啦夜天干天干在线线 | 免费看一级特黄a大片 | 免费久久精品视频 | 亚洲精品久久久久中文字幕二区 | 日本精品午夜 | 国产一区二区久久 | 日韩av在线一区二区 | 日韩在线观看一区 | 福利一区二区 | 成人午夜电影久久影院 | 国产97碰免费视频 | 99综合视频 | 蜜臀一区二区三区精品免费视频 | 99久久久成人国产精品 | 精品一区在线 | 精品视频免费在线 | 天天插天天干天天操 | 成人免费视频在线观看 | www.午夜 | 精品久久免费看 | 在线播放一区二区三区 | 国产精品一区久久久久 | 亚洲一级电影在线观看 | 黄色毛片大全 | 久久久久久久99 | 国产亚洲激情视频在线 | 欧美精品免费一区二区 | 免费手机黄色网址 | 日韩在线观看视频中文字幕 | av在线免费播放网站 | 国产五码一区 | 日韩a级黄色 | 日韩欧美国产成人 | 成年人免费av | 国产美女网站视频 | 色综合色综合久久综合频道88 | 日韩在线高清免费视频 | 正在播放国产91 | 探花视频在线观看+在线播放 | 久久精品国产亚洲 | 中文视频一区二区 | 久久久久久国产一区二区三区 | 欧美伊人网 | 综合亚洲视频 | 欧美日韩精品在线视频 | 婷婷视频 | 精品夜夜嗨av一区二区三区 | 一区国产精品 | av免费在线观看网站 | 国产99久久99热这里精品5 | 人人插人人 | 99精品视频精品精品视频 | 美女久久久久久久久久 | 国产精品原创av片国产免费 | 99久久爱| 久久成熟 | 欧美日韩中文另类 | 四虎影视久久久 | 国产一级特黄毛片在线毛片 | 久久久久免费精品视频 | 国产亚洲欧美日韩高清 | 91视频麻豆 | 日韩中文在线播放 | av动态图片 | www.com操| 91人人射 | 久久草草热国产精品直播 | 国产免费黄视频在线观看 | 久草在线资源观看 | av电影免费在线播放 | 久久久久99精品国产片 | 成年人免费看片 | 久草亚洲视频 | 亚洲影视九九影院在线观看 | 91精品久久久久久久99蜜桃 | 久久天天躁夜夜躁狠狠躁2022 | 国产视频一区在线免费观看 | 黄网站色视频 | 91精品国自产拍天天拍 | 97精品国产97久久久久久免费 | 欧洲精品久久久久毛片完整版 | 精品国产伦一区二区三区观看说明 | 午夜少妇一区二区三区 | 久久久2o19精品 | 在线观看中文字幕一区 | 免费黄色小网站 | 91理论片午午伦夜理片久久 | 欧美韩国日本在线 | 日韩资源在线 | 一区二区三区免费在线播放 | 91av视频导航| 久久久久久中文字幕 | 麻豆激情电影 | www欧美日韩 | 天天天天色射综合 | 免费看片日韩 | 天堂av影院| 美女视频网站久久 | 日韩丝袜视频 | 国产黄大片 | 久草精品网 | 97**国产露脸精品国产 | 欧洲精品码一区二区三区免费看 | 久久久久成人精品 | 成人性生交大片免费看中文网站 | 人人搞人人爽 | 一级性生活片 | 国产精品欧美久久久久无广告 | 日韩性xxxx | 99久久一区 | 亚洲专区视频在线观看 | 99草在线视频 | 日本激情视频中文字幕 | 国产一级做a爱片久久毛片a | 欧美午夜精品久久久久久浪潮 | 人人操日日干 | 国产福利在线免费观看 | 麻豆久久精品 | 国产码电影 | 久草在线高清视频 | 欧美性精品 | 国产一区二区三区视频在线 | 美女视频黄是免费的 | 久久免费视频4 | 最近中文国产在线视频 | 精品久久1 | 欧美另类高清 videos | 五月婷婷六月丁香在线观看 | 日韩在线电影一区 | 开心激情久久 | 中文字幕高清视频 | 中文字幕精品视频 | 在线视频成人 | 国产精品女| 欧美日韩国产一区二区三区 | 黄色亚洲免费 | 国产婷婷在线观看 | 日韩精品免费一区二区三区 | 久久精品美女视频网站 | av免费线看| av色网站 | 欧美日韩三级在线观看 | 亚洲一一在线 | 亚洲日本欧美 | 成人精品视频 | 欧美一区日韩一区 | 在线观看视频一区二区三区 | 天天操天天操天天操天天操天天操 | 日韩高清不卡一区二区三区 | 免费看片在线观看 | 亚洲aⅴ一区二区三区 | 91精品老司机久久一区啪 | 国产精品国产三级国产专区53 | 天天草天天干天天 | 成人教育av| 日韩午夜视频在线观看 | 亚洲欧洲国产日韩精品 | 色资源二区在线视频 | 91亚洲成人 | 不卡的av电影在线观看 | 日产中文字幕 | 91传媒免费观看 | 中文字幕区 | 国产精品va最新国产精品视频 | 天堂网一区二区 | 草久久久| 在线免费观看羞羞视频 | 国产精品免费一区二区 | 黄色av一区二区三区 | 综合黄色网 | 91麻豆文化传媒在线观看 | 免费观看日韩av | 国产精品一区二区免费在线观看 | 久久一区二 | 日韩在线观看不卡 | 日韩网站在线看片你懂的 | 久久久久久片 | 黄在线免费看 | 久久精品在线免费观看 | 在线成人观看 | 一区 二区 精品 | 天天操天天干天天爱 | 国产高清绿奴videos | 亚洲精品视频久久 | 亚洲精品久久久久中文字幕二区 | 日韩亚洲欧美中文字幕 | 久久久 精品| 一区二区三区在线免费 | 国产综合香蕉五月婷在线 | 日韩三级视频在线看 | 亚洲午夜精品久久久 | 日本午夜在线亚洲.国产 | 久久久久久久久久久久久久电影 | 蜜臀av夜夜澡人人爽人人 | 欧美日韩国产一区二 | 日本久久久久久科技有限公司 | 成人午夜电影网站 | 中文字幕在线观看网站 | 超碰九九 | 欧美精品亚洲精品 | 中文字幕一区二区三区乱码在线 | 丁香久久五月 | 欧美日韩伦理在线 | 国产糖心vlog在线观看 | 国产精品女同一区二区三区久久夜 | a天堂最新版中文在线地址 久久99久久精品国产 | 午夜av一区 | 中文字幕888 | 国产群p | 九色视频网站 | 亚洲视频播放 | 久久婷婷精品视频 | 色av男人的天堂免费在线 | 欧美黑人性猛交 | 久草在线这里只有精品 | 国产 欧美 在线 | 久久精精品视频 | 天海冀一区二区三区 | 992tv又爽又黄的免费视频 | 97视频在线免费播放 | 97国产视频| 欧美激情视频三区 | 六月色丁香 | 天天插天天 | 2024国产精品视频 | 免费大片av| 国产精品综合在线观看 | 天天草av | 超级碰碰碰视频 | 欧美国产日韩在线视频 | 精品中文字幕视频 | 亚洲无吗av | 国产免费观看久久黄 | 精品国产乱码一区二区三区在线 | 成人免费观看视频大全 | 色偷偷人人澡久久超碰69 | 永久免费的啪啪网站免费观看浪潮 | 日韩有码在线观看视频 | 中文字幕视频播放 | 日韩一级理论片 | 日韩高清免费在线观看 | 91免费观看 | 人人插人人搞 | www.黄色网.com | 国产一级视屏 | 国产成人三级一区二区在线观看一 | 最近最新mv字幕免费观看 | 久久久国产精品人人片99精片欧美一 | 一区二区三区动漫 | 久久久久亚洲精品中文字幕 | 亚洲精品www久久久久久 | 婷婷五月色综合 | 免费一级片在线观看 | 国产伦精品一区二区三区在线 | 视频在线一区 | 国产亚洲永久域名 | 色婷婷啪啪免费在线电影观看 | 啪啪免费观看网站 | 国产3p视频 | 麻豆一级视频 | 午夜视频在线观看一区二区三区 | 久草影视在线 | 国产高清视频免费在线观看 | 中文字幕在线视频网站 | av日韩av| 1000部18岁以下禁看视频 | 探花视频在线版播放免费观看 | 国产精品久久久久久999 | 亚洲无吗天堂 | 国产精品破处视频 | 在线观看中文字幕2021 | 久久国精品 | 绯色av一区| 成人在线黄色 | 久久久精品网 | 免费一区在线 | 91大神电影 | avwww在线| 久久九九影院 | 国内精品久久久久久久影视麻豆 | 激情婷婷综合网 | 亚洲高清资源 | 日韩亚洲在线视频 | 一二三区在线 | 中文字幕a∨在线乱码免费看 | 一二区电影 | 激情五月六月婷婷 | 亚洲精品久久久久久久蜜桃 | 曰韩精品 | 国产视频在线观看免费 | 欧美日韩视频在线观看一区二区 | 久久综合色播五月 | 久免费视频 | 久久神马影院 | 国产电影一区二区三区四区 | 天天干天天操人体 | 久久久99精品免费观看 | 日韩av一区二区在线播放 | 日本三级全黄少妇三2023 | 深爱开心激情网 | 国产精品6999成人免费视频 | 午夜视频黄 | 美女激情影院 | 国产视频精品免费 | 国产一级视屏 | 日韩成人精品一区二区三区 | 精品久久久精品 | 9在线观看免费高清完整版 玖玖爱免费视频 | 狠狠色狠狠色合久久伊人 | 国产小视频在线 | 国产黄色精品在线观看 | 欧美夫妻性生活电影 | 久久精品99北条麻妃 | 91丨九色丨蝌蚪丨对白 | 亚洲精品视频在线观看免费视频 | 天天躁日日躁狠狠躁 | 久久天堂影院 | 免费a级毛片在线看 | 国产中文字幕三区 | 日本91在线 | 天天综合网久久 | 黄色小说免费观看 | 国产精品一区二区三区在线免费观看 | 欧美精品午夜 | 国产自在线 | 久久久鲁| 国内精自线一二区永久 | 6080yy午夜一二三区久久 | 日韩色视频在线观看 | 国产精品女主播一区二区三区 | 欧美日韩视频网站 | 黄色影院在线免费观看 | 成人羞羞视频在线观看免费 | 午夜国产在线观看 | 久久精品国产精品亚洲 | 激情五月在线视频 | 亚洲狠狠丁香婷婷综合久久久 | 99久久久| 国产欧美最新羞羞视频在线观看 | 91精品国产三级a在线观看 | av免费电影在线 | 天天操天天射天天爱 | 日韩高清在线不卡 | 超碰人人在线 | 亚洲视频在线免费看 | 91亚洲国产 | 午夜色大片在线观看 | 激情欧美在线观看 | 91人人爽人人爽人人精88v | 国产专区精品视频 | 欧美福利视频一区 | 国产精彩在线视频 | 精品国产123 | 国产亚洲精品久久久久久大师 | 午夜久久电影网 | 日韩乱码中文字幕 | 国产成人在线一区 | 久久久久久久久网站 | 久久99久久精品国产 | 久久久69 | 久久久久久久久综合 | 日韩av线观看 | 日本一区二区不卡高清 | 69人人| 久久国产精品一区二区三区四区 | 国产精品高清在线观看 | 久草国产精品 | 色久天 | 中文字幕婷婷 | 特级毛片aaa| 最新国产在线 | 97国产情侣爱久久免费观看 | 黄色国产精品 | 婷婷色在线资源 | 99热国产在线中文 | 国产亚洲一级高清 | 超碰成人网 | 天操夜夜操 | 日本h在线播放 | 国产中的精品av小宝探花 | 亚洲资源在线观看 | 免费大片av| 国产成人久久精品 | 99国产在线 | www.伊人色.com | 亚洲黄色大片 | 欧美日韩在线观看不卡 | 婷婷久久国产 | 91香蕉视频720p | 国产精品麻豆三级一区视频 | 六月婷婷久香在线视频 | 国产高h视频 | 亚洲狠狠操 | 中国一级片在线播放 | 成年人在线视频观看 | 国产清纯在线 | 97福利在线| 免费观看一区 | 日日夜夜添 | 日韩成人黄色av | 91九色最新地址 | 国产精品成人一区二区三区吃奶 | 最新午夜 | 久久久2o19精品 | 日韩中文字幕网站 | 久久免费观看视频 | 亚洲涩涩涩涩涩涩 | 国产 精品 资源 | 国产婷婷在线观看 | 亚洲精品天天 | zzijzzij日本成熟少妇 | 91精品导航 | 久久免费激情视频 | 精品国内自产拍在线观看视频 | 色资源网免费观看视频 | av色一区 | 深夜免费福利网站 |