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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

一篇文章彻底搞懂snowflake算法及百度美团的最佳实践

發布時間:2023/12/19 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 一篇文章彻底搞懂snowflake算法及百度美团的最佳实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面的話

一提到分布式ID自動生成方案,大家肯定都非常熟悉,并且立即能說出自家拿手的幾種方案,確實,ID作為系統數據的重要標識,重要性不言而喻,而各種方案也是歷經多代優化,請允許我用這個視角對分布式ID自動生成方案進行分類:

實現方式

完全依賴數據源方式

ID的生成規則,讀取控制完全由數據源控制,常見的如數據庫的自增長ID,序列號等,或Redis的INCR/INCRBY原子操作產生順序號等。

半依賴數據源方式

ID的生成規則,有部分生成因子需要由數據源(或配置信息)控制,如snowflake算法。

不依賴數據源方式

ID的生成規則完全由機器信息獨立計算,不依賴任何配置信息和數據記錄,如常見的UUID,GUID等

實踐方案

實踐方案適用于以上提及的三種實現方式,可作為這三種實現方式的一種補充,旨在提升系統吞吐量,但原有實現方式的局限性依然存在。

實時獲取方案

顧名思義,每次要獲取ID時,實時生成。
簡單快捷,ID都是連續不間斷的,但吞吐量可能不是最高。

預生成方案

預先生成一批ID放在數據池里,可簡單自增長生成,也可以設置步長,分批生成,需要將這些預先生成的數據,放在存儲容器里(JVM內存,Redis,數據庫表均可)。
可以較大幅度地提升吞吐量,但需要開辟臨時存儲空間,斷電宕機后可能會丟失已有ID,ID可能有間斷。

方案簡介

以下對目前流行的分布式ID方案做簡單介紹

數據庫自增長ID

屬于完全依賴數據源的方式,所有的ID存儲在數據庫里,是最常用的ID生成辦法,在單體應用時期得到了最廣泛的使用,建立數據表時利用數據庫自帶的auto_increment作主鍵,或是使用序列完成其他場景的一些自增長ID的需求。

優點:非常簡單,有序遞增,方便分頁和排序。
缺點:分庫分表后,同一數據表的自增ID容易重復,無法直接使用(可以設置步長,但局限性很明顯);性能吞吐量整個較低,如果設計一個單獨的數據庫來實現 分布式應用的數據唯一性,即使使用預生成方案,也會因為事務鎖的問題,高并發場景容易出現單點瓶頸。
適用場景:單數據庫實例的表ID(包含主從同步場景),部分按天計數的流水號等;分庫分表場景、全系統唯一性ID場景不適用。

Redis生成ID

也屬于完全依賴數據源的方式,通過Redis的INCR/INCRBY自增原子操作命令,能保證生成的ID肯定是唯一有序的,本質上實現方式與數據庫一致。

優點:整體吞吐量比數據庫要高。
缺點:Redis實例或集群宕機后,找回最新的ID值有點困難。
適用場景:比較適合計數場景,如用戶訪問量,訂單流水號(日期+流水號)等。

UUID、GUID生成ID

UUID:按照OSF制定的標準計算,用到了以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字。由以下幾部分的組合:當前日期和時間(UUID的第一個部分與時間有關,如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同),時鐘序列,全局唯一的IEEE機器識別號(如果有網卡,從網卡獲得,沒有網卡以其他方式獲得)

GUID:微軟對UUID這個標準的實現。UUID還有其它各種實現,不止GUID一種,不一一列舉了。

這兩種屬于不依賴數據源方式,真正的全球唯一性ID

優點:不依賴任何數據源,自行計算,沒有網絡ID,速度超快,并且全球唯一。
缺點:沒有順序性,并且比較長(128bit),作為數據庫主鍵、索引會導致索引效率下降,空間占用較多。
適用場景:只要對存儲空間沒有苛刻要求的都能夠適用,比如各種鏈路追蹤、日志存儲等。

4、snowflake算法(雪花算法)生成ID

屬于半依賴數據源方式,原理是使用Long類型(64位),按照一定的規則進行填充:時間(毫秒級)+集群ID+機器ID+序列號,每部分占用的位數可以根據實際需要分配,其中集群ID和機器ID這兩部分,在實際應用場景中要依賴外部參數配置或數據庫記錄。

優點:高性能、低延遲、去中心化、按時間有序
缺點:要求機器時鐘同步(到秒級即可)
適用場景:分布式應用環境的數據主鍵

雪花ID算法聽起來是不是特別適用分布式架構場景?照目前來看是的,接下來我們重點講解它的原理和最佳實踐。

snowflake算法實現原理

snowflake算法來源于Twitter,使用scala語言實現,利用Thrift框架實現RPC接口調用,最初的項目起因是數據庫從mysql遷移到Cassandra,Cassandra沒有現成可用 的ID生成機制,就催生了這個項目,現有的github源碼有興趣可以去看看。

snowflake算法的特性是有序、唯一,并且要求高性能,低延遲(每臺機器每秒至少生成10k條數據,并且響應時間在2ms以內),要在分布式環境(多集群,跨機房)下使用,因此snowflake算法得到的ID是分段組成的:

與指定日期的時間差(毫秒級),41位,夠用69年
集群ID + 機器ID, 10位,最多支持1024臺機器
序列,12位,每臺機器每毫秒內最多產生4096個序列號

如圖所示:

1bit:符號位,固定是0,表示全部ID都是正整數
41bit:毫秒數時間差,從指定的日期算起,夠用69年,我們知道用Long類型表示的時間戳是從1970-01-01 00:00:00開始算起的,咱們這里的時間戳可以指定日期,如2019-10-23 00:00:00
10bit:機器ID,有異地部署,多集群的也可以配置,需要線下規劃好各地機房,各集群,各實例ID的編號
12bit:序列ID,前面都相同的話,最多可以支持到4096個

以上的位數分配只是官方建議的,我們可以根據實際需要自行分配,比如說我們的應用機器數量最多也就幾十臺,但并發數很大,我們就可以將10bit減少到8bit,序列部分從12bit增加到14bit等等

當然每部分的含義也可以自由替換,如中間部分的機器ID,如果是云計算、容器化的部署環境,隨時有擴容,縮減機器的操作,通過線下規劃去配置實例的ID不太現實,就可以替換為實例每重啟一次,拿一次自增長的ID作為該部分的內容,下文會講解。

github上也有大神用Java做了snowflake最基本的實現,這里直接查看源碼:
snowflake java版源碼

