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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Springboot定时任务原理及如何动态创建定时任务

發布時間:2025/3/8 javascript 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Springboot定时任务原理及如何动态创建定时任务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

  上周工作遇到了一個需求,同步多個省份銷號數據,解綁微信粉絲。分省定時將銷號數據放到SFTP服務器上,我需要開發定時任務去解析文件。因為是多省份,服務器、文件名規則、數據規則都不一定,所以要做成可配置是有一定難度的。數據規則這塊必須強烈要求統一,服務器、文件名規則都可以從配置中心去讀。每新增一個省份的配置,后臺感知到后,動態生成定時任務。

二、Springboot引入定時任務核心配置

@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Import(SchedulingConfiguration.class) @Documented public @interface EnableScheduling {}@Configuration @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public class SchedulingConfiguration {@Bean(name = TaskManagementConfigUtils.SCHEDULED_ANNOTATION_PROCESSOR_BEAN_NAME)@Role(BeanDefinition.ROLE_INFRASTRUCTURE)public ScheduledAnnotationBeanPostProcessor scheduledAnnotationProcessor() {return new ScheduledAnnotationBeanPostProcessor();}}

  接下來主要看一下這個核心后置處理器:ScheduledAnnotationBeanPostProcessor 。

@Override public Object postProcessAfterInitialization(Object bean, String beanName) {if (bean instanceof AopInfrastructureBean || bean instanceof TaskScheduler ||bean instanceof ScheduledExecutorService) {// Ignore AOP infrastructure such as scoped proxies.return bean;}Class<?> targetClass = AopProxyUtils.ultimateTargetClass(bean); if (!this.nonAnnotatedClasses.contains(targetClass)) { Map<Method, Set<Scheduled>> annotatedMethods = MethodIntrospector.selectMethods(targetClass, (MethodIntrospector.MetadataLookup<Set<Scheduled>>) method -> { Set<Scheduled> scheduledMethods = AnnotatedElementUtils.getMergedRepeatableAnnotations( method, Scheduled.class, Schedules.class); return (!scheduledMethods.isEmpty() ? scheduledMethods : null); }); if (annotatedMethods.isEmpty()) { this.nonAnnotatedClasses.add(targetClass); if (logger.isTraceEnabled()) { logger.trace("No @Scheduled annotations found on bean class: " + targetClass); } } else { // Non-empty set of methods annotatedMethods.forEach((method, scheduledMethods) -> scheduledMethods.forEach(scheduled -> processScheduled(scheduled, method, bean))); if (logger.isTraceEnabled()) { logger.trace(annotatedMethods.size() + " @Scheduled methods processed on bean '" + beanName + "': " + annotatedMethods); } } } return bean; }

  1、處理Scheduled注解,通過ScheduledTaskRegistrar注冊定時任務。

private void finishRegistration() {if (this.scheduler != null) {this.registrar.setScheduler(this.scheduler);}if (this.beanFactory instanceof ListableBeanFactory) {Map<String, SchedulingConfigurer> beans =((ListableBeanFactory) this.beanFactory).getBeansOfType(SchedulingConfigurer.class);List<SchedulingConfigurer> configurers = new ArrayList<>(beans.values());AnnotationAwareOrderComparator.sort(configurers);for (SchedulingConfigurer configurer : configurers) {configurer.configureTasks(this.registrar);}}if (this.registrar.hasTasks() && this.registrar.getScheduler() == null) {Assert.state(this.beanFactory != null, "BeanFactory must be set to find scheduler by type");try {// Search for TaskScheduler bean...this.registrar.setTaskScheduler(resolveSchedulerBean(this.beanFactory, TaskScheduler.class, false));}catch (NoUniqueBeanDefinitionException ex) {logger.trace("Could not find unique TaskScheduler bean", ex);try {this.registrar.setTaskScheduler(resolveSchedulerBean(this.beanFactory, TaskScheduler.class, true));}catch (NoSuchBeanDefinitionException ex2) {if (logger.isInfoEnabled()) {logger.info("More than one TaskScheduler bean exists within the context, and " +"none is named 'taskScheduler'. Mark one of them as primary or name it 'taskScheduler' " +"(possibly as an alias); or implement the SchedulingConfigurer interface and call " +"ScheduledTaskRegistrar#setScheduler explicitly within the configureTasks() callback: " +ex.getBeanNamesFound());}}}catch (NoSuchBeanDefinitionException ex) {logger.trace("Could not find default TaskScheduler bean", ex);// Search for ScheduledExecutorService bean next...try {this.registrar.setScheduler(resolveSchedulerBean(this.beanFactory, ScheduledExecutorService.class, false));}catch (NoUniqueBeanDefinitionException ex2) {logger.trace("Could not find unique ScheduledExecutorService bean", ex2);try {this.registrar.setScheduler(resolveSchedulerBean(this.beanFactory, ScheduledExecutorService.class, true));}catch (NoSuchBeanDefinitionException ex3) {if (logger.isInfoEnabled()) {logger.info("More than one ScheduledExecutorService bean exists within the context, and " +"none is named 'taskScheduler'. Mark one of them as primary or name it 'taskScheduler' " +"(possibly as an alias); or implement the SchedulingConfigurer interface and call " +"ScheduledTaskRegistrar#setScheduler explicitly within the configureTasks() callback: " +ex2.getBeanNamesFound());}}}catch (NoSuchBeanDefinitionException ex2) {logger.trace("Could not find default ScheduledExecutorService bean", ex2);// Giving up -> falling back to default scheduler within the registrar...logger.info("No TaskScheduler/ScheduledExecutorService bean found for scheduled processing");}}}this.registrar.afterPropertiesSet(); }

  1、通過一系列的SchedulingConfigurer動態配置ScheduledTaskRegistrar。

  2、向ScheduledTaskRegistrar注冊一個TaskScheduler(用于對Runnable的任務進行調度,它包含有多種觸發規則)。

  3、registrar.afterPropertiesSet(),在這開始安排所有的定時任務開始執行了。

protected void scheduleTasks() {if (this.taskScheduler == null) {this.localExecutor = Executors.newSingleThreadScheduledExecutor();this.taskScheduler = new ConcurrentTaskScheduler(this.localExecutor);}if (this.triggerTasks != null) {for (TriggerTask task : this.triggerTasks) {addScheduledTask(scheduleTriggerTask(task));}}if (this.cronTasks != null) {for (CronTask task : this.cronTasks) {addScheduledTask(scheduleCronTask(task));}}if (this.fixedRateTasks != null) {for (IntervalTask task : this.fixedRateTasks) {addScheduledTask(scheduleFixedRateTask(task));}}if (this.fixedDelayTasks != null) {for (IntervalTask task : this.fixedDelayTasks) {addScheduledTask(scheduleFixedDelayTask(task));}} }

  1、TriggerTask:動態定時任務。通過Trigger#nextExecutionTime?給定的觸發上下文確定下一個執行時間。

  2、CronTask:動態定時任務,TriggerTask子類。通過cron表達式確定的時間觸發下一個任務執行。

  3、IntervalTask:一定時間延遲之后,周期性執行的任務。

  4、taskScheduler 如果為空,默認是ConcurrentTaskScheduler,并使用默認單線程的ScheduledExecutor。

三、主要看一下CronTask工作原理

ScheduledTaskRegistrar.java @Nullable public ScheduledTask scheduleCronTask(CronTask task) {ScheduledTask scheduledTask = this.unresolvedTasks.remove(task);boolean newTask = false;if (scheduledTask == null) {scheduledTask = new ScheduledTask(task);newTask = true;}if (this.taskScheduler != null) {scheduledTask.future = this.taskScheduler.schedule(task.getRunnable(), task.getTrigger());}else {addCronTask(task);this.unresolvedTasks.put(task, scheduledTask);}return (newTask ? scheduledTask : null); }ConcurrentTaskScheduler.java @Override @Nullable public ScheduledFuture<?> schedule(Runnable task, Trigger trigger) {try {if (this.enterpriseConcurrentScheduler) {return new EnterpriseConcurrentTriggerScheduler().schedule(decorateTask(task, true), trigger);}else {ErrorHandler errorHandler =(this.errorHandler != null ? this.errorHandler : TaskUtils.getDefaultErrorHandler(true));return new ReschedulingRunnable(task, trigger, this.scheduledExecutor, errorHandler).schedule();}}catch (RejectedExecutionException ex) {throw new TaskRejectedException("Executor [" + this.scheduledExecutor + "] did not accept task: " + task, ex);} }ReschedulingRunnable.java @Nullable public ScheduledFuture<?> schedule() {synchronized (this.triggerContextMonitor) {this.scheduledExecutionTime = this.trigger.nextExecutionTime(this.triggerContext);if (this.scheduledExecutionTime == null) {return null;}long initialDelay = this.scheduledExecutionTime.getTime() - System.currentTimeMillis();this.currentFuture = this.executor.schedule(this, initialDelay, TimeUnit.MILLISECONDS);return this;} }private ScheduledFuture<?> obtainCurrentFuture() {Assert.state(this.currentFuture != null, "No scheduled future");return this.currentFuture; }@Override public void run() {Date actualExecutionTime = new Date();super.run();Date completionTime = new Date();synchronized (this.triggerContextMonitor) {Assert.state(this.scheduledExecutionTime != null, "No scheduled execution");this.triggerContext.update(this.scheduledExecutionTime, actualExecutionTime, completionTime);if (!obtainCurrentFuture().isCancelled()) {schedule();}} }

  1、最終將task和trigger都封裝到了ReschedulingRunnable中。

  2、ReschedulingRunnable實現了任務重復調度(schedule方法中調用調度器executor并傳入自身對象,executor會調用run方法,run方法又調用了schedule方法)。

  3、ReschedulingRunnable schedule方法加了同步鎖,只能有一個線程拿到下次執行時間并加入執行器的調度。

  4、不同的ReschedulingRunnable對象之間在線程池夠用的情況下是不會相互影響的,也就是說滿足線程池的條件下,TaskScheduler的schedule方法的多次調用是可以交叉執行的。

ScheduledThreadPoolExecutor.java public ScheduledFuture<?> schedule(Runnable command,long delay,TimeUnit unit) {if (command == null || unit == null)throw new NullPointerException();RunnableScheduledFuture<?> t = decorateTask(command,new ScheduledFutureTask<Void>(command, null,triggerTime(delay, unit)));delayedExecute(t);return t; }private void delayedExecute(RunnableScheduledFuture<?> task) {if (isShutdown())reject(task);else {super.getQueue().add(task);if (isShutdown() &&!canRunInCurrentRunState(task.isPeriodic()) &&remove(task))task.cancel(false);elseensurePrestart();} }

  ScheduledFutureTask 工作原理如下圖所示【太懶了,不想畫圖了,盜圖一張】。

  ?

  1、ScheduledFutureTask會放入優先阻塞隊列:ScheduledThreadPoolExecutor.DelayedWorkQueue(二叉最小堆實現)

  2、上圖中的Thread對象即ThreadPoolExecutor.Worker,實現了Runnable接口

/*** Creates with given first task and thread from ThreadFactory.* @param firstTask the first task (null if none)*/ Worker(Runnable firstTask) {setState(-1); // inhibit interrupts until runWorkerthis.firstTask = firstTask;this.thread = getThreadFactory().newThread(this); }/** Delegates main run loop to outer runWorker */ public void run() {runWorker(this); }

  1、Worker中維護了Thread對象,Thread對象的Runnable實例即Worker自身

  2、ThreadPoolExecutor#addWorker方法中會創建Worker對象,然后拿到Worker中的thread實例并start,這樣就創建了線程池中的一個線程實例

  3、Worker的run方法會調用ThreadPoolExecutor#runWorker方法,這才是任務最終被執行的地方,該方法示意如下

  (1)首先取傳入的task執行,如果task是null,只要該線程池處于運行狀態,就會通過getTask方法從workQueue中取任務。ThreadPoolExecutor的execute方法會在無法產生core線程的時候向  workQueue隊列中offer任務。
getTask方法從隊列中取task的時候會根據相關配置決定是否阻塞和阻塞多久。如果getTask方法結束,返回的是null,runWorker循環結束,執行processWorkerExit方法。
至此,該線程結束自己的使命,從線程池中“消失”。
  (2)在開始執行任務之前,會調用Worker的lock方法,目的是阻止task正在被執行的時候被interrupt,通過調用clearInterruptsForTaskRun方法來保證的(后面可以看一下這個方法),該線程沒有自己的interrupt set了。
  (3)beforeExecute和afterExecute方法用于在執行任務前后執行一些自定義的操作,這兩個方法是空的,留給繼承類去填充功能。
我們可以在beforeExecute方法中拋出異常,這樣task不會被執行,而且在跳出該循環的時候completedAbruptly的值是true,表示the worker died due to user exception,會用decrementWorkerCount調整wc。
  (4)因為Runnable的run方法不能拋出Throwables異常,所以這里重新包裝異常然后拋出,拋出的異常會使當當前線程死掉,可以在afterExecute中對異常做一些處理。
  (5)afterExecute方法也可能拋出異常,也可能使當前線程死掉。

四、動態創建定時任務

  TaskConfiguration 配置類

@Configuration @EnableScheduling @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public class TaskConfiguration {@Bean(name = ScheduledAnnotationBeanPostProcessor.DEFAULT_TASK_SCHEDULER_BEAN_NAME)@Role(BeanDefinition.ROLE_INFRASTRUCTURE)public ScheduledExecutorService scheduledAnnotationProcessor() {return Executors.newScheduledThreadPool(5, new DefaultThreadFactory());}private static class DefaultThreadFactory implements ThreadFactory {private static final AtomicInteger poolNumber = new AtomicInteger(1);private final ThreadGroup group;private final AtomicInteger threadNumber = new AtomicInteger(1);private final String namePrefix;DefaultThreadFactory() {SecurityManager s = System.getSecurityManager();group = (s != null) ? s.getThreadGroup() :Thread.currentThread().getThreadGroup();namePrefix = "pool-" +poolNumber.getAndIncrement() +"-schedule-";}@Overridepublic Thread newThread(Runnable r) {Thread t = new Thread(group, r,namePrefix + threadNumber.getAndIncrement(),0);if (t.isDaemon()) {t.setDaemon(false);}if (t.getPriority() != Thread.NORM_PRIORITY) {t.setPriority(Thread.NORM_PRIORITY);}return t;}} }

  1、保證ConcurrentTaskScheduler不使用默認單線程的ScheduledExecutor,而是corePoolSize=5的線程池

  2、自定義線程池工廠類

  DynamicTask 動態定時任務

@Configuration public class DynamicTask implements SchedulingConfigurer {private static Logger LOGGER = LoggerFactory.getLogger(DynamicTask.class);private static final ExecutorService es = new ThreadPoolExecutor(10, 20,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<>(10),new DynamicTaskConsumeThreadFactory());private volatile ScheduledTaskRegistrar registrar;private final ConcurrentHashMap<String, ScheduledFuture<?>> scheduledFutures = new ConcurrentHashMap<>();private final ConcurrentHashMap<String, CronTask> cronTasks = new ConcurrentHashMap<>();private volatile List<TaskConstant> taskConstants = Lists.newArrayList();@Overridepublic void configureTasks(ScheduledTaskRegistrar registrar) {this.registrar = registrar;this.registrar.addTriggerTask(() -> {if (!CollectionUtils.isEmpty(taskConstants)) {LOGGER.info("檢測動態定時任務列表...");List<TimingTask> tts = new ArrayList<>();taskConstants.forEach(taskConstant -> {TimingTask tt = new TimingTask();tt.setExpression(taskConstant.getCron());tt.setTaskId("dynamic-task-" + taskConstant.getTaskId());tts.add(tt);});this.refreshTasks(tts);}}, triggerContext -> new PeriodicTrigger(5L, TimeUnit.SECONDS).nextExecutionTime(triggerContext));}public List<TaskConstant> getTaskConstants() {return taskConstants;}private void refreshTasks(List<TimingTask> tasks) {//取消已經刪除的策略任務Set<String> taskIds = scheduledFutures.keySet();for (String taskId : taskIds) {if (!exists(tasks, taskId)) {scheduledFutures.get(taskId).cancel(false);}}for (TimingTask tt : tasks) {String expression = tt.getExpression();if (StringUtils.isBlank(expression) || !CronSequenceGenerator.isValidExpression(expression)) {LOGGER.error("定時任務DynamicTask cron表達式不合法: " + expression);continue;}//如果配置一致,則不需要重新創建定時任務if (scheduledFutures.containsKey(tt.getTaskId())&& cronTasks.get(tt.getTaskId()).getExpression().equals(expression)) {continue;}//如果策略執行時間發生了變化,則取消當前策略的任務if (scheduledFutures.containsKey(tt.getTaskId())) {scheduledFutures.remove(tt.getTaskId()).cancel(false);cronTasks.remove(tt.getTaskId());}CronTask task = new CronTask(tt, expression);ScheduledFuture<?> future = registrar.getScheduler().schedule(task.getRunnable(), task.getTrigger());cronTasks.put(tt.getTaskId(), task);scheduledFutures.put(tt.getTaskId(), future);}}private boolean exists(List<TimingTask> tasks, String taskId) {for (TimingTask task : tasks) {if (task.getTaskId().equals(taskId)) {return true;}}return false;}@PreDestroypublic void destroy() {this.registrar.destroy();}public static class TaskConstant {private String cron;private String taskId;public String getCron() {return cron;}public void setCron(String cron) {this.cron = cron;}public String getTaskId() {return taskId;}public void setTaskId(String taskId) {this.taskId = taskId;}}private class TimingTask implements Runnable {private String expression;private String taskId;public String getTaskId() {return taskId;}public void setTaskId(String taskId) {this.taskId = taskId;}@Overridepublic void run() {//設置隊列大小10LOGGER.error("當前CronTask: " + this);DynamicBlockingQueue queue = new DynamicBlockingQueue(3);es.submit(() -> {while (!queue.isDone() || !queue.isEmpty()) {try {String content = queue.poll(500, TimeUnit.MILLISECONDS);if (StringUtils.isBlank(content)) {return;}LOGGER.info("DynamicBlockingQueue 消費:" + content);TimeUnit.MILLISECONDS.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}}});//隊列放入數據for (int i = 0; i < 5; ++i) {try {queue.put(String.valueOf(i));LOGGER.info("DynamicBlockingQueue 生產:" + i);} catch (InterruptedException e) {e.printStackTrace();}}queue.setDone(true);}public String getExpression() {return expression;}public void setExpression(String expression) {this.expression = expression;}@Overridepublic String toString() {return ReflectionToStringBuilder.toString(this, ToStringStyle.JSON_STYLE, false, false, TimingTask.class);}}/*** 隊列消費線程工廠類*/private static class DynamicTaskConsumeThreadFactory implements ThreadFactory {private static final AtomicInteger poolNumber = new AtomicInteger(1);private final ThreadGroup group;private final AtomicInteger threadNumber = new AtomicInteger(1);private final String namePrefix;DynamicTaskConsumeThreadFactory() {SecurityManager s = System.getSecurityManager();group = (s != null) ? s.getThreadGroup() :Thread.currentThread().getThreadGroup();namePrefix = "pool-" +poolNumber.getAndIncrement() +"-dynamic-task-";}@Overridepublic Thread newThread(Runnable r) {Thread t = new Thread(group, r,namePrefix + threadNumber.getAndIncrement(),0);if (t.isDaemon()) {t.setDaemon(false);}if (t.getPriority() != Thread.NORM_PRIORITY) {t.setPriority(Thread.NORM_PRIORITY);}return t;}}private static class DynamicBlockingQueue extends LinkedBlockingQueue<String> {DynamicBlockingQueue(int capacity) {super(capacity);}private volatile boolean done = false;public boolean isDone() {return done;}public void setDone(boolean done) {this.done = done;}} }

  1、taskConstants 動態任務列表

  2、ScheduledTaskRegistrar#addTriggerTask 添加動態周期定時任務,檢測動態任務列表的變化

CronTask task = new CronTask(tt, expression); ScheduledFuture<?> future = registrar.getScheduler().schedule(task.getRunnable(), task.getTrigger()); cronTasks.put(tt.getTaskId(), task); scheduledFutures.put(tt.getTaskId(), future);

  3、動態創建cron定時任務,拿到ScheduledFuture實例并緩存起來

  4、在刷新任務列表時,通過緩存的ScheduledFuture實例和CronTask實例,來決定是否取消、移除失效的動態定時任務。

  DynamicTaskTest 動態定時任務測試類

@RunWith(SpringRunner.class) @SpringBootTest public class DynamicTaskTest {@Autowiredprivate DynamicTask dynamicTask;@Testpublic void test() throws InterruptedException {List<DynamicTask.TaskConstant> taskConstans = dynamicTask.getTaskConstants();DynamicTask.TaskConstant taskConstant = new DynamicTask.TaskConstant();taskConstant.setCron("0/5 * * * * ?");taskConstant.setTaskId("test1");taskConstans.add(taskConstant);DynamicTask.TaskConstant taskConstant1 = new DynamicTask.TaskConstant();taskConstant1.setCron("0/5 * * * * ?");taskConstant1.setTaskId("test2");taskConstans.add(taskConstant1);DynamicTask.TaskConstant taskConstant2 = new DynamicTask.TaskConstant();taskConstant2.setCron("0/5 * * * * ?");taskConstant2.setTaskId("test3");taskConstans.add(taskConstant2);TimeUnit.SECONDS.sleep(40);//移除并添加新的配置taskConstans.remove(taskConstans.size() - 1);DynamicTask.TaskConstant taskConstant3 = new DynamicTask.TaskConstant();taskConstant3.setCron("0/5 * * * * ?");taskConstant3.setTaskId("test4");taskConstans.add(taskConstant3); // TimeUnit.MINUTES.sleep(50);} }

?

轉載于:https://www.cnblogs.com/hujunzheng/p/10353390.html

總結

以上是生活随笔為你收集整理的Springboot定时任务原理及如何动态创建定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。

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

欧美激情一区不卡 | 九九免费在线观看视频 | 精品国产视频在线观看 | 91人人人 | 黄色大片国产 | 成年人视频在线观看免费 | 国产日韩欧美在线观看 | 狠狠狠色丁香婷婷综合激情 | 日日色综合 | 婷婷成人在线 | 粉嫩aⅴ一区二区三区 | 黄色a一级片 | 久久色在线观看 | 99热这里只有精品在线观看 | 99视频 | 69绿帽绿奴3pvideos | 成人黄色片免费 | 成人小视频在线播放 | 午夜精品久久久久99热app | 欧美精品v国产精品 | 四虎国产精 | 国产视频在线观看一区 | 国产精品免费在线观看视频 | 天天射天天干 | 久久专区 | 国产成人av一区二区三区在线观看 | 亚洲免费色 | 91传媒在线看 | 97精品电影院| 久久国产高清 | 首页av在线 | 在线观看色视频 | 91专区在线观看 | 一二三区视频在线 | 91亚洲精品国偷拍 | 国产精品中文字幕在线 | 免费午夜网站 | 色婷婷激情四射 | 免费看日韩片 | 国产一区二区三区在线免费观看 | 国产r级在线观看 | 色婷婷久久久综合中文字幕 | 在线观看岛国片 | 麻豆视频免费看 | 超碰在线公开免费 | 在线观看视频三级 | 久久99操 | 国产小视频免费在线观看 | 国产成人精品av在线观 | 亚洲免费在线观看视频 | 久久免费国产精品1 | 国产精品专区一 | 国产不卡在线观看视频 | 97超级碰碰碰视频在线观看 | 欧美精品久久久久久久久久久 | 国产一区福利在线 | 国产视频一区精品 | 亚洲精品国产精品国自产 | 欧美综合在线视频 | 97热久久免费频精品99 | 中文字幕一区二区三 | 五月天色站 | 久草在线视频在线 | 亚洲精品女 | 六月丁香色婷婷 | 精品视频999 | 人人爽人人爽人人片av免 | 成人av电影免费在线观看 | 91精品国产网站 | 欧美日韩调教 | 国产精品一码二码三码在线 | 色婷婷综合五月 | 99免费国产| 色综合天天视频在线观看 | 99热在线网站 | 亚洲精品视频在线 | 久草在线视频资源 | 久久99电影| 国产做a爱一级久久 | 四虎www. | 中文字幕亚洲欧美日韩 | 国产一级大片免费看 | 亚洲精品综合一二三区在线观看 | 看片一区二区三区 | 久久不卡国产精品一区二区 | 免费成人在线电影 | 不卡的av片| 亚洲一片黄 | 国产精品福利视频 | 女人高潮一级片 | 亚洲成人黄色在线观看 | 91香蕉久久 | 久久在线精品视频 | 麻豆免费视频 | 欧美极品xxx | 九色精品| av手机在线播放 | 国产喷水在线 | 国产专区精品视频 | 日韩精品一区二区三区免费视频观看 | 国产免费一区二区三区最新6 | 日韩一级网站 | aaa毛片视频| 又黄又爽又色无遮挡免费 | 国产一区二区高清不卡 | 日韩欧美有码在线 | 丝袜少妇在线 | 欧美日韩亚洲在线观看 | 国产成人精品一区二区三区在线观看 | 99精品热 | 天天操天天干天天综合网 | 日韩有码第一页 | 成人av在线网址 | 99色网站 | 九草在线观看 | 国内精品久久久久久中文字幕 | 久艹视频在线免费观看 | 久草在线资源免费 | 天天曰视频 | 欧洲激情综合 | 久久免费在线视频 | 911久久| 在线免费视频一区 | 国产高清免费在线观看 | 国产精品原创av片国产免费 | 精品亚洲成a人在线观看 | 一区中文字幕 | 欧美一二三视频 | 欧美a√大片 | 深爱激情五月婷婷 | 大荫蒂欧美视频另类xxxx | www.成人久久 | 97精品超碰一区二区三区 | 欧美精品在线视频 | 亚洲天堂毛片 | 亚洲视频在线播放 | 欧美激情va永久在线播放 | 最新av免费 | 国产精品高清在线 | 亚洲国产操 | 在线一级片 | 日韩视频免费看 | 国产精品久久久久av | 丝袜美腿亚洲综合 | 激情喷水 | 精品国产精品国产偷麻豆 | 国产精品久久久久久久电影 | 97精品伊人 | 亚洲综合色激情五月 | 国产精品视频 | 日韩大陆欧美高清视频区 | 99视频国产在线 | 亚洲最新合集 | 国产伦精品一区二区三区免费 | 97热在线观看 | 成人午夜影院 | 久久久久99精品成人片三人毛片 | 亚洲视频网站在线观看 | 欧美成年网站 | 伊人看片 | 国产永久网站 | 黄网站色成年免费观看 | 日韩午夜三级 | 91在线免费视频 | 91污视频在线观看 | 精品久久久久久综合 | 天天插日日操 | 国产欧美精品在线观看 | 午夜精品久久久久久中宇69 | 国产黄色一级大片 | 五月天狠狠操 | 国产片网站 | 去干成人网 | 欧美日韩亚洲第一 | 成人免费观看完整版电影 | 欧美日韩国产在线精品 | 久章操| 亚州天堂 | 中文字幕久久网 | 中文字幕在线观看免费 | 久久精品麻豆 | 国产在线精品播放 | 久久久久久久久综合 | 国产精品黄色 | 国产精品成人自产拍在线观看 | 九九视频免费在线观看 | 国产精品成人aaaaa网站 | 久久曰视频 | 欧美精品v国产精品v日韩精品 | 成人精品福利 | 国产中文字幕网 | 在线免费中文字幕 | 中文字幕第一页在线vr | 草久久久久久久 | 久草在线视频首页 | 国产一区二区三区免费在线 | 五月婷激情 | 亚洲精品国产麻豆 | 美女黄久久 | 久久久免费精品视频 | 久久精品日产第一区二区三区乱码 | 色网站黄 | 五月婷婷操 | 精品视频亚洲 | 亚洲欧美日韩一区二区三区在线观看 | 天天综合色天天综合 | 久久免费高清视频 | 亚洲第一成网站 | 日韩成人精品在线观看 | 久草在线视频看看 | 国产一级片免费视频 | 日韩精品久久久免费观看夜色 | 国产小视频免费在线网址 | 狠狠综合 | 国产精品视频免费看 | 欧洲精品视频一区二区 | 国产黄色看片 | 国产日产精品一区二区三区四区的观看方式 | 国产黄在线观看 | 激情综合五月婷婷 | 99国产在线视频 | 三级午夜片| 午夜精品一区二区三区视频免费看 | 三级性生活视频 | 97超级碰 | 9在线观看免费高清完整版在线观看明 | 婷婷丁香激情综合 | 黄色软件在线观看 | 91九色蝌蚪 | 成人在线视频论坛 | 91网在线观看 | 成人在线观看免费 | 中文字幕在线观看网 | www夜夜操com| 精品视频国产 | 日本动漫做毛片一区二区 | 国产视频亚洲 | 国产在线精品一区二区不卡了 | 久久男人免费视频 | 久久成人一区 | 国产精品理论片在线观看 | 最新av网址在线观看 | 成人动漫视频在线 | 精品免费久久久久久 | 黄色网www| 国产精品久久婷婷六月丁香 | 亚洲国产午夜精品 | 天天射天天做 | 亚洲欧美视频在线播放 | www日日 | 999久久久久久 | 久久中文字幕视频 | 日本中文乱码卡一卡二新区 | 精品久久免费看 | 亚洲视频aaa | 在线精品播放 | 国产午夜三级一区二区三 | 日韩国产精品一区 | 九色最新网址 | 婷婷激情网站 | 免费精品视频在线观看 | 91精品啪在线观看国产81旧版 | 黄色av电影网 | 日韩色在线 | 久久久视频在线 | 精品久久久久久久久久国产 | 久久免费视频3 | 亚洲成人在线免费 | 在线小视频你懂得 | 精品亚洲男同gayvideo网站 | 色www. | 中文字幕av一区二区三区四区 | 二区三区av| 69精品在线观看 | 日韩videos高潮hd | 九九九电影免费看 | 日韩精品一区二区不卡 | 欧美男同网站 | 久久伊人操 | 69精品久久 | 免费亚洲一区二区 | 久久视频免费在线观看 | 人人爽久久涩噜噜噜网站 | 波多野结衣在线观看视频 | 国产99自拍| 五月天综合色激情 | a特级毛片 | 日韩两性视频 | 91视频 - 114av| 久久久国产99久久国产一 | 久久国产精品偷 | 日韩精品欧美专区 | 精品久久久久久久久久久久久 | 99精品电影 | 成人av日韩 | 亚洲在线a | 亚洲国产成人久久综合 | 91精品国产自产在线观看永久 | 在线视频精品 | 久久久网站 | 热久久这里只有精品 | 久久免费一级片 | 国产乱码精品一区二区蜜臀 | 国产亚洲婷婷免费 | 五月天中文字幕mv在线 | 国产精品中文字幕在线播放 | 亚洲精品视频在 | 欧美日韩在线播放一区 | 免费福利片2019潦草影视午夜 | 中文字幕免费在线看 | 亚洲精品视频中文字幕 | 国产午夜三级一区二区三桃花影视 | 麻豆91精品视频 | 久久tv视频 | 国产一级视频 | 亚洲成人av在线 | 亚洲成av人电影 | 97av超碰 | 国产一级电影网 | 在线a视频 | 91豆花在线观看 | 日本xxxx裸体xxxx17| 91视频91色 | 亚洲一级电影视频 | 婷婷色资源 | 九色91视频| 久久看片网 | 欧美国产日韩一区二区三区 | 国产精品视频在线看 | 天天操月月操 | 手机在线欧美 | 中文字幕五区 | 免费日韩高清 | 日韩激情av在线 | 欧美激情视频三区 | 亚洲视频 视频在线 | 日韩中文字幕亚洲一区二区va在线 | 国产区精品区 | 欧美一区二区三区在线看 | 天天干天天想 | 国产精品不卡 | 日本一区二区高清不卡 | 玖玖视频| 1000部国产精品成人观看 | 久久国产热视频 | 人人精品| 国产精品高潮呻吟久久久久 | 成人黄色小视频 | 日韩精品一区二区三区免费视频观看 | 免费日韩一区二区 | 成人免费视频网站在线观看 | 97超碰成人在线 | av高清一区二区三区 | 精品国内 | 成年人免费看av | 日本久久影视 | 国产色啪| 欧美视屏一区二区 | 国产精品手机视频 | 日韩电影中文字幕在线观看 | 91豆花在线观看 | 久久av免费电影 | 人人插人人澡 | 国产视频精品免费播放 | 国产在线免费观看 | www.夜夜夜| 国产精品久久久久久久久久 | 九九热有精品 | 亚洲做受高潮欧美裸体 | 视频在线播放国产 | 亚洲精品电影在线 | 在线视频电影 | 免费a视频在线 | 奇米网在线观看 | 中文字幕一区在线观看视频 | 欧美日韩三级在线观看 | 一级免费看 | av免费在线观| 国产福利一区二区三区视频 | 欧美a免费| 久久色视频 | 2024国产精品视频 | 91av手机在线| 久久精品国产免费 | 日韩视频中文字幕在线观看 | 亚洲影院天堂 | 精品一区二区三区久久 | 日本福利视频在线 | 在线观看不卡视频 | 久久成人精品视频 | 国内精品久久久久久中文字幕 | 制服丝袜成人在线 | 国产精品一区二区三区观看 | 国产原创在线观看 | 激情婷婷av | 欧美一区二区三区免费看 | 成人免费在线视频观看 | 国产高清黄色 | 亚洲情影院| 亚洲美女精品视频 | 91亚洲影院 | 日韩视频中文 | 69视频网站 | 黄网站app在线观看免费视频 | 久久视频一区二区 | 国产精品美女久久久久久久 | 国产精品久久久久久久免费大片 | 亚洲黄色免费电影 | 奇米网在线观看 | 久久精品91久久久久久再现 | 免费看的av片 | 人人爽夜夜爽 | 91x色 | 国产网红在线 | 久久激情五月婷婷 | 97碰在线视频| 亚洲成av人影院 | 国产精久久久久久妇女av | 日韩av不卡在线观看 | av在线看片 | 亚洲精品美女久久 | 一区中文字幕在线观看 | 一区二区精品在线观看 | 三级午夜片 | 久草在线免费在线观看 | 久久精品激情 | 天天射天天爽 | 人人干在线| 久久99精品久久久久久久久久久久 | 操天天操| 九九三级毛片 | 精品国产乱码久久久久久1区二区 | 西西444www高清大胆 | 毛片永久免费 | 久久久久久国产一区二区三区 | 国产精品99久久久久人中文网介绍 | 亚洲国产精品一区二区久久,亚洲午夜 | 福利一区二区 | 91麻豆产精品久久久久久 | 国产99久久久精品 | 91av在线精品 | 婷婷四房综合激情五月 | 免费在线成人 | 91中文字幕在线播放 | 免费网站黄色 | 国产精品密入口果冻 | 午夜影院先 | 免费看亚洲毛片 | 久久精品国产99国产 | 久草91视频 | 久久天天躁狠狠躁亚洲综合公司 | 久久精品视频播放 | 97成人在线视频 | 黄色aa久久| 国产精品一区二区三区在线播放 | 国产中文在线字幕 | 国产一区二区三精品久久久无广告 | 9免费视频 | 成人黄色片免费 | 五月婷网站 | 91亚洲精品久久久久图片蜜桃 | se婷婷| 天天做天天爱天天综合网 | 日韩精品中文字幕在线观看 | 国产精品 久久 | 9在线观看免费高清完整版 玖玖爱免费视频 | 欧美一区免费在线观看 | av在线免费播放 | 国产精品第52页 | 久久精品亚洲一区二区三区观看模式 | 日操干| 国产精品18久久久久vr手机版特色 | 日韩性xxxx| 午夜精品一区二区三区在线播放 | 午夜性盈盈 | 日韩精品一区二区三区视频播放 | 国产二区视频在线观看 | 欧美日韩视频在线观看一区二区 | 久久久久久视频 | 91精品一区国产高清在线gif | 天干啦夜天干天干在线线 | 久久精品日产第一区二区三区乱码 | 午夜av免费看 | 国产成人黄色在线 | 2018精品视频| www.亚洲视频| 欧美日韩高清在线一区 | 欧美日韩一区久久 | 国产成人一区二区三区影院在线 | 欧美精品一区在线发布 | 波多野结衣亚洲一区二区 | 成人久久免费 | 国产一区私人高清影院 | 亚洲国产一区av | 亚洲成人高清在线 | 蜜桃视频色 | 国产又粗又猛又爽又黄的视频免费 | 99婷婷| 99在线观看免费视频精品观看 | 久久99精品国产一区二区三区 | 丁香婷婷久久久综合精品国产 | 久久成 | 亚洲色图 校园春色 | 亚洲成人动漫在线观看 | 麻豆mv在线观看 | 三级a毛片 | 色中色综合 | www.黄色在线 | 国产1区2区 | 日韩xxxbbb| 黄色影院在线观看 | 国产视频色 | 亚洲综合色视频 | 午夜美女福利直播 | 99在线观看免费视频精品观看 | 国产成人久久精品一区二区三区 | 综合成人在线 | 精品国产一区二区三区四区在线观看 | 婷婷五情天综123 | av福利超碰网站 | 日韩国产欧美在线视频 | 国产精品一区二区果冻传媒 | 在线视频18在线视频4k | 免费看一级黄色大全 | 亚洲日本欧美在线 | 国产精品无 | 色偷偷88888欧美精品久久久 | 亚洲精品久久久久久中文传媒 | 日韩激情小视频 | 天天爱天天干天天爽 | 国产成人av | 人人爽人人爽人人片 | 欧美性爽爽 | 久久看片网站 | 97在线成人 | 高清在线一区 | 欧美福利网站 | 99riav1国产精品视频 | 久久 精品一区 | 国产黄 | 欧洲亚洲精品 | 日韩黄色在线 | 视频在线精品 | 98精品国产自产在线观看 | 999久久久久久久久6666 | 日本最新中文字幕 | 91av电影网 | 99久久99久久综合 | 国产成人精品一区二区三区网站观看 | 六月色| 亚洲伦理中文字幕 | 免费在线观看污网站 | 99免费国产 | 黄色av成人在线 | 日韩网站在线看片你懂的 | 国产自在线| 九九免费精品视频 | 91精品国产欧美一区二区成人 | 一级黄色视屏 | 久久99久久99久久 | 亚洲在线日韩 | 91大神在线观看视频 | 国产精品99在线观看 | 成人毛片a | 亚洲精品国产精品国自产观看 | 久久免费视频观看 | 婷婷av在线 | 综合在线色| 91香蕉视频 | 国产精品一区二区在线 | 午夜国产一区二区三区四区 | 精品自拍sae8—视频 | 日韩大片在线看 | 国产亚洲精品成人 | 日韩av在线不卡 | 蜜桃视频成人在线观看 | 在线观看小视频 | 国产中文字幕一区二区三区 | 2023国产精品自产拍在线观看 | 在线91视频| 国产午夜一区 | 天天操天天射天天 | 欧美一区二区日韩一区二区 | 成人v | 免费观看v片在线观看 | 亚洲国产视频a | 成人在线网站观看 | 欧美视屏一区二区 | 黄色av网站在线观看 | 91探花国产综合在线精品 | 日韩欧美在线影院 | 欧美一级免费高清 | 中文字幕日韩一区二区三区不卡 | 国内精品久久久久久久久久清纯 | 四虎4hu永久免费 | 超碰在线人人97 | 狠狠躁夜夜a产精品视频 | 国产精品理论在线观看 | aⅴ视频在线 | a精品视频 | 美女视频黄的免费的 | 欧美在线91 | 蜜臀av在线一区二区三区 | 午夜精品福利影院 | 天天舔天天射天天操 | 成人黄色短片 | 久久精品婷婷 | 五月天婷婷在线视频 | 欧美在线视频免费 | 亚洲一级电影 | 国内精品久久天天躁人人爽 | 久久久久久国产精品久久 | 99久久国产免费,99久久国产免费大片 | 午夜精品视频在线 | 在线播放精品一区二区三区 | 最新中文字幕在线观看视频 | 免费av观看 | 久草国产精品 | 色狠狠操| 国产又粗又猛又黄又爽视频 | 国产在线更新 | 国产乱码精品一区二区蜜臀 | 亚洲精品美女久久 | 免费视频你懂得 | 精品视频9999| 国产成人一区二区三区久久精品 | 一区二区三区日韩在线观看 | 91视频在线免费 | 亚洲精品视频观看 | 成人99免费视频 | 免费看的黄色 | 天天艹天天操 | 国产成人三级三级三级97 | 国产玖玖精品视频 | 91综合在线| 91在线视频免费观看 | 国产成人精品999 | 在线亚洲观看 | 九九免费精品视频 | 国产白浆视频 | 国产999精品久久久久久绿帽 | 黄色成人在线观看 | 91在线成人 | 国产黄色av影视 | 国产中文字幕大全 | 五月天网站在线 | 超碰97免费在线 | 久热爱 | 不卡精品 | 久久一久久 | 99精品国产兔费观看久久99 | 亚洲成熟女人毛片在线 | 极品美女被弄高潮视频网站 | 久久久久久久影视 | 欧美激情精品久久 | 久久伦理| 国产成人精品福利 | 波多野结衣电影一区二区三区 | 久久久精品免费观看 | www日日夜夜| 精品在线视频观看 | 日韩极品视频在线观看 | 午夜视频在线观看一区二区三区 | 观看免费av| 五月天免费网站 | 国产精品综合久久久 | 成人动漫一区二区三区 | 中文字幕在线视频一区二区三区 | 在线 高清 中文字幕 | 亚洲黄色av网址 | 国产很黄很色的视频 | 免费高清在线观看电视网站 | 99精品在线观看 | 日韩精品视频在线观看免费 | 日韩在线电影一区二区 | 六月丁香综合 | 黄色三级免费网址 | 亚洲va天堂va欧美ⅴa在线 | 天天色综合三 | 欧美色婷婷 | 97人人澡人人添人人爽超碰 | 亚洲美女精品区人人人人 | 97超碰在线免费观看 | 在线观看视频一区二区三区 | 精品国产一区二区三区噜噜噜 | 色噜噜日韩精品一区二区三区视频 | 久久亚洲精品电影 | 激情开心站 | 伊人中文网 | 三级小视频在线观看 | 亚洲精品电影在线 | 久久tv | 天天色综合久久 | 最近中文字幕mv免费高清在线 | 日日操网 | 天天做天天爽 | 手机在线永久免费观看av片 | 黄色av大片 | 黄色成人毛片 | 9999精品免费视频 | 韩日电影在线免费看 | 精品国产一区二区三区日日嗨 | 色综合亚洲精品激情狠狠 | 欧美另类交在线观看 | 久久99久久99精品免观看软件 | 久久狠狠干| 99久久超碰中文字幕伊人 | 免费在线国产黄色 | 高清国产在线一区 | 午夜视频在线观看网站 | 97超碰免费在线观看 | 国产中文字幕在线 | 99久久婷婷国产精品综合 | 成年人国产精品 | 97在线影院 | 一区久久久 | 香蕉视频在线免费 | 色综合久久久久 | 亚洲男男gaygay无套 | 国产在线超碰 | 欧日韩在线视频 | 99久精品视频 | 五月激情丁香图片 | 久久久亚洲麻豆日韩精品一区三区 | 91丨九色丨国产在线观看 | 天天草天天干 | 91一区二区三区久久久久国产乱 | 亚州av免费 | 日韩av一区二区在线影视 | 免费成人av电影 | 色婷婷久久一区二区 | 国产精品观看在线亚洲人成网 | 久久国产精品精品国产色婷婷 | 四虎影视精品永久在线观看 | 日韩伦理片hd | 欧美电影在线观看 | 日b黄色片| 精品国产视频在线 | 五月婷婷六月丁香 | www日韩视频 | 日韩一区精品 | 最近中文字幕在线 | 人人草在线视频 | 午夜免费福利片 | 九九在线高清精品视频 | 最新午夜电影 | 国产精品福利无圣光在线一区 | 黄色精品国产 | 成人国产精品免费 | 91精品在线免费观看视频 | 中文字幕亚洲情99在线 | 久久在线免费观看视频 | 久久视频免费在线观看 | 国产无限资源在线观看 | 中文av资源站 | 国产精品久久久av | 国产亚洲欧美一区 | av观看免费在线 | 亚洲91在线 | 91在线看片| 在线观看亚洲a | 91精彩在线视频 | 免费色视频网站 | 亚洲国产精品激情在线观看 | 91亚洲国产成人 | 久久国产精彩视频 | 99久久精品国产免费看不卡 | 91在线播放视频 | a级国产乱理论片在线观看 特级毛片在线观看 | 久久国产系列 | 四虎伊人| 欧美国产日韩在线视频 | 日韩免费观看视频 | 久久久久高清毛片一级 | 伊人欧美 | 在线观看日本高清mv视频 | 人人爽人人爽av | 日韩精品中文字幕一区二区 | 在线视频 亚洲 | 国产黄a三级三级 | 久久国产精品久久w女人spa | www.久久色| 国产 日韩 中文字幕 | 成人黄大片视频在线观看 | av天天澡天天爽天天av | 免费日韩视 | 99c视频在线 | 天天射天天干天天操 | 欧美a级在线播放 | 日韩欧美精品一区二区三区经典 | 天天干天天拍天天操 | 国产中文a | 日韩在线色视频 | 在线观看视频一区二区三区 | 天天摸夜夜添 | av免费观看高清 | www99精品 | 久久久久久久av | 久久伊人五月天 | 免费网站黄色 | 久久国产视频网站 | 91在线产啪 | 日日摸日日 | 亚洲天堂网在线观看视频 | 亚洲精品xxxx| 日日夜日日干 | 日韩动漫免费观看高清完整版在线观看 | 免费人人干 | 久久久国产在线视频 | 99久久精品国产一区二区三区 | 激情五月婷婷综合网 | 久草在线最新 | 亚洲精品午夜久久久久久久久久久 | 国产精品刺激对白麻豆99 | 日韩在线电影观看 | 免费观看国产精品视频 | 五月婷婷综合在线观看 | 久久久激情视频 | 蜜臀av夜夜澡人人爽人人桃色 | 免费看的视频 | 91视频在线播放视频 | 国产在线观看不卡 | 精品女同一区二区三区在线观看 | 欧美 亚洲 另类 激情 另类 | 综合色站导航 | 国产又黄又硬又爽 | 五月激情站 | 天天综合入口 | 国产精品入口久久 | 亚洲专区欧美 | 国产日韩在线视频 | 日韩精品在线视频 | 夜夜操天天操 | 激情欧美日韩一区二区 | 国产精品涩涩屋www在线观看 | 久精品视频 | 在线观看免费av网站 | 久久激情影院 | 色婷婷88av视频一二三区 | 久草视频在线资源 | 免费观看特级毛片 | 欧美在线视频一区二区三区 | 热久久视久久精品18亚洲精品 | 2023亚洲精品国偷拍自产在线 | 国产一区二区三区免费在线 | 国产亚洲精品久久久久久久久久久久 | 美女网站视频色 | 精品久久一区二区三区 | 亚洲视频免费在线 | 免费网站污 | 国产视频精品久久 | av黄色免费在线观看 | 91成人看片 | 中文字幕文字幕一区二区 | 久久99视频免费观看 | 四虎免费在线观看视频 | 国产剧情在线一区 | 久操中文字幕在线观看 | 亚洲精品高清视频在线观看 | 精品一区欧美 | 一区在线播放 | 亚洲 av网站| 九九热精品视频在线观看 | 久久久久久久精 | 国产午夜精品一区二区三区欧美 | 四虎精品成人免费网站 | 久久艹欧美 | 国产精品一区二区久久 | 成人午夜免费剧场 | 福利视频精品 | 成人国产精品电影 | 欧美巨乳波霸 | 国产福利网站 | 亚洲国产成人久久综合 | 国产 视频 高清 免费 | 色免费在线 | 在线国产一区二区三区 | 欧美专区国产专区 | 欧美日韩在线观看一区 | 中文字幕日韩一区二区三区不卡 | 婷婷 综合 色 | 美女视频黄是免费的 | 亚洲 欧美 日韩 综合 | 九九九热精品免费视频观看网站 | 亚洲不卡在线 | 国产成人l区 | 免费观看的黄色 | 欧美最新大片在线看 | 日本 在线 视频 中文 有码 | 精品国产欧美一区二区三区不卡 | 久久久久久久久久久久久影院 | 操操操干干干 | 美女精品国产 | 免费高清在线视频一区· | 免费中午字幕无吗 | 91看成人 | 91av在线不卡| 免费观看丰满少妇做爰 | 四虎国产精品免费观看视频优播 | av看片在线| 少妇做爰k8经典 | 日韩中文字幕在线不卡 | 日韩va在线观看 | 深夜福利视频在线观看 | 91精品久久久久久久久 | 黄色av一级 | 久久国产精品成人免费浪潮 | 亚洲精品在线观看中文字幕 | 欧美精品v国产精品v日韩精品 | 欧美日韩免费看 | 国产人成在线视频 | 99在线播放 | 九九热在线播放 | 国产91免费看 | 久久小视频 | 日韩精品aaa | 麻豆成人精品视频 | 亚洲精品色 | 狠狠色丁香婷婷综合 | 午夜精品999| 国产午夜亚洲精品 | 美女国产网站 | 一区在线免费观看 | 91在线视频| 黄色小说视频在线 | 91xav| 亚洲国产精品电影 | 国产亚洲综合性久久久影院 | 欧美狠狠操 | 国产视频一区二区三区在线 | 色窝资源 | 久久夜色电影 | 豆豆色资源网xfplay | 99热精品免费观看 | 久草99 | 伊人手机在线 | 日韩久久久久久久久久久久 | 日韩经典一区二区三区 | 成人影片在线免费观看 | 亚洲激情在线观看 | 国产精品一区免费看8c0m | 91精品国产91久久久久 | 精品福利在线观看 | 香蕉在线视频播放网站 | 亚洲日本精品视频 | 午夜精品一区二区三区在线观看 | 综合色亚洲 | 久草色在线观看 | 婷婷5月激情5月 | 亚洲男人天堂a | 91看片看淫黄大片 | 亚洲精品一区二区久 | 日日摸日日碰 | 久久视频中文字幕 | 欧洲精品亚洲精品 | 国产18精品乱码免费看 | 六月丁香婷婷在线 | 91亚洲激情 | 国产色婷婷 | 午夜av在线 | 国产高清视频在线播放 | 一区二区三区视频在线 | 国产91精品久久久久久 | 欧美精品一区在线 | 久久久久高清毛片一级 | 狠狠狠狠狠狠 | 激情开心网站 | 久久久99久久 | 国语自产偷拍精品视频偷 | 伊人午夜视频 | 免费一级片久久 | 亚洲精品小视频 | 人成在线免费视频 | 日韩综合色 | 日韩国产精品毛片 | 日韩三级久久 | 一区二区不卡视频在线观看 | 色综合久久精品 | 亚洲爱av| 国产精品久久久久久久久久久久午夜片 | 久久视频在线观看免费 | 黄色一级大片在线观看 | 99r在线播放 | 精品久久91 | 成人免费在线观看电影 | 丁香在线 | 成人性生活大片 | 97天堂| 午夜12点| 久久成视频 | 色婷婷www | 免费看成年人 | 狠狠狠狠狠狠狠干 | 色在线视频网 | 久热超碰 | 国产日韩欧美自拍 | 亚洲精品综合一区二区 | 亚洲精品免费视频 |