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

這不會(huì)又是一個(gè)Go的BUG吧?

開發(fā) 前端
Go的設(shè)計(jì)者比較「偏執(zhí)」,認(rèn)為「不好」的設(shè)計(jì)堅(jiān)決不去實(shí)現(xiàn),就如鎖的實(shí)現(xiàn)不應(yīng)該依賴線程、協(xié)程信息;可重入(遞歸)鎖是一種不好的設(shè)計(jì)。所以這種看似有BUG的設(shè)計(jì),也存在一定的道理。

hello,大家好呀,我是小樓。

最近我又雙叒叕寫了個(gè)BUG,一個(gè)線上服務(wù)死鎖了,不過幸虧是個(gè)新服務(wù),沒有什么大影響。

出問題的是Go的讀寫鎖,如果你是寫Java的,不必劃走,更要看看本文,本文的重點(diǎn)在于Java和Go的讀寫鎖對(duì)比,甚至看完后你會(huì)有一個(gè)隱隱的感覺:Go的讀寫鎖是不是有BUG?

故障回放

背景簡(jiǎn)單抽象一下:一個(gè)server服務(wù)(Go語言實(shí)現(xiàn)),提供了一個(gè)http接口,另有一個(gè)client服務(wù)來調(diào)用這個(gè)接口,整體架構(gòu)非常簡(jiǎn)單,甚至都不用畫架構(gòu)圖你也能夠理解。

這兩個(gè)服務(wù)上線運(yùn)行了一段時(shí)間都沒什么問題,突然有一天client調(diào)用這個(gè)server的接口全都超時(shí)了。

碰到這種問題,第一時(shí)間去查看日志和監(jiān)控,client端全是超時(shí)日志,server端日志沒有異常,甚至連請(qǐng)求的監(jiān)控都沒有上報(bào),仿佛client端的請(qǐng)求沒有到達(dá)server端一樣。

于是去server服務(wù)器上手動(dòng)請(qǐng)求了一下接口,結(jié)果卡主不動(dòng),這下排除了client,一定是server端出了問題。

這種卡死的問題其實(shí)很好查,直接用pprof看協(xié)程卡在哪里基本就能得出結(jié)論(和Java的jstack類似的工具),但這個(gè)服務(wù)沒有開啟pprof,只能改了代碼打開pprof重新發(fā)布,等待下次問題復(fù)現(xiàn)。

好在運(yùn)氣不錯(cuò),2天后問題就出來了,用pprof看下程序卡在了哪里:

圖片

原來卡在了一個(gè)判斷集群或服務(wù)是否是小流量的地方,該接口會(huì)接受一個(gè)集群名或服務(wù)名的參數(shù),然后判斷該集群或服務(wù)是否是小流量集群,進(jìn)而做一系列事,至于做了啥不重要。小流量集群是配置在配置中心中。

我把這段代碼摘出來(圖中是走的判斷集群分支,下面代碼以更簡(jiǎn)單的服務(wù)分支講解,底層一致)。為了避免空洞,這里我先簡(jiǎn)單講解一下程序的邏輯:

首先小流量的配置定義了一個(gè)讀寫鎖(sync.RWMutex),以及在內(nèi)存中保持了哪些服務(wù)需要灰度的規(guī)則(scopesMap)

圖片

配置變更時(shí)調(diào)用reset刷新這個(gè)scopesMap,用寫鎖,后續(xù)邏輯省略:

圖片

判斷是否為灰度服務(wù),先加讀鎖看看規(guī)則是否存在:

圖片

再加鎖判斷服務(wù)是否命中規(guī)則:

圖片

這樣圈出重點(diǎn),你可能一眼就看出問題了,讀鎖加了兩次,第二次沒有必要,屬于手誤了。確實(shí),刪除第二個(gè)加讀鎖的代碼就沒問題了。如果事情到這就結(jié)束了,那這篇文章也沒有必要寫了,下面我們分析下為什么會(huì)死鎖。

為什么會(huì)死鎖

看到這個(gè)結(jié)果,我第一反應(yīng)是Go的鎖的重入性問題。

熟悉Java的同學(xué)對(duì)鎖的重入并不陌生,以防有讀者不明白鎖的重入性,我用一句話來概括:

可重入鎖?就是可以重復(fù)進(jìn)入的鎖,也叫遞歸鎖。

