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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

jar打包 剔除第三方依赖以及它的依赖_面试官:为什么Spring Boot的jar可以直接运行?...

發(fā)布時(shí)間:2023/12/10 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jar打包 剔除第三方依赖以及它的依赖_面试官:为什么Spring Boot的jar可以直接运行?... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

來源:Gormat's Notes

fangjian0423.github.io/2017/05/31/springboot-executable-jar/

  • Spring Boot Loader抽象的一些類
  • JarLauncher的執(zhí)行過程
  • 關(guān)于自定義的類加載器LaunchedURLClassLoader
  • Spring Boot Loader的作用

SpringBoot提供了一個(gè)插件spring-boot-maven-plugin用于把程序打包成一個(gè)可執(zhí)行的jar包。在pom文件里加入這個(gè)插件即可:

<build>
????<plugins>
????????<plugin>
????????????<groupId>org.springframework.bootgroupId>
????????????<artifactId>spring-boot-maven-pluginartifactId>
????????plugin>
????plugins>
build>

打包完生成的executable-jar-1.0-SNAPSHOT.jar內(nèi)部的結(jié)構(gòu)如下:

├── META-INF
│ ├── MANIFEST.MF
│ └── maven
│ └── spring.study
│ └── executable-jar
│ ├── pom.properties
│ └── pom.xml
├── lib
│ ├── aopalliance-1.0.jar
│ ├── classmate-1.1.0.jar
│ ├── spring-boot-1.3.5.RELEASE.jar
│ ├── spring-boot-autoconfigure-1.3.5.RELEASE.jar
│ ├── ...
├── org
│ └── springframework
│ └── boot
│ └── loader
│ ├── ExecutableArchiveLauncher$1.class
│ ├── ...
└── spring
└── study
└── executablejar
└── ExecutableJarApplication.class

然后可以直接執(zhí)行jar包就能啟動(dòng)程序了:

java -jar executable-jar-1.0-SNAPSHOT.jar

