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

為什么要避免用Apache Beanutils進行屬性的copy

開發 前端
在實際的項目開發中,對象間賦值普遍存在,隨著雙十一、秒殺等電商過程愈加復雜,數據量也在不斷攀升,效率問題,浮出水面。

大家好,我是哪吒。

今天,通過代碼實例、源碼解讀、四大工具類橫向對比的方式,和大家一起聊一聊對象賦值的問題。

在實際的項目開發中,對象間賦值普遍存在,隨著雙十一、秒殺等電商過程愈加復雜,數據量也在不斷攀升,效率問題,浮出水面。

問:如果是你來寫對象間賦值的代碼,你會怎么做?

答:想都不用想,直接代碼走起來,get、set即可。

問:下圖這樣?

圖片

答:對啊,你怎么能把我的代碼放到網上?

問:沒,我只是舉個例子

答:這涉及到商業機密,是很嚴重的問題

問:我發現你挺能扯皮啊,直接回答問題行嗎?

答:OK,OK,我也覺得這樣寫很low,上次這么寫之后,差點挨打

  1. 對象太多,ctrl c + strl v,鍵盤差點沒敲壞;
  2. 而且很容易出錯,一不留神,屬性沒對應上,賦錯值了;
  3. 代碼看起來很傻缺,一個類好幾千行,全是get、set復制,還起個了自以為很優雅的名字transfer;
  4. 如果屬性名不能見名知意,還得加上每個屬性的含義注釋(基本這種賦值操作,都是要加的,注釋很重要,注釋很重要,注釋很重要);
  5. 代碼維護起來很麻煩;
  6. 如果對象過多,會產生類爆炸問題,如果屬性過多,會嚴重違背阿里巴巴代碼規約(一個方法的實際代碼最多20行);

問:行了,行了,說說,怎么解決吧。

答:很簡單啊,可以通過工具類Beanutils直接賦值啊

問:我聽說工具類最近很卷,你用的哪個啊?

答:就Apache自帶的那個啊,賊簡單。我手寫一個,給你欣賞一下。

圖片

問:你這代碼報錯啊,避免用Apache Beanutils進行屬性的copy。

答:沒報錯,只是嚴重警告而已,代碼能跑就行,有問題再優化唄

問:你這什么態度?人事在哪劃拉的人,為啥會出現嚴重警告?

答:拿多少錢,干多少活,我又不是XXX,應該是性能問題吧

問:具體什么原因導致的呢?

答:3000塊錢還得手撕一下 apache copyProperties 的源代碼唄?

通過單例模式調用copyProperties,但是,每一個方法對應一個BeanUtilsBean.getInstance()實例,每一個類實例對應一個實例,這不算一個真正的單例模式。

public static void copyProperties(Object dest, Object orig) throws IllegalAccessException, InvocationTargetException {
BeanUtilsBean.getInstance().copyProperties(dest, orig);
}

性能瓶頸 --> 日志太多也是病

通過源碼可以看到,每一個copyProperties都要進行多次類型檢查,還要打印日志。

public void copyProperties(Object dest, Object orig) throws IllegalAccessException, InvocationTargetException {
// 類型檢查
if (dest == null) {
throw new IllegalArgumentException("No destination bean specified");
} else if (orig == null) {
throw new IllegalArgumentException("No origin bean specified");
} else {
// 打印日志
if (this.log.isDebugEnabled()) {
this.log.debug("BeanUtils.copyProperties(" + dest + ", " + orig + ")");
}

int var5;
int var6;
String name;
Object value;
// 類型檢查
// DanyBean 提供了可以動態修改實現他的類的屬性名稱、屬性值、屬性類型的功能
if (orig instanceof DynaBean) {
// 獲取源對象所有屬性
DynaProperty[] origDescriptors = ((DynaBean)orig).getDynaClass().getDynaProperties();
DynaProperty[] var4 = origDescriptors;
var5 = origDescriptors.length;

for(var6 = 0; var6 < var5; ++var6) {
DynaProperty origDescriptor = var4[var6];
// 獲取源對象屬性名
name = origDescriptor.getName();
// 判斷源對象是否可讀、判斷目標對象是否可寫
if (this.getPropertyUtils().isReadable(orig, name) && this.getPropertyUtils().isWriteable(dest, name)) {
// 獲取對應的值
value = ((DynaBean)orig).get(name);
// 每個屬性都調用一次copyProperty
this.copyProperty(dest, name, value);
}
}
} else if (orig instanceof Map) {
...
} else {
...
}

}
}