Java中有一個(gè)ReentrantLock,比如這樣,重復(fù)加鎖是沒有問題的:

圖片

但Go里面的鎖是不可重入的:

圖片

這個(gè)坑我也踩過,這是Go的實(shí)現(xiàn)問題。只要你愿意,用Java也能實(shí)現(xiàn)不可重入鎖,但Java中大多數(shù)使用的還是可重入鎖,因?yàn)橛闷饋肀容^方便。

至于Go為什么不實(shí)現(xiàn)一個(gè)可重入的鎖,其原因總結(jié)起來就是Go的設(shè)計(jì)者覺得重入鎖是個(gè)不好的設(shè)計(jì),所以沒有采納。不過我覺得這篇文章的評(píng)論更精彩:

圖片

說到這,你可能會(huì)說,上面出問題的明明是讀寫鎖(sync.RWMutex),讀寫鎖的特點(diǎn)是什么?

讀與讀之間不互斥

讀與寫、寫與寫之間互斥

既然讀鎖之間是不互斥,也就是可加兩次讀鎖,那么讀鎖必然是可重入的。我們寫個(gè)demo測(cè)試下:

圖片

果然如我們所想,順便看一下加讀鎖的邏輯:

圖片

看我框出的代碼,如果有寫鎖在等待,讀鎖需要等寫鎖!

這是什么邏輯?

如果一個(gè)協(xié)程已經(jīng)拿到了讀鎖,另一個(gè)協(xié)程嘗試加寫鎖,這時(shí)應(yīng)該加不了,沒什么問題。如果這個(gè)讀鎖的協(xié)程再去拿讀鎖,需要等寫鎖,這就死鎖了啊!

為了驗(yàn)證,我構(gòu)造了一個(gè)demo:

圖片

這段代碼按①、②、③順序執(zhí)行,第②段寫鎖需要等第①個(gè)讀鎖釋放,第③段讀鎖需要等第②段寫鎖釋放,最終就是一個(gè)死鎖的邏輯。

仔細(xì)想,這里面最有爭(zhēng)議的要屬已經(jīng)拿到讀鎖再次進(jìn)入讀鎖需要等寫鎖這個(gè)邏輯。

Java中是這樣的嗎?寫個(gè)demo試試:

圖片

Java一點(diǎn)事都沒有,這是為啥?遇事不決,看源碼!但Java的源碼太長(zhǎng),又不是本文重點(diǎn),所以就只說幾點(diǎn)重要的結(jié)論:

  • Java的ReentrantReadWriteLock支持鎖降級(jí)?,但不能升級(jí),即獲取了寫鎖的線程,可以繼續(xù)獲取讀鎖,但獲取讀鎖的線程無法再獲取寫鎖;
  • ReentrantReadWriteLock實(shí)現(xiàn)了公平和非公平兩種鎖,公平鎖的情況下,獲取讀鎖、寫鎖前需要看同步隊(duì)列中是否先線程在我之前排隊(duì);非公平鎖的情況下:寫鎖可以直接搶占鎖,但是讀鎖獲取有一個(gè)讓步條件,如果當(dāng)前同步隊(duì)列head.next是一個(gè)寫鎖在等待,并且自己不是重入的,就要讓步等待。

在Java的實(shí)現(xiàn)下,如果一個(gè)線程持有了讀鎖,寫鎖自然是需要等待的,但是持有讀鎖的線程也可以再次重入該讀鎖。

我們發(fā)現(xiàn)Java和Go的讀寫鎖實(shí)現(xiàn)不一致,這個(gè)不一致也就是導(dǎo)致我們寫出BUG的原因。

這合理嗎

拋開實(shí)現(xiàn),我們思考一下這樣合理嗎?

一個(gè)協(xié)程(或線程)已經(jīng)獲取到了讀鎖,別的協(xié)程(線程)獲取寫鎖時(shí)必然需要等待讀鎖的釋放

既然這個(gè)協(xié)程(或線程)已經(jīng)擁有了這個(gè)讀鎖,那么為什么再次獲取讀鎖時(shí)需要管別的寫鎖是否等待呢?

可以想象病人排隊(duì)看醫(yī)生,前面一個(gè)病人向醫(yī)生問診,進(jìn)去后把門關(guān)上,在里面無論問多長(zhǎng)時(shí)間(理論上)是他的權(quán)利,后面的病人在他沒出來前是不能打開門的。