打包出來fat jar內(nèi)部有4種文件類型:

  • META-INF文件夾:程序入口,其中MANIFEST.MF用于描述jar包的信息
  • lib目錄:放置第三方依賴的jar包,比如springboot的一些jar包
  • spring boot loader相關(guān)的代碼
  • 模塊自身的代碼
  • MANIFEST.MF文件的內(nèi)容:

    Manifest-Version: 1.0
    Implementation-Title: executable-jar
    Implementation-Version: 1.0-SNAPSHOT
    Archiver-Version: Plexus Archiver
    Built-By: Format
    Start-Class: spring.study.executablejar.ExecutableJarApplication
    Implementation-Vendor-Id: spring.study
    Spring-Boot-Version: 1.3.5.RELEASE
    Created-By: Apache Maven 3.2.3
    Build-Jdk: 1.8.0_20
    Implementation-Vendor: Pivotal Software, Inc.
    Main-Class: org.springframework.boot.loader.JarLauncher

    我們看到,它的Main-Class是org.springframework.boot.loader.JarLauncher,當(dāng)我們使用java -jar執(zhí)行jar包的時(shí)候會(huì)調(diào)用JarLauncher的main方法,而不是我們編寫的SpringApplication。

    那么JarLauncher這個(gè)類是的作用是什么的?

    它是SpringBoot內(nèi)部提供的工具Spring Boot Loader提供的一個(gè)用于執(zhí)行Application類的工具類(fat jar內(nèi)部有spring loader相關(guān)的代碼就是因?yàn)檫@里用到了)。相當(dāng)于Spring Boot Loader提供了一套標(biāo)準(zhǔn)用于執(zhí)行SpringBoot打包出來的jar

    Spring Boot Loader抽象的一些類

    抽象類Launcher:各種Launcher的基礎(chǔ)抽象類,用于啟動(dòng)應(yīng)用程序;跟Archive配合使用;目前有3種實(shí)現(xiàn),分別是JarLauncher、WarLauncher以及PropertiesLauncher

    Archive:歸檔文件的基礎(chǔ)抽象類。JarFileArchive就是jar包文件的抽象。它提供了一些方法比如getUrl會(huì)返回這個(gè)Archive對(duì)應(yīng)的URL;getManifest方法會(huì)獲得Manifest數(shù)據(jù)等。ExplodedArchive是文件目錄的抽象

    JarFile:對(duì)jar包的封裝,每個(gè)JarFileArchive都會(huì)對(duì)應(yīng)一個(gè)JarFile。JarFile被構(gòu)造的時(shí)候會(huì)解析內(nèi)部結(jié)構(gòu),去獲取jar包里的各個(gè)文件或文件夾,這些文件或文件夾會(huì)被封裝到Entry中,也存儲(chǔ)在JarFileArchive中。如果Entry是個(gè)jar,會(huì)解析成JarFileArchive。

    比如一個(gè)JarFileArchive對(duì)應(yīng)的URL為:

    jar:file:/Users/format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar!/

    它對(duì)應(yīng)的JarFile為:

    /Users/format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar

    這個(gè)JarFile有很多Entry,比如:

    META-INF/
    META-INF/MANIFEST.MF
    spring/
    spring/study/
    ....
    spring/study/executablejar/ExecutableJarApplication.class
    lib/spring-boot-starter-1.3.5.RELEASE.jar
    lib/spring-boot-1.3.5.RELEASE.jar
    ...

    JarFileArchive內(nèi)部的一些依賴jar對(duì)應(yīng)的URL(SpringBoot使用org.springframework.boot.loader.jar.Handler處理器來處理這些URL):

    jar:file:/Users/Format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar!/lib/spring-boot-starter-web-1.3.5.RELEASE.jar!/

    jar:file:/Users/Format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar!/lib/spring-boot-loader-1.3.5.RELEASE.jar!/org/springframework/boot/loader/JarLauncher.class

    我們看到如果有jar包中包含jar,或者jar包中包含jar包里面的class文件,那么會(huì)使用?!/?分隔開,這種方式只有org.springframework.boot.loader.jar.Handler能處理,它是SpringBoot內(nèi)部擴(kuò)展出來的一種URL協(xié)議。

    JarLauncher的執(zhí)行過程

    JarLauncher的main方法:

    public?static?void?main(String[]?args)?{
    ????//?構(gòu)造JarLauncher,然后調(diào)用它的launch方法。參數(shù)是控制臺(tái)傳遞的
    ????new?JarLauncher().launch(args);
    }

    JarLauncher被構(gòu)造的時(shí)候會(huì)調(diào)用父類ExecutableArchiveLauncher的構(gòu)造方法。

    ExecutableArchiveLauncher的構(gòu)造方法內(nèi)部會(huì)去構(gòu)造Archive,這里構(gòu)造了JarFileArchive。構(gòu)造JarFileArchive的過程中還會(huì)構(gòu)造很多東西,比如JarFile,Entry …

    JarLauncher的launch方法:

    protected?void?launch(String[]?args)?{
    ??try?{
    ????//?在系統(tǒng)屬性中設(shè)置注冊(cè)了自定義的URL處理器:org.springframework.boot.loader.jar.Handler。如果URL中沒有指定處理器,會(huì)去系統(tǒng)屬性中查詢
    ????JarFile.registerUrlProtocolHandler();
    ????//?getClassPathArchives方法在會(huì)去找lib目錄下對(duì)應(yīng)的第三方依賴JarFileArchive,同時(shí)也會(huì)項(xiàng)目自身的JarFileArchive
    ????//?根據(jù)getClassPathArchives得到的JarFileArchive集合去創(chuàng)建類加載器ClassLoader。這里會(huì)構(gòu)造一個(gè)LaunchedURLClassLoader類加載器,這個(gè)類加載器繼承URLClassLoader,并使用這些JarFileArchive集合的URL構(gòu)造成URLClassPath
    ????//?LaunchedURLClassLoader類加載器的父類加載器是當(dāng)前執(zhí)行類JarLauncher的類加載器
    ????ClassLoader?classLoader?=?createClassLoader(getClassPathArchives());
    ????//?getMainClass方法會(huì)去項(xiàng)目自身的Archive中的Manifest中找出key為Start-Class的類
    ????//?調(diào)用重載方法launch
    ????launch(args,?getMainClass(),?classLoader);
    ??}
    ??catch?(Exception?ex)?{
    ????ex.printStackTrace();
    ????System.exit(1);
    ??}
    }

    //?Archive的getMainClass方法
    //?這里會(huì)找出spring.study.executablejar.ExecutableJarApplication這個(gè)類
    public?String?getMainClass()?throws?Exception?{
    ?Manifest?manifest?=?getManifest();
    ?String?mainClass?=?null;
    ?if?(manifest?!=?null)?{
    ??mainClass?=?manifest.getMainAttributes().getValue("Start-Class");
    ?}
    ?if?(mainClass?==?null)?{
    ??throw?new?IllegalStateException(
    ????"No?'Start-Class'?manifest?entry?specified?in?"?+?this);
    ?}
    ?return?mainClass;
    }

    //?launch重載方法
    protected?void?launch(String[]?args,?String?mainClass,?ClassLoader?classLoader)throws?Exception?{
    ??????//?創(chuàng)建一個(gè)MainMethodRunner,并把a(bǔ)rgs和Start-Class傳遞給它
    ?Runnable?runner?=?createMainMethodRunner(mainClass,?args,?classLoader);
    ??????//?構(gòu)造新線程
    ?Thread?runnerThread?=?new?Thread(runner);
    ??????//?線程設(shè)置類加載器以及名字,然后啟動(dòng)
    ?runnerThread.setContextClassLoader(classLoader);
    ?runnerThread.setName(Thread.currentThread().getName());
    ?runnerThread.start();
    }

    MainMethodRunner的run方法:

    @Override
    public?void?run()?{
    ??try?{
    ????//?根據(jù)Start-Class進(jìn)行實(shí)例化
    ????Class>?mainClass?=?Thread.currentThread().getContextClassLoader()
    ????????.loadClass(this.mainClassName);
    ????//?找出main方法
    ????Method?mainMethod?=?mainClass.getDeclaredMethod("main",?String[].class);
    ????//?如果main方法不存在,拋出異常
    ????if?(mainMethod?==?null)?{
    ??????throw?new?IllegalStateException(
    ??????????this.mainClassName?+?"?does?not?have?a?main?method");
    ????}
    ????//?調(diào)用
    ????mainMethod.invoke(null,?new?Object[]?{?this.args?});
    ??}
    ??catch?(Exception?ex)?{
    ????UncaughtExceptionHandler?handler?=?Thread.currentThread()
    ????????.getUncaughtExceptionHandler();
    ????if?(handler?!=?null)?{
    ??????handler.uncaughtException(Thread.currentThread(),?ex);
    ????}
    ????throw?new?RuntimeException(ex);
    ??}
    }

    Start-Class的main方法調(diào)用之后,內(nèi)部會(huì)構(gòu)造Spring容器,啟動(dòng)內(nèi)置Servlet容器等過程。這些過程我們都已經(jīng)分析過了。

    關(guān)于自定義的類加載器LaunchedURLClassLoader

    LaunchedURLClassLoader重寫了loadClass方法,也就是說它修改了默認(rèn)的類加載方式(先看該類是否已加載這部分不變,后面真正去加載類的規(guī)則改變了,不再是直接從父類加載器中去加載)。LaunchedURLClassLoader定義了自己的類加載規(guī)則:

    private Class> doLoadClass(String name) throws ClassNotFoundException {

    // 1) Try the root class loader
    try {
    if (this.rootClassLoader != null) {
    return this.rootClassLoader.loadClass(name);
    }
    }
    catch (Exception ex) {
    // Ignore and continue
    }

    // 2) Try to find locally
    try {
    findPackage(name);
    Class> cls = findClass(name);
    return cls;
    }
    catch (Exception ex) {
    // Ignore and continue
    }

    // 3) Use standard loading
    return super.loadClass(name, false);
    }

    加載規(guī)則:

  • 如果根類加載器存在,調(diào)用它的加載方法。這里是根類加載是ExtClassLoader
  • 調(diào)用LaunchedURLClassLoader自身的findClass方法,也就是URLClassLoader的findClass方法
  • 調(diào)用父類的loadClass方法,也就是執(zhí)行默認(rèn)的類加載順序(從BootstrapClassLoader開始從下往下尋找)
  • LaunchedURLClassLoader自身的findClass方法:

    protected Class> findClass(final String name)
    throws ClassNotFoundException
    {
    try {
    return AccessController.doPrivileged(
    new PrivilegedExceptionAction>() {
    public Class> run() throws ClassNotFoundException {
    // 把類名解析成路徑并加上.class后綴
    String path = name.replace('.', '/').concat(".class");
    // 基于之前得到的第三方j(luò)ar包依賴以及自己的jar包得到URL數(shù)組,進(jìn)行遍歷找出對(duì)應(yīng)類名的資源
    // 比如path是org/springframework/boot/loader/JarLauncher.class,它在jar:file:/Users/Format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar!/lib/spring-boot-loader-1.3.5.RELEASE.jar!/中被找出
    // 那么找出的資源對(duì)應(yīng)的URL為jar:file:/Users/Format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar!/lib/spring-boot-loader-1.3.5.RELEASE.jar!/org/springframework/boot/loader/JarLauncher.class
    Resource res = ucp.getResource(path, false);
    if (res != null) { // 找到了資源
    try {
    return defineClass(name, res);
    } catch (IOException e) {
    throw new ClassNotFoundException(name, e);
    }
    } else { // 找不到資源的話直接拋出ClassNotFoundException異常
    throw new ClassNotFoundException(name);
    }
    }
    }, acc);
    } catch (java.security.PrivilegedActionException pae) {
    throw (ClassNotFoundException) pae.getException();
    }
    }

    下面是LaunchedURLClassLoader的一個(gè)測(cè)試:

    // 注冊(cè)org.springframework.boot.loader.jar.Handler URL協(xié)議處理器
    JarFile.registerUrlProtocolHandler();
    // 構(gòu)造LaunchedURLClassLoader類加載器,這里使用了2個(gè)URL,分別對(duì)應(yīng)jar包中依賴包spring-boot-loader和spring-boot,使用 "!/" 分開,需要org.springframework.boot.loader.jar.Handler處理器處理
    LaunchedURLClassLoader classLoader = new LaunchedURLClassLoader(
    new URL[] {
    new URL("jar:file:/Users/Format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar!/lib/spring-boot-loader-1.3.5.RELEASE.jar!/")
    , new URL("jar:file:/Users/Format/Develop/gitrepository/springboot-analysis/springboot-executable-jar/target/executable-jar-1.0-SNAPSHOT.jar!/lib/spring-boot-1.3.5.RELEASE.jar!/")
    },
    LaunchedURLClassLoaderTest.class.getClassLoader());

    // 加載類
    // 這2個(gè)類都會(huì)在第二步本地查找中被找出(URLClassLoader的findClass方法)
    classLoader.loadClass("org.springframework.boot.loader.JarLauncher");
    classLoader.loadClass("org.springframework.boot.SpringApplication");
    // 在第三步使用默認(rèn)的加載順序在ApplicationClassLoader中被找出
    classLoader.loadClass("org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration");

    Spring Boot Loader的作用

    SpringBoot在可執(zhí)行jar包中定義了自己的一套規(guī)則,比如第三方依賴jar包在/lib目錄下,jar包的URL路徑使用自定義的規(guī)則并且這個(gè)規(guī)則需要使用org.springframework.boot.loader.jar.Handler處理器處理。它的Main-Class使用JarLauncher,如果是war包,使用WarLauncher執(zhí)行。這些Launcher內(nèi)部都會(huì)另起一個(gè)線程啟動(dòng)自定義的SpringApplication類。

    這些特性通過spring-boot-maven-plugin插件打包完成。

    【面試題專欄】

    面試官:你對(duì)Redis緩存了解嗎?面對(duì)這11道面試題你是否有很多問號(hào)?2020年Java多線程與并發(fā)系列22道高頻面試題解析

    從阿里、騰訊的面試真題中總結(jié)了這11個(gè)Redis高頻面試題

    2020年Java基礎(chǔ)高頻面試題匯總(1.4W字詳細(xì)解析)

    全網(wǎng)最全Spring系列面試題129道(附答案解析)

    2萬字Java并發(fā)編程面試題整理(含答案,建議收藏)

    85道Java微服務(wù)面試題整理(助力2020面試)

    【2020年大廠面試必備】JVM與性能調(diào)優(yōu)知識(shí)點(diǎn)整理

    2019年面試官最喜歡問的28道ZooKeeper面試題

    2020面試還搞不懂MyBatis?看看這27道面試題!(含答案和思維導(dǎo)圖)

    Spring Cloud+Spring Boot高頻面試題解析

    2019年常見的Linux面試題及答案解析,哪些你還不會(huì)?

    2019年常見Elasticsearch面試題答案解析

    18道kafka高頻面試題哪些你還不會(huì)?(含答案和思維導(dǎo)圖)

    2019年12道RabbitMQ高頻面試題你都會(huì)了嗎?(含答案解析)

    2019年Dubbo你掌握的如何?快看看這30道高頻面試題!

    ?你在看嗎?

    總結(jié)

    以上是生活随笔為你收集整理的jar打包 剔除第三方依赖以及它的依赖_面试官:为什么Spring Boot的jar可以直接运行?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    特级黄色一级 | 久久伊99综合婷婷久久伊 | 久久福利精品 | 色香天天 | 久久国产精品99久久久久久进口 | av福利在线看 | 久久久精品 一区二区三区 国产99视频在线观看 | 91av视屏| 久久精品综合一区 | 日本深夜福利视频 | 97色婷婷 | 久久视影 | 超碰在线资源 | 伊人午夜视频 | 九九欧美 | 日韩一区二区三区高清在线观看 | 精品视频123区在线观看 | 亚洲乱码在线观看 | 日本中文字幕免费观看 | 久久九九影视 | 国产成人在线精品 | 色午夜| 日日夜夜综合网 | 国产手机在线播放 | 精品一二三四五区 | 国产又粗又硬又爽视频 | 日韩高清国产精品 | 毛片区| 91在线www| 国产在线观看二区 | 91久久国产露脸精品国产闺蜜 | 国产精品自拍av | 免费看三级网站 | 欧美一区二区日韩一区二区 | 天天视频亚洲 | 欧日韩在线| 国产精品视频永久免费播放 | 99精品视频在线观看 | 久章操 | 天天干,天天操,天天射 | 在线观看日韩精品视频 | 免费看日韩 | 国产成人亚洲在线观看 | 亚洲精品久久激情国产片 | 91大神dom调教在线观看 | 三级黄色在线观看 | 九九久久影院 | 激情视频网页 | 中文字幕av在线电影 | 久99久精品 | 四虎精品成人免费网站 | 在线精品视频在线观看高清 | 色欧美成人精品a∨在线观看 | 精品久久久免费 | 黄色一级片视频 | 国产成人在线免费观看 | 91精品国产福利在线观看 | 国产精品自在线 | 精品在线视频一区二区三区 | 免费视频a | 亚洲综合色丁香婷婷六月图片 | 久久久久一区二区三区 | 久久av电影 | 综合天天色| 日韩电影久久久 | 美女福利视频网 | 在线视频 区 | 久久免费99精品久久久久久 | 欧美午夜久久 | 国产xxxx做受性欧美88 | 免费视频成人 | av 一区二区三区四区 | 一二三久久久 | 精品uu | 97视频免费观看 | 中文字幕一区二区三区四区在线视频 | 在线成人免费电影 | 欧美一级电影在线观看 | 婷婷在线精品视频 | 国产精品第10页 | 精品国产视频在线观看 | 97视频在线观看成人 | 黄色毛片视频免费观看中文 | 久久精品91久久久久久再现 | 日韩激情av在线 | 丁香5月婷婷久久 | 成人免费视频网站在线观看 | 亚洲国产丝袜在线观看 | 超级碰碰免费视频 | 亚洲区另类春色综合小说校园片 | 欧美性久久久 | 91av福利视频 | 波多野结衣精品视频 | 久久免费精彩视频 | 九9热这里真品2 | 色婷五月天 | 色婷婷亚洲精品 | 国产99久久久欧美黑人 | 亚洲三级黄色 | 欧美成人播放 | 日韩综合第一页 | 国产在线播放一区二区三区 | 国产69熟 | 亚洲午夜久久久久 | 久久久精品免费看 | 国产成人久久精品一区二区三区 | 久草爱视频 | 最新影院 | av天天草| 久久久黄色av| 日日草视频 | 黄色小说免费在线观看 | 激情视频在线高清看 | 欧美激情另类 | 国产欧美日韩视频 | 国产人成看黄久久久久久久久 | 免费三级影片 | 免费日韩在线 | 色婷婷五 | 香蕉视频免费在线播放 | 欧美a级在线免费观看 | 91免费国产在线观看 | 91福利免费 | 亚洲电影久久久 | 国产小视频免费观看 | 深爱激情婷婷网 | 美女视频又黄又免费 | 久久精品久久99精品久久 | 日韩精品一区二区三区免费观看 | 天天干天天做天天操 | 最近日韩中文字幕中文 | 最新av在线播放 | 91成品视频 | 视频 天天草 | 国产精品久久久久久久免费观看 | 夜夜操网站 | 深夜视频久久 | 亚洲香蕉在线观看 | 亚洲狠狠干 | adn—256中文在线观看 | 国产亚洲精品中文字幕 | 国产成人精品久 | 精品国产一二三四区 | 色综合久久综合 | www五月| 色偷偷88欧美精品久久久 | av电影在线不卡 | 在线亚洲午夜片av大片 | 国产一区高清在线观看 | 久久噜噜少妇网站 | 日本精品中文字幕在线观看 | 黄色av免费电影 | 亚洲国产高清在线观看视频 | 久久综合偷偷噜噜噜色 | 国产一区免费视频 | 91在线观看视频网站 | 操夜夜操 | 在线精品观看 | 国产香蕉视频 | 亚洲成人av电影 | 成人免费观看完整版电影 | 婷婷综合电影 | 日韩在线播放av | 99精彩视频在线观看免费 | 国产人成免费视频 | 成人四虎 | 日本中文一区二区 | 中文资源在线播放 | 怡红院成人在线 | 久久婷婷色综合 | 国产精品久久久久久久久久久杏吧 | 日本久久久精品视频 | 国产精品美女免费看 | 天天做日日爱夜夜爽 | 狠狠久久 | 亚洲综合色播 | 在线国产日本 | 人人cao| 狠狠操狠狠干2017 | 99中文在线 | 免费av大片| 久久免费视频6 | 国产精品久久久久久av | 欧美日韩在线视频一区 | 亚洲精品视频在线播放 | 国产精品久久久久婷婷 | 四虎国产免费 | 香蕉视频最新网址 | 在线观看精品一区 | 91精品人成在线观看 | 91热爆在线观看 | 亚洲黄色免费网站 | 在线 精品 国产 | 欧美成人91 | 人人精久 | 四虎国产精品成人免费影视 | 久久免费一级片 | 久草在线电影网 | 久久视频在线看 | 99精品免费在线观看 | 国产欧美日韩一区 | 日韩免费在线 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 午夜国产在线观看 | 成人精品国产 | 美女天天操 | 精品久久久久一区二区国产 | 婷婷丁香激情 | 最近中文字幕完整视频高清1 | 高清有码中文字幕 | 精品不卡av | 日韩精品1区2区 | 久久艹国产 | 久久久18| 久久久久免费精品视频 | 国产亚洲精品免费 | 色播激情五月 | 国产在线视频一区二区 | 99久热在线精品视频成人一区 | 成人av资源网| 日韩在线免费高清视频 | 高清一区二区三区 | 国产精品乱码久久久久久1区2区 | 成年人在线观看视频免费 | 日韩欧美在线视频一区二区三区 | 久久久片 | 91九色在线 | 婷婷色中文字幕 | 热99久久精品 | 丁香影院在线 | av黄色在线播放 | 少妇搡bbbb搡bbb搡忠贞 | 在线观看日本韩国电影 | 国产a国产 | 欧美日韩国产成人 | 日本动漫做毛片一区二区 | 精品一区二三区 | 亚洲春色综合另类校园电影 | 美女精品国产 | av免费在线观 | 欧美成人精品三级在线观看播放 | 999久久精品 | 国产精品6999成人免费视频 | 91麻豆精品国产91久久久久久 | 超碰精品在线观看 | 亚洲男女精品 | 久久影院中文字幕 | 中文字幕黄网 | 狠狠狠的干 | 婷婷六月综合网 | 久久在线视频在线 | 国产成人精品一区一区一区 | 午夜精品一区二区三区在线观看 | 91精品视频在线免费观看 | 久久久久在线观看 | 午夜av一区二区三区 | 激情久久伊人 | 久久精品免费播放 | 久久久久久久久毛片精品 | 97超碰中文 | 久草网视频在线观看 | 久久久综合色 | 国产玖玖在线 | 欧美色综合天天久久综合精品 | 国产精品网站 | 日韩狠狠操| 成人a大片 | 亚洲第一香蕉视频 | 精品国产乱码久久久久久三级人 | av免费在线免费观看 | 在线免费av网站 | 91九色视频国产 | 国产成人精品一区二区三区网站观看 | 91免费视频网站在线观看 | 中文字幕在线视频网站 | 日本一区二区高清不卡 | 一级片免费观看视频 | av免费在线免费观看 | 九九一级片 | 一区二区三区精品在线视频 | 国产视频日韩视频欧美视频 | 最近中文字幕大全中文字幕免费 | 99视频精品免费视频 | 97国产电影 | 欧美精品乱码99久久影院 | 激情狠狠干 | 在线观看视频三级 | 香蕉网在线观看 | 国产精品久久久久久电影 | 日本三级人妇 | 手机av片| 欧美精品中文在线免费观看 | 精品亚洲va在线va天堂资源站 | 特黄色大片 | 91色影院| 奇米影视777四色米奇影院 | 九九有精品 | 一区二区三区电影大全 | 婷婷丁香在线 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 超碰最新网址 | 在线中文字幕网站 | 久久99国产精品视频 | 国产亚洲免费观看 | 91av亚洲| 成人免费网站视频 | 欧美一级电影 | 中文av免费| 91九色视频导航 | 亚洲精品永久免费视频 | 色老板在线 | 亚洲日本色 | 欧美精品乱码99久久影院 | 久久精品爱视频 | 日韩久久久久久久 | 成人影视免费看 | 狠狠色网 | 国产资源在线视频 | 激情综合亚洲 | 久久草在线视频国产 | 天天操夜夜拍 | 成人国产精品一区 | 国产成人1区 | 久久精品视频免费观看 | 天天操天天曰 | 婷婷在线免费视频 | 久久久久久久久久久免费视频 | 人人搞人人爽 | 日韩精品欧美视频 | 毛片在线播放网址 | 日韩欧美大片免费观看 | 18+视频网站链接 | 97精品国产97久久久久久免费 | 亚洲国产成人久久 | 丁香5月婷婷 | 在线观看av大片 | 欧美嫩草影院 | 久久av影视| 黄a网| 麻豆精品国产传媒 | 欧美a视频在线观看 | 国产精品爽爽久久久久久蜜臀 | 日韩色中色 | 日日躁夜夜躁aaaaxxxx | 97操操操| 久久成人免费电影 | 国产亚洲精品久久久久久久久久久久 | 国产精品麻豆果冻传媒在线播放 | 手机在线日韩视频 | 国产一级黄色片免费看 | 久久99视频免费观看 | 国产成人高清在线 | 国产精品原创在线 | 免费看毛片网站 | 亚洲精品激情 | 午夜影院在线观看18 | 天天射天天搞 | 一区二区三区四区在线 | 亚洲精品 在线视频 | 一本—道久久a久久精品蜜桃 | 精品亚洲国产视频 | 欧美性高跟鞋xxxxhd | 色婷婷骚婷婷 | 欧美成人理伦片 | 日韩最新在线视频 | 日日躁你夜夜躁你av蜜 | 亚洲人成免费网站 | 国产精品男女啪啪 | 亚洲视频aaa | 精品视频免费 | av不卡在线看| 日韩电影一区二区三区 | 亚洲国产美女精品久久久久∴ | 97超级碰碰 | 蜜桃视频在线视频 | 国产18精品乱码免费看 | 国产一区二区精品久久 | 色噜噜日韩精品欧美一区二区 | 天天操月月操 | 久久久久久免费视频 | 丁香六月网 | 日日夜夜操av | aaa毛片视频 | 在线看片成人 | 欧美色888 | 亚洲国产免费av | 久久高清免费观看 | 久草亚洲视频 | 午夜久久久久久久久久久 | 狠色狠色综合久久 | 国产专区在线看 | 91av在线播放 | 国产不卡片 | 伊人久久精品久久亚洲一区 | 国产视频高清 | 五月天久久婷 | 性色av香蕉一区二区 | 国产在线一区观看 | 99热超碰| 国产精品高清一区二区三区 | 成人一级 | 99精品视频在线观看播放 | 亚洲欧美日韩精品久久久 | 欧美久久久久久久久久久久久 | 国产1区2 | 成人观看视频 | 91亚洲精品国偷拍自产在线观看 | 香蕉网址 | 日韩偷拍精品 | 日韩va欧美va亚洲va久久 | 超碰av在线播放 | 在线看小早川怜子av | 国产色婷婷在线 | 日韩精品久久久久久久电影99爱 | 国产麻豆精品久久一二三 | 深爱激情五月婷婷 | 激情婷婷欧美 | 国产 日韩 在线 亚洲 字幕 中文 | 国产成人精品午夜在线播放 | 欧美激情综合五月色丁香 | 操操日| 狠狠色丁香婷婷综合久久片 | 97自拍超碰 | 国产拍揄自揄精品视频麻豆 | 国产五月色婷婷六月丁香视频 | 中文字幕亚洲情99在线 | www国产亚洲精品久久网站 | 亚洲最大成人免费网站 | 亚洲人久久久 | 日韩电影精品 | 亚洲三级毛片 | 青草视频在线播放 | 日本免费一二三区 | 九色琪琪久久综合网天天 | 1000部18岁以下禁看视频 | www.久久久精品 | 亚洲黄色免费观看 | 欧美日韩视频一区二区 | 看国产黄色片 | 五月婷丁香网 | 欧美日韩在线播放一区 | 日韩精品欧美视频 | www.五月天激情 | 在线观看视频三级 | 91成人在线观看喷潮 | 国产精品男女 | 91久久一区二区 | 久久精品com | 丝袜美腿亚洲 | 99热高清 | 中文字幕在线看视频国产中文版 | 午夜久久久久久久久 | 激情五月婷婷综合网 | 91视视频在线直接观看在线看网页在线看 | 毛片激情永久免费 | 视频在线国产 | 一区免费视频 | 人人草人人草 | 最近2019中文免费高清视频观看www99 | 91亚洲狠狠婷婷综合久久久 | 欧美日韩一区二区三区视频 | 国产精品第 | 最近在线中文字幕 | 又黄又爽又刺激的视频 | 国产精品第52页 | 韩国精品在线 | 91麻豆国产福利在线观看 | 欧美在线99| 在线亚洲精品 | 成人影视免费看 | 349k.cc看片app | 免费在线观看亚洲视频 | 国产黄色理论片 | 久久婷婷久久 | 成人黄色小说在线观看 | 国产成人久久av免费高清密臂 | 日韩精品久久一区二区 | 国产原创在线观看 | 天海翼一区二区三区免费 | 91av美女| 人人爽夜夜爽 | 中文字幕电影高清在线观看 | 丝袜少妇在线 | 中文av字幕在线观看 | 国产伦精品一区二区三区免费 | 九九九九热精品免费视频点播观看 | 最近久乱中文字幕 | 中文字幕在线观看日本 | 91精品天码美女少妇 | 在线观看免费一级片 | 国产精品久久久久一区二区三区共 | 九九久久久久久久久激情 | 在线看一区 | 国产亚洲精品中文字幕 | 亚洲一区久久 | 国产视频日本 | 国产日韩精品在线观看 | 国产精品嫩草在线 | 久精品视频免费观看2 | 亚洲三级性片 | 成片视频免费观看 | 亚洲综合激情网 | 婷婷射五月| 中文字幕人成乱码在线观看 | 国产无套精品久久久久久 | 亚洲一区免费在线 | 亚州av成人| av网址在线播放 | 婷婷色网址 | 麻豆传媒电影在线观看 | 日本久久久亚洲精品 | 亚洲精品国产电影 | 亚洲欧美999 | 免费网站黄 | 国产精品久久久久久久99 | 在线精品视频免费播放 | 亚洲人成精品久久久久 | 精品1区2区3区 | 亚洲国产播放 | 久久私人影院 | 欧美91精品国产自产 | 激情欧美一区二区免费视频 | 一区二区三区高清在线 | 国模视频一区二区三区 | 久草在线官网 | 久热电影 | 久热精品国产 | 狠狠干网站| 激情五月婷婷激情 | 久草网免费 | 国产一区二区在线免费播放 | 中文字幕在线视频一区 | 国产精品黑丝在线观看 | 精品成人久久 | 天天操夜夜爱 | 久久精品中文视频 | 久草在线在线视频 | aaa日本高清在线播放免费观看 | 国产综合在线观看视频 | 免费在线国产视频 | 中文字幕一区在线观看视频 | 不卡中文字幕av | 亚洲久草在线视频 | 日韩一区二区三区免费视频 | 久久精品福利 | av黄色亚洲 | 欧美aaa一级 | 久草在线免费资源 | 久久久国产一区二区三区四区小说 | 国产无区一区二区三麻豆 | 亚洲精品一区中文字幕乱码 | 日韩免费在线观看视频 | 九九热av | 亚洲我射av| 一区二区三区中文字幕在线 | 福利视频区 | 激情 婷婷 | 狠狠色丁香久久婷婷综合丁香 | 亚洲 综合 国产 精品 | 日韩精品高清不卡 | 黄色资源网站 | 综合天天| 五月天亚洲激情 | 中文字幕刺激在线 | 成人三级网址 | 国产精品成人一区二区三区吃奶 | 久久久伊人网 | 91成人免费在线 | 久久麻豆精品 | 日本丶国产丶欧美色综合 | 色资源在线| 91pony九色丨交换 | 免费高清av在线看 | 久久国产色 | wwwwwww黄| 精品国产一区二区在线 | 亚洲日本欧美在线 | 国产又粗又猛又色 | 成人免费在线播放视频 | 日韩中文字幕免费 | 国产999精品视频 | 玖玖视频 | 欧美一级专区免费大片 | av在线免费观看黄 | 亚洲精品视频一 | 久久不色 | 国产 精品 资源 | 夜夜躁狠狠躁日日躁视频黑人 | 亚洲一区二区黄色 | 午夜a区| 丰满少妇在线观看资源站 | 国产精品毛片一区二区 | 国产精品理论在线观看 | 成人a视频片观看免费 | 丁香综合网 | 久久最新 | 久久久久久久毛片 | 99久久精品免费看国产一区二区三区 | 日本中文字幕视频 | 婷婷久久综合九色综合 | 日韩影视在线观看 | 国产xxxxx在线观看 | 在线观看网站黄 | 国产色女 | 亚洲欧洲精品久久 | 99视频在线免费观看 | 国产精品欧美一区二区三区不卡 | 亚洲综合网| 国内精品久久久久久久久久清纯 | 999国产在线| 免费三级影片 | 国内精品久久久久影院男同志 | 高清不卡免费视频 | 国内99视频 | 韩国在线一区二区 | 五月天久久狠狠 | 色播亚洲婷婷 | 午夜18视频在线观看 | 午夜电影 电影 | 婷婷丁香自拍 | www.99热精品| 国产精品国产亚洲精品看不卡 | 91在线91 | 国产一区二区手机在线观看 | 中文字幕在线一二 | 日本护士三级少妇三级999 | 国产一区二区不卡视频 | www国产亚洲精品久久网站 | 日韩色视频在线观看 | 69精品人人人人 | 亚洲丝袜中文 | 国产精品99久久免费黑人 | 婷婷色在线播放 | 亚洲理论片在线观看 | 国产真实在线 | 中文字幕刺激在线 | 亚洲国产日韩欧美在线 | 高清不卡免费视频 | 国产91小视频 | 国产在线观看91 | 欧美日韩中文另类 | 久久五月情影视 | 免费观看福利视频 | 国产一级h | 91精品久久久久久综合五月天 | 久久久久久久久毛片精品 | 久久久免费少妇 | 人人盈棋牌 | 国产精品第52页 | 五月婷婷av在线 | 久久久久久久久久久国产精品 | 欧美性粗大hdvideo | 日韩免费一区二区在线观看 | 日韩欧美网站 | 国产精品视频在线看 | 久久6精品| 亚洲精品久久久久久国 | 99久久精品国产一区 | 免费看污网站 | 中文字幕一区二区三区四区久久 | 国产在线观看高清视频 | 日韩电影一区二区在线观看 | 日韩视频一区二区三区在线播放免费观看 | 二区三区在线 | 草久视频在线观看 | 奇米影视在线99精品 | 在线中文字幕观看 | 亚洲欧美日韩一区二区三区在线观看 | 有码中文字幕在线观看 | 欧美一级视频免费看 | 国产精品99久久久久 | 精品美女在线视频 | 国产精品理论视频 | 久久久久久高清 | 四虎在线免费观看 | 黄色毛片在线 | 美女网站色在线观看 | 国产精品18久久久久vr手机版特色 | 91人人网 | 国产 一区二区三区 在线 | 中文字幕有码在线 | 国产在线自 | 草久久精品| 亚洲日b视频 | 在线观看视频色 | 欧美激情视频免费看 | 亚洲激情婷婷 | 久久久久久免费视频 | 日韩av资源在线观看 | 精品一区精品二区高清 | 亚洲一区免费在线 | 一级成人免费视频 | 国产中文字幕一区 | 99精品国产免费久久久久久下载 | 狠色在线| 综合久久久久久久久 | 婷婷激情av| 免费福利视频网站 | 亚洲激情在线观看 | 伊人天天干 | 在线观看亚洲免费视频 | 午夜精品久久久久久久爽 | 国产精品6999成人免费视频 | 男女啪啪免费网站 | 99视频精品视频高清免费 | 久久精品一二区 | 91九色蝌蚪视频 | 免费在线观看av网站 | 正在播放五月婷婷狠狠干 | 欧美一区二区三区在线播放 | 操操日日 | 色视频成人在线观看免 | 日韩精品一区二区在线观看 | 久久久久久久久久久久亚洲 | 91精品一区在线观看 | 天天操福利视频 | 五月天av在线 | 国产成人久久av | 免费人人干 | 亚洲国产精品久久久 | 91视频a| 日韩av在线看 | av在线影视 | 亚洲精品午夜久久久久久久 | 精品欧美一区二区三区久久久 | 在线播放 日韩专区 | 亚洲 综合 国产 精品 | 麻豆视频在线看 | 久久五月情影视 | 精品国产亚洲一区二区麻豆 | 国产精品99久久久久久小说 | 欧美日韩国产一区二区三区在线观看 | 天天综合中文 | 日韩免费播放 | 激情久久久久久久久久久久久久久久 | 日韩免费视频线观看 | 亚洲天天摸日日摸天天欢 | 日日干激情五月 | 在线亚洲人成电影网站色www | 一区二区三区在线播放 | 国产成人av免费在线观看 | 激情小说网站亚洲综合网 | 在线观看日韩一区 | 天天干夜夜想 | 99热只有精品在线观看 | 国产中文字幕网 | 久久99精品波多结衣一区 | 亚洲高清在线 | 欧美国产视频在线 | 狠狠插狠狠干 | 国产超碰在线 | 国产精品美女免费 | 草久久久久久 | 精品成人网| 免费三级黄 | 天天做天天爱天天爽综合网 | 国产精品久久久av久久久 | 亚洲激情综合 | 精品久久久久久一区二区里番 | 很黄很黄的网站免费的 | 免费观看十分钟 | 国产精品资源在线 | 亚洲精品国产第一综合99久久 | av软件在线观看 | 在线观看日韩中文字幕 | 国产成人久久av免费高清密臂 | 九色91在线视频 | 亚洲精品视 | 日韩成人免费在线电影 | 91秒拍国产福利一区 | 日韩在线视频网站 | 成人永久免费 | 色橹橹欧美在线观看视频高清 | 精品久久国产 | 97成人在线观看视频 | 久久伊人精品天天 | 五月婷婷精品 | 在线看国产一区 | 91九色成人蝌蚪首页 | 91av电影网| 日韩,中文字幕 | 色噜噜日韩精品欧美一区二区 | 中文字幕视频观看 | 日韩三级免费 | 激情影音先锋 | 欧美男同网站 | 六月丁香婷 | 国产一线天在线观看 | 99在线免费观看视频 | 狠狠色噜噜狠狠狠合久 | 国产不卡免费 | 69久久夜色精品国产69 | 91.精品高清在线观看 | 国产免费又爽又刺激在线观看 | 亚洲国产精品资源 | 日韩美女久久 | 在线观看色网站 | 国产欧美精品一区二区三区 | 伊人激情网 | 久久久久网站 | 亚洲免费在线视频 | 国产精品高清在线 | 激情六月婷婷久久 | 午夜精品电影 | 亚洲精品久久激情国产片 | 亚洲精品午夜视频 | 激情影音 | 天天操天天射天天添 | 国产美女视频网站 | 日本久久久久久久久久久 | 蜜臀久久99精品久久久久久网站 | 又色又爽又黄高潮的免费视频 | 日女人免费视频 | 国产香蕉视频在线观看 | 亚洲高清在线 | 国产中年夫妇高潮精品视频 | 国产在线a | 国内外成人在线 | 久久久久成人精品亚洲国产 | 碰超在线97人人 | 中文字幕在线免费播放 | 欧美一区二区在线刺激视频 | 国产裸体视频bbbbb | 久久经典国产视频 | 欧美日韩国产高清视频 | 美腿丝袜av | 亚洲精品国产精品国 | 国产一区二区三区视频在线 | 精品国产伦一区二区三区观看说明 | 三级午夜片| 日韩美女免费线视频 | 日韩极品视频在线观看 | 久久久久欧美精品 | 在线观看激情av | 最新精品国产 | 免费a一级 | 中文字幕一区二区三区乱码在线 | 久久精品免费 | 最近免费观看的电影完整版 | 亚洲精品欧美精品 | 国产中文字幕91 | 中文字幕亚洲综合久久五月天色无吗'' | 午夜精品一区二区三区在线播放 | 综合国产在线观看 | 亚洲一区精品二人人爽久久 | 国产区 在线 | www.天天干 | 免费看片网址 | 亚洲蜜桃在线 | 中文字幕在线观看视频一区二区三区 | 中文字幕电影网 | 激情av资源网 | 天无日天天操天天干 | 黄色a视频| 深爱激情av | 久久欧洲视频 | 国产黄色精品在线 | 亚洲成av人片| 精品国产福利在线 | 日韩字幕在线 | 亚洲国产精品一区二区久久,亚洲午夜 | 亚洲在线免费视频 | 国产免费观看高清完整版 | 国产精品久久久久久久久久三级 | 天天干天天干天天干 | 欧美日韩高清在线一区 | 国产69精品久久久久99 | 午夜三级福利 | 国产日韩在线视频 | 麻豆精品视频 | 天天鲁天天干天天射 | 久久在线精品视频 | 欧美日韩不卡一区 | 久久精品成人 | 丁香婷婷综合五月 | 不卡电影免费在线播放一区 | 天天曰天天爽 | 国产1级毛片 | 91色影院| 江苏妇搡bbbb搡bbbb | 久久久久这里只有精品 | 国色综合| 女人久久久久 | 精品产品国产在线不卡 | 777奇米四色 | 中文字幕视频免费观看 | 日韩在线视 | 91高清视频在线 | 青春草免费视频 | 三上悠亚一区二区在线观看 | 国产精品永久免费视频 | 探花视频在线观看免费版 | 国产亚洲视频在线 | 亚洲电影久久久 | 国产精品成人自产拍在线观看 | 美女黄频网站 | 精品国产综合区久久久久久 | 欧美综合久久久 | 97爱爱爱 | 国产精品一区二区在线 | 91视频91自拍 | 亚洲mv大片欧洲mv大片免费 | 69视频永久免费观看 | 久久在视频 | 亚洲专区在线播放 | 国产精品一区二区三区99 | 欧美日韩精品网站 | 中文字幕日韩精品有码视频 | 天天翘av| 日韩免费观看视频 | 成人小电影在线看 | 久久久久久久久久久久影院 | 狠狠干2018 | 亚洲资源 | 正在播放国产91 | 久久九九精品 | www.夜色.com| 日韩欧美精品在线视频 | 精品一区二区在线免费观看 | av在线影视 | 亚洲欧美国产日韩在线观看 | 日日夜夜狠狠 | 欧美色888| 欧美综合在线观看 | 欧美精品免费一区二区 | 日韩精品一区二区免费 | 亚洲一一在线 | 国产成人免费观看 | 91亚洲精品久久久蜜桃借种 | 国产小视频福利在线 | 婷婷婷国产在线视频 | 成人黄色电影在线播放 | 最近中文字幕免费av | 免费网站黄色 | 国产精品电影在线 | 国产欧美在线一区二区三区 | 国产很黄很色的视频 | 欧美一级黄色视屏 | 精品国产视频在线观看 | 国产小视频你懂的在线 | 久久日韩精品 | 日韩精品专区在线影院重磅 | a级国产乱理论片在线观看 特级毛片在线观看 | 日本美女xx | 午夜精品久久久久久久99 | 久久精品视频4 | 亚洲国产成人久久 | 国产成人精品一区二区在线 | 亚洲码国产日韩欧美高潮在线播放 | 国产区av在线 | 丰满少妇对白在线偷拍 | 国产123区在线观看 国产精品麻豆91 | 午夜精品电影 | 97成人免费视频 | 就要干b | 免费av电影网站 | 精品中文字幕在线观看 | 久久久久久高清 | 99在线视频精品 | 久久视影 | 日操干| 黄色av电影免费观看 | 色婷婷中文 | 久久99精品久久只有精品 | 91av美女| 欧美一级性生活片 | 中文字幕在线播放一区二区 | 成人 亚洲 欧美 | av品善网| 成人网在线免费视频 | 午夜精品av在线 | 国产黄a三级 | 久草在线手机视频 | 中文字幕久久精品亚洲乱码 | 久一在线 | 视频在线99re | 国产色一区 | 国产精品久久久久久爽爽爽 | 在线电影a | 欧美在线1区 | 日韩不卡高清 | 国产自产在线视频 | 少妇精品久久久一区二区免费 | 在线超碰av | 最近更新好看的中文字幕 | av中文电影 | 2022国产精品视频 | 毛片精品免费在线观看 | 91男人影院 | 五月导航 | 黄视频网站大全 | 久久福利剧场 | 91在线观看视频网站 | 国产精品com | 91视频这里只有精品 | 黄色av播放| 88av视频| 精品视频区 |