/**
 * twitter的snowflake算法 -- java實現
 * 
 * @author beyond
 * @date 2016/11/26
 */
public class SnowFlake {

    /**
     * 起始的時間戳
     */
    private final static long START_STMP = 1480166465631L;

    /**
     * 每一部分占用的位數
     */
    private final static long SEQUENCE_BIT = 12; //序列號占用的位數
    private final static long MACHINE_BIT = 5;   //機器標識占用的位數
    private final static long DATACENTER_BIT = 5;//數據中心占用的位數

    /**
     * 每一部分的最大值
     */
    private final static long MAX_DATACENTER_NUM = -1L ^ (-1L << DATACENTER_BIT);
    private final static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT);
    private final static long MAX_SEQUENCE = -1L ^ (-1L << SEQUENCE_BIT);

    /**
     * 每一部分向左的位移
     */
    private final static long MACHINE_LEFT = SEQUENCE_BIT;
    private final static long DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT;
    private final static long TIMESTMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT;

    private long datacenterId;  //數據中心
    private long machineId;     //機器標識
    private long sequence = 0L; //序列號
    private long lastStmp = -1L;//上一次時間戳

    public SnowFlake(long datacenterId, long machineId) {
        if (datacenterId > MAX_DATACENTER_NUM || datacenterId < 0) {
            throw new IllegalArgumentException("datacenterId can't be greater than MAX_DATACENTER_NUM or less than 0");
        }
        if (machineId > MAX_MACHINE_NUM || machineId < 0) {
            throw new IllegalArgumentException("machineId can't be greater than MAX_MACHINE_NUM or less than 0");
        }
        this.datacenterId = datacenterId;
        this.machineId = machineId;
    }

    /**
     * 產生下一個ID
     *
     * @return
     */
    public synchronized long nextId() {
        long currStmp = getNewstmp();
        if (currStmp < lastStmp) {
            throw new RuntimeException("Clock moved backwards.  Refusing to generate id");
        }

        if (currStmp == lastStmp) {
            //相同毫秒內,序列號自增
            sequence = (sequence + 1) & MAX_SEQUENCE;
            //同一毫秒的序列數已經達到最大
            if (sequence == 0L) {
                currStmp = getNextMill();
            }
        } else {
            //不同毫秒內,序列號置為0
            sequence = 0L;
        }

        lastStmp = currStmp;

        return (currStmp - START_STMP) << TIMESTMP_LEFT //時間戳部分
                | datacenterId << DATACENTER_LEFT       //數據中心部分
                | machineId << MACHINE_LEFT             //機器標識部分
                | sequence;                             //序列號部分
    }

    private long getNextMill() {
        long mill = getNewstmp();
        while (mill <= lastStmp) {
            mill = getNewstmp();
        }
        return mill;
    }

    private long getNewstmp() {
        return System.currentTimeMillis();
    }

    public static void main(String[] args) {
        SnowFlake snowFlake = new SnowFlake(2, 3);

        for (int i = 0; i < (1 << 12); i++) {
            System.out.println(snowFlake.nextId());
        }

    }
}

基本上通過位移操作,將每段含義的數值,移到相應的位置上,如機器ID這里由數據中心+機器標識組成,所以,機器標識向左移12位,就是它的位置,數據中心的編號向左移17位,時間戳的值向左移22位,每部分占據自己的位置,各不干涉,由此組成一個完整的ID值。

這里就是snowflake最基礎的實現原理,如果有些java基礎知識不記得了建議查一下資料,如二進制-1的表示是0xffff(里面全是1),<<表示左移操作,-1<<5等于-32,異或操作-1 ^ (-1 << 5)為31等等。

了解snowflake的基本實現原理,可以通過提前規劃好機器標識來實現,但目前的分布式生產環境,借用了多種云計算、容器化技術,實例的個數隨時有變化,還需要處理服務器實例時鐘回撥的問題,固定規劃ID然后通過配置來使用snowflake的場景可行性不高,一般是自動啟停,增減機器,這樣就需要對snowflake進行一些改造才能更好地應用到生產環境中。

百度uid-generator項目

UidGenerator項目基于snowflake原理實現,只是修改了機器ID部分的定義(實例重啟的次數),并且64位bit的分配支持配置,官方提供的默認分配方式如下圖:

Snowflake算法描述:指定機器 & 同一時刻 & 某一并發序列,是唯一的。據此可生成一個64 bits的唯一ID(long)。

sign(1bit) 固定1bit符號標識,即生成的UID為正數。
delta seconds (28 bits)
當前時間,相對于時間基點"2016-05-20"的增量值,單位:秒,最多可支持約8.7年
worker id (22 bits) 機器id,最多可支持約420w次機器啟動。內置實現為在啟動時由數據庫分配,默認分配策略為用后即棄,后續可提供復用策略。
sequence (13 bits) 每秒下的并發序列,13 bits可支持每秒8192個并發。

具體的實現有兩種,一種是實時生成ID,另一種是預先生成ID方式

DefaultUidGenerator

啟動時向數據庫WORKER_NODE表插入當前實例的IP,Port等信息,再獲取該數據的自增長ID作為機器ID部分。
簡易流程圖如下:

提供獲取ID的方法,并且檢測是否有時鐘回撥,有回撥現象直接拋出異常,當前版本不支持時鐘順撥后漂移操作。簡易流程圖如下:

核心代碼如下:

    /**
     * Get UID
     *
     * @return UID
     * @throws UidGenerateException in the case: Clock moved backwards; Exceeds the max timestamp
     */
    protected synchronized long nextId() {
        long currentSecond = getCurrentSecond();

        // Clock moved backwards, refuse to generate uid
        if (currentSecond < lastSecond) {
            long refusedSeconds = lastSecond - currentSecond;
            throw new UidGenerateException("Clock moved backwards. Refusing for %d seconds", refusedSeconds);
        }

        // At the same second, increase sequence
        if (currentSecond == lastSecond) {
            sequence = (sequence + 1) & bitsAllocator.getMaxSequence();
            // Exceed the max sequence, we wait the next second to generate uid
            if (sequence == 0) {
                currentSecond = getNextSecond(lastSecond);
            }

        // At the different second, sequence restart from zero
        } else {
            sequence = 0L;
        }

        lastSecond = currentSecond;

        // Allocate bits for UID
        return bitsAllocator.allocate(currentSecond - epochSeconds, workerId, sequence);
    }

CachedUidGenerator