但Go的實(shí)現(xiàn)卻是,前一個(gè)病人每問完一句話得看一眼門外是否有人在等,如果有人在等,那他就要等門外的人問完才能問,但門外的人又在等他問,所以大家死鎖了,誰都別想看完病。

是不是細(xì)思下來,感覺這是不是Go的一個(gè)BUG?

Go為什么這么實(shí)現(xiàn)

我嘗試去github上搜索了一下,發(fā)現(xiàn)了這個(gè)issue:

https://github.com/golang/go/issues/30657

從標(biāo)題就能看出他遇到了和我一樣的問題:

Read-locking shouldn't hang if thread has already a write-lock? #30657

看看里面有人是怎么回答的:

圖片

這位大佬說,這不符合Go鎖的原理,Go的鎖是不知道協(xié)程或者線程信息的,只知道代碼調(diào)用先后順序,即讀寫鎖無法升級(jí)或降級(jí)。

Java中的鎖記錄了持有者(線程id),但Go的鎖是不知道持有者是誰,所以獲取了讀鎖之后再次獲取讀鎖,這里的邏輯是區(qū)分不了是持有者還是其他的協(xié)程,所以就統(tǒng)一處理。

這點(diǎn)其實(shí)在Go源碼的注釋中體現(xiàn)了,我也是后來才注意到:

圖片

翻譯一下是:

如果一個(gè)協(xié)程持有讀鎖,另一個(gè)協(xié)程可能會(huì)調(diào)用Lock加寫鎖,那么再也沒有一個(gè)協(xié)程可以獲得讀鎖,直到前一個(gè)讀鎖釋放,這是為了禁止讀鎖遞歸。也確保了鎖最終可用,一個(gè)阻塞的寫鎖調(diào)用會(huì)將新的讀鎖排除在外。

不過這個(gè)警示實(shí)在是太不起眼了,大概就是這個(gè)效果:

圖片

這一幕像極了產(chǎn)品和程序員:

  • 產(chǎn)品經(jīng)理:我要實(shí)現(xiàn)這個(gè)功能,怎么實(shí)現(xiàn)我不管。
  • Go:這破壞了我的設(shè)計(jì)原則,不接受這個(gè)功能。
  • 產(chǎn)品經(jīng)理:大家都退一步,你換個(gè)代價(jià)小的方法解決吧!

于是,程序員在讀寫鎖上寫下了一段注釋:

圖片

最后

這個(gè)死鎖的坑確實(shí)很容易踩,尤其是Java程序員來寫Go,所以我們寫Go代碼時(shí)還是得寫得更Go一點(diǎn)才行。

Go的設(shè)計(jì)者比較「偏執(zhí)」,認(rèn)為「不好」的設(shè)計(jì)堅(jiān)決不去實(shí)現(xiàn),就如鎖的實(shí)現(xiàn)不應(yīng)該依賴線程、協(xié)程信息;可重入(遞歸)鎖是一種不好的設(shè)計(jì)。所以這種看似有BUG的設(shè)計(jì),也存在一定的道理。

當(dāng)然每個(gè)人都有自己的想法,你覺得Go的讀寫鎖這樣實(shí)現(xiàn)合理嗎?

責(zé)任編輯:武曉燕 來源: 捉蟲大師
相關(guān)推薦

2025-02-13 07:00:00

Dubbo-goJava服務(wù)端

2009-09-14 17:08:02

WebFormView

2019-02-21 09:40:22

開源工具待辦事項(xiàng)

2023-01-27 23:14:26

Go2兼容性Go1

2021-10-08 07:50:57

軟件設(shè)計(jì)程序

2017-10-10 15:14:23

BUGiOS 11蘋果

2023-05-09 11:02:22

Go內(nèi)聯(lián)版本

2014-12-17 09:40:22

dockerLinuxPaaS

2024-04-22 00:00:01

Redis集群

2015-10-12 15:50:07

PaaS云平臺(tái)開發(fā)go

2019-08-01 12:59:21

Bug代碼程序

2015-08-24 10:07:13

程序員bug

2023-03-13 08:09:03

Protobuffeature分割

2022-05-16 08:42:26

