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

為什么SpringBoot可以直接運(yùn)行 Jar 包?

開(kāi)發(fā) 架構(gòu)
JAR 文件格式以流行的 ZIP 文件格式為基礎(chǔ)。與 ZIP 文件不同的是,JAR 文件不僅用于壓縮和發(fā)布,而且還用于部署和封裝庫(kù)、組件和插件程序,并可被像編譯器和 JVM 這樣的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用來(lái)指示工具如何處理特定的 JAR。

小伙伴們好呀,今天咋們來(lái)探索下,為什么 SpringBoot 的 jar 包可以直接運(yùn)行? 以及 4ye 踩到的坑????

目錄如下 ??

開(kāi)始之前,先簡(jiǎn)單介紹下這個(gè) jar ??

什么是 jar

JAR 文件格式以流行的 ZIP 文件格式為基礎(chǔ)。與 ZIP 文件不同的是,JAR 文件不僅用于壓縮和發(fā)布,而且還用于部署和封裝庫(kù)、組件和插件程序,并可被像編譯器和 JVM 這樣的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用來(lái)指示工具如何處理特定的 JAR?!栋俣劝倏啤?/p>

jar包結(jié)構(gòu)圖

這里小伙伴們可以自行查找下 jar文件規(guī)范 ??

例如 https://blog.51cto.com/robinc/547658

規(guī)范中最重要的一點(diǎn),就是 MATE-INF 文件夾中的 MANIFEST.MF 清單文件了。

文件內(nèi)容如下

一眼看過(guò)去,這個(gè) Main-Class 配置就特別突出了。?? 它指明了這個(gè)啟動(dòng)類(lèi)的位置。

當(dāng)我們用 java -jar xx.jar 命令運(yùn)行一個(gè) jar 包時(shí),無(wú)外乎,它肯定是幫我們找到這個(gè) main 方法,然后啟動(dòng)它。

(ps:使用 -jar 時(shí),會(huì)忽略 classpath 環(huán)境的配置。)

這里我將上期 Map 專(zhuān)題的代碼進(jìn)行打包,運(yùn)行效果如下

可以看到第一次運(yùn)行時(shí)出現(xiàn)沒(méi)有主清單屬性的提示 。

在 pom 文件中添加 Main-class 配置(如下??),即可解決問(wèn)題。

<build>
<finalName>Map</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>cn.java4ye.HashMapMain</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-a-jar</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

那么,到這里,基本的秘密已經(jīng)被我們知道了。

執(zhí)行 java -jar xx.jar 命令時(shí),會(huì)去:

解析 MATE-INF 文件夾中的MANIFEST.MF 清單文件,

然后找到 Main-class ,運(yùn)行其中的 main方法。

接著我們?cè)俜催^(guò)來(lái)看看這個(gè) Springboot 的 jar 包有啥不同。

官方文檔參考

建議大家先去讀讀這個(gè)文檔~??

地址:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#executable-jar

沒(méi)看文檔前,我想得很簡(jiǎn)單,直接就打開(kāi) Springboot 打包好的 jar 包去找 META-INF 文件夾下的 MANIFEST.MF

看到后,我的理解如下圖

其他配置應(yīng)該是表明這個(gè) classes ,lib 去哪里找。

實(shí)際上呢,這個(gè)理解也沒(méi)有錯(cuò),但是里面多了很多細(xì)節(jié)~

比如:

  • 嵌套的 jar 包要怎么解決
  • classpath.idx 和 layers.idx 是用來(lái)干嘛的
  • jarmode 又是什么

下面就讓我們來(lái)了解探索下它的奧秘叭。(也順便看看 4ye 掉到怎樣的牛角尖去了叭??)

META-INF

我們可以看到,Springboot 插件打包后生成的 jar 包和原來(lái)是有很大的不同的。

除了 META-INF 文件夾結(jié)構(gòu)沒(méi)變化之外。

BOOT-INF

結(jié)構(gòu)如下??

