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

為什么要理解類加載?遇到這種問題就知道書到用時方恨少了

數據庫 MySQL
究竟是哪一行呢?本地可以調試的話很簡單,Debug跟蹤一下,但是預發布環境不能Debug呀!當然其實有些公司網是通的,可以做遠程Debug,更多的是一個規范的問題。

1、問題背景

我們項目中引入了sharding-jdbc,本機運行、開發環境運行、測試環境運行都沒有問題,結果到了預發布環境發生了一個異常:

Cannot support database type 'MySQL' at org.apache.shardingsphere.sql.parser.core.parser.SQLParserFactory.newInstance(SQLParserFactory.java:55) 
at org.apache.shardingsphere.sql.parser.core.parser.SQLParserExecutor.towPhaseParse(SQLParserExecutor.java:55) 
at org.apache.shardingsphere.sql.parser.core.parser.SQLParserExecutor.execute(SQLParserExecutor.java:47) 
at org.apache.shardingsphere.sql.parser.SQLParserEngine.parse0(SQLParserEngine.java:79) 
at org.apache.shardingsphere.sql.parser.SQLParserEngine.parse(SQLParserEngine.java:61) 
at org.apache.shardingsphere.underlying.route.DataNodeRouter.createRouteContext(DataNodeRouter.java:97) 
at org.apache.shardingsphere.underlying.route.DataNodeRouter.executeRoute(DataNodeRouter.java:89) 
at org.apache.shardingsphere.underlying.route.DataNodeRouter.route(DataNodeRouter.java:76) 
at org.apache.shardingsphere.underlying.pluggble.prepare.PreparedQueryPrepareEngine.route(PreparedQueryPrepareEngine.java:54)

而我們除了本機環境各人使用上有些差異外,開發環境運行、測試環境運行和預發布環境上只有MySQL服務端版本是不同的,雖然是報錯上看和MySQL服務端并沒有直接關系,但我們還是在開發環境還原了預發布環境的MySQL服務端版本,還原之后開發環境并沒有復現問題。

這就非常詭異了。也給我們解決帶來了一定的技術挑戰:不能通過本地調試或者加JVM參數來做進一步驗證。

以下就是我們的排查過程。

2、源碼分析

既然有明確的報錯日志,首先要進行代碼分析:

SQLParserFactory.newInstance(SQLParserFactory.java:55)

跟進這一行報錯的源碼:

public static SQLParser newInstance(final String databaseTypeName, final String sql) {
      for (SQLParserConfiguration each : NewInstanceServiceLoader.newServiceInstances(SQLParserConfiguration.class)) {
          if (each.getDatabaseTypeName().equals(databaseTypeName)) {
              return createSQLParser(sql, each);
          }
      }
      throw new UnsupportedOperationException(String.format("Cannot support database type '%s'", databaseTypeName));
  }

第7行拋出了日志中的異常。這說明問題就發生在2、3、4這三行中的一行。

究竟是哪一行呢?本地可以調試的話很簡單,Debug跟蹤一下,但是預發布環境不能Debug呀!當然其實有些公司網是通的,可以做遠程Debug,更多的是一個規范的問題。

在不能Debug的前提下,我把這三行代碼拷貝出來,分步打日志,再放到預發布環境運行:

try{
    log.warn("ShardingDebug test=1==============================begin");
    for (SQLParserConfiguration each : NewInstanceServiceLoader.newServiceInstances(SQLParserConfiguration.class)) {
        log.warn("ShardingDebug test=2==============================each:{}", each);
        if (each.getDatabaseTypeName().equals("MySQL")) {
            log.warn("ShardingDebug test=3==============================equals:{}", each);
            CodePointCharStream codePointCharStream = CharStreams.fromString("select version()");
            log.warn("ShardingDebug test=4==============================codePointCharStream:{}", codePointCharStream);
            // 這次存在
            Lexer lexer = null;
            try {
                log.warn("ShardingDebug test=5.0==============================MySQLLexer:{}", each.getLexerClass().getName());
                log.warn("ShardingDebug test=5.1==============================MySQLLexer:{}", each.getLexerClass().getConstructor(CharStream.class).getName());
                SQLLexer sqlLexer = each.getLexerClass().getConstructor(CharStream.class).newInstance(codePointCharStream);
                log.warn("ShardingDebug test=5.2==============================sqlLexer:{}, isInstance:{}", sqlLexer, sqlLexer instanceof Lexer);
                lexer = (Lexer) each.getLexerClass().getConstructor(CharStream.class).newInstance(codePointCharStream);
                log.warn("ShardingDebug test=5==============================lexer:{}", lexer);
            } catch (InstantiationException e) {
                log.error("ShardingDebug test=6==============================lexer:{}", lexer, e);
            } catch (IllegalAccessException e) {
                log.error("ShardingDebug test=7==============================lexer:{}", lexer, e);
            } catch (InvocationTargetException e) {
                log.error("ShardingDebug test=8==============================lexer:{}", lexer, e);
            } catch (NoSuchMethodException e) {
                log.error("ShardingDebug test=9==============================lexer:{}", lexer, e);
            }
            CommonTokenStream lexerCommonTokenStream = new CommonTokenStream(lexer);
            log.warn("ShardingDebug test=10==============================lexerCommonTokenStream:{}", lexerCommonTokenStream);
            SQLParser sqlParser = null;
            try {
                log.warn("ShardingDebug test=11.0==============================sqlParser:{}", each.getParserClass());
                log.warn("ShardingDebug test=11.1==============================sqlParser:{}", each.getParserClass().getConstructor(TokenStream.class));
                sqlParser = each.getParserClass().getConstructor(TokenStream.class).newInstance(lexerCommonTokenStream);
                log.warn("ShardingDebug test=11==============================sqlParser:{}", sqlParser);
            } catch (InstantiationException e) {
                log.warn("ShardingDebug test=12==============================sqlParser:{}", sqlParser, e);
            } catch (IllegalAccessException e) {
                log.warn("ShardingDebug test=13==============================sqlParser:{}", sqlParser, e);
            } catch (InvocationTargetException e) {
                log.warn("ShardingDebug test=14==============================sqlParser:{}", sqlParser, e);
            } catch (NoSuchMethodException e) {
                log.warn("ShardingDebug test=15==============================sqlParser:{}", sqlParser, e);
            }
            break;
        }
    }
} catch (Exception ex) {
    log.error("ShardDebugJob failed", ex);
}
}

我把這三行代碼拆解的非常細,希望盡量減少發布,排查出問題的原因。

結果日志只打印了第一行,剩下的都沒打印。說明沒有進入for循環。也就說明了。

NewInstanceServiceLoader.newServiceInstances(SQLParserConfiguration.class)

沒有加載到東西。再看這一行的源碼:

public static <T> Collection<T> newServiceInstances(final Class<T> service) {
      Collection<T> result = new LinkedList<>();
      if (null == SERVICE_MAP.get(service)) {
          return result;
      }
      for (Class<?> each : SERVICE_MAP.get(service)) {
          result.add((T) each.newInstance());
      }
      return result;
  }

這說明SERVICE_MAP里沒有對應的實現類。再看SERVICE_MAP賦值的源碼:

public static <T> void register(final Class<T> service) {
    for (T each : ServiceLoader.load(service)) {
        registerServiceClass(service, each);
    }
}


private static <T> void registerServiceClass(final Class<T> service, final T instance) {
    Collection<Class<?>> serviceClasses = SERVICE_MAP.get(service);
    if (null == serviceClasses) {
        serviceClasses = new LinkedHashSet<>();
    }
    serviceClasses.add(instance.getClass());
    SERVICE_MAP.put(service, serviceClasses);
}

本質上值都是ServiceLoader.load(service)加載來的。這就要考察Java功力了。

這行代碼本質是什么呢?

3、原理分析

本質是使用了Java的SPI功能。

Java SPI(Service Provider Interface)是一種服務發現機制,它允許服務提供者為API定義標準接口,而實現者可以通過配置文件來注冊自己的實現。如果在使用SPI時出現“java SPI沒有加載到實現類”的錯誤,通常意味著以下幾種情況之一:

  • 實現類沒有正確地被打包到jar中,或者沒有被放置在正確的目錄下。
  • 配置文件(通常是META-INF/services/接口全限定名)中沒有列出實現類的全限定名。
  • 類加載器沒有正確加載到實現類的路徑。

