精品欧美一区二区三区在线观看 _久久久久国色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)

夜久久久久久| 成人黄页网站视频| 成人精品gif动图一区| 韩国19禁主播vip福利视频| 蜜桃精品一区二区| 久久不卡日韩美女| 天天色综合成人网| 色狠狠久久av五月综合| 亚洲免费国产视频| 蜜桃一区二区三区在线| 久久久久久亚洲精品中文字幕| 免费看黄色av| 国产精品1luya在线播放| 在线观看日韩精品| 国产人妻777人伦精品hd| 成人福利视频在线观看| 不卡的在线视频| 国产在线精彩视频| 中文字幕亚洲在| 九色综合婷婷综合| 国产成人精品免费看视频| 校园激情久久| 久久久久久久久久国产| 中文国语毛片高清视频| 中文字幕精品影院| 亚洲国产成人久久| 国产永久免费网站| av激情成人网| 午夜久久福利影院| 青青在线免费视频| 男人的天堂在线视频免费观看| 久久婷婷色综合| 成人免费视频观看视频| 97精品人妻一区二区三区在线 | 18禁网站免费无遮挡无码中文| 国产在线观看免费麻豆| 国产精品天天看| 日本一区二区三不卡| 视频国产在线观看| 99re这里都是精品| 国产另类自拍| 黄色一级大片在线免费看国产一 | 国产精品久久无码| 9l亚洲国产成人精品一区二三| 欧美三级欧美一级| 天天爽天天爽夜夜爽| 成人欧美magnet| 欧美日韩国产麻豆| 免费观看日韩毛片| 伊人成综合网站| 黑人欧美xxxx| 国产日韩一区二区在线观看| 亚洲精品国产成人av在线| 99在线小视频| 国产精品中文欧美| 18成人在线| 亚洲精品国产精| 国产成人精品免费| 超碰97在线人人| 色婷婷中文字幕| 99久久婷婷国产综合精品电影 | 国产精品成人一区二区艾草| 日韩一区二区三区资源| а天堂8中文最新版在线官网| 久久久国际精品| 日韩影视精品| 日韩三级影院| 国产精品少妇自拍| 丝袜足脚交91精品| 成人看av片| 亚洲一区二区三区精品在线| 人妻无码久久一区二区三区免费| 99re6在线精品视频免费播放| 精品成人久久av| 日本www高清视频| 久久女人天堂| 日韩欧美中文字幕制服| 99精品一区二区三区无码吞精| 美国十次av导航亚洲入口| 国产偷国产偷亚洲清高网站| 日韩免费成人av| 99久久精品网站| 久久久久久久一区二区| av网站中文字幕| 美国毛片一区二区| 国产成人看片| 国产精品麻豆一区二区三区 | a级黄色小视频| videos性欧美另类高清| 欧美精品乱人伦久久久久久| 91精品又粗又猛又爽| 国产一区二区三区站长工具| 久久精品亚洲精品| 天堂在线免费观看视频| 麻豆精品在线观看| 国产一区二区三区高清| 性开放的欧美大片| 亚洲成人1区2区| 亚洲一区二区三区四区五区xx| 亚洲3区在线| 国产一区二区久久精品| 久久久精品一区二区涩爱| 香蕉国产精品偷在线观看不卡| 91久久久久久国产精品| 深夜福利在线视频| 亚洲免费在线观看| 日韩中文字幕二区| 日韩在线视频一区二区三区| 国产一区二区三区高清在线观看| 久久丫精品久久丫| 蜜乳av一区二区三区| 国产一区二区在线网站 | 国产精品一线天粉嫩av| 色综合色综合网色综合| 国产精华7777777| 成人av网站在线观看| 中文字幕乱码一区二区三区| 日韩影片中文字幕| 亚洲成人激情视频| 日韩一级片av| 另类小说视频一区二区| 麻豆av一区二区| 超黄网站在线观看| 91精品国产入口| 久久精品aaaaaa毛片| 五月天丁香社区| 欧美中文一区二区| 欧美在线视频免费观看| 黄色av网站免费在线观看| 中文字幕一区视频| 我看黄色一级片| 国产一区不卡| 日韩av不卡电影| 日韩欧美在线观看一区二区| 午夜视频一区二区三区| 亚洲熟女乱综合一区二区| 色999国产精品| 国产精品吹潮在线观看| 日本成人一区| 欧美视频一二三| 六十路息与子猛烈交尾| 影院欧美亚洲| 国产精品一区二区三区在线| 超碰在线资源| 亚洲国产精品系列| 国产精品一区二区三区成人| 国产精品久久久久久99| 成人晚上爱看视频| 精品国产av无码一区二区三区| 中文字幕视频精品一区二区三区| 色综合天天综合网国产成人网| 亚洲国产中文字幕在线| 亚洲综合色区另类av| 国产女主播在线播放| 亚洲一级高清| 国产综合动作在线观看| 最新中文字幕在线播放| 亚洲女成人图区| 日本丰满少妇做爰爽爽| 中文字幕av在线一区二区三区| 国产精品视频中文字幕| 亚洲91精品| 国产激情一区二区三区在线观看 | 91精品国产免费久久久久久| 婷婷国产在线| 日韩精品电影一区亚洲| 日韩精品一区二区三区视频播放| 在线免费看视频| 九九久久精品视频 | 禁久久精品乱码| 久久精品magnetxturnbtih| 欧美最新精品| 久久夜色精品国产亚洲aⅴ| 亚洲成人黄色片| 欧美午夜影院在线视频| av在线播放中文字幕| 国产精品一卡二卡| 欧美日韩二三区| 第九色区aⅴ天堂久久香| 亚洲综合第一页| 多野结衣av一区| 在线观看久久久久久| www.超碰在线.com| 色婷婷av一区二区三区之一色屋| 毛片视频免费播放| 成年人国产精品| 老司机午夜av| 欧美午夜国产| 日韩高清三级| 亚洲成人黄色| 国产成人精品免高潮在线观看| 顶级网黄在线播放| 日韩精品视频三区| av手机免费看| 色婷婷综合久色| 私库av在线播放| 久久精品夜色噜噜亚洲a∨| 久久精品久久99| 视频精品一区二区| 国产精品一色哟哟| 四虎国产精品免费观看| 久久久久久久久久久久久久一区| 亚洲精品毛片| 茄子视频成人在线| 免费在线看电影| 日韩在线国产精品| 欧美女优在线观看| 精品久久久久一区| 一区二区三区精彩视频| 日韩欧美精品中文字幕| 青青草成人免费| 国产精品美女久久久久久| 午夜免费福利影院| 国产毛片精品一区| 在线观看国产一级片| 午夜影院日韩| 青青青免费在线| 欧美日韩福利| 中文字幕在线中文字幕日亚韩一区| 亚洲人成网77777色在线播放 | 成人a'v在线播放| 久久手机视频| 狠狠一区二区三区| 97久久精品午夜一区二区| 日韩免费大片| 国产精品啪视频| 亚洲伦理影院| 欧美中文在线免费| 免费h在线看| 91国内揄拍国内精品对白| 欧美日韩经典丝袜| 欧美猛交ⅹxxx乱大交视频| melody高清在线观看| 亚洲热线99精品视频| 日韩porn| 亚洲欧美在线第一页| 欧美日韩伦理片| 日韩精品免费在线视频观看| 色综合久久久久久| 亚洲精品一区二区在线观看| 朝桐光av在线一区二区三区| 欧美一区二区人人喊爽| 91福利免费视频| 欧美三级乱人伦电影| 一级黄色片免费看| 欧美日韩成人综合在线一区二区 | 欧美xx视频| 热久久99这里有精品| 欧美电影免费看| 国产成人激情小视频| 色婷婷综合久久久中字幕精品久久| 欧美制服第一页| 欧美日韩视频免费观看| 国产精品日韩在线播放| 全球中文成人在线| 亚洲精品欧美极品| 91精品短视频| 国产视频一区二区不卡| 亚洲电影一级片| 日韩影院一区| 亚洲激情久久| 久久手机在线视频| 在线亚洲观看| 国产av人人夜夜澡人人爽| 六月婷婷色综合| 一个人看的视频www| www.日韩在线| 亚洲天堂久久新| 国产精品视频免费看| 91精品一区二区三区蜜桃| 一区二区三区国产豹纹内裤在线| 国语对白一区二区| 一本大道久久a久久综合婷婷| 中文 欧美 日韩| 日韩一区二区三| 日本福利片在线| www.欧美三级电影.com| 国产丝袜在线播放| 国产福利精品在线| 高清一区二区三区av| 国产一区喷水| 欧洲视频一区| 香港三级日本三级a视频| 国产欧美日韩综合一区在线播放 | 亚洲欧美日本国产| 免费久久99精品国产自| 天天插综合网| 精品这里只有精品| 精品在线视频一区| 自拍视频一区二区| 国产精品白丝在线| 日本一区二区不卡在线| 欧美日韩精品一区二区天天拍小说 | 久久精品国产美女| 欧美aaaa视频| 亚洲熟妇国产熟妇肥婆| 精品一区二区三区影院在线午夜 | 91高清免费视频| 2019中文亚洲字幕| 青青影院一区二区三区四区| 欧美福利视频| 天堂网在线免费观看| 99久久777色| 黄色香蕉视频在线观看| 一本久久a久久精品亚洲| 成人1区2区3区| 中文字幕在线观看亚洲| 一个人www视频在线免费观看| 亚洲综合小说区| 日韩精品久久| 欧美激情 国产精品| 国产一区二区三区日韩| 天天躁夜夜躁狠狠是什么心态| 亚洲国产aⅴ天堂久久| 一区二区三区免费在线| 亚洲无线码在线一区观看| 韩国日本一区| 666精品在线| 99久久99久久精品国产片桃花| 少妇性l交大片| 91麻豆国产福利在线观看| 久久精品第一页| 91精品在线观看入口| 91电影在线播放| 国产精品a久久久久久| 少妇久久久久| 无码粉嫩虎白一线天在线观看| 国产黄色成人av| 永久免费看mv网站入口| 欧美男女性生活在线直播观看| 黄色片在线免费看| 欧美一级大片视频| 欧美三级午夜理伦三级在线观看| 一本久道高清无码视频| 国产福利视频一区二区三区| 日韩三级在线观看视频| 制服丝袜一区二区三区| 婷婷成人激情| 国产美女精品视频| 日韩成人免费| 中文字幕在线观看第三页| 久久久精品日韩欧美| 国产性生活视频| 亚洲视频在线免费看| 欧美色999| 日韩免费av电影| 日韩国产在线观看| 性欧美精品男男| 欧美日韩国产高清一区| 午夜激情视频在线观看| 成人激情在线播放| 亚洲精品888| 国产精品一区二区在线免费观看| 亚洲国产精品自拍| 搡老岳熟女国产熟妇| 1769国内精品视频在线播放| 婷婷精品在线| 天美星空大象mv在线观看视频| 亚洲国产精品成人综合| 在线视频 91| 久久久精品在线观看| 欧美视频三区| 三上悠亚久久精品| 久久久精品国产99久久精品芒果 | 精品国产第一福利网站| 亚洲 日韩 国产第一区| 精品一区中文字幕| 久久久久成人片免费观看蜜芽| 欧美精品一区二区在线观看| 涩涩视频在线免费看| 日韩片电影在线免费观看| 久久超碰97中文字幕| 久草网视频在线观看| 日韩av在线网| 成人交换视频| 99热久久这里只有精品| 久久久久高清精品| 一级aaaa毛片| 久久久久久网站| 日产精品一区二区| 特种兵之深入敌后| 黑人巨大精品欧美一区二区三区 | 一级特黄大欧美久久久| 天堂a√在线| 成人啪啪免费看| 99精品国产99久久久久久福利| 久久久久亚洲AV成人无在| 日韩免费观看高清完整版| jk漫画禁漫成人入口| 最新av网址在线观看| 久久精品网站免费观看| 国产三级午夜理伦三级| 奇米成人av国产一区二区三区| 一区二区日韩欧美| 久久精品成人av| 日韩一区二区免费在线电影| 人人鲁人人莫人人爱精品| 亚洲精品国产suv一区88| 欧美国产一区视频在线观看| 人妻无码一区二区三区久久99|