這里的重點(diǎn)在 classpath.idx 和 layers.idx 這兩個(gè)索引文件。

classpath.idx 可以被 jar 和 war 包使用,它配置了哪些 jar 包要被加載到 classpath 中。

layers.idx 只能被 jar 包使用,在 創(chuàng)建鏡像 的時(shí)候被使用,如 Docker/OCI (OCI是一種容器標(biāo)準(zhǔn))

原話如下:

The layers.idx file can be used only for jars, and it allows a jar to be split into logical layers for Docker/OCI image creation.

官方文檔中詳細(xì)說(shuō)明了這個(gè) layers.idx 的規(guī)范。

比如 "dependencies" 是這部分 layer 的名稱(chēng),下面的都屬于這個(gè) layer。

org

這里就是 Springboot 運(yùn)行 jar 包的秘密了。

org文件夾

這里先介紹下一些背景,然后再簡(jiǎn)單看看源碼~??

背景一

Fat Jar 指的就是這種 jar in jar , 或者說(shuō)嵌套的 Jar 包。但是 Java 中并沒(méi)有能加載嵌套 Jar 的方式,所以 Spring boot 自己寫(xiě)了這套代碼,來(lái)解決這個(gè)問(wèn)題。

當(dāng)然,這句話是從 Springboot 官方文檔中發(fā)現(xiàn)的

Java does not provide any standard way to load nested jar files (that is, jar files that are themselves contained within a jar).

到了這里,我就掉入一個(gè)坑了。。?? 因?yàn)閷?duì)這塊不熟悉,我一直以為它說(shuō)的就是 URLClassLoader 無(wú)法加載到這里面的class,可是我測(cè)試了好多遍,發(fā)現(xiàn)嵌套在里面的 class 可以被加載到呀??(自己挖的坑??,文末解答)

我翻了很多資料,還去查看 GitHub 的 issue,發(fā)現(xiàn)都沒(méi)有人提過(guò)相關(guān)的問(wèn)題??

到了這里,我已經(jīng)非常非常無(wú)奈了!這痛苦的感覺(jué),就像剛開(kāi)始學(xué)習(xí)編程時(shí),裝環(huán)境被各種奇奇怪怪的 bug 搞到漸漸沒(méi)脾氣。

被折磨了 N 久之后,我又找了另外一個(gè)角度,難道它說(shuō)的是這個(gè) JarFile 。我的天,我嘗試了一下后,發(fā)現(xiàn)確實(shí)沒(méi)有辦法加載嵌套的 Jar

證明如下 ??

背景二

URLStreamHandler ,它是用來(lái)處理各種協(xié)議的(比如 http,file,jar 等等),配合 URL,URLConnection 可以加載相應(yīng)的資源。

比如 上面的例子中用到這個(gè)協(xié)議 jar:file:/xx.jar ,那么加載資源時(shí),它就會(huì)使用這個(gè) jdk jar 包下的 handler 來(lái)進(jìn)行處理

關(guān)于協(xié)議的擴(kuò)展可以看這里

https://blog.csdn.net/xiaomin1991222/article/details/50980754

而Springboot 也是重寫(xiě)了這個(gè) handler 來(lái)處理嵌套的 jar 資源。

源碼

核心代碼便是這個(gè) JarFile 以及下面要說(shuō)到的Launcher 了。??

根據(jù) MANIFEST.MF 中指定的 main-class,我們可以發(fā)現(xiàn)如下代碼

launch 方法如下

第一步,注冊(cè)協(xié)議,registerUrlProtocolHandler

這里就涉及到這個(gè) URLStreamHandler 機(jī)制協(xié)議了

我們可以通過(guò) JVM 啟動(dòng)參數(shù) -D java.protocol.handler.pkgs 來(lái)設(shè)置 URLStreamHandler 實(shí)現(xiàn)類(lèi)的包路徑

這里的代碼也是通過(guò)這個(gè)系統(tǒng)參數(shù)將 URLStreamHandler 實(shí)現(xiàn)類(lèi)的包路徑 設(shè)置為 loader 包下的。

