日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

优雅的进行线上数据订正

發(fā)布時(shí)間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 优雅的进行线上数据订正 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在系統(tǒng)開發(fā)上線過程中,難免會(huì)遇到在測試過程中沒有覆蓋到的場景,而且還有可能生成臟數(shù)據(jù)。這個(gè)時(shí)候就需要對(duì)錯(cuò)誤數(shù)據(jù)進(jìn)行一一修改了。如果遇到需要修改的數(shù)據(jù)量比較少,那么可以進(jìn)行手動(dòng)的編輯 SQL。如果數(shù)據(jù)量過大的時(shí)候,進(jìn)行手動(dòng)編輯 SQL 不僅耗時(shí)還很容易出現(xiàn)錯(cuò)誤。做為一個(gè) coder 我們可以使用程序來解決這個(gè)問題。

下面我就把我的方法分享出來,核心步驟如下:

  • 首先,需要訂正的數(shù)據(jù)以 CSV 文件格式下載下來
  • 然后,把需要修訂的 SQL 模板確定下來,比如 update order set status = 1, update_time = now() where order_id = {};
  • 接著通過程序讀取 CSV ,讀取里面的訂單 ID,接著遍歷數(shù)據(jù)把 SQL 寫入文件并確認(rèn)一下 SQL
  • 最后只需要在線上執(zhí)行上面生成的 SQL 文件就可以了

從上面的 {} 符就可以看出這個(gè)和日志打印的占位符替換一樣,因?yàn)槲沂前?log4j2 里面的占位符替換扒拉了下來做為 SQL 模板的變量替換。

下面的項(xiàng)目依賴了以下 Jar 包:

  • lombok:簡化 java pojo 對(duì)象
  • commons-csv : apache 提供的 csv 操作框架
  • fastjson:alibaba 提供的 json 操作工具

1、StringBuilders.java

從 log4j 框架里面直接獲取到的一個(gè)工具類

StringBuilders.java

