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

我們一起聊聊Java 18 新功能,你知道了嗎?

開發 前端
在 Java 18 中,提供了一個新命令 jwebserver,運行這個命令可以啟動一個簡單的 、最小化的靜態Web 服務器,它不支持 CGI 和 Servlet,所以最好的使用場景是用來測試、教育、演示等需求。

Java 18 在2022 年 3 月 22 日正式發布,Java 18 不是一個長期支持版本,這次更新共帶來 9 個新功能。

OpenJDK Java 18 下載:https://jdk.java.net/18/

OpenJDK Java 18 文檔:https://openjdk.java.net/projects/jdk/18/

JEP

描述

JEP 400

默認為 UTF-8[1]

JEP 408

簡單的網絡服務器[2]

JEP 413

Java API 文檔中的代碼片段[3]

JEP 416

使用方法句柄重新實現核心反射[4]

JEP 417

Vector API(三次孵化)[5]

JEP 418

互聯網地址解析 SPI[6]

JEP 419

Foreign Function & Memory API (二次孵化)[7]

JEP 420

switch 模式匹配(二次預覽)[8]

JEP 421

棄用完成刪除[9]

JEP 400:默認 UTF-8 字符編碼

JDK 一直都是支持 UTF-8 字符編碼,這次是把 UTF-8 設置為了默認編碼,也就是在不加任何指定的情況下,默認所有需要用到編碼的 JDK API 都使用 UTF-8 編碼,這樣就可以避免因為不同系統,不同地區,不同環境之間產生的編碼問題。

Mac OS 默認使用 UTF-8 作為默認編碼,但是其他操作系統上,編碼可能取決于系統的配置或者所在區域的設置。如中國大陸的 windows 使用 GBK 作為默認編碼。很多同學初學 Java 時可能都遇到過一個正常編寫 Java 類,在 windows 系統的命令控制臺中運行卻出現亂碼的情況。

使用下面的命令可以輸出 JDK 的當前編碼。

# Mac 系統,默認 UTF-8
? ~ java -XshowSettings:properties -version 2>&1 | grep file.encoding
file.encoding = UTF-8
file.encoding.pkg = sun.io
? ~

下面編寫一個簡單的 Java 程序,輸出默認字符編碼,然后輸出中文漢字 ”你好“,看看 Java 18 和 Java 17 運行區別。

系統環境:Windows 11

import java.nio.charset.Charset;

public class Hello{
public static void main(String[] args) {
System.out.println(Charset.defaultCharset());
System.out.println("你好");
}
}

從下面的運行結果中可以看到,使用 JDK 17 運行輸出的默認字符編碼是 GBK,輸出的中文 ”你好“ 已經亂碼了;亂碼是因為 VsCode 默認的文本編輯器編碼是 UTF-8,而中國地區的 Windows 11 默認字符編碼是 GBK,也是 JDK 17 默認獲取到的編碼,所以會在控制臺輸出時亂碼;而使用 JDK 18 輸出的默認編碼就是 UTF-8,所以可以正常的輸出中文 ”你好“

JEP 408:簡單的 Web服務器

在 Java 18 中,提供了一個新命令 jwebserver,運行這個命令可以啟動一個簡單的 、最小化的靜態Web 服務器,它不支持 CGI 和 Servlet,所以最好的使用場景是用來測試、教育、演示等需求。

其實在如 Python、Ruby、PHP、Erlang 等許多平臺都提供了開箱即用的 Web 服務器,可見一個簡單的Web 服務器是一個常見的需求,Java 一直沒有這方面的支持,現在可以了。

在 Java 18 中,使用 jwebserver 啟動一個 Web 服務器,默認發布的是當前目錄。

在當前目錄創建一個網頁文件 index.html。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h1>標題</h1>
</body>
</html>

啟動 jwebserver。

?  bin ./jwebserver
Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::".
Serving /Users/darcy/develop/jdk-18.jdk/Contents/Home/bin and subdirectories on 127.0.0.1 port 8000
URL http://127.0.0.1:8000/

瀏覽器訪問:

瀏覽器訪問測試

有請求時會在控制臺輸出請求信息:

127.0.0.1 - - [26/3月/2022:16:53:30 +0800] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [26/3月/2022:16:55:13 +0800] "GET / HTTP/1.1" 200 -

通過 help 參數可以查看 jwebserver 支持的參數。