第二步是 創(chuàng)建 classLoader 。

這里可以看到這些 url 的格式如下

第三步是 判斷是否有 jarmode 參數(shù) 。這個(gè)是和 docker 鏡像相關(guān)的。

官方文檔 ??

https://docs.spring.io/spring-boot/docs/2.4.13/reference/html/spring-boot-features.html#boot-features-container-images

用來(lái)簡(jiǎn)化提取 layer 的操作。

比如以前要寫(xiě)很多 copy,而使用 jarmode 就會(huì)自動(dòng)去 layers.idx 中提取了。(下期再寫(xiě)~)

由于我們沒(méi)有添加該參數(shù),所以這里是執(zhí)行 getMainClass() 方法,來(lái)獲取到這個(gè)啟動(dòng)類(lèi)的。

第四步,運(yùn)行 run 方法。

這里就創(chuàng)建 MainMethodRunner 類(lèi),并執(zhí)行其中的 run 方法,去反射運(yùn)行這個(gè) main 方法了??

小結(jié)一下

除了 JarLauncher 外,源碼中的 WarLauncher 和 PropertiesLauncher 也擁有 main 方法,小伙伴們可以自己看看~

JarLauncher和 WarLauncher 都是繼承這個(gè)ExecutableArchiveLauncher 的。

大坑??

到了這里,我陷入了沉思 ??

想到了之前寫(xiě)這個(gè) AOP 插件( 《AOP 插件就這?上手不用兩分鐘!!》)時(shí),好像也遇到了一點(diǎn)小困難和 jar 包相關(guān)的。再次翻看后,我發(fā)現(xiàn)我那會(huì)寫(xiě)了這么一個(gè)注釋在 pom 文件中,去掉后打包確實(shí)報(bào)了這么一個(gè)錯(cuò)誤。

"用 Springboot 插件打包,但是我們沒(méi)有 main 方法,會(huì)報(bào)錯(cuò),這里跳過(guò)就好了"

隨后我又在之前的文章中看到了這么一段記錄,這里也提到了 jar 包結(jié)構(gòu)的變化 BOOT-INF/classes/ ,還有引出一個(gè)問(wèn)題 ——“URLClassLoader 無(wú)法正確加載類(lèi),一直出現(xiàn) ClassNotFoundException ”

到這里,我已經(jīng)無(wú)限好奇了。然后就不自覺(jué)地掉進(jìn)這個(gè)牛角尖里了……

為啥 URLClassLoader 就無(wú)法加載到這些類(lèi)了呢? ??

我嘗試用 URLClassLoader 去讀取 Springboot 插件打包出來(lái)的 jar 包,發(fā)現(xiàn) BOOT-INF/classes/ 下面的類(lèi)一直無(wú)法讀取到。但是這個(gè) org 文件夾中的就可以正常加載。

同時(shí)我也發(fā)現(xiàn)一點(diǎn)不對(duì)勁! 沒(méi)錯(cuò),在最開(kāi)始的證明這里,明明可以加載到 BOOT-INF/classes/ 下面的類(lèi)呀!

于是我做了 n 遍驗(yàn)證,發(fā)現(xiàn)在插件篇中,這個(gè) BOOT-INF/classes/ 下面的類(lèi)一直無(wú)法讀取到,會(huì)一直報(bào)錯(cuò)。這我就很納悶了,直到我發(fā)現(xiàn)現(xiàn)在做 demo 的這個(gè)項(xiàng)目里,在 pom 文件中就引入了這個(gè) jar 包!我的天~ 去掉之后它也一直報(bào)錯(cuò)了,坑死自己了??

所以之前在 《AOP 插件就這?上手不用兩分鐘!!》 一文中提到的結(jié)論是沒(méi)錯(cuò)的。而這也更加驗(yàn)證了 Java 中并沒(méi)有能加載嵌套 Jar 的方式 ,所以 Springboot 才重寫(xiě)了它的。

