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

我跟你說@RefreshScope跟Spring事件監(jiān)聽一起用有坑!

開發(fā) 前端
實話實說,我在測試給我上報問題,到發(fā)現(xiàn)這個問題來自于 @RefreshScope 注解只用了 10 分鐘,如上文所說,我通過對比以前寫的 MemberLoginLogListener 監(jiān)聽類,早早的定位到問題來自于 @RefreshScope 注解。

本文記錄一下我在 Spring 自帶的事件監(jiān)聽類添加 @RefreshScope 注解時遇到的坑,原本這兩個東西單獨使用是各自安好,但當大家將它們組合在一起時,會發(fā)現(xiàn)我們的事件監(jiān)聽代碼被重復執(zhí)行。希望大家引以為鑒,避免重復踩坑。耐心看完,你一定會有所收獲!

前置描述

最近有一個用戶拉新的需求,需要在新用戶注冊時判斷用戶是否有對應的邀請關系,如果有則需要給新用戶贈送系統(tǒng)資源。

原有的用戶注冊邏輯里使用了 Spring 自帶的事件監(jiān)聽工具,也就是 applicationEventPublisher(事件發(fā)布類)以及 ApplicationListener(事件監(jiān)聽類),在用戶注冊完畢寫入用戶記錄并生成 token 后,會觸發(fā) RegisterEvent(注冊事件)的發(fā)布。偽代碼如下,