?  bin ./jwebserver --help
Usage: jwebserver [-b bind address] [-p port] [-d directory]
[-o none|info|verbose] [-h to show options]
[-version to show version information]
Options:
-b, --bind-address - 綁定地址. Default: 127.0.0.1 (loopback).
For all interfaces use "-b 0.0.0.0" or "-b ::".
-d, --directory - 指定目錄. Default: current directory.
-o, --output - Output format. none|info|verbose. Default: info.
-p, --port - 綁定端口. Default: 8000.
-h, -?, --help - Prints this help message and exits.
-version, --version - Prints version information and exits.
To stop the server, press Ctrl + C.

JEP 413:Javadoc 中支持代碼片段

在 Java 18 之前,已經支持在 Javadoc 中引入代碼片段,這樣可以在某些場景下更好的展示描述信息,但是之前的支持功能有限,比如我想高亮代碼片段中的某一段代碼是無能為力的。現在 Java 18 優化了這個問題,增加了 @snippet 來引入更高級的代碼片段。

在 Java 18 之前,使用 <pre>{@code ...}</pre> 來引入代碼片段。

 /**
* 時間工具類
* Java 18 之前引入代碼片段:
* <pre>{@code
* public static String timeStamp() {
* long time = System.currentTimeMillis();
* return String.valueOf(time / 1000);
* }
* }</pre>
*
*/

生成 Javadoc 之后,效果如下:

Javadoc 代碼片段

高亮代碼片段

從 Java 18 開始,可以使用 @snippet 來生成注釋,且可以高亮某個代碼片段。

/**
* 在 Java 18 之后可以使用新的方式
* 下面的代碼演示如何使用 {@code Optional.isPresent}:
* {@snippet :
* if (v.isPresent()) {
* System.out.println("v: " + v.get());
* }
* }
*
* 高亮顯示 println
*
* {@snippet :
* class HelloWorld {
* public static void main(String... args) {
* System.out.println("Hello World!"); // @highlight substring="println"
* }
* }
* }
*
*/

效果如下,更直觀,效果更好。

Java 18 Javadoc

正則高亮代碼片段

甚至可以使用正則來高亮某一段中的某些關鍵詞:

/** 
* 正則高亮:
* {@snippet :
* public static void main(String... args) {
* for (var arg : args) { // @highlight region regex = "\barg\b"
* if (!arg.isBlank()) {
* System.out.println(arg);
* }
* } // @end
* }
* }
*/

生成的 Javadoc 效果如下:

替換代碼片段

可以使用正則表達式來替換某一段代碼。

 /** 
* 正則替換:
* {@snippet :
* class HelloWorld {
* public static void main(String... args) {
* System.out.println("Hello World!"); // @replace regex='".*"' replacement="..."
* }
* }
* }
*/

這段注釋會生成如下 Javadoc 效果。

class HelloWorld {
public static void main(String... args) {
System.out.println(...);
}
}

附:Javadoc 生成方式

# 使用 javadoc 命令生成 Javadoc 文檔
? bin ./javadoc -public -sourcepath ./src -subpackages com -encoding utf-8 -charset utf-8 -d ./javadocout
# 使用 Java 18 的 jwebserver 把生成的 Javadoc 發布測試
? bin ./jwebserver -d /Users/darcy/develop/javadocout

訪問測試:

JEP 416:使用方法句柄重新實現反射核心功能

Java 18 改進了 java.lang.reflect.Method、Constructor 的實現邏輯,使之性能更好,速度更快。這項改動不會改動相關 API ,這意味著開發中不需要改動反射相關代碼,就可以體驗到性能更好反射。

OpenJDK 官方給出了新老實現的反射性能基準測試結果。

Java 18 之前:

Benchmark                                     Mode  Cnt   Score  Error  Units
ReflectionSpeedBenchmark.constructorConst avgt 10 68.049 ± 0.872 ns/op
ReflectionSpeedBenchmark.constructorPoly avgt 10 94.132 ± 1.805 ns/op
ReflectionSpeedBenchmark.constructorVar avgt 10 64.543 ± 0.799 ns/op
ReflectionSpeedBenchmark.instanceFieldConst avgt 10 35.361 ± 0.492 ns/op
ReflectionSpeedBenchmark.instanceFieldPoly avgt 10 67.089 ± 3.288 ns/op
ReflectionSpeedBenchmark.instanceFieldVar avgt 10 35.745 ± 0.554 ns/op
ReflectionSpeedBenchmark.instanceMethodConst avgt 10 77.925 ± 2.026 ns/op
ReflectionSpeedBenchmark.instanceMethodPoly avgt 10 96.094 ± 2.269 ns/op
ReflectionSpeedBenchmark.instanceMethodVar avgt 10 80.002 ± 4.267 ns/op
ReflectionSpeedBenchmark.staticFieldConst avgt 10 33.442 ± 2.659 ns/op
ReflectionSpeedBenchmark.staticFieldPoly avgt 10 51.918 ± 1.522 ns/op
ReflectionSpeedBenchmark.staticFieldVar avgt 10 33.967 ± 0.451 ns/op
ReflectionSpeedBenchmark.staticMethodConst avgt 10 75.380 ± 1.660 ns/op
ReflectionSpeedBenchmark.staticMethodPoly avgt 10 93.553 ± 1.037 ns/op
ReflectionSpeedBenchmark.staticMethodVar avgt 10 76.728 ± 1.614 ns/op

Java 18 的新實現:

Benchmark                                     Mode  Cnt    Score   Error  Units
ReflectionSpeedBenchmark.constructorConst avgt 10 32.392 ± 0.473 ns/op
ReflectionSpeedBenchmark.constructorPoly avgt 10 113.947 ± 1.205 ns/op
ReflectionSpeedBenchmark.constructorVar avgt 10 76.885 ± 1.128 ns/op
ReflectionSpeedBenchmark.instanceFieldConst avgt 10 18.569 ± 0.161 ns/op
ReflectionSpeedBenchmark.instanceFieldPoly avgt 10 98.671 ± 2.015 ns/op
ReflectionSpeedBenchmark.instanceFieldVar avgt 10 54.193 ± 3.510 ns/op
ReflectionSpeedBenchmark.instanceMethodConst avgt 10 33.421 ± 0.406 ns/op
ReflectionSpeedBenchmark.instanceMethodPoly avgt 10 109.129 ± 1.959 ns/op
ReflectionSpeedBenchmark.instanceMethodVar avgt 10 90.420 ± 2.187 ns/op
ReflectionSpeedBenchmark.staticFieldConst avgt 10 19.080 ± 0.179 ns/op
ReflectionSpeedBenchmark.staticFieldPoly avgt 10 92.130 ± 2.729 ns/op
ReflectionSpeedBenchmark.staticFieldVar avgt 10 53.899 ± 1.051 ns/op
ReflectionSpeedBenchmark.staticMethodConst avgt 10 35.907 ± 0.456 ns/op
ReflectionSpeedBenchmark.staticMethodPoly avgt 10 102.895 ± 1.604 ns/op
ReflectionSpeedBenchmark.staticMethodVar avgt 10 82.123 ± 0.629 ns/op

可以看到在某些場景下性能稍微好些。

JEP 417:Vector API(三次孵化)

在 Java 16 中引入一個新的 API 來進行向量計算,它可以在運行時可靠的編譯為支持的 CPU 架構,從而實現更優的計算能力。

在 Java 17 中改進了 Vector API 性能,增強了例如對字符的操作、字節向量與布爾數組之間的相互轉換等功能。

現在在 JDK 18 中將繼續優化其性能。

JEP 418:互聯網地址解析 SPI

對于互聯網地址解析 SPI,為主機地址和域名地址解析定義一個 SPI,以便java.net.InetAddress可以使用平臺內置解析器以外的解析器。

InetAddress inetAddress = InetAddress.getByName("www.wdbyte.com");
System.out.println(inetAddress.getHostAddress());
// 輸出
// 106.14.229.49

JEP 419:Foreign Function & Memory API (第二次孵化)

新的 API 允許 Java 開發者與 JVM 之外的代碼和數據進行交互,通過調用外部函數,可以在不使用 JNI 的情況下調用本地庫。

這是一個孵化功能;需要添加--add-modules jdk.incubator.foreign來編譯和運行 Java 代碼,Java 18 改進了相關 API ,使之更加簡單易用。

