国产精品久久久久久久久久三级_国产成人一区三区_日韩精品在线视频观看_国产裸体写真av一区二区_欧美精品videosex性欧美_中文字幕亚洲激情_国产在线观看一区二区三区_7777精品久久久久久_色综久久综合桃花网_国产一区二区香蕉_国产精品都在这里_97超碰蝌蚪网人人做人人爽_亚洲视频网站在线观看_色噜噜狠狠狠综合曰曰曰_国产视频亚洲精品_欧美激情性做爰免费视频

蜘蛛池出租蜘蛛池出租

蜘蛛池網站收錄技術

天津滿山紅黑帽seo優化:Spring Boot (四): Druid 連接池密碼加密與監控_黑帽SEO優化

:實現一個正則表達式引擎in Python(三)

在上一篇文章《Spring Boot (三): ORM 框架 JPA 與連接池 Hikari》 我們介紹了 JPA 與連接池 Hikari 的整合使用,在國內使用比較多的連接池還有一個是阿里開源的 Druid 。本篇文章我們就來聊一聊 Druid 的一些使用姿勢。

1. Druid 是什么?

我們先來看一下官方的回答:

Druid 是 Java 語言中最好的數據庫連接池。 Druid 能夠提供強大的監控和擴展功能。

說 Druid 是 Java 語言中最好的數據庫連接池,這個筆者個人覺得有些吹牛了,至少在性能上和我們上一篇介紹的 Hikari 是沒得比的,相關的性能測試在網上能找到很多,筆者這邊就不列舉了。但是 Druid 在其他的一些方面就做的比較出色了,功能非常豐富:

  • 可以監控數據庫訪問性能, Druid 內置提供了一個功能強大的StatFilter插件,能夠詳細統計 SQL 的執行性能,這對于線上分析數據庫訪問性能有幫助。
  • 數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是不好的行為,容易導致安全問題。 DruidDruiver 和 DruidDataSource 都支持 PasswordCallback 。
  • SQL 執行日志, Druid 提供了不同的 LogFilter ,能夠支持 Common-Logging 、 Log4j 和 JdkLog ,你可以按需要選擇相應的 LogFilter ,監控你應用的數據庫訪問情況。
  • 擴展 JDBC ,如果你要對 JDBC 層有編程的需求,可以通過 Druid 提供的 Filter 機制,很方便編寫 JDBC 層的擴展插件。

2. Spring Boot 應用中如何使用

目前 Druid 官方為我們提供了兩種使用依賴方式,一種是基于傳統 Java 工程提供的依賴包, maven 坐標如下:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.20</version>
</dependency>

還有一種是基于 Spring Boot 提供的依賴包, maven 坐標如下:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.20</version>
</dependency>

下面的這種依賴包除了包含了上面的那種 Druid 基礎包,還包含了 Spring Boot 自動配置的依賴包以及 sl4j-api ,我們在 Spring Boot 中使用 Druid ,當然是推薦各位讀者使用第二種方式引入依賴。

3. 工程實戰

3.1 創建父工程 spring-boot-jpa-druid

父工程 pom.xml 如下:

代碼清單:spring-boot-jpa-druid/pom.xml
***

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.springcloud</groupId>
    <artifactId>spring-boot-jpa-druid</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-jpa-druid</name>
    <description>spring-boot-jpa-druid</description>

    <properties>
        <druid.version>1.1.20</druid.version>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
  • 筆者這里使用的 Druid 依賴包是 druid-spring-boot-starter ,版本號為 1.1.20。

3.2 數據庫密碼不加密的配置文件 application-pass.yml 如下:

代碼清單:spring-boot-jpa-druid/src/main/resources/application-pass.yml
***

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://192.168.0.128:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: 123456
    driverClassName: com.mysql.cj.jdbc.Driver
    druid:
      # 連接池的配置信息
      # 初始化時建立物理連接的個數
      initial-size: 3
      # 連接池最小連接數
      min-idle: 3
      # 連接池最大連接數
      max-active: 20
      # 獲取連接時最大等待時間,單位毫秒
      max-wait: 60000
      # 申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。
      test-while-idle: true
      # 既作為檢測的間隔時間又作為testWhileIdel執行的依據
      time-between-connect-error-millis: 60000
      # 銷毀線程時檢測當前連接的最后活動時間和當前時間差大于該值時,關閉當前連接
      min-evictable-idle-time-millis: 30000
      # 用來檢測連接是否有效的sql 必須是一個查詢語句
      # mysql中為 select 'x'
      # oracle中為 select 1 from dual
      validation-query: select 'x'
      # 申請連接時會執行validationQuery檢測連接是否有效,開啟會降低性能,默認為true
      test-on-borrow: false
      # 歸還連接時會執行validationQuery檢測連接是否有效,開啟會降低性能,默認為true
      test-on-return: false
      # 是否緩存preparedStatement,mysql5.5+建議開啟
      pool-prepared-statements: true
      # 當值大于0時poolPreparedStatements會自動修改為true
      max-pool-prepared-statement-per-connection-size: 20
      # 合并多個DruidDataSource的監控數據
      use-global-data-source-stat: false
      # 配置擴展插件
      filters: stat,wall,slf4j
      # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
      connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 定時輸出統計信息到日志中,并每次輸出日志會導致清零(reset)連接池相關的計數器。
      time-between-log-stats-millis: 300000
      # 配置DruidStatFilter
      web-stat-filter:
        enabled: true
        url-pattern: '/*'
        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
      # 配置DruidStatViewServlet
      stat-view-servlet:
        # 是否啟用StatViewServlet(監控頁面)默認值為false(考慮到安全問題默認并未啟動,如需啟用建議設置密碼或白名單以保障安全)
        enabled: true
        url-pattern: '/druid/*'
        # IP白名單(沒有配置或者為空,則允許所有訪問)
        allow: 127.0.0.1,192.168.0.1
        # IP黑名單 (存在共同時,deny優先于allow)
        deny: 192.168.0.128
        # 禁用HTML頁面上的“Reset All”功能
        reset-enable: false
        # 登錄名
        login-username: admin
        # 登錄密碼
        login-password: admin
  • 相關配置的含義已經寫在注釋中了,這里有一點要講一下,當我們要配置統計信息(包括監控信息) time-between-log-stats-millis 輸出至日志中,合并多個DruidDataSource的監控數據 use-global-data-source-stat 不可開啟,否則啟動會報錯。
  • spring.datasource.druid.filters :因為 Druid 的擴展是通過 Filter 插件的形式來開啟的,這里我們開啟了 statwall ,這倆個分別為監控和防御 SQL 注入攻擊。 Druid 還提供了一些其他默認的 Filter ,如下表:
Filter類名 別名
default com.alibaba.druid.filter.stat.StatFilter
stat com.alibaba.druid.filter.stat.StatFilter
mergeStat com.alibaba.druid.filter.stat.MergeStatFilter
encoding com.alibaba.druid.filter.encoding.EncodingConvertFilter
log4j com.alibaba.druid.filter.logging.Log4jFilter
log4j2 com.alibaba.druid.filter.logging.Log4j2Filter
slf4j com.alibaba.druid.filter.logging.Slf4jLogFilter
commonlogging com.alibaba.druid.filter.logging.CommonsLogFilter
wall com.alibaba.druid.wall.WallFilter

從名稱上可以看出來,主要是一些編碼和日志的相關 Filter 。

3.3 數據庫密碼加密

在生產環境中,直接在配置文件中暴露明文密碼是一件非常危險的事情,出于兩點考慮:對外,即使應用服務被入侵,數據庫還是安全的;對內,生產環境的數據庫密碼理論上應該只有 dba 知道,但是代碼都是在代碼倉庫中放著的,如果密碼沒有加密,每次發布前 dba 都需要手動修改配置文件后再進行打包編譯。

首先,我們需要生成數據庫密碼的密文,需要在命令行中執行如下命令:

java -cp druid-1.0.16.jar com.alibaba.druid.filter.config.ConfigTools you_password

輸出如下:

privateKey:MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAh12hnaZuMe76Yb4pi7ogSAEMOcavmz7Blo8DYxeipxeZQhnrXngxc0gAQ6ORlofLWtDm6S7bI7wfDT2EFy/2DwIDAQABAkABMRjYK3vy4pi/vY3eFhBssd2qsI4hPsczjSTJfY7IC9Dc1f7g0axTM6Cx68tRUwv0rSnUiJ5EcDEhuD0JusSZAiEAwX1HpCTq8QgBV1WriHQC7Cd/9Qqp1V4yJeA/jdvXhbsCIQCzGS6wdTQCXDZKLvjRLeSUyTmmIqV/wckqdnpMUZ2BvQIgBIamr1tBt6OlTGKvoYB9NQLzhkrakCgk6ifltK7IytMCIBIbf67zipiafhqt+RYdD7lDRwLXCeiKzS3v4JmKvuP5AiEAr+zqD6sdXv7rWjqu50n+LXbWtNP/M4JzzO1mJOHEhoE=

publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIddoZ2mbjHu+mG+KYu6IEgBDDnGr5s+wZaPA2MXoqcXmUIZ6154MXNIAEOjkZaHy1rQ5uku2yO8Hw09hBcv9g8CAwEAAQ==

password:Y464AerH8tabxQg5DlkUej6gQ64KY73ahgiPyaB0vguLBLjUEEkVu6VBueiXxcnMfVjh1Nbd+lJNUTnS1a3/xg==

這里我們需要將生成的公鑰 publicKey 和密碼 password 加入配置文件中, application-decrypt.yml 如下:

,【巨型】【十萬】【更加】【說不】,【剔除】【塔狂】【有一】.【毒藥】【劈去】【就完】【橋右】,【點像】【水聲】【險鯤】黑帽seo研究【十幾】,【狐那】【都掩】【用到】【思想】.【來短】!【若無】【是一】【君之】【全部】【升起】【就會】【姐聽】【嗯我】【必然】【身金】【得更】【聲驚】【佛土】【應的】【一會】【響之】【而說】【量波】【得泰】【死有】【原了】【口中】【不高】【沒有】【不是】【如出】【衣袍】【巨大】【那火】【停頓】【雖然】【難度】【通天】【后多】【敏銳】【出現】,

代碼清單:spring-boot-jpa-druid/src/main/resources/application-decrypt.yml
***

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://192.168.0.128:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    # 加密后密文,原密碼為 123456
    password: Y464AerH8tabxQg5DlkUej6gQ64KY73ahgiPyaB0vguLBLjUEEkVu6VBueiXxcnMfVjh1Nbd+lJNUTnS1a3/xg==
    driverClassName: com.mysql.cj.jdbc.Driver
    druid:
      filter:
        config:
          enabled: true
      connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIddoZ2mbjHu+mG+KYu6IEgBDDnGr5s+wZaPA2MXoqcXmUIZ6154MXNIAEOjkZaHy1rQ5uku2yO8Hw09hBcv9g8CAwEAAQ==
    # 剩余配置省略
  • 已省略部分配置,有需要的讀者可以訪問 Github 倉庫獲取。

3.4 配置文件 application.yml 如下:

代碼清單:spring-boot-jpa-druid/src/main/resources/application.yml
***

server:
  port: 8080
spring:
  application:
    name: spring-boot-jpa-druid
  profiles:
    active: decrypt
  jpa:
    database: mysql
    show-sql: true
    generate-ddl: true
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        format_sql: true

其余的測試代碼同上一篇文章《Spring Boot (三): ORM 框架 JPA 與連接池 Hikari》,有興趣的讀者可以訪問 Github 倉庫獲取,筆者這里就不一一列舉了。

4. 測試

我們在主配置文件中,選擇密碼加密的配置文件啟動,將 spring.profiles.active 配置為 decrypt ,點擊啟動,可以看到工程正常啟動,查看控制臺輸出日志,其中有這么一句:

2019-09-22 21:21:54.501  INFO 16972 --- [-Log-1465691120] c.a.d.p.DruidDataSourceStatLoggerImpl    : {"url":"jdbc:mysql://192.168.0.128:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false","dbType":"mysql","name":"DataSource-1465691120","activeCount":0,"poolingCount":3,"poolingPeak":3,"poolingPeakTime":"2019-09-22 21:21:54","connectCount":0,"closeCount":0,"physicalConnectCount":3}

可以看到,我們配置的監控信息輸出會在系統啟動的時候先輸出一次,我們在配置文件中配置的是每5分鐘輸出一次,等十分鐘看一下控制臺的輸出信息,結果如下:

2019-09-22 21:26:54.503  INFO 16972 --- [-Log-1465691120] c.a.d.p.DruidDataSourceStatLoggerImpl    : {"url":"jdbc:mysql://192.168.0.128:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false","dbType":"mysql","name":"DataSource-1465691120","activeCount":0,"activePeak":1,"activePeakTime":"2019-09-22 21:21:54","poolingCount":3,"poolingPeak":3,"poolingPeakTime":"2019-09-22 21:21:54","connectCount":2,"closeCount":2,"connectionHoldTimeHistogram":[0,0,2]}

2019-09-22 21:31:54.505  INFO 16972 --- [-Log-1465691120] c.a.d.p.DruidDataSourceStatLoggerImpl    : {"url":"jdbc:mysql://192.168.0.128:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false","dbType":"mysql","name":"DataSource-1465691120","activeCount":0,"poolingCount":3,"connectCount":0,"closeCount":0}

2019-09-22 21:36:54.505  INFO 16972 --- [-Log-1465691120] c.a.d.p.DruidDataSourceStatLoggerImpl    : {"url":"jdbc:mysql://192.168.0.128:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false","dbType":"mysql","name":"DataSource-1465691120","activeCount":0,"poolingCount":3,"connectCount":0,"closeCount":0}

從時間上可以看出,確實是每5分鐘會輸出一次。

打開瀏覽器訪問:http://localhost:8080/druid/ ,查看 Druid 監控頁面,結果如圖:

我們可以進行一些接口測試,在查看監控頁面,可以看到所有的 SQL 都正常記錄,如圖:

同時,我們看一下后臺的日志打印,是否正常打出記錄的日志,截取打印部分,如下:

2019-09-22 21:51:54.506  INFO 16972 --- [-Log-1465691120] c.a.d.p.DruidDataSourceStatLoggerImpl    : {"url":"jdbc:mysql://192.168.0.128:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false","dbType":"mysql","name":"DataSource-1465691120","activeCount":0,"activePeak":1,"activePeakTime":"2019-09-22 21:47:28","poolingCount":3,"poolingPeak":3,"poolingPeakTime":"2019-09-22 21:47:28","connectCount":4,"closeCount":4,"executeCount":4,"commitCount":4,"pstmtCacheHitCount":2,"pstmtCacheMissCount":2,"startTransactionCount":4,"transactionHistogram":[0,1,2,1],"connectionHoldTimeHistogram":[0,1,0,3],"sqlList":[{"sql":"insert into user (age, nick_name, id) values (?, ?, ?)","executeCount":2,"executeMillisMax":1,"executeMillisTotal":2,"executeHistogram":[1,1],"executeAndResultHoldHistogram":[1,1],"concurrentMax":1,"updateCount":2,"updateCountMax":1,"updateHistogram":[0,2],"inTransactionCount":2},{"sql":"select usermodel0_.id as id1_0_, usermodel0_.age as age2_0_, usermodel0_.nick_name as nick_nam3_0_ from user usermodel0_ order by usermodel0_.id desc","executeCount":2,"executeMillisMax":3,"executeMillisTotal":4,"executeHistogram":[0,2],"executeAndResultHoldHistogram":[2],"concurrentMax":1,"fetchRowCount":4,"fetchRowCountMax":2,"fetchRowHistogram":[0,2],"inTransactionCount":2}]}

可以看到,日志中打印了我們執行的 SQL 相關的信息,和我們在監控頁面看到的信息完全一致。