Pandasbug

2024-08-08 08:09:38

2014-10-21 11:11:08

Siri人工智能

2021-08-04 08:31:10

MySQL數(shù)據(jù)庫(kù)日志

2021-09-07 11:20:02

binlogMySQL數(shù)據(jù)庫(kù)

2011-03-03 21:04:08

bug程序員

2022-04-06 08:47:03

Dubbo服務(wù)協(xié)議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品美女久久久久人| 日本韩国精品一区二区| 婷婷色综合网| 日韩精品一区二区三区蜜臀| 无码人妻少妇伦在线电影| 亚洲aaa在线观看| 秋霞电影网一区二区| 大量国产精品视频| 成人激情综合网| 91看片淫黄大片91| 污视频软件在线观看| 美女视频免费一区| 欧美精品精品精品精品免费| 性猛交娇小69hd| 国产午夜久久av| 色先锋资源久久综合| 制服国产精品| 你懂得网站在线| 国产成人免费视频精品含羞草妖精| 国产91精品黑色丝袜高跟鞋| 免费精品在线视频| 黄色欧美网站| 91麻豆精品国产综合久久久久久| 成年人视频观看| 成人免费网址| 国产人妖乱国产精品人妖| 不卡视频一区| 中文字幕在线日亚洲9| 亚洲精品1区2区| 久久伊人精品一区二区三区| 国产三级av在线播放| 国产精品chinese在线观看| 欧美日韩另类国产亚洲欧美一级| 国产极品尤物在线| 国产视频一区二区| 国产精品日韩精品欧美在线| 欧美精品一区在线| 日本精品999| 国产99精品国产| 成人精品久久av网站| 乱子伦一区二区三区| 亚洲一区二区伦理| 午夜欧美不卡精品aaaaa| 欧洲第一无人区观看| 不卡一区2区| 亚洲性线免费观看视频成熟| 亚洲一级av无码毛片精品| 91精品国产自产精品男人的天堂| 欧美一级免费大片| 九九热视频免费| japansex久久高清精品| 欧美日韩成人综合| 色一情一区二区三区| 免费一级欧美在线观看视频| 欧洲av一区二区嗯嗯嗯啊| 国产极品美女高潮无套久久久| 久久男人av资源站| 午夜久久福利影院| 男人添女人下面高潮视频| 国产精品国精产品一二| 亚洲一线二线三线久久久| 成人免费看片'免费看| 伊人福利在线| 午夜精品福利久久久| 波多野结衣乳巨码无在线| 黄视频免费在线看| 日韩欧美在线观看| 日韩精品你懂的| 91成人短视频在线观看| 91精品国产一区二区| 欧美体内she精高潮| 99这里只有精品视频| 亚洲国产一区自拍| 一区二区黄色片| 成人久久电影| 久久国产精品偷| 免费看一级一片| 国产欧美在线| 国产精品久久久久久中文字| 91女人18毛片水多国产| 国产成人在线免费观看| 精品视频导航| 成人18在线| 亚洲欧美日韩国产另类专区| www.亚洲视频.com| 一区二区电影免费观看| 欧美日韩国产精选| 中文字幕第3页| 欧美色图国产精品| 久久久精品一区| 精品午夜福利视频| 日本视频在线一区| 91国产在线播放| 视频午夜在线| 最新不卡av在线| 日韩精品 欧美| 久久免费资源| 日韩国产中文字幕| 日韩欧美国产成人精品免费| 99成人免费视频| 国产日韩精品视频| 婷婷在线观看视频| 中文字幕一区av| 9久久9毛片又大又硬又粗| 亚洲精品伦理| 亚洲激情小视频| 亚洲国产精品一区二区久久hs| 国产一区二区三区四区老人| 国产精品久久久久久久美男| 丰满人妻av一区二区三区| 国产午夜亚洲精品理论片色戒 | 色综合手机在线| 91精品尤物| 91在线视频观看| 日韩精品极品视频免费观看| 黄色在线观看av| 欧美精品午夜| 国产日韩亚洲欧美| 邻居大乳一区二区三区| 亚洲6080在线| 国产精品熟女一区二区不卡| 精品视频久久| 91爱爱小视频k| 亚洲乱码国产乱码精品精软件| 国产精品电影一区二区三区| 大肉大捧一进一出好爽动态图| 亚洲国产欧美国产第一区| 国产一区二区三区在线看| 国产无遮挡免费视频| 国产美女一区二区三区| 亚洲精品无人区| 精品欧美一区二区三区在线观看| 亚洲国产中文字幕久久网| 四虎永久免费在线| 久国产精品韩国三级视频| 日本一区不卡| 欧美成人a交片免费看| 日韩福利视频在线观看| 日操夜操天天操| 成人午夜免费视频| 日本aa在线观看| 视频精品一区二区三区| 久久久久www| 国产视频在线观看免费| 日韩毛片视频在线看| 羞羞的视频在线| 91精品国产福利在线观看麻豆| 国产精品美女久久| 在线视频1区2区| 欧美午夜精品久久久久久孕妇| 熟女高潮一区二区三区| 日韩电影在线看| 午夜一区二区三区| 四虎在线精品| 久久国产精品亚洲| 亚洲a视频在线观看| 伊人性伊人情综合网| xxx中文字幕| 国内成人在线| 精品免费二区三区三区高中清不卡| 97人澡人人添人人爽欧美| 精品日韩一区二区三区免费视频| 国产亚洲小视频| av电影天堂一区二区在线| av7777777| 国产在视频线精品视频www666| 国产精品电影久久久久电影网| 午夜毛片在线| 欧美刺激午夜性久久久久久久| 国产无精乱码一区二区三区| 久久婷婷色综合| 激情五月亚洲色图| 五月婷婷六月综合| 国产精品一区二区三区免费| 亚洲电影观看| 中文字幕日韩在线观看| jlzzjlzzjlzz亚洲人| 精品成人av一区| 91成人精品一区二区| 韩日av一区二区| 青春草国产视频| 国产精品午夜一区二区三区| 国产日韩精品在线| а√天堂中文资源在线bt| 亚洲欧洲在线播放| 91久久精品无码一区二区| 亚洲一区影音先锋| 在线免费观看麻豆| 国产麻豆成人传媒免费观看| 日韩在线综合网| 久久精品国产www456c0m| 国产 高清 精品 在线 a| 伊伊综合在线| 欧美超级免费视 在线| 日韩av免费观影| 欧美一区二区三区视频免费 | 色94色欧美sute亚洲线路一久| 黄色av片三级三级三级免费看| 成人午夜电影久久影院| 午夜视频你懂的| 99re国产精品| 米仓穗香在线观看| 青青草97国产精品麻豆| 狠狠久久综合婷婷不卡| 性欧美video另类hd尤物| 欧美专区国产专区| 国产精品va在线观看视色| 亚洲欧洲在线免费| 欧美熟女一区二区| 91麻豆精品国产91久久久久| 99超碰在线观看| 一区二区高清在线| 欧美xxxooo| 久久久久九九视频| 影音先锋资源av| 精品一区二区在线视频| 狠狠操精品视频| 国产视频欧美| 97中文字幕在线| 亚洲欧美偷拍自拍| 亚洲成人午夜在线| 亚洲免费福利一区| 精品乱色一区二区中文字幕| 亚洲三级av| 99re6在线| 电影91久久久| 国产主播欧美精品| 日韩经典一区| 日韩av电影在线播放| 国产丝袜精品丝袜| 精品自拍视频在线观看| 黄av在线播放| 久久久av网站| 精产国品自在线www| 中文字幕日韩av| 成年人在线观看视频| 亚洲免费影视第一页| 无码国产精品96久久久久| 精品国产人成亚洲区| 国产成人麻豆精品午夜在线| 欧美一级生活片| 国产三级精品在线观看| 91麻豆精品国产91久久久久| 国产巨乳在线观看| 欧美一二区视频| 精品久久久免费视频| 日韩三级电影网址| 亚洲黄色精品视频| 精品国产乱码久久久久久免费| 在线观看国产成人| 欧美美女一区二区三区| 这里只有精品9| 制服.丝袜.亚洲.中文.综合 | 人妻少妇一区二区三区| 欧美日韩在线播放一区| 中文字幕乱码人妻二区三区| 欧美在线一二三四区| 亚洲av综合一区| 欧美日韩国产在线观看| 一区二区三区免费在线| 91精品在线一区二区| 国产精品一品二区三区的使用体验| 制服丝袜国产精品| 亚洲精品久久久久久动漫器材一区 | 欧美一区,二区| 日韩大陆毛片av| 欧美日本网站| 中文字幕最新精品| 毛片激情在线观看| 欧美激情在线播放| 三级在线看中文字幕完整版| 国产精品高潮视频| 成人精品视频在线观看| 97自拍视频| 亚洲人成网77777色在线播放| 日韩国产精品一区二区| 91嫩草亚洲精品| 99er在线视频| 久久精品日韩欧美| 午夜精品免费看| 成人免费视频视频在线观看免费| 加勒比一区二区| 中文字幕一区二区三区不卡| 日本少妇xxxx动漫| 欧美在线观看一区| 99热这里只有精品1| 日韩大陆欧美高清视频区| 在线观看美女网站大全免费| 欧美激情网友自拍| 成人在线高清| 国产欧美综合精品一区二区| 精品一区二区三区在线| 97久久国产亚洲精品超碰热| 亚洲欧美春色| 黄色a级三级三级三级| 久久亚洲综合色| 懂色av懂色av粉嫩av| 91成人国产精品| 免费观看a视频| 日韩三级影视基地| 在线精品亚洲欧美日韩国产| 91亚洲精品久久久久久久久久久久| 美女一区2区| 91成人在线视频观看| 午夜在线视频一区二区区别| 国模大尺度视频| 中文字幕国产一区| 日日夜夜综合网| 日韩三级.com| 日韩在线免费电影| 日本久久久久久| 欧美日韩精品一区二区三区在线观看| 蜜桃视频成人在线观看| 日韩福利电影在线观看| 国产精品一区二区无码对白| 亚洲素人一区二区| 波多野结衣不卡| 日韩精品小视频| 欧美精品videosex| 92国产精品视频| 日韩一区二区在线| 乱子伦视频在线看| av高清不卡在线| 黄色激情视频在线观看| 欧美一级在线视频| 免费av在线网站| 国产精品无av码在线观看| 台湾佬综合网| 妞干网在线视频观看| 国产91在线|亚洲| 国产精品老熟女一区二区| 欧美日韩一区二区三区四区| 狠狠v欧美ⅴ日韩v亚洲v大胸| 97精品国产97久久久久久春色| 综合久久成人| 国产视频在线观看网站| 国产精品一区二区免费不卡| 99成人在线观看| 欧美精品第1页| 麻豆传媒视频在线观看| 国产在线不卡精品| 欧美3p视频| 不用播放器的免费av| 国产精品免费看片| 中文资源在线播放| 日韩亚洲成人av在线| 日韩国产大片| 乱子伦一区二区| 国产精品一区二区久激情瑜伽| 视频国产一区二区| 在线不卡的av| caoporm免费视频在线| 99精品国产一区二区| 欧美三区美女| 亚洲の无码国产の无码步美| 亚洲成av人片在www色猫咪| 日韩在线视频免费| 欧美亚洲另类制服自拍| 西瓜成人精品人成网站| 男女曰b免费视频| 国产精品私房写真福利视频| 一级黄色免费看| 美日韩精品视频免费看| 成人午夜三级| 欧美三级午夜理伦三级| 国产欧美一区在线| 97国产成人无码精品久久久| 久久综合久久88| 国产日韩三级| 亚洲国产精品毛片av不卡在线| 国产免费成人在线视频| jizz中国女人| 欧美诱惑福利视频| 北条麻妃国产九九九精品小说| 亚洲涩涩在线观看| 亚洲福利视频一区| 精品999视频| 91在线视频九色| 99在线热播精品免费99热| 人妻视频一区二区| 制服丝袜激情欧洲亚洲| 欧美亚洲日本精品| 一级二级三级欧美| 成人午夜视频福利| 做爰视频毛片视频| 欧美激情网站在线观看| 狠狠综合久久av一区二区蜜桃| 日本精品一区在线| 欧美视频13p| 久cao在线| 欧美激情一区二区三区在线视频| 蜜乳av一区二区三区| 免费一级特黄特色大片| 亚洲天堂色网站| 亚洲欧洲国产精品一区| 欧美性猛交xxx乱久交| 亚洲综合免费观看高清完整版| 国产人成在线视频| 国产精品大全| 精东粉嫩av免费一区二区三区|