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

歡迎訪問 生活随笔!

生活随笔

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

javascript

odciexttableopen 调用出错 error open log_如何在 Spring 异步调用中传递上下文

發布時間:2023/12/19 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 odciexttableopen 调用出错 error open log_如何在 Spring 异步调用中传递上下文 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是異步調用?

異步調用是相對于同步調用而言的,同步調用是指程序按預定順序一步步執行,每一步必須等到上一步執行完后才能執行,異步調用則無需等待上一步程序執行完即可執行。異步調用指,在程序在執行時,無需等待執行的返回值即可繼續執行后面的代碼。在我們的應用服務中,有很多業務邏輯的執行操作不需要同步返回(如發送郵件、冗余數據表等),只需要異步執行即可。

本文將介紹 Spring 應用中,如何實現異步調用。在異步調用的過程中,會出現線程上下文信息的丟失,我們該如何解決線程上下文信息的傳遞。

Spring 應用中實現異步

Spring 為任務調度與異步方法執行提供了注解支持。通過在方法或類上設置 @Async 注解,可使得方法被異步調用。調用者會在調用時立即返回,而被調用方法的實際執行是交給 Spring 的 TaskExecutor 來完成的。所以被注解的方法被調用的時候,會在新的線程中執行,而調用它的方法會在原線程中執行,這樣可以避免阻塞,以及保證任務的實時性。

引入依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

引入 Spring 相關的依賴即可。

入口類

@SpringBootApplication @EnableAsync public class AsyncApplication {public static void main(String[] args) {SpringApplication.run(AsyncApplication.class, args);}

入口類增加了 @EnableAsync 注解,主要是為了掃描范圍包下的所有 @Async 注解。

對外的接口

這里寫了一個簡單的接口:

@RestController @Slf4j public class TaskController {@Autowiredprivate TaskService taskService;@GetMapping("/task")public String taskExecute() {try {taskService.doTaskOne();taskService.doTaskTwo();taskService.doTaskThree();} catch (Exception e) {log.error("error executing task for {}",e.getMessage());}return "ok";} }

調用 TaskService 執行三個異步方法。

Service 方法

@Component @Slf4j //@Async public class TaskService {@Asyncpublic void doTaskOne() throws Exception {log.info("開始做任務一");long start = System.currentTimeMillis();Thread.sleep(1000);long end = System.currentTimeMillis();log.info("完成任務一,耗時:" + (end - start) + "毫秒");}@Asyncpublic void doTaskTwo() throws Exception {log.info("開始做任務二");long start = System.currentTimeMillis();Thread.sleep(1000);long end = System.currentTimeMillis();log.info("完成任務二,耗時:" + (end - start) + "毫秒");}@Asyncpublic void doTaskThree() throws Exception {log.info("開始做任務三");long start = System.currentTimeMillis();Thread.sleep(1000);long end = System.currentTimeMillis();log.info("完成任務三,耗時:" + (end - start) + "毫秒");} }

@Async 可以用于類上,標識該類的所有方法都是異步方法,也可以單獨用于某些方法。每個方法都會 sleep 1000 ms。

結果展示

運行結果如下:

可以看到 TaskService 中的三個方法是異步執行的,接口的結果快速返回,日志信息異步輸出。異步調用,通過開啟新的線程調用的方法,不影響主線程。異步方法實際的執行交給了 Spring 的 TaskExecutor 來完成。

Future:獲取異步執行的結果

在上面的測試中我們也可以發現主調用方法并沒有等到調用方法執行完就結束了當前的任務。如果想要知道調用的三個方法全部執行完該怎么辦呢,下面就可以用到異步回調。

異步回調就是讓每個被調用的方法返回一個 Future 類型的值,Spring 中提供了一個 Future 接口的子類:AsyncResult,所以我們可以返回 AsyncResult 類型的值。

public class AsyncResult<V> implements ListenableFuture<V> {private final V value;private final ExecutionException executionException;//... }

AsyncResult 實現了 ListenableFuture 接口,該對象內部有兩個屬性:返回值和異常信息。

public interface ListenableFuture<T> extends Future<T> {void addCallback(ListenableFutureCallback<? super T> var1);void addCallback(SuccessCallback<? super T> var1, FailureCallback var2); }

ListenableFuture 接口繼承自 Future,在此基礎上增加了回調方法的定義。Future 接口定義如下:

public interface Future<V> {// 是否可以打斷當前正在執行的任務boolean cancel(boolean mayInterruptIfRunning);// 任務取消的結果boolean isCancelled();// 異步方法中最后返回的那個對象中的值 V get() throws InterruptedException, ExecutionException;// 用來判斷該異步任務是否執行完成,如果執行完成,則返回 true,如果未執行完成,則返回falseboolean isDone();// 與 get() 一樣,只不過這里參數中設置了超時時間V get(long timeout, TimeUnit unit)throws InterruptedException, ExecutionException, TimeoutException; }

#get() 方法,在執行的時候是需要等待回調結果的,阻塞等待。如果不設置超時時間,它就阻塞在那里直到有了任務執行完成。我們設置超時時間,就可以在當前任務執行太久的情況下中斷當前任務,釋放線程,這樣就不會導致一直占用資源。

#cancel(boolean) 方法,參數是一個 boolean 類型的值,用來傳入是否可以打斷當前正在執行的任務。如果參數是 true 且當前任務沒有執行完成 ,說明可以打斷當前任務,那么就會返回 true;如果當前任務還沒有執行,那么不管參數是 true 還是 false,返回值都是 true;如果當前任務已經完成,那么不管參數是 true 還是 false,那么返回值都是 false;如果當前任務沒有完成且參數是 false,那么返回值也是 false。即:

  • 如果任務還沒執行,那么如果想取消任務,就一定返回 true,與參數無關。
  • 如果任務已經執行完成,那么任務一定是不能取消的,所以此時返回值都是false,與參數無關。
  • 如果任務正在執行中,那么此時是否取消任務就看參數是否允許打斷(true/false)。
  • 獲取異步方法返回值的實現

    public Future<String> doTaskOne() throws Exception {log.info("開始做任務一");long start = System.currentTimeMillis();Thread.sleep(1000);long end = System.currentTimeMillis();log.info("完成任務一,耗時:" + (end - start) + "毫秒");return new AsyncResult<>("任務一完成,耗時" + (end - start) + "毫秒");}//...其他兩個方法類似,省略

    我們將 task 方法的返回值改為 Future<String>,將執行的時間拼接為字符串返回。

    @GetMapping("/task")public String taskExecute() {try {Future<String> r1 = taskService.doTaskOne();Future<String> r2 = taskService.doTaskTwo();Future<String> r3 = taskService.doTaskThree();while (true) {if (r1.isDone() && r2.isDone() && r3.isDone()) {log.info("execute all tasks");break;}Thread.sleep(200);}log.info("n" + r1.get() + "n" + r2.get() + "n" + r3.get());} catch (Exception e) {log.error("error executing task for {}",e.getMessage());}return "ok";}

    在調用異步方法之后,可以通過循環判斷異步方法是否執行完成。結果正如我們所預期,future 所 get 到的是 AsyncResult 返回的字符串。

    配置線程池

    前面是最簡單的使用方法,使用默認的 TaskExecutor。如果想使用自定義的 Executor,可以結合 @Configuration 注解的配置方式。

