国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

面試官:說下Redis 延時(shí)任務(wù)的方案

共 6235字,需瀏覽 13分鐘

 ·

2022-02-25 16:43

來源:blog.csdn.net/hjm4702192/

article/details/80519010

引言

在開發(fā)中,往往會(huì)遇到一些關(guān)于延時(shí)任務(wù)的需求。例如

  • 生成訂單30分鐘未支付,則自動(dòng)取消
  • 生成訂單60秒后,給用戶發(fā)短信

對(duì)上述的任務(wù),我們給一個(gè)專業(yè)的名字來形容,那就是延時(shí)任務(wù)。那么這里就會(huì)產(chǎn)生一個(gè)問題,這個(gè)延時(shí)任務(wù)和定時(shí)任務(wù)的區(qū)別究竟在哪里呢?一共有如下幾點(diǎn)區(qū)別

  • 定時(shí)任務(wù)有明確的觸發(fā)時(shí)間,延時(shí)任務(wù)沒有
  • 定時(shí)任務(wù)有執(zhí)行周期,而延時(shí)任務(wù)在某事件觸發(fā)后一段時(shí)間內(nèi)執(zhí)行,沒有執(zhí)行周期
  • 定時(shí)任務(wù)一般執(zhí)行的是批處理操作是多個(gè)任務(wù),而延時(shí)任務(wù)一般是單個(gè)任務(wù)

下面,我們以判斷訂單是否超時(shí)為例,進(jìn)行方案分析

方案分析

(1)數(shù)據(jù)庫輪詢

思路

該方案通常是在小型項(xiàng)目中使用,即通過一個(gè)線程定時(shí)的去掃描數(shù)據(jù)庫,通過訂單時(shí)間來判斷是否有超時(shí)的訂單,然后進(jìn)行update或delete等操作

實(shí)現(xiàn)

博主當(dāng)年早期是用quartz來實(shí)現(xiàn)的(實(shí)習(xí)那會(huì)的事),簡(jiǎn)單介紹一下

maven項(xiàng)目引入一個(gè)依賴如下所示

<dependency>
??<groupId>org.quartz-schedulergroupId>
??<artifactId>quartzartifactId>
??<version>2.2.2version>
dependency>

調(diào)用Demo類MyJob如下所示

package?com.rjzheng.delay1;

import?org.quartz.Job;
import?org.quartz.JobBuilder;
import?org.quartz.JobDetail;
import?org.quartz.JobExecutionContext;
import?org.quartz.JobExecutionException;
import?org.quartz.Scheduler;
import?org.quartz.SchedulerException;
import?org.quartz.SchedulerFactory;
import?org.quartz.SimpleScheduleBuilder;
import?org.quartz.Trigger;
import?org.quartz.TriggerBuilder;

import?org.quartz.impl.StdSchedulerFactory;


public?class?MyJob?implements?Job?{
????public?void?execute(JobExecutionContext?context)
????????throws?JobExecutionException?
{
????????System.out.println("要去數(shù)據(jù)庫掃描啦。。。");
????}

????public?static?void?main(String[]?args)?throws?Exception?{
????????//?創(chuàng)建任務(wù)
????????JobDetail?jobDetail?=?JobBuilder.newJob(MyJob.class)
????????????????????????????????????????.withIdentity("job1",?"group1").build()
;

????????//?創(chuàng)建觸發(fā)器?每3秒鐘執(zhí)行一次
????????Trigger?trigger?=?TriggerBuilder.newTrigger()
????????????????????????????????????????.withIdentity("trigger1",?"group3")
????????????????????????????????????????.withSchedule(SimpleScheduleBuilder.simpleSchedule()
???????????????????????????????????????????????????????????????????????????.withIntervalInSeconds(3)
???????????????????????????????????????????????????????????????????????????.repeatForever())
????????????????????????????????????????.build();

????????Scheduler?scheduler?=?new?StdSchedulerFactory().getScheduler();

????????//?將任務(wù)及其觸發(fā)器放入調(diào)度器
????????scheduler.scheduleJob(jobDetail,?trigger);

????????//?調(diào)度器開始調(diào)度任務(wù)
????????scheduler.start();
????}
}

運(yùn)行代碼,可發(fā)現(xiàn)每隔3秒,輸出如下

要去數(shù)據(jù)庫掃描啦。。。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 簡(jiǎn)單易行,支持集群操作

缺點(diǎn):

  • 對(duì)服務(wù)器內(nèi)存消耗大
  • 存在延遲,比如你每隔3分鐘掃描一次,那最壞的延遲時(shí)間就是3分鐘
  • 假設(shè)你的訂單有幾千萬條,每隔幾分鐘這樣掃描一次,數(shù)據(jù)庫損耗極大

(2)JDK的延遲隊(duì)列

思路

該方案是利用JDK自帶的DelayQueue來實(shí)現(xiàn),這是一個(gè)無界阻塞隊(duì)列,該隊(duì)列只有在延遲期滿的時(shí)候才能從中獲取元素,放入DelayQueue中的對(duì)象,是必須實(shí)現(xiàn)Delayed接口的。

DelayedQueue實(shí)現(xiàn)工作流程如下圖所示

其中

  • Poll():獲取并移除隊(duì)列的超時(shí)元素,沒有則返回空
  • take():獲取并移除隊(duì)列的超時(shí)元素,如果沒有則wait當(dāng)前線程,直到有元素滿足超時(shí)條件,返回結(jié)果。

實(shí)現(xiàn)

定義一個(gè)類OrderDelay實(shí)現(xiàn)Delayed,代碼如下

package?com.rjzheng.delay2;

import?java.util.concurrent.Delayed;
import?java.util.concurrent.TimeUnit;


public?class?OrderDelay?implements?Delayed?{
????private?String?orderId;
????private?long?timeout;

????OrderDelay(String?orderId,?long?timeout)?{
????????this.orderId?=?orderId;

????????this.timeout?=?timeout?+?System.nanoTime();
????}

????public?int?compareTo(Delayed?other)?{
????????if?(other?==?this)?{

????????????return?0;
????????}

????????OrderDelay?t?=?(OrderDelay)?other;

????????long?d?=?(getDelay(TimeUnit.NANOSECONDS)?-
????????????t.getDelay(TimeUnit.NANOSECONDS));

????????return?(d?==?0)???0?:?((d?0)???(-1)?:?1);
????}

????//?返回距離你自定義的超時(shí)時(shí)間還有多少
????public?long?getDelay(TimeUnit?unit)?{
????????return?unit.convert(timeout?-?System.nanoTime(),?TimeUnit.NANOSECONDS);
????}

????void?print()?{
????????System.out.println(orderId?+?"編號(hào)的訂單要?jiǎng)h除啦。。。。");
????}
}

