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

Python 協程與 JavaScript 協程的對比

開發 后端
以前沒怎么接觸前端,對 JavaScript 的異步操作不了解,現在有了點了解。一查發現 Python 和 JavaScript 的協程發展史簡直就是一毛一樣!這里大致做下橫向對比和總結,便于對這兩個語言有興趣的新人理解和吸收。

[[424288]]

 前言

以前沒怎么接觸前端,對 JavaScript 的異步操作不了解,現在有了點了解。一查發現 Python 和 JavaScript 的協程發展史簡直就是一毛一樣!

這里大致做下橫向對比和總結,便于對這兩個語言有興趣的新人理解和吸收。

共同訴求

  •  隨著 cpu 多核化,都需要實現由于自身歷史原因(單線程環境)下的并發功能
  •  簡化代碼,避免回調地獄,關鍵字支持
  •  有效利用操作系統資源和硬件:協程相比線程,占用資源更少,上下文更快

什么是協程?

總結一句話,協程就是滿足下面條件的函數:

  •  可以暫停執行(暫停的表達式稱為暫停點)
  •  可以從掛起點恢復(保留其原始參數和局部變量)
  •  事件循環是異步編程的底層基石

混亂的歷史

Python 協程的進化

  •  Python2.2 中,第一次引入了生成器
  •  Python2.5 中,yield 關鍵字被加入到語法中
  •  Python3.4 時有了 yield from(yield from 約等于 yield + 異常處理 + send), 并試驗性引入的異步 I/O 框架 asyncio(PEP 3156)
  •  Python3.5 中新增了 async/await 語法(PEP 492)
  •  Python3.6 中 asyncio 庫"轉正" (之后的官方文檔就清晰了很多)

在主線發展過程中,也出現了很多支線的協程實現如 Gevent。 

  1. def foo():  
  2.     print("foo start")  
  3.     a = yield 1  
  4.     print("foo a", a)  
  5.     yield 2  
  6.     yield 3  
  7.     print("foo end")  
  8. gen = foo()  
  9. # print(gen.next())  
  10. # gen.send("a")  
  11. # print(gen.next())  
  12. # print(foo().next())  
  13. # print(foo().next())  
  14. # 在python3.x版本中,python2.x的g.next()函數已經更名為g.__next__(),使用next(g)也能達到相同效果。  
  15. # next()跟send()不同的地方是,next()只能以None作為參數傳遞,而send()可以傳遞yield的值.  
  16. print(next(gen))  
  17. print(gen.send("a"))  
  18. print(next(gen))  
  19. print(next(foo()))  
  20. print(next(foo()))  
  21. list(foo())  
  22. """  
  23. foo start  
  24.  
  25. foo a a  
  26.  
  27.  
  28. foo start  
  29.  
  30. foo start  
  31.  
  32. foo start  
  33. foo a None  
  34. foo end  
  35. """ 

JavaScript 協程的進化

  •  同步代碼
  •  異步 JavaScript: callback hell
  •  ES6 引入 Promise/a+, 生成器 Generators(語法 function foo(){}* 可以賦予函數執行暫停/保存上下文/恢復執行狀態的功能), 新關鍵詞 yield 使生成器函數暫停。
  •  ES7 引入 async函數/await語法糖,async 可以聲明一個異步函數(將 Generator 函數和自動執行器,包裝在一個函數里),此函數需要返回一個 Promise 對象。await 可以等待一個 Promise 對象 resolve,并拿到結果

Promise 中也利用了回調函數。在 then 和 catch 方法中都傳入了一個回調函數,分別在 Promise 被滿足和被拒絕時執行,這樣就就能讓它能夠被鏈接起來完成一系列任務。

總之就是把層層嵌套的 callback 變成 .then().then()...,從而使代碼編寫和閱讀更直觀。

