精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

徹徹底底給你講明白啥是SpringMvc異步處理

開發 后端
Web容器線程池的線程為了使自己不處理耗時請求,所以引入了專門的線程池,以及由此產生的它與專門的線程池的一去一來的協調交互。

生活在這個世界上,我們必須承認任何事物都是運動變化著的,沒有什么東西是一成不變的。

不僅因為這句話是出自馬克思主義哲學的唯物辯證法,而且事實確實如此。下面就來描述這樣的一個變化。

分工的產生與協作

想必大家都買過房或終將會買房,那自然離不開裝修,就以裝修這個話題來展開吧。假設有一個搞裝修的人叫小王。

小王活兒做得特別好,但目前還是一個人單打獨斗。他正在干活兒的這家業主的鄰居發現了他的活兒好,于是專門來找他咨詢情況。

小王不得不停下手頭的工作,來為潛在的客戶解答疑惑或訴說方案。最終靠實力把潛在客戶變成了真正的客戶。小王的名氣就這樣傳開了。

附近小區的人聞名而來,找他溝通裝修方案或確認時間安排,小王不得不每次都停下手頭工作,專心為客戶解答。等客戶走后,他再開始繼續工作。

隨著來找他的人與日俱增,漸漸的小王發現他真正用于干活兒的時間越來越少了,因為他在接待客戶上花費了太多的時間。

但沒有辦法,為了能夠接到更多的活兒,他必須為客戶提供這個咨詢,必須要花掉這些時間。結果導致干活兒的時間被壓縮了,活兒干不完了,該咋辦呢?

其實解決方法很簡單,所有人都能想得到,那就是小王招了一個工人專門給他干活。工人干完活后先過小王這一關,小王覺得可以了才會交付給業主。

小王呢則繼續為客戶提供咨詢服務,在空閑的時候也會去和僅有的一個工人一起干活。看來問題已得到解決,一切重新回到平衡狀態中。

由于小王走了狗屎運,每天來的客戶實在是太多了,這個剛剛建立的平衡又被打破了。小王不得不全天候的提供咨詢,索性不再干活了。

而且由于接的活兒越來越多,無奈不得不又招了第二個工人,第三個工人,第四個。。。

我們可以看到很多事情都在逐漸的發生著改變,小王從一個只會干活的工人逐步過渡到只負責接待客戶的顧問,不再干活。

為了適應自己的這個新角色,小王不得不招了一個又一個工人為自己干活,這樣自己才能得以從原來的工作中徹底解脫。

可見隨著事物的發展,分工的產生是一種必然,這就導致了崗位種類的增加。原來只有一個崗位,既負責干活又負責咨詢。

現在變為了兩個崗位,一個專門負責咨詢和監工,其實就是工長了,一個專門負責干活和施工,其實就是工人。

這種“工長 + 工人”的模式在現實生活中使用的非常普遍,工長為工人分配工作和驗收工人的工作以及解答工人的問題,其實就是兩個崗位之間的協作。

因此,分工的產生與協作代表著一種更加先進和高效的生產方式,至少從理論上來看是這樣的,他們各司其職,然后再強強聯合,結果可想而知。

Web容器對異步的支持

看完上一小節,希望大家記住這八個字,“各司其職、相互協作”。OK,馬上進入程序世界。

SpringMvc的實質就是對Java Web的封裝,因此為了更容易的理解SpringMvc的異步,必須先了解Java Web的異步。

Java Web的實質就是一套標準(接口),Web容器實現了這套標準,所以我們站在Web容器的立場來說Java Web的異步,非常好理解。

無論采用什么框架開發的Java Web應用,最終都是在Web容器中運行的,如tomcat就是最常用的Web容器。

啟動SpringBoot時,可以看看日志中打印出的線程名稱,其實就是tomcat線程池里的線程。可以多請求幾次,發現每次處理請求的線程Id都不一樣。

我們知道,其實每一個請求過來后,Web容器都會從自己的線程池中拿出一個線程來運行Java Web應用以處理請求。當請求處理完后,這個線程會被還回到線程池中以便處理下一個請求。

如果請求能在非常短的時間內處理完成,是沒有問題的。我們設想一下,如果請求執行的非常慢,那么這個線程將無法還回去,于是線程池中可用的線程數目將少一個。