解決方法:

  • 確保實現類的jar包已經被正確打包,并且實現類的包結構和接口包結構一致。
  • 檢查META-INF/services目錄下對應接口的文件中是否有實現類的全限定名。
  • 如果是在web容器或者OSGi環境中,確保類加載器的路徑設置正確,實現類應該可見。
  • 如果使用的是第三方庫,確保依賴已經正確引入。
  • 清除可能存在的緩存,比如重新編譯或重啟應用。

這次的問題是屬于哪一種呢?很遺憾,都不是。我為了確認問題,將預發布環境打的運行jar包下載到本地,解壓查看確認,都是沒有問題的。

為了確認可以加載到,我再一次發布預發布環境,這一次手動執行加載看看:

Class<?> mySQLParserConfiguration = Thread.currentThread().getContextClassLoader().loadClass(MySQLParserConfiguration.class.getName());
log.info("ShardingDebug test=0.0==============================loadClass:{}", mySQLParserConfiguration);

結果正常打印了實現類的全限定名。

這里為什么我會想到Thread.currentThread().getContextClassLoader()這個類加載器呢?很簡單。這個類加載器就是ServiceLoader.load源碼里使用的類加載器。

@CallerSensitive
public static <S> ServiceLoader<S> load(Class<S> service) {
    ClassLoader cl = Thread.currentThread().getContextClassLoader();
    return new ServiceLoader<>(Reflection.getCallerClass(), service, cl);
}

4、問題解決

到這里,解決方案也呼之欲出:既然是可以加載到的,那應該就是沒有在注冊服務代碼執行前加載。手動讓類加載在注冊服務前運行即可。

Class<?> mySQLParserConfiguration = Thread.currentThread().getContextClassLoader().loadClass(MySQLParserConfiguration.class.getName());
log.info("ShardingDebug test=0.0==============================loadClass:{}", mySQLParserConfiguration);
try {
    NewInstanceServiceLoader.register(SQLParserConfiguration.class);
} catch (Throwable e) {
    log.error("ShardingDebug test=0.011==============================register", e);
}

先執行這個,再執行最初的:

NewInstanceServiceLoader.newServiceInstances(SQLParserConfiguration.class)

就可以加載到對應的實例了。

4、分析總結

這次問題出現在sharding-jdbc的SQL解析階段,可以通過源碼上下文看到問題發生在與MySQL服務端交互之前,可排除受服務端的影響。并且可以確定問題發生在JVM內部。

可通過ServiceLoader.load(service)確定是使用了Java的SPI機制時發生問題。SPI的本質是通過META-INF/services目錄下對應接口的文件找到實現類。

驗證實現類可被JVM正常加載我使用了與源碼相同的類加載器并發布到預發布環境進行驗證。因為不同類加載器有不同的使用條件。比如:

ClassLoader.getSystemClassLoader()
在本機會正常運行,但是服務器上會因為運行的是打好的 jar 包,路徑發生變化,服務器上運行報「找不到類」異常。

整個排查過程也有一些怎樣搜索答案的思考,比如只是根據最初的異常來搜索,發現網上搜的都不是本質問題。后來雖然我用更接近本質的問題:

「找不到spi的實現類怎么解決」也沒找到正確的答案,但是問題是更接近真相的。
責任編輯:武曉燕 來源: 編程一生
相關推薦

2021-04-21 07:37:19

JVM復盤 日志

2024-04-25 08:21:36

Java對象計數法

2017-07-27 11:15:24

云存儲攝像機SD卡

2023-09-28 10:21:44

CSS前端

2018-09-28 09:20:56

輸入法

2024-12-02 09:01:23

Java虛擬機內存

2019-05-16 08:10:42

無線路由器WiFi網絡

2011-04-25 09:37:03

2020-05-07 10:44:05

MySQL數據庫程序員

2021-09-05 07:55:36

DDIA Raft 場景

2015-08-06 10:14:15

造輪子facebook

2022-08-15 08:27:02

基站網絡

2013-03-12 14:30:09

Ubuntu操作系統

2024-04-03 09:23:31

ES索引分析器

2018-06-21 09:30:50

比特幣區塊鏈擴容

2010-07-13 10:56:43

Perl print

2021-08-31 07:57:21

輪詢鎖多線編程Java

2021-02-11 13:30:56

Nodejs源碼c++

2019-11-27 10:25:15

SaaS云端IT架構

