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

又被逼著優(yōu)化代碼,這次我干掉了出入?yún)?Log日志

系統(tǒng)
最近技術(shù)部突然刮起一陣 review 代碼的小風(fēng),挨個(gè)項(xiàng)目組過代碼,按理說這應(yīng)該是件挺好的事,讓別人指出自己代碼中的不足,查缺補(bǔ)漏,對(duì)提升自身編碼能力有很大幫助,畢竟自己審查很容易“陶醉”在自己寫的代碼里。

本文轉(zhuǎn)載自微信公眾號(hào)「程序員內(nèi)點(diǎn)事」,作者程序員內(nèi)點(diǎn)事。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序員內(nèi)點(diǎn)事公眾號(hào)。

最近技術(shù)部突然刮起一陣 review 代碼的小風(fēng),挨個(gè)項(xiàng)目組過代碼,按理說這應(yīng)該是件挺好的事,讓別人指出自己代碼中的不足,查缺補(bǔ)漏,對(duì)提升自身編碼能力有很大幫助,畢竟自己審查很容易“陶醉”在自己寫的代碼里。

[[334348]]

 

不過,代碼 review 的詳細(xì)程度令人發(fā)指,一行一行的分析,簡(jiǎn)直就是個(gè)培訓(xùn)班啊。不夸張的說,如果我村里僅有縣重點(diǎn)小學(xué)學(xué)歷的四大爺,來聽上一個(gè)月后,保證能上手開發(fā),666~

既然組內(nèi)氣氛到這了,咱也得行動(dòng)起來,要不哪天評(píng)審到我的代碼,讓人家指指點(diǎn)點(diǎn)的心里多少有點(diǎn)不舒服,與其被動(dòng)優(yōu)化代碼不如主動(dòng)出擊~

選優(yōu)化代碼的方向,方法入?yún)⒑头祷亟Y(jié)果日志首當(dāng)其沖,每個(gè)方法都會(huì)有這兩個(gè)日志,一大堆冗余的代碼,而且什么樣的打印格式都有,非常的雜亂。

  1. public OrderDTO getOrder(OrderVO orderVO, String name) { 
  2.  
  3.         log.info("訂單詳情入?yún)ⅲ簅rderVO={},name={}", JSON.toJSONString(orderVO), name); 
  4.  
  5.         OrderDTO orderInfo = orderService.getOrderInfo(orderVO); 
  6.  
  7.         log.info("訂單詳情結(jié)果:orderInfo={}", JSON.toJSONString(orderInfo)); 
  8.  
  9.         return orderInfo; 

下邊我們利用 AOP 實(shí)現(xiàn)請(qǐng)求方法的入?yún)ⅰ⒎祷亟Y(jié)果日志統(tǒng)一打印,避免日志打印格式雜亂,同時(shí)減少業(yè)務(wù)代碼量。

一、自定義注解

自定義切面注解@PrintlnLog 用來輸出日志,注解權(quán)限 @Target({ElementType.METHOD}) 限制只在方法上使用,注解中只有一個(gè)參數(shù) description ,用來自定義方法輸出日志的描述。

  1. @Retention(RetentionPolicy.RUNTIME) 
  2. @Target({ElementType.METHOD}) 
  3. @Documented 
  4. public @interface PrintlnLog { 
  5.  
  6.     /** 
  7.      * 自定義日志描述信息文案 
  8.      * 
  9.      * @return 
  10.      */ 
  11.     String description() default ""

二、切面類

接下來編寫@PrintlnLog 注解對(duì)應(yīng)的切面實(shí)現(xiàn),doBefore()中輸出方法的自定義描述、入?yún)ⅰ⒄?qǐng)求方式、請(qǐng)求url、被調(diào)用方法的位置等信息,doAround() 中打印方法返回結(jié)果。