public class StringBuilders {/*** Appends a text representation of the specified object to the specified StringBuilder,* if possible without allocating temporary objects.** @param stringBuilder the StringBuilder to append the value to* @param obj the object whose text representation to append to the StringBuilder*/public static void appendValue(final StringBuilder stringBuilder, final Object obj) {if (!appendSpecificTypes(stringBuilder, obj)) {stringBuilder.append(obj);}}public static boolean appendSpecificTypes(final StringBuilder stringBuilder, final Object obj) {if (obj == null || obj instanceof String) {stringBuilder.append((String) obj);} else if (obj instanceof CharSequence) {stringBuilder.append((CharSequence) obj);} else if (obj instanceof Integer) { // LOG4J2-1437 unbox auto-boxed primitives to avoid calling toString()stringBuilder.append(((Integer) obj).intValue());} else if (obj instanceof Long) {stringBuilder.append(((Long) obj).longValue());} else if (obj instanceof Double) {stringBuilder.append(((Double) obj).doubleValue());} else if (obj instanceof Boolean) {stringBuilder.append(((Boolean) obj).booleanValue());} else if (obj instanceof Character) {stringBuilder.append(((Character) obj).charValue());} else if (obj instanceof Short) {stringBuilder.append(((Short) obj).shortValue());} else if (obj instanceof Float) {stringBuilder.append(((Float) obj).floatValue());} else if (obj instanceof Byte) {stringBuilder.append(((Byte) obj).byteValue());} else {return false;}return true;}}

2、ParameterFormatter.java

從 log4j 框架里面直接 copy 的工具類,用于占位符替換。

ParameterFormatter.java

public class ParameterFormatter {/*** Prefix for recursion.*/static final String RECURSION_PREFIX = "[...";/*** Suffix for recursion.*/static final String RECURSION_SUFFIX = "...]";/*** Prefix for errors.*/static final String ERROR_PREFIX = "[!!!";/*** Separator for errors.*/static final String ERROR_SEPARATOR = "=>";/*** Separator for error messages.*/static final String ERROR_MSG_SEPARATOR = ":";/*** Suffix for errors.*/static final String ERROR_SUFFIX = "!!!]";private static final char DELIM_START = '{';private static final char DELIM_STOP = '}';private static final char ESCAPE_CHAR = '\\';private ParameterFormatter() {}/*** Replace placeholders in the given messagePattern with arguments.** @param messagePattern the message pattern containing placeholders.* @param arguments the arguments to be used to replace placeholders.* @return the formatted message.*/public static String format(final String messagePattern, final Object... arguments){final StringBuilder result = new StringBuilder();final int argCount = arguments == null ? 0 : arguments.length;formatMessage(result, messagePattern, arguments, argCount);return result.toString();}/*** Replace placeholders in the given messagePattern with arguments.** @param buffer the buffer to write the formatted message into* @param messagePattern the message pattern containing placeholders.* @param arguments the arguments to be used to replace placeholders.*/public static void formatMessage(final StringBuilder buffer, final String messagePattern,final Object[] arguments, final int argCount) {if (messagePattern == null || arguments == null || argCount == 0) {buffer.append(messagePattern);return;}int escapeCounter = 0;int currentArgument = 0;int i = 0;final int len = messagePattern.length();for (; i < len - 1; i++) { // last char is excluded from the loopfinal char curChar = messagePattern.charAt(i);if (curChar == ESCAPE_CHAR) {escapeCounter++;} else {if (isDelimPair(curChar, messagePattern, i)) { // looks ahead one chari++;// write escaped escape charswriteEscapedEscapeChars(escapeCounter, buffer);if (isOdd(escapeCounter)) {// i.e. escaped: write escaped escape charswriteDelimPair(buffer);} else {// unescapedwriteArgOrDelimPair(arguments, argCount, currentArgument, buffer);currentArgument++;}} else {handleLiteralChar(buffer, escapeCounter, curChar);}escapeCounter = 0;}}handleRemainingCharIfAny(messagePattern, len, buffer, escapeCounter, i);}/*** Returns {@code true} if the specified char and the char at {@code curCharIndex + 1} in the specified message* pattern together form a "{}" delimiter pair, returns {@code false} otherwise.*/// Profiling showed this method is important to log4j performance. Modify with care!// 22 bytes (allows immediate JVM inlining: < 35 bytes) LOG4J2-1096private static boolean isDelimPair(final char curChar, final String messagePattern, final int curCharIndex) {return curChar == DELIM_START && messagePattern.charAt(curCharIndex + 1) == DELIM_STOP;}/*** Detects whether the message pattern has been fully processed or if an unprocessed character remains and processes* it if necessary, returning the resulting position in the result char array.*/// Profiling showed this method is important to log4j performance. Modify with care!// 28 bytes (allows immediate JVM inlining: < 35 bytes) LOG4J2-1096private static void handleRemainingCharIfAny(final String messagePattern, final int len,final StringBuilder buffer, final int escapeCounter, final int i) {if (i == len - 1) {final char curChar = messagePattern.charAt(i);handleLastChar(buffer, escapeCounter, curChar);}}/*** Processes the last unprocessed character and returns the resulting position in the result char array.*/// Profiling showed this method is important to log4j performance. Modify with care!// 28 bytes (allows immediate JVM inlining: < 35 bytes) LOG4J2-1096private static void handleLastChar(final StringBuilder buffer, final int escapeCounter, final char curChar) {if (curChar == ESCAPE_CHAR) {writeUnescapedEscapeChars(escapeCounter + 1, buffer);} else {handleLiteralChar(buffer, escapeCounter, curChar);}}/*** Processes a literal char (neither an '\' escape char nor a "{}" delimiter pair) and returns the resulting* position.*/// Profiling showed this method is important to log4j performance. Modify with care!// 16 bytes (allows immediate JVM inlining: < 35 bytes) LOG4J2-1096private static void handleLiteralChar(final StringBuilder buffer, final int escapeCounter, final char curChar) {// any other char beside ESCAPE or DELIM_START/STOP-combo// write unescaped escape charswriteUnescapedEscapeChars(escapeCounter, buffer);buffer.append(curChar);}/*** Writes "{}" to the specified result array at the specified position and returns the resulting position.*/// Profiling showed this method is important to log4j performance. Modify with care!// 18 bytes (allows immediate JVM inlining: < 35 bytes) LOG4J2-1096private static void writeDelimPair(final StringBuilder buffer) {buffer.append(DELIM_START);buffer.append(DELIM_STOP);}/*** Returns {@code true} if the specified parameter is odd.*/// Profiling showed this method is important to log4j performance. Modify with care!// 11 bytes (allows immediate JVM inlining: < 35 bytes) LOG4J2-1096private static boolean isOdd(final int number) {return (number & 1) == 1;}/*** Writes a '\' char to the specified result array (starting at the specified position) for each <em>pair</em> of* '\' escape chars encountered in the message format and returns the resulting position.*/// Profiling showed this method is important to log4j performance. Modify with care!// 11 bytes (allows immediate JVM inlining: < 35 bytes) LOG4J2-1096private static void writeEscapedEscapeChars(final int escapeCounter, final StringBuilder buffer) {final int escapedEscapes = escapeCounter >> 1; // divide by twowriteUnescapedEscapeChars(escapedEscapes, buffer);}/*** Writes the specified number of '\' chars to the specified result array (starting at the specified position) and* returns the resulting position.*/// Profiling showed this method is important to log4j performance. Modify with care!// 20 bytes (allows immediate JVM inlining: < 35 bytes) LOG4J2-1096private static void writeUnescapedEscapeChars(int escapeCounter, final StringBuilder buffer) {while (escapeCounter > 0) {buffer.append(ESCAPE_CHAR);escapeCounter--;}}/*** Appends the argument at the specified argument index (or, if no such argument exists, the "{}" delimiter pair) to* the specified result char array at the specified position and returns the resulting position.*/// Profiling showed this method is important to log4j performance. Modify with care!// 25 bytes (allows immediate JVM inlining: < 35 bytes) LOG4J2-1096private static void writeArgOrDelimPair(final Object[] arguments, final int argCount, final int currentArgument,final StringBuilder buffer) {if (currentArgument < argCount) {recursiveDeepToString(arguments[currentArgument], buffer, null);} else {writeDelimPair(buffer);}}/*** This method performs a deep toString of the given Object.* Primitive arrays are converted using their respective Arrays.toString methods while* special handling is implemented for "container types", i.e. Object[], Map and Collection because those could* contain themselves.* <p>* It should be noted that neither AbstractMap.toString() nor AbstractCollection.toString() implement such a* behavior. They only check if the container is directly contained in itself, but not if a contained container* contains the original one. Because of that, Arrays.toString(Object[]) isn't safe either.* Confusing? Just read the last paragraph again and check the respective toString() implementation.* </p>* <p>* This means, in effect, that logging would produce a usable output even if an ordinary System.out.println(o)* would produce a relatively hard-to-debug StackOverflowError.* </p>* @param o The object.* @return The String representation.*/static String deepToString(final Object o) {if (o == null) {return null;}// Check special types to avoid unnecessary StringBuilder usageif (o instanceof String) {return (String) o;}if (o instanceof Integer) {return Integer.toString((Integer) o);}if (o instanceof Long) {return Long.toString((Long) o);}if (o instanceof Double) {return Double.toString((Double) o);}if (o instanceof Boolean) {return Boolean.toString((Boolean) o);}if (o instanceof Character) {return Character.toString((Character) o);}if (o instanceof Short) {return Short.toString((Short) o);}if (o instanceof Float) {return Float.toString((Float) o);}if (o instanceof Byte) {return Byte.toString((Byte) o);}final StringBuilder str = new StringBuilder();recursiveDeepToString(o, str, null);return str.toString();}/*** This method performs a deep toString of the given Object.* Primitive arrays are converted using their respective Arrays.toString methods while* special handling is implemented for "container types", i.e. Object[], Map and Collection because those could* contain themselves.* <p>* dejaVu is used in case of those container types to prevent an endless recursion.* </p>* <p>* It should be noted that neither AbstractMap.toString() nor AbstractCollection.toString() implement such a* behavior.* They only check if the container is directly contained in itself, but not if a contained container contains the* original one. Because of that, Arrays.toString(Object[]) isn't safe either.* Confusing? Just read the last paragraph again and check the respective toString() implementation.* </p>* <p>* This means, in effect, that logging would produce a usable output even if an ordinary System.out.println(o)* would produce a relatively hard-to-debug StackOverflowError.* </p>** @param o the Object to convert into a String* @param str the StringBuilder that o will be appended to* @param dejaVu a list of container identities that were already used.*/static void recursiveDeepToString(final Object o, final StringBuilder str, final Set<String> dejaVu) {if (appendSpecialTypes(o, str)) {return;}if (isMaybeRecursive(o)) {appendPotentiallyRecursiveValue(o, str, dejaVu);} else {tryObjectToString(o, str);}}private static boolean appendSpecialTypes(final Object o, final StringBuilder str) {return StringBuilders.appendSpecificTypes(str, o) || appendDate(o, str);}private static boolean appendDate(final Object o, final StringBuilder str) {if (!(o instanceof Date)) {return false;}final Date date = (Date) o;final SimpleDateFormat format = getSimpleDateFormat();str.append(format.format(date));return true;}private static SimpleDateFormat getSimpleDateFormat() {SimpleDateFormat result = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");return result;}/*** Returns {@code true} if the specified object is an array, a Map or a Collection.*/private static boolean isMaybeRecursive(final Object o) {return o.getClass().isArray() || o instanceof Map || o instanceof Collection;}private static void appendPotentiallyRecursiveValue(final Object o, final StringBuilder str,final Set<String> dejaVu) {final Class<?> oClass = o.getClass();if (oClass.isArray()) {appendArray(o, str, dejaVu, oClass);} else if (o instanceof Map) {appendMap(o, str, dejaVu);} else if (o instanceof Collection) {appendCollection(o, str, dejaVu);}}private static void appendArray(final Object o, final StringBuilder str, Set<String> dejaVu,final Class<?> oClass) {if (oClass == byte[].class) {str.append(Arrays.toString((byte[]) o));} else if (oClass == short[].class) {str.append(Arrays.toString((short[]) o));} else if (oClass == int[].class) {str.append(Arrays.toString((int[]) o));} else if (oClass == long[].class) {str.append(Arrays.toString((long[]) o));} else if (oClass == float[].class) {str.append(Arrays.toString((float[]) o));} else if (oClass == double[].class) {str.append(Arrays.toString((double[]) o));} else if (oClass == boolean[].class) {str.append(Arrays.toString((boolean[]) o));} else if (oClass == char[].class) {str.append(Arrays.toString((char[]) o));} else {if (dejaVu == null) {dejaVu = new HashSet<>();}// special handling of container Object[]final String id = identityToString(o);if (dejaVu.contains(id)) {str.append(RECURSION_PREFIX).append(id).append(RECURSION_SUFFIX);} else {dejaVu.add(id);final Object[] oArray = (Object[]) o;str.append('[');boolean first = true;for (final Object current : oArray) {if (first) {first = false;} else {str.append(", ");}recursiveDeepToString(current, str, new HashSet<>(dejaVu));}str.append(']');}//str.append(Arrays.deepToString((Object[]) o));}}private static void appendMap(final Object o, final StringBuilder str, Set<String> dejaVu) {// special handling of container Mapif (dejaVu == null) {dejaVu = new HashSet<>();}final String id = identityToString(o);if (dejaVu.contains(id)) {str.append(RECURSION_PREFIX).append(id).append(RECURSION_SUFFIX);} else {dejaVu.add(id);final Map<?, ?> oMap = (Map<?, ?>) o;str.append('{');boolean isFirst = true;for (final Object o1 : oMap.entrySet()) {final Map.Entry<?, ?> current = (Map.Entry<?, ?>) o1;if (isFirst) {isFirst = false;} else {str.append(", ");}final Object key = current.getKey();final Object value = current.getValue();recursiveDeepToString(key, str, new HashSet<>(dejaVu));str.append('=');recursiveDeepToString(value, str, new HashSet<>(dejaVu));}str.append('}');}}private static void appendCollection(final Object o, final StringBuilder str, Set<String> dejaVu) {// special handling of container Collectionif (dejaVu == null) {dejaVu = new HashSet<>();}final String id = identityToString(o);if (dejaVu.contains(id)) {str.append(RECURSION_PREFIX).append(id).append(RECURSION_SUFFIX);} else {dejaVu.add(id);final Collection<?> oCol = (Collection<?>) o;str.append('[');boolean isFirst = true;for (final Object anOCol : oCol) {if (isFirst) {isFirst = false;} else {str.append(", ");}recursiveDeepToString(anOCol, str, new HashSet<>(dejaVu));}str.append(']');}}private static void tryObjectToString(final Object o, final StringBuilder str) {// it's just some other Object, we can only use toString().try {str.append(o.toString());} catch (final Throwable t) {handleErrorInObjectToString(o, str, t);}}private static void handleErrorInObjectToString(final Object o, final StringBuilder str, final Throwable t) {str.append(ERROR_PREFIX);str.append(identityToString(o));str.append(ERROR_SEPARATOR);final String msg = t.getMessage();final String className = t.getClass().getName();str.append(className);if (!className.equals(msg)) {str.append(ERROR_MSG_SEPARATOR);str.append(msg);}str.append(ERROR_SUFFIX);}/*** This method returns the same as if Object.toString() would not have been* overridden in obj.* <p>* Note that this isn't 100% secure as collisions can always happen with hash codes.* </p>* <p>* Copied from Object.hashCode():* </p>* <blockquote>* As much as is reasonably practical, the hashCode method defined by* class {@code Object} does return distinct integers for distinct* objects. (This is typically implemented by converting the internal* address of the object into an integer, but this implementation* technique is not required by the Java&#8482; programming language.)* </blockquote>** @param obj the Object that is to be converted into an identity string.* @return the identity string as also defined in Object.toString()*/static String identityToString(final Object obj) {if (obj == null) {return null;}return obj.getClass().getName() + '@' + Integer.toHexString(System.identityHashCode(obj));}}

3、Order.java

從 CSV 提取出關(guān)心的字段,這里主要關(guān)心訂單 ID 以及 商戶號(hào)。

Order.java

@Data public class Order {private String merchantId;private String orderId;}

4、CSVProcessor.java

CSV 文件處理類,首先讀取 CSV 文件把關(guān)心訂單相關(guān)的數(shù)據(jù)設(shè)置到 Order 對(duì)象當(dāng)中得到需要修改的 Order 對(duì)象集合。然后遍歷集合替換占位符生成 SQL 并寫入文件當(dāng)中。

CSVProcessor.java

public class CSVProcessor {String[] HEADERS = {"author", "title"};private static final String CSV_FILE_PATH = "/Users/carl/Desktop/order.csv";private static final String SQL_FILE_PATH = "/Users/carl/Desktop/order.sql";private static final String SQL_TEMPLATE = "update tb_order set status = '1',update_time = now(),extension = '{}' " +"where order_id = '{}' and merchant_id = '{}';\n";public static void main(String[] args) throws Exception {List<Order> orders = readCSV(CSV_FILE_PATH);JSONObject jo = new JSONObject();jo.put("reason", "訂單狀態(tài)訂正-20200708");String extension = JSON.toJSONString(jo);for (Order order : orders) {String sql = ParameterFormatter.format(SQL_TEMPLATE, extension, order.getOrderId(), order.getMerchantId());writeFile(SQL_FILE_PATH, sql);}}private static List<Order> readCSV(String filePath) throws Exception {List<Order> result = new ArrayList<>();Reader fileReader = new FileReader(filePath);Iterable<CSVRecord> records = CSVFormat.DEFAULT // .withHeader(HEADERS).withFirstRecordAsHeader().parse(fileReader);for (CSVRecord record : records) {Order order = new Order();order.setMerchantId(record.get(2));order.setOrderId(record.get(3));result.add(order);}return result;}private static void writeFile(String targetFile, String content) {File file = new File(targetFile);try (FileWriter fileWriter = new FileWriter(file.getAbsoluteFile(), true);BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) {// if file doesnt exists, then create itif (!file.exists()) {file.createNewFile();}bufferedWriter.write(content);bufferedWriter.flush();} catch (IOException e) {e.printStackTrace();}}}

5、結(jié)果

以下是生成 SQL 的部分截圖。

我們把 SQL 檢測一下數(shù)據(jù)是否比對(duì)的上,然后通過 Mysql 客戶端在非生產(chǎn)環(huán)境執(zhí)行一下其中的一條 SQL 看是否滿足 SQL 語法。最后就可以在生產(chǎn)環(huán)境上面執(zhí)行上面生成文件中的 SQL 語句了。

總結(jié)

以上是生活随笔為你收集整理的优雅的进行线上数据订正的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

99精品一区二区三区 | 国产午夜精品一区二区三区在线观看 | 国产 日韩 在线 亚洲 字幕 中文 | 中文字幕av影院 | 亚洲综合网 | 日韩精品久久久免费观看夜色 | 天天干天天干天天干天天干天天干天天干 | 日批视频国产 | 午夜国产福利在线 | 黄色的网站在线 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 欧美日韩色婷婷 | 成年人免费观看国产 | 色婷婷久久 | 伊人夜夜| 久久伦理电影 | 91av蜜桃| 手机看片| 日本三级在线观看中文字 | 蜜臀av麻豆| 欧美日韩视频在线观看免费 | 成年人免费在线播放 | 狠狠亚洲 | 久久成人精品视频 | 国产一区二区在线免费播放 | 中文字幕一区二 | 毛片激情永久免费 | 日韩欧美69 | 亚洲三级黄 | 狠狠色综合网站久久久久久久 | 国产精品18毛片一区二区 | 成年人精品| 日韩欧美高清不卡 | 91尤物国产尤物福利在线播放 | 久久一精品 | 91香蕉国产在线观看软件 | 免费看国产一级片 | 久久艹国产 | 国产98色在线 | 日韩 | 日韩精品久久久久 | 在线视频一区观看 | 国产成人精品久久 | 欧美精品久久久久a | 在线国产中文字幕 | 日韩电影一区二区三区 | 成人在线视频网 | 亚洲丁香久久久 | 国产日女人 | 视频一区视频二区在线观看 | 免费av福利 | 日韩免费视频在线观看 | 蜜桃视频在线视频 | 狠狠色丁香久久婷婷综合五月 | 免费a v在线 | 一区二区三区四区影院 | 久久久一本精品99久久精品 | 黄在线免费看 | av中文字幕网站 | 天天干人人干 | av电影中文 | 国产福利久久 | 91色偷偷 | 久久久久久网站 | 99久久久久国产精品免费 | 欧美日韩国产亚洲乱码字幕 | 色五婷婷| 国产精品福利无圣光在线一区 | 婷婷色视频 | www.香蕉 | 久久深夜福利免费观看 | 婷婷在线不卡 | 人人澡av | 免费无遮挡动漫网站 | 亚洲综合视频在线观看 | 伊人永久 | 日韩中文字幕免费在线播放 | 激情网站网址 | 亚洲精品av在线 | 激情视频国产 | 欧美狠狠色 | 黄色亚洲免费 | 成人在线免费看 | 天天草网站| 日韩久久精品一区二区三区下载 | 亚洲精品久久激情国产片 | 伊人导航 | 久久狠狠一本精品综合网 | 麻豆91网站 | 亚洲最大色 | 亚洲第五色综合网 | 中文字幕在线观看播放 | 97视频在线观看网址 | 在线播放 亚洲 | 国产在线国偷精品产拍免费yy | 日韩在线视频观看 | 久久精品欧美一区 | 久久久久久久久毛片 | 婷婷免费在线视频 | 在线观看日本高清mv视频 | 天天天干| 亚洲精品黄 | 中文字幕超清在线免费 | 91精品国产91久久久久 | 97精品国产91久久久久久 | 9ⅰ精品久久久久久久久中文字幕 | 精品国产欧美 | 久久午夜鲁丝片 | 人人爽人人爽人人爽 | 6080yy午夜一二三区久久 | 丁香六月国产 | 精品国模一区二区三区 | 色婷婷综合久久久久中文字幕1 | 精品在线你懂的 | 国产色黄网站 | 国产又粗又长又硬免费视频 | 亚洲精品毛片一级91精品 | 日本黄色黄网站 | 99精品欧美一区二区三区 | 久久这里精品视频 | 中文字幕一区二区三区在线视频 | 天天操天天吃 | 午夜少妇av| 国产成人久久av | 综合激情伊人 | 手机在线永久免费观看av片 | 日韩高清不卡在线 | 国产高清永久免费 | 九九热精品在线 | 免费观看91视频 | 日韩中文字幕国产精品 | 五月天激情视频在线观看 | 在线免费观看视频a | 国产69精品久久99不卡的观看体验 | 黄色大片网 | 免费视频三区 | 久久精品99国产精品酒店日本 | 久久av伊人| 久草在线视频免费资源观看 | 综合色影院 | a在线观看免费视频 | 婷婷福利影院 | 日日干美女 | 综合国产在线 | 91精品国产自产在线观看永久 | 天天草天天草 | 日韩理论视频 | 欧美日韩在线观看一区二区 | 亚洲第五色综合网 | 7777精品伊人久久久大香线蕉 | 亚洲第一久久久 | 在线免费观看av网站 | 免费视频91| 九色精品免费永久在线 | 2021国产精品视频 | 久久久久国产精品免费 | 欧美福利片在线观看 | 久久成人在线 | 国产精品一区二区三区观看 | 中文字幕国产一区二区 | 色久网| 日韩欧美精品在线 | 国产亚洲精品久久久久久电影 | 久草视频在线免费播放 | 国产精品视频在线观看 | 99热最新地址 | 国产91精品在线播放 | 成人a级黄色片 | 国产伦精品一区二区三区照片91 | 一二三区高清 | 亚洲黄色软件 | 天天干人人干 | 日本一区二区三区视频在线播放 | 久久天堂影院 | 亚洲成aⅴ人片久久青草影院 | 国产九九热 | 国产精品丝袜 | 麻豆91小视频 | 欧美日韩亚洲在线观看 | 91精品国产综合久久婷婷香蕉 | 色婷婷视频在线 | 日韩经典一区二区三区 | 三级黄色免费 | av中文天堂 | 国产精品久久免费看 | 九九久久视频 | 国产五月婷 | 精品一区二区免费视频 | 久久成人国产精品 | 久草91视频 | 2019久久精品| 人人插超碰 | 日日草夜夜操 | 久久久国产99久久国产一 | 在线99| 精品五月天 | 黄色av成人在线 | 伊人天天狠天天添日日拍 | 中文字幕在线免费看 | 久久a v电影 | 国产精品视频999 | 国产在线观看免费观看 | 日本黄色大片儿 | 国产精品中文字幕av | 美女网站在线播放 | 五月婷婷中文网 | 九九视频免费在线观看 | 在线观看成人一级片 | 国产精品免费一区二区三区 | 久久国产精品99久久久久久丝袜 | 日韩精品久久久 | 成人高清av在线 | 日本视频高清 | 免费下载高清毛片 | 亚洲国产一二三 | 色播99 | 顶级欧美色妇4khd | 午夜精品久久久久久久99 | 在线免费观看国产精品 | 91麻豆精品国产91久久久久久 | 成人av一区二区在线观看 | 色婷婷视频在线 | 国内精品久久久久影院优 | 一级特黄aaa大片在线观看 | 激情婷婷 | 丁香在线观看完整电影视频 | 麻豆91精品 | 国产午夜在线观看 | 国产黄色免费观看 | 美女网站视频色 | 毛片区| 久久午夜视频 | 久久精品中文字幕免费mv | 亚洲视频网站在线观看 | 亚洲在线视频免费观看 | 国产精品毛片一区二区在线看 | 国产精品手机看片 | 92中文资源在线 | 国产一区二区综合 | 久久色在线播放 | 国产日韩精品欧美 | 国产成人三级在线观看 | 久久好看 | 欧美aaa视频 | 日韩影视在线观看 | 免费精品在线 | 欧美精品少妇xxxxx喷水 | 九色最新网址 | 九九久久在线看 | 97视频网站 | 香蕉视频国产在线观看 | 91在线看视频免费 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 久久天堂网站 | 欧美激情第28页 | 亚洲做受高潮欧美裸体 | 免费成人在线视频网站 | 日批视频国产 | 午夜久操 | 久久久www成人免费毛片 | 成人在线观看av | 婷婷丁香狠狠爱 | 精品中文字幕视频 | 91色国产在线 | av高清不卡| 片黄色毛片黄色毛片 | 超碰国产在线观看 | 99亚洲视频 | 日日日网 | 国产精品久久久久影视 | 亚洲成aⅴ人片久久青草影院 | 亚洲视频 中文字幕 | 99夜色 | 午夜精品久久久久久久99热影院 | 日韩色爱 | 久久免费电影网 | 国产99久久久精品 | 手机看片中文字幕 | www.天堂av | 国产精品成人自产拍在线观看 | 手机av网站 | 日韩三级视频在线观看 | 亚洲黄色在线观看 | 天天插天天爽 | 999视频精品 | 国产日韩欧美在线观看视频 | www91在线观看| 综合av在线 | 欧美在线视频二区 | 色美女在线 | 久久久久久久久久网站 | 欧洲亚洲女同hd | 天天插狠狠干 | 欧美日韩高清在线一区 | 亚洲国产美女久久久久 | 99视频精品| 91在线免费看片 | 黄色软件大全网站 | 国产一区二区不卡视频 | 日韩精品中字 | 国产一级在线观看视频 | 午夜精品一区二区三区在线播放 | 久久免费的视频 | 在线免费视频 你懂得 | 激情网五月| 精品中文字幕在线播放 | 亚洲国内精品在线 | 人人澡超碰碰97碰碰碰软件 | 中文字幕国内精品 | 国产精品电影一区二区 | 国产精品 中文在线 | 免费精品久久久 | 亚洲在线观看av | 99r在线精品 | 欧美日韩国产页 | 99操视频 | 天天草综合 | 国产尤物视频在线 | www.婷婷com| 欧美黄色特级片 | 人人揉人人揉人人揉人人揉97 | 国产91学生| 色偷偷88欧美精品久久久 | 欧美 日韩 成人 | 午夜免费福利视频 | a视频免费在线观看 | 亚洲女欲精品久久久久久久18 | 久久久免费观看完整版 | 久久99国产综合精品免费 | 五月婷婷操 | 亚州欧美视频 | 亚洲黄色免费电影 | 香蕉精品在线观看 | 国产精品久久久久一区二区国产 | 久久免费的精品国产v∧ | 狠狠狠色丁香婷婷综合激情 | 99久久日韩精品免费热麻豆美女 | 国内外成人在线视频 | 成年人网站免费在线观看 | japanesefreesexvideo高潮 | 久久国产精品第一页 | 国产69久久久欧美一级 | bbbb操bbbb | 国产69精品久久99不卡的观看体验 | 黄a在线看| 4438全国亚洲精品观看视频 | 992tv在线观看网站 | 久久视频6 | 成人av片在线观看 | 久久久久久国产一区二区三区 | 久久大香线蕉app | 四虎伊人 | a久久久久久 | 亚洲 在线| 日韩精品资源 | 国产成人精品一区二区三区福利 | 久久欧美在线电影 | 日日操操操 | 成人免费视频免费观看 | 亚洲五月婷 | 麻豆国产精品视频 | 六月天色婷婷 | 亚洲久久视频 | 免费十分钟 | 中文字幕91在线 | 超碰免费久久 | 婷婷丁香激情综合 | 精品在线99 | 少妇性bbb搡bbb爽爽爽欧美 | 99在线观看视频网站 | 久草在线中文888 | 99精彩视频 | 色视频在线观看免费 | 天天av在线播放 | 国产久视频 | 日日干影院 | 亚洲综合五月 | 激情中文字幕 | 精品国产免费人成在线观看 | av免费在线看网站 | 亚洲激情国产精品 | 欧美日比视频 | 国产精品青青 | 国产高h视频 | 毛片永久新网址首页 | 六月激情网 | 欧美激情视频免费看 | 黄色高清视频在线观看 | 久久精品999| 亚洲免费在线观看视频 | 日韩理论视频 | 亚洲免费观看视频 | 狠狠色噜噜狠狠狠狠2022 | 午夜91在线 | 青草视频在线 | 91人人人 | 亚洲精品国产精品久久99 | 九九久 | 黄色国产在线 | 在线观看国产永久免费视频 | 国产在线色视频 | 久草精品视频在线看网站免费 | 欧美日韩视频在线观看一区二区 | 亚洲黄色免费在线看 | 在线免费观看视频一区 | 久久黄色网页 | 999毛片| 欧美精品小视频 | 欧美国产精品一区二区 | 日韩久久久久久久 | 国产午夜三级一二三区 | 久久国产三级 | 久精品在线 | 9在线观看免费高清完整版 玖玖爱免费视频 | 美女精品| 国产精品免费视频久久久 | 99热超碰在线 | 色偷偷网站视频 | 日韩精品视频免费 | 欧美日韩高清国产 | 国产精品免费视频观看 | 日韩专区在线观看 | 欧美做受高潮电影o | 国产老太婆免费交性大片 | 日本久久电影网 | 天天噜天天色 | 日夜夜精品视频 | 天天天操操操 | 成人在线免费av | 久久精品久久久久 | 婷婷成人亚洲综合国产xv88 | 精产嫩模国品一二三区 | 蜜臀一区二区三区精品免费视频 | 97福利视频 | 日韩免费播放 | 狠狠狠狠狠狠天天爱 | 97成人精品视频在线播放 | 日韩高清av| 国产欧美日韩视频 | 日韩成人欧美 | 久久久久久久久久久电影 | 亚洲乱码国产乱码精品天美传媒 | 国产91对白在线 | 九九av | 婷婷综合国产 | 依人成人综合网 | 免费看一及片 | 婷婷新五月| 在线成人一区二区 | 国产在线观看免 | 国产精品久久久av | 欧美最猛性xxxx | 国产精品久久久久免费 | 91麻豆精品一区二区三区 | 六月婷色 | 亚洲一级国产 | 99久久久国产精品美女 | 亚洲最新av网址 | 欧美a影视| 免费a级毛片在线看 | 欧美狠狠操 | 精品99在线视频 | 国产美腿白丝袜足在线av | 99re亚洲国产精品 | 夜夜视频欧洲 | 91看片一区二区三区 | 欧美专区国产专区 | 国产在线日韩 | 久久夜靖品 | 成 人 黄 色 视频免费播放 | 欧美精品国产精品 | 国产精品美女久久久久久 | 国产 一区二区三区 在线 | 久久久久久久久久久高潮一区二区 | 亚洲精品国产精品国自产观看浪潮 | 欧美九九九 | 黄色av网站在线观看 | 免费在线一区二区 | 在线免费高清 | 久久精品国产成人精品 | 国产精品精品国产色婷婷 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产福利91精品一区 | 激情欧美丁香 | 中文字幕一区二区在线观看 | 久久免费国产精品1 | 久久久久久久99 | 久久精选视频 | 激情丁香综合五月 | 激情综合网天天干 | 91片网| 日本中文字幕电影在线免费观看 | 国产亚洲综合性久久久影院 | 久久精久久精 | 亚洲精区二区三区四区麻豆 | 久久精品一 | 国产高清成人 | 久久久999精品视频 国产美女免费观看 | 在线国产视频 | 欧美影院久久 | 精品久久久久久久久久久久久久久久久久 | 很污的网站 | 天天操天天玩 | 99久久精品久久亚洲精品 | 国内精品99| 五月婷婷激情综合 | 久久久久久综合网天天 | 国产精品视频在线观看 | 天天色成人网 | 天天干天天摸 | 久久综合狠狠综合 | 色婷婷激情四射 | 91色在线观看视频 | 免费看的黄色网 | 在线成人短视频 | 激情五月在线 | 亚洲天堂色婷婷 | 国产成人精品网站 | 97精品国自产拍在线观看 | 欧美在线视频一区二区三区 | 天天天天爽 | 欧美吞精 | 国产精品国产亚洲精品看不卡 | 91资源在线免费观看 | 亚洲欧美日韩精品一区二区 | 亚洲免费国产视频 | 久久成人免费电影 | 免费成人短视频 | 青青河边草免费 | 成人av在线电影 | 日韩电影中文 | 黄色成人在线观看 | 久久无码av一区二区三区电影网 | 久久精品一区 | 国产精品久久久久久欧美 | 久久综合久久综合这里只有精品 | 国产日韩欧美在线观看视频 | 丝袜美腿一区 | 国产精品黄色影片导航在线观看 | 丁香导航 | 中文字幕在线观看视频一区二区三区 | 久久久91精品国产一区二区精品 | 国产精品高潮在线观看 | 天天操人人干 | 中文字幕在线看片 | 亚洲激情在线播放 | 精品国产一区二区三区久久久蜜臀 | 久久理论电影 | 日本成人黄色片 | 蜜臀91丨九色丨蝌蚪老版 | 精品天堂av | 国产婷婷视频在线 | 久久久久欧美精品 | 亚洲人人射| 91在线永久 | 久久私人影院 | 精品亚洲午夜久久久久91 | 亚洲婷婷在线视频 | 日日干日日 | 中文字幕无吗 | 黄毛片在线观看 | 国内外成人免费在线视频 | 91成人精品一区在线播放69 | 麻豆94tv免费版 | 精品国产色| 九九精品毛片 | 在线免费观看视频一区二区三区 | 黄色免费网战 | 国产精品嫩草影视久久久 | 91精品小视频| 国产精品毛片久久久久久 | 99精品视频精品精品视频 | 在线中文视频 | 欧美性猛片 | 国产精品99蜜臀久久不卡二区 | 国产欧美日韩视频 | 亚洲伊人第一页 | 成年人免费电影在线观看 | 在线a视频免费观看 | 久久a视频 | 日日添夜夜添 | 亚洲国产成人av网 | 久久理论片 | 黄色三级免费 | 亚洲精品播放 | 久久久精品国产免费观看同学 | 91成人天堂久久成人 | 99精品视频观看 | 粉嫩一二三区 | 国产一区二区精 | 免费视频黄 | 国产在线第三页 | 国产高清日韩欧美 | av大全免费在线观看 | 日韩精品中文字幕久久臀 | www欧美日韩 | av资源免费在线观看 | 狠狠的操你 | 黄色成人影视 | 国产精品av免费观看 | 久久精品99国产国产精 | 在线中文字幕视频 | 久久九九影院 | 久草视频在线资源 | 欧美一级片免费观看 | 欧美一二三区播放 | 国产精品18毛片一区二区 | 欧美亚洲xxx| 国产小视频在线看 | 免费在线成人av | 国产精在线| 成人免费观看完整版电影 | 一区二区三区四区在线 | 久久99久久久久久 | 中文一区二区三区在线观看 | 日韩精品一区二区在线观看视频 | 欧美无极色 | 人人超碰97| 婷婷在线色 | 日躁夜躁狠狠躁2001 | 国产精品久久久影视 | 99综合久久| 久久伊人八月婷婷综合激情 | 日韩伦理一区二区三区av在线 | 四虎成人精品永久免费av九九 | 亚洲免费公开视频 | 一区二区影院 | 在线一区观看 | 亚洲va天堂va欧美ⅴa在线 | 日韩在线视频精品 | 久久tv| 99精品视频精品精品视频 | 国产精品久久久久久99 | 亚洲成人黄色在线观看 | 精品婷婷 | 在线视频日韩一区 | 欧美日韩久久不卡 | 婷婷综合导航 | 亚洲一级电影在线观看 | 日韩二三区 | www.色午夜.com | 麻豆精品国产传媒 | 成人丝袜 | 91av手机在线 | 精品国产乱子伦一区二区 | 国产精久久久久久妇女av | 亚洲激情六月 | 女人久久久久 | 久色小说 | 成人99免费视频 | 亚洲一区二区三区毛片 | 久久99国产精品视频 | 国产色女 | 草久在线视频 | 狠狠干.com | 精品美女久久久久久免费 | 色婷婷视频在线 | 免费毛片一区二区三区久久久 | 色丁香婷婷 | 国产拍在线 | 波多野结衣在线观看视频 | 久久这里| 亚洲成av人影片在线观看 | 日本精品久久久久 | 亚洲国产精品久久久久久 | 色狠狠一区二区 | 国产精品视频免费观看 | 91视频网址入口 | 91免费视频网站在线观看 | 成人av网页 | 精品国产1区2区3区 国产欧美精品在线观看 | 午夜神马福利 | 久香蕉 | av中文字幕亚洲 | 欧美性做爰猛烈叫床潮 | 最新日韩视频 | 天堂av在线中文在线 | 欧美日韩中文国产一区发布 | 青青射 | 成年人在线免费看视频 | 亚洲成年人免费网站 | 亚洲国产精品视频在线观看 | 91精品视频在线免费观看 | 一级黄色大片 | 91精品亚洲影视在线观看 | 欧美成人影音 | 欧美日韩久 | 国产又粗又硬又爽的视频 | 99精品国产一区二区三区麻豆 | 国产精品久久久电影 | 五月婷婷丁香 | av中文字幕电影 | 亚洲国产精品成人av | 亚洲欧美成人综合 | 国产色影院| 亚洲国产黄色片 | 亚洲va欧美va国产va黑人 | 激情图片qvod | 亚洲综合视频在线 | 色a4yy| 激情久久久久 | 亚洲天堂网视频在线观看 | 精品一区二区久久久久久久网站 | 大片网站久久 | 久久久999免费视频 日韩网站在线 | 久热爱 | 日日夜夜精品视频天天综合网 | 婷婷九月激情 | 国产一区二区综合 | 国产免费人成xvideos视频 | 丁香影院在线 | 久久桃花网 | 欧美日高清视频 | 97视频久久久| 成人av在线一区二区 | 在线日韩亚洲 | 天天射天天操天天 | 中文字幕在线字幕中文 | 久久精品高清视频 | 成人a大片 | 深爱激情五月网 | 日日夜日日干 | 在线观看成人 | 亚洲第一伊人 | 成人午夜精品久久久久久久3d | 成人网页在线免费观看 | 欧美xxxx性xxxxx高清 | 日韩高清av | 超碰97在线看 | 久草国产视频 | 国产视频精品久久 | 美女久久视频 | 香蕉影视app | 97av视频在线 | 一区二区三区在线免费观看 | 韩国视频一区二区三区 | 五月天最新网址 | 久久精品免费看 | 久久综合射 | 免费看黄色小说的网站 | 天天操导航 | 超碰大片| 久久综合狠狠综合久久综合88 | 91在线中文字幕 | 丁香六月欧美 | 亚洲国产日韩一区 | 色橹橹欧美在线观看视频高清 | 麻花豆传媒mv在线观看 | 成人看片| 欧美狠狠操 | 国产午夜精品在线 | 日韩一区在线播放 | 国产资源av | 91免费观看视频网站 | 欧美精品一区二区性色 | 在线视频 日韩 | www.eeuss影院av撸 | 日产乱码一二三区别免费 | 国内小视频在线观看 | 日韩午夜在线观看 | 99r在线视频 | 五月天最新网址 | 男女视频91| 日韩在线观看小视频 | 国产日产精品久久久久快鸭 | 国产一区二区在线观看视频 | 久久久亚洲电影 | 国产亚洲精品bv在线观看 | 99视频这里有精品 | 中文字幕色网站 | www.777奇米 | 欧美国产日韩一区 | 久久黄色精品视频 | 99九九视频| 99热这里只有精品1 av中文字幕日韩 | 胖bbbb搡bbbb擦bbbb | 成人免费视频免费观看 | 97超碰人人网| 色婷婷www | 精品久久久久久久久久久久久久久久 | 亚洲精品国产高清 | 久精品视频在线观看 | 国产伦理一区二区三区 | 国产精品久久久久久久久久直播 | 国产一线天在线观看 | 三级av小说 | 欧美日韩高清在线一区 | 黄色在线网站噜噜噜 | 夜夜骑天天操 | 亚洲涩涩涩 | 亚洲天天摸日日摸天天欢 | 美女天天操 | 天天操夜夜摸 | 一区二区 不卡 | 色视频在线观看免费 | 欧洲一区精品 | 久久精品视频在线 | 麻花豆传媒mv在线观看网站 | 69亚洲视频 | 激情中文在线 | 日本黄色大片儿 | av在线a | 婷婷久久久久 | 日韩av中文字幕在线免费观看 | 免费亚洲精品视频 | 黄色网在线免费观看 | 亚洲最大av在线播放 | 久草免费色站 | 麻豆视频一区 | 69国产盗摄一区二区三区五区 | 日批视频在线观看免费 | 综合色站导航 | 中文字幕色婷婷在线视频 | 日韩精品一区二区三区三炮视频 | 精品视频在线观看 | 97成人精品 | 超碰av在线免费观看 | 992tv又爽又黄的免费视频 | 久久久久久久电影 | 91视频啪| 国产视频精品久久 | 精品久久免费 | 亚洲视频分类 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 中文字幕久久久精品 | 婷婷激情站 | www蜜桃视频| 日日摸日日碰 | 日批视频在线观看免费 | 久久情网 | 一级国产视频 | 亚a在线 | 久久99精品久久久久久三级 | 天天躁日日躁狠狠躁 | 美女视频黄,久久 | 天天操天天操天天操天天操天天操 | 欧美色伊人 | 成人久久精品 | 玖玖色在线观看 | av免费试看| 国产在线观看黄 | 黄网站色 | 久久人人插 | 麻豆av一区二区三区在线观看 | av免费看在线 | 六月激情丁香 | 国产四虎在线 | 国产精品a成v人在线播放 | 久草视频一区 | 精品国产中文字幕 | 日韩天堂在线观看 | 99久久精品电影 | 成人av电影在线播放 | 18av在线视频 | 国产精品日韩高清 | 天天综合入口 | 天天操天天射天天爱 | 亚洲欧美精品一区二区 | 91九色视频在线观看 | 波多野结衣最新 | 国产成人精品午夜在线播放 | 91在线在线观看 | 337p日本欧洲亚洲大胆裸体艺术 | 日韩免费在线视频 | 免费的黄色av | 99精品国产一区二区三区不卡 | a天堂在线看| 九九九九精品九九九九 | 中文字幕精品三区 | 国产精品精品视频 | 亚洲影音先锋 | 欧美国产亚洲精品久久久8v | 亚洲精品视频在线观看视频 | 国产精品一区在线观看你懂的 | 日日日日干 | 中文字幕一区二区三区四区久久 | 伊人中文字幕在线 | 免费观看黄色av | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 国产成人av电影在线观看 | 97成人超碰 | 欧美久久99| 国产麻豆精品传媒av国产下载 | 国产小视频在线观看 | 日韩精品久久一区二区 | 国产高清视频在线观看 | 日韩午夜在线播放 | 五月天久久综合 | 草久视频在线 | 免费日韩一级片 | 久久免费一 | 国产主播99 | 欧美日韩亚洲在线观看 | 91网页版在线观看 | 91精品国产一区 | 日本aa在线 | 天堂在线免费视频 | 国产不卡高清 | 岛国精品一区二区 | 亚洲天天在线 | 日本三级全黄少妇三2023 | 91麻豆高清视频 | 五月婷婷视频在线观看 | 啪啪肉肉污av国网站 | 91桃色免费视频 | 五月婷婷影院 | 国产精品久久久久久久av大片 | 国产亚洲视频在线 | 国产 日韩 欧美 自拍 | 日韩一区二区三免费高清在线观看 | 国产精品一区二区三区四区在线观看 | 国产精品一区二区久久久 | 天堂麻豆 | 激情五月综合 | 久久久久免费精品视频 | 夜夜骑日日 | 欧美一级免费在线 | 亚洲在线网址 | 国产精品久久久区三区天天噜 | 伊色综合久久之综合久久 | 色的网站在线观看 | 二区中文字幕 | 亚洲欧洲精品一区 | 三级av免费看 | 国产精品资源网 | 亚州激情视频 | 99精品99 | 高潮久久久 | 国产在线精品一区二区三区 | 狠狠躁夜夜a产精品视频 | 国产精品一区二区免费看 | 视频在线一区二区三区 | 六月色播 | 最近2019中文免费高清视频观看www99 | 免费成人在线观看视频 | 999久久久| 欧美久久久 | 国产精品区二区三区日本 | 99久久这里只有精品 | 久草五月 | 日韩精品一区二区在线 | 中文字幕欧美三区 | 欧美在线观看禁18 | 奇米四色影狠狠爱7777 | 在线观看一区二区视频 | 蜜桃传媒一区二区 | 91九色最新地址 | 人人澡人人模 | 欧美 日韩精品 | 9999在线观看 | 亚洲乱码在线观看 | 国产成人精品一区二区三区 | 欧美大码xxxx | 国产破处在线视频 | 亚洲,国产成人av | 成人一级视频在线观看 | 日韩网站免费观看 | 日韩欧美一区二区三区在线观看 | 中文字幕免费观看视频 | 综合国产在线 | 成人免费网站在线观看 | 久草在线免费资源站 | 黄色电影在线免费观看 | 欧美日韩裸体免费视频 | 九九交易行官网 | 97理论电影 | 日韩在线免费不卡 | 久久久午夜视频 | 国产精品一区二区视频 | 免费色婷婷| 国产二区视频在线观看 | 精品一二区 | 国产精品theporn | 亚洲国产一区在线观看 | 黄色片网站| 国产精品毛片一区二区三区 | 免费的黄色av| 国产精品av电影 | 91成人在线观看高潮 | 美女久久久久久久久久久 | 欧美精品在线观看免费 | 日日躁你夜夜躁你av蜜 | 97电影网站 | 婷婷综合成人 | 97人人看| 色综合久久久 | 久久精品中文视频 | 亚洲精品视频二区 | 黄色网www| 嫩模bbw搡bbbb搡bbbb| 91亚瑟视频| 国产尤物一区二区三区 | 日韩av播放在线 | 美女国产在线 | 91桃花视频 | 国产成人免费观看久久久 | 999久久a精品合区久久久 | 97小视频| 国产日韩视频在线播放 |