通過 jvisualvm.exe 檢測代碼性能

再通過jvisualvm.exe檢測一下運行情況,果然,logging.log4j赫然在列,穩居耗時Top1。

圖片

問:還有其它好的方式嗎?性能好一點的

答:當然有,據我了解有 4 種工具類,實際上,可能會有更多,話不多說,先簡單介紹一下。

  1. org.apache.commons.beanutils.BeanUtils。
  2. org.apache.commons.beanutils.PropertyUtils。
  3. org.springframework.cglib.beans.BeanCopier。
  4. org.springframework.beans.BeanUtils。

問:那你怎么不用?

答:OK,我來演示一下

public class Test {

private static void apacheBeanUtilsCopyTest(User source, User target, int sum){
for (int i = 0; i < sum; i++) {
org.apache.commons.beanutils.BeanUtils.copyProperties(source, target);
}
}

private static void commonsPropertyCopyTest(User source, User target, int sum){
for (int i = 0; i < sum; i++) {
org.apache.commons.beanutils.PropertyUtils.copyProperties(target, source);
}
}

static BeanCopier copier = BeanCopier.create(User.class, User.class, false);
private static void cglibBeanCopyTest(User source, User target, int sum){
for (int i = 0; i < sum; i++) {
org.springframework.cglib.beans.BeanCopier.copier.copy(source, target, null);
}
}

private static void springBeanCopy(User source, User target, int sum){
for (int i = 0; i < sum; i++) {
org.springframework.beans.BeanUtils.copyProperties(source, target);
}
}
}

"四大金剛" 性能統計

方法

1000

10000

100000

1000000

apache BeanUtils

906毫秒

807毫秒

1892毫秒

11049毫秒

apache PropertyUtils

17毫秒

96毫秒

648毫秒

5896毫秒

spring cglib BeanCopier

0毫秒

1毫秒

3毫秒

10毫秒

spring copyProperties

87毫秒

90毫秒

123毫秒

482毫秒

不測不知道,一測嚇一跳,差的還真的多。

spring cglib BeanCopier性能最好,apache BeanUtils性能最差。

性能走勢 --> spring cglib BeanCopier 優于 spring copyProperties 優于 apache PropertyUtils 優于 apache BeanUtils

避免用Apache Beanutils進行屬性的copy的問題 上面分析完了,下面再看看其它的方法做了哪些優化。

Apache PropertyUtils 源碼分析?

從源碼可以清晰的看到,類型檢查變成了非空校驗,去掉了每一次copy的日志記錄,性能肯定更好了。

  1. 類型檢查變成了非空校驗
  2. 去掉了每一次copy的日志記錄
  3. 實際賦值的地方由copyProperty變成了DanyBean  + setSimpleProperty;

DanyBean 提供了可以動態修改實現他的類的屬性名稱、屬性值、屬性類型的功能。

public void copyProperties(Object dest, Object orig){
// 判斷數據源和目標對象不是null
if (dest == null) {
throw new IllegalArgumentException("No destination bean specified");
} else if (orig == null) {
throw new IllegalArgumentException("No origin bean specified");
} else {
// 刪除了org.apache.commons.beanutils.BeanUtils.copyProperties中最為耗時的log日志記錄
int var5;
int var6;
String name;
Object value;
// 類型檢查
if (orig instanceof DynaBean) {
// 獲取源對象所有屬性
DynaProperty[] origDescriptors = ((DynaBean)orig).getDynaClass().getDynaProperties();
DynaProperty[] var4 = origDescriptors;
var5 = origDescriptors.length;

for(var6 = 0; var6 < var5; ++var6) {
DynaProperty origDescriptor = var4[var6];
// 獲取源對象屬性名
name = origDescriptor.getName();
// 判斷源對象是否可讀、判斷目標對象是否可寫
if (this.isReadable(orig, name) && this.isWriteable(dest, name)) {
// 獲取對應的值
value = ((DynaBean)orig).get(name);
// 相對于org.apache.commons.beanutils.BeanUtils.copyProperties此處有優化
// DanyBean 提供了可以動態修改實現他的類的屬性名稱、屬性值、屬性類型的功能
if (dest instanceof DynaBean) {
((DynaBean)dest).set(name, value);
} else {
// 每個屬性都調用一次copyProperty
this.setSimpleProperty(dest, name, value);
}
}
}
} else if (orig instanceof Map) {
...
} else {
...
}

}
}