而重寫(xiě)后,資源的路徑文件夾路徑變成下面這種方式了!!

上面這個(gè)圖是 直到,我發(fā)現(xiàn)在 IDEA 中可以直接 debug jar 包 ?? 才得來(lái)的…… 不然現(xiàn)在還在那里卡著呢??

總結(jié)

本期思維導(dǎo)圖可以在這里獲取

https://www.processon.com/embed/62089eed0e3e7407d1cd9ee7

那么 Springboot jar 包為啥可以運(yùn)行呢?

答:

執(zhí)行 java -jar xx.jar 命令時(shí),會(huì)去 解析MATE-INF 文件夾中的 MANIFEST.MF 清單文件,然后找到 Main-class ,反射運(yùn)行其中的 main 方法。這個(gè)是最根本的原因。

而 Springboot maven 插件打包后的 jar 包結(jié)構(gòu)有所變動(dòng),新增 org loader 代碼目錄和 BOOT-INF 目錄,META-INF 目錄不變,但是其中的 MANIFEST.MF 發(fā)生改變,其中新增 Start-Class 表示真正的啟動(dòng)類(lèi),而原本的 Main-Class 則指向JarLauncher , JarLauncher 啟動(dòng)時(shí)會(huì)去 注冊(cè)協(xié)議,創(chuàng)建 ClassLoader,加載并反射運(yùn)行 Start-Class 中的 main 方法,來(lái)啟動(dòng)程序。重寫(xiě) Jar 協(xié)議是在 Spring boot loader源碼中的 JarFile 中進(jìn)行的,同時(shí)重新實(shí)現(xiàn) URLStreamHandler 來(lái)解決 嵌套Jar 的問(wèn)題。


責(zé)任編輯:武曉燕 來(lái)源: Java4ye
相關(guān)推薦

2023-11-30 08:16:19

SpringjarTomcat

2024-04-03 09:01:34

SpringTomcat容器

2020-05-07 16:30:32

Spring BootJava

2024-11-26 08:36:56

SpringJar機(jī)制

2015-08-17 10:16:00

CentOSDocker命令root

2020-03-19 08:59:15

SpringMVC啟動(dòng)過(guò)程

2020-08-24 15:56:49

AndroidWindows 10三星

2023-04-04 22:23:09

2009-06-29 18:35:41

操作系統(tǒng)服務(wù)器軟件

2019-03-06 13:45:20

Windows 10Xbox微軟

2023-09-01 08:26:06

SpringBootjar包war包

2020-08-27 11:35:36

Python 開(kāi)發(fā)編程語(yǔ)言

2021-04-16 17:02:21

數(shù)組C++語(yǔ)言

2020-11-11 16:46:35

蘋(píng)果macOS操作系統(tǒng)

2024-09-14 07:00:28

SpringBoot代碼反編譯

2024-09-13 08:57:25

SpringJar項(xiàng)目

2024-05-29 10:43:31

2020-10-22 14:20:39

Parallels

2024-04-07 00:00:00

服務(wù)器瀏覽器AI

2023-12-20 07:36:58