生成器 Generator 的底層實現機制是協程 Coroutine。 

  1. function* foo() {  
  2.     console.log("foo start")  
  3.     a = yield 1;  
  4.     console.log("foo a", a)  
  5.     yield 2;  
  6.     yield 3;  
  7.     console.log("foo end")  
  8.  
  9. const gen = foo();  
  10. console.log(gen.next().value); // 1  
  11. // gen.send("a") // http://www.voidcn.com/article/p-syzbwqht-bvv.html SpiderMonkey引擎支持 send 語法  
  12. console.log(gen.next().value); // 2  
  13. console.log(gen.next().value); // 3 
  14. console.log(foo().next().value); // 1  
  15. console.log(foo().next().value); // 1  
  16. /*  
  17. foo start  
  18.  
  19. foo a undefined  
  20.  
  21.  
  22. foo start  
  23.  
  24. foo start  
  25.  
  26. */ 

Python 協程成熟體

可等待對象可以在 await 語句中使用,可等待對象有三種主要類型:協程(coroutine), 任務(task) 和 Future。

協程(coroutine)

  •  協程函數:定義形式為 async def 的函數;
  •  協程對象:調用 協程函數 所返回的對象
  •  舊式基于 generator(生成器)的協程

任務(Task 對象):

  •  任務 被用來“并行的”調度協程, 當一個協程通過 asyncio.create_task() 等函數被封裝為一個 任務,該協程會被自動調度執行
  •  Task 對象被用來在事件循環中運行協程。如果一個協程在等待一個 Future 對象,Task 對象會掛起該協程的執行并等待該 Future 對象完成。當該 Future 對象 完成,被打包的協程將恢復執行。
  •  事件循環使用協同日程調度: 一個事件循環每次運行一個 Task 對象。而一個 Task 對象會等待一個 Future 對象完成,該事件循環會運行其他 Task、回調或執行 IO 操作。
  •  asyncio.Task 從 Future 繼承了其除 Future.set_result() 和 Future.set_exception() 以外的所有 API。

未來對象(Future):

  •  Future 對象用來鏈接 底層回調式代碼 和高層異步/等待式代碼。
  •  不用回調方法編寫異步代碼后,為了獲取異步調用的結果,引入一個 Future 未來對象。Future 封裝了與 loop 的交互行為,add_done_callback 方法向 epoll 注冊回調函數,當 result 屬性得到返回值后,會運行之前注冊的回調函數,向上傳遞給 coroutine。

幾種事件循環(event loop):

  •  libevent/libev:Gevent(greenlet + 前期 libevent,后期 libev)使用的網絡庫,廣泛應用;
  •  tornado:tornado 框架自己實現的 IOLOOP;
  •  picoev:meinheld(greenlet+picoev)使用的網絡庫,小巧輕量,相較于 libevent 在數據結構和事件檢測模型上做了改進,所以速度更快。但從 github 看起來已經年久失修,用的人不多。
  •  uvloop:Python3 時代的新起之秀。Guido 操刀打造了 asyncio 庫,asyncio 可以配置可插拔的event loop,但需要滿足相關的 API 要求,uvloop 繼承自 libuv,將一些低層的結構體和函數用 Python 對象包裝。目前 Sanic 框架基于這個庫

例子 

  1. import asyncio  
  2. import time  
  3. async def exec():  
  4.     await asyncio.sleep(2)  
  5.     print('exec')  
  6. # 這種會和同步效果一直  
  7. # async def go():  
  8. #     print(time.time())  
  9. #     c1 = exec()  
  10. #     c2 = exec()  
  11. #     print(c1, c2)  
  12. #     await c1  
  13. #     await c2  
  14. #     print(time.time())  
  15. # 正確用法  
  16. async def go():  
  17.     print(time.time())  
  18.     await asyncio.gather(exec(),exec()) # 加入協程組統一調度 
  19.     print(time.time())  
  20. if __name__ == "__main__":  
  21.     asyncio.run(go()) 

JavaScript 協程成熟體

Promise 繼續使用

Promise 本質是一個狀態機,用于表示一個異步操作的最終完成 (或失敗), 及其結果值。它有三個狀態:

  •  pending: 初始狀態,既不是成功,也不是失敗狀態。
  •  fulfilled: 意味著操作成功完成。
  •  rejected: 意味著操作失敗。

最終 Promise 會有兩種狀態,一種成功,一種失敗,當 pending 變化的時候,Promise 對象會根據最終的狀態調用不同的處理函數。

async、await語法糖

async、await 是對 Generator 和 Promise 組合的封裝,使原先的異步代碼在形式上更接近同步代碼的寫法,并且對錯誤處理/條件分支/異常堆棧/調試等操作更友好。

js 異步執行的運行機制

  1.  所有任務都在主線程上執行,形成一個執行棧。
  2.  主線程之外,還存在一個"任務隊列"(task queue)。只要異步任務有了運行結果,就在"任務隊列"之中放置一個事件。
  3.  一旦"執行棧"中的所有同步任務執行完畢,系統就會讀取"任務隊列"。那些對應的異步任務,結束等待狀態,進入執行棧并開始執行。

遇到同步任務直接執行,遇到異步任務分類為宏任務(macro-task)和微任務(micro-task)。

當前執行棧執行完畢時會立刻先處理所有微任務隊列中的事件,然后再去宏任務隊列中取出一個事件。同一次事件循環中,微任務永遠在宏任務之前執行。

例子 

  1. var sleep = function (time) {  
  2.     console.log("sleep start")  
  3.     return new Promise(function (resolve, reject) {  
  4.         setTimeout(function () {  
  5.             resolve();  
  6.         }, time);  
  7.     });  
  8. };  
  9. async function exec() {  
  10.     await sleep(2000);  
  11.     console.log("sleep end")  
  12.  
  13. async function go() {  
  14.     console.log(Date.now())  
  15.     c1 = exec()  
  16.     console.log("-------1")  
  17.     c2 = exec()  
  18.     console.log(c1, c2)  
  19.     await c1;  
  20.     console.log("-------2")  
  21.     await c2;  
  22.     console.log(c1, c2)  
  23.     console.log(Date.now())  
  24. go();

event loop 將任務劃分:

  •  主線程循環從"任務隊列"中讀取事件
  •  宏隊列(macro task)js 同步執行的代碼塊,setTimeout、setInterval、XMLHttprequest、setImmediate、I/O、UI rendering等,本質是參與了事件循環的任務
  • 微隊列(micro task)Promise、process.nextTick(node環境)、Object.observe, MutationObserver等,本質是直接在 Javascript 引擎中的執行的沒有參與事件循環的任務

擴展閱讀 Node.js 中的 EventLoop (http://www.ruanyifeng.com/blog/2014/10/event-loop.html)

總結與對比

說明 python JavaScript 點評
進程 單進程 單進程 一致
中斷/恢復 yield,yield from,next,send yield,next 基本相同,但 JavaScript 對 send 沒啥需求
未來對象(回調包裝) Futures Promise 解決 callback,思路相同
生成器 generator Generator 將 yield 封裝為協程Coroutine,思路一樣
成熟后關鍵詞 async、await async、await 關鍵詞支持,一毛一樣
事件循環 asyncio 應用的核心。事件循環會運行異步任務和回調,執行網絡 IO 操作,以及運行子進程。asyncio 庫支持的 API 較多,可控性高 基于瀏覽器環境基本是黑盒,外部基本無法控制,對任務有做優先級分類,調度方式有區別 這里有很大區別,運行環境不同,對任務的調度先后不同,Python 可能和 Node.js 關于事件循環的可比性更高些,這里還需需要繼續學習

到這里就基本結束了,看完不知道你會有什么感想,如有錯誤還請不吝賜教。 

 

責任編輯:龐桂玉 來源: 菜鳥學Python
相關推薦

2023-11-17 11:36:59

協程纖程操作系統

2025-06-26 04:10:00

2021-12-09 06:41:56

Python協程多并發

2024-02-05 09:06:25

Python協程Asyncio庫

2017-09-22 16:08:16

Python協程編程

2025-08-06 01:22:00

并發編程數據

2023-10-12 09:46:00

并發模型線程

2023-10-24 19:37:34

協程Java

2022-04-19 20:39:03

協程多進程

2025-02-08 09:13:40

2017-08-10 15:50:44

PHP協程阻塞

2017-06-15 13:15:39

Python協程

2024-06-27 07:56:49

2017-09-06 09:26:03

Python生成器協程

2021-04-25 09:36:20

Go協程線程

2022-09-06 20:30:48

協程Context主線程

2016-10-28 17:39:47

phpgolangcoroutine

2017-05-02 11:38:00

PHP協程實現過程

2020-11-29 17:03:08

進程線程協程

2023-08-08 07:18:17

協程管道函數
點贊
收藏

51CTO技術棧公眾號

麻豆mv在线看| 成人免费公开视频| 久久国产小视频| 欧美一区二区黄色| avav在线看| 在线免费黄色| 国产精品一区二区三区网站| 97超级碰碰人国产在线观看| 男人天堂av电影| 中文成人激情娱乐网| 亚洲国产一区二区a毛片| 欧美久久在线| www.我爱av| 日韩黄色免费网站| 久久久国产影院| 法国伦理少妇愉情| 精品精品视频| 在线这里只有精品| 男人的天堂狠狠干| 日韩黄色影院| 91麻豆精东视频| 亚洲最大福利网站| 国产精品无码粉嫩小泬| 怡红院精品视频在线观看极品| 色拍拍在线精品视频8848| 中文字幕黄色大片| 国外av在线| 成人精品免费看| 国产欧美日韩高清| 久久精品视频5| 在线观看日韩av电影| 久久久久www| 久久国产柳州莫菁门| 高清精品视频| 日韩亚洲欧美高清| 久久成年人网站| 日韩欧美一区二区三区免费观看| 久久精品亚洲麻豆av一区二区| 日本不卡免费高清视频| 欧美精品成人久久| 国产精品传媒精东影业在线| 亚洲香蕉成人av网站在线观看| 国产极品粉嫩福利姬萌白酱| 免费网站在线观看人| 国产精品久久免费看| 青娱乐一区二区| 青青国产在线| 91视频观看视频| 欧美成人蜜桃| 日韩一区av| 2017欧美狠狠色| 国产在线观看一区| 婷婷视频在线观看| av不卡在线观看| 久久免费看av| 嫩草在线播放| 久久久www免费人成精品| 久久精品ww人人做人人爽| 亚洲乱码精品久久久久..| 国产在线观看一区二区| 亚洲一区二区三| 亚洲精品97久久中文字幕| 高清不卡一区二区| 国产伦精品一区二区三区在线| 亚洲黄网在线观看| 久久一二三四| 秋霞成人午夜鲁丝一区二区三区| 精品国产欧美日韩不卡在线观看 | 精品国产一区二区三区香蕉沈先生 | 鲁丝片一区二区三区| 亚洲欧美日韩成人在线| 2欧美一区二区三区在线观看视频| 国产精品视频地址| 国产偷人爽久久久久久老妇app| 伊人久久大香线蕉综合热线| 国内精品久久久久久中文字幕| 色屁屁草草影院ccyy.com| 凹凸成人精品亚洲精品密奴| 色一情一乱一区二区| 影音先锋男人资源在线观看| 亚洲成人二区| 久久久久久午夜| 亚洲图片在线视频| 久久电影网站中文字幕| 999在线观看免费大全电视剧| 亚洲熟女综合色一区二区三区| 亚洲综合激情在线| 久久琪琪电影院| 精品久久久久久久久久久久久久久久久久| 91精品一区二区三区综合在线爱| 亚洲精品自在久久| 免费在线观看a视频| 中文无码久久精品| 国语自产精品视频在线看| 潘金莲一级淫片aaaaaa播放| 激情五月激情综合网| 激情欧美一区二区三区中文字幕| www.激情五月.com| 久久这里只有精品视频网| 日韩欧美亚洲精品| 成人免费一区二区三区牛牛| 91传媒视频在线播放| 自拍视频第一页| 蜜桃成人av| 欧美黄色免费网站| 中国黄色一级视频| 本田岬高潮一区二区三区| 性欧美大战久久久久久久免费观看| 欧美日本网站| 亚洲免费av观看| 国产免费人做人爱午夜视频| 一区中文字幕电影| 中文在线资源观看视频网站免费不卡| 熟女丰满老熟女熟妇| 国产精品99久久| 欧美在线视频一区| 亚洲av少妇一区二区在线观看| 国产成人综合亚洲网站| 色99中文字幕| 欧美13videosex性极品| 日韩女优制服丝袜电影| 日韩av片在线免费观看| 亚洲精品影院在线观看| 3d动漫精品啪啪一区二区三区免费 | 久久国产福利| 成人片在线免费看| 天堂中文8资源在线8| 精品人伦一区二区三区蜜桃网站 | 成人午夜亚洲| 日韩电影中文字幕av| 精品97人妻无码中文永久在线| 国产综合精品| 91久久久亚洲精品| 超碰免费97在线观看| 色综合久久久网| 国产免费一区二区三区最新6| 性欧美lx╳lx╳| 国内成人精品视频| 丰满人妻一区二区三区免费| 综合色天天鬼久久鬼色| 美女一区二区三区视频| 国产成人三级| 国产成人精品视频| 国产永久免费高清在线观看 | 欧洲精品久久| 麻豆免费在线| 亚洲第一区中文99精品| 国产亚洲欧美久久久久| 国产精品91xxx| 成人av在线播放观看| 亚洲精品福利| 欧美激情综合色| 少妇人妻精品一区二区三区| 亚洲综合丝袜美腿| 丰满少妇xbxb毛片日本| 亚洲夜间福利| 精品久久蜜桃| 综合日韩av| 亚洲网址你懂得| 一区精品在线观看| 亚洲天堂网中文字| 人妻精油按摩bd高清中文字幕| 免费视频国产一区| 国产精品久久久久久久久粉嫩av | 免费人成精品欧美精品| 99超碰麻豆| 999av小视频在线| 日韩av影视综合网| 怡红院av久久久久久久| 国产精品色噜噜| 久久久久久国产精品日本| 国产精品v日韩精品v欧美精品网站| 日本人成精品视频在线| 成人在线高清视频| 777午夜精品免费视频| 小泽玛利亚一区二区免费| 国产精品1区二区.| 成人黄色av片| 成人av二区| 99爱精品视频| 国产成人精品亚洲日本在线观看| 亚洲激情小视频| 波多野结衣网站| 亚洲美女屁股眼交3| 第四色在线视频| 青娱乐精品视频在线| 91国在线高清视频| 最近国产精品视频| 亚洲自拍偷拍一区| 亚洲优女在线| 欧美成人午夜影院| 免费福利在线观看| 欧美一区二区三区视频在线观看| 天堂资源在线视频| 成人精品小蝌蚪| 精品久久久久久久无码| 一区二区三区在线| 久久精品日韩| 日本免费精品| 国产精品久久久久久久9999| tube8在线hd| 中文字幕亚洲情99在线| 天天摸夜夜添狠狠添婷婷| 欧美日韩一区三区| 色婷婷av国产精品| 亚洲欧美一区二区三区久本道91 | 国产精品99久久久久久似苏梦涵| 在线视频不卡一区二区三区| 人人网欧美视频| 成人在线国产精品| 亚洲1234区| 亚州av一区二区| 二区在线播放| 中文字幕日韩精品有码视频| 好吊视频一二三区| 51精品视频一区二区三区| 国产精品第5页| 亚洲国产综合视频在线观看| 国产稀缺精品盗摄盗拍| 国产欧美一区视频| 欧美做受喷浆在线观看| 国产不卡视频在线播放| 网站在线你懂的| 奇米精品一区二区三区四区| 欧美亚洲国产成人| 精品动漫3d一区二区三区免费| 精品国产免费久久久久久尖叫| 黄色软件视频在线观看| 欧美黑人极品猛少妇色xxxxx| 亚洲精品国产手机| 91精品国产综合久久久蜜臀图片 | 成人免费在线电影| 日韩精品一区二区三区视频播放| 日本一区二区欧美| 亚洲女女做受ⅹxx高潮| a级黄色免费视频| 国产嫩草影院久久久久| 国产精品亚洲无码| 99视频一区二区| 日本护士做爰视频| caoporn国产精品| 99精品一区二区三区无码吞精| 日本一区中文字幕| 欧美日韩在线成人| 久久一二三四| 成人久久久久久久久| 亚洲欧美网站| 国产男女无遮挡| 久久精品欧洲| 精品久久久噜噜噜噜久久图片 | 久久亚洲欧美日韩精品专区| 免费网站免费进入在线| 久久精品成人欧美大片古装| 国产一二区在线| 久久精视频免费在线久久完整在线看 | 国产羞羞视频在线播放| 欧美人与性动交a欧美精品| 日韩电影免费观看| 性欧美激情精品| 蜜臀国产一区| 国产精品青青在线观看爽香蕉| a级网站在线播放| 久久成人亚洲精品| 麻豆av在线免费观看| 午夜精品一区二区三区视频免费看| 国产午夜视频在线观看| 揄拍成人国产精品视频| 日本电影全部在线观看网站视频| 亚洲黄页视频免费观看| 天天色天天操天天射| 亚洲片国产一区一级在线观看| www.香蕉视频| 亚洲精品福利免费在线观看| 理论视频在线| 精品国产区一区二区三区在线观看| 四虎精品成人免费网站| 亚洲天堂av高清| 精品美女在线观看视频在线观看 | 中文av资源在线| 久久久影视精品| 国精产品一区一区三区四川| 成人久久一区二区| 国产精品99久久免费观看| 九色综合婷婷综合| 成人毛片在线| 人人妻人人做人人爽| 久久综合九色| 下面一进一出好爽视频| 久久麻豆一区二区| 一区二区视频免费看| 欧美日韩精品在线视频| 91禁在线观看| 日韩经典中文字幕| 操你啦在线视频| 日韩av免费看| xvideos.蜜桃一区二区| 日本一区二区三区免费观看 | 亚洲色图五月天| 黄色av电影在线观看| 午夜精品久久久久久久男人的天堂 | 国产欧美精品一区二区色综合| 在线 丝袜 欧美 日韩 制服| 中文字幕日韩欧美一区二区三区| 天堂av网手机版| 天天亚洲美女在线视频| 在线视频 91| 亚洲欧美日韩图片| 国产在线拍揄自揄拍视频 | 亚洲色图25p| 日本片在线看| 91精品国产自产在线老师啪| 精品在线99| 欧妇女乱妇女乱视频| 久久黄色影院| 麻豆传媒在线看| 国产免费久久精品| 欧美 日韩 精品| 精品粉嫩aⅴ一区二区三区四区| 日韩一区二区三区不卡| 日韩视频免费看| 九九热线视频只有这里最精品| 国产精品久久久久久久久久尿| 成人影院大全| 精品亚洲一区二区三区四区五区高| 精品国产一区二区三区不卡蜜臂| 91免费国产视频| 欧美日韩性在线观看| av网站在线观看不卡| 国产成人免费在线观看| 波多野结衣喷潮| 欧美三级资源在线| 国产高清视频免费最新在线| 欧美一区三区三区高中清蜜桃| 成人免费在线观看视频| 日韩国产欧美一区| 久久国产精品久久久久久电车| 色多多视频在线播放| 久久无码av三级| 亚洲图片在线视频| 亚洲欧美激情一区| 最近高清中文在线字幕在线观看1| 国产区精品视频| 日产精品一区二区| 午夜宅男在线视频| 国产精品免费免费| 在线免费观看av片| 色老头一区二区三区在线观看| 免费在线中文字幕| 国产精品视频免费观看| 在线视频观看日韩| 国模私拍在线观看| 欧美日韩在线影院| 免费一级毛片在线观看| 国产成人久久久| 欧美一区二区三| 日本在线观看免费视频| 中日韩免费视频中文字幕| 中文字幕在线2018| 久久精品国产v日韩v亚洲| 97久久精品一区二区三区的观看方式| 精品欧美一区二区精品久久| 国产精品日本欧美一区二区三区| 手机免费av片| 亚洲欧美日韩久久| 免费激情视频网站| 欧美中文字幕在线| 成人精品影院| 自拍偷拍激情视频| 五月天婷婷综合| 国产黄色片在线播放| 亚洲影院色无极综合| 亚洲人体偷拍| 国产毛片欧美毛片久久久| 3atv在线一区二区三区| 日本在线视频www鲁啊鲁| 精品国产综合区久久久久久| 视频精品一区二区| 91插插插插插插| 日韩hd视频在线观看| 国产福利亚洲| 欧美日韩中文字幕在线播放| av福利精品导航| 中文字幕一区二区三区人妻四季 | 精品一区二区三区蜜桃在线| 91精品国产综合久久婷婷香蕉| av在线日韩国产精品| 亚洲自拍偷拍网址| 噜噜爱69成人精品| 麻豆视频在线免费看| 精品亚洲国产视频| 青草综合视频| av免费观看大全| 国产精品成人免费精品自在线观看| 亚洲婷婷综合网| 久久综合五月天| 伊人久久大香线蕉综合网蜜芽 | 日韩高清在线不卡| 久草中文在线视频| 中文字幕欧美视频在线| 亚洲一区二区免费在线观看|