機器ID的獲取方法與上一種相同,這種是預先生成一批ID,放在一個RingBuffer環形數組里,供客戶端使用,當可用數據低于閥值時,再次調用批量生成方法,屬于用空間換時間的做法,可以提高整個ID的吞吐量。

與DefaultUidGenerator相比較,初始化時多了填充RingBuffer環形數組的邏輯,簡單流程圖如下:

核心代碼:

/**
     * Initialize RingBuffer & RingBufferPaddingExecutor
     */
    private void initRingBuffer() {
        // initialize RingBuffer
        int bufferSize = ((int) bitsAllocator.getMaxSequence() + 1) << boostPower;
        this.ringBuffer = new RingBuffer(bufferSize, paddingFactor);
        LOGGER.info("Initialized ring buffer size:{}, paddingFactor:{}", bufferSize, paddingFactor);

        // initialize RingBufferPaddingExecutor
        boolean usingSchedule = (scheduleInterval != null);
        this.bufferPaddingExecutor = new BufferPaddingExecutor(ringBuffer, this::nextIdsForOneSecond, usingSchedule);
        if (usingSchedule) {
            bufferPaddingExecutor.setScheduleInterval(scheduleInterval);
        }
        
        LOGGER.info("Initialized BufferPaddingExecutor. Using schdule:{}, interval:{}", usingSchedule, scheduleInterval);
        
        // set rejected put/take handle policy
        this.ringBuffer.setBufferPaddingExecutor(bufferPaddingExecutor);
        if (rejectedPutBufferHandler != null) {
            this.ringBuffer.setRejectedPutHandler(rejectedPutBufferHandler);
        }
        if (rejectedTakeBufferHandler != null) {
            this.ringBuffer.setRejectedTakeHandler(rejectedTakeBufferHandler);
        }
        
        // fill in all slots of the RingBuffer
        bufferPaddingExecutor.paddingBuffer();
        
        // start buffer padding threads
        bufferPaddingExecutor.start();
    }
public synchronized boolean put(long uid) {
        long currentTail = tail.get();
        long currentCursor = cursor.get();

        // tail catches the cursor, means that you can't put any cause of RingBuffer is full
        long distance = currentTail - (currentCursor == START_POINT ? 0 : currentCursor);
        if (distance == bufferSize - 1) {
            rejectedPutHandler.rejectPutBuffer(this, uid);
            return false;
        }

        // 1. pre-check whether the flag is CAN_PUT_FLAG
        int nextTailIndex = calSlotIndex(currentTail + 1);
        if (flags[nextTailIndex].get() != CAN_PUT_FLAG) {
            rejectedPutHandler.rejectPutBuffer(this, uid);
            return false;
        }

        // 2. put UID in the next slot
        // 3. update next slot' flag to CAN_TAKE_FLAG
        // 4. publish tail with sequence increase by one
        slots[nextTailIndex] = uid;
        flags[nextTailIndex].set(CAN_TAKE_FLAG);
        tail.incrementAndGet();

        // The atomicity of operations above, guarantees by 'synchronized'. In another word,
        // the take operation can't consume the UID we just put, until the tail is published(tail.incrementAndGet())
        return true;
    }

ID獲取邏輯,由于有RingBuffer這個緩沖數組存在,獲取ID直接從RingBuffer取出即可,同時RingBuffer自身校驗何時再觸發重新批量生成即可,這里獲取的ID值與DefaultUidGenerator的明顯區別是,DefaultUidGenerator獲取的ID,時間戳部分就是當前時間的,CachedUidGenerator里獲取的是填充時的時間戳,并不是獲取時的時間,不過關系不大,都是不重復的,一樣用。簡易流程圖如下:

核心代碼:

public long take() {
        // spin get next available cursor
        long currentCursor = cursor.get();
        long nextCursor = cursor.updateAndGet(old -> old == tail.get() ? old : old + 1);

        // check for safety consideration, it never occurs
        Assert.isTrue(nextCursor >= currentCursor, "Curosr can't move back");

        // trigger padding in an async-mode if reach the threshold
        long currentTail = tail.get();
        if (currentTail - nextCursor < paddingThreshold) {
            LOGGER.info("Reach the padding threshold:{}. tail:{}, cursor:{}, rest:{}", paddingThreshold, currentTail,
                    nextCursor, currentTail - nextCursor);
            bufferPaddingExecutor.asyncPadding();
        }

        // cursor catch the tail, means that there is no more available UID to take
        if (nextCursor == currentCursor) {
            rejectedTakeHandler.rejectTakeBuffer(this);
        }

        // 1. check next slot flag is CAN_TAKE_FLAG
        int nextCursorIndex = calSlotIndex(nextCursor);
        Assert.isTrue(flags[nextCursorIndex].get() == CAN_TAKE_FLAG, "Curosr not in can take status");

        // 2. get UID from next slot
        // 3. set next slot flag as CAN_PUT_FLAG.
        long uid = slots[nextCursorIndex];
        flags[nextCursorIndex].set(CAN_PUT_FLAG);

        // Note that: Step 2,3 can not swap. If we set flag before get value of slot, the producer may overwrite the
        // slot with a new UID, and this may cause the consumer take the UID twice after walk a round the ring
        return uid;
    }

另外有個細節可以了解一下,RingBuffer的數據都是使用數組來存儲的,考慮CPU Cache的結構,tail和cursor變量如果直接用原生的AtomicLong類型,tail和cursor可能會緩存在同一個cacheLine中,多個線程讀取該變量可能會引發CacheLine的RFO請求,反而影響性能,為了防止偽共享問題,特意填充了6個long類型的成員變量,加上long類型的value成員變量,剛好占滿一個Cache Line(Java對象還有8byte的對象頭),這個叫CacheLine補齊,有興趣可以了解一下,源碼如下:

public class PaddedAtomicLong extends AtomicLong {
    private static final long serialVersionUID = -3415778863941386253L;

    /** Padded 6 long (48 bytes) */
    public volatile long p1, p2, p3, p4, p5, p6 = 7L;

    /**
     * Constructors from {@link AtomicLong}
     */
    public PaddedAtomicLong() {
        super();
    }

    public PaddedAtomicLong(long initialValue) {
        super(initialValue);
    }

    /**
     * To prevent GC optimizations for cleaning unused padded references
     */
    public long sumPaddingToPreventOptimization() {
        return p1 + p2 + p3 + p4 + p5 + p6;
    }

}

