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

為什么阿里巴巴禁止使用Apache Beanutils進行屬性的Copy?

開發 開發工具
在日常開發中,我們經常需要給對象進行賦值,通常會調用其set/get方法,有些時候,如果我們要轉換的兩個對象之間屬性大致相同,會考慮使用屬性拷貝工具進行。

 在日常開發中,我們經常需要給對象進行賦值,通常會調用其set/get方法,有些時候,如果我們要轉換的兩個對象之間屬性大致相同,會考慮使用屬性拷貝工具進行。

[[335679]]

如我們經常在代碼中會對一個數據結構封裝成DO、SDO、DTO、VO等,而這些Bean中的大部分屬性都是一樣的,所以使用屬性拷貝類工具可以幫助我們節省大量的set和get操作。

市面上有很多類似的工具類,比較常用的有

1、Spring BeanUtils

2、Cglib BeanCopier

3、Apache BeanUtils

4、Apache PropertyUtils

5、Dozer

由于篇幅優先,關于這幾種工具類的用法及區別,還有到底是什么是淺拷貝和深拷貝不在本文的討論范圍內。本文主要聚焦于對比這幾個類庫的性能問題。

性能對比

No Data No BB,我們就來寫代碼來對比下這幾種框架的性能情況。代碼示例如下:首先定義一個PersonDO類:

  1. public class PersonDO { 
  2.  
  3.     private Integer id; 
  4.  
  5.     private String name
  6.  
  7.     private Integer age; 
  8.  
  9.     private Date birthday; 
  10.  
  11.     //省略setter/getter 
  12.  

再定義一個PersonDTO類:

  1. public class PersonDTO { 
  2.  
  3.     private String name
  4.  
  5.     private Integer age; 
  6.  
  7.     private Date birthday; 
  8.  

然后進行測試類的編寫:使用Spring BeanUtils進行屬性拷貝:

  1. private void mappingBySpringBeanUtils(PersonDO personDO, int times) { 
  2.  
  3.     StopWatch stopwatch = new StopWatch(); 
  4.  
  5.     stopwatch.start(); 
  6.  
  7.  
  8.     for (int i = 0; i < times; i++) { 
  9.  
  10.         PersonDTO personDTO = new PersonDTO(); 
  11.  
  12.         org.springframework.beans.BeanUtils.copyProperties(personDO, personDTO); 
  13.  
  14.     } 
  15.  
  16.     stopwatch.stop(); 
  17.  
  18.     System.out.println("mappingBySpringBeanUtils cost :" + stopwatch.getTotalTimeMillis()); 
  19.  

其中的StopWatch用于記錄代碼執行時間,方便進行對比。

使用Cglib BeanCopier進行屬性拷貝:

  1. private void mappingByCglibBeanCopier(PersonDO personDO, int times) { 
  2.  
  3.     StopWatch stopwatch = new StopWatch(); 
  4.  
  5.     stopwatch.start(); 
  6.  
  7.     for (int i = 0; i < times; i++) { 
  8.  
  9.         PersonDTO personDTO = new PersonDTO(); 
  10.  
  11.         BeanCopier copier = BeanCopier.create(PersonDO.class, PersonDTO.class, false); 
  12.  
  13.         copier.copy(personDO, personDTO, null); 
  14.  
  15.     } 
  16.  
  17.     stopwatch.stop(); 
  18.  
  19.     System.out.println("mappingByCglibBeanCopier cost :" + stopwatch.getTotalTimeMillis()); 
  20.  

使用Apache BeanUtils進行屬性拷貝:

  1. private void mappingByApacheBeanUtils(PersonDO personDO, int times) 
  2.  
  3.     throws InvocationTargetException, IllegalAccessException { 
  4.  
  5.     StopWatch stopwatch = new StopWatch(); 
  6.  
  7.     stopwatch.start(); 
  8.  
  9.     for (int i = 0; i < times; i++) { 
  10.  
  11.         PersonDTO personDTO = new PersonDTO(); 
  12.  
  13.         BeanUtils.copyProperties(personDTO, personDO); 
  14.  
  15.     } 
  16.  
  17.     stopwatch.stop(); 
  18.  
  19.     System.out.println("mappingByApacheBeanUtils cost :" + stopwatch.getTotalTimeMillis()); 
  20.  

使用Apache PropertyUtils進行屬性拷貝:

  1. private void mappingByApachePropertyUtils(PersonDO personDO, int times) 
  2.  
  3.     throws InvocationTargetException, IllegalAccessException, NoSuchMethodException { 
  4.  
  5.     StopWatch stopwatch = new StopWatch(); 
  6.  
  7.     stopwatch.start(); 
  8.  
  9.     for (int i = 0; i < times; i++) { 
  10.  
  11.         PersonDTO personDTO = new PersonDTO(); 
  12.  
  13.         PropertyUtils.copyProperties(personDTO, personDO); 
  14.  
  15.     } 
  16.  
  17.     stopwatch.stop(); 
  18.  
  19.     System.out.println("mappingByApachePropertyUtils cost :" + stopwatch.getTotalTimeMillis()); 
  20.  

然后執行以下代碼:

  1. public static void main(String[] args) 
  2.  
  3.     throws InvocationTargetException, IllegalAccessException, NoSuchMethodException { 
  4.  
  5.     PersonDO personDO = new PersonDO(); 
  6.  
  7.     personDO.setName("Hollis"); 
  8.  
  9.     personDO.setAge(26); 
  10.  
  11.     personDO.setBirthday(new Date()); 
  12.  
  13.     personDO.setId(1); 
  14.  
  15.  
  16.     MapperTest mapperTest = new MapperTest(); 
  17.  
  18.  
  19.     mapperTest.mappingBySpringBeanUtils(personDO, 100); 
  20.  
  21.     mapperTest.mappingBySpringBeanUtils(personDO, 1000); 
  22.  
  23.     mapperTest.mappingBySpringBeanUtils(personDO, 10000); 
  24.  
  25.     mapperTest.mappingBySpringBeanUtils(personDO, 100000); 
  26.  
  27.     mapperTest.mappingBySpringBeanUtils(personDO, 1000000); 
  28.  
  29.     mapperTest.mappingByCglibBeanCopier(personDO, 100); 
  30.  
  31.     mapperTest.mappingByCglibBeanCopier(personDO, 1000); 
  32.  
  33.     mapperTest.mappingByCglibBeanCopier(personDO, 10000); 
  34.  
  35.     mapperTest.mappingByCglibBeanCopier(personDO, 100000); 
  36.  
  37.     mapperTest.mappingByCglibBeanCopier(personDO, 1000000); 
  38.  
  39.     mapperTest.mappingByApachePropertyUtils(personDO, 100); 
  40.  
  41.     mapperTest.mappingByApachePropertyUtils(personDO, 1000); 
  42.  
  43.     mapperTest.mappingByApachePropertyUtils(personDO, 10000); 
  44.  
  45.     mapperTest.mappingByApachePropertyUtils(personDO, 100000); 
  46.  
  47.     mapperTest.mappingByApachePropertyUtils(personDO, 1000000); 
  48.  
  49.     mapperTest.mappingByApacheBeanUtils(personDO, 100); 
  50.  
  51.     mapperTest.mappingByApacheBeanUtils(personDO, 1000); 
  52.  
  53.     mapperTest.mappingByApacheBeanUtils(personDO, 10000); 
  54.  
  55.     mapperTest.mappingByApacheBeanUtils(personDO, 100000); 
  56.  
  57.     mapperTest.mappingByApacheBeanUtils(personDO, 1000000); 
  58.  

得到結果如下:

工具類 執行1000次耗時 執行10000次耗時 執行100000次耗時 執行1000000次耗時
Spring BeanUtils 5ms 10ms 45ms 169ms
Cglib BeanCopier 4ms 18ms 45ms 91ms
Apache PropertyUtils 60ms 265ms 1444ms 11492ms
Apache BeanUtils 138ms 816ms 4154ms 36938ms
Dozer 566ms 2254ms 11136ms 102965ms

畫了一張折線圖更方便大家進行對比

綜上,我們基本可以得出結論,在性能方面,Spring BeanUtils和Cglib BeanCopier表現比較不錯,而Apache PropertyUtils、Apache BeanUtils以及Dozer則表現的很不好。

所以,如果考慮性能情況的話,建議大家不要選擇Apache PropertyUtils、Apache BeanUtils以及Dozer等工具類。很多人會不理解,為什么大名鼎鼎的Apache開源出來的的類庫性能確不高呢?這不像是Apache的風格呀,這背后導致性能低下的原因又是什么呢?其實,是因為Apache BeanUtils力求做得完美, 在代碼中增加了非常多的校驗、兼容、日志打印等代碼,過度的包裝導致性能下降嚴重。

總結

本文通過對比幾種常見的屬性拷貝的類庫,分析得出了這些工具類的性能情況,最終也驗證了《阿里巴巴Java開發手冊》中提到的"Apache BeanUtils 效率低"的事實。

但是本文只是站在性能這一單一角度進行了對比,我們在選擇一個工具類的時候還會有其他方面的考慮,比如使用成本、理解難度、兼容性、可擴展性等,對于這種拷貝類工具類,我們還會考慮其功能是否完善等。

就像雖然Dozer性能比較差,但是他可以很好的和Spring結合,可以通過配置文件等進行屬性之間的映射等,也受到了很多開發者的喜愛。

 

本文用到的第三方類庫的maven依賴如下:

  1. <!--Apache PropertyUtils、Apache BeanUtils--> 
  2.  
  3. <dependency> 
  4.  
  5.     <groupId>commons-beanutils</groupId> 
  6.  
  7.     <artifactId>commons-beanutils</artifactId> 
  8.  
  9.     <version>1.9.4</version> 
  10.  
  11. </dependency> 
  12.  
  13.  
  14.  
  15. <dependency> 
  16.  
  17.     <groupId>commons-logging</groupId> 
  18.  
  19.     <artifactId>commons-logging</artifactId> 
  20.  
  21.     <version>1.1.2</version> 
  22.  
  23. </dependency> 
  24.  
  25.  
  26.  
  27. <!--Spring PropertyUtils--> 
  28.  
  29. <dependency> 
  30.  
  31.     <groupId>org.springframework</groupId> 
  32.  
  33.     <artifactId>org.springframework.beans</artifactId> 
  34.  
  35.     <version>3.1.1.RELEASE</version> 
  36.  
  37. </dependency> 
  38.  
  39.  
  40.  
  41. <!--cglib--> 
  42.  
  43. <dependency> 
  44.  
  45.     <groupId>cglib</groupId> 
  46.  
  47.     <artifactId>cglib-nodep</artifactId> 
  48.  
  49.     <version>2.2.2</version> 
  50.  
  51. </dependency> 
  52.  
  53.  
  54.  
  55. <!--dozer--> 
  56.  
  57. <dependency> 
  58.  
  59.     <groupId>net.sf.dozer</groupId> 
  60.  
  61.     <artifactId>dozer</artifactId> 
  62.  
  63.     <version>5.5.1</version> 
  64.  
  65. </dependency> 
  66.  
  67.  
  68.  
  69. <!--日志相關--> 
  70.  
  71. <dependency> 
  72.  
  73.     <groupId>org.slf4j</groupId> 
  74.  
  75.     <artifactId>slf4j-api</artifactId> 
  76.  
  77.     <version>1.7.7</version> 
  78.  
  79. </dependency> 
  80.  
  81.  
  82.  
  83. <dependency> 
  84.  
  85.     <groupId>org.slf4j</groupId> 
  86.  
  87.     <artifactId>jul-to-slf4j</artifactId> 
  88.  
  89.     <version>1.7.7</version> 
  90.  
  91. </dependency> 
  92.  
  93.  
  94.  
  95. <dependency> 
  96.  
  97.     <groupId>org.slf4j</groupId> 
  98.  
  99.     <artifactId>jcl-over-slf4j</artifactId> 
  100.  
  101.     <version>1.7.7</version> 
  102.  
  103. </dependency> 
  104.  
  105.  
  106.  
  107. <dependency> 
  108.  
  109.     <groupId>org.slf4j</groupId> 
  110.  
  111.     <artifactId>log4j-over-slf4j</artifactId> 
  112.  
  113.     <version>1.7.7</version> 
  114.  
  115. </dependency> 
  116.  
  117.  
  118.  
  119. <dependency> 
  120.  
  121.     <groupId>org.slf4j</groupId> 
  122.  
  123.     <artifactId>slf4j-jdk14</artifactId> 
  124.  
  125.     <version>1.7.7</version> 
  126.  
  127. </dependency> 

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2020-09-08 16:25:18

Apache BeancopyJava

2023-01-11 08:06:42

對象賦值項目開發

2018-10-16 15:34:17

阿里巴巴Apache Flin大數據

2020-09-22 11:40:53

BigDecimalequalsJava

2021-10-11 09:32:40

包裝類型屬性

2019-03-04 09:22:52

阿里巴巴foreach Java

2025-04-17 08:47:23

2025-07-14 00:00:00

2022-09-05 10:06:21

MySQL外循環內循環

2021-08-04 17:20:30

阿里巴巴AsyncJava

2013-08-22 09:26:38

去IOE王堅

2019-06-26 07:54:53

ArrayListsubList源碼

2019-09-04 11:02:54

繼承層次組合

2019-09-02 15:20:28

Java開發繼承

2016-09-21 20:28:55

阿里巴巴IOE

2022-08-30 16:38:30

阿里巴巴JavaLog4j

2020-09-14 09:47:56

Java開發類型

2019-02-27 09:00:13

阿里巴巴for循環Java

2019-01-29 10:30:32

阿里巴巴Java字符串

2021-09-07 17:22:43

阿里巴巴辭職高薪
點贊
收藏

51CTO技術棧公眾號

日本不卡二区| 久久视频国产精品免费视频在线| 欧美无砖专区免费| 日本xxxx人| 99在线精品免费视频九九视| 日韩电影中文字幕| 99热手机在线| 黄色在线免费网站| 国产成人aaa| 性欧美视频videos6一9| 亚洲最大成人网站| 欧洲亚洲精品久久久久| 亚洲精品国产品国语在线app| av噜噜色噜噜久久| 翔田千里88av中文字幕| 日韩精品一区二区三区中文字幕 | 一区二区高清视频在线观看| 精品国产乱码一区二区三区四区| 中国一级特黄毛片| 日韩av免费大片| 91精品国产91久久久久久一区二区 | 忘忧草在线影院两性视频| 国产欧美一区二区精品性色超碰| 国产精品羞羞答答| 国产一级片网址| 久久精品亚洲成在人线av网址| 欧美日韩亚洲天堂| 成人手机视频在线| 天堂在线免费av| 精品伊人久久久久7777人| 国产69精品久久久久9| av小说在线观看| 久久国产精品美女| 91国偷自产一区二区开放时间 | 夜夜添无码一区二区三区| 欧美伦理影视网| 国产河南妇女毛片精品久久久| 欧美一性一乱一交一视频| 精品无码一区二区三区蜜臀| 第一区第二区在线| 欧美视频日韩视频在线观看| 国产 福利 在线| 黄污视频在线观看| 亚洲精品久久嫩草网站秘色| 一区国产精品| 欧美被日视频| 国产精品久久久久久久第一福利| 日本黑人久久| 国产中文字幕在线看| 97se亚洲国产综合自在线观| 国产自产精品| 日本精品一区二区在线观看| 成人午夜碰碰视频| 国产99视频精品免费视频36| www天堂在线| 国产99久久久国产精品潘金网站| 91九色极品视频| 精品国产免费无码久久久| 国产一区二区三区在线看麻豆| 91精品久久久久久久久久久| 国产伦精品一区二区三区视频痴汉| 久久se这里有精品| 91中文字幕在线观看| 国产亲伦免费视频播放| 国产一区二区三区免费在线观看| 成人国产在线视频| 国产剧情精品在线| 国产成人自拍在线| 国产乱码精品一区二区三区日韩精品| 成人毛片在线免费观看| va亚洲va日韩不卡在线观看| 久久久久久欧美精品色一二三四| 飘雪影视在线观看免费观看 | 精品久久久久久久久久久久久久久| 师生出轨h灌满了1v1| 成人在线tv视频| 亚洲男女自偷自拍图片另类| 99精品全国免费观看| 国产精品成人a在线观看| 久久国产精品电影| 日产欧产va高清| 青青青爽久久午夜综合久久午夜| 国产在线视频一区| 亚洲精品成av人片天堂无码| 久久你懂得1024| 一级二级三级欧美| 丰满大乳少妇在线观看网站| 91成人网在线| 精品国产午夜福利在线观看| 久久精品亚洲成在人线av网址| 一区二区三区视频免费在线观看 | 91精品综合| 久久久亚洲天堂| 国产主播第一页| 国产乱人伦偷精品视频免下载| 国产精品久久久久久久久久直播| 香蕉久久国产av一区二区| 91碰在线视频| 久久免费视频2| 九色porny丨国产首页在线| 欧美日韩电影在线| 日本精品一二三| 欧洲福利电影| 97免费视频在线| 国产精品-色哟哟| 久久网站最新地址| a级黄色片免费| 素人一区二区三区| 欧美精品一区男女天堂| 日本裸体美女视频| 亚洲自拍另类| 国产高清自拍一区| 在线免费看a| 亚洲精品少妇30p| 亚洲福利精品视频| 欧美丝袜美腿| 欧美国产亚洲视频| 97人妻精品一区二区三区视频 | 国产一区在线免费| 超碰免费公开在线| 欧美综合一区二区| 亚洲国产果冻传媒av在线观看| 久久精品亚洲人成影院| 国产成人久久久精品一区| 亚洲大尺度网站| 亚洲免费av在线| 天堂视频免费看| 国产亚洲第一伦理第一区| 午夜精品理论片| 亚洲成人第一区| 亚洲精选在线视频| 一起操在线视频| 日韩中文字幕高清在线观看| 国产成人久久久精品一区| 日韩av免费观影| 精品久久久中文| 日本50路肥熟bbw| 激情av一区| 91传媒视频免费| 成人日韩欧美| 日韩美女视频在线| 欧美三级日本三级| 国产精品1024| 免费人成自慰网站| 成人性生交大片免费看96| 欧美精品久久久久久久久久| www.黄色小说.com| 亚洲综合一区在线| 成人啪啪18免费游戏链接| 午夜久久tv| 国产aⅴ精品一区二区三区黄| 91最新在线视频| 欧美一级精品在线| 欧美国产在线看| 国产盗摄一区二区三区| 香港三级日本三级a视频| 亚洲一区二区电影| 欧美黄色片视频| 色哟哟中文字幕| 欧美日韩亚洲精品内裤| 国产女主播喷水高潮网红在线| 麻豆9191精品国产| 先锋影音日韩| 91丨精品丨国产| 欧美精品成人91久久久久久久| 成人免费公开视频| 色香蕉成人二区免费| 日本人亚洲人jjzzjjz| 麻豆精品视频在线观看免费| 亚洲黄色网址在线观看| 国产精品白丝av嫩草影院| 91av视频在线观看| 搞黄视频免费在线观看| 欧美一级二级三级蜜桃| 日韩特黄一级片| 国产免费成人在线视频| 中文字幕一区二区在线观看视频| 国产精品草草| 欧美精品一区在线发布| 日韩色性视频| 国内揄拍国内精品| 国产1区2区3区在线| 欧美一卡二卡三卡| 国产成人精品网| 国产精品欧美一区喷水| 免费在线观看日韩av| 久久欧美肥婆一二区| 一区二区三区四区免费视频| 激情av综合| 国产精品色悠悠| 不卡av免费观看| 国产一区二区三区在线视频| 国产黄色一区二区| 一本到一区二区三区| 99精品久久久久| 久久人人爽人人爽| 最好看的中文字幕| 视频一区二区中文字幕| 真人做人试看60分钟免费| 啄木系列成人av电影| 成人网在线观看| 日干夜干天天干| 黑人精品一区| 在线性视频日韩欧美| 蜜臀久久精品久久久久| 欧美日韩精品一二三区| 国产精品老女人| 亚洲老妇xxxxxx| 亚洲黄色网址大全| 26uuu精品一区二区三区四区在线| 老司机午夜性大片| 久久久久久久欧美精品| 男人添女荫道口女人有什么感觉| 日本一区二区在线看| 久久精品国产99精品国产亚洲性色| 天天综合在线观看| 国产极品精品在线观看| 9lporm自拍视频区在线| 操91在线视频| 丝袜美腿美女被狂躁在线观看| 亚洲精品一区二区三区不| 亚洲乱码精品久久久久..| 69精品人人人人| 国产精品51麻豆cm传媒| 色婷婷激情久久| 日韩精品成人一区| 亚洲国产日韩精品| 18岁成人毛片| 18欧美亚洲精品| 中文字幕观看av| 国产精品国产精品国产专区不蜜| 右手影院亚洲欧美| 久久日韩精品一区二区五区| 污污免费在线观看| 国产91丝袜在线播放| 杨幂一区二区国产精品| 国产在线精品视频| 国产精品v日韩精品v在线观看| 日韩国产高清影视| 欧美少妇性生活视频| 麻豆精品网站| 色诱视频在线观看| 老司机午夜精品视频| 久久综合久久色| 天堂精品中文字幕在线| 久久久久久久久久久视频| 亚洲免费影视| 欧美牲交a欧美牲交aⅴ免费下载| 国产日韩欧美一区二区三区在线观看| 成人免费在线网| 日韩视频中文| 日韩精品 欧美| 免费日韩视频| 久久久精品麻豆| 精品一区二区久久| 超碰91在线播放| 成人国产精品免费网站| 黄色免费视频网站| 久久综合精品国产一区二区三区| aa一级黄色片| 亚洲国产精品二十页| 婷婷国产成人精品视频| 亚洲欧美区自拍先锋| 久久久久噜噜噜亚洲熟女综合| 亚洲伊人伊色伊影伊综合网| 国产精品23p| 日韩欧美精品中文字幕| 中文字幕+乱码+中文| 7777精品伊人久久久大香线蕉的 | 亚欧洲精品在线视频免费观看| 日韩久久精品| 无码人妻精品一区二区蜜桃百度| 伊人激情综合| 老司机午夜av| 国内一区二区在线| 国产黑丝一区二区| 国产欧美一区二区精品性色超碰 | 午夜不卡久久精品无码免费| 91麻豆视频网站| 国产尤物在线播放| 午夜欧美一区二区三区在线播放| av一级在线观看| 欧美一级久久久久久久大片| 五月天婷婷在线播放| 日韩在线免费视频观看| 91美女精品| 国产精品日韩一区| 91精品国产乱码久久久竹菊| 欧美激情论坛| 中文av一区| 青青青国产在线视频| 国产高清精品在线| 国产ts在线播放| 一区二区三区国产精品| 亚洲欧美一二三区| 精品免费视频一区二区| 国产黄在线观看免费观看不卡| 久久国产精品久久国产精品| 亚洲欧美一区二区三区| 亚洲一区二区三区sesese| 亚洲裸色大胆大尺寸艺术写真| 7777在线视频| 日韩成人精品在线观看| 四季av综合网站| 亚洲欧美激情视频在线观看一区二区三区| 青青国产在线观看| 欧美一区二区三区日韩视频| 国产永久免费高清在线观看 | 日韩精品一区二区三区| 亚洲综合在线小说| 欧美色图国产精品| 免费成人在线视频网站| 国产精品一区二区在线观看网站| 国产精品免费无码| 精品久久久久久电影| 亚洲第一天堂在线观看| 中文字幕在线看视频国产欧美在线看完整 | 成人亚洲精品777777大片| 成人妖精视频yjsp地址| 性欧美videos| 欧美日韩国产首页在线观看| 欧美日韩影视| 国产69久久精品成人看| 成人三级av在线| 成人短视频在线观看免费| 久久99精品久久只有精品| 自拍偷拍中文字幕| 岛国精品视频在线播放| 懂色av蜜臀av粉嫩av分享吧| 久久偷看各类女兵18女厕嘘嘘| 国产欧美在线观看免费| 日韩一区不卡| 日韩精品高清不卡| 欧美多人猛交狂配| 一本大道久久a久久精二百| 天天干天天干天天干| 久久免费观看视频| 97久久亚洲| 日本一区午夜艳熟免费| 国产ts人妖一区二区| 九九在线观看视频| 日韩一区二区三区视频在线 | 亚洲AV无码久久精品国产一区| 最新国产成人在线观看| 国产精品无码免费播放| 日韩在线观看免费| 亚洲tv在线| 国产日韩第一页| 国产一区二区不卡在线| 91日韩中文字幕| 日韩精品一区二区三区中文不卡 | 一区二区免费看| 亚洲第一大网站| 91高清视频在线免费观看| 猫咪成人在线观看| 亚洲午夜精品久久久久久人妖| 91原创在线视频| 中文字幕精品无| www日韩中文字幕在线看| 99久久这里有精品| 超碰10000| av日韩在线网站| 天堂а√在线中文在线新版 | 九九九九九精品| 久久久噜噜噜久久狠狠50岁| 蜜桃av乱码一区二区三区| 欧美精品日日鲁夜夜添| 97caopron在线视频| 国产一区自拍视频| 亚洲资源av| 欧美xxxooo| 精品1区2区在线观看| 成人欧美大片| 亚洲欧洲久久| 丁香一区二区三区| 不卡av电影在线| 久久91精品国产| 日本一区福利在线| 9l视频白拍9色9l视频| 亚洲一区二区三区四区五区中文| 亚洲三级中文字幕| 成人www视频在线观看| 精品动漫3d一区二区三区免费版 | 手机看片国产精品| 精品色蜜蜜精品视频在线观看| 国产一区二区三区福利| 91久久久在线| 一区二区三区国产盗摄| 日韩黄色中文字幕| 亚洲大胆美女视频| 国产电影一区二区三区爱妃记| 福利在线小视频| 久久久不卡网国产精品一区| 国产偷拍一区二区| 欧美一级片久久久久久久| 中文字幕一区二区三三| 国产 欧美 在线| 欧美大片在线观看一区二区| 国模视频一区| 国产69精品久久久久久久|