通過 jvisualvm.exe 檢測代碼性能

再通過jvisualvm.exe檢測一下運行情況,果然,logging.log4j沒有了,其他的基本不變。

Spring copyProperties 源碼分析?

  1. 判斷數據源和目標對象的非空判斷改為了斷言。
  2. 每次copy沒有日志記錄。
  3. 沒有if (orig instanceof DynaBean) {這個類型檢查。
  4. 增加了放開權限的步驟。
private static void copyProperties(Object source, Object target, @Nullable Class<?> editable,
@Nullable String... ignoreProperties){

// 判斷數據源和目標對象不是null
Assert.notNull(source, "Source must not be null");
Assert.notNull(target, "Target must not be null");

/**
* 若target設置了泛型,則默認使用泛型
* 若是 editable 是 null,則此處忽略
* 一般情況下editable都默認為null
*/
Class<?> actualEditable = target.getClass();
if (editable != null) {
if (!editable.isInstance(target)) {
throw new IllegalArgumentException("Target class [" + target.getClass().getName() +
"] not assignable to Editable class [" + editable.getName() + "]");
}
actualEditable = editable;
}

// 獲取target中全部的屬性描述
PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable);
// 需要忽略的屬性
List<String> ignoreList = (ignoreProperties != null ? Arrays.asList(ignoreProperties) : null);

for (PropertyDescriptor targetPd : targetPds) {
Method writeMethod = targetPd.getWriteMethod();
// 目標對象存在寫入方法、屬性不被忽略
if (writeMethod != null && (ignoreList == null || !ignoreList.contains(targetPd.getName()))) {
PropertyDescriptor sourcePd = getPropertyDescriptor(source.getClass(), targetPd.getName());
if (sourcePd != null) {
Method readMethod = sourcePd.getReadMethod();
/**
* 源對象存在讀取方法、數據是可復制的
* writeMethod.getParameterTypes()[0]:獲取 writeMethod 的第一個入參類型
* readMethod.getReturnType():獲取 readMethod 的返回值類型
* 判斷返回值類型和入參類型是否存在繼承關系,只有是繼承關系或相等的情況下,才會進行注入
*/
if (readMethod != null &&
ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) {
// 放開讀取方法的權限
if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) {
readMethod.setAccessible(true);
}
// 通過反射獲取值
Object value = readMethod.invoke(source);
// 放開寫入方法的權限
if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) {
writeMethod.setAccessible(true);
}
// 通過反射寫入值
writeMethod.invoke(target, value);
}
}
}
}
}

總結?

阿里的友情提示,避免用Apache Beanutils進行對象的copy,還是很有道理的。

Apache Beanutils 的性能問題出現在類型校驗和每一次copy的日志記錄。

Apache PropertyUtils 進行了如下優化:

  1. 類型檢查變成了非空校驗。
  2. 去掉了每一次copy的日志記錄。
  3. 實際賦值的地方由copyProperty變成了DanyBean  + setSimpleProperty。