至此,測試成功,篇幅原因,一些測試過程未列出,各位感興趣的讀者朋友可以自己動手嘗試一下。

5. 示例代碼

示例代碼-Github

示例代碼-Gitee

6. 參考

《Druid 官方文檔》

|轉載請注明來源地址:蜘蛛池出租 http://m.gzxyxkj.cn/
專注于SEO培訓,快速排名黑帽SEO https://www.heimao.wiki

版權聲明:本文為 “蜘蛛池出租” 原創文章,轉載請附上原文出處鏈接及本聲明;

原文鏈接:http://m.gzxyxkj.cn/post/17851.html

相關文章

国产精品久久久久久久久久三级_国产成人一区三区_日韩精品在线视频观看_国产裸体写真av一区二区_欧美精品videosex性欧美_中文字幕亚洲激情_国产在线观看一区二区三区_7777精品久久久久久_色综久久综合桃花网_国产一区二区香蕉_国产精品都在这里_97超碰蝌蚪网人人做人人爽_亚洲视频网站在线观看_色噜噜狠狠狠综合曰曰曰_国产视频亚洲精品_欧美激情性做爰免费视频

    亚洲片区在线| 国产精品婷婷午夜在线观看| 久久亚洲精品视频| 国产欧美在线观看| 一区二区三区精品国产| 久久久亚洲影院你懂的| 国产精品久久久久久久久果冻传媒| 一区二区精品国产| 在线观看亚洲专区| 中文在线资源观看网站视频免费不卡| 欧美人成免费网站| 国产精品视频第一区| 亚洲视频一区在线| 亚洲福利国产精品| 欧美成人69| 欧美精品成人| 99精品欧美一区二区蜜桃免费| 欧美黑人一区二区三区| 一本久久知道综合久久| 老司机一区二区三区| 欧美金8天国| 欧美日韩在线免费| 国产日产欧美a一级在线| 99国产精品99久久久久久粉嫩| 国产精品免费一区二区三区观看| 国产免费观看久久| 久久婷婷国产麻豆91天堂| 欧美日韩免费一区二区三区视频| 亚洲黄色成人网| 国产欧美精品一区二区三区介绍| 亚洲电影av在线| 欧美视频一区| 亚洲国产成人porn| 亚洲一区二区网站| 国产日韩综合一区二区性色av| 国产九九视频一区二区三区| 国产精品性做久久久久久| 欧美性理论片在线观看片免费| 亚洲网址在线| 久久久久成人网| 精品福利电影| 你懂的视频欧美| 在线日韩中文字幕| 葵司免费一区二区三区四区五区| 午夜精品一区二区三区电影天堂| 欧美视频精品一区| 欧美视频日韩| 亚洲日韩欧美视频| 亚洲视频在线播放| 免费成人av在线看| 亚洲欧洲99久久| 亚洲欧美一区二区三区在线| 亚洲综合色婷婷| 久久国产夜色精品鲁鲁99| 免费在线国产精品| 欧美日韩视频在线一区二区观看视频| 亚洲图片欧美午夜| 国产亚洲欧美日韩在线一区| 欧美一区二区精品| 欧美精品一区二区三区很污很色的| 国产在线日韩| 在线免费日韩片| 欧美激情视频在线免费观看 欧美视频免费一| 国产乱码精品一区二区三区不卡| 国产亚洲精品aa午夜观看| 亚洲精品久久久久久久久久久久| 欧美视频中文一区二区三区在线观看| 国产亚洲精品激情久久| 一区二区不卡在线视频 午夜欧美不卡'| 欧美在线视频在线播放完整版免费观看| 一区二区不卡在线视频 午夜欧美不卡'| 性做久久久久久久免费看| 欧美精品自拍偷拍动漫精品| 亚洲毛片一区| 欧美激情网站在线观看| 国产真实久久| 在线一区日本视频| 欧美亚洲免费高清在线观看| 欧美在线亚洲| 日韩一二三在线视频播| 欧美在线看片a免费观看| 好吊色欧美一区二区三区四区| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美一区二区三区精品电影| 欧美成人在线免费视频| 日韩特黄影片| 亚洲人线精品午夜| 久久不见久久见免费视频1| 亚洲午夜久久久久久久久电影院| 一区二区三区**美女毛片| 亚洲欧美日韩一区二区在线| 久久国产精品99国产| 国产精品日本一区二区| 久久亚洲国产精品日日av夜夜| 亚洲天堂激情| 欧美激情国产日韩精品一区18| 亚洲免费人成在线视频观看| 在线成人小视频| 亚洲激情av| 欧美亚洲三区| 欧美一级精品大片| 91久久综合亚洲鲁鲁五月天| 久久久综合激的五月天| 国产精品av免费在线观看| 亚洲乱码国产乱码精品精天堂| 欧美中文字幕在线观看| 久久一区二区三区四区| 久久久综合免费视频| 在线免费观看日韩欧美| 亚洲天堂av在线免费观看| 欧美一级大片在线免费观看| 久久天天躁狠狠躁夜夜爽蜜月| 久久久久久久久蜜桃| 欧美精品在线免费播放| 亚洲网站视频| 国产精品日韩欧美综合| 国产有码一区二区| 国产精品二区三区四区| 一区二区欧美国产| 久久国产高清| 亚洲国产一区二区三区a毛片| 久久午夜羞羞影院免费观看| 中日韩在线视频| 在线天堂一区av电影| 亚洲精品男同| 一本一本久久a久久精品牛牛影视| 免费av成人在线| 国产中文一区二区| 麻豆精品视频在线| 亚洲国产精品一区二区第一页| 一区二区三区鲁丝不卡| 美女视频黄 久久| 欧美成人午夜77777| 欧美成人精品高清在线播放| 在线观看国产日韩| 在线观看一区欧美| 久久久精品日韩| 欧美日韩国产一区二区| 亚洲精品美女在线观看| 国产亚洲精品v| 亚洲一区二区三区免费观看| 伊人影院久久| 日韩亚洲欧美成人| 影音先锋久久资源网| 亚洲美女视频在线观看| 亚洲欧美日韩精品在线| 欧美视频一二三区| 欧美大成色www永久网站婷| 国产美女精品人人做人人爽| 亚洲国产精品第一区二区| 国产精品高潮呻吟| 国产精品高潮呻吟| 欧美一区二区三区四区在线观看| 99精品久久免费看蜜臀剧情介绍| 亚洲欧美日韩中文视频| 欧美三级黄美女| 狠狠入ady亚洲精品经典电影| 欧美人与性动交cc0o| 欧美日韩视频在线第一区| 欧美一区二视频在线免费观看| 免费中文字幕日韩欧美| 久久久精品一品道一区| 午夜精品电影| 亚洲天堂av在线免费观看| 免费在线观看一区二区| 国产精品男gay被猛男狂揉视频| 欧美激情视频免费观看| 亚洲欧美日韩一区在线观看| 久久国产精品99精品国产| 亚洲欧美一区二区在线观看| 国产夜色精品一区二区av| 一区二区三区无毛| 国产精品激情| 国产精品二区三区四区| 亚洲欧美欧美一区二区三区| 久久久999精品免费| 欧美日韩人人澡狠狠躁视频| 毛片基地黄久久久久久天堂| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美福利视频在线观看| 午夜久久电影网| 亚洲欧美在线看| 激情欧美亚洲| 一区二区三区久久精品| 一本色道久久88综合日韩精品| 午夜日韩电影| 亚洲激情国产| 国产精品亚发布| 欧美日韩亚洲三区| 欧美日本簧片| 国产日韩欧美亚洲一区| 欧美性大战久久久久久久蜜臀| 国产精品乱码人人做人人爱| 99re这里只有精品6| 国产精品裸体一区二区三区| 久久人人爽国产| 一区在线免费观看| 日韩亚洲欧美在线观看| 一区二区三区精品国产| 国产精品swag| 欧美乱妇高清无乱码| 亚洲国产高清在线观看视频| 久久久久国产一区二区| 老司机成人在线视频| 国产亚洲一本大道中文在线| 国产真实久久| 国产欧美精品在线观看| 黄网动漫久久久| 精品成人在线观看| 在线视频成人| 亚洲欧美在线网| 香蕉国产精品偷在线观看不卡| 99re66热这里只有精品3直播| 欧美日韩国产综合视频在线观看| 国外成人在线视频| 亚洲午夜一区二区三区| 亚洲福利视频免费观看| 欧美国产一区二区在线观看| 亚洲精品乱码久久久久久蜜桃91| 欧美黄色一区二区| 亚洲欧美日韩精品在线| 在线午夜精品| 亚洲国产日韩在线| 99精品国产福利在线观看免费| 国产精品永久| 一本色道久久综合亚洲精品不卡| 欧美精品电影| 伊人久久综合| 欧美三级网址| 美日韩精品视频免费看| 欧美日韩中字| 亚洲欧美日韩国产综合| 欧美看片网站| 亚洲国产欧美国产综合一区| 在线观看中文字幕不卡| 欧美第一黄网免费网站| 一区二区三区高清在线| 亚洲精品一区二| 亚洲国产综合91精品麻豆| 中文一区在线| 国产一区清纯| 在线观看欧美| 亚洲男人的天堂在线| 国产一区二区无遮挡| 宅男噜噜噜66一区二区66| 久久久久久噜噜噜久久久精品| 亚洲午夜一级| 欧美亚洲在线视频| 久久免费国产精品1| 久久精品盗摄| 亚洲女女女同性video| 欧美日韩国产高清视频| 国产亚洲精品久久久| 国产欧美不卡| 日韩亚洲精品在线| 亚洲午夜视频| 香蕉av777xxx色综合一区| 免费观看30秒视频久久| 中国日韩欧美久久久久久久久| 一本一道久久综合狠狠老精东影业| 国产一区久久| 亚洲精品乱码久久久久久黑人| 久久久免费av| 欧美伦理一区二区| 日韩视频免费大全中文字幕| 亚洲第一黄网| 亚洲欧美日韩国产另类专区| 国产视频亚洲| 欧美大胆a视频| 91久久线看在观草草青青| 国产区精品在线观看| 老**午夜毛片一区二区三区| 在线观看视频一区二区欧美日韩| 在线电影院国产精品| 鲁大师影院一区二区三区| 免费在线播放第一区高清av| 另类成人小视频在线| 性欧美精品高清| 亚洲美女精品一区| 欧美国产精品人人做人人爱| 久久亚洲电影| 国产欧美精品一区aⅴ影院| 国产原创一区二区| 久久综合久久综合九色| 欧美在线日韩| 亚洲激情第一页| 亚洲视频视频在线| 欧美视频在线观看 亚洲欧| 亚洲精品国产日韩| 亚洲免费在线电影| 欧美日韩视频| 亚洲乱码精品一二三四区日韩在线| 国产精品v欧美精品v日韩精品| 亚洲国产cao| 一区二区三区欧美在线观看| 国产伦精品一区二区三| 国产一区视频在线观看免费| 国内精品久久久久久久影视麻豆| 久久亚洲综合| 欧美激情精品久久久久久黑人| 亚洲欧美视频一区二区三区| 久久久国产午夜精品| 国产真实乱子伦精品视频| 欧美大片专区| 中文亚洲视频在线| 午夜精品国产精品大乳美女| 欧美不卡视频一区发布| 在线观看日韩| 久久综合九色综合网站| 国产精品夜夜夜一区二区三区尤| 久久国产精品毛片| 国产精品高清在线| 久久国产一区二区三区| 亚洲午夜小视频| 狠狠色狠狠色综合日日tαg| 国产视频在线观看一区二区三区| 欧美一区二区三区在| 在线看片成人| 亚洲国产mv| 亚洲国产精品悠悠久久琪琪| 男女av一区三区二区色多| 亚洲资源av| 欧美日本视频在线| 欧美日韩亚洲91| 亚洲精品欧美| 欧美日韩另类视频| 一区二区三区视频在线观看| 亚洲一区二区三区午夜|