GoLinux語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩免费在线免费观看| 亚洲女人被黑人巨大进入al| 日本高清视频免费在线观看| 免费av网站观看| 亚洲女人av| 色噜噜狠狠狠综合曰曰曰 | 麻豆精品精品国产自在97香蕉| 久久综合久久美利坚合众国| 成人性生活免费看| 亚洲精品第一| 欧美日韩国产专区| 日本高清xxxx| 国产精品99999| 国产99久久久国产精品潘金| 国产99视频在线观看| 亚洲国产精品久| 欧美日韩亚洲在线观看| 精品国产乱码久久久久久1区2区| 国模杨依粉嫩蝴蝶150p| 日本乱理伦在线| 国产精品电影院| 久久99精品久久久久久秒播放器 | 久久激情视频免费观看| 一出一进一爽一粗一大视频| 国产精品亚洲一区二区在线观看| 日韩欧美在线第一页| 亚洲黄色网址在线观看| 电影av一区| 99久久精品国产网站| 91精品国产综合久久久久久丝袜| 亚洲av综合一区| 亚洲中字在线| 国模私拍视频一区| 538精品在线视频| 久久影视一区| 国产亚洲精品久久久优势| 粉嫩av懂色av蜜臀av分享| 欧美影院在线| 91精品婷婷国产综合久久| 啊啊啊国产视频| 天堂久久午夜av| 色一情一乱一乱一91av| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 丁香花电影在线观看完整版| 亚洲另类在线视频| 在线视频一二三区| 二区三区在线观看| 亚洲免费观看高清完整| 女同性恋一区二区| 爆操欧美美女| 一区二区三区四区不卡在线 | 99热精品在线| 91成人在线观看国产| 国产精品7777777| 最新国产乱人伦偷精品免费网站| 久久久久久国产三级电影| 欧美人妻精品一区二区免费看| 亚洲天天影视网| 欧美日本中文字幕| 精品视频一区二区在线观看| 欧美日本一区二区视频在线观看| 久久99亚洲精品| 成人免费看片98| 国产日韩亚洲欧美精品| 欧洲成人性视频| 男操女视频网站| 久久精品免费看| 亚洲精品欧美极品| 黄色美女一级片| 久久久综合网站| 亚洲欧美影院| 一色桃子av在线| 亚洲第一久久影院| 无人在线观看的免费高清视频| 精品欧美一区二区三区在线观看 | 国产天堂在线| 国产精品久久久久精k8| 亚洲色图都市激情| 电影在线观看一区| 色婷婷av一区二区三区软件 | 久久精品视频一区二区三区| 视频一区三区| 草莓福利社区在线| 欧美日韩国产在线看| 色综合天天色综合| 亚洲码欧美码一区二区三区| 亚洲精品自拍偷拍| 自拍偷拍第9页| 在线观看日韩av电影| 国产ts一区二区| 国产精品久久久久久无人区| 成人免费av资源| 亚洲国产一区二区精品视频| www红色一片_亚洲成a人片在线观看_| 亚洲成av人片在线| 久久久精品三级| 香蕉大人久久国产成人av| 亚洲精品视频二区| 欧美成人三级视频| 日韩精品一级二级| 91情侣在线视频| 国产在线高清| 亚洲国产中文字幕| 天天干天天草天天| 小嫩嫩12欧美| 欧美成人在线免费| 最新黄色网址在线观看| 国产91丝袜在线18| 制服国产精品| 欧美成人黑人| 亚洲第一av在线| 中文字幕在线观看2018| 欧美亚洲自偷自偷| 国产91免费视频| 黄网站在线免费| 91福利在线免费观看| 亚洲视频 中文字幕| 国产精品传媒精东影业在线 | 色成人综合网| 亚洲欧洲日产国产网站| 黄色激情视频在线观看| 国产高清精品在线| 国产精品夜夜夜爽张柏芝| 欧美91看片特黄aaaa| 亚洲国产精品一区二区三区| 麻豆亚洲av熟女国产一区二| 麻豆成人在线观看| 日本不卡高清视频一区| 老色鬼在线视频| 精品国产一区二区三区忘忧草 | 国产免费无遮挡吸奶头视频| 亚洲免费高清| 国产精品日韩一区二区| 中国av在线播放| 91精品国产欧美一区二区成人| 日韩福利在线视频| 日本欧美大码aⅴ在线播放| 裸体丰满少妇做受久久99精品| 黄网在线免费看| 日韩免费在线观看| 日本中文字幕免费在线观看| 国产美女视频91| 最近免费观看高清韩国日本大全| 九九久久国产| 丝袜亚洲欧美日韩综合| 中文字幕在线观看1| 国产蜜臀97一区二区三区| 少妇性l交大片| 中文精品一区二区| 国产精品扒开腿做| 黄色片免费在线| 欧美色国产精品| 日本激情视频一区二区三区| 老司机精品视频在线| 中国人体摄影一区二区三区| 一区二区三区日本视频| 成人97在线观看视频| www香蕉视频| 午夜免费久久看| 久久久久久久久免费看无码| 日韩精品亚洲一区| 亚洲国产一区二区三区在线| 日韩av黄色| 色在人av网站天堂精品| 少妇av在线播放| 欧美性猛交xxxx黑人| 人妻互换一区二区激情偷拍| 美女mm1313爽爽久久久蜜臀| 桥本有菜av在线| 亚洲精品一区国产| 欧美在线视频a| 国产免费视频在线| 欧美一区二区三区在线看| 国产在线观看你懂的| 91视频91自| 91福利国产成人精品播放| 影音先锋日韩在线| 黑人巨大精品欧美一区二区小视频 | 国产尤物在线观看| 一区二区日韩电影| 91精彩刺激对白露脸偷拍| 久久激情五月婷婷| 97视频在线免费| 欧美午夜精品一区二区三区电影| 国产精品欧美风情| 久久亚洲资源| 一区二区三区四区视频| 精品国产免费无码久久久| 精品久久久久久亚洲国产300 | 亚洲国产中文字幕| 天天躁日日躁aaaa视频| 国产精品一二三区在线| 熟女性饥渴一区二区三区| 婷婷成人基地| 欧洲精品国产| 操欧美女人视频| 成人国产在线激情| 亚洲天堂电影| 久久99精品国产99久久6尤物| 欧美日韩视频精品二区| 日韩午夜精品电影| 欧美日韩 一区二区三区| 亚洲国产精品麻豆| 国产小视频你懂的| 久久综合久久鬼色中文字| 女教师高潮黄又色视频| 日本午夜精品一区二区三区电影 | 可以看av的网站久久看| 日韩精品在线观看av| 第一会所sis001亚洲| 久久66热这里只有精品| 日韩中文字幕一区二区高清99| 国产精品黄色av| 蜜桃在线视频| 欧美激情一区二区三区高清视频| 1769视频在线播放免费观看| 亚洲欧美国产va在线影院| 俄罗斯嫩小性bbwbbw| 欧美精品免费视频| 国产精品成人久久久| 欧美性xxxx极品hd满灌| 国产午夜激情视频| 樱桃国产成人精品视频| 五月婷婷六月香| 欧美激情在线一区二区三区| 一级做a爰片毛片| 99久久精品国产观看| 2018国产精品| 国产高清精品网站| 69久久精品无码一区二区| 精品一区二区三区免费播放 | www.久久精品视频| 午夜精品一区在线观看| 精品视频在线观看免费| 亚洲线精品一区二区三区八戒| 欧美爱爱小视频| 一区二区三区日韩| 日韩女优一区二区| 亚洲尤物视频在线| 538精品在线观看| 夜夜嗨av一区二区三区网页| 校园春色 亚洲| 亚洲国产欧美一区二区三区丁香婷| 欧美日韩精品亚洲精品| 亚洲乱码精品一二三四区日韩在线 | 成人免费视频国产| 精品国精品国产| 亚洲av无码片一区二区三区| 日韩免费在线观看| 欧美一区二区公司| 国产视频精品自拍| 毛片网站在线| 在线亚洲国产精品网| av在线播放免费| 久久五月天色综合| 牛牛在线精品视频| 69视频在线免费观看| 欧美aa在线观看| 日韩免费观看在线观看| 国产精品高潮久久| 91九色国产在线| 成功精品影院| 蜜桃精品久久久久久久免费影院| 国内亚洲精品| 中文字幕一区二区三区最新| 欧美影院一区| 国产69精品久久久久999小说| 久久福利一区| 亚洲欧美日韩精品一区| 国产成人在线色| 91精品国产自产| 国产精品网站在线观看| 粉嫩av性色av蜜臀av网站| 亚洲永久免费av| 99久久久久久久久| 在线观看91精品国产麻豆| 精品国产无码一区二区| 日韩精品在线私人| 美女国产在线| 91国产视频在线| 欧美综合影院| 精品中文字幕一区| 日韩精品欧美| 97干在线视频| 免费成人美女在线观看| 成人做爰www看视频软件| 国产欧美日韩在线看| 成熟的女同志hd| 91福利在线导航| 亚洲黄色在线观看视频| 中文国产亚洲喷潮| av影视在线看| 国产在线播放91| 亚洲国产网址| 激情五月五月婷婷| 丝袜美腿成人在线| 国产a√精品区二区三区四区| 国产午夜精品一区二区三区视频 | 色婷婷国产精品| 国内精品国产成人国产三级| 国产一区二区三区在线观看视频 | 国产一区二区播放| 在线免费不卡视频| 日韩在线视频免费| 久久精品国产亚洲7777| 欧美大片1688| 国产精品视频一区二区三区经| 久久综合电影| 国产成人无码av在线播放dvd| 国产成人8x视频一区二区| 国产欧美一区二区三区在线观看视频| 亚洲国产美女搞黄色| 国产超碰人人模人人爽人人添| 亚洲性线免费观看视频成熟| av福利导福航大全在线| 亚洲bt天天射| 999久久久亚洲| 国产真实乱子伦| 成人av网站免费观看| 麻豆精品一区二区三区视频| 欧美三级电影精品| 国产福利小视频在线观看| 97视频免费在线观看| 亚洲不卡在线| 久久久成人精品一区二区三区| 免费观看30秒视频久久| 日韩av片在线| 在线视频你懂得一区二区三区| 五月婷在线视频| 久久久视频在线| 凹凸成人在线| 激情五月婷婷六月| 国产成人免费视| 激情五月婷婷在线| 精品国免费一区二区三区| 欧美巨大xxxx做受沙滩| 不卡一区二区三区视频| 欧美在线观看天堂一区二区三区| 一本一道久久a久久综合蜜桃| 国产女同性恋一区二区| 黄色大全在线观看| 亚洲一品av免费观看| 日本在线中文字幕一区二区三区| 欧美连裤袜在线视频| 久久久久久婷| 黄色一级片一级片| 欧美日本一区二区三区四区| 欧美96在线| 亚洲va男人天堂| 亚洲视频狠狠| 亚洲精品乱码久久久久久蜜桃图片| 亚洲伊人伊色伊影伊综合网| 蜜桃在线一区二区| 5252色成人免费视频| 经典一区二区| 国产精品亚洲二区在线观看| 国产亚洲一区二区三区| 91无套直看片红桃| 欧美另类在线观看| 国产精品男女| 日本老熟妇毛茸茸| 亚洲欧洲综合另类| 视频一区二区免费| 国产精品扒开腿做| 91精品亚洲| 国模无码视频一区| 日本韩国一区二区| 在线免费看黄| 99久久精品久久久久久ai换脸| 日韩视频在线一区二区三区| 人人妻人人澡人人爽人人精品| 欧美在线免费观看视频| 麻豆tv入口在线看| 国产精品乱码| 日韩经典一区二区| 免费黄色激情视频| 精品国产不卡一区二区三区| 成人影院网站| 精品久久免费观看| gogogo免费视频观看亚洲一| 这里只有精品999| 欧美国产日韩一区| 中文字幕精品影院| 欧美日韩一区二区区| 懂色av影视一区二区三区| 1024免费在线视频| 国产综合精品一区二区三区| 免费久久99精品国产| 麻豆亚洲av熟女国产一区二| 亚洲欧洲在线免费| 亚洲码欧美码一区二区三区| 免费日韩中文字幕| 亚洲综合在线观看视频| 成人午夜在线观看视频| 国产精品露出视频| 久久99精品网久久| 久久国产黄色片| 欧美精品在线看| 精品日韩免费| 手机在线看片日韩|