運(yùn)行的測(cè)試Demo為,我們?cè)O(shè)定延遲時(shí)間為3秒

package?com.rjzheng.delay2;
import?java.util.ArrayList;
import?java.util.List;
import?java.util.concurrent.DelayQueue;
import?java.util.concurrent.TimeUnit;
public?class?DelayQueueDemo
{
????public?static?void?main(String[]?args)
????
{
????????//?TODO?Auto-generated?method?stub??
????????List??list?=?new?ArrayList??();
????????list.add("00000001");
????????list.add("00000002");
????????list.add("00000003");
????????list.add("00000004");
????????list.add("00000005");
????????DelayQueue??queue?=?newDelayQueue??();
????????long?start?=?System.currentTimeMillis();
????????for(int?i?=?0;?i?5;?i++)
????????{
????????????//延遲三秒取出
????????????queue.put(new?OrderDelay(list.get(i),?TimeUnit.NANOSECONDS.convert(3,?TimeUnit.SECONDS)));
????????????try
????????????{
????????????????queue.take().print();
????????????????System.out.println("After?"?+?(System.currentTimeMillis()?-?start)?+?"?MilliSeconds");
????????????}
????????????catch(InterruptedException?e)
????????????{
????????????????//?TODO?Auto-generated?catch?block??
????????????????e.printStackTrace();
????????????}
????????}
????}
}

輸出如下

00000001編號(hào)的訂單要?jiǎng)h除啦。。。。

After?3003?MilliSeconds

00000002編號(hào)的訂單要?jiǎng)h除啦。。。。

After?6006?MilliSeconds

00000003編號(hào)的訂單要?jiǎng)h除啦。。。。

After?9006?MilliSeconds

00000004編號(hào)的訂單要?jiǎng)h除啦。。。。

After?12008?MilliSeconds

00000005編號(hào)的訂單要?jiǎng)h除啦。。。。

After?15009?MilliSeconds

可以看到都是延遲3秒,訂單被刪除

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 效率高,任務(wù)觸發(fā)時(shí)間延遲低。

缺點(diǎn):

  • 服務(wù)器重啟后,數(shù)據(jù)全部消失,怕宕機(jī)
  • 集群擴(kuò)展相當(dāng)麻煩
  • 因?yàn)閮?nèi)存條件限制的原因,比如下單未付款的訂單數(shù)太多,那么很容易就出現(xiàn)OOM異常
  • 代碼復(fù)雜度較高

(3)時(shí)間輪算法

思路

先上一張時(shí)間輪的圖(這圖到處都是啦)

時(shí)間輪算法可以類比于時(shí)鐘,如上圖箭頭(指針)按某一個(gè)方向按固定頻率輪動(dòng),每一次跳動(dòng)稱為一個(gè) tick。這樣可以看出定時(shí)輪由個(gè)3個(gè)重要的屬性參數(shù),ticksPerWheel(一輪的tick數(shù)),tickDuration(一個(gè)tick的持續(xù)時(shí)間)以及 timeUnit(時(shí)間單位),例如當(dāng)ticksPerWheel=60,tickDuration=1,timeUnit=秒,這就和現(xiàn)實(shí)中的始終的秒針走動(dòng)完全類似了。

如果當(dāng)前指針指在1上面,我有一個(gè)任務(wù)需要4秒以后執(zhí)行,那么這個(gè)執(zhí)行的線程回調(diào)或者消息將會(huì)被放在5上。那如果需要在20秒之后執(zhí)行怎么辦,由于這個(gè)環(huán)形結(jié)構(gòu)槽數(shù)只到8,如果要20秒,指針需要多轉(zhuǎn)2圈。位置是在2圈之后的5上面(20 % 8 + 1)

實(shí)現(xiàn)

我們用Netty的HashedWheelTimer來實(shí)現(xiàn)

給Pom加上下面的依賴

<dependency>
????<groupId>io.nettygroupId>
????<artifactId>netty-allartifactId>
????<version>4.1.24.Finalversion>
dependency>

測(cè)試代碼HashedWheelTimerTest如下所示

package?com.rjzheng.delay3;
import?io.netty.util.HashedWheelTimer;
import?io.netty.util.Timeout;
import?io.netty.util.Timer;
import?io.netty.util.TimerTask;
import?java.util.concurrent.TimeUnit;
public?class?HashedWheelTimerTest
{
????static?class?MyTimerTask?implements?TimerTask
????
{
????????boolean?flag;
????????public?MyTimerTask(boolean?flag)
????????
{
????????????this.flag?=?flag;
????????}
????????public?void?run(Timeout?timeout)?throws?Exception
????????
{
????????????//?TODO?Auto-generated?method?stub
????????????System.out.println("要去數(shù)據(jù)庫刪除訂單了。。。。");
????????????this.flag?=?false;
????????}
????}
????public?static?void?main(String[]?argv)
????
{
????????MyTimerTask?timerTask?=?new?MyTimerTask(true);
????????Timer?timer?=?new?HashedWheelTimer();
????????timer.newTimeout(timerTask,?5,?TimeUnit.SECONDS);
????????int?i?=?1;
????????while(timerTask.flag)
????????{
????????????try
????????????{
????????????????Thread.sleep(1000);
????????????}
????????????catch(InterruptedException?e)
????????????{
????????????????//?TODO?Auto-generated?catch?block
????????????????e.printStackTrace();
????????????}
????????????System.out.println(i?+?"秒過去了");
????????????i++;
????????}
????}
}

輸出如下

1秒過去了

2秒過去了

3秒過去了

4秒過去了

5秒過去了

要去數(shù)據(jù)庫刪除訂單了。。。。

6秒過去了

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 效率高,任務(wù)觸發(fā)時(shí)間延遲時(shí)間比delayQueue低,代碼復(fù)雜度比delayQueue低。