2024-10-17 16:41:57

KafkaZooKeeper
點贊
收藏

51CTO技術棧公眾號

亚洲国产精品无码观看久久| 日韩精品丝袜在线| 国产精品久久久久av| 在线免费看黄视频| 国产一精品一av一免费爽爽| 亚洲一区二区三区中文字幕在线| 久久久久综合一区二区三区| 亚洲一区在线观| 伊人激情综合| 最近免费中文字幕视频2019| 久久久久无码国产精品一区李宗瑞| 欧洲视频在线免费观看| 久久久久国产精品一区二区| 久久久国产精品免费| 国产又黄又粗又猛又爽的视频| 国产精品刘玥久久一区| 丁香天五香天堂综合| 国产精品88a∨| 久久亚洲精品大全| 私库av在线播放| 欧美性生活一级| 精品福利在线视频| 99在线国产| 亚洲国产无线乱码在线观看 | 日韩一卡二卡三卡国产欧美| www.com毛片| 激情网站在线| 亚洲欧洲精品一区二区三区 | 国产精品视频最多的网站| 国产在线视频在线观看| 在线一区二区三区视频| 欧美日韩在线三级| 亚洲一卡二卡区| 天天操天天操天天| 国产成人在线视频播放| 国产欧美日韩免费| 午夜一级黄色片| 国产精品老牛| …久久精品99久久香蕉国产| 久久久久久久久久久久久久免费看 | 亚洲国产日韩欧美综合久久| 国产精品探花在线播放| www在线观看播放免费视频日本| 久久综合资源网| 国产精品久久久久久免费观看| 国产精品爽爽久久久久久| 99久久久国产精品美女| 国产一区二区三区丝袜| 给我看免费高清在线观看| 国产劲爆久久| 91九色02白丝porn| 国产精品欧美激情在线观看| av国产在线观看| 国产人成亚洲第一网站在线播放 | 黄色av网站在线免费观看| av电影在线观看完整版一区二区| 99久久伊人精品影院| 国产三级视频在线播放| 国产精品77777| wwwxx欧美| 男人天堂综合网| 99久久国产综合色|国产精品| 黑人巨大精品欧美一区二区小视频 | 91综合国产| 欧美日韩第一区日日骚| 182午夜视频| 午夜日韩影院| 日韩av在线免费观看一区| 日本黄色动态图| 亚洲色图丝袜| 日韩中文字幕不卡视频| 顶臀精品视频www| 黄色精品网站| 日韩男女性生活视频| 伊人成年综合网| 精品一二三四区| 欧美亚洲成人xxx| 国产午夜精品久久久久| 秋霞电影一区二区| 91精品国产一区二区三区动漫 | www插插插无码免费视频网站| 女同一区二区免费aⅴ| 欧美日韩免费在线观看| 最新中文字幕2018| 99久久香蕉| 在线不卡免费欧美| 91精品人妻一区二区三区四区| 美女一区二区在线观看| 欧美一激情一区二区三区| 潘金莲一级淫片aaaaa| 亚洲精品456| 美女扒开尿口让男人操亚洲视频网站 | 欧美亚视频在线中文字幕免费| 欧美精品色一区二区三区| 无人码人妻一区二区三区免费| 久久精品福利| 日韩色av导航| 久久久久久少妇| 精品亚洲porn| 欧美一级二级三级| av免费在线观看网站| 精品久久久免费| 亚洲天堂网站在线| 国产精品亚洲片在线播放| 久久人人爽人人爽爽久久| 久久精品一二区| 蜜乳av一区二区三区| 欧美中文字幕在线播放| 97超碰人人模人人人爽人人爱| 99久久综合精品| 男同互操gay射视频在线看| 欧美momandson| 精品国产免费人成电影在线观看四季 | 99久久这里有精品| 亚洲视频自拍偷拍| 日韩av无码中文字幕| 欧美fxxxxxx另类| 国产成人+综合亚洲+天堂| www.色呦呦| 国产精品国产三级国产aⅴ无密码| 波多野结衣乳巨码无在线| 亚洲我射av| 一本色道久久88综合亚洲精品ⅰ| 国产精久久久久久| 国产一区二区三区免费看| 91精品综合视频| 国产大学生校花援交在线播放| 亚洲国产日韩综合久久精品| 色噜噜狠狠一区二区三区狼国成人| 亚欧洲精品视频在线观看| 欧美激情一二区| 久久久久久久久久久影院| 国产精品一区二区久久不卡| 亚洲欧美日韩精品综合在线观看| 久草中文在线| 欧美日韩中文一区| 亚洲精品国产91| 久久男女视频| 欧美大香线蕉线伊人久久| 91超碰在线免费| 精品999在线播放| 久久久久黄色片| 国产传媒欧美日韩成人| 2022中文字幕| 中文字幕在线视频久| 亚洲成成品网站| 日本熟妇成熟毛茸茸| 丁香一区二区三区| 久久久久免费看黄a片app| 国产精品三p一区二区| 欧美大片免费观看| 日韩性xxxx| 欧美日韩亚洲精品内裤| 亚洲精品视频大全| 美女精品网站| 亚洲高清视频一区| 色综合一区二区日本韩国亚洲 | 欧美国产日韩综合| 成人激情综合网站| 欧美不卡在线播放| 欧美黑人巨大videos精品| 欧美亚州一区二区三区| 嫩草研究院在线观看| 国产精品久久久久久久岛一牛影视| 亚洲欧美另类动漫| 99精品视频在线观看免费播放 | 97在线公开视频| 亚洲青青青在线视频| 国产精品333| 欧美人与拘性视交免费看| 国产精品v片在线观看不卡| 日韩伦理在线观看| 日韩一级免费观看| 日本中文字幕免费| 国产视频一区不卡| www,av在线| 日韩一级在线| 亚洲精品视频一二三| 久久国际精品| 一区二区三区日韩在线| 91精品国产乱码久久久| 亚洲视频一二区| 欧产日产国产精品98| 视频一区视频二区在线观看| 亚洲AV无码成人精品一区| 99精品中文字幕在线不卡 | 中文字幕日日夜夜| 一区二区三区四区五区视频在线观看| 日本精品一区二区三区四区| 欧美码中文字幕在线| 91精品国产高清久久久久久91裸体 | 中文字幕日韩精品一区| 中文字幕一区二区三区人妻在线视频 | 久久久久久免费精品| 激情在线视频| 日韩一区二区三| 天干夜夜爽爽日日日日| 亚洲精品日韩一| 少妇精品一区二区三区| 激情av一区| 手机在线观看国产精品| 亚洲精品在线播放| 国产精品视频久久久| 6699嫩草久久久精品影院| 中文字幕在线成人| 亚洲av成人精品一区二区三区在线播放 | 精品国产一区二区三区2021| 欧美一区深夜视频| 青草在线视频| 色阁综合伊人av| 五月婷婷免费视频| 日韩视频一区二区| 91极品身材尤物theporn| 欧美丝袜一区二区| 在线看成人av| 亚洲日本在线天堂| 国产主播av在线| 久久久久久97三级| 在线精品一区二区三区| 国产999精品久久久久久| 青青在线免费视频| 日韩精品永久网址| 欧美一区二区三区成人久久片| 看全色黄大色大片免费久久久| 亚洲专区国产精品| 2020国产精品小视频| 国产精品高潮视频| 国产精品专区免费| 7m第一福利500精品视频| 亚洲精品天堂| 九色91av视频| 日本韩国精品一区二区| 日韩欧美高清在线| 国产欧美一级片| 欧美疯狂性受xxxxx喷水图片| 高潮无码精品色欲av午夜福利| 91激情在线视频| 在线免费观看国产精品| 色中色一区二区| www.xxxx日本| 中文字幕色av一区二区三区| 免费黄色国产视频| 成人免费观看视频| 国产一级免费大片| 国产麻豆精品在线| 人妻换人妻仑乱| 国产精品18久久久久久久久久久久| 911av视频| 国产精品白丝jk黑袜喷水| 美女日批在线观看| 国产a视频精品免费观看| 精品伦一区二区三区| 成人免费观看视频| 91久久免费视频| 久久精品亚洲麻豆av一区二区| 欧洲美一区二区三区亚洲| 国产午夜亚洲精品午夜鲁丝片| 国产一二三四区在线| 亚洲国产精品成人综合| 欧美肥妇bbwbbw| 依依成人精品视频| 国产精品第九页| 日韩欧美国产骚| 在线观看黄色国产| 日韩欧美久久久| 亚洲日本国产精品| 中文国产亚洲喷潮| 久草在线视频资源| 欧美一级视频免费在线观看| 国产私拍福利精品视频二区| 91精品国产综合久久男男| 深夜激情久久| 久久国产精品免费一区| 超碰成人久久| 久久久久久99| 青青草91久久久久久久久| 男女啪啪的视频| 亚洲第一毛片| 日本免费观看网站| 高清在线不卡av| a毛片毛片av永久免费| 国产精品九色蝌蚪自拍| 久草视频免费在线播放| 国产精品乱码妇女bbbb| 强乱中文字幕av一区乱码| 日韩欧美在线网址| 国产女无套免费视频| 日韩av中文字幕在线免费观看 | 欧美俄罗斯性视频| 亚洲高清黄色| 99re在线视频上| 欧美亚洲高清| 人妻久久久一区二区三区| 免费成人你懂的| 国产精品久久久免费观看| 国产精品久久精品日日| 久久国产精品免费看| 欧美一区二区精品| 国产高清在线看| 97精品久久久| 国产精品成人**免费视频| 欧美精品一区二区三区在线四季| 一区二区三区四区电影| 亚洲精品中文字幕无码蜜桃| 国产精品白丝jk白祙喷水网站| 亚洲精品色午夜无码专区日韩| 一区二区三区日韩欧美精品| 亚洲精品91天天久久人人| 亚洲第一av网| 日韩特级毛片| 亚洲va国产va天堂va久久| 精品久久91| 北条麻妃在线一区| 99久久久久久| 久久中文字幕在线观看| 欧美日韩国产免费| 福利视频在线导航| 国语自产精品视频在线看一大j8 | 国产精品suv一区二区三区| 日韩欧美专区在线| 国产剧情在线| 国产欧美一区二区三区视频 | 久久亚洲精品石原莉奈| 亚洲福利视频网| 深夜国产在线播放| 91免费看国产| 婷婷伊人综合| 中文字幕第88页| 国产精品美女久久福利网站 | 制服丝袜中文字幕亚洲| 在线免费观看黄| 国产精品久久久亚洲| 国产午夜一区| 欧美 日韩 国产 激情| 久久这里都是精品| 在线看成人av| 亚洲精品久久7777777| 成人黄色动漫| 好吊妞www.84com只有这里才有精品| 欧美日韩一区二区国产| 免费黄视频在线观看| 亚洲综合999| 成人黄色在线观看视频| 欧美高清无遮挡| 国产成人高清精品免费5388| 国产freexxxx性播放麻豆| 国产+成+人+亚洲欧洲自线| 日本少妇激情视频| 亚洲精品白浆高清久久久久久| а√在线中文在线新版 | 五月精品视频| 在线免费黄色网| 亚洲欧美激情小说另类| 亚洲av无码一区二区三区dv| 欧美激情在线视频二区| 91精品短视频| 欧美深夜福利视频| 久久看人人爽人人| 色老头在线视频| 久久精品人人爽| 亚洲3区在线| 男人和女人啪啪网站| 久久久国产一区二区三区四区小说| 国产主播第一页| 久久精品国产亚洲精品2020| 免费一级欧美在线大片| 波多野结衣av一区二区全免费观看| 成人免费毛片嘿嘿连载视频| 久久一区二区三区视频| 日韩精品久久久久久福利| 日本一道高清亚洲日美韩| 日韩人妻精品一区二区三区| 成人黄色国产精品网站大全在线免费观看 | 免费成人av电影| 国产在线观看精品| 激情偷拍久久| 亚洲一区二区三区日韩| 91精品国产综合久久精品app| 婷婷色在线资源| 日本免费高清不卡| 国产麻豆精品视频| 特级做a爱片免费69| 少妇精69xxtheporn| 国产精品nxnn| 黄色手机在线视频| 精品福利樱桃av导航| 一本一道波多野毛片中文在线| 国产精品对白一区二区三区| 先锋影音久久久| 2021亚洲天堂| 伊人伊成久久人综合网站| 亚洲一区电影| 欧美私人情侣网站| 亚洲老司机在线| 免费国产在线视频| 97影院在线午夜| 喷白浆一区二区| 日韩激情一区二区三区| 久久久精品一区| av一区二区在线观看|