以上是百度uid-generator項目的主要描述,我們可以發現,snowflake算法在落地時有一些變化,主要體現在機器ID的獲取上,尤其是分布式集群環境下面,實例自動伸縮,docker容器化的一些技術,使得靜態配置項目ID,實例ID可行性不高,所以這些轉換為按啟動次數來標識。

美團ecp-uid項目

在uidGenerator方面,美團的項目源碼直接集成百度的源碼,略微將一些Lambda表達式換成原生的java語法,例如:

// com.myzmds.ecp.core.uid.baidu.impl.CachedUidGenerator類的initRingBuffer()方法
// 百度源碼
this.bufferPaddingExecutor = new BufferPaddingExecutor(ringBuffer, this::nextIdsForOneSecond, usingSchedule);

// 美團源碼
this.bufferPaddingExecutor = new BufferPaddingExecutor(ringBuffer, new BufferedUidProvider() {
    @Override
    public List<Long> provide(long momentInSecond) {
        return nextIdsForOneSecond(momentInSecond);
    }
}, usingSchedule);

并且在機器ID生成方面,引入了Zookeeper,Redis這些組件,豐富了機器ID的生成和獲取方式,實例編號可以存儲起來反復使用,不再是數據庫單調增長這一種了。

結束語

本篇簡單介紹了snowflake算法的原理及落地過程中的改造,在此學習了優秀的開源代碼,并挑出部分進行了簡單的示例,美團的ecp-uid項目不但集成了百度現有的UidGenerator算法,原生的snowflake算法,還包含優秀的leaf segment算法,鑒于篇幅沒有詳盡描述。文章內有任何不正確或不詳盡之處請留言指出,謝謝。

專注Java高并發、分布式架構,更多技術干貨分享與心得,請關注公眾號:Java架構社區

總結