// 1. 用戶注冊,寫入數(shù)據(jù)庫
RegisterResponseVO registerResponseVO = memberRegisterService.register(new RegisterRequestVO(request);

// 2. 生成token
String token = getToken(memberEntity.getId(), request.getSource());
log.info("login mobile {} login token {}", request.getMobile(), token);

// 3. 發(fā)布注冊事件,會觸發(fā)登錄日志監(jiān)聽、優(yōu)惠券贈送監(jiān)聽等
applicationEventPublisher.publishEvent(new RegisterEvent(request, memberEntity, token));

由于之前代碼已經(jīng)使用事件監(jiān)聽邏輯,所以這里我們的新用戶注冊判斷邀請關系的邏輯就直接新建一個 NewUserInvitedListener 監(jiān)聽類即可。偽代碼如下,

@Slf4j
@RefreshScope
@AllArgsConstructor
@Component
public class NewUserInvitedListener implements ApplicationListener<RegisterEvent> {

    @Async("asyncServiceExecutor")
    @Override
    public void onApplicationEvent(RegisterEvent registerEvent) {
        UserLoginRequestVO requestVO = registerEvent.getRequestVO();
        MemberEntity memberEntity = registerEvent.getMemberEntity();
        log.info("================ NewUserInvitedListener =============== registerEvent is {}", registerEvent);
        // 1. 校驗邏輯
        validateUser(memberEntity);
        // 2. 判斷用戶是否有邀請關系
        // 3. 如果有則贈送系統(tǒng)資源
        ...
    }
}

OK,代碼邏輯也不復雜,寫完提測交給測試下班(周五下午寫完)。

發(fā)現(xiàn)問題

周一一來,測試就在群里 @ 后端人員說是新用戶贈送的系統(tǒng)資源送了兩次,說實話我一開始是不太信的,直到我去查了日志,發(fā)現(xiàn) NewUserInvitedListener 監(jiān)聽類的日志確實被打印了兩次,也就是說我們的 NewUserInvitedListener 監(jiān)聽類被觸發(fā)了兩次。

OK,到這里我們的問題就確確實實產(chǎn)生了,接下來就是解決問題。

解決思路

問題產(chǎn)生通常都有很多種解決方法,我們如何選擇一個最適合我們當前場景的方法才能體現(xiàn)出我們對業(yè)務、技術的理解。在這個監(jiān)聽類重復觸發(fā)的場景里,就有多種解決方式,我簡單列舉幾個,

  1. 添加冪等處理,防止重復執(zhí)行
  2. 加鎖,防止重復執(zhí)行
  3. 解決下為什么監(jiān)聽類會重復觸發(fā)

這三個解決方案各有優(yōu)劣,通過對監(jiān)聽類的業(yè)務邏輯添加冪等邏輯或者加鎖邏輯都是可以解決的,但是這不是問題根源,問題根源是在于監(jiān)聽類為什么會被重復觸發(fā)。在本文中,我也將帶著大家一步一步探索并解決這個問題。

檢查下之前的事件監(jiān)聽類是否也有重復觸發(fā)的問題

因為這個代碼是照著之前的邏輯寫的,新加的 NewUserInvitedListener 被發(fā)現(xiàn)重復觸發(fā),那以前的 MemberLoginLogListener 是否也有重復觸發(fā)的問題。偽代碼如下,

@Slf4j
@Component
@AllArgsConstructor
public class MemberLoginLogListener implements ApplicationListener<RegisterEvent> {
    private MemberLoginLogService memberLoginLogService;

    @Async("asyncServiceExecutor")
    @Override
    public void onApplicationEvent(RegisterEvent event) {
        MemberEntity memberEntity = event.getMemberEntity();
        log.info("================ MemberLoginLogListener ===============, mobile is {}", memberEntity.getMobile());
        MemberLoginLogEntity memberLoginLogEntity = MemberLoginLogConvertor.buildLoginLogEntity(event.getRequestVO(),
                event.getMemberEntity());
        memberLoginLogEntity.setToken(event.getToken());
        memberLoginLogService.save(memberLoginLogEntity);
    }
}

查詢 MemberLoginLogListener 監(jiān)聽類的日志,發(fā)現(xiàn)只有一次打印,說明之前寫的 MemberLoginLogListener 監(jiān)聽類沒有重復觸發(fā)的問題,那這里就很奇怪了。對比一下 NewUserInvitedListener 監(jiān)聽類與 MemberLoginLogListener 監(jiān)聽類的差別,很明顯我們發(fā)現(xiàn) NewUserInvitedListener 監(jiān)聽類上多了一個 @RefreshScope 注解。

OK,問題有可能就是 @RefreshScope 注解導致,我們去掉 @RefreshScope 注解在看看日志打印。

去掉 @RefreshScope 注解

當我們去掉 @RefreshScope 注解后,神奇的事情發(fā)生了,NewUserInvitedListener 監(jiān)聽類的日志打印正常了,只觸發(fā)了一次!OK,到這里我們也就發(fā)現(xiàn)了問題出在 @RefreshScope 注解上。

如何搜索問題

雖然我們知道了問題出在 @RefreshScope 注解上,但是我們怎么向搜索引擎描述這個問題嘞?

很多人發(fā)現(xiàn)了問題,但是不知道如何描述問題,怎么描述問題才能讓別人一聽就懂,從而能給你提供幫助。你需要把問題的重點描述出來,搜索引擎才能給予精準幫助。

在我們這個新用戶注冊判斷邀請關系的場景里,很顯然我們的搜索詞可以是 “spring 事件監(jiān)聽重復觸發(fā) @RefreshScope”可以看到我的搜索關鍵詞有 3 個,分別是 spring、事件監(jiān)聽重復觸發(fā)以及 @RefreshScope。讓我們來看看搜索結果。

圖片圖片

前 5 個搜索結果中,只有第五個的標題可能符合我們的搜索內容,我們點進去看一看。

圖片圖片

很遺憾,跟我們的問題場景并不相符,我們并沒有搜索到我們想要的東西。在這里我們的搜索關鍵詞“spring 事件監(jiān)聽重復觸發(fā) @RefreshScope”并沒有給予我們幫助。

回到問題本身

既然我們的問題已經(jīng)定位到了,在于 @RefreshScope 會導致監(jiān)聽類的重復觸發(fā),可是這個關鍵詞并沒有相關搜索結果,那么我們只能換個角度。

為什么會重復觸發(fā)?

在 NewUserInvitedListener 監(jiān)聽類中,我們使用 @Component 注解,默認注冊了一個單例 bean,這個 bean 用于接收用戶注冊事件。既然 bean 是單一的,那就是說 Spring 發(fā)送了 2 次 RegisterEvent 事件嗎?結合上文提到的 MemberLoginLogListener 監(jiān)聽類只觸發(fā)一次的日志,很顯然,Spring 只會發(fā)送了 1 次 RegisterEvent 事件。

難道說問題在于 Spring 里出現(xiàn)了兩個 NewUserInvitedListener 類型的 bean?

那么到這里恭喜我們終于定位到了重復觸發(fā)問題的根源。

如果大家了解 @RefreshScope 的原理相信大家已經(jīng)猜出來了。

@RefreshScope 原理

Spring 中 @scope 注解的原理就是在創(chuàng)建 Scope=singleton 的 Bean 時,IOC 會保存實例在一個 Map 中,保證這個 Bean 在一個 IOC 上下文有且僅有一個實例。

SpringCloud 新增了一個自定義的作用域:refresh(可以理解為“動態(tài)刷新”),同樣用了一種獨特的方式改變了 Bean 的管理方式,使得其可以通過外部化配置(.properties)的刷新,在應用不需要重啟的情況下熱加載新的外部化配置的值。

這個 scope 是如何做到熱加載的呢?RefreshScope 主要做了以下動作:單獨管理 Bean 生命周期

創(chuàng)建 Bean 的時候如果是 RefreshScope 就緩存在一個專門管理的 ScopeMap 中,這樣就可以管理 Scope 是 Refresh 的 Bean 的生命周期了(所以含 RefreshScope 的其實一共創(chuàng)建了兩個 bean)。

重新創(chuàng)建 Bean

外部化配置刷新之后,會觸發(fā)一個動作,這個動作將上面的 ScopeMap 中的 Bean 清空,這樣這些 Bean 就會重新被 IOC 容器創(chuàng)建一次,使用最新的外部化配置的值注入類中,達到熱加載新值的效果。

看完 @RefreshScope 的原理相信大家已經(jīng)知道了出現(xiàn)兩個 NewUserInvitedListener 類型 bean 的原因是在于 @RefreshScope 導致。這是由于 @RefreshScope 注解的內部實現(xiàn)創(chuàng)建了另外一個相同類型的 NewUserInvitedListener bean,導致我們的新用戶監(jiān)聽邏輯被重復執(zhí)行。

回到搜索關鍵詞

假如我是說假如,假如我們不知道 @RefreshScope 的原理,自然不知道項目中出現(xiàn)了兩個 NewUserInvitedListener 類型的 bean 是 @RefreshScope 導致。那么我們怎么通過搜索關鍵詞來找到這個問題嘞?

到這里也就是本文的重點所在,怎么通過搜索關鍵詞來解決我們的問題。

先定義問題

在這個場景里我們使用的是 Spring 項目,問題本質是 @RefreshScope 在 Spring 自帶的事件監(jiān)聽類搭配使用時,由于 @RefreshScope 會導致 bean 重復進而導致重復觸發(fā)。

總結關鍵詞

在上面的先定義問題中,我們提煉一下關鍵詞,

  • Spring:這個關鍵詞在 Spring 項目中必帶,大家應該沒有意見把
  • @RefreshScope:我們的問題根源,搜索也得帶上
  • 生成同一個 bean:這是一個描述語句,簡要描述一下我們發(fā)現(xiàn)的問題

看一看搜索結果,

圖片圖片

點進第一個結果,

圖片圖片

OK,大功告成,看到我們框選中的地方了嗎,上文的 @RefreshScope 原理解釋,就是復制與這里。

貼一下原文地址:https://blog.csdn.net/m0_71777195/article/details/127223544

一些思考

實話實說,我在測試給我上報問題,到發(fā)現(xiàn)這個問題來自于 @RefreshScope 注解只用了 10 分鐘,如上文所說,我通過對比以前寫的 MemberLoginLogListener 監(jiān)聽類,早早的定位到問題來自于 @RefreshScope 注解。可是到我完整修復這個問題,提交到測試環(huán)境,卻花了 2 個半小時,原因是因為我在研究這個問題的根源,這也是這篇文章的由來。

假如說這個問題發(fā)生在線上,那么我根本不可能花這么多時間來研究,我需要的就是迅速解決這個問題并修復上線,避免影響更多用戶。

一樣的,大家在遇到這種相似問題時,如果境況緊急出現(xiàn)在生產(chǎn)環(huán)境,大家本著對工作負責的態(tài)度,應該迅速解決并做故障復盤。如果是出現(xiàn)在測試環(huán)境我們可以本著對技術執(zhí)著可以認真專研下這個問題。

其實我還想說的是在這個問題里,我能 10 分鐘定位到問題來自于 @RefreshScope 注解,可能也有運氣成分。但是很多情況下當我們照驢子畫馬寫代碼,發(fā)現(xiàn)出了問題時,這種情況大部分還是我們“畫蛇添足”導致。大家可以通過對比以前代碼迅速找出問題原因。

找出了問題后是如何解決問題。這篇文章里,我給大家講了講我的搜索關鍵詞心得。第一是講重點、第二是找到問題本質,這樣才能從搜索引擎嘴里找出我們想要的答案。

責任編輯:武曉燕 來源: 程序員wayn
相關推薦

2021-08-26 10:50:37

MySQLORDER BYIMIT

2021-05-07 11:29:54

MacFlutter開發(fā)

2021-01-13 09:07:32

MySQLOrderLimit

2021-11-30 07:51:29

氣球數(shù)量空間

2013-07-30 11:32:02

2012-07-27 13:36:00

Office操作系統(tǒng)

2023-03-28 08:12:06

優(yōu)化系統(tǒng)IOPS

2022-03-01 11:00:12

索引MySQL設計

2015-01-08 09:18:25

DockerRocket容器技術

2015-07-15 09:28:22

云計算原型設計物聯(lián)網(wǎng)

2024-11-28 09:57:50

C#事件發(fā)布器

2021-04-12 18:03:39

Nginx架構負載

2020-12-01 09:40:15

Harmony

2020-06-11 18:35:23

C++編程語言

2021-07-02 20:46:06

Go接口動態(tài)

2021-09-11 19:02:34

Hook使用版本

2021-09-14 17:16:21

Java 同步工具類

2024-10-05 07:00:00

OpenAIGPT-4o人工智能

2020-12-03 11:34:12

Ability vs

2020-09-28 16:51:11

Netty驅動網(wǎng)絡
點贊
收藏

51CTO技術棧公眾號

av一级久久| 欧美性videos| 男女性色大片免费观看一区二区| 日韩在线视频播放| 亚洲精品鲁一鲁一区二区三区| 91美女精品| 欧美国产激情二区三区| 99国产视频在线| 久久久精品毛片| 欧美三级不卡| 国产午夜精品全部视频播放| 动漫av在线免费观看| 日韩电影免费观| 一二三四区精品视频| 日韩精品极品视频在线观看免费| 国产精品丝袜黑色高跟鞋| 亚洲自啪免费| 欧美国产日韩在线| 欧美性生交大片| 亚洲区小说区图片区qvod| 日韩欧美中文字幕精品| 日本特黄a级片| 男人av在线播放| 亚洲美女免费在线| 亚洲国产精品一区二区第四页av| 成人免费视频国产| 国产精品自拍网站| 成人国产精品一区| 亚洲国产成人精品女人久久| 欧美性色综合| 久久亚洲精品成人| 免费看日本黄色片| 你懂的一区二区三区| 精品久久国产老人久久综合| 五月激情五月婷婷| 日韩毛片免费观看| 日韩欧美主播在线| 日本国产在线播放| 成全电影大全在线观看| 亚洲人成7777| 手机成人av在线| 大乳在线免费观看| 久久久久久亚洲综合影院红桃 | 国产无码精品在线播放| 91九色精品| 日韩在线观看网址| 九九热免费在线| 成人午夜av| 亚洲新声在线观看| 俄罗斯毛片基地| 国产日产精品一区二区三区四区的观看方式 | 992tv人人草| 台湾天天综合人成在线| 欧美三级韩国三级日本一级| 国产又猛又黄的视频| 色天使综合视频| 欧美无乱码久久久免费午夜一区| 在线免费观看av的网站| 成人影院在线免费观看| 欧美日韩国产高清一区二区| 久久这里只精品| 国产毛片精品久久| 欧美乱妇15p| 亚洲欧美天堂在线| 97人人澡人人爽91综合色| 精品久久国产字幕高潮| 变态另类丨国产精品| 一呦二呦三呦国产精品| 中文字幕无线精品亚洲乱码一区 | 国产视频久久久| 日本黄色特级片| 欧美老女人另类| 色偷偷888欧美精品久久久| 看黄色录像一级片| 欧美高清日韩| 91精品国产成人| 亚洲男人天堂网址| 狠狠色狠狠色合久久伊人| 亚洲自拍偷拍一区| 后入内射欧美99二区视频| 91亚洲午夜精品久久久久久| 日韩精品欧美专区| av在线麻豆| 午夜影院久久久| 无限资源日本好片| 亚洲一区二区三区四区电影| 亚洲九九九在线观看| 激情五月深爱五月| 极品日韩av| 国产精品国语对白| www.热久久| 久久你懂得1024| 9l视频自拍9l视频自拍| 校园春色亚洲| 日韩一区二区麻豆国产| 99久久久久久久久久| 亚洲大全视频| 777777777亚洲妇女| 一级黄色片在线播放| 成人久久18免费网站麻豆 | 日本h片在线观看| 色94色欧美sute亚洲13| 人妻精品久久久久中文字幕69| 日韩精品丝袜美腿| 美女精品视频一区| 天堂网中文字幕| 国产电影精品久久禁18| 日韩一区不卡| 妞干网免费在线视频| 91麻豆精品久久久久蜜臀| 人妻少妇一区二区| 亚洲国产专区校园欧美| 成人a在线视频| 黄色片在线播放| 偷拍亚洲欧洲综合| 午夜免费福利网站| 成人精品视频| 欧美专区第一页| 高清毛片aaaaaaaaa片| 中文字幕一区二区三中文字幕| www国产黄色| 91成人午夜| 免费成人高清视频| 亚洲一级黄色大片| 日本一区二区在线不卡| 免费黄色日本网站| 欧美调教在线| 欧美国产日韩在线| 性欧美8khd高清极品| 成人免费视频在线观看| 国产野外作爱视频播放| 奇米亚洲欧美| 日本不卡高字幕在线2019| 天天插天天干天天操| 亚洲国产一区二区a毛片| www.偷拍.com| 欧美一区影院| 114国产精品久久免费观看| 免费成人黄色| 欧美区在线观看| 疯狂撞击丝袜人妻| 国产中文字幕精品| 日韩视频在线观看视频| 不卡精品视频| 欧美成人精品在线视频| 国产黄a三级三级三级| 一区二区三区日本| 久久久无码人妻精品无码| 韩国av一区| 99久久自偷自偷国产精品不卡| 最新超碰在线| 精品国产乱码久久久久久1区2区 | 久久国产成人| 欧洲精品久久| 91亚洲视频| 中文字幕亚洲精品| 99久久99久久久精品棕色圆| 亚洲女人****多毛耸耸8| 伊人久久久久久久久| 最新日韩av| 免费久久99精品国产自| 97精品国产综合久久久动漫日韩| www.欧美精品| 东京干手机福利视频| 狠狠爱在线视频一区| 妺妺窝人体色WWW精品| 美日韩一区二区| 8x8x华人在线| 日本午夜精品久久久| 国产精品久久99久久| fc2ppv国产精品久久| 精品国产污网站| 成人在线免费看视频| 中文av一区二区| 亚洲热在线视频| 亚洲久久一区二区| 天天综合色天天综合色hd| 国产剧情一区二区在线观看| 欧美激情在线视频二区| 精品美女视频在线观看免费软件| 欧美日韩不卡一区二区| 久久久久久久久精| 久久精品人人做| 婷婷激情小说网| 亚洲欧美日韩一区在线观看| 这里只有精品66| 久久精品论坛| 国产男人精品视频| av中文字幕在线观看第一页| 在线a欧美视频| 欧美 日韩 国产 在线| 欧美在线观看一区| 国产精品第九页| 国产精品人人做人人爽人人添| 亚洲精品成人无码毛片| 日韩电影在线免费看| 蜜桃视频一区二区在线观看| 国产欧美日韩视频在线| 粉嫩高清一区二区三区精品视频| 久久爱.com| 2024亚洲男人天堂| a免费在线观看| 在线免费看av不卡| 深夜福利视频网站| 欧美一区二区三区播放老司机| 在线天堂中文字幕| 依依成人精品视频| 黄色av免费播放| 99久久综合国产精品| 国产亚洲视频一区| 日韩中文字幕一区二区三区| 日本黄色片一级片| 99久久亚洲精品| 欧美日韩中文国产一区发布| 粉嫩的18在线观看极品精品| 国产中文字幕亚洲| 日韩一级二级| 奇米成人av国产一区二区三区| 国产三线在线| 另类图片亚洲另类| jizzjizz在线观看| 亚洲乱码一区二区| 无码国产精品96久久久久| 51精品视频一区二区三区| 日本黄色中文字幕| 欧美视频中文在线看| 久久精品国产亚洲AV无码男同| 国产精品卡一卡二| 国产又黄又粗的视频| 久久综合一区二区| 黄色av网址在线观看| 国产99久久久国产精品| 超碰中文字幕在线观看| 黑人巨大精品欧美一区| 日韩大片一区二区| 久久精品国产精品青草| 日本人视频jizz页码69| 奇米一区二区三区| 少妇人妻互换不带套| 久久久久国产精品午夜一区| 777精品久无码人妻蜜桃| 亚洲人成高清| 久久久久久久久久久视频| 亚洲每日更新| 国产精品丝袜久久久久久消防器材| 在线看片成人| 黄色www网站| 香蕉久久夜色精品| 97av视频在线观看| 日韩中文字幕一区二区三区| 亚洲欧洲日本精品| 蜜臀av一区二区| 国产乱女淫av麻豆国产| 国产在线不卡视频| 精品1卡二卡三卡四卡老狼| 成人动漫一区二区在线| 北岛玲一区二区| 久久久精品国产免大香伊| 手机毛片在线观看| 最新中文字幕一区二区三区 | 欧美一区二区三区久久精品茉莉花| 中文字幕av久久| 狠色狠色综合久久| 久色视频在线播放| 天堂资源在线中文精品| 色一情一乱一伦一区二区三区日本| 奇米888四色在线精品| 成人不卡免费视频| 成人毛片在线观看| 无码 人妻 在线 视频| 亚洲欧洲成人自拍| 国产精品111| 色噜噜狠狠色综合中国| 亚洲一区二区人妻| 精品久久久久一区二区国产| 香蕉视频免费在线看| 一区二区欧美久久| 怡红院红怡院欧美aⅴ怡春院| 国模极品一区二区三区| 欧美片第一页| 成人欧美一区二区三区在线| 国产精品毛片视频| 日本一区视频在线| 国产精品v日韩精品v欧美精品网站| 免费在线a视频| 极品美女销魂一区二区三区免费 | 亚洲丁香日韩| 三年中国中文在线观看免费播放| 亚洲伦理精品| 日韩av片免费观看| 91亚洲精品乱码久久久久久蜜桃| 丁香六月激情综合| 黄网动漫久久久| 国产又大又黄又爽| 亚洲精品综合精品自拍| 怡红院av在线| 国产精品亚洲一区二区三区| 中文字幕日韩高清在线| 亚洲精品影院| 亚洲一区二区三区四区五区午夜 | 男女激情无遮挡| 激情六月婷婷久久| 国产成人无码精品久久二区三| 亚洲免费在线看| 中文字幕+乱码+中文乱码www| 欧美变态凌虐bdsm| 91免费在线| 91精品国产99久久久久久| 美女国产精品久久久| 色狠狠久久av五月综合| 一区二区三区成人精品| 国产不卡的av| 国产精品久久久久久久久免费桃花 | 国产经典一区二区| 国产在线播放精品| 妞干网这里只有精品| 久久精品久久精品| 亚洲区自拍偷拍| 欧美午夜视频一区二区| 蜜臀av在线观看| 久久亚洲精品视频| 欧美电影在线观看网站| 日本婷婷久久久久久久久一区二区| 99国产精品视频免费观看一公开| 青娱乐精品在线| 亚洲免费在线视频| 国产又粗又长又大视频| 在线观看久久久久久| 日本美女久久| 日韩中文字幕av在线| 日韩中文字幕av电影| 亚洲精品视频久久久| 欧美日韩亚洲一区二区三区| 日韩一区免费视频| 91精品国产高清久久久久久久久 | 国产精品一二一区| 免费成人深夜夜行网站| 在线不卡中文字幕| 麻豆视频在线免费观看| 国产精品专区第二| 99精品视频在线| 91热视频在线观看| 一区二区三区在线视频观看58 | 亚洲色在线视频| 天天免费亚洲黑人免费| 免费成人看片网址| 久久亚洲美女| 日本午夜精品视频| 911国产精品| 色网在线观看| 精品国产乱码久久久久久久软件| 99亚洲一区二区| 四虎永久免费在线观看| 欧美在线综合视频| 免费高清在线观看| 北条麻妃高清一区| 99在线精品视频在线观看| 欧洲av一区二区三区| 欧美日韩综合在线免费观看| 国产激情在线视频| 国产精品一区二区欧美| 久久国产高清| 少妇视频一区二区| 日韩视频一区在线观看| 成人影音在线| 欧美日韩一区二区三| 麻豆精品久久久| 激情五月少妇a| 亚洲女人天堂色在线7777| 欧美另类激情| 欧美成人精品免费| 久久夜色精品一区| 91亚洲国产成人久久精品麻豆| 欧美激情xxxx| 国产免费av一区二区三区| 黄色一级片免费播放| 欧美日韩在线视频一区二区| √天堂资源地址在线官网| 99国产超薄肉色丝袜交足的后果 | 国产精品久久久av久久久| 一区二区三区网站| 亚洲天堂成人av| 欧美日韩不卡在线| 欧美freesex黑人又粗又大| 亚洲看片网站| av电影在线观看不卡| 岳乳丰满一区二区三区| 久久免费视频网站| 欧美亚洲国产精品久久| 亚洲一区二区三区黄色| 欧美午夜不卡在线观看免费| 多野结衣av一区| 最近中文字幕免费mv| 久久综合九色综合97婷婷女人| 国产人妻精品一区二区三区| 日本欧美黄网站| 欧美色一级片| 婷婷激情四射网| 国产小视频国产精品| 97成人在线|