缺點(diǎn):

  • 服務(wù)器重啟后,數(shù)據(jù)全部消失,怕宕機(jī)
  • 集群擴(kuò)展相當(dāng)麻煩
  • 因?yàn)閮?nèi)存條件限制的原因,比如下單未付款的訂單數(shù)太多,那么很容易就出現(xiàn)OOM異常

(4)redis緩存

思路

利用redis的zset,zset是一個(gè)有序集合,每一個(gè)元素(member)都關(guān)聯(lián)了一個(gè)score,通過score排序來取集合中的值

  • 添加元素:ZADD key score member [[score member] [score member] …]
  • 按順序查詢?cè)?ZRANGE key start stop [WITHSCORES]
  • 查詢?cè)兀?code style="margin-right: 2px;margin-left: 2px;padding: 2px 4px;outline: 0px;font-size: 14px;border-radius: 4px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;">score:ZSCORE key member
  • 移除元素:ZREM key member [member …]

測(cè)試如下

#?添加單個(gè)元素
redis>?ZADD?page_rank?10?google.com

(integer)?1


#?添加多個(gè)元素
redis>?ZADD?page_rank?9?baidu.com?8?bing.com

(integer)?2

redis>?ZRANGE?page_rank?0?-1?WITHSCORES

1)?"bing.com"
2)?"8"
3)?"baidu.com"
4)?"9"
5)?"google.com"
6)?"10"

#?查詢?cè)氐膕core值

redis>?ZSCORE?page_rank?bing.com
"8"

#?移除單個(gè)元素
?
redis>?ZREM?page_rank?google.com

(integer)?1

redis>?ZRANGE?page_rank?0?-1?WITHSCORES

1)?"bing.com"
2)?"8"
3)?"baidu.com"
4)?"9"

那么如何實(shí)現(xiàn)呢?我們將訂單超時(shí)時(shí)間戳與訂單號(hào)分別設(shè)置為score和member,系統(tǒng)掃描第一個(gè)元素判斷是否超時(shí),具體如下圖所示

實(shí)現(xiàn)一

package?com.rjzheng.delay4;
import?java.util.Calendar;
import?java.util.Set;
import?redis.clients.jedis.Jedis;
import?redis.clients.jedis.JedisPool;
import?redis.clients.jedis.Tuple;
public?class?AppTest
{
?private?static?final?String?ADDR?=?"127.0.0.1";
?private?static?final?int?PORT?=?6379;
?private?static?JedisPool?jedisPool?=?new?JedisPool(ADDR,?PORT);
?public?static?Jedis?getJedis()
??
{
???return?jedisPool.getResource();
??}
??//生產(chǎn)者,生成5個(gè)訂單放進(jìn)去
?public?void?productionDelayMessage()
??
{
???for(int?i?=?0;?i?5;?i++)
???{
????//延遲3秒
????Calendar?cal1?=?Calendar.getInstance();
????cal1.add(Calendar.SECOND,?3);
????int?second3later?=?(int)(cal1.getTimeInMillis()?/?1000);
????AppTest.getJedis().zadd("OrderId",?second3later,?"OID0000001"?+?i);
????System.out.println(System.currentTimeMillis()?+?"ms:redis生成了一個(gè)訂單任務(wù):訂單ID為"?+?"OID0000001"?+?i);
???}
??}
??//消費(fèi)者,取訂單
?public?void?consumerDelayMessage()
?
{
??Jedis?jedis?=?AppTest.getJedis();
??while(true)
??{
???Set??items?=?jedis.zrangeWithScores("OrderId",?0,?1);
???if(items?==?null?||?items.isEmpty())
???{
????System.out.println("當(dāng)前沒有等待的任務(wù)");
????try
????{
?????Thread.sleep(500);
????}
????catch(InterruptedException?e)
????{
?????//?TODO?Auto-generated?catch?block
?????e.printStackTrace();
????}
????continue;
???}
???int?score?=?(int)((Tuple)?items.toArray()[0]).getScore();
???Calendar?cal?=?Calendar.getInstance();
???int?nowSecond?=?(int)(cal.getTimeInMillis()?/?1000);
???if(nowSecond?>=?score)
???{
????String?orderId?=?((Tuple)?items.toArray()[0]).getElement();
????jedis.zrem("OrderId",?orderId);
????System.out.println(System.currentTimeMillis()?+?"ms:redis消費(fèi)了一個(gè)任務(wù):消費(fèi)的訂單OrderId為"?+?orderId);
???}
??}
?}
?public?static?void?main(String[]?args)
?
{
??AppTest?appTest?=?new?AppTest();
??appTest.productionDelayMessage();
??appTest.consumerDelayMessage();
?}
}

此時(shí)對(duì)應(yīng)輸出如下

可以看到,幾乎都是3秒之后,消費(fèi)訂單。

然而,這一版存在一個(gè)致命的硬傷,在高并發(fā)條件下,多消費(fèi)者會(huì)取到同一個(gè)訂單號(hào),我們上測(cè)試代碼ThreadTest