Spring copyProperties 進行了如下優化:

  1. 判斷數據源和目標對象的非空判斷改為了斷言。
  2. 每次copy沒有日志記錄。
  3. 沒有if (orig instanceof DynaBean) {這個類型檢查。
  4. 增加了放開權限的步驟。

本文轉載自微信公眾號「哪吒編程」,可以通過以下二維碼關注。轉載本文請聯系哪吒編程公眾號。

責任編輯:姜華 來源: 哪吒編程
相關推薦

2020-07-30 12:16:33

阿里巴巴Apache對象

2020-09-08 16:25:18

Apache BeancopyJava

2022-12-26 00:25:06

2022-05-10 15:24:34

KafkaZooKeeperKafka Raft

2023-09-21 16:17:48

數據驅動運營

2022-01-03 08:06:15

函數Go數據

2024-06-04 00:10:00

開發拷貝

2024-02-17 21:57:10

2015-08-06 10:14:15

造輪子facebook

2022-08-15 08:27:02

基站網絡

2013-03-12 14:30:09

Ubuntu操作系統

2017-08-02 16:47:43

數據數據收集數據分析

2014-05-19 15:52:57

Apache StraApache

2021-02-11 13:30:56

Nodejs源碼c++

2019-11-27 10:25:15

SaaS云端IT架構

2024-10-17 16:41:57

KafkaZooKeeper

2019-03-19 08:59:13

物聯網IOT技術

2017-09-08 08:35:16

Android代碼API設計

2017-04-05 16:40:45

2014-08-25 10:00:18

開源
點贊
收藏

51CTO技術棧公眾號

精品国产凹凸成av人网站| 国产精品久久久久久久久免费桃花 | 久久xxxx精品视频| 亚洲欧美色婷婷| 亚洲欧美自偷自拍另类| 午夜成年人在线免费视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产91|九色| 国产一区二区三区四区在线| 中文成人激情娱乐网| 一级精品视频在线观看宜春院| 国产一区在线免费观看| 最近中文字幕在线观看| 黄色亚洲免费| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 特黄特黄一级片| 91白丝在线| 国产欧美一区二区三区鸳鸯浴 | 亚洲色图15p| 亚洲一区二区三区四区精品| 午夜激情电影在线播放| 亚洲视频中文字幕| 欧美xxxx黑人又粗又长密月| 国产黄色大片网站| 久久中文欧美| 欧美极品少妇xxxxⅹ裸体艺术 | 欧美另类极品videosbest最新版本 | 亚洲欧洲日本韩国| 一区二区三区在线观看动漫| 欧洲亚洲一区二区三区四区五区| va视频在线观看| 久久一区中文字幕| 国语自产精品视频在线看一大j8 | 日韩毛片一二三区| 欧美日韩日本网| 免费av网站观看| 卡一卡二国产精品| 日韩美女在线播放| 1级黄色大片儿| 一本一本久久a久久综合精品| 亚洲精品视频网上网址在线观看| 中文字幕亚洲日本| 日本午夜精品久久久久| 亚洲精品欧美激情| 亚洲一区二区免费视频软件合集| 你懂的好爽在线观看| 国产成人av网站| 91老司机在线| 伊人精品一区二区三区| 肉肉av福利一精品导航| 欧美在线xxx| 亚洲一区欧美在线| 亚洲精品九九| 久久久久久成人| 强乱中文字幕av一区乱码| 亚洲精品国产首次亮相| 中文字幕日韩高清| 熟女少妇内射日韩亚洲| 妖精一区二区三区精品视频 | 国模精品一区| 亚洲精品视频免费| 成年人网站免费在线观看| 欧美成人基地| 亚洲精品国产电影| 日本xxx在线播放| 欧美黑白配在线| 亚洲精品720p| 少妇饥渴放荡91麻豆| 青青草原在线亚洲| 亚洲欧美激情视频| 日韩精品无码一区二区三区久久久| 神马日本精品| 亚洲午夜久久久久久久| 一级特黄曰皮片视频| 日产午夜精品一线二线三线| 色偷偷偷亚洲综合网另类| www.xx日本| 国产精品国产一区| 欧美激情视频一区| 精品在线播放视频| 久久亚洲不卡| 国产欧亚日韩视频| www.色呦呦| 国产成人av网站| 久久av免费观看| 九一国产在线| 国产精品成人在线观看| 成人在线免费高清视频| 岛国片av在线| 91久久香蕉国产日韩欧美9色| www黄色在线| 国产精久久久| 亚洲精品乱码久久久久久金桔影视| 精品久久久久久中文字幕人妻最新| 国产成人av| 精品久久国产精品| 狠狠躁夜夜躁人人爽天天高潮| 亚洲一区网站| 成人激情视频小说免费下载| 日本精品一区二区在线观看| 久久久久99精品一区| 中文字幕日韩精品久久| 69av成人| 欧美高清视频www夜色资源网| 色诱av手机版| 操欧美老女人| 欧美激情国产精品| 亚洲精品久久久久久久蜜桃| 国产乱一区二区| 久久综合一区| 污污片在线免费视频| 色欧美片视频在线观看在线视频| 三区视频在线观看| 羞羞色国产精品网站| 日韩精品1区2区3区| 亚洲国产你懂的| 美女网站免费观看视频| 亚洲一区二区三区中文字幕在线观看 | 欧洲av一区二区| 日韩欧美不卡一区| 国产又粗又黄又猛| 国产视频一区在线观看一区免费| 成人黄色免费网站在线观看| 三级无遮挡在线观看| 亚洲免费色视频| 中文字幕一区二区三区四区在线视频| 136国产福利精品导航网址应用| 国产一区二区三区精品久久久| 中文字幕一区二区三区手机版| 精品一区二区三区久久久| 免费观看成人高| 国产精品探花在线| 欧美一区二区在线免费播放| 国产视频三区四区| 国产欧美日韩一区二区三区在线| 精品国产1区| 2019av中文字幕| 亚洲精品第五页| 亚洲人xxxx| 一级片视频免费观看| 国产成人一区二区三区影院| 97在线免费观看| 午夜精品久久久久久久爽| 一区免费观看视频| 亚洲77777| 激情婷婷综合| 2019国产精品自在线拍国产不卡| 人人妻人人玩人人澡人人爽| 亚洲最新在线观看| 在线观看免费看片| 欧美一区不卡| 91精品视频一区| 麻豆影院在线观看| 欧美日韩久久一区| 久久久久人妻一区精品色| 蜜臀精品一区二区三区在线观看| 日韩欧美亚洲在线| 99九九久久| 中文字幕日韩av| 一级特黄aaa大片| 国产精品国产馆在线真实露脸| 亚洲一级片免费| 欧美电影免费播放| 成人久久18免费网站图片| 黄色免费在线看| 欧美一区二区三区色| 在线观看成人毛片| 丁香一区二区三区| 免费拍拍拍网站| 日韩av三区| 国产成人精品久久| yiren22综合网成人| 欧美日韩一区二区三区免费看| 日本视频在线免费| 国产在线精品视频| 大荫蒂性生交片| 欧美色图婷婷| 国产精品久久久久久五月尺| 日本免费视频在线观看| 日韩欧美你懂的| 中文字幕亚洲精品在线| 久久久久久毛片| 想看黄色一级片| 国产精品观看| 久久久久资源| 国产精品第一国产精品| 久久五月情影视| 天堂v在线观看| 日本道免费精品一区二区三区| 三上悠亚在线观看视频| 国产盗摄一区二区三区| 久久精品国产精品亚洲色婷婷| 国产午夜一区| 91麻豆精品秘密入口| 偷拍视频一区二区三区| 久久国内精品一国内精品| 亚洲精品一级片| 在线国产亚洲欧美| 欧美精品xxxxx| 欧美激情综合五月色丁香小说| 97超碰人人看| 香蕉成人久久| 在线观看污视频| 久久99高清| 99r国产精品视频| 欧美日韩大片| 久久久久久久久久久免费精品| 久久米奇亚洲| 精品欧美久久久| 中文字幕在线观看1| 亚洲电影在线播放| 特级西西人体高清大胆| 99久久伊人久久99| 天天久久综合网| 天堂成人免费av电影一区| 91传媒免费视频| 日韩免费久久| 免费在线一区二区| 亚洲va欧美va人人爽成人影院| 国产激情视频一区| 成av人片在线观看www| 色爱av美腿丝袜综合粉嫩av| 飘雪影视在线观看免费观看| 欧美成人一区二区| 97超视频在线观看| 欧洲亚洲精品在线| 一级片中文字幕| 亚洲一二三专区| 91久久久久久久久久久久久久| 久久天堂av综合合色蜜桃网| 性活交片大全免费看| 国产精品一区专区| 潘金莲激情呻吟欲求不满视频| 免费日韩av| 免费国产黄色网址| 亚洲午夜电影| 欧美日韩dvd| 综合激情视频| 欧美一级免费在线观看| 日韩一区二区在线| 日韩在线第一区| 国产精品免费不| 久久综合色一本| 中文字幕av一区二区三区人| 久久青青草原一区二区| 卡一精品卡二卡三网站乱码 | 欧美日本视频在线观看| 国产综合视频| 99热这里只有精品免费| 久久久久久久久国产一区| 无码免费一区二区三区免费播放| 精品在线观看入口| 欧美激情导航| 欧美欧美黄在线二区| 女人一区二区三区| 国产精品嫩模av在线| 日韩精彩视频| 欧美日韩中字| 亚洲欧美日韩另类精品一区二区三区| 国产一区二区三区91| 亚洲电影一二三区| 国产精品久久久久久麻豆一区软件| 在线观看视频黄色| 欧美在线免费| 成人精品视频在线播放| 亚洲伦理一区| 日韩 欧美 高清| 日韩在线观看一区二区| 天天色综合天天色| 国产在线观看一区二区| 国产精品二区视频| 91在线高清观看| 日本爱爱爱视频| 亚洲欧美一区二区三区久本道91| 婷婷色中文字幕| 亚洲aaa精品| 4438国产精品一区二区| 欧美性猛交xxxxxx富婆| 国产免费av电影| 精品国产不卡一区二区三区| 日韩精品视频无播放器在线看 | 曰本三级日本三级日本三级| 99久久久久久99| 亚洲欧美va天堂人熟伦| 亚洲欧美国产高清| 九一国产在线观看| 欧美日韩亚洲综合一区| 99在线观看免费| 激情五月婷婷小说| 欧美亚洲一区| 国产性生交xxxxx免费| 欧美aaaaaa午夜精品| 18深夜在线观看免费视频| 91麻豆免费观看| 99久久99久久精品国产| 亚洲sss视频在线视频| 波多野结衣一区二区三区在线| 欧美二区乱c少妇| 神马午夜精品95| xxxxx成人.com| av中文字幕在线看| 国产精品一久久香蕉国产线看观看| 日韩激情欧美| 亚洲 国产 欧美一区| 少妇人妻丰满做爰xxx| 综合日韩在线| 国产一级片91| 日本亚洲一区二区| 波多野结衣办公室双飞| 中文字幕av资源一区| 黄色激情视频在线观看| 欧美日韩综合在线| 天堂av资源网| 欧美大尺度激情区在线播放| 免费成人直播| 国产精品乱子乱xxxx| 日韩在线观看一区| 欧美色图另类小说| 国产a精品视频| 情侣偷拍对白清晰饥渴难耐| 色综合久久久久综合99| 高清一区二区三区四区| 日韩在线不卡视频| 国产一区一一区高清不卡| 国产一区二区高清视频| 综合久久久久| 日本在线播放一区二区| 国产日韩精品久久久| 99热只有这里有精品| 欧美mv和日韩mv的网站| 激情在线小视频| 国产精品老女人精品视频| 亚洲日产av中文字幕| 国产精品无码av在线播放| 成人激情免费网站| 青青草手机在线视频| 日韩一二三区不卡| 日本视频在线观看| 国产免费一区二区三区在线能观看| 私拍精品福利视频在线一区| 国产69精品久久久久999小说| 国产精品99久久久久久有的能看| 成人精品一二三区| 在线观看欧美精品| 国产高清在线| 国产91网红主播在线观看| 亚洲人成网www| 红桃av在线播放| 久久久夜色精品亚洲| 久久精品国产成人av| 日韩电影中文字幕一区| 密臀av在线播放| 欧美xxxx黑人又粗又长密月| 久久久久久穴| 亚洲一区二区自偷自拍 | 超级碰碰久久| 免费亚洲一区二区| 丝袜亚洲另类欧美| 中文字幕av久久爽一区| 欧美亚洲动漫精品| 伊人免费在线| 亚洲一区二区三区777| 亚洲九九视频| 极品白嫩的小少妇| 激情成人在线视频| 国模吧精品人体gogo| 国产精品高清在线| 五月天久久网站| 少妇丰满尤物大尺度写真| 亚洲午夜国产一区99re久久| 日韩一级片免费看| 热久久这里只有精品| 色男人天堂综合再现| 亚欧精品在线视频| 亚洲午夜日本在线观看| 天堂av中文在线资源库| 国产成人涩涩涩视频在线观看| 日韩在线理论| 日本久久久久久久久久| 婷婷成人综合网| 国产日本在线视频| 91精品国产91久久久久青草| 亚洲免费高清| 大胸美女被爆操| 日韩欧美激情四射| 亚洲天堂资源| 99re8这里只有精品| aa级大片欧美| 中文字幕av无码一区二区三区| 久久综合网hezyo| 九色丨蝌蚪丨成人| 超碰在线播放91| 亚洲成a人v欧美综合天堂下载| 毛片在线播放网址| 亚洲最大福利网| 六月丁香综合| 国产女人被狂躁到高潮小说| 亚洲精品永久免费精品| 96sao精品免费视频观看| a在线视频观看|