歷史

  • Java 14 JEP 370 (opens new window)[10]引入了外部內存訪問 API(孵化器)。
  •  Java 15 JEP 383 (opens new window)[11]引入了外部內存訪問 API(第二孵化器)。
  •  Java 16 JEP 389 (opens new window)[12]引入了外部鏈接器 API(孵化器)。
  •  Java 16 JEP 393 (opens new window)[13]引入了外部內存訪問 API(第三孵化器)。
  • Java 17 JEP 412 (opens new window)[14]引入了外部函數和內存 API(孵化器)。

JEP 420:switch 表達式(二次孵化)

從 Java 17 開始,對于 Switch 的改進就已經在進行了,Java 17 的 JEP 406 已經對 Switch 表達式進行了增強,使之可以減少代碼量。

下面是幾個例子:

// JDK 17 以前
static String formatter(Object o) {
String formatted = "unknown";
if (o instanceof Integer i) {
formatted = String.format("int %d", i);
} else if (o instanceof Long l) {
formatted = String.format("long %d", l);
} else if (o instanceof Double d) {
formatted = String.format("double %f", d);
} else if (o instanceof String s) {
formatted = String.format("String %s", s);
}
return formatted;
}

而在 Java 17 之后,可以通過下面的寫法進行改進:

// JDK 17 之后
static String formatterPatternSwitch(Object o) {
return switch (o) {
case Integer i -> String.format("int %d", i);
case Long l -> String.format("long %d", l);
case Double d -> String.format("double %f", d);
case String s -> String.format("String %s", s);
default -> o.toString();
};
}

switch 可以和 null 進行結合判斷:

static void testFooBar(String s) {
switch (s) {
case null -> System.out.println("Oops");
case "Foo", "Bar" -> System.out.println("Great");
default -> System.out.println("Ok");
}
}

case 時可以加入復雜表達式:

static void testTriangle(Shape s) {
switch (s) {
case Triangle t && (t.calculateArea() > 100) ->
System.out.println("Large triangle");
default ->
System.out.println("A shape, possibly a small triangle");
}
}

case 時可以進行類型判斷:

sealed interface S permits A, B, C {}
final class A implements S {}
final class B implements S {}
record C(int i) implements S {} // Implicitly final

static int testSealedExhaustive(S s) {
return switch (s) {
case A a -> 1;
case B b -> 2;
case C c -> 3;
};
}

擴展:JEP 406:Switch 的類型匹配(預覽)[15]

JEP 421:棄用刪除相關

在未來將刪除 Finalization,目前 Finalization 仍默認保持啟用狀態,但是已經可以手動禁用;在未來的版本中,將會默認禁用;在以后的版本中,它將被刪除。需要進行資源管理可以嘗試 try-with-resources 或者 java.lang.ref.Cleaner。

引用鏈接

[1] 默認為 UTF-8: https://openjdk.java.net/jeps/400

[2] 簡單的網絡服務器: https://openjdk.java.net/jeps/408

[3] Java API 文檔中的代碼片段: https://openjdk.java.net/jeps/413

[4] 使用方法句柄重新實現核心反射: https://openjdk.java.net/jeps/416

[5] Vector API(三次孵化): https://openjdk.java.net/jeps/417

[6] 互聯網地址解析 SPI: https://openjdk.java.net/jeps/418

[7] Foreign Function & Memory API (二次孵化): https://openjdk.java.net/jeps/419

[8] switch 模式匹配(二次預覽): https://openjdk.java.net/jeps/420

[9] 棄用完成刪除: https://openjdk.java.net/jeps/421

[10] JEP 370 (opens new window): https://openjdk.java.net/jeps/370

[11] JEP 383 (opens new window): https://openjdk.java.net/jeps/383

[12] JEP 389 (opens new window): https://openjdk.java.net/jeps/389

[13] JEP 393 (opens new window): https://openjdk.java.net/jeps/393

[14] JEP 412 (opens new window): https://openjdk.java.net/jeps/412

責任編輯:武曉燕 來源: 程序猿阿朗
相關推薦

2022-06-15 08:00:50

磁盤RedisRocketMQ

2023-11-13 18:36:04

知識抽取NER

2023-10-31 14:04:17

Rust類型編譯器

2016-09-27 19:53:25

IOS 10蘋果

2023-06-07 14:07:00

架構

2023-04-13 08:40:12

MySQL服務器SELECT

2025-03-27 02:00:00

SPIJava接口

2022-07-29 08:17:46

Java對象內存

2022-09-26 08:49:11

Java架構CPU

2022-05-24 08:21:16

數據安全API

2023-08-10 08:28:46

