精品欧美一区二区三区在线观看 _久久久久国色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)

艳妇乳肉豪妇荡乳av| 麻豆精品国产传媒av| 成人激情电影在线看| 日韩影院在线观看| 一区二区欧美在线| 日本三级黄色网址| 国产激情视频在线| 成人免费毛片高清视频| 欧美在线免费视频| 欧美18—19性高清hd4k| 亚洲欧洲二区| 亚洲国产日韩综合久久精品| 久久精品丝袜高跟鞋| 中文字幕乱伦视频| 国产精品久久| 亚洲色图综合网| 中文字幕1234区| 阿v视频在线| 国产欧美一区二区精品婷婷| 亚洲精品欧美极品| 日韩黄色三级视频| 欧美成人直播| 91精品国产综合久久久久久漫画| 国产手机免费视频| av在线播放免费| 国产99久久久国产精品免费看| 2018中文字幕一区二区三区| 日本xxxxxxxxx18| 精品视频一区二区三区在线观看| 精品久久久久久久久久国产| 一区二区不卡在线视频 午夜欧美不卡'| 精品国产伦一区二区三区| 国产精品视区| 欧美成人黄色小视频| av在线网站观看| 视频国产精品| 欧美日韩激情一区二区三区| 精品欧美一区免费观看α√| 蜜桃视频在线观看免费视频网站www| 不卡免费追剧大全电视剧网站| 国产精品丝袜一区二区三区| xxxx.国产| 欧美视频日韩| 日韩最新在线视频| 亚洲国产欧美91| 超碰超碰人人人人精品| 亚洲午夜影视影院在线观看| 中文字幕久精品免| 国产免费av高清在线| 成人成人成人在线视频| 91欧美激情另类亚洲| 中文字幕精品无码一区二区| 一区二区三区四区电影| 在线观看不卡av| 新91视频在线观看| 综合激情网...| 欧美日本高清视频在线观看| av观看免费在线| 日韩精品极品| 亚洲精品久久7777| 大桥未久一区二区| 成人日韩欧美| 日本一区二区三区视频视频| 欧美专区一二三| 色哟哟中文字幕| 99久久综合狠狠综合久久| 国产欧美日韩视频| 91国内精品视频| 韩国v欧美v日本v亚洲v| 成人免费网站在线观看| 91在线视频免费播放| 性色一区二区三区| 97国产精品视频| 日本在线观看中文字幕| 亚洲精品日韩久久| 91精品国产精品| 国产亚洲欧美在线精品| 日本中文一区二区三区| 国产精品高清网站| 99久久99久久久精品棕色圆| 懂色av一区二区三区免费观看| 国内外成人免费视频| 国产小视频免费在线网址| 欧美激情一区二区在线| 在线观看18视频网站| 爱看av在线| 在线精品视频小说1| 亚洲美女爱爱视频| 成功精品影院| 亚洲精品小视频| www日韩在线| 影音先锋久久久| 日韩av片电影专区| 国产一区二区三区三州| av电影一区二区| 日本免费高清一区二区| 91精选在线| 欧美日韩在线影院| 亚洲免费成人在线视频| 精品五月天堂| 北条麻妃一区二区三区中文字幕 | 久久久久久网站| 波多野结衣电影在线播放| 国产麻豆9l精品三级站| 欧美激情www| 污污网站在线看| 91久久精品一区二区三区| 国产伦精品一区二区三区妓女下载| 欧美一级三级| 毛片精品免费在线观看| jizz国产在线观看| 国产成人av影院| 无码免费一区二区三区免费播放 | 久久在线电影| 91av在线看| 99久久精品国产成人一区二区 | 国产精品一二三产区| 欧美日韩国产免费一区二区| 日本一区二区在线免费观看| 亚洲澳门在线| 国产精品福利在线观看网址| 午夜一区在线观看| 一区二区三区日本| 老司机久久精品| 精品日本12videosex| 91精品国产电影| 色哟哟中文字幕| 夜夜爽夜夜爽精品视频| 天天插天天操天天射| 亚洲精品亚洲人成在线观看| 欧美精品videos| 成人激情四射网| 亚洲激情网站免费观看| 超碰人人草人人| 91一区二区| 国产精品亚洲网站| 爱久久·www| 色噜噜偷拍精品综合在线| 久久久久久婷婷| 女同性一区二区三区人了人一| 国产在线观看精品| 午夜毛片在线| 欧美日韩一区二区欧美激情| 亚洲av熟女国产一区二区性色 | 777午夜精品福利在线观看| 国产xxxx在线观看| 亚洲精选一二三| 在线观看网站黄| 欧美久久视频| y111111国产精品久久婷婷| av官网在线播放| 日韩写真欧美这视频| 岛国毛片在线观看| 国产福利一区二区三区| 亚洲国产一二三精品无码| 精品视频一区二区三区在线观看| 蜜臀久久99精品久久久无需会员| 国产强伦人妻毛片| 亚洲综合在线视频| 无码人妻丰满熟妇区毛片蜜桃精品 | 日本欧美在线看| 亚洲国产激情一区二区三区| 九七电影院97理论片久久tvb| 中文字幕一区二区三区电影| 97人妻精品一区二区三区视频 | 中文字幕亚洲天堂| 国产又粗又猛又爽| 亚洲精品免费在线观看| 国产精品igao网网址不卡| 欧美片第1页综合| 国产日本一区二区三区| 免费看男女www网站入口在线| 精品性高朝久久久久久久| 午夜婷婷在线观看| 欧美国产乱子伦 | 日韩在线国产精品| 国产三级漂亮女教师| 一个色妞综合视频在线观看| 99久久免费看精品国产一区| 视频在线观看一区二区三区| 亚洲日本精品| 日韩中文字幕| 欧美专区日韩视频| 亚洲成人影院麻豆| 亚洲精品一区二区在线观看| 久久久久久久久久一级| 亚洲激情在线播放| 成人精品999| 精品夜夜嗨av一区二区三区| 九九爱精品视频| 成人在线视频免费观看| 97se视频在线观看| 中文字幕这里只有精品| 精品国产欧美一区二区三区成人 | 中文字幕黄色片| 最新国产の精品合集bt伙计| 中文字幕在线视频播放| 免费成人在线视频观看| 日韩av中文字幕第一页| 成人无号精品一区二区三区| 国产精品亚洲综合| 开心久久婷婷综合中文字幕| 国内精品在线一区| 日本福利在线| 亚洲男人天堂2023| www.久久伊人| 精品视频123区在线观看| 久久久久久免费观看| 国产人妻黑人一区二区三区| 美女任你摸久久 | 免费视频网站www| 国产精品网站在线观看| 亚洲一区二区三区无码久久| 极品少妇xxxx偷拍精品少妇| 日韩av片在线看| 黄色成人精品网站| 在线观看成人av电影| 国产一区二区亚洲| 精选一区二区三区四区五区| 欧洲一区在线| 国产色综合天天综合网| 桃子视频成人app| 97精品免费视频| 青春草免费在线视频| 久久香蕉频线观| 成人在线免费观看| 亚洲跨种族黑人xxx| 色欲av永久无码精品无码蜜桃| 欧美精品1区2区3区| 天天干天天插天天射| 岛国精品视频在线播放| 国产精品a成v人在线播放| 一区二区三区在线免费| 色偷偷www8888| 中文字幕在线一区| 调教驯服丰满美艳麻麻在线视频| 成人国产精品免费观看动漫| 国产chinesehd精品露脸| 国产专区欧美精品| 天天摸天天舔天天操| 美女脱光内衣内裤视频久久网站| 91福利国产成人精品播放| 久久青草久久| 少妇性l交大片| 久久中文字幕一区二区三区| 国产精品wwwww| 久久久国产精品一区二区中文| av免费观看网| 国产精品试看| 久久午夜夜伦鲁鲁一区二区| 久久久成人网| 亚洲黄色a v| 看片网站欧美日韩| 天堂av在线8| 国产麻豆精品视频| 性折磨bdsm欧美激情另类| www.成人网.com| 波多野结衣影院| 久久久噜噜噜久噜久久综合| 国产伦理片在线观看| 国产精品久久久久久福利一牛影视 | 亚洲精品美腿丝袜| 国产一级大片在线观看| 婷婷夜色潮精品综合在线| 99热只有这里有精品| 91久久精品国产91性色tv| 奴色虐av一区二区三区| 欧美日韩1234| 亚洲黄色在线观看视频| 日韩国产精品亚洲а∨天堂免| 性xxxx搡xxxxx搡欧美| 国产性色av一区二区| 五月天婷婷在线视频| 久久99久国产精品黄毛片入口| 国产啊啊啊视频在线观看| 热99精品里视频精品| 日本国产一区| 国产精品有限公司| 欧美久久精品一级c片| 精品国产三级a∨在线| 日韩一级不卡| 日本中文字幕高清| 国产成人av福利| 亚洲av无码一区二区三区人| 1024亚洲合集| 毛片视频网站在线观看| 欧美精品v国产精品v日韩精品| 日本黄色大片视频| 日韩在线欧美在线国产在线| 成人女同在线观看| 国产精品中文字幕久久久| 麻豆一区二区麻豆免费观看| 在线观看日本一区| 国产一区白浆| 亚洲欧美激情一区二区三区| 久久精品亚洲乱码伦伦中文| 久久久国产精品人人片| 欧美亚洲国产一区二区三区 | 香港三级日本三级a视频| 米奇777在线欧美播放| 26uuu国产| 国产精品美女久久久久av爽李琼| 日本天堂网在线观看| 宅男噜噜噜66一区二区66| 欧美日本网站| 国产+成+人+亚洲欧洲| 日韩在线激情| 日本一区二区久久精品| 亚洲片区在线| 丰满少妇一区二区三区专区| 国产精品亲子伦对白| 日韩三级一区二区| 亚洲电影在线看| 日本片在线看| 成人国产精品免费视频| 深爱激情综合网| 97国产精东麻豆人妻电影| 国产毛片精品国产一区二区三区| v8888av| 亚洲亚洲精品在线观看| 中文字幕在线一| 亚洲欧美国产精品久久久久久久 | 国产精品免费av| 亚洲无码精品一区二区三区| 精品动漫一区二区三区在线观看| 91电影在线播放| 热久久这里只有精品| 91在线一区| 天堂8在线天堂资源bt| 久久草av在线| 调教驯服丰满美艳麻麻在线视频| 色婷婷久久久久swag精品| 亚洲av无码国产精品久久不卡| 久久精品亚洲国产| 成人精品电影在线| 久草热久草热线频97精品| av成人毛片| 亚洲麻豆一区二区三区| 亚洲一区自拍偷拍| 国产熟女一区二区丰满| 国产视频亚洲精品| 成人福利视频| 欧美凹凸一区二区三区视频| 亚洲欧美日韩专区| 香蕉久久久久久av成人| 一区二区视频免费在线观看| 国产又粗又黄又爽| 不卡伊人av在线播放| 亚洲人体在线| 亚洲 国产 欧美一区| 精品一区二区三区欧美| 成人性视频免费看| 7777精品伊人久久久大香线蕉超级流畅| 黄色的视频在线免费观看| 97视频在线观看亚洲| 老司机精品在线| 玩弄中年熟妇正在播放| 久久午夜老司机| 无码人妻精品一区二区| 神马久久桃色视频| 欧洲亚洲精品久久久久| 亚州欧美一区三区三区在线 | 国产精品视频xxxx| 先锋影音国产精品| 超碰av在线免费观看| 国产精品污www在线观看| 国产suv精品一区二区69| 欧美激情久久久久| 亚洲人成精品久久久| 蜜臀视频一区二区三区| 综合色天天鬼久久鬼色| a级片在线视频| 久久久久久久电影一区| 亚洲小说春色综合另类电影| www.欧美黄色| 91天堂素人约啪| 在线免费看毛片| 欧美精品在线免费观看| 久久精品福利| 粗暴91大变态调教| 亚洲欧美日韩久久| 日本黄视频在线观看| 8090成年在线看片午夜| 日韩精品永久网址| 欧美老女人bb| 欧美日韩一区二区三区四区| 污片视频在线免费观看| 欧美久久在线| 国产一区二区三区不卡在线观看 | 国产精品美女一区二区在线观看| www.日韩高清| 欧美一级视频在线观看| 99久久精品网站| 美女伦理水蜜桃4| 亚洲va欧美va人人爽午夜| av在线免费播放网站| www 成人av com| 亚洲人成久久| 三区四区在线观看| 亚洲精品aⅴ中文字幕乱码 |