package?com.rjzheng.delay4;
import?java.util.concurrent.CountDownLatch;
public?class?ThreadTest
{
?private?static?final?int?threadNum?=?10;
?private?static?CountDownLatch?cdl?=?newCountDownLatch(threadNum);
?static?class?DelayMessage?implements?Runnable
?
{
??public?void?run()
??
{
???try
???{
????cdl.await();
???}
???catch(InterruptedException?e)
???{
????//?TODO?Auto-generated?catch?block
????e.printStackTrace();
???}
???AppTest?appTest?=?new?AppTest();
???appTest.consumerDelayMessage();
??}
?}
?public?static?void?main(String[]?args)
?
{
??AppTest?appTest?=?new?AppTest();
??appTest.productionDelayMessage();
??for(int?i?=?0;?i???{
???new?Thread(new?DelayMessage()).start();
???cdl.countDown();
??}
?}
}

輸出如下所示

顯然,出現(xiàn)了多個(gè)線程消費(fèi)同一個(gè)資源的情況。

解決方案

(1)用分布式鎖,但是用分布式鎖,性能下降了,該方案不細(xì)說。

(2)對(duì)ZREM的返回值進(jìn)行判斷,只有大于0的時(shí)候,才消費(fèi)數(shù)據(jù),于是將consumerDelayMessage()方法里的

if(nowSecond?>=?score)
{
?String?orderId?=?((Tuple)?items.toArray()[0]).getElement();
?jedis.zrem("OrderId",?orderId);
?System.out.println(System.currentTimeMillis()?+?"ms:redis消費(fèi)了一個(gè)任務(wù):消費(fèi)的訂單OrderId為"?+?orderId);
}

修改為

if(nowSecond?>=?score)
{
?String?orderId?=?((Tuple)?items.toArray()[0]).getElement();
?Long?num?=?jedis.zrem("OrderId",?orderId);
?if(num?!=?null?&&?num?>?0)
?{
??System.out.println(System.currentTimeMillis()?+?"ms:redis消費(fèi)了一個(gè)任務(wù):消費(fèi)的訂單OrderId為"?+?orderId);
?}
}

在這種修改后,重新運(yùn)行ThreadTest類,發(fā)現(xiàn)輸出正常了

思路二

該方案使用redis的Keyspace Notifications,中文翻譯就是鍵空間機(jī)制,就是利用該機(jī)制可以在key失效之后,提供一個(gè)回調(diào),實(shí)際上是redis會(huì)給客戶端發(fā)送一個(gè)消息。是需要redis版本2.8以上。

實(shí)現(xiàn)二

在redis.conf中,加入一條配置

notify-keyspace-events?Ex

運(yùn)行代碼如下

package?com.rjzheng.delay5;
import?redis.clients.jedis.Jedis;
import?redis.clients.jedis.JedisPool;
import?redis.clients.jedis.JedisPubSub;
public?class?RedisTest
{
?private?static?final?String?ADDR?=?"127.0.0.1";
?private?static?final?int?PORT?=?6379;
?private?static?JedisPool?jedis?=?new?JedisPool(ADDR,?PORT);
?private?static?RedisSub?sub?=?new?RedisSub();
?public?static?void?init()
?
{
??new?Thread(new?Runnable()
??{
???public?void?run()
???
{
????jedis.getResource().subscribe(sub,?"__keyevent@0__:expired");
???}
??}).start();
?}
?public?static?void?main(String[]?args)?throws?InterruptedException
?
{
??init();
??for(int?i?=?0;?i?10;?i++)
??{
???String?orderId?=?"OID000000"?+?i;
???jedis.getResource().setex(orderId,?3,?orderId);
???System.out.println(System.currentTimeMillis()?+?"ms:"?+?orderId?+?"訂單生成");
??}
?}
?static?class?RedisSub?extends?JedisPubSub
?
{?'http://www.jobbole.com/members/wx610506454'?>?@Override?
??public?void?onMessage(String?channel,?String?message)
??
{
???System.out.println(System.currentTimeMillis()?+?"ms:"?+?message?+?"訂單取消");
??}
?}
}

輸出如下

可以明顯看到3秒過后,訂單取消了

ps:redis的pub/sub機(jī)制存在一個(gè)硬傷,官網(wǎng)內(nèi)容如下

原:

Because Redis Pub/Sub is fire and forget currently there is no way to use this feature if your application demands reliable notification of events, that is, if your Pub/Sub client disconnects, and reconnects later, all the events delivered during the time the client was disconnected are lost.

翻:

Redis的發(fā)布/訂閱目前是即發(fā)即棄(fire and forget)模式的,因此無法實(shí)現(xiàn)事件的可靠通知。也就是說,如果發(fā)布/訂閱的客戶端斷鏈之后又重連,則在客戶端斷鏈期間的所有事件都丟失了。

因此,方案二不是太推薦。當(dāng)然,如果你對(duì)可靠性要求不高,可以使用。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 由于使用Redis作為消息通道,消息都存儲(chǔ)在Redis中。如果發(fā)送程序或者任務(wù)處理程序掛了,重啟之后,還有重新處理數(shù)據(jù)的可能性。
  • 做集群擴(kuò)展相當(dāng)方便
  • 時(shí)間準(zhǔn)確度高

缺點(diǎn):

  • 需要額外進(jìn)行redis維護(hù)

(5)使用消息隊(duì)列

我們可以采用rabbitMQ的延時(shí)隊(duì)列。RabbitMQ具有以下兩個(gè)特性,可以實(shí)現(xiàn)延遲隊(duì)列

RabbitMQ可以針對(duì)Queue和Message設(shè)置?x-message-tt,來控制消息的生存時(shí)間,如果超時(shí),則消息變?yōu)?code style="margin-right: 2px;margin-left: 2px;padding: 2px 4px;outline: 0px;font-size: 14px;border-radius: 4px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;">dead letter

lRabbitMQ的Queue可以配置x-dead-letter-exchange?和x-dead-letter-routing-key(可選)兩個(gè)參數(shù),用來控制隊(duì)列內(nèi)出現(xiàn)了deadletter,則按照這兩個(gè)參數(shù)重新路由。

結(jié)合以上兩個(gè)特性,就可以模擬出延遲消息的功能,具體的,我改天再寫一篇文章,這里再講下去,篇幅太長(zhǎng)。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 高效,可以利用rabbitmq的分布式特性輕易的進(jìn)行橫向擴(kuò)展,消息支持持久化增加了可靠性。

缺點(diǎn):

  • 本身的易用度要依賴于rabbitMq的運(yùn)維.因?yàn)橐胷abbitMq,所以復(fù)雜度和成本變高

程序汪資料鏈接

程序汪接的7個(gè)私活都在這里,經(jīng)驗(yàn)整理

Java項(xiàng)目分享 最新整理全集,找項(xiàng)目不累啦 06版

堪稱神級(jí)的Spring Boot手冊(cè),從基礎(chǔ)入門到實(shí)戰(zhàn)進(jìn)階

臥槽!字節(jié)跳動(dòng)《算法中文手冊(cè)》火了,完整版 PDF 開放下載!

臥槽!阿里大佬總結(jié)的《圖解Java》火了,完整版PDF開放下載!

字節(jié)跳動(dòng)總結(jié)的設(shè)計(jì)模式 PDF 火了,完整版開放下載!

歡迎添加程序汪個(gè)人微信 itwang009? 進(jìn)粉絲群或圍觀朋友圈