網絡編程通信

2023-06-30 08:18:51

敏捷開發模式

2023-08-04 08:20:56

DockerfileDocker工具

2023-09-10 21:42:31

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2022-02-21 09:00:08

數字簽名驗證

2022-12-06 08:12:11

Java關鍵字

2023-11-10 08:04:43

Java 17Java 11JDK

2023-04-26 22:52:19

視覺人臉檢測人臉對齊
點贊
收藏

51CTO技術棧公眾號

www.xxx亚洲| 亚洲一区免费| 日本女人一区二区三区| 欧美日韩国产bt| 欧美噜噜久久久xxx| 日韩免费一级视频| 在线观看毛片网站| 日韩影视高清在线观看| 亚洲乱码日产精品bd| 国产成人一区二区三区电影| 精品少妇人妻av一区二区三区| 成人好色电影| 国产成人三级| 婷婷成人综合网| 亚洲综合精品一区二区| 微拍福利一区二区| 亚洲精品中文字幕| 国产精品亚洲一区二区三区妖精| 亚洲视频在线观看视频| 国产一区二区视频播放| 国精产品乱码一区一区三区四区| 日韩大片在线| 欧美亚洲国产一区二区三区 | 久久综合九色综合久99| 午夜精品福利在线视频| 久久青草免费| 中文字幕不卡的av| 国产精品96久久久久久| 久久免费少妇高潮99精品| 曰本一区二区| 最新热久久免费视频| 国产精自产拍久久久久久| 微拍福利一区二区| 欧美黄色影院| 欧美日韩中文字幕综合视频 | www.涩涩涩| 超碰免费在线| 91在线观看免费视频| 97涩涩爰在线观看亚洲| 亚洲男人在线天堂| 日韩大片欧美大片| 国产女同互慰高潮91漫画| 国产精品福利无圣光在线一区| 欧美激情视频二区| 国产精品一级在线观看| 亚洲一区二区免费视频| 精品视频一区在线| 波多野结衣 久久| 成人嫩草影院| 欧美日韩国产美女| 青青青国产在线视频| 人人草在线视频| 欧美国产精品中文字幕| 欧美午夜精品久久久久久蜜| 日批视频免费观看| 欧美阿v一级看视频| 亚洲国产日韩欧美在线99| 无码人妻精品一区二区三区66| 2018av在线| 国产日韩欧美亚洲| 成人a级免费视频| 国产在线观看99| 国产精品一区二区av交换| 亚洲国产精品高清久久久| 欧美一级片中文字幕| www久久日com| 久久综合99re88久久爱| 成人欧美在线观看| 99国产精品99| 久久精品日韩欧美| 久久综合国产精品台湾中文娱乐网| 日本美女视频网站| 2019年精品视频自拍| 亚洲国产欧美另类丝袜| 亚洲精品永久www嫩草| 高清乱码毛片入口| 不卡一区二区三区四区| 国产精品亚洲片夜色在线| 中文字幕人妻互换av久久| 国模大胆一区二区三区| 中文字幕亚洲综合久久筱田步美| 亚洲黄色小说在线观看| 草莓视频成人appios| 欧美色国产精品| 女人和拘做爰正片视频| www免费视频观看在线| 亚洲国产日韩a在线播放| 国产精品一区二区免费在线观看| 成人欧美一区二区三区的电影| 依依成人精品视频| 亚洲欧美电影在线观看| yellow91字幕网在线| 亚洲成人一二三| 日韩肉感妇bbwbbwbbw| 日韩高清一区| 欧美久久一二区| 久久午夜夜伦鲁鲁一区二区| 精品国产乱码久久久久久樱花| 91国产免费看| 青青在线视频观看| 超级白嫩亚洲国产第一| 一区二区三区在线不卡| 国产69精品久久久久999小说| 国产不卡在线| 欧美视频一二三| 国内国产精品天干天干| 日韩欧美少妇| 欧美一a一片一级一片| 麻豆传媒在线看| 久久久久久亚洲精品美女| 亚洲福利视频网站| 色偷偷男人天堂| jizz国产精品| 日韩精品一区二区三区视频播放| 自拍偷拍21p| 日韩精品第一| 亚洲国产高清高潮精品美女| 中文国语毛片高清视频| 国产欧美三级| 欧美一区亚洲一区| 精品欧美一区二区三区免费观看 | 国产女人18水真多18精品一级做| 宅男av一区二区三区| 日本中文字幕伦在线观看| 欧美国产激情一区二区三区蜜月| 大胆欧美熟妇xx| 免费污视频在线| 性久久久久久久久| 久在线观看视频| 国产专区精品| 色哟哟网站入口亚洲精品| 国产精品69久久久久孕妇欧美| 亚洲激情婷婷| 日本精品久久久久影院| 进去里视频在线观看| 99久久综合国产精品| 欧美二区三区在线| 99爱在线视频| 精品国产亚洲一区二区三区在线观看| 波多野结衣加勒比| 米奇777超碰欧美日韩亚洲| 亚洲天堂视频在线观看| jizz日本在线播放| 久久久久国内| 久久久久九九九| 日韩在线免费电影| 欧洲精品一区二区| 麻豆网站免费观看| 高清精品视频| 亚洲小视频在线观看| 日韩黄色在线播放| 久久电影网站中文字幕| 超碰97网站| 国产三级在线看| 亚洲精品视频一区二区| 91精品视频国产| 日韩大胆成人| 热久久这里只有精品| 91久久精品国产91性色69| 国产精品一卡二卡在线观看| 99久re热视频精品98| 小早川怜子影音先锋在线观看| 亚洲电影免费观看| 91看片在线播放| 国产一区二区三区蝌蚪| 另类视频在线观看+1080p| 国模精品视频| 亚洲精品中文字| 91精品国产闺蜜国产在线闺蜜| 亚洲综合社区| 欧美不卡三区| 本网站久久精品| 亚洲国产日韩欧美在线99| 国内免费精品视频| 国产偷国产偷亚洲高清人白洁| 国产aaaaa毛片| 久久精品亚洲成在人线av网址| 日韩最新中文字幕电影免费看| 在线观看中文字幕视频| 久久综合国产精品| 亚洲一区二区三区四区五区| 欧美一区精品| 精品国产乱码久久久久久郑州公司| 伊人久久国产| 久久精品国产96久久久香蕉| 波多野结衣网站| 99国产精品久久久久久久久久 | 中文字幕第50页| y111111国产精品久久久| 69av成年福利视频| www.久久精品.com| 国产精品久久夜| 任你操这里只有精品| 水蜜桃久久夜色精品一区| 日本精品免费观看| 黄在线免费观看| 欧美日韩1234| 国产精品suv一区二区| 国产视频911| 中文字幕av一区二区三区人妻少妇| 在线成人av| 国产精品国产亚洲精品看不卡15| 黄色在线免费| 亚洲精品影视在线观看| 99久久一区二区| 中文字幕在线不卡视频| 中文久久久久久| 欧美三级网页| 成人情视频高清免费观看电影| 色女人在线视频| 日韩欧美一级精品久久| 久久久黄色大片| 不卡的av电影在线观看| www亚洲成人| 中日韩男男gay无套| 久久婷婷开心| 激情综合婷婷| 国产美女高潮久久白浆| 久久久久久久| 国语自产精品视频在线看抢先版图片| 国产精品一级视频| 亚洲免费观看高清在线观看| 免费看黄色的视频| 六月丁香婷婷久久| av电影一区二区三区| 蜜桃一区二区三区| 国产精品手机在线| 免费精品一区| 国产综合在线观看视频| 中文字幕中文字幕在线中高清免费版| 91精品国产综合久久福利| 久久久久久久久久一区二区三区| 欧美激情一区二区三区四区| 女同毛片一区二区三区| 日日夜夜一区二区| 青少年xxxxx性开放hg| 中文字幕一区二区三区四区久久| 国模私拍一区二区三区| 免费av在线播放| 日韩精品一区国产麻豆| 91av国产精品| 欧美久久久久久久久久| 夜夜躁日日躁狠狠久久av| 色综合天天综合| 午夜精品久久久久99蜜桃最新版| 久久久精品日韩欧美| 福利片一区二区三区| 人妖欧美一区二区| 91n.com在线观看| 免费看精品久久片| 国产激情在线看| 亚洲欧洲美洲国产香蕉| 成人做爽爽免费视频| 丁香花视频在线观看| 国产亚洲一区二区精品| jzzjzzjzz亚洲成熟少妇| 亚洲无线码在线一区观看| 成人免费在线电影| 在线日韩中文字幕| 好吊色在线观看| 亚洲成人久久一区| 性xxxxbbbb| 欧美理论电影在线| 91成品人影院| 日韩视频在线你懂得| 伊人久久久久久久久久久久| 色噜噜夜夜夜综合网| 中文区中文字幕免费看| 欧美福利视频一区| www.看毛片| 日韩av在线网址| 国产绳艺sm调教室论坛| 欧美一区二区人人喊爽| 丰满大乳国产精品| 日韩理论片久久| 丁香婷婷在线观看| 美日韩精品免费观看视频| 大片免费播放在线视频| 久久精品91久久久久久再现| 影音先锋中文在线视频| 97在线视频免费播放| 一二区成人影院电影网| 91中文在线观看| 人人网欧美视频| 亚洲人成77777| 国产精品亚洲二区| 一本色道久久综合亚洲精品婷婷| 综合一区在线| 中文字幕一区二区三区四区五区六区 | 欧美精品日韩一本| 国产香蕉在线观看| 亚洲一级片在线看| 日本精品600av| 国产成人精品一区二区三区| 美女国产精品久久久| 美女三级99| 欧美国产高潮xxxx1819| 男女午夜激情视频| 国产精品一区二区不卡| www.色天使| 95精品视频在线| 99热这里只有精品4| 国产精品乱码久久久久久| 久久综合色综合| 欧美视频三区在线播放| 亚洲精品一区二区三区区别| 日韩一区二区三区电影| 四虎成人免费在线| 日韩av在线不卡| 黄色在线免费看| 国产成人精品在线播放| 高清精品视频| 粉嫩av一区二区三区天美传媒| 日韩中文字幕区一区有砖一区| 亚洲精品鲁一鲁一区二区三区| 日本一区二区免费在线| 国产成人无码精品久久久久| 51久久夜色精品国产麻豆| 国产精品无码久久久久成人app| 亚洲精品大尺度| 青草av在线| 91免费在线视频网站| blacked蜜桃精品一区| 伊人久久婷婷色综合98网| 免费中文字幕日韩欧美| 女女调教被c哭捆绑喷水百合| 国产精品毛片久久久久久| 欧美性猛交bbbbb精品| 亚洲精品一区二区在线观看| 精品176二区| 91精品视频一区| 色爱综合网欧美| 亚洲天堂av线| 国产午夜精品一区二区三区嫩草 | 精品一区二区久久久久久久网站| 欧美va天堂在线| 91丨porny丨九色| 一区二区三区在线视频免费观看| 国产一区二区女内射| 综合久久五月天| 欧美a一级片| 亚洲一区二区三区精品动漫| 免费在线看一区| 亚洲第一综合网| 欧美性生活大片视频| 国产69精品久久app免费版| 日韩美女视频免费在线观看| 国产一区二区三区四区大秀| 国语对白做受xxxxx在线中国 | 永久免费看片视频教学| 欧美亚洲一区二区在线观看| 成人精品一区二区三区免费| 国产精品嫩草视频| 国产精品视频一区二区三区综合| 亚洲精品乱码视频| 久久97超碰色| 我家有个日本女人| 色综合久久天天综合网| 爽爽视频在线观看| 日本午夜人人精品| 成人黄色av| 特级西西444www| 亚洲五码中文字幕| 欧美日韩国产综合视频| 久久国产精品影片| 91久久精品无嫩草影院| av在线观看地址| 麻豆国产精品一区二区三区| 三级黄色录像视频| 日韩欧美在线观看一区二区三区| 2020国产在线视频| 久久99精品久久久久久三级 | 999在线视频| 97色伦亚洲国产| 国产欧美日韩一区二区三区四区| 在线观看国产一级片| 一区二区国产视频| 怡春院在线视频| 美女精品视频一区| 久久动漫网址| 亚洲欧美自拍另类日韩| 一区二区三区免费网站| 四虎精品成人影院观看地址| 成人观看高清在线观看免费| 在线国产欧美| 少妇精品无码一区二区免费视频| 91精品久久久久久久久99蜜臂| 国内在线免费视频| 视频在线99| 久久久天天操| 在线观看你懂的视频| 欧美性xxxx极品hd欧美风情| 色综合久久影院| 国产亚洲福利社区| 亚洲二区精品| ass极品国模人体欣赏| 欧美不卡一区二区| 亚洲性图自拍| 日韩av大全| 麻豆成人在线|