由于線程池的容量是有限的,如果很多執行的很慢的請求同時到來,那么線程池中的線程將會用光,而且短時間內都還不回來。此時的其它請求都將無法被處理。

我們發現執行很快的請求和非常耗時的請求是屬于兩種不同性質的事物,現在它們都由Web容器的線程池的線程來從頭處理到尾,就像當初的小王。

既要接待客戶做咨詢工作,又要等客戶走了自己干活。這顯然是低效的,唯一的方法就是將這兩種工作分開,分別交由兩個崗位去做。

于是我們就看到,小王招了很多工人,自己專業做咨詢接活兒,轉手把活兒交給工人去做,工人做好后把活兒再交回給小王,小王再向業主交付。

我們可以把這個思路套到Web容器上,就是Web容器線程池的線程只用來處理執行速度很快的請求,這對應于小王只負責咨詢接活兒。

對于非常耗時的請求,Web容器線程池的線程將把這個請求交給其它專門的線程池的線程去處理,這對應于小王把接到的活兒交給他的工人去做。

Web容器線程池的線程將再去接受其它請求,因為耗時的請求已經被交出去了。這對應于小王再去接別的活兒,因為上一個活兒已經交給工人去干了。

專門的線程池的線程處理完這個請求后會把它還回給Web容器線程池的線程,這對應于工人干完活兒后會把活兒先交給小王去驗收。

Web容器線程池的線程拿到處理結果,把結果寫入響應,這個請求就被處理完畢了。這對應于小王把工人干好的活兒交付給業主,施工就算完畢了。

我們來分析一下,小王由于角色轉變而帶來的工作轉變都有哪些。一開始小王單打獨斗,小王工作有三種,小王從業主接活兒,小王自己干活,小王向業主交付。

到最后小王成了工長,此時的工作是四種,小王從業主接活兒,小王把活兒交給工人去做,工人把做好的活兒交回給小王,小王向業主交付。

對比后發現,小王為了使自己不干活,所以引入了工人,以及由此產生的他與工人之間的一去一來的協調交互。

同樣來分析一下,Web容器線程池的線程前前后后有哪些變化。一開始線程處理所有的請求,可以分為三個階段,線程接受請求,線程處理請求,線程寫回響應。

到最后線程的工作分為四個階段,線程接受請求,線程把待處理的請求交給專門的線程池,專門的線程池把處理好的請求交回給線程,線程寫回響應。

對比后發現,Web容器線程池的線程為了使自己不處理耗時請求,所以引入了專門的線程池,以及由此產生的它與專門的線程池的一去一來的協調交互。

是不是發現線程池和小王的行為是完全對應的。而且他們面臨的問題都一樣,就是把需要處理的任務交出去給別人,別人把處理完畢的任務再還回給他。

好了,現在我來告訴你,這就是Java Web異步處理的整體邏輯思想。化繁為簡后,其實就是一去一來這兩個動作罷了。

自己把執行流程交出去

1AsyncContext startAsync()

別人把執行流程還回來

1void dispatch()

上面這兩個方法就完成了一去一來這兩個動作,僅此而已。

看到這些,可能有些人大失所望,傳說中“牛X和高大上”的異步處理,到最后也不過區區十四個字,“執行流程交出去,執行流程還回來”。

可能還會有人覺得,異步處理不應該和客戶端也有關系嗎?其實并沒有,純粹是服務器端的把戲。而且對于單個請求的處理時間也不會減少。

就像你去飯店吃飯,你點的這份飯在后廚是一個廚師完成的還是多個廚師協作完成的,其實你并不知道,一般情況下你也并不關心。

SpringMvc對異步的支持

上面描述的異步處理邏輯只是一個規范(接口),是不帶實現的。任何想要支持Java Web異步處理的,需要在遵守這個規范的前提下,自己提供一套實現。

說白了,就是也要采用交出去還回來的模式,但是如何交出去,怎樣還回來,要自己去實現,還有這個專門的線程池也要自己來提供。

SpringMvc提供了對異步的支持,所以它遵守了這個規范,而且它也定義了相似的接口來與Java Web規范交互。

這個接口就是AsyncWebRequest,它的實現類是StandardServletAsyncWebRequest。同樣的兩個方法。

交出去

1void startAsync()

還回來

1void dispatch()