注意: 如何想指定切面在哪個(gè)環(huán)境執(zhí)行,可以用@Profile 注解,只打印某個(gè)環(huán)境的日志。

  1. @Slf4j 
  2. @Aspect 
  3. @Component 
  4. //@Profile({"dev"}) //只對(duì)某個(gè)環(huán)境打印日志 
  5. public class LogAspect { 
  6.  
  7.     private static final String LINE_SEPARATOR = System.lineSeparator(); 
  8.  
  9.     /** 
  10.      * 以自定義 @PrintlnLog 注解作為切面入口 
  11.      */ 
  12.     @Pointcut("@annotation(com.chengxy.unifiedlog.config.PrintlnLog)"
  13.     public void PrintlnLog() { 
  14.     } 
  15.  
  16.     /** 
  17.      * @param joinPoint 
  18.      * @author fu 
  19.      * @description 切面方法入?yún)⑷罩敬蛴?nbsp;
  20.      * @date 2020/7/15 10:30 
  21.      */ 
  22.     @Before("PrintlnLog()"
  23.     public void doBefore(JoinPoint joinPoint) throws Throwable { 
  24.  
  25.         ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); 
  26.         HttpServletRequest request = attributes.getRequest(); 
  27.  
  28.         String methodDetailDescription = this.getAspectMethodLogDescJP(joinPoint); 
  29.  
  30.         log.info("------------------------------- start --------------------------"); 
  31.         /** 
  32.          * 打印自定義方法描述 
  33.          */ 
  34.         log.info("Method detail Description: {}", methodDetailDescription); 
  35.         /** 
  36.          * 打印請(qǐng)求入?yún)?nbsp;
  37.          */ 
  38.         log.info("Request Args: {}", JSON.toJSONString(joinPoint.getArgs())); 
  39.         /** 
  40.          * 打印請(qǐng)求方式 
  41.          */ 
  42.         log.info("Request method: {}", request.getMethod()); 
  43.         /** 
  44.          * 打印請(qǐng)求 url 
  45.          */ 
  46.         log.info("Request URL: {}", request.getRequestURL().toString()); 
  47.  
  48.         /** 
  49.          * 打印調(diào)用方法全路徑以及執(zhí)行方法 
  50.          */ 
  51.         log.info("Request Class and Method: {}.{}", joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName()); 
  52.     } 
  53.  
  54.     /** 
  55.      * @param proceedingJoinPoint 
  56.      * @author xiaofu 
  57.      * @description 切面方法返回結(jié)果日志打印 
  58.      * @date 2020/7/15 10:32 
  59.      */ 
  60.     @Around("PrintlnLog()"
  61.     public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { 
  62.  
  63.         String aspectMethodLogDescPJ = getAspectMethodLogDescPJ(proceedingJoinPoint); 
  64.  
  65.         long startTime = System.currentTimeMillis(); 
  66.  
  67.         Object result = proceedingJoinPoint.proceed(); 
  68.         /** 
  69.          * 輸出結(jié)果 
  70.          */ 
  71.         log.info("{},Response result  : {}", aspectMethodLogDescPJ, JSON.toJSONString(result)); 
  72.  
  73.         /** 
  74.          * 方法執(zhí)行耗時(shí) 
  75.          */ 
  76.         log.info("Time Consuming: {} ms", System.currentTimeMillis() - startTime); 
  77.  
  78.         return result; 
  79.     } 
  80.  
  81.     /** 
  82.      * @author xiaofu 
  83.      * @description 切面方法執(zhí)行后執(zhí)行 
  84.      * @date 2020/7/15 10:31 
  85.      */ 
  86.     @After("PrintlnLog()"
  87.     public void doAfter(JoinPoint joinPoint) throws Throwable { 
  88.         log.info("------------------------------- End --------------------------" + LINE_SEPARATOR); 
  89.     } 
  90.  
  91.     /** 
  92.      * @param joinPoint 
  93.      * @author xiaofu 
  94.      * @description @PrintlnLog 注解作用的切面方法詳細(xì)細(xì)信息 
  95.      * @date 2020/7/15 10:34 
  96.      */ 
  97.     public String getAspectMethodLogDescJP(JoinPoint joinPoint) throws Exception { 
  98.         String targetName = joinPoint.getTarget().getClass().getName(); 
  99.         String methodName = joinPoint.getSignature().getName(); 
  100.         Object[] arguments = joinPoint.getArgs(); 
  101.         return getAspectMethodLogDesc(targetName, methodName, arguments); 
  102.     } 
  103.  
  104.     /** 
  105.      * @param proceedingJoinPoint 
  106.      * @author xiaofu 
  107.      * @description @PrintlnLog 注解作用的切面方法詳細(xì)細(xì)信息 
  108.      * @date 2020/7/15 10:34 
  109.      */ 
  110.     public String getAspectMethodLogDescPJ(ProceedingJoinPoint proceedingJoinPoint) throws Exception { 
  111.         String targetName = proceedingJoinPoint.getTarget().getClass().getName(); 
  112.         String methodName = proceedingJoinPoint.getSignature().getName(); 
  113.         Object[] arguments = proceedingJoinPoint.getArgs(); 
  114.         return getAspectMethodLogDesc(targetName, methodName, arguments); 
  115.     } 
  116.  
  117.     /** 
  118.      * @param targetName 
  119.      * @param methodName 
  120.      * @param arguments 
  121.      * @author xiaofu 
  122.      * @description 自定義注解參數(shù) 
  123.      * @date 2020/7/15 11:51 
  124.      */ 
  125.     public String getAspectMethodLogDesc(String targetName, String methodName, Object[] arguments) throws Exception { 
  126.         Class targetClass = Class.forName(targetName); 
  127.         Method[] methods = targetClass.getMethods(); 
  128.         StringBuilder description = new StringBuilder(""); 
  129.         for (Method method : methods) { 
  130.             if (method.getName().equals(methodName)) { 
  131.                 Class[] clazzs = method.getParameterTypes(); 
  132.                 if (clazzs.length == arguments.length) { 
  133.                     description.append(method.getAnnotation(PrintlnLog.class).description()); 
  134.                     break; 
  135.                 } 
  136.             } 
  137.         } 
  138.         return description.toString(); 
  139.     } 

三、應(yīng)用

我們?cè)谛枰蛴∪雲(yún)⒑头祷亟Y(jié)果日志的方法,加上@PrintlnLog注解,并添加自定義方法描述。

  1. @RestController 
  2. @RequestMapping 
  3. public class OrderController { 
  4.  
  5.     @Autowired 
  6.     private OrderService orderService; 
  7.  
  8.     @PrintlnLog(description = "訂單詳情Controller"
  9.     @RequestMapping("/order"
  10.     public OrderDTO getOrder(OrderVO orderVO, String name) { 
  11.  
  12.         OrderDTO orderInfo = orderService.getOrderInfo(orderVO); 
  13.  
  14.         return orderInfo; 
  15.     } 

代碼里去掉 log.info日志打印,加上 @PrintlnLog 看一下效果,清晰明了。

 

 

Demo GitHub地址:https://github.com/chengxy-nds/Springboot-Notebook/tree/master/springboot-aop-unifiedlog

 

責(zé)任編輯:武曉燕 來源: 程序員內(nèi)點(diǎn)事
相關(guān)推薦

2020-04-09 08:29:50

編程語言事件驅(qū)動(dòng)

2020-11-09 14:03:51

Spring BootMaven遷移

2020-10-10 09:09:21

CTOCRUD設(shè)計(jì)

2019-11-26 10:07:10

業(yè)務(wù)開發(fā)邏輯

2022-09-26 10:01:04

SpringAOP日志

2025-11-14 09:24:26

運(yùn)維Ansible?自動(dòng)化

2018-03-23 05:25:18

5GWiFi網(wǎng)絡(luò)

2025-05-13 07:02:43

2019-12-02 10:34:19

Python虛擬機(jī)內(nèi)存

2021-04-20 08:02:08

業(yè)務(wù)數(shù)據(jù)用戶

2021-04-27 10:26:57

微軟Linux桌面

2020-12-28 13:43:03

MacWindowsSurface

2024-02-19 09:10:46

OpenAISora功能

2023-11-29 09:09:27

OceanBase底層

2022-04-06 21:50:08

區(qū)塊鏈互聯(lián)網(wǎng)支付

2021-09-09 18:12:22

內(nèi)存分段式網(wǎng)絡(luò)

2014-12-01 11:20:28

Win8.1微軟

2020-01-21 19:21:44

WindowsWindows 10Windows XP

2022-03-26 08:49:13

MySQL數(shù)據(jù)存儲(chǔ)

2018-10-06 15:38:12

點(diǎn)贊
收藏

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

成人美女视频在线看| 欧美xxxxx视频| 欧美日韩精品在线| 欧美亚洲国产免费| 国产精品九九九九| 激情欧美一区| 中文字幕av一区二区| 色姑娘综合天天| 高清在线视频不卡| 中文在线一区二区| 成人免费视频网站| 无码人妻精品一区二区蜜桃色欲| 日韩久久综合| 精品国产凹凸成av人导航| 嫩草av久久伊人妇女超级a| 巨大荫蒂视频欧美大片| 91丨九色丨国产丨porny| 国产欧美一区二区三区在线| 动漫精品一区一码二码三码四码| 精品国产91久久久久久浪潮蜜月| 日韩免费成人网| 中文字幕天天干| 美女的胸无遮挡在线观看| 国产精品福利av| 久久精品日韩| 99精品视频在线播放免费| 一级成人国产| 欧美xxxx18国产| 色欲狠狠躁天天躁无码中文字幕| 丁香五月缴情综合网| 欧美精品在线视频| 国产裸体免费无遮挡| 成人免费图片免费观看| 自拍偷拍亚洲激情| 日韩欧美亚洲日产国产| 亚州视频一区二区三区| 国产激情精品久久久第一区二区| 国产精品观看在线亚洲人成网| 精品少妇久久久久久888优播| 成人在线免费观看视频| 亚洲另类图片色| 黑森林av导航| 国产精品一区二区美女视频免费看| 一本色道亚洲精品aⅴ| www精品久久| 污视频在线看网站| 亚洲精品视频在线观看免费| 亚洲最大色综合成人av| 第九色区av在线| 久久精品亚洲精品国产欧美kt∨| 国产日韩久久| 日韩在线视频观看免费| 成人中文字幕合集| 国产精品国产三级欧美二区| www.日韩高清| 国产成人免费视频网站| 亚洲综合在线做性| 精品二区在线观看| 国产传媒一区在线| 粉嫩精品一区二区三区在线观看| 国产特黄一级片| 国产精品一卡二卡在线观看| 91精品久久久久久蜜桃| 精品国产无码一区二区| 国产成人精品免费在线| 91免费观看| www.国产视频| 成人h精品动漫一区二区三区| 国产精品久久亚洲7777| 黄色片网站免费在线观看| 成人福利视频在线| 久久伊人资源站| 蜜芽tv福利在线视频| 国产色产综合色产在线视频| 日韩中文一区| 免费在线看黄色| 亚洲另类中文字| 日韩精品一区二区免费| 在线观看网站免费入口在线观看国内| 欧美视频一二三| 自拍偷拍 国产| 日韩专区视频网站| 欧美sm美女调教| 无遮挡aaaaa大片免费看| jiujiure精品视频播放| 久久资源免费视频| 日本熟伦人妇xxxx| 首页国产欧美久久| 91久久精品久久国产性色也91| 国产成人a人亚洲精品无码| 成人激情动漫在线观看| 日本视频一区二区在线观看| 日本最新在线视频| 亚洲午夜久久久久| 亚洲少妇第一页| 亚洲精品在线国产| 亚洲欧洲在线播放| 三级影片在线看| 久久精品天堂| 亚洲影院色无极综合| 欧美色图另类| 亚洲老司机在线| 无码人妻丰满熟妇区毛片| 国产精品igao视频网网址不卡日韩| 亚洲高清色综合| 久久国产高清视频| 国产亚洲精品自拍| 91免费国产网站| 毛片免费在线观看| 亚洲精品国产精品乱码不99| 欧美日韩在线免费播放| 国产精品对白久久久久粗| 中文字幕亚洲二区| 国产欧美日韩另类| 国产在线视频不卡二| 欧美日本国产精品| 国内老司机av在线| 91精品在线免费| 国产成人av一区二区三区不卡| 亚洲五月综合| 国产精品久久久久久婷婷天堂 | 综合久久久久| 热99精品只有里视频精品| 国内精品偷拍视频| 中文字幕一区二区三区不卡在线 | 免费成人深夜夜行网站| 国产精品社区| 国产一区二区三区四区五区加勒比| 在线观看a视频| 欧美特黄级在线| 国产亚洲精品成人a| 久久精品亚洲人成影院| 国产精品极品尤物在线观看| 四季av日韩精品一区| 亚洲激情在线激情| 亚洲美女性囗交| 欧美一级精品| 国产精品91视频| 三区在线视频| 粉嫩av一区二区三区免费野| 国产精品熟妇一区二区三区四区| 欧美成免费一区二区视频| 国产精品久久久久久久久久尿| 午夜影院免费视频| 婷婷成人综合网| 国产激情视频网站| 99这里有精品| 久久综合久久久| 亚洲精华液一区二区三区| 亚洲高清不卡av| 日韩欧美性视频| 91欧美一区二区| 青青视频在线播放| 久久综合欧美| 国产精品成人免费电影| 国产视频福利在线| 欧美综合在线视频| 东京热无码av男人的天堂| 日韩影院免费视频| 亚洲国产一区二区精品视频 | 成人免费网站在线| 美女国产在线| 欧美一级片在线| 久久婷婷国产麻豆91| 成人午夜电影小说| 久在线观看视频| 免费看成人哺乳视频网站| 欧美一级视频免费在线观看| 日本黄在线观看| 日韩欧美在线第一页| 国产精品天天干| 美女在线视频一区| 97在线免费视频观看| silk一区二区三区精品视频| 午夜免费日韩视频| 邻居大乳一区二区三区| 欧美午夜精品一区二区蜜桃 | 青青草国产免费一区二区下载 | 久久成人免费视频| 亚洲精品字幕在线观看| 精品人伦一区二区三区蜜桃网站| 国产特黄级aaaaa片免| 日产欧产美韩系列久久99| 在线播放 亚洲| 成人性生交大片免费看中文视频| 18久久久久久| 最新国产在线观看| 亚洲白虎美女被爆操| www.国产毛片| 亚洲色图.com| 亚洲综合自拍网| 奇米一区二区三区| a级免费在线观看| 国产精品一国产精品| 亚洲一区二区免费在线| 中文不卡1区2区3区| 久久精品99无色码中文字幕 | 国产精品亲子伦av一区二区三区 | 久久久久久久九九九九| www国产成人免费观看视频 深夜成人网| www.涩涩涩| 亚洲人成免费| 一区二区三区四区国产| 色狼人综合干| 亚洲伊人第一页| 日本另类视频| 韩国欧美亚洲国产| 欧美69xxxx| 日韩成人av网址| av网站在线观看免费| 91久久精品一区二区三区| 唐朝av高清盛宴| 久久精子c满五个校花| 性生交大片免费看l| 日本不卡高清视频| 免费看的黄色大片| 欧美视频网站| 日本三日本三级少妇三级66| 欧美精品第一区| 国产精品一级久久久| 国产不卡精品| 国产精品99免视看9| h片在线观看| 欧美日本亚洲视频| 欧美成人高清在线| 在线视频亚洲欧美| 飘雪影院手机免费高清版在线观看| 日韩欧美国产三级电影视频| 中文字幕视频一区二区| 日韩欧美中文免费| 久久久久久久极品| 午夜日韩在线电影| www.av视频| 亚洲人成7777| 国产极品美女在线| 欧美激情一区不卡| 国产成人福利在线| 国产亚洲欧洲997久久综合| 国产精品久久久免费观看| 不卡av免费在线观看| 成年人看片网站| 国产成人免费在线视频| 亚洲熟妇一区二区| 国产成人综合在线观看| 伊人五月天婷婷| 韩日精品视频一区| 欧美高清精品一区二区| 国产乱人伦偷精品视频不卡| 国产精品自在自线| 精品一区二区三区在线观看国产 | 国精品产品一区| 国产精品美女久久久久久免费| 国产精品伦理| 国产999精品久久久| 巨茎人妖videos另类| 国产成人精品久久亚洲高清不卡 | 国产欧美一区二区三区视频| 欧美大片网站| 成人网址在线观看| 日韩一二三区在线观看| 丁香婷婷久久久综合精品国产| 中文字幕日韩高清在线| 国产精品乱子乱xxxx| 色老板在线视频一区二区| 日本精品一区二区三区不卡无字幕| 国产aⅴ精品一区二区三区久久| 欧美亚洲另类在线一区二区三区| 综合伊思人在钱三区| 日本在线高清视频一区| 久久视频在线| 加勒比海盗1在线观看免费国语版| 欧美高清日韩| 妞干网在线视频观看| 国产精品视区| 亚洲另类第一页| 国产精品影视网| 国产免费一区二区三区最新6| 91年精品国产| youjizz亚洲女人| 亚洲欧美成人一区二区三区| 日韩av一二三区| 在线一区二区三区四区五区| 国产精品久久久午夜夜伦鲁鲁| 日韩女优制服丝袜电影| 午夜激情在线视频| 中文字幕日韩欧美在线| 污污片在线免费视频| 欧美一区二区视频97| 免费一级欧美在线观看视频| 国产99在线免费| 国产精品羞羞答答在线观看| 香蕉视频免费版| 一区二区三区成人精品| 亚洲欧美日韩精品一区| 99精品黄色片免费大全| 亚洲一级理论片| 午夜视频久久久久久| 亚洲中文字幕在线一区| 亚洲电影在线观看| 午夜激情视频在线| 午夜精品久久久久久久99黑人| 美女网站视频一区| 成人91视频| 欧美日韩精品在线一区| 国产曰肥老太婆无遮挡| 蜜臂av日日欢夜夜爽一区| 99re这里只有| 亚洲女人****多毛耸耸8| 亚洲综合久久网| 欧美大片日本大片免费观看| av二区在线| 2018日韩中文字幕| 久久久久久久久久久久电影| 欧美中日韩一区二区三区| 激情久久五月| 国产一级片中文字幕| 国产亚洲精品精华液| 一区二区三区免费高清视频| 欧美日韩国产大片| 男操女在线观看| 91精品国产91久久久| 国产欧美88| 亚洲一卡二卡区| 天堂蜜桃一区二区三区| 国产一级伦理片| 亚洲精品免费播放| 亚洲最新av网站| 国产亚洲精品综合一区91| 国产高清自产拍av在线| 97超碰最新| 亚洲影视一区二区三区| 国模私拍视频在线观看| 国产欧美精品国产国产专区| 日本韩国欧美中文字幕| 亚洲第一级黄色片| 第一av在线| 国产精品区一区二区三在线播放| 亚洲精品电影| 日韩精品视频网址| 亚洲精品久久久久久国产精华液| 中文字幕你懂的| 亚洲视频国产视频| 婷婷综合六月| 日产精品久久久一区二区| 日韩高清不卡一区| 日韩女同一区二区三区 | 麻豆视频一区| 18禁网站免费无遮挡无码中文| 国产成人8x视频一区二区| 国产大片免费看| 日韩三级电影网址| 日韩欧美一起| 国产精品免费在线 | 中文字幕不卡在线| 最新在线中文字幕| 色婷婷久久av| 高清不卡一区| 亚洲中文字幕无码一区二区三区 | 深爱五月激情网| 色婷婷激情一区二区三区| 国产主播福利在线| 国产精品视频精品视频| 色乱码一区二区三区网站| 超碰成人在线播放| 一二三区精品视频| 污污网站免费在线观看| 日本国产一区二区三区| 精品美女久久| 国产精欧美一区二区三区白种人| 亚洲欧美日本在线| 欧美一区二区三区黄片| 2018国产精品视频| 日韩欧美一区二区三区在线视频 | 久久国产精品网| 久久伊99综合婷婷久久伊| 糖心vlog精品一区二区| 久久视频在线免费观看| 超碰97久久| 妓院一钑片免看黄大片| 国产精品国产三级国产| 亚洲黄色在线观看视频| 欧美一区二区三区艳史| 日韩中文在线电影| 韩国黄色一级片| 色综合色综合色综合色综合色综合 | 亚洲国产精品免费| 欧美xxxx做受欧美护士| a级网站在线观看| 91一区二区在线观看| 在线免费观看av片| 欧美精品久久久久| 国产成人黄色| 最新中文字幕日本| 欧美三级韩国三级日本一级| 1区2区3区在线视频| 欧美一区二区视频17c| 国产麻豆精品theporn| 看片网址国产福利av中文字幕| 日韩网站在线观看| 人人精品视频|