以上是生活随笔為你收集整理的一篇文章彻底搞懂snowflake算法及百度美团的最佳实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲天堂激情 | 日韩videos| 国产在线精品国自产拍影院 | 337p日本大胆噜噜噜噜 | 一区二区精品国产 | 天天艹天天爽 | 国产午夜在线 | 国产麻豆剧果冻传媒视频播放量 | 五月天国产精品 | 超碰人人超碰 | 久av在线 | 亚洲情影院 | 国产又粗又猛又黄 | 一区二区毛片 | 91精品一 | 免费视频黄 | 丰满少妇高潮在线观看 | 欧美精品一区二区三区一线天视频 | 91视频免费看 | 激情视频二区 | 久久综合网色—综合色88 | 日日夜夜综合 | 欧美一级久久久久 | 日韩黄在线观看 | 日韩欧美在线一区 | 色激情五月 | 超黄视频网站 | 波多野结衣精品视频 | 手机成人在线 | 狠狠色丁香婷婷综合久久片 | 成人毛片在线视频 | 三级黄在线 | 中文国产字幕在线观看 | 三级黄色欧美 | 亚洲另类在线视频 | 99久久9| 狠狠躁夜夜躁人人爽超碰91 | 五月天激情综合 | 人人爽人人射 | 国产精品对白一区二区三区 | 日韩av在线资源 | 久久一久久 | 亚洲情婷婷 | 99爱在线| 九九在线高清精品视频 | 成人91av | 天天鲁天天干天天射 | 日本激情视频中文字幕 | 亚洲精品在 | 97香蕉超级碰碰久久免费软件 | 久久精品一区二区三区国产主播 | 日日弄天天弄美女bbbb | 国产私拍在线 | 国产一级免费视频 | 黄色a大片 | 97在线视| 国模精品一区二区三区 | 999久久久免费精品国产 | 国产精品毛片一区视频播 | 中日韩在线视频 | 韩日精品在线 | 日韩免费看片 | 日韩高清成人 | 国产高清精品在线观看 | 亚洲无线视频 | 天天操天天摸天天爽 | 国产精品毛片久久久久久久 | 九九精品视频在线看 | 亚洲电影图片小说 | 91成人在线视频观看 | 日韩欧美一区二区在线观看 | 99精品在线播放 | 激情亚洲综合在线 | 久久九精品 | 91在线视频观看免费 | 久久av免费 | 在线国产黄色 | 韩国精品一区二区三区六区色诱 | 久久精品一区二区国产 | 亚洲情影院| 片黄色毛片黄色毛片 | 成人性生交大片免费看中文网站 | 婷婷伊人五月天 | 亚洲国产精彩中文乱码av | 成人av影视在线 | 91电影福利| 国产高清视频免费最新在线 | 一 级 黄 色 片免费看的 | 欧美精品久久久久久久免费 | 中文字幕在线播放日韩 | 91视频免费网站 | 日韩视频精品在线 | 日韩网站视频 | 在线免费视频 你懂得 | 国产一区二区三区高清播放 | 超碰免费97| 国产精品s色 | 欧美另类人妖 | 日韩在线视频播放 | 综合激情伊人 | 精品一区 在线 | 日本少妇久久久 | 亚洲伊人成综合网 | 福利二区视频 | 99国产在线视频 | 网站免费黄色 | 国产综合精品久久 | 少妇性色午夜淫片aaaze | 久久九九久久精品 | 欧美a在线看| 久草视频在线看 | 国产中文欧美日韩在线 | 三级av小说 | 99热日本| 97人人网| 免费观看全黄做爰大片国产 | 久久久久久久久久久影院 | 国产美女精品人人做人人爽 | 夜夜爽夜夜操 | 精品国产久 | 国产精品一区免费在线观看 | 国产一区欧美在线 | 国产一区二区三区午夜 | 91在线看视频免费 | 99re6热在线精品视频 | 国产精品亚洲视频 | 99热这里只有精品1 av中文字幕日韩 | 亚洲精品视频网址 | 日韩久久激情 | 中文字幕观看av | 色综合久久88 | 91中文在线观看 | 毛片一二区 | 欧美一区中文字幕 | www成人av | 久草电影网 | 欧美另类交在线观看 | 成人在线电影观看 | 一区二区三区福利 | 久久99久久99精品免视看婷婷 | 国产中文在线字幕 | 一区免费视频 | 国产精品久久久久久久av大片 | 韩日电影在线 | 国产在线91在线电影 | 天天操天天操天天干 | 在线播放国产精品 | 久久久久中文字幕 | 国产成人一区二区三区在线观看 | 欧美美女视频在线观看 | 亚洲专区 国产精品 | 欧美激情奇米色 | 狠狠狠狠狠狠天天爱 | 亚洲黄色一级电影 | 美女视频是黄的免费观看 | 亚洲精品视频一二三 | 亚洲毛片在线观看. | 国产精品永久免费观看 | 天天色天天射天天综合网 | 国产亚洲成av片在线观看 | 中文亚洲欧美日韩 | 99精品免费在线 | 亚洲国产日本 | 美女黄频免费 | 欧美一区二区精品在线 | 欧美一级在线 | 欧美日韩中文字幕在线视频 | 日韩午夜电影 | 在线亚洲激情 | 久久视频在线视频 | 精品在线视频观看 | 丁香六月激情婷婷 | 国产字幕在线播放 | 热久精品 | 97在线播放视频 | 久草热视频| 久草网免费 | 免费看av在线 | 18av在线视频 | 久久久久久综合网天天 | 91一区二区三区在线观看 | 久久久久久久国产精品视频 | 欧美日韩免费观看一区=区三区 | 亚色视频在线观看 | 免费一区在线 | 婷婷天天色 | 99精彩视频在线观看免费 | 亚洲va欧美 | 午夜视频在线观看一区二区 | 96久久欧美麻豆网站 | 亚洲精品视频久久 | 色婷婷国产 | 亚洲美女在线一区 | 国产精品久久久久永久免费看 | 亚洲成熟女人毛片在线 | 精品国产一区二区三区久久久蜜臀 | 国产福利一区二区三区视频 | 日韩在线免费电影 | 精品久久久久久久久久久久久久久久 | 婷婷综合 | 91精品久久久久久综合五月天 | www久久| 亚洲人成网站精品片在线观看 | 91爱爱电影 | 天天综合在线观看 | 久久精选视频 | 这里只有精品视频在线观看 | 国产精品视频在线观看 | 欧美另类tv| 免费观看91视频大全 | av电影免费在线播放 | 99久久er热在这里只有精品66 | 一本到在线 | www.伊人网| 色综合天天视频在线观看 | 在线精品一区二区 | 国产亚洲午夜高清国产拍精品 | 国产在线精品二区 | 麻豆国产精品一区二区三区 | 亚洲黄色在线观看 | 久草色在线观看 | 欧洲精品视频一区二区 | 国产精品久久久久久久久久尿 | 亚洲黄色在线看 | 高清免费在线视频 | 成人免费观看视频大全 | 午夜精品成人一区二区三区 | 91高清在线| 久久久首页 | 亚州av成人 | 亚洲国产精品久久久久久 | 亚洲精品国产欧美在线观看 | 国产精品久久久久久五月尺 | 91精品国产91久久久久久三级 | 日韩网站在线免费观看 | 激情欧美一区二区三区 | 日日干天夜夜 | 国产91精品一区二区 | 超碰人人在线 | 婷婷久久国产 | 日韩大片在线 | 亚洲精品视频免费看 | 色爱区综合激月婷婷 | a爱爱视频 | 久草香蕉在线 | 97精品超碰一区二区三区 | 中文字幕精品三级久久久 | av在线免费观看不卡 | 日韩欧美在线综合网 | 久久夜夜夜 | 国产精品久久久久久久久软件 | 亚洲激情av | 中文字幕久久精品亚洲乱码 | 91精品免费在线观看 | 精品久久久久久一区二区里番 | 91福利国产在线观看 | 久久成人国产精品一区二区 | 97视频在线观看播放 | 国内外成人在线视频 | 免费精品视频在线观看 | av一级在线 | 黄色a视频 | 成片人卡1卡2卡3手机免费看 | av在线播放观看 | 三级在线视频观看 | 中文字幕一区二区在线观看 | 在线v片免费观看视频 | 视频一区在线免费观看 | 免费看色的网站 | a视频在线观看免费 | 韩国精品在线 | 精品一区二三区 | 在线精品播放 | 91成人在线观看高潮 | 日韩av在线免费看 | 国产精品久久一区二区三区, | 日韩高清在线不卡 | 欧美激情综合五月色丁香 | 中文字幕欧美日韩va免费视频 | 亚洲综合五月天 | 日韩av中文在线观看 | 国产毛片久久久 | 在线免费av观看 | 激情深爱五月 | 日韩午夜在线观看 | 一级黄色大片 | 69亚洲乱 | 黄色网在线播放 | 黄色天堂在线观看 | 国产麻豆果冻传媒在线观看 | 日日夜夜干 | 久久在视频 | 夜夜夜夜爽 | 亚洲激情综合网 | 丁香花五月| 视频在线一区二区三区 | 天天色棕合合合合合合 | 最新国产中文字幕 | 欧美视频一区二 | 99免费精品 | av短片在线 | 日韩影片在线观看 | 精品国产一区二区三区久久影院 | 99九九热只有国产精品 | 一区二区三区四区在线免费观看 | 国产剧情av在线播放 | 中文字幕你懂的 | 中文字幕在线看片 | 在线 国产 日韩 | 中文字幕视频一区二区 | 国产特级毛片 | 亚洲第一中文网 | 在线观看中文字幕av | 9999免费视频 | 亚洲成av人片在线观看香蕉 | 少妇性xxx | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国内精品久久久久影院男同志 | 99人久久精品视频最新地址 | 97国产在线播放 | 99视频免费看 | 一区二区中文字幕在线播放 | 7799av | 人人爽人人爽av | 91精品一区二区三区久久久久久 | 国产超碰在线观看 | 日日干美女 | 91热视频在线观看 | 中文字幕欧美日韩va免费视频 | 成人av资源| 91成人免费 | 国内久久视频 | 欧美日韩在线观看一区二区三区 | 中文字幕在线播放日韩 | 久久国产精品第一页 | 最新真实国产在线视频 | 激情综合色综合久久 | va视频在线观看 | 超碰在线中文字幕 | 久久a v视频 | 国产色拍拍拍拍在线精品 | 国产人成看黄久久久久久久久 | 五月天中文字幕 | 久久免费99精品久久久久久 | 免费av片在线 | 久久精品国产一区二区 | 中文字幕乱视频 | 我要色综合天天 | 日韩电影在线一区二区 | 国产福利久久 | 美女网站黄在线观看 | 中文字幕视频一区二区 | 99热官网| 国产精品色 | 国产91综合一区在线观看 | 日韩精品一区二区三区电影 | 99精彩视频在线观看免费 | 中日韩欧美精彩视频 | 97人人人人 | 久久精品高清视频 | 亚洲激情网站免费观看 | 操操操com | 91精品国产91p65| 在线观看视频中文字幕 | 丁香色天天 | 国产亚洲精品电影 | 91看片成人| 三级动态视频在线观看 | av在线h | 国产精品完整版 | 久久综合射 | 国产精品理论视频 | 91精品一区二区在线观看 | 特级西西444www大胆高清无视频 | 久久久久久99精品 | 国产精品国产三级国产专区53 | 91天堂素人约啪 | 国产白浆视频 | 亚洲国产字幕 | 韩国av一区二区三区在线观看 | 国产中文字幕三区 | 欧美aⅴ在线观看 | 日韩a欧美 | 亚洲特级毛片 | 国产a网站| 天堂av在线网址 | 成人毛片网 | 国产精品99精品 | 在线观看av不卡 | 看v片 | 色综合久久中文字幕综合网 | 久久久久亚洲精品成人网小说 | 青青草国产在线 | 久久久片| 涩涩网站在线看 | 国产亚洲精品美女久久 | 国产手机av | 欧美性大胆 | 欧美日韩中文视频 | 综合网伊人 | 97超碰国产在线 | 国产欧美日韩精品一区二区免费 | 在线观看一区二区精品 | 黄色免费网站大全 | 99视频国产精品免费观看 | av综合在线观看 | 欧美色插| 久草在线免费播放 | 在线 国产 日韩 | 不卡的av在线 | 日韩三级在线观看 | 国产成人免费网站 | 99在线看| 国产精品久久久久免费观看 | 国产超碰在线观看 | 91免费看黄色 | 成人av日韩 | 中文字幕在线一区二区三区 | 欧美 亚洲 另类 激情 另类 | 99精品在线| 超碰国产人人 | 欧美aaa视频 | 国产在线超碰 | 亚洲美女视频在线 | 国产日韩在线视频 | 国产探花在线看 | 精品国产乱子伦一区二区 | 国产精品黄网站在线观看 | 天天干天天爽 | 久久综合九色综合97婷婷女人 | 色综合久久综合网 | 亚洲另类视频在线观看 | 97色在线观看免费视频 | 久久久免费在线观看 | 欧美一区免费观看 | 成人av免费在线看 | 久久精品99北条麻妃 | 麻豆播放 | 成人一级影视 | 九九精品视频在线观看 | 欧美福利视频 | 日韩免费在线一区 | 精品免费久久 | 国产美女精品人人做人人爽 | 久久99这里只有精品 | www.五月天婷婷.com | 国产3p视频 | 97在线视频观看 | 99久久精品国产亚洲 | 日韩欧美精品一区二区三区经典 | 综合网色| 粉嫩av一区二区三区入口 | 亚洲黄色高清 | 国产精品第十页 | 国产高清视频在线免费观看 | 亚洲日本va在线观看 | 午夜精品一区二区三区在线视频 | 日韩av电影手机在线观看 | 又黄又爽又无遮挡免费的网站 | 日韩一区二区三区观看 | 91视频黄色 | 狠狠色丁香婷婷综合久久片 | 在线电影日韩 | 成人av电影免费在线观看 | 国产一区二区三区在线免费观看 | 美女免费黄网站 | 国产一区二区久久久久 | 曰本免费av | 国产a级精品 | 国色天香在线 | 在线免费观看羞羞视频 | 在线观看日韩中文字幕 | 亚洲精品午夜一区人人爽 | 国产精品11| 狠狠网| 亚洲精品美女久久久 | 国产亚洲精品日韩在线tv黄 | 国产精品白虎 | 亚洲综合色站 | 毛片网在线观看 | 色婷婷www | 国产精品一区二区三区在线 | 在线免费视| 91精选在线观看 | 欧美日韩高清不卡 | 久草爱 | 亚洲专区欧美 | 国产黄在线免费观看 | 91探花视频 | 天堂入口网站 | 日韩高清不卡一区二区三区 | 国产精品网站一区二区三区 | 久久午夜鲁丝片 | 亚州精品一二三区 | 中文字幕亚洲字幕 | 亚洲精品一区二区三区在线观看 | 久久影院中文字幕 | 中文有码在线视频 | 欧美日韩在线电影 | av电影不卡 | 久久久久久久久网站 | 色香天天| 国产精品毛片一区二区三区 | 亚洲女欲精品久久久久久久18 | 99中文字幕在线观看 | 国产 色 | 日韩av成人免费看 | 国产亚洲人成网站在线观看 | 中午字幕在线观看 | 成人精品999 | avhd高清在线谜片 | 免费看精品久久片 | 狠狠躁天天躁 | av 一区二区三区四区 | 久久久久久麻豆 | 欧美激情视频免费看 | 国内精品视频在线 | 久草在线在线视频 | 99精品区| 久久激情影院 | 久久99国产精品久久99 | 又爽又黄又刺激的视频 | 亚洲精品久久久久999中文字幕 | 激情久久久 | 免费a v视频 | 日韩高清在线看 | 亚洲精品视频在线观看免费视频 | 成人91在线 | 美州a亚洲一视本频v色道 | 久草在线91 | 国内精自线一二区永久 | 国产96在线 | 97视频人人 | 五月天婷婷在线播放 | 久久亚洲美女 | 天堂视频中文在线 | 国内精品毛片 | 国产午夜av| 欧美日韩精品在线一区二区 | 国产午夜免费视频 | 中文超碰字幕 | 久久免费电影 | 91手机电视 | 欧美精品第一 | 日本女人在线观看 | 国产成年人av | 国产福利久久 | 久草免费在线 | 99精品视频免费 | 欧美一级性 | 亚洲国产午夜精品 | 国产女做a爱免费视频 | 在线观看视频中文字幕 | 欧美精品二区 | 亚洲精品综合一二三区在线观看 | 日韩大片免费观看 | 婷婷六月久久 | av一区在线 | 国产资源站 | www色com| 久久久高清视频 | 日韩精品一区二区三区免费观看视频 | 美女免费黄网站 | 亚洲视频在线观看免费 | 日韩高清免费电影 | 日韩在线 一区二区 | 欧美日韩一区二区视频在线观看 | 超碰在线cao | 国产手机视频在线观看 | 一区二区三区四区久久 | 亚洲欧美一区二区三区孕妇写真 | 日日干夜夜爱 | 欧美午夜理伦三级在线观看 | 日本精品视频网站 | 日韩最新在线 | 天天操天天干天天爽 | 久久69精品久久久久久久电影好 | 最新国产精品拍自在线播放 | 91亚洲综合 | 欧美性极品xxxx做受 | 激情 一区二区 | 在线亚洲天堂网 | 96久久| 久久视频这里有精品 | 伊人av综合| 亚洲国产精久久久久久久 | 日本中文字幕系列 | 综合伊人av | 九九在线视频免费观看 | 欧美成人猛片 | www成人av| 国产精品视频免费观看 | 精品国产一区二区三区在线 | 日韩欧美专区 | 免费日韩视频 | 狠狠色伊人亚洲综合网站野外 | 成人av教育| 国产免费午夜 | 国产精品21区 | 亚洲播放一区 | 又黄又刺激的视频 | 正在播放国产91 | 中文字幕av有码 | 欧美激情奇米色 | 久精品在线 | 国产精品久久久av久久久 | 欧美一级大片在线观看 | 狠狠久久伊人 | 日韩精品在线播放 | 不卡国产视频 | 手机在线永久免费观看av片 | 日韩在线免费观看视频 | 亚洲午夜久久久久久久久久久 | 国产99在线播放 | 丰满少妇对白在线偷拍 | 亚洲永久精品在线观看 | 九九精品久久久 | 日韩在线视频免费观看 | 国产原创中文在线 | 在线免费黄网站 | 成人免费观看在线视频 | 国产一区二区不卡视频 | 激情av在线播放 | 国产亚洲精品久久久久久网站 | 欧美一级片在线观看视频 | 国产 字幕 制服 中文 在线 | 欧美精品久久久久久久久久丰满 | 91香蕉国产在线观看软件 | av高清一区二区三区 | 99久久精品无码一区二区毛片 | 美女av在线免费 | 91高清一区| 成年人看片网站 | 国产明星视频三级a三级点| 六月天色婷婷 | 色网站在线 | 丁香伊人网 | 日韩草比| 久久污视频| 国产精品久久人 | 操操操夜夜操 | 亚洲精品中文在线资源 | 亚洲国产精久久久久久久 | 999久久久| 午夜性生活片 | 欧美精品网站 | 久草视频精品 | 91最新地址永久入口 | 亚洲精品一区二区精华 | 日日干干夜夜 | av资源免费在线观看 | 国产精品成人av电影 | 欧洲精品亚洲精品 | 国产精品久久电影观看 | 国产剧情一区二区在线观看 | 久久综合色影院 | 免费黄色网址大全 | 日韩国产精品久久久久久亚洲 | 亚洲免费观看视频 | 午夜精品一区二区三区视频免费看 | 日韩精品观看 | 狠狠久久综合 | 九九在线视频免费观看 | 激情久久综合网 | 成人国产电影在线观看 | 国产区网址 | ,午夜性刺激免费看视频 | 在线小视频你懂的 | 日韩中文久久 | 免费热情视频 | 国产精品久久久久久久久久久久午夜片 | 青青河边草观看完整版高清 | 美女久久 | 欧美日韩国产在线一区 | 亚洲,播放 | 久久综合免费视频 | 国产亚洲成人网 | 在线91精品| 国产一级三级 | 亚洲精品视频在线播放 | 伊人激情网 | 91视频在线免费 | 色www免费视频 | 久久艹艹| 国产在线1区 | 麻豆传媒在线视频 | 热精品 | 久久久久久久看片 | 国产一区二区免费在线观看 | 日韩欧美69 | 国产美女免费观看 | 国产主播99 | 日韩在线视频二区 | 午夜视频日本 | 国产日韩精品欧美 | 手机看片午夜 | 成片免费观看视频大全 | av成人资源 | 国产五月色婷婷六月丁香视频 | 亚洲精品免费在线视频 | 天天爱综合 | 中文字幕国产一区 | 丁香综合av | 久久综合之合合综合久久 | 91自拍视频在线观看 | 免费黄色在线播放 | 6080yy午夜一二三区久久 | 精品亚洲免费 | 精品久久久久国产免费第一页 | 国产精品观看视频 | 天天操天天操天天操天天操 | 福利一区二区 | 在线a亚洲视频播放在线观看 | 日韩av影片在线观看 | 国产一级电影 | 亚洲资源视频 | 国产一区免费 | 久久人人爽人人爽人人片av软件 | 久久免费视频4 | www.亚洲激情.com | 国产黄色av网站 | 98久久| 另类五月激情 | 亚洲色图色 | 亚洲一区二区精品3399 | 中文字幕在线观看免费观看 | 久艹视频免费观看 | 久久精品这里都是精品 | 97成人精品视频在线观看 | 久久综合久久综合久久综合 | 成人h动漫在线看 | 欧美日韩精品免费观看视频 | 97超级碰碰碰碰久久久久 | 国产九九精品视频 | 亚洲网站在线看 | 午夜精品一区二区三区在线 | 97在线观看免费高清 | 91最新中文字幕 | av软件在线观看 | 久久精品一区二区三区中文字幕 | 最近最新最好看中文视频 | 激情av在线资源 | 国产久视频 | 天堂va在线观看 | 国产99久久九九精品 | 91中文字幕在线视频 | 亚洲激情六月 | 激情电影在线观看 | 国产最新在线视频 | 丁香九月激情综合 | 日日爽 | www视频在线播放 | 99视频免费看| 久久久久久久久久久精 | 婷婷久久网 | 一区二区三区精品久久久 | 久久久久中文 | 亚洲国产精品va在线看 | 日韩毛片在线播放 | 依人成人综合网 | 美女精品网站 | 欧美日韩精品在线免费观看 | 超级碰碰碰视频 | 国产一区二区在线观看免费 | 男女激情片在线观看 | 91网址在线 | 国产一及片 | 精品女同一区二区三区在线观看 | 在线精品观看国产 | 欧美天天综合网 | 久艹在线播放 | 天天操人人要 | 69国产盗摄一区二区三区五区 | 中文字幕在线免费播放 | 最近中文字幕免费大全 | 特级黄色视频毛片 | 欧美中文字幕第一页 | 婷婷在线免费视频 | 国产精品入口麻豆 | 蜜臀av性久久久久av蜜臀妖精 | 亚洲国产偷 | 国产综合91 | 免费看三级网站 | 精品一区二区三区电影 | 久久久精品二区 | 久久综合福利 | 亚洲最新精品 | 国产成人精品一区二区三区在线 | 日韩久久久久久 | 国产91精品高清一区二区三区 | 久久久在线视频 | 国产精品成人久久 | 日韩高清免费电影 | 免费三级黄色 | 色多多污污在线观看 | 精品欧美小视频在线观看 | 麻豆精品传媒视频 | 91精品久久久久久 | 五月婷婷丁香在线观看 | 久久99精品久久久久久久久久久久 | 中文字幕专区高清在线观看 | 国产精品每日更新 | 色老板在线视频 | 久草在线资源网 | 久久99这里只有精品 | 成人av电影免费在线观看 | 狠狠网亚洲精品 | 日韩av成人| 精品在线免费视频 | 伊人婷婷色| 久久久免费观看 | 中文成人字幕 | 手机在线日韩视频 | 国产裸体bbb视频 | 国产裸体bbb视频 | 色天天综合网 | 亚洲精品欧洲精品 | 伊甸园永久入口www 99热 精品在线 | 久久99精品久久久久久秒播蜜臀 | 成人av免费电影 | 日韩乱码在线 | 少妇bbbb| 欧美一二三区在线观看 | 欧美色插 | 超碰免费观看 | 免费精品视频在线观看 | 日日干,天天干 | 国产精品免费人成网站 | av在线免费播放 | 天天操人人干 | 欧美一区在线看 | 黄色大全视频 | 激情久久影院 | 91精品伦理 | 欧美一区二区三区免费看 | 五月婷色 | 日韩中字在线 | 国产区免费在线 | 国产美女网站在线观看 | 国产精品久久久久久五月尺 | 国产日韩欧美网站 | 337p欧美 | 亚洲精品自拍 | 99精品免费久久久久久日本 | 91在线观看黄 | 久久av在线播放 | 91手机电视| 成人一级电影在线观看 | 亚洲国产日韩欧美在线 | 9在线观看免费高清完整版在线观看明 | 国产精品美乳一区二区免费 | 亚洲高清激情 | 久久免费看毛片 | 91网在线观看 | 精品一区二区在线免费观看 | 亚洲黄色av | 日韩亚洲在线视频 | 日韩成人免费观看 | 国内精品国产三级国产aⅴ久 | 久保带人 | 韩日精品在线 | 国产又黄又硬又爽 | 欧美激情视频在线免费观看 | 亚洲午夜久久久综合37日本 | 久久精品永久免费 | 色综合五月| 午夜影视av | 久久精品久久久久久久 | 综合网伊人 | 久久久www成人免费精品张筱雨 | 不卡的一区二区三区 | 青青久草在线视频 | 久草免费新视频 | 久久夜色精品国产欧美乱 | 免费观看的av网站 | 99精品视频99 | 精品影院一区二区久久久 | 亚洲色视频 | 欧美日韩高清在线 | 免费无遮挡动漫网站 | 2023年中文无字幕文字 | 日韩久久精品一区二区 | 久久精品香蕉视频 | 奇米7777狠狠狠琪琪视频 | 久久视频在线视频 | 在线视频一二区 | 99国产一区二区三精品乱码 | 草久在线 | 国产精品每日更新 | free,性欧美| 久草视频免费在线观看 | 亚洲精品视频免费在线 | 中国黄色一级大片 | 色网站在线 | 中文字幕成人一区 | 日韩欧美视频在线免费观看 | 亚洲伦理一区二区 | 日操干 | 国产成人精品一区二区三区福利 | 亚洲国产成人精品电影在线观看 | 一 级 黄 色 片免费看的 | 国内小视频在线观看 | 久久激情视频 久久 | 美女黄频在线观看 | 国产免费观看视频 | 国产精品九九九 | 午夜精品一区二区三区视频免费看 | 国产精品久久久久久久久费观看 | 久久精品99久久久久久2456 | 99久久综合狠狠综合久久 | 9992tv成人免费看片 | 国产精品久久久久久久7电影 | 又黄又爽又色无遮挡免费 | 日韩免费视频线观看 | 亚洲一区二区麻豆 | 国产成人精品亚洲日本在线观看 | 激情av在线资源 | 天天干夜夜 | 少妇做爰k8经典 | 久久久99国产精品免费 | 成人午夜精品 | 久草在线看片 | 久久久久国产精品一区二区 | 99在线精品视频观看 | 欧美性免费| 深爱婷婷久久综合 | 午夜av日韩| 久久国产经典 | 91九色蝌蚪国产 | 成人免费视频a | 国产精品ⅴa有声小说 | 久久优| 狠狠色伊人亚洲综合网站野外 | 日韩字幕在线观看 | 国产91综合一区在线观看 | 色婷婷啪啪免费在线电影观看 | 天天射天天操天天 | 久久久午夜精品理论片中文字幕 | 成人午夜免费剧场 | 亚洲成人午夜在线 | 亚洲 欧洲 国产 日本 综合 | 玖玖视频精品 | 欧美性生活大片 | 国产伦理久久精品久久久久_ | 久久成人国产精品一区二区 | 日本黄色a级大片 | 夜夜视频欧洲 | 亚洲在线 | 操操操av | 日韩电影中文,亚洲精品乱码 | av成人免费网站 | 亚洲国产小视频在线观看 | 亚洲精品黄 | 中国一级特黄毛片大片久久 | 欧美-第1页-屁屁影院 | 欧美一区二区日韩一区二区 | 久久人人爽爽 | 欧美一进一出抽搐大尺度视频 | 国产视频精品在线 | 日韩免费不卡av | 亚洲国产精品免费 | 97成人资源站 | 五月激情丁香图片 | 国产999免费视频 | 色综合中文字幕 | 超黄视频网站 | 成人资源网 | 日日夜夜精品免费观看 | 亚洲综合情 | 欧美日韩电影在线播放 | 免费在线观看一区二区三区 | 久久国产精品第一页 | 亚洲精品免费播放 | 久热香蕉视频 | 成人一级片在线观看 | 免费视频黄色 | 99久久精品国产亚洲 | 精品国产三级 | 韩日电影在线免费看 | 日韩美在线观看 | 国产视频手机在线 | 国产精品系列在线 | 国产你懂的在线 | 免费看片网站91 | 国产美女免费观看 | 91麻豆精品国产 | 五月婷婷久久丁香 | 欧美日韩中文在线视频 | 国产亚洲资源 | 欧美久久久 | 在线导航福利 | 狠狠操天天射 | 婷婷日| 狠狠久久 | 成人午夜电影网站 | 日韩在线观看网址 | 一区免费观看 | 国产精品久久久999 国产91九色视频 |