在這兩個方法的實現中,分別去調用了Java Web規范中的對應方法,這就是與Java Web規范的交互。

同時SpringMvc自己是有線程池的,所以在第一個方法里實現了把執行流程交出去的操作,在第二個方法里實現了把執行流程還回來的操作。

還有一個問題就是,并不是所有的方法都需要異步處理,所以就需要有一種方式來告訴SpringMvc,哪個方法需要異步處理。

SpringMvc選擇了采用方法返回值的類型來進行區分,凡是@RequestMapping方法的返回值類型是以下這些的,就表明開發人員想進行異步處理,于是SpringMvc就進行異步處理。

  1. 1Callable<V> 
  2.  2 
  3.  3DeferredResult<T> 
  4.  4 
  5.  5WebAsyncTask<V> 
  6.  6 
  7.  7StreamingResponseBody 
  8.  8 
  9.  9ResponseEntity<StreamingResponseBody> 
  10. 10 
  11. 11ResponseBodyEmitter 
  12. 12 
  13. 13ResponseEntity<ResponseBodyEmitter> 

對于異步處理的方式,其實也包括兩大類,一類是開發人員不管,完全交給SpringMvc去處理,一類是開發人員自己把控,不用SpringMvc參與。

對于第一類,我們返回Callable類型就可以了,這樣SpringMvc會把它提交到線程池里去執行。

 

 對于第二類,我們返回DeferredResult類型即可,它的意思是延遲結果,就是需要延遲一會才會有結果,但是如何延遲呢,SpringMvc并不會去管。

 

 因此是由開發人員來決定的,開發人員需要自己弄個線程去執行,并且一定要記住最后要設置一下結果才行。

我們看到耗時的代碼都跑到別的線程里去執行了,那么SpringMvc的處理主流程自然就結束了,這就是執行流程交出去的過程。

只不過有一點需要注意,這個請求的處理并沒有完成,只是暫時離開了SpringMvc的主流程,在別的線程池里運行著呢。

那么一段時間后,別的線程池運行結束,已經取得了結果,那這個結果和執行流程又該如何還回來呢?

直接還回來嗎?顯然是不可能的,因為SpringMvc的處理主流程在把任務交出去的那一刻就已經結束了、不存在了。

其實是別的線程池在處理結束并得到結果后,處理流程連同結果會返回到Web容器中,由Web容器再次分派這個請求到SpringMvc中來。

這就是為什么上面第二個方法的名字叫做dispatch的原因,就是再次分派這個請求到Web應用中來嘛,因此會再次進入到SpringMvc中,這不就把執行流程還回來了嘛。

可能會有人產生疑惑,如果SpringMvc再次處理這個請求那不就亂套了嗎?答案是顯然不會的,因為這次異步的結果已經存在了,自然不會再異步處理了,而是把它跳過去直接進入后續處理。

也就是對方法返回值(ReturnValue)的處理,比如序列化成JSON寫入響應,或進行視圖渲染,把渲染后的視圖寫入響應,這樣這個請求就算處理完畢了。

 

責任編輯:武曉燕 來源: 編程新說
相關推薦

2025-03-10 11:48:10

人工智能AI軟件

2021-04-20 11:40:47

指針類型CPU

2020-08-27 21:28:06

算法偽代碼初學者

2022-06-01 07:58:31

渲染3D

2023-11-29 08:01:38

websocket協議

2020-09-29 06:44:28

Redis延時隊列

2021-05-08 07:14:38

MySQL數據庫安全性

2021-01-26 16:17:42

人工智能機器學習智能語音

2021-01-26 10:17:48

智能語音大數據機器學習

2023-12-05 17:44:24

reactor網絡

2019-12-02 15:48:13

SSD容量閃存

2025-07-22 01:55:00

2021-06-04 07:13:43

Logger TRACEDEBUG

2022-08-08 20:23:14

一網統管企業協商

2023-09-07 08:15:58

場景同步異步

2023-05-29 08:45:45

Java注解數據形式

2022-05-04 08:38:32

Netty網絡框架

2021-06-13 12:03:46

SaaS軟件即服務

2021-10-09 00:02:04

DevOps敏捷開發

2022-03-27 20:32:28

Knative容器事件模型
點贊
收藏

51CTO技術棧公眾號