    import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor;@Configuration public class TaskPoolConfig {@Bean("taskExecutor") // bean 的名稱,默認為首字母小寫的方法名public Executor taskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(10); // 核心線程數(默認線程數)executor.setMaxPoolSize(20); // 最大線程數executor.setQueueCapacity(200); // 緩沖隊列數executor.setKeepAliveSeconds(60); // 允許線程空閑時間(單位:默認為秒)executor.setThreadNamePrefix("taskExecutor-"); // 線程池名前綴// 線程池對拒絕任務的處理策略executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());return executor;} }

    線程池的配置很靈活,對核心線程數、最大線程數等屬性進行配置。其中,rejection-policy,當線程池已經達到最大線程數的時候,如何處理新任務。可選策略有 CallerBlocksPolicy、CallerRunsPolicy 等。CALLER_RUNS:不在新線程中執行任務,而是由調用者所在的線程來執行。我們驗證下,線程池的設置是否生效,在 TaskService 中,打印當前的線程名稱:

    public Future<String> doTaskOne() throws Exception {log.info("開始做任務一");long start = System.currentTimeMillis();Thread.sleep(1000);long end = System.currentTimeMillis();log.info("完成任務一,耗時:" + (end - start) + "毫秒");log.info("當前線程為 {}", Thread.currentThread().getName());return new AsyncResult<>("任務一完成,耗時" + (end - start) + "毫秒");}

    通過結果可以看到,線程池配置的線程名前綴已經生效。在 Spring @Async 異步線程使用過程中,需要注意的是以下的用法會使 @Async 失效:

    • 異步方法使用 static 修飾;
    • 異步類沒有使用 @Component 注解(或其他注解)導致 Spring 無法掃描到異步類;
    • 異步方法不能與被調用的異步方法在同一個類中;
    • 類中需要使用 @Autowired 或 @Resource 等注解自動注入,不能手動 new 對象;
    • 如果使用 Spring Boot 框架必須在啟動類中增加 @EnableAsync 注解。

    線程上下文信息傳遞

    很多時候,在微服務架構中的一次請求會涉及多個微服務。或者一個服務中會有多個處理方法,這些方法有可能是異步方法。有些線程上下文信息,如請求的路徑,用戶唯一的 userId,這些信息會一直在請求中傳遞。如果不做任何處理,我們看下是否能夠正常獲取這些信息。

    @GetMapping("/task")public String taskExecute() {try {Future<String> r1 = taskService.doTaskOne();Future<String> r2 = taskService.doTaskTwo();Future<String> r3 = taskService.doTaskThree();ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = requestAttributes.getRequest();log.info("當前線程為 {},請求方法為 {},請求路徑為:{}", Thread.currentThread().getName(), request.getMethod(), request.getRequestURL().toString());while (true) {if (r1.isDone() && r2.isDone() && r3.isDone()) {log.info("execute all tasks");break;}Thread.sleep(200);}log.info("n" + r1.get() + "n" + r2.get() + "n" + r3.get());} catch (Exception e) {log.error("error executing task for {}", e.getMessage());}return "ok";}

    在 Spring Boot Web 中我們可以通過 RequestContextHolder 很方便的獲取 request。在接口方法中,輸出請求的方法和請求的路徑。

    public Future<String> doTaskOne() throws Exception {log.info("開始做任務一");long start = System.currentTimeMillis();Thread.sleep(1000);long end = System.currentTimeMillis();log.info("完成任務一,耗時:" + (end - start) + "毫秒");ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = requestAttributes.getRequest();log.info("當前線程為 {},請求方法為 {},請求路徑為:{}", Thread.currentThread().getName(), request.getMethod(), request.getRequestURL().toString());return new AsyncResult<>("任務一完成,耗時" + (end - start) + "毫秒");}

    同時在 TaskService 中,驗證是不是也能輸出請求的信息。運行程序,結果如下:

    在 TaskService 中,每個異步線程的方法獲取 RequestContextHolder 中的請求信息時,報了空指針異常。這說明了請求的上下文信息未傳遞到異步方法的線程中。RequestContextHolder 的實現,里面有兩個 ThreadLocal 保存當前線程下的 request。

    //得到存儲進去的requestprivate static final ThreadLocal<RequestAttributes> requestAttributesHolder =new NamedThreadLocal<RequestAttributes>("Request attributes");//可被子線程繼承的requestprivate static final ThreadLocal<RequestAttributes> inheritableRequestAttributesHolder =new NamedInheritableThreadLocal<RequestAttributes>("Request context");

    再看 #getRequestAttributes() 方法,相當于直接獲取 ThreadLocal 里面的值,這樣就使得每一次獲取到的 Request 是該請求的 request。如何將上下文信息傳遞到異步線程呢?Spring 中的 ThreadPoolTaskExecutor 有一個配置屬性 TaskDecorator,TaskDecorator 是一個回調接口,采用裝飾器模式。裝飾模式是動態的給一個對象添加一些額外的功能,就增加功能來說,裝飾模式比生成子類更為靈活。因此 TaskDecorator 主要用于任務的調用時設置一些執行上下文,或者為任務執行提供一些監視/統計。

    public interface TaskDecorator {Runnable decorate(Runnable runnable); }

    #decorate 方法,裝飾給定的 Runnable,返回包裝的 Runnable 以供實際執行。

    下面我們定義一個線程上下文拷貝的 TaskDecorator。

    import org.springframework.core.task.TaskDecorator; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder;public class ContextDecorator implements TaskDecorator {@Overridepublic Runnable decorate(Runnable runnable) {RequestAttributes context = RequestContextHolder.currentRequestAttributes();return () -> {try {RequestContextHolder.setRequestAttributes(context);runnable.run();} finally {RequestContextHolder.resetRequestAttributes();}};} }

    實現較為簡單,將當前線程的 context 裝飾到指定的 Runnable,最后重置當前線程上下文。

    在線程池的配置中,增加回調的 TaskDecorator 屬性的配置:

    @Bean("taskExecutor")public Executor taskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(10);executor.setMaxPoolSize(20);executor.setQueueCapacity(200);executor.setKeepAliveSeconds(60);executor.setThreadNamePrefix("taskExecutor-");executor.setWaitForTasksToCompleteOnShutdown(true);executor.setAwaitTerminationSeconds(60);// 增加 TaskDecorator 屬性的配置executor.setTaskDecorator(new ContextDecorator());executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());executor.initialize();return executor;}

    經過如上配置,我們再次運行服務,并訪問接口,控制臺日志信息如下:

    由結果可知,線程的上下文信息傳遞成功。

    小結

    本文結合示例講解了 Spring 中實現異步方法,獲取異步方法的返回值。并介紹了配置 Spring 線程池的方式。最后介紹如何在異步多線程中傳遞線程上下文信息。線程上下文傳遞在分布式環境中會經常用到,比如分布式鏈路追蹤中需要一次請求涉及到的 TraceId、SpanId。簡單來說,需要傳遞的信息能夠在不同線程中。異步方法是我們在日常開發中用來多線程處理業務邏輯,這些業務邏輯不需要嚴格的執行順序。用好異步解決問題的同時,更要用對異步多線程的方式。

    源碼地址

    推薦閱讀

    微服務合集

    訂閱最新文章,歡迎關注我的公眾號

    總結

    以上是生活随笔為你收集整理的odciexttableopen 调用出错 error open log_如何在 Spring 异步调用中传递上下文的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    免费一区在线 | 五月婷婷综合在线 | 日韩一级网站 | 国产日韩一区在线 | 亚洲国产福利视频 | 黄色片免费在线 | 成人av网站在线 | 欧美日韩视频在线一区 | 黄色视屏免费在线观看 | 日韩videos | 午夜久久| 天天操天天操一操 | 精品免费视频123区 午夜久久成人 | 成人毛片一区二区三区 | 国产色在线视频 | 亚洲国产精品va在线 | 久久综合久久八八 | 成人手机在线视频 | 福利一区视频 | 婷婷六月天天 | 狠狠干我 | 伊人手机在线 | 亚洲国产精品电影 | 欧美色图亚洲图片 | 九色精品免费永久在线 | 2019中文 | 狠狠操狠狠干天天操 | 9在线观看免费 | 美女视频一区二区 | 91传媒免费观看 | 国产97在线看 | 色网站免费在线看 | 在线观看精品一区 | 波多野结衣视频一区 | 亚洲首页| 日韩视频中文字幕在线观看 | 最近字幕在线观看第一季 | 久草视频中文在线 | 天天做天天爱天天爽综合网 | bbb搡bbb爽爽爽 | 欧美成天堂网地址 | 色999在线 | 99久久精品国产毛片 | 狠狠地日 | 欧美va天堂va视频va在线 | 伊人婷婷 | 精品在线观看一区二区 | 久草干| 亚洲不卡在线 | 成人久久久久久久久久 | 四虎在线观看视频 | 手机成人在线 | 国内99视频| 天天干天天操天天射 | 日产乱码一二三区别免费 | 欧美日韩在线观看视频 | 久草网站在线 | 亚洲h在线播放在线观看h | 2023av在线 | 五月婷婷丁香网 | 不卡的av| 久久国精品 | 91精品视频在线观看免费 | 久久撸在线视频 | 99精品视频在线播放免费 | 91成人在线看 | 成人黄在线 | 在线观看日韩国产 | 青青网视频 | 亚洲高清视频在线观看免费 | 91私密视频 | 最新国产一区二区三区 | 99视频在线免费看 | 蜜桃久久久| 天天干天天操天天干 | 一个色综合网站 | 国产精品久久久久一区二区三区共 | 久草久草久草久草 | 国内精品一区二区 | 啪啪小视频网站 | 日韩精品极品视频 | 久久视频免费观看 | 婷婷精品国产欧美精品亚洲人人爽 | 婷婷丁香激情五月 | 国产精品久久久久aaaa九色 | 日本中文字幕视频 | 国产美女精品人人做人人爽 | 亚洲欧美日韩一二三区 | 黄污网站在线 | 色视频 在线 | 狠狠88综合久久久久综合网 | av解说在线观看 | 国产一性一爱一乱一交 | 激情伊人五月天久久综合 | 69亚洲精品 | 99热99| 97av在线 | 亚洲国产日韩精品 | 99r在线观看 | 五月婷婷久 | 色婷婷天天干 | 在线看片一区 | 国产一级黄色av | 国产 在线观看 | 久久不卡视频 | 久久成人在线视频 | 久久久久久久久久久久亚洲 | 精品国产伦一区二区三区观看说明 | 91av网址 | 福利视频一二区 | 四虎4hu永久免费 | 中文字幕在线观看2018 | 超碰av在线 | 午夜精品久久久99热福利 | 欧美性大战 | 午夜a区 | 婷婷综合成人 | 欧美色综合天天久久综合精品 | 在线天堂中文在线资源网 | 免费亚洲一区二区 | 国产免费久久久久 | 日韩高清三区 | 色吊丝av中文字幕 | 一区二区三区在线观看 | 欧亚日韩精品一区二区在线 | 欧美日本国产在线观看 | 涩涩网站在线看 | 最新婷婷色 | 奇米影视8888| 岛国片在线| 国产精品久久久久久久久费观看 | 国产成人福利片 | 久久精品久久国产 | 欧美小视频在线 | 婷婷性综合 | 国产一级大片在线观看 | 精品麻豆入口免费 | 五月天丁香 | 国产黄色大片免费看 | 亚洲狠狠丁香婷婷综合久久久 | 天天爱天天操 | 一级成人免费视频 | 色综合天天 | 高清不卡毛片 | 国产视频手机在线 | 亚洲资源 | 98精品国产自产在线观看 | 国产一二三在线视频 | 国产成人黄色av | 午夜12点 | 一区二区三区视频网站 | 日日夜夜草 | 亚洲一级免费观看 | 亚洲国产网址 | 色噜噜色噜噜 | 天天操天天射天天爽 | 精品国产一区二区在线 | 国产一区视频导航 | 六月丁香婷 | 免费看黄在线网站 | av丝袜天堂 | 精品人人爽| 九九国产视频 | 中文字幕一区二区三区四区视频 | 国产成人在线综合 | 国产精品黑丝在线观看 | 九九免费在线观看 | 99色在线观看视频 | 国产九九九九九 | 亚洲精品播放 | 午夜久久久影院 | 国产高清在线免费 | 国产午夜精品一区二区三区嫩草 | www蜜桃视频 | 九九日韩 | 又爽又黄又无遮挡网站动态图 | 一区二区三区四区五区在线 | 国产最新网站 | 久久艹精品 | 日韩在线观看视频在线 | 亚洲成人在线免费 | 在线色吧| 久久99精品热在线观看 | 亚洲视频久久久久 | avove黑丝| 国产精品九九热 | 日本在线观看中文字幕无线观看 | 久久精品国产久精国产 | 国内成人精品视频 | 欧美影院久久 | 免费在线观看黄网站 | 国产麻豆视频 | 欧美一级免费黄色片 | 午夜精品久久久久久久爽 | 免费看污污视频的网站 | 亚洲影院天堂 | 日韩精品一卡 | 97超碰国产精品 | 亚洲伊人成综合网 | 黄色av一级| 久日精品 | 国产亚洲91 | 国产护士av | 九九热精品视频在线观看 | 美女免费av | 成人中文字幕在线 | 又长又大又黑又粗欧美 | 午夜12点| 亚洲精品午夜aaa久久久 | 91精品推荐 | 久久在现| 国产精品欧美日韩在线观看 | 婷婷久月 | 国精产品999国精产品视频 | 97视频亚洲 | 九九视频免费观看视频精品 | 久久综合激情 | 丁香婷婷电影 | 在线观看91精品视频 | 五月婷婷综合网 | 国产麻豆视频在线观看 | 91在线视频一区 | 91午夜精品 | 在线观看日本高清mv视频 | 色片网站在线观看 | 日p视频在线观看 | 精品久久久久久久久久 | 日日操天天操夜夜操 | 有没有在线观看av | 国产精品短视频 | 国产在线国偷精品产拍 | 91丨九色丨高潮 | 激情av资源网 | 久草视频在线资源 | 久久精品视频日本 | 成人在线播放视频 | 五月天久久久久 | 成人av电影网址 | 天天噜天天色 | 国产精品毛片久久久 | 在线观看韩国av | 国产精品欧美精品 | 婷婷黄色片| 东方av在线免费观看 | 日韩成人精品在线观看 | 中文免费在线观看 | 精品高清视频 | 精品久久久久久电影 | 在线观看国产www | 国产品久精国精产拍 | 成人在线视频网 | 视频国产一区二区三区 | 在线 欧美 日韩 | 欧美日韩视频一区二区 | 91久久精品一区 | 日韩欧美电影在线 | www.久久久| 97av色 | 欧美日韩国产一区二 | 免费麻豆| 精品国产一区二区三区在线 | 成人免费在线视频观看 | 99爱视频在线观看 | 久久国内视频 | 色综合久久88色综合天天免费 | 97电影手机版| 97在线观 | 中文字幕在线观看国产 | 国产精品欧美日韩 | 日韩一区二区三区免费视频 | 激情综合网天天干 | 亚州免费视频 | 色婷婷久久久 | 久久免费播放视频 | 久久久综合香蕉尹人综合网 | 波多野结衣在线观看一区二区三区 | 四虎在线免费观看视频 | 开心丁香婷婷深爱五月 | 美女av在线免费 | 久久婷婷开心 | 在线看黄色的网站 | 9i看片成人免费看片 | 在线观看一级 | 免费国产在线观看 | 久久久久久久久久久综合 | av中文字幕在线播放 | 欧美另类xxxx | 美女网站在线观看 | 97av影院| 欧洲一区二区三区精品 | 日韩一级成人av | 欧美日韩高清一区 | 久久久久久国产精品亚洲78 | 免费裸体视频网 | 久久电影国产免费久久电影 | 欧美色伊人| 日本久草电影 | 99这里都是精品 | 日韩在线网址 | 永久免费的啪啪网站免费观看浪潮 | 在线视频app | 日韩高清成人在线 | 日韩手机在线 | 久久久免费| 久草在线在线精品观看 | 国产在线久久久 | 中文字幕丰满人伦在线 | 黄色一级在线免费观看 | 日韩在线免费观看视频 | 在线观看91av | 免费97视频 | 久久黄色影院 | 久久久久国产精品视频 | 国产成人91| 亚洲第一成网站 | 亚洲国产欧洲综合997久久, | 日韩av电影一区 | 成人教育av | 九九亚洲精品 | 91av视频在线观看免费 | 国产精品毛片一区视频播不卡 | 日本久久免费视频 | 免费男女羞羞的视频网站中文字幕 | 69国产精品视频 | 国产主播99 | 一区二区三区www | 四虎永久免费在线观看 | 中文字幕成人网 | 亚洲午夜久久久久久久久电影网 | 日本一区二区三区免费观看 | 成人毛片在线视频 | av综合 日韩 | 久久亚洲私人国产精品 | 国产成人一区二区三区久久精品 | 日产乱码一二三区别免费 | 久久精品香蕉视频 | 欧美色婷 | 不卡av在线免费观看 | 亚洲国产精品va在线看黑人 | 在线亚洲播放 | 超碰精品在线 | www.神马久久 | 四虎成人免费观看 | 国产精品伦一区二区三区视频 | 欧美日韩网址 | 99久久久国产免费 | 欧美成人中文字幕 | 99精品视频网站 | 久操久 | 国产99久久99热这里精品5 | 久久午夜鲁丝片 | 午夜精品一二区 | 91一区二区在线 | 亚洲精品视频在线观看视频 | 国产一二三在线视频 | 亚洲 欧美 日韩 综合 | 毛片在线网 | 99久久综合国产精品二区 | 精品v亚洲v欧美v高清v | 国产在线久久久 | 色偷偷男人的天堂av | 欧洲激情在线 | 国产剧情一区二区 | 中文字幕有码在线观看 | 国产精品免费一区二区三区 | 国产精品18久久久久久不卡孕妇 | 国产一级高清 | 亚洲国产成人高清精品 | 亚洲日本精品 | 亚洲区另类春色综合小说 | 91精品国产一区 | 激情综合亚洲 | 精品久久久久久久久久久久久 | 在线中文视频 | 久久久精品国产免费观看一区二区 | 玖玖在线免费视频 | 丝袜网站在线观看 | 日韩av一区二区在线影视 | 国产做a爱一级久久 | 久久天天躁夜夜躁狠狠躁2022 | 青青草国产成人99久久 | 91精品日韩 | 国产清纯在线 | 免费观看一区 | 一级精品视频在线观看宜春院 | 久久视精品 | 97人人模人人爽人人喊网 | 亚洲精品在线观看免费 | 久久69av| 国产精品一区二区av影院萌芽 | 日日操日日插 | 精品91久久久久 | 2019av在线视频 | 色综合久久88色综合天天6 | 成人在线视频免费观看 | 国产成人av免费在线观看 | 亚洲免费视频在线观看 | 国产精品密入口果冻 | 在线观看aaa | 国产精品第54页 | 天天色天天骑天天射 | 伊人小视频 | 国产护士hd高朝护士1 | 国产精品专区一 | 三级毛片视频 | 日韩精品一区不卡 | 国产爽妇网 | 国产在线视频资源 | 美女网站视频色 | 色99久久 | 91影视成人| 天天射狠狠干 | 久久99欧美| 人人网av| 国产精品一区二区av影院萌芽 | 欧美一区三区四区 | 丁香5月婷婷 | 91视频高清 | 欧美精品久久久久久久久久白贞 | 国产亚洲一区二区在线观看 | 色偷偷人人澡久久超碰69 | www亚洲精品| 久久韩国免费视频 | 婷婷丁香激情综合 | 欧美亚洲精品一区 | 国产福利小视频在线 | av在线之家电影网站 | 国产小视频精品 | 99精品热视频 | 97超碰免费在线观看 | 成人影片在线免费观看 | 成人影音在线 | 天天激情在线 | 青青草视频精品 | 久久久91精品国产一区二区精品 | 精品国产一区二区在线 | 天天干 天天摸 天天操 | 男女拍拍免费视频 | 91日韩精品视频 | 婷婷精品国产一区二区三区日韩 | 久久九九影视网 | 日韩国产精品一区 | 色吧av色av | 亚洲精品大片www | 亚洲国产色一区 | 在线视频中文字幕一区 | 97成人超碰| 99久久婷婷 | 超碰免费97| 国产精品高潮在线观看 | 欧美精品成人在线 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 一区二区三区四区精品 | 色伊人网| 在线电影91| 99久久一区| 亚洲五月婷婷 | 午夜视频在线瓜伦 | 欧美男同视频网站 | 麻豆免费在线播放 | 天天搞天天干天天色 | 中文字幕激情 | 久久香蕉一区 | 日韩在线免费播放 | 成人中文字幕在线观看 | 91精品一区二区三区久久久久久 | 最近中文字幕在线 | 国产精品一区二区三区在线播放 | 国产伦理剧 | 久久久久成人精品亚洲国产 | 日韩中文字幕国产 | 亚洲.www | 国产99免费视频 | av免费电影在线 | 日韩av五月天 | 国产精品欧美久久久久无广告 | 欧美日韩中文国产一区发布 | 日p视频在线观看 | 国产麻豆电影在线观看 | 成人免费视频网站在线观看 | 在线v| 99精品视频在线观看播放 | 久草手机视频 | 黄色三级网站 | 免费又黄又爽 | 日韩 精品 一区 国产 麻豆 | 欧美韩国在线 | 亚洲日本va午夜在线电影 | 国产一区二区高清视频 | 天天色 天天 | 婷婷激情综合五月天 | av中文在线播放 | 精品在线你懂的 | www日日夜夜 | 久久精品香蕉 | 国产成人精品午夜在线播放 | 久久综合久久鬼 | 伊人婷婷综合 | 日韩美女久久 | 国模一区二区三区四区 | 99在线免费视频 | 精品一区二区电影 | 中文字幕精品一区二区三区电影 | 欧美性高跟鞋xxxxhd | 国产精品日韩 | 久久久观看| 91香蕉视频污在线 | 色婷婷成人网 | 精品国产一区二区三区四区在线观看 | 青春草免费视频 | 成人av电影在线播放 | 国产精品手机在线观看 | 亚洲第一中文字幕 | 色婷婷成人网 | 96久久欧美麻豆网站 | 视频国产在线观看18 | 国产精品乱码久久久 | 伊人永久在线 | 日韩精品视频久久 | 久久久久久久久久久久久久av | 又黄又爽又无遮挡的视频 | 91av大全| 久久黄色美女 | 天天射天天艹 | 97超在线 | 欧美精品国产精品 | 毛片在线播放网址 | 日韩二区三区在线观看 | 国产精品成人国产乱一区 | 五月婷婷在线综合 | 亚洲激情在线视频 | 亚洲精品黄网站 | 国产区免费在线 | 黄色a三级| www.日本色 | 美女久久久久久久 | 免费在线中文字幕 | 亚洲国产激情 | 欧美在线一二 | av黄色一级片 | 黄色美女免费网站 | 亚洲一区天堂 | 中文字幕资源站 | 亚洲视频精品在线 | 99精品国产在热久久 | 国产专区在线视频 | 精品91在线 | 国产精品久久久久一区二区三区共 | 久久精品久久精品久久 | 午夜国产一区 | 丁香六月五月婷婷 | 久99视频 | 草久在线播放 | 亚洲成人av在线电影 | 69国产精品视频免费观看 | 91精品啪在线观看国产 | 免费黄a | 麻豆精品91| 国产视频欧美视频 | 91免费日韩 | 日韩免费观看高清 | 国产一级高清视频 | 国产亚洲小视频 | 9色在线视频 | 久草在线免费播放 | 日韩va欧美va亚洲va久久 | a级片在线播放 | 国产一级黄色电影 | 在线视频国产区 | 天天天天天天天天操 | 亚洲精品18日本一区app | 91精品国产91热久久久做人人 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲精品乱码久久久久久久久久 | 一级黄色片在线播放 | 97人人超碰在线 | 黄色一级在线视频 | av免费在线播放 | 香蕉免费| 欧美另类巨大 | 国产一级二级视频 | 特级大胆西西4444www | 久久久久久久久电影 | 在线欧美最极品的av | 久久精品123| 色婷婷88av视频一二三区 | 91视频观看免费 | 日韩精品极品视频 | 最新日韩视频在线观看 | 国产福利一区在线观看 | www视频在线播放 | 91自拍视频在线 | 亚洲精品乱码久久久久久写真 | 91成人网页版 | 久久精品视频在线免费观看 | 最近日本韩国中文字幕 | 亚洲资源网 | 欧美激情精品久久久 | 黄色片视频在线观看 | 国产精品私人影院 | 婷婷去俺也去六月色 | 在线看污网站 | 日韩免费一区二区三区 | 国产精品乱码久久 | 99精品视频免费看 | 免费色视频网址 | 日韩av伦理片 | 在线小视频你懂的 | 亚洲桃花综合 | 久久黄色免费视频 | 特级片免费看 | 麻豆一区在线观看 | 国际精品久久 | 久久av伊人 | 丁香在线观看完整电影视频 | 一区二区三区免费在线观看视频 | 丰满少妇高潮在线观看 | 欧美日韩久久一区 | 日韩中文在线电影 | 国产视频91在线 | 三级av小说 | 97精品伊人 | 精品特级毛片 | 国产精品久久久久久久久久久久午夜片 | 亚洲国产成人高清精品 | 成人影音av | 国产小视频在线看 | 国产 日韩 欧美 中文 在线播放 | 久久久久久久久久伊人 | 亚洲一区二区观看 | 黄色av一区| 欧美日bb | 成人久久亚洲 | 69久久久久久久 | 久久综合狠狠综合久久狠狠色综合 | 亚洲综合激情小说 | 久久精品91久久久久久再现 | 黄色一级大片在线免费看产 | 2024国产精品视频 | 亚洲国产精品激情在线观看 | 日韩在线观看影院 | 99国产精品久久久久老师 | www.伊人网 | 五月婷婷视频在线 | www.久久成人| 日本动漫做毛片一区二区 | 天天干天天操av | 美女福利视频一区二区 | 91禁在线观看| 狠狠色噜噜狠狠狠合久 | 久久成人欧美 | 久久激情影院 | 91视频在线观看大全 | 国产精品久久久久久欧美 | 久草视频一区 | 91香蕉视频色版 | 91片在线观看 | 美女网站视频色 | 午夜视频一区二区三区 | 黄色毛片在线 | 国产精品欧美一区二区三区不卡 | 日韩av快播电影网 | 婷婷色六月天 | 亚洲精品在线免费观看视频 | 国内精品在线观看视频 | 久久国产精品免费观看 | 天天射天天添 | 国产精品成人av电影 | 国产成人综合精品 | 国产五月婷 | 日韩电影中文字幕在线 | 三级黄色在线观看 | 久草在线看片 | 五月天堂色 | 一本一本久久a久久精品牛牛影视 | 国产综合视频在线观看 | 久久99视频 | 国产69精品久久久久99尤 | 午夜电影久久 | 一区在线播放 | 在线免费av电影 | 精品视频在线视频 | 日本久久久影视 | 99久热在线精品视频成人一区 | 国产日韩一区在线 | 中文字幕在线观看网站 | 亚洲精品成人网 | 欧日韩在线 | 麻豆国产网站 | 中文字幕av在线不卡 | 久久精品一二三 | 国产一区二区精品久久 | www.黄色片.com | 日日夜夜精品网站 | 超碰在线人人97 | 日韩欧美有码在线 | www日韩视频 | 成年人视频在线观看免费 | 九九日韩 | 亚洲国产无 | 一本一道久久a久久精品蜜桃 | 国产精品一区二区免费视频 | 成人午夜免费剧场 | 在线 视频 一区二区 | 国产九九九九九 | 国产中文字幕在线观看 | 亚洲成人家庭影院 | 天天操天天干天天 | 97视频在线看 | 久久精品资源 | 免费不卡中文字幕视频 | 一区二区三区高清在线观看 | 久久久久久美女 | 九九精品久久久 | 在线免费观看黄色 | 久久久久久久久久久久av | 黄色a大片 | wwxxxx日本 | 亚洲国产精品日韩 | 日韩在线一级 | 麻豆视频观看 | 欧美色图另类 | 亚洲欧美视频一区二区三区 | 国产精品久久久电影 | 黄色av三级在线 | 亚洲成人av一区 | 成人午夜电影在线 | 精品视频网站 | 成人av影视在线 | 亚洲国产精品一区二区久久hs | 国产色综合 | 久久成人免费电影 | 伊人国产在线播放 | 日日碰狠狠添天天爽超碰97久久 | 97夜夜澡人人爽人人免费 | 91网在线 | 国产成人a亚洲精品v | 92精品国产成人观看免费 | 玖玖玖精品| 欧美激情视频一二区 | 国产一级91 | 黄色av一区| 日本激情视频中文字幕 | 国产日韩中文字幕 | 精品久久影院 | 色av资源网| 久久成人国产精品一区二区 | 91中文字幕永久在线 | 亚洲国产伊人 | 精品1区2区3区 | 亚洲一区免费在线 | 欧美日韩激情网 | www.亚洲精品 | 亚洲美女在线一区 | 亚洲高清视频在线 | 一区二区三区电影在线播 | 亚洲激情六月 | 一区二区三区 亚洲 | 一区二区三区四区在线 | 精品国产一区二区三区四区vr | 久久免费视频4 | 一区二区在线影院 | 久久不卡日韩美女 | 在线观看91久久久久久 | 在线观看中文字幕dvd播放 | 五月婷婷丁香六月 | 欧美日韩精品电影 | 91传媒免费观看 | 中文字幕 国产视频 | 99综合电影在线视频 | av一区二区三区在线播放 | 有码中文字幕 | 成全免费观看视频 | 麻花豆传媒mv在线观看网站 | 999国内精品永久免费视频 | 97视频资源 | 黄污在线看 | 久久婷婷开心 | 一级片免费观看视频 | 97在线观看视频国产 | 中文字幕av免费在线观看 | 久久婷亚洲五月一区天天躁 | 最新精品视频在线 | 国内精品国产三级国产aⅴ久 | 色av婷婷 | 亚洲毛片久久 | 久久久午夜电影 | 日韩精品免费一区二区 | 亚洲专区欧美专区 | 成人h视频在线 | 久久久久国产免费免费 | 婷婷深爱网 | 国产精品嫩草影院123 | 公开超碰在线 | 成人午夜剧场在线观看 | 日韩免费视频一区二区 | 亚洲视频免费在线观看 | 成人免费网站在线观看 | 久久久久久久久黄色 | 伊人在线视频 | 日韩欧美精品在线观看视频 | 成人免费看片网址 | 91大神视频网站 | 视频在线观看亚洲 | 久久亚洲影院 | 日韩在线观看精品 | 久久久久久久电影 | 久久国产精品免费 | av先锋中文字幕 | 波多野结衣亚洲一区二区 | 久久国产片 | 婷婷伊人五月天 | 国产精品99久久久久久有的能看 | 久久久久久久久久久黄色 | 亚洲国产成人久久综合 | 精品视频免费播放 | 免费不卡中文字幕视频 | 黄色a一级片 | 一区二区成人国产精品 | 91精品伦理| 成年美女黄网站色大片免费看 | 在线看成人 | 欧美小视频在线 | 一级理论片在线观看 | 麻豆一区在线观看 | aa级黄色大片 | 在线免费性生活片 | 欧美一区二区三区在线观看 | 天天色天天射综合网 | 西西www4444大胆在线 | 国产不卡免费视频 | av成人免费观看 | 人人爽人人看 | 久草在线免费资源站 | 美女精品在线观看 | 日韩中文字幕免费视频 | 日日婷婷夜日日天干 | www.av在线播放 | 欧美日韩久久一区 | 四虎在线免费视频 | 91精品视频一区二区三区 | 黄色一级影院 | 97电影在线| 亚洲成av人片在线观看 | 少妇av片| 亚洲成人软件 | 中文字幕色站 | 欧美性生交大片免网 | 亚洲精品自拍 | 波多野结衣在线观看一区二区三区 | www.亚洲黄 | 欧美巨大荫蒂茸毛毛人妖 | 96精品在线 | 国产一区二区高清视频 | 在线免费黄色av | 国产一级久久 | 亚洲成人麻豆 | 国产精品国产亚洲精品看不卡 | 中文字幕色播 | 亚洲精品字幕在线 | 国产又粗又长的视频 | 天天射网站 | 日本少妇视频 | 日韩高清精品免费观看 | 亚洲精品久久久蜜桃直播 | 日日爱网站 | 在线视频日韩精品 | 久久免费视频2 | 精品亚洲午夜久久久久91 | 亚洲精品小视频 | www日韩在线| 精品国产一区二区三区久久影院 | 国产专区免费 | 91chinese在线 | 日韩黄色免费 | 最近中文字幕 | 亚洲第一av在线播放 | 久久福利小视频 | 中文字幕在线第一页 | 手机看国产毛片 | 日韩精品免费专区 | 人人爽人人片 | 亚洲狠狠操 | 在线视频 你懂得 | 免费亚洲黄色 | 91精选在线观看 | 九九精品久久久 | 中文字幕免费一区 | 色av资源网 | 久久这里 | 天天超碰 | 国内精品免费久久影院 | 日韩| 在线国产一区二区三区 | 激情视频91| 成人国产精品免费观看 | 色偷偷88888欧美精品久久 | 欧美日韩免费在线观看视频 | 日韩精品久久久久久久电影99爱 | 久久五月天综合 | av黄色在线观看 | 日韩av中文 | 久久黄网站 | 成人一区二区在线 | 手机成人在线电影 | 国产精品日韩久久久久 | a级一a一级在线观看 | 青青河边草免费直播 | 色悠悠久久综合 | 成人三级视频 | 欧美一级淫片videoshd | av免费电影网站 | 开心激情五月网 | 日日激情 | 91成人精品在线 | 超黄视频网站 | 日韩二区在线 | 国产成人99av超碰超爽 | 91av视频| 人人舔人人舔 | 久久久久区 | 在线观看亚洲国产精品 | 97成人精品区在线播放 | 亚洲国产播放 | 国产群p视频 | 美女免费网视频 | 99re久久资源最新地址 | 手机成人av在线 | 色97在线| 国产一二区视频 | 伊人成人精品 | 亚洲欧洲视频 | 日韩欧三级 | 九九99靖品 | 亚洲人成在线观看 | 色综合久久久久综合 | 99综合电影在线视频 | 日韩大片免费在线观看 | 日韩久久精品一区二区三区下载 | 日韩电影一区二区三区在线观看 | 人人爽人人爽人人爽人人爽 | 日本午夜在线观看 | 91精品一区二区三区久久久久久 | 91香蕉视频黄色 | 久久久久久久免费看 | 玖玖在线播放 | 麻豆精品传媒视频 | 欧美一级片免费观看 | 成人免费色 | 国产精品一区二区三区在线免费观看 | 久久优| 91精品亚洲影视在线观看 | 国产亚洲视频在线 | 久久久久综合网 | 高清av中文字幕 | 亚洲色图色| 在线观看小视频 | 亚洲激情小视频 | 亚洲欧洲精品在线 | 夜夜操夜夜干 | 国产成人精品一区二区三区福利 | 亚洲性少妇性猛交wwww乱大交 | 午夜久久福利视频 | 欧美极品少妇xbxb性爽爽视频 | 久久久久北条麻妃免费看 | 久久久国产精品亚洲一区 | 国产一级片播放 | 99re久久资源最新地址 | 最新中文在线视频 | 日韩伦理一区二区三区av在线 | 国产精品久久久久久久久蜜臀 | 高清av免费观看 | 精品天堂av| 中文字幕xxxx | 久久在现视频 | 日韩欧美一区二区在线观看 | 日本在线视频网址 | 狠狠久久婷婷 | 国产xvideos免费视频播放 | 久久经典视频 | 欧美午夜a | 麻豆果冻剧传媒在线播放 | 久久久久久久久网站 | 天天干视频在线 | 综合婷婷| 日日躁夜夜躁xxxxaaaa | 三级小视频在线观看 | 国产成人一区二区三区 | 久久成人国产精品一区二区 | 美女视频黄是免费的 | 色综合天天视频在线观看 | 久99久精品| 最近日本韩国中文字幕 | 99久国产| av最新资源 | 国产精品免费看久久久8精臀av | 欧美激情视频一二区 | 亚洲最新av在线网站 |