瀏覽 39
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 综合激情五月婷婷| 日韩亚洲在线观看| 六月综合激情| www日本色| 免费黄色小视频| 天天操天天拍| 在线永久看片免费的视频| 91超碰人人操| www.豆花视频成人版| 亚洲ww国产a大作| 特级西西444www| 淫荡97| 国产精品123| 黄色A片网站| 欧美色999| 欧美高清视频| 国产97在线观看| 免费无码网站| 亚洲精品成人AV| 嗯啊在线视频| 久久网一区| 亚洲精品国产精品乱玛不99| 无码精品一区| 亚洲三级网站| 日韩视频在线观看免费| 色哟哟av| ThePorn人妻白浆| 黄色网址在线免费观看| 91吴梦梦一区二区传媒| 中文字幕黄色片| 国产c区| 日韩av无码电影| 日韩精品人妻| 少妇搡BBBB搡BBB搡毛片| 91大神免费在线观看| 免费在线黄片| 人妻人人爽| 少妇大战28厘米黑人| 亚洲高清无码专区| 成片免费观看视频大全| 九色PORNY9l原创自拍| 天天做夜夜操| 国产又爽又黄免费网站在线| 中文在线资源| 黄网站在线播放| 黑人AV在线观看| 婷婷国产成人精品视频| 日韩精品小电影| 中文字幕36页| 日逼免费| 国产精品女人777777| 国产一级A片免费播放| 亚洲中文字幕日本| 1024手机在线观看| 久久成人18免费网站波多野结衣| 女同一区二区三区| 亚洲欧美激情视频| 日韩人妻无码网站| 操一操干一干| 天天噜天天操| 99久久久国产精品免费蜜臀| 青青草免费福利视频| 成人操B视频在线观看| 人妻japanesewoman| 亚洲国产成人精品女人久久久| 狠狠狠干| 日韩在线一区二区| 亚洲第一成人网站| 色婷婷视频| 高清无码免费视频| 日韩一级片| 欧美成人A片在线观看| 超碰69| 日逼网址| 在线免费观看黄色视频| 91成人情欲影视网| 国产欧美一区在线看| 人人妻人人澡人人爽久久con| 人人妻人人澡人人爽久久con| 大鸡巴午夜爽视频电影| 在线不卡免费Av| 狠狠干高清成人二区三区| 日皮做爱视频网站| 天天日毛片| 在线免费人成视频| 新超碰在线观看| 18禁裸体美女| 粉嫩小泬BBBB免费看| 国产福利美女网站| 日韩无码A级片| 中文字幕在线播放av| 欧美日韩在线观看一区二区三区| 青草久久久久| 另类TS人妖一区二区三区| 国产我不卡| 日本aaaa片| www.亚洲视频| 亚洲一级视频在线观看| 亚洲无码视频免费| ThePorn日本无码| 国产又爽又黄免费视频免费| 亚洲第一天堂| 伊人亚洲| 天天澡天天爽日日AV| www伦理片-韩国三级三级三级a三级-成人AV | 色情片在线播放| 爱搞搞就要爱搞搞| 国产精品久免费的黄网站| 美女网站视频黄| 欧美日韩中文字幕视频| 欧美成年人视频| 操逼福利视频| 色天使亚洲| 色婷婷AV一区二区三区软件| 欧美一二三区| 无码内射视频| 翔田千里高潮90分钟| 国产精品一品二区三区的使用体验 | 久久成人福利| 黄片视频国产| 亚欧洲精品在线视频免费观看 | 一级A片免费视频| 久久综合电影| AV高清无码| 操逼视频免费| 国产精品一级二级三级| 一区二区三区高清不卡| 熟女内射| 国产精品theporn| 亚洲高清无码免费观看| 黄片视频在线免费观看| 五月综合激情| 日韩无码中文字幕| 日韩va亚洲va欧美va高清| 亚洲国产成人精品女人久久| 四房五月婷婷| 牛牛精品一区| 亚洲精品成人av无码| 亲子乱AⅤ一区二区三区| 久久久久久网站| 驲韩在线视频免费观看| 作爱免费视频| 高潮毛片| 2014av天堂网| 亚洲AV无码成人| 国产乱视频| 欧美一区二区在线观看| 综合天堂网| 国产成人精品国内自产拍免费看| 中文字幕一级A片高清免| 91大神在线观看入口| 熟睡侵犯の奶水授乳在线| 久草加勒比| 国产综合视频| av逼网| 天天干天天在线观看| 亚洲黄v| 伊人99re| 色色色热热热| 99热免费在线| 日韩无码网| 黑人中文字幕| 少妇久久久久久久久久| 国产视频黄| 操逼福利| 狠狠网| 一级黄色电影A片| 久久久久久黄片| 欧美成人电影在线观看| 青青草中文字幕| 亚洲精品456| 看毛片网站| 久久大伊人| 无码AV电影在线观看| 秋霞久久| 国产色情在线观看| 国内操逼视频| 激情视频免费看| 亚洲色图15| 日韩在线看片| 欧美成人三级在线观看| 一区二区无码视频| 欧美A一| 日韩av免费在线| 亚洲区一| 欧美强开小嫩苞| 欧美性爱在线| 大鸡巴操B视频| 黄色无码在线观看| 亚洲欧美国产视频| 天天干夜夜骑| 色男天堂| 亚洲秘无码一区二区三区电影 | 中文字幕在线资源| 国产视频一区二区在线| 国产主播专区| 91免费成人电影| 中文字幕在线观看免费高清完整版在线观看 | 精品一区二区久久久久久久网站| 搡BBBB搡BBB搡五十| 九热大香蕉| 国产精品一区二区三区不卡| 亚洲字幕在线观看| 国产白丝在线观看| 翔田千里无码在线观看| 精品免费一区二区三区四区| 影音先锋色av| www.狠狠| 成人黄色大香蕉| 国产一级aa| 日韩一级片视频| 乌克兰xxxx| 日韩A片免费观看| 国产成人无码精品久在线观看| 在线观看亚洲天堂| 51XX嘿嘿午夜| 黄色香蕉视频| 一级av在线| 中文字幕有码在线观看| 久久久精品无码| 欧美日韩在线视频一区| 日本超碰在线| 2025最新国产精品每日更新| 9一区二区三区| 中文字幕一区二区三区日本在线| 日韩高清不卡| 无码人妻丰满熟妇区毛片蜜桃麻豆 | 思思热在线视频精品| 北京熟妇搡BBBB搡BBBB| 一级片在线免费观看| AV三级无码| 内射网站在线看| av资源免费| 91精东传媒果冻传媒| 蜜桃在线无码| 老婆被黑人杂交呻吟视频| 双飞少妇| 国产毛片18水真多18精品| 91亚洲精品国偷拍自产在线观看| 亚洲AV毛片| 99精品六月婷婷综合在线| 人人干人妻| 亚洲图片在线观看| caoporen| 亚洲成人影音先锋| 337p西西人体大胆瓣开下部 | 欧美又粗又长| 婷婷色在线| 日本性欧美| 国产成人免费视频在线| 欧美三区| 日本親子亂子倫XXXX| 91探花秘在线播放偷拍| 男女啪啪免费| 超碰永久| 黄色特级毛片| 国产色婷婷| 久久免费视频3| 躁BBB躁BBB躁BBBBB乃| 国产熟妇码视频户外直播| 久草高清视频| 精品免费国产一区二区三区四区| 美女三片| 亚洲精品一级| 日韩成人无码电影网站| 欧美肉大捧一进一出小说| 99视频免费观看| 大香蕉尹人在线视频| 特级西西人体444www高清大胆 | 久久视频免费观看| 怡春院日韩| 蜜桃人妻无码| 成人午夜毛片| 国产精品一麻了麻了| 亚洲无码精品专区| 中文字幕在线观看网站| 国产视频精品一区二区三区| 亚洲男人的天堂AV| 中日韩一级片| 国产黄色电影在线| 艳妇乳肉豪妇荡乳AV无码福利| 日本免费黄色电影| 翔田千里被操120分钟| 翔田千里无码在线观看| 久久嫩草精品| 乱伦一区二区三区| 黄色免费无码| 国产精品国产精品国产专区不片| 中文字幕++中文字幕明步| 久碰人妻人妻人妻| 亚洲最大福利视频| 成人三级电影| AV天堂资源| 午夜日逼网站| 五月天婷婷av| 日韩性AV| 国产豆花视频| 中文字幕日韩精品人妻| 波多野结衣国产区42部| 五月天福利视频| 综合视频一区| 日本一本不卡| 婷婷激情丁香五月天| AV福利在线观看| www.三级| 欧美在线一级片| 玖玖色综合| 麻豆蜜桃91无码| 免费A片观看| 国产人国产视频成人免费观看… | 中文字幕日韩av| 11孩岁女精品A片BBB| 久久黄色视频免费观看| 欧美天天干| 黄色国产网站| 精品国产国产没封| 日韩一级在线免费观看| 国产成人小视频| 97免费在线视频| 国产h视频| 8050午夜一级免费| 高清无码黄| 最新福利视频| 91无码成人| 日日干干| a无码视频在线观看| 国产在线激情视频| 免费在线观看一区| 亚洲日韩久久| 国产又爽又黄视频在线看| 成人免费观看视频| 欧美老妇另类BBwBBw| 国产h视频在线观看| www.大香蕉伊人| 精品成人在线| AV无码人妻| 操逼在线免费观看| 日本少妇性爱视频| 日韩久久免费视频| 国产a毛一级,a毛一级| 五十路AV| 久热中文在线观看精品视频| 亚洲小视频在线| 伊人久久久影视大全| 二区三区在线| 日韩AⅤ无码一区二区三区| 操逼视频在线看| 丰满人妻一区二区三区精品高清 | 免费一级黄色片| 一级a免一级a做片免费| 久久一级片| 黄片免费高清| 亚洲无码人妻| 成人性爱在线播放| 黄色视频在线免费观看高清视频| 猫咪AV大香蕉| 久久成人综合网| 操逼com| 国产g蝌蚪| 天天草天天| 欧美亚洲小说| 91麻豆影院| 怡红院成人在线| 五月婷婷在线播放| 秋霞丝鲁片一区二区三区手机在绒免| av在线精品| 亚洲成人在线观看视频| 日韩性爱在线| 秋霞无码| AV三级片网站| 日韩av免费看| 北条麻妃九九九精品视频免费观看| 豆花视频成人精品视频| 十八无码成人免费网站| 成人网站在线免费看| 亚洲在线a| 亚洲AAA| 色色一区二区| 天天操天天谢| 极品AV| www.黄色av| 黃色一级A片一級片| 亚洲xx网| 国产黄色AV| 亚洲女人视频| 北条麻妃精品青青久久价格| 91人人妻人人澡人人爽| 欧美视频在线观看一区| 天天干夜夜骑| www污| 熊猫视频91| 奇米一区| 日本一区二区视频在线观看| 臭小子啊轻点灬太粗太长了的视频 | 亚洲午夜精品视频| 在线观看成人三级片| 亚洲黄色免费在线观看| 成人性爱视频免费观看| 免费一区二区三区四区| 欧美亚洲自拍偷拍| 羞羞AV| 91色婷婷综合久久中文字幕二区| 另类国产| 蜜桃91精品秘入口内裤| 逼特逼视频在线| 欧美无遮挡| 日韩人妻一区| 伊人婷婷大香蕉| 国产欧美一区二区三区视频| 成人高清无码视频| 国产成人精品一区二区三区四区| 日韩高清无码中文字幕| 3D动漫精品一区二区在线播放免费| 一级色色片| 国产在线观看无码免费视频| 国产在线精品自拍| 97福利视频| 色屁屁草草影院ccyycom| 操15p| 欧美性爱视频免费看| 国产精品每日更新| 亚洲高清无码久久| 精品一区二区三区四区视频| 无码人妻蜜桃| 亚洲在线| 粉嫩av懂色av蜜臀av分享| 黄色成人大片| 五月天激情视频| 一区二区三区四区在线播放| 日本天堂网站| www深夜成人a√在线| 人人爽久久涩噜噜噜网站| 欧美精品欧美精品系列| 亚洲骚货| 无码颜射| 欧美乱欲视频| 欧美黄片在线免费观看| 大香蕉欧美在线| 大鸡巴操小逼视频| 成人免费三级片| 91精品在线免费观看| 国产黄色片免费| 小h片在线观看| 奇米影视77777| 精品免费黄色视频| 久久久国产精品视频| 亚洲免费观看高清完整版在va线观看 | 日日综合网| 国产第二页| Japanese在线观看| 日本黄在线看| 黄片视频免费| 成人看片黄a免费看视频| 亚洲黄色在线观看视频| 久久久久久97电影院电影院无码 | 色婷婷激情五月天| 国产永久免费| 97精品欧美91久久久久久久| JIZZJIZZ国产精品喷水| 国产美女操逼| 99无码人妻| 丁香五月成人网| 日本操逼在线播放| 欧美成人三级在线观看| 91人妻人人澡人人爽人人玩| 国产毛片欧美毛片高潮| 男人的天堂视频| 男人天堂久久| 嘿嘿午夜影院| 伊人久久综合| 无码91| 无码不卡av| 午夜成人一区二区| 天天操天天干天天日| 少妇白洁视频| 三级爱爱| 女人高潮天天躁夜夜躁| 女人久久| 无码视频韩国| 亚洲黄色在线观看视频| 狠狠躁日日躁夜夜躁A片视频| 91香蕉视频免费在线观看| 成人水蜜桃| 成人超碰在线| AV网站免费看| 男人视频网| 国产伦子伦一级A片免费看老牛| 中文字幕乱码亚洲无线码在线日噜噜 | 免费网站观看www在线观| 中文字幕无码A片久久| 日韩AV免费| 内射久久| 日韩无码免费电影| 艹逼中文字幕| 黄片免费网站| 自拍偷拍欧美| 成人无码日韩精品| 999精品| 亚洲综合免费观看高清完整版在线| 一本色道久久综合熟妇| 911香蕉视频| 97婷婷五月天| 欧美性爱天天| 毛片国产| 91成人电影在线| 日日搔av一区二区三区| 特黄视频在线观看| av福利电影在线| 亚洲中文字幕免费观看| 中文字幕福利视频| 激情播播网| 色老板在线精品免费观看| 亚洲在线中文字幕| 激情开心五月天| 中国老女人性爱视频| 在线无.码| 人人爱人人插高清| 欧美成人视频在线观看| 囯产精品久久久久久久久| 欧美黄色片网站| 激情五月天开心网| 淫荡97| 无码在线免费| 91人妻无码精品一区二区| 欧美拍拍| 国产精品99精品| 午夜成人一区二区| 日韩精品成人专区无码| 午夜黄色电影| 国产棈品久久久久久久久久九秃| 黃色一級片黃色一級片尖叫声-百度-百 | 丝瓜av| 国产ts| 国产女人高潮的AV毛片| 老司机AV91| 免费黄色在线视频| 亚洲免费小视频| 成人无码久久| 亚洲三级无码在线| 成年人免费看视频| 香蕉国产AV| 日韩精品无码一区二区| 无码免费视频在线观看| 亚洲视频黄色| 北条麻妃在线一区二区| 霸道总裁雷总各种姿势白浆爱情岛论坛 | 香蕉三级片| 人妻精品久久久久中文字幕69| 在线性视频| 18禁成人A∨片| 精品一区二区三区蜜桃臀www | 91人妻日韩人妻无码专区精品| 成人自拍视频| 久久爆乳一区二区三区| 国产乱子伦视频国产印度| 日韩中文字幕无码中字字幕| 色播av| 成人做爰100片免费着| 国产g蝌蚪| 久久大香蕉| 日韩欧美国产高清91| 亚洲青青草| 欧美成人精品在线| 欧洲亚洲在线| 女生自慰网站免费| 天天射中文| 国产精品啪啪啪| 欧美操逼视频| 精品视频一区二区三区| 97超碰人人操| 欧美亚洲日韩中文字幕| 免费人成网站| 91九色网| 久久天天拍| 成人欧美一区二区三区在线观看 | 豆花网无码视频观看| 在线免费观看黄色视频| 91香蕉在线| 久久婷婷国产| 国产一级a毛一级a做免费高清视频| 精品亚洲无码视频| 久久久久久免费毛片精品| 色视频免费在线观看| 免费A片在线| 影音先锋女人资源| 日韩无码高清免费视频| 日欧美美女逼| 天堂一区二区| 伊人婷婷| 欧美日批| 麻豆视频一区二区| 日韩中文字幕在线观看视频| 最近中文字幕在线中文字幕7| 五月天久久久久| 国产高潮又爽又无遮挡又免费| 内射一区二区三区| 日本一区二区三区四区在线观看| 欧美久久电影| 大屌探花| 欧美天堂成人三级| 日韩国产欧美| 欧美精品99久久久| 成人三级在线观看| 97A片在线观看播放| 日本特级黄A片免费观看| 亚洲激情黄色| 国产又爽又黄免费网站在线| 777超碰| 国产在线高清| 久久精品五月天| 中文字幕+乱码+中文乱码视频在线观看 | AV色站| 天天想夜夜操| 国产亚洲欧美精品综合在线| 国产成人精品一区二| 91超碰在线播放| 亚洲有码中文字幕| 亚洲AV无码成人精品区久| 国产无码自拍偷拍| av老鸭窝| 精品国产精品三级精品AV网址 | www.高清无码| 久久久久成人片免费观看蜜芽| 国产午夜在线| 大香蕉手机在线视频| 国产欧美精品一区二区色综合| 国产一级操逼视频| 天天想夜夜操| 任我操在线视频| 五月丁香婷婷综合网| 亚洲av偷拍| 成人大片在线观看| 成人A片免费观看| 天码人妻一区二区三区在线看| 内射熟妇| 成人网站无码| 97色色婷婷| 欧美3p视频| 久久大鸡巴| 日韩福利网| 无码人妻丰满熟妇区蜜桃| 精品成人久久| 亚洲AV无码精品久久一区二区 | 亚洲成人一| 五月婷婷中文版| 国产一区视频18| 国产99久久久精品| 99都是精品| 蜜芽成人在线视频| 7777精品伊人久久7777| 青青操色| 精品一区二区三区无码| 国产高清无码免费在线观看| 五月婷综合| 中文字幕36页| 国产亲子乱婬一级A片借种| A片视频播放| 亚洲AV无码国产精品久久不卡 | 四虎看片| 日本69AV| 亚洲黄色免费观看| 黄色三级av| 少妇厨房愉情理伦BD在线观看| 91干逼| 色婷婷五月天在线观看| 午夜福利91| 亚洲精品成AV人片天堂无码| 韩国精品在线| а天堂中文在线资源| 青草无码视频| 国产AⅤ爽aV久久久久成人| 乱伦视频网站| 五月综合色| 91精品久久人妻一区二区夜夜夜| 亚洲精品影院| 亚洲日韩一区| 免费AV成人| A级黄色网| 丁香五月婷婷综合网| 午夜老湿机| 另类老妇奶性生BBwBBw偷拍| 精品无码AV一区二区三区| 久久国产精品精品国产色婷婷 | 一级a片免费| 97国产精品久久| www.97色| 三个黑人猛躁我一晚上| 手机成人在线视频| 91精品国产综合久久蜜臀使用方法| 久草新在线| 97久久精品国产熟妇高清网| 中文字幕毛片| 你懂的在线视频| 亚洲欧美熟妇久久久久久久久 | 日韩成人一级片| 求欧美精品网址| 亚洲黄色一区| 内射久久| 国精产品一区一区三区| 三级片在线看| av大香蕉| 性色a| av在线观看网站| 中文字幕乱码中文乱码图片| 久久国产精品99久久人人澡 | 久久综合在线| 一级黄色在线| 色综合综合色| 欧美一级免费| 殴美老妇BBBBBBBBB| 狠狠久久| 久久99久久视频| 亚洲一区黄色| 在线免费观看成人网站| 男人天堂免费视频| 撒尿BBw搡BBwBBw| 亚洲综合在线网| 久久草在线| 天天爽日日澡AAAA片| 亚洲AV无码成人精品区天堂小说| 中文无码观看| 色五月天导航| 嫩BBB槡BBBB槡BBBB二一| 欧洲三级网观看| 艹逼视频在线观看| 91精品国产aⅴ一区二区| 黄色一级片网站| 色婷婷丁香五月天| 亚洲天堂在线视频| 欧美aaa| 黄色片亚洲| 成人毛片av| 国产亚洲91| 无码爱爱视频| 日韩综合一区| 午夜3D动漫AV| 开心五月婷| 啊啊啊啊av| 色色影音先锋| 亚洲精品无码中文字幕| a在线免费观看| 国产精品一二三区| 色玖玖| 免费看特别黄色视频| 少妇性受XXXX黑人XYX性爽| 色国产在线| 91免费成人电影| 中文字幕在线有码| 精品无码视频| 五月激情婷婷基地| 95四川乱子伦视频国产| 中文字幕成人影片| 26uuu亚洲| 国产色情网站| 欧美一区二区无码视频| 影音先锋无码AV| 五月丁香人妻| 人妻少妇精品无码| 日本三区| 天天色天天干天天日| AⅤ中文字幕在线免费观看| 女人的天堂网| 91免费福利视频| 精品国产偷拍| 久久午夜无码鲁丝片午夜精| AV黄色| 亚洲高清视频一区| 东京热日韩无码| www.日批| 精品欧美一区二区精品久久| 大香蕉视频在线观看| 国产精品啪啪啪| 天堂AV网站| 伊人69| 久草新在线| 亚洲天堂视频在线观看| 久热这里| 国产久久久久久久久久| 午夜性爱AV| 青青草免费公开视频| 日本高清版色视频| 思思热在线视频精品| 日韩精品一区在线| 伊人成人大香蕉| 国产大鸡巴| 天天夜夜爽| 午夜8050| 亚洲日本黄色视频| 成人性爱AV| 日韩精品一区二区三区四区 | 91蝌蚪丨人妻丨丝袜| 欧美不卡在线播放| 日韩porn| 少妇做爱| 精品婷婷| 2026无码视频| 超碰人人人人人人人人| 五月天乱伦小说| 久久久久国产视频| 人人操在线公开| 波多野吉衣中文字幕| 久久久久一区| 中文字幕av无码| 欧美一区二区三区激情| 操鸡视频在线观看| 91探花秘在线播放偷拍| 福利视频网站| 天天爽夜夜爽AA片免费| 69av网站| 蜜桃视频一区二区三区四区使用方法| 成人免费无码婬片在线| 操逼电影免费| 国产21区| 伊人成人大香蕉| 国产一区二区三区在线| 日韩v亚洲| 97久久一区二区| 欧美美穴| 成人精品网| 日韩欧美一区在线| 97人妻人人揉人人躁人人| 黄色片免费观看| 麻豆蜜桃91无码| 青青草原视频在线| 人妻日韩| 久久久无码精品亚洲日韩男男| 九九九av| 亚洲熟妇无码| 在线观看免费黄片| 中文字幕无码Av在线| 久久草在线播放| h网站在线观看| 日韩一级中文字幕| 视频你懂的| 国产一区二区三区免费视频| 高清中字无码| 九九久久精品视频| 亚洲成人观看| A片在线免费观看| 无码在线看| 中文字幕你懂的| 操B在线| 另类综合激情| 日本视频一区二区| 91九九| 不卡无码av| 日韩毛片一级| 9I成人免费版| 五月丁香亚洲综合| 成人AV中文字幕| 欧美黄色一级视频| 最新av网| 日韩人妻码一区二区三区| 国产视频中文字幕| 精品国产AV鲁一鲁一区| 色乱视频| 国产激情小视频| 亚洲无码一区二区三区蜜桃| 国产精品成人免费视频| 婷婷五月在线视频| 8050午| 三级午夜在线无码| 国产激情AV| av老鸭窝| 99久久99九九九99九他书对| 懂色Av| 一区二区三区在线视频观看| 成人精品久久| 国产又粗又长又硬黄色一级片| 亚洲色图五月天| 久久视频免费| 成人在线91| 操女人大逼| 91蝌蚪| 欧美在线日韩在线| 日韩高清无码三级片| 五月丁香| 人人操人人看人人| 69成人无码| 最近中文字幕高清2019中文字幕 | 日批免费视频| 三级免费无限AV| www免费视频| 国产欧美日本| 亚洲激情精品| 久久色婷婷| 91成人影片| 美女网站永久免费观看| 久久久久免费| 亚洲蜜桃av一区| 国产九九热视频| www.sese| 九月婷婷综合| 欧美黄色录像| 色五月婷婷AV| 久久天堂AV综合合色蜜桃网| 99视频内射三四| 午夜激情操一操| 免费操逼视频在线观看| 有码在线播放|