羞羞视频在线观看免费| 国产精品免费无遮挡| 久久影院资源站| 91久久精品国产91性色tv| 先锋影音网一区| 国产suv精品一区二区69| 亚洲国产日本| 日韩在线小视频| 国产国语老龄妇女a片| 韩漫成人漫画| 亚洲免费三区一区二区| 精品一区久久久久久| 夜夜骚av一区二区三区| 亚洲青色在线| 久久久国产一区二区三区| av在线播放网址| 福利一区二区免费视频| 亚洲成人激情av| 亚洲成人第一| 香蕉视频国产在线| 国产乱码精品一区二区三区忘忧草 | 精品国产鲁一鲁一区二区三区| av电影在线免费| 亚洲天堂成人在线观看| 欧美第一黄网| 欧美一区,二区| 国产一区在线视频| 国产精品成人免费视频| 日本一级淫片免费放| 97精品一区| 亚洲人高潮女人毛茸茸| 蜜臀aⅴ国产精品久久久国产老师| 91大神在线观看线路一区| 午夜精品免费在线| 日韩一级特黄毛片| 免费超碰在线| 国产精品久久久久影视| 欧美一级二级三级九九九| 日本黄视频在线观看| 国产伦精品一区二区三区免费| 国产欧美日韩中文字幕在线| 中文字幕在线欧美| 国产一区二区你懂的| 欧美黑人国产人伦爽爽爽| 亚洲少妇xxx| 成人中文在线| 视频一区视频二区国产精品| 无码 人妻 在线 视频| 亚洲丁香日韩| 精品爽片免费看久久| 性农村xxxxx小树林| 福利视频亚洲| 色婷婷久久综合| 亚洲国产精品久久久久爰色欲| 国产高清自产拍av在线| 亚洲国产另类精品专区| 可以看毛片的网址| xxxx在线视频| 欧美午夜性色大片在线观看| 日日碰狠狠添天天爽超碰97| 日本免费一区二区六区| 亚洲成a天堂v人片| 欧美二区在线视频| 伊人久久综合一区二区| 色av成人天堂桃色av| 草草草在线视频| 91综合国产| 欧美性猛交xxxxxx富婆| 中文字幕第100页| 国产精品一区二区三区av| 日韩欧美成人午夜| 国产女人18毛片水真多18 | 日韩欧美亚洲v片| 97在线观看免费观看高清| 国产精品欧美综合在线| 在线免费观看成人| 男男gaygays亚洲| 天天av天天翘天天综合网 | 丝袜美腿玉足3d专区一区| 番号集在线观看| 自拍偷拍国产亚洲| 男女超爽视频免费播放| 激情亚洲影院在线观看| 在线播放中文一区| 精品人妻一区二区免费| 你微笑时很美电视剧整集高清不卡| 亚洲午夜久久久影院| 69夜色精品国产69乱| 激情久久久久| 国产精品久久91| 国产成人a人亚洲精品无码| 成人午夜视频福利| 日本黑人久久| 性欧美猛交videos| 欧美性猛交视频| 色网站在线视频| 日韩三级av| 久久五月情影视| 91九色丨porny丨肉丝| 九九视频精品免费| 精品在线视频一区二区| 美女黄视频在线观看| 香港成人在线视频| 福利片一区二区三区| 男人的天堂久久| 欧美成人精品一区| 懂色av中文字幕| 成人午夜激情片| 在线成人性视频| 天堂中文最新版在线中文| 51精品国自产在线| 第一次破处视频| 亚洲黄页一区| 91天堂在线视频| 粉嫩av一区| 日韩欧美国产一区二区| 久久久久中文字幕亚洲精品| 久久国产小视频| 欧美一区视频在线| 成人毛片在线免费观看| 国产精品不卡在线观看| 国产xxxxx视频| 日韩mv欧美mv国产网站| 欧美日本中文字幕| 一级黄色小视频| 国产日韩欧美精品电影三级在线| 亚洲美免无码中文字幕在线| 国产亚洲精aa在线看| 中文字幕精品在线视频| 久久夜色精品国产噜噜亚洲av| 国产99精品视频| 日韩video| 欧美日韩破处视频| 中文字幕一区二区精品| 国产成人无码专区| 久久久国产午夜精品| 人人妻人人添人人爽欧美一区| 亚洲精品v亚洲精品v日韩精品| 最近2019年好看中文字幕视频| 懂色av蜜臀av粉嫩av分享吧最新章节| 成人动漫视频在线| 久久艹国产精品| 99亚洲乱人伦aⅴ精品| 欧美乱妇高清无乱码| 国产精品一级二级| 综合色天天鬼久久鬼色| 亚洲欧美日韩三级| 国产精品久久久久久久免费观看| 国产精品视频久| 色网站免费在线观看| 欧美调教femdomvk| 婷婷丁香综合网| 久久精品国产网站| 中文字幕一区二区三区精彩视频| 黑人一区二区三区| 色yeye香蕉凹凸一区二区av| 96日本xxxxxⅹxxx17| 中文字幕成人av| www.超碰97.com| 亚洲成人日韩| 国产精品毛片一区视频| 老司机深夜福利在线观看| 精品丝袜一区二区三区| 欧美一级做a爰片免费视频| 国产三级欧美三级日产三级99| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 国产黄大片在线观看画质优化| 欧美理论片在线| 久久国产波多野结衣| 国产成人小视频| 国产妇女馒头高清泬20p多| 美女久久久久| 国产精品一区二区久久久久| 成人av福利| 精品美女一区二区| 国产高潮久久久| 国产精品美女www爽爽爽| 污污视频在线免费| 夜久久久久久| 一本一道久久a久久综合精品 | 久久久久黄久久免费漫画| 亚洲大胆人体视频| 国产黄色免费视频| 一区二区三区不卡视频在线观看| 日本黄色录像片| 麻豆一区二区在线| 精品少妇人欧美激情在线观看| 一区二区小说| 91影视免费在线观看| 精品人人视频| yellow中文字幕久久| 欧美亚洲精品在线观看| 欧美伊人久久久久久久久影院| 日本妇女毛茸茸| 久久理论电影网| 制服.丝袜.亚洲.中文.综合懂| 久久资源在线| h无码动漫在线观看| 国模吧精品视频| 国产自产精品| 91麻豆精品国产综合久久久| 欧美亚洲成人免费| av超碰免费在线| 国产一区二区三区18| 韩国av在线免费观看| 欧美三级三级三级| 五月天综合激情| 亚洲美女视频在线| 日韩视频在线观看免费视频| 成人一道本在线| 亚洲五月激情网| 日本午夜精品一区二区三区电影| 成品人视频ww入口| 女人色偷偷aa久久天堂 | 欧美成熟视频| 日韩偷拍一区二区| 妖精一区二区三区精品视频 | 国产毛片一区二区三区| 国产精品制服诱惑| 精品一区二区三区视频在线播放 | 亚洲人成无码网站久久99热国产| 日韩欧美字幕| 欧洲精品国产| 羞羞答答一区二区| 国产成人亚洲欧美| 国产一区二区视频在线看| 国产精品视频永久免费播放| 麻豆mv在线观看| 久久久免费精品| 美足av综合网| 久久av红桃一区二区小说| 色网站免费在线观看| 亚洲人成电影在线播放| 香蕉视频国产在线| 国产视频久久久| 香蕉久久一区二区三区| 亚洲成人国产精品| 亚洲毛片欧洲毛片国产一品色| 欧美一级专区免费大片| 一级黄色a毛片| 欧美日韩精品一区二区| 中文字幕欧美在线观看| 欧美在线小视频| 久久精品99北条麻妃| 欧美视频自拍偷拍| 中文字幕av影视| 欧美女孩性生活视频| 136福利视频导航| 91精品国产福利| 亚洲精品字幕在线观看| 精品久久久久香蕉网| 亚洲av无码国产综合专区| 日韩三级视频在线观看| www.成人免费视频| 精品国产一区二区三区久久影院 | 中文字幕精品视频| 免费黄色网页在线观看| 久久躁狠狠躁夜夜爽| 最爽无遮挡行房视频在线| 久久久人成影片一区二区三区| 91福利在线免费| 2019中文字幕全在线观看| 精品国产第一福利网站| 国产精品久久二区| 国产精品va视频| 高清视频在线观看一区| 久久久亚洲欧洲日产| 欧美一级爽aaaaa大片| 欧美xxxxx视频| 99亚洲国产精品| 99国产精品视频免费观看一公开| 人妻少妇被粗大爽9797pw| 人人超碰91尤物精品国产| 九九九九九九九九| 成人激情黄色小说| 欧美人与性囗牲恔配| 自拍偷拍欧美精品| 日本网站免费观看| 欧美亚洲图片小说| 亚洲国产精品久久久久爰性色| 亚洲韩国青草视频| 日韩子在线观看| 久久男人资源视频| 成人在线免费电影网站| 成人18视频| 精品日韩在线| 国产成人一区二区三区别| 视频在线在亚洲| 在线成人精品视频| 久久这里只有精品6| 麻豆天美蜜桃91| 色呦呦日韩精品| 国产超碰人人模人人爽人人添| 日韩高清中文字幕| 高h视频在线观看| 国产成人97精品免费看片| 精品国产乱码一区二区三区| 久久精品magnetxturnbtih| 99视频精品全国免费| 日本毛片在线免费观看| 国产真实乱对白精彩久久| 国产中年熟女高潮大集合| 亚洲视频1区2区| 国产女主播喷水视频在线观看| 欧美tk—视频vk| 91在线直播| 欧美一级视频在线观看| 视频精品二区| 亚洲三区在线观看| 午夜一区不卡| 黄色国产在线视频| 亚洲男同1069视频| 中文字幕有码视频| 日韩精品中文字幕久久臀| 污视频网站免费在线观看| 国产精品欧美亚洲777777 | 亚洲欧洲中文| 欧美亚洲一级| 国产黑丝一区二区| 洋洋av久久久久久久一区| 中文字幕人成人乱码亚洲电影| 亚洲精品永久免费| 国产美女精品写真福利视频| 91久久大香伊蕉在人线| 久久综合av| 一区二区三区韩国| 久久精品人人做人人爽人人| 日本一级黄色大片| 精品国产a毛片| 日本资源在线| 97久久夜色精品国产九色| 久久久久久久久久久久久久| 日韩一级免费片| 中文在线免费一区三区高中清不卡| 久久国产视频精品| 精品无人国产偷自产在线| 999av小视频在线| 国产在线精品一区二区三区》| 欧美jjzz| 人妻av一区二区三区| 一区二区三区视频在线观看| 国产三级在线观看视频| 久久伊人91精品综合网站| 国产精品日本一区二区三区在线 | 国产九色91| 激情久久中文字幕| a天堂视频在线观看| 五月天中文字幕一区二区| 污污视频在线观看网站| 日韩av成人在线观看| 国产a久久精品一区二区三区 | 成人综合婷婷国产精品久久免费| 免费无码毛片一区二区app| 欧美大片拔萝卜| 草美女在线观看| 六十路精品视频| 日日摸夜夜添夜夜添国产精品 | 亚洲国产精品自拍| 午夜小视频在线播放| 日韩av电影中文字幕| 欧美午夜精品一区二区三区电影| 在线免费观看av的网站| 1000部国产精品成人观看| 国精品人妻无码一区二区三区喝尿| 欧美国产欧美亚洲国产日韩mv天天看完整| 91精品丝袜国产高跟在线| 欧美 丝袜 自拍 制服 另类 | 久久久精品91| 亚洲国产欧美一区二区三区同亚洲 | 午夜视频你懂的| 亚洲欧美综合在线精品| 午夜精品小视频| 欧美中文字幕在线观看| 成人区精品一区二区婷婷| 五月六月丁香婷婷| 午夜欧美一区二区三区在线播放| 久久久久国产精品嫩草影院| 国产精品日韩在线播放| 欧美fxxxxxx另类| 欧美亚一区二区三区| 777a∨成人精品桃花网| 538视频在线| 先锋影音亚洲资源| 成人激情免费网站| 中文字幕第2页| 欧美激情亚洲另类| 国产欧美久久一区二区三区| 久久精品亚洲天堂| 色天天综合久久久久综合片| 国产一二三区在线观看| 久久亚洲国产精品日日av夜夜| 另类欧美日韩国产在线| 欧美一级视频免费观看| 久久精品视频播放| 香蕉久久精品日日躁夜夜躁| 亚洲三级在线观看视频| 欧美视频在线观看 亚洲欧| 久久综合之合合综合久久| 麻豆91蜜桃| 国产成人午夜99999|