精品欧美一区二区三区在线观看 _久久久久国色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资源站在线观看| 欧美顶级毛片在线播放| 国产精品妹子av| 亚洲www视频| 69av.com| 亚洲精华一区二区三区| 欧美亚洲一区二区三区四区| 久久久久国产视频| 中文在线观看免费视频| 成人影院入口| 亚洲天堂福利av| 国模精品娜娜一二三区| 无码日韩精品一区二区| 91精品国产调教在线观看| 欧美zozo另类异族| 亚洲第一中文av| 国产精品186在线观看在线播放| 国产成人免费视频网站| 国产精品video| 国产第100页| 日韩av有码| 亚洲激情在线观看视频免费| 色婷婷成人在线| av在线私库| 综合网在线视频| 久久免费99精品久久久久久| 国产免费高清av| 亚洲一区二区免费看| 久久久国产一区| 无码人妻aⅴ一区二区三区69岛| 久久综合偷偷噜噜噜色| 在线视频欧美区| 加勒比成人在线| 国产写真视频在线观看| 国产日韩三级在线| 国产伦精品一区二区三区高清版| 国产精品欧美亚洲| 日日欢夜夜爽一区| 91高潮在线观看| 欧美成人免费看| 久久一区二区三区喷水| 亚洲免费精彩视频| 亚洲成av人片在线观看无| 不卡一区视频| 欧美久久一二区| 无码日韩人妻精品久久蜜桃| 性国裸体高清亚洲| 亚洲成人免费av| 黄色一级视频播放| 男人资源在线播放| 中文欧美字幕免费| 午夜精品电影在线观看| 色视频在线观看福利| 成人美女视频在线观看18| 亚洲自拍另类欧美丝袜| 91丨九色丨丰满| 麻豆91在线看| 国产精品自产拍在线观看| 亚洲精品一区二区二区| 日本在线观看不卡视频| 国产z一区二区三区| 国产一级一级国产| 天堂一区二区在线| 国产999精品视频| 波多野结衣人妻| 日韩精品免费视频人成| 国产精品jizz在线观看麻豆| 久久久久久久久久一级| 日本美女一区二区三区| 国产精品免费久久久久影院| 一级黄色a视频| 国产一区在线观看视频| 97中文在线| 亚洲免费成人网| 99精品偷自拍| 欧美极品视频一区二区三区| 国产黄色免费在线观看| 欧美国产国产综合| 99精品视频网站| 色呦呦在线免费观看| 五月婷婷久久丁香| 国产综合免费视频| 九九热这里有精品| 欧美日韩国产首页| 亚洲av无一区二区三区久久| 成人午夜大片| 亚洲人成伊人成综合网久久久| 青娱乐国产视频| 久久精品国产68国产精品亚洲| 久久夜色精品亚洲噜噜国产mv| 永久免费看黄网站| 亚洲女人av| 国产精品成人在线| 国产高清精品软件丝瓜软件| 97超碰欧美中文字幕| 亚洲成人第一| 国产桃色电影在线播放| 色婷婷久久一区二区三区麻豆| 亚洲欧美视频二区| 福利电影一区 | 日韩精选在线观看| 国产原创一区二区三区| 久久久福利视频| 麻豆视频在线| 欧美性开放视频| 天堂av手机在线| 综合亚洲自拍| 欧美xxxx做受欧美.88| 在线观看日本视频| 国产精一区二区三区| 欧美日韩高清免费| 三级福利片在线观看| 在线视频观看一区| 你懂的在线观看网站| 99精品视频精品精品视频| 国模精品一区二区三区色天香| 中文字幕乱码视频| 99久久精品国产精品久久| 黄色一级片网址| 91精品产国品一二三产区| 日韩欧美国产一二三区| 手机看片日韩av| 欧美亚洲专区| 国产精品一区二区三区四区五区 | 国产日韩在线免费观看| 成人美女视频在线看| 天天干天天色天天爽| 桃子视频成人app| 亚洲国产欧美一区| 九九久久免费视频| 国内精品在线播放| 亚洲精品不卡| 经典三级一区二区| 精品亚洲国产视频| xxxxxx国产| 成人免费看视频| 欧美 国产 精品| 小说区图片区亚洲| 综合国产在线观看| 国产精品第六页| 久久精品一区四区| 黄在线观看网站| 卡一精品卡二卡三网站乱码 | 日本一区二区在线| 日韩激情电影免费看| 亚洲精品电影在线| 日韩欧美一区二区一幕| eeuss鲁片一区二区三区在线观看| 高清无码一区二区在线观看吞精| 欧美黄页免费| 久久精品成人动漫| 911美女片黄在线观看游戏| 中文字幕不卡在线| 成人综合久久网| 久久精品一区二区不卡| 成人欧美在线视频| 成人午夜在线影视| 日韩久久精品一区| 精品深夜av无码一区二区老年| 国产成人啪免费观看软件| av久久久久久| 999久久久久久久久6666| 欧美黑人一级爽快片淫片高清| www.五月婷| 亚洲v日本v欧美v久久精品| 天堂www中文在线资源| 亚洲国产一区二区三区高清| 激情伦成人综合小说| 老司机2019福利精品视频导航| 亚洲男人的天堂网站| 国产一级片免费在线观看| 欧美韩国一区二区| 中文字幕一区久久| 国产精品草草| 精品国产乱码久久久久久108| 一二三四视频在线中文| 亚洲人在线视频| 一级黄色片免费| 一区二区三区在线观看视频| 中文字幕无码人妻少妇免费| 久久精品人人做人人爽电影蜜月| 日韩在线第一区| 91精品一久久香蕉国产线看观看 | 91精品国产麻豆国产自产在线| 国产av无码专区亚洲av毛网站| 成人综合激情网| 国产主播在线看| 五月开心六月丁香综合色啪 | 免费日韩中文字幕| 国产韩国精品一区二区三区| 国产精品久久久久久久久久久久冷 | 日韩精品在线视频| 中文字幕码精品视频网站| 亚洲欧美另类图片小说| 人妻巨大乳一二三区| 国产乱码精品| 综合视频免费看| 欧洲在线一区| 成人欧美一区二区三区黑人| 男人天堂视频在线观看| 日韩在线观看免费网站| 少妇高潮一区二区三区69| 欧美色倩网站大全免费| 日本午夜小视频| 中文字幕一区av| 中文字幕狠狠干| 国产精品一区二区免费不卡 | 久久精品免费看| 久久成人免费观看| 影视亚洲一区二区三区| 欧洲视频一区二区三区| 盗摄系列偷拍视频精品tp| 国产自摸综合网| 色在线中文字幕| 九九热这里只有在线精品视| www亚洲人| 日韩电影免费观看中文字幕 | 日韩av在线免费观看一区| 在线视频你懂得| 欧美日韩一区二区免费视频| 亚洲综合网在线| 国产人妖乱国产精品人妖| 波多野结衣一二三区| 麻豆精品一区二区av白丝在线| 黄色一级视频片| 午夜亚洲福利| 制服诱惑一区| 日韩精品dvd| 久久综合色一本| 国产精品videossex| 91麻豆国产精品| h1515四虎成人| 国产成人拍精品视频午夜网站 | 欧美gvvideo网站| 欧美在线一二三区| 奇米777国产一区国产二区| 国产精品污www一区二区三区| 国产免费av国片精品草莓男男| 国产精品青草久久久久福利99| 伊伊综合在线| 欧美最顶级的aⅴ艳星| 波多野结衣视频一区二区| 久久99热精品| av激情在线| 欧美超级乱淫片喷水| 蜜桃视频在线观看www社区| 色青青草原桃花久久综合| 91精品专区| 中文字幕亚洲色图| av播放在线| 中文字幕亚洲一区二区三区| 成人一区二区不卡免费| 亚洲最新在线视频| av中文字幕在线| 日韩视频中文字幕| 免费在线午夜视频| 久久久成人精品| 欧美大片黄色| 97在线视频免费| 亚洲美女久久精品| 国产精品成人在线| 日本免费在线一区| 亚洲mm色国产网站| 欧美区一区二区| 国产一区视频观看| 亚洲人挤奶视频| 色播亚洲婷婷| 亚洲成人最新网站| cao在线观看| 亚洲一区欧美二区| 青青在线免费观看视频| 久久er99精品| 18禁一区二区三区| 99精品偷自拍| 萌白酱视频在线| 一区二区三区精品在线观看| 日韩在线观看第一页| 91精品1区2区| 国产伦精品一区二区三区免.费 | 熟妇人妻系列aⅴ无码专区友真希 熟妇人妻av无码一区二区三区 | 中文字幕在线观看视频免费| 3d成人h动漫网站入口| 亚洲男人天堂久久| 亚洲欧美国产精品| 国产精品久久麻豆| 91国产精品电影| 色综合视频一区二区三区日韩| av成人午夜| 免费成人高清在线视频theav| 亚洲综合首页| 最新成人av网站| 自拍偷拍21p| 波多野结衣中文字幕一区二区三区 | 国产一国产二国产三| 欧美综合色免费| 亚洲第一页视频| 亚洲人成网站免费播放| 色呦呦在线资源| 国产成人免费av电影| 亚洲91网站| 日韩欧美亚洲日产国| 欧美日本一区二区高清播放视频| 欧美s码亚洲码精品m码| 极品美女销魂一区二区三区| 免费成人蒂法网站| 亚洲人成小说网站色在线| 国产成人精品网| 制服.丝袜.亚洲.中文.综合| 无码精品一区二区三区在线| 精品国产一区av| 中文字幕 在线观看| 亚洲一区二区三| 国产一区二区三区91| 成人免费播放器| 久久91精品国产91久久小草| 美女又爽又黄视频毛茸茸| 亚洲黄网站在线观看| 夜夜躁狠狠躁日日躁av| 亚洲丝袜av一区| www欧美xxxx| 亚洲精品日韩av| 国产真实有声精品录音| 欧美三级在线观看视频| 国产激情偷乱视频一区二区三区| 国产黄色大片免费看| 欧美丝袜一区二区三区| 蜜桃在线一区二区| 不卡av电影院| 99久久99九九99九九九| 亚洲欧美精品| 日韩国产欧美在线视频| 丰满少妇一区二区三区| 五月综合激情网| 欧美熟妇交换久久久久久分类 | 久久中文字幕无码| 欧美二区在线观看| 性开放的欧美大片| 国产精品精品国产| 精品国产一区二区三区av片| 少妇人妻在线视频| 99久久精品免费看国产免费软件| 久草视频免费在线播放| 日韩精品专区在线影院观看| 成人免费网址| 91精品国产高清久久久久久91裸体| 97精品国产福利一区二区三区| 熟女人妇 成熟妇女系列视频| 久久综合网色—综合色88| 日本道在线观看| 精品小视频在线| 日本久久免费| 日韩欧美视频第二区| 奇米影视在线99精品| 国产成人免费观看网站| 欧美视频一二三区| 婷婷成人激情| 91在线观看免费高清| 欧美.www| zjzjzjzjzj亚洲女人| 色婷婷在线播放| 国产ts一区| 一区二区国产盗摄色噜噜| 印度午夜性春猛xxx交| 欧美一级日韩免费不卡| 欧美人与动牲性行为| 国产传媒一区| 国产精品婷婷| 一级肉体全黄裸片| 4hu四虎永久在线影院成人| 在线看三级电影| 久久精品aaaaaa毛片| 日本视频在线一区| 欧美做爰啪啪xxxⅹ性| 日韩精品一区二区三区视频 | 九九九热精品免费视频观看网站| 91成人福利| 动漫av网站免费观看| 欧美国产欧美亚州国产日韩mv天天看完整| 中国女人真人一级毛片| 萌白酱国产一区二区| 秋霞蜜臀av久久电影网免费| 黄色一级大片在线观看| 最近中文字幕一区二区三区| 日本免费一区视频| 国产精品成人观看视频国产奇米| 亚洲不卡av不卡一区二区| 亚洲av熟女高潮一区二区| 在线影视一区二区三区| 91网在线看| 欧美日韩亚洲一区二区三区在线观看 | 免费看久久久| 三上悠亚av一区二区三区| 亚洲成人午夜电影| 一本一道波多野毛片中文在线 | 午夜精品一二三区| 日本精品性网站在线观看| 91av精品| 四虎影成人精品a片| 日韩欧美中文字幕一区| 日韩免费电影|