久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)

     觀審美2 2024-02-02 發(fā)布于北京

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_原力計劃

     

    目錄

    SpringBoot指標監(jiān)控_添加Actuator功能

     SpringBoot指標監(jiān)控_Spring Boot Admin

     SpringBoot日志管理

    SpringBoot項目部署_項目打包

     SpringBoot項目部署_多環(huán)境配置

     SpringBoot容器化部署_安裝Docker環(huán)境

    SpringBoot容器化部署_Dockerfile制作鏡像

    SpringBoot容器化部署_Maven插件制作鏡像 

    Spring Task_定時任務

    Spring Task_入門案例 

    Spring Task_Cron表達式

     Spring Task_Cron實戰(zhàn)案例

    Spring Task_@Scheduled

    Spring Task_多線程任務


     

    SpringBoot指標監(jiān)控_添加Actuator功能

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_docker_02

     Spring Boot Actuator可以幫助程序員監(jiān)控和管理SpringBoot應 用,比如健康檢查、內(nèi)存使用情況統(tǒng)計、線程使用情況統(tǒng)計等。我 們在SpringBoot項目中添加Actuator功能,即可使用Actuator監(jiān)控 項目,用法如下:

     1.在被監(jiān)控的項目中添加Actuator起步依賴

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    2.編寫配置文件

    #開啟所有監(jiān)控端點
    management.endpoints.web.exposure.include= *

     3.訪問項目:http://localhost:8080/actuator

     通過URL可以調(diào)用actuator的功能:

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_docker_03

     SpringBoot指標監(jiān)控_Spring Boot Admin

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_spring boot_04

     Actuator使用JSON格式展示了大量指標數(shù)據(jù),不利于我們查看,我 們可以使用可視化工具Spring Boot Admin查看actuator生成指標 數(shù)據(jù)。Spring Boot Admin是一個獨立的項目,我們需要創(chuàng)建并運 行該項目。

     創(chuàng)建Spring Boot Admin服務端項目

    1.創(chuàng)建SpringBoot項目,添加SpringMVC和Spring Boot Admin服 務端起步依賴

    <dependency>  
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
    </dependency>

    2.修改配置文件

    # 端口號
    server.port=9090
    #日志格式
    logging.pattern.console=%d{HH:mm:ss.SSS} %clr(%-5level) --- [%-15thread] %cyan(%-50logger{50}):%msg%n

    3.修改啟動類

    @SpringBootApplication
    @EnableAdminServer //開啟Spring Boot Admin
    服務端
    public class MyadminApplication {
        public static void main(String[] args)
         {
          
          SpringApplication.run(MyadminApplication.class, args);
         }
    }

    連接Spring Boot Admin項目 在被監(jiān)控的項目中連接Spring Boot Admin項目,才能使用Spring Boot Admin查看指標數(shù)據(jù)。

     1.被監(jiān)控項目添加Spring Boot Admin客戶端起步依賴

    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>2.6.0</version>
    </dependency>

    2.修改配置文件

    #Spring boot admin訪問地址
    spring.boot.admin.client.url=http://localhost:9090

    3.此時Spring Boot Admin即可連接被監(jiān)控的項目

     SpringBoot日志管理

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_java_05

    SpringBoot默認使用Logback組件作為日志管理。Logback是log4j 創(chuàng)始人設計的一個開源日志組件。在SpringBoot項目中我們不需要 額外的添加Logback的依賴,因為在 spring-boot-parent 中已經(jīng)包含了 Logback的依賴。 

     1.在 /resources 下添加Logback配置文件logback.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration>
        <!--定義日志文件的存儲地址-->
        <property name="LOG_HOME" value="${catalina.base}/logs/"/>
        
        <!-- 控制臺輸出 -->
        <appender name="Stdout"  class="ch.qos.logback.core.ConsoleAppender">
            <!-- 日志輸出編碼 -->
            <layout class="ch.qos.logback.classic.PatternLayout">
                <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符-->
                <pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level%logger{50} - %msg%n
                </pattern>
            </layout>
        </appender>
        
        <!-- 按照每天生成日志文件 -->
        <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBas edRollingPolicy">
                <!--日志文件輸出的文件名-->
    <FileNamePattern>${LOG_HOME}/server.%d{yy 99-MM-dd}.log</FileNamePattern>
                <MaxHistory>30</MaxHistory>
            </rollingPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <!--格式化輸出:%d表示時間,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符-->
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
                </pattern>
            </layout>
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
              
    <MaxFileSize>10MB</MaxFileSize>
            </triggeringPolicy>
        </appender>
        <!-- 日志輸出級別 -->
        <root level="info">
            <appender-ref ref="Stdout"/>
            <appender-ref ref="RollingFile"/>
        </root>
    </configuration>

     注:Logback配置文件名為logback-test.xml或 logback.xml,如果classpath下沒有這兩個文件,LogBack 會自動進行最小化配置。

     2.在代碼中打印日志

    @Controller
    public class LogbackController {
        private final static Logger logger = LoggerFactory.getLogger(LogbackController.class);
        @RequestMapping("/printLog")
        @ResponseBody
        public String showInfo(){
            logger.info("記錄日志");
            return "Hello Logback";
       }
    }

    3.如果日志過多,可以屏蔽一些包的日志,在配置文件中配置

    #屏蔽org包中的日志輸出
    logging.level.org=off

    補充:Log4j2安全漏洞 在2021年12月,Log4j2爆出了極其嚴重的安全漏洞,攻擊者可 以讓記錄的日志包含指定字符串,從而執(zhí)行任意程序。很多大 型網(wǎng)站,如百度等都是此次Log4j漏洞的受害者,很多互聯(lián)網(wǎng)企 業(yè)連夜做了應急措施。 Log4j2.0到2.14.1全部存在此漏洞,危害范圍極其廣泛, Log4j2.15.0-rc1中修復了這個 bug。

    因Log4j2漏洞的反復無常,導致某些公司已經(jīng)切換到Logback 來記錄日志,但在Log4j2漏洞爆出后,Logback也爆出漏洞: 在Logback1.2.7及之前的版本中,具有編輯配置文件權(quán)限的攻 擊者可以制作惡意配置,允許從LDAP服務器加載、執(zhí)行任意代 碼。 解決方案為將Logback升級到安全版本: Logback1.2.9+ SpringBoot2.6.2以上的Logback版本已經(jīng)升到了1.2.9,Log4j2 的版本也升到了2.17.0,所以我們使用SpringBoot2.6.2以上版 本無需擔心Log4j2和Logback安全漏洞。

    SpringBoot項目部署_項目打包

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_java_06

    SpringBoot項目是依賴于Maven構(gòu)建的,但打包時如果只依賴 Maven打包工具則會打包不完整,我們還需要在SpringBoot項目中 引入SpringBoot打包插件 : 

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-mavenplugin</artifactId>
            </plugin>
        </plugins>
    </build>

    此時再使用Maven插件打包:

     

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_原力計劃_07

    打包后jar包解壓目錄如下: 

     

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_docker_08

     可以看到該目錄少了BOOT-INF,打包是不完整的,也無法運行jar 包

    運行jar包:

    1 進入jar包所在目錄,使用cmd打開命令行窗口

    2 輸入命令:

    java -jar jar包名

     SpringBoot項目部署_多環(huán)境配置

     

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_spring boot_09

     在真實開發(fā)中,在不同環(huán)境下運行項目往往會進行不同的配置,比 如開發(fā)環(huán)境使用的是開發(fā)數(shù)據(jù)庫,測試環(huán)境使用的是測試數(shù)據(jù)庫, 生產(chǎn)環(huán)境使用的是生產(chǎn)數(shù)據(jù)庫。SpringBoot支持不同環(huán)境下使用不 同的配置文件,用法如下:

     配置文件名:

        application-環(huán)境名.properties/yml   

    如:

      1 application-dev.properties/yml 開發(fā)環(huán)境配置文件

        

    # 開發(fā)環(huán)境端口號為8080server: port: 8080

      2 application-test.properties/yml 測試環(huán)境配置文件

      

    # 測試環(huán)境端口號為8081server: port: 8081

    3 application-prod.properties/yml 生產(chǎn)環(huán)境配置文件

    # 生產(chǎn)環(huán)境端口號為80server: port: 80

     運行jar包時選擇環(huán)境:

     java -jar jar包名 --spring.profiles.active=環(huán) 境名

     SpringBoot容器化部署_安裝Docker環(huán)境

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_java_10

     為了節(jié)約資源,在生產(chǎn)環(huán)境中我們更多的是使用Docker容器部署 SpringBoot應用,首先我們準備Docker環(huán)境:

    1 準備一臺centos7系統(tǒng)的虛擬機,連接虛擬機。

    2 關(guān)閉虛擬機防火墻

    # 關(guān)閉運行的防火墻systemctl stop firewalld.service # 禁止防火墻自啟動 systemctl disable firewalld.service

    3. 安裝Docker

    # 安裝Dockeryum -y install docker # 啟動docker systemctl start docker

    SpringBoot容器化部署_Dockerfile制作鏡像

    由于在SpringBoot中嵌入了Web容器,所以在制作SpringBoot項目 的鏡像時無需依賴Web容器,基于JDK制作鏡像即可,接下來我們 使用Dockerfile制作鏡像:

    1.進入opt目錄

    cd /opt

    2 使用rz命令將項目Jar包上傳至虛擬機

    3 編寫DockerFile

    cat <<EOF > Dockerfile# 基于JDK11 FROM openjdk:11 # 作者 MAINTAINER itbaizhan # 拷貝到容器opt目錄 ADD springbootdemo7-0.0.1-SNAPSHOT.jar /opt #保留端口 EXPOSE 8080 # 啟動容器后執(zhí)行的命令 CMD java -jar /opt/springbootdemo7-0.0.1- SNAPSHOT.jar --spring.profiles.active=dev EOF

    4.構(gòu)建鏡像

    docker build -t springbootdocker .

    5.查看所有的鏡像,出現(xiàn)springbootdocker代表鏡像構(gòu)建成功

    docker images

    6.使用鏡像啟動容器

    docker run -d -p 8080:8080springbootdocker

    7.訪問ip地址:8080/printLog查看是否啟動成功

    SpringBoot容器化部署_Maven插件制作鏡像 

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_后端_11

    除了DockerFile,我們還可以使用Maven插件制作鏡像。使用方法 如下:
    1.開啟遠程docker服務
    # 修改docker配置文件vim /lib/systemd/system/docker.service
    # 在ExecStart=后添加配置,遠程訪問docker的端口
    為2375
    ExecStart=/usr/bin/dockerd-current -H
    tcp://0.0.0.0:2375 -H
    unix://var/run/docker.sock           --add-runtime dockerrunc=/usr/libexec/docker/docker-runccurrent           --default-runtime=docker-runc           --exec-opt
              native.cgroupdriver=systemd           --userland-proxypath=/usr/libexec/docker/docker-proxycurrent           --initpath=/usr/libexec/docker/docker-initcurrent           --seccompprofile=/etc/docker/seccomp.json           $OPTIONS           $DOCKER_STORAGE_OPTIONS           $DOCKER_NETWORK_OPTIONS           $ADD_REGISTRY           $BLOCK_REGISTRY           $INSECURE_REGISTRY           $REGISTRIES
    # 重啟docker
    systemctl daemon-reload
    systemctl restart docker
    2.在項目的pom文件中添加 docker-maven-plugin 插件
    <!-- docker-maven-plugin--><plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-mavenplugin</artifactId>
        <version>1.2.2</version>
        <configuration>
            <!-- Docker路徑 -->
        <dockerHost>http://192.168.25.101:2375</dockerHost>
            <!-- Dockerfile定義 -->
            <baseImage>openjdk:11</baseImage>
            <!-- 作者 -->
            <maintainer>xiaotong</maintainer>
            <resources>
                <resource>
                    <!-- 復制jar包到docker容器指定目錄 -->
                    <targetPath>/</targetPath>
                    <!-- 從哪個包拷貝文件,target包 -->
                  
                    <directory>${project.build.directory}
                    </directory>
                    <!-- 拷貝哪個文件 -->
                  
                    <include>${project.build.finalName}.jar</include>
                </resource>
            </resources>
            <workdir>/</workdir>
            <entryPoint>["java", "-jar","${project.build.finalName}.jar","--spring.profiles.active=dev"]</entryPoint>
            <forceTags>true</forceTags>
            <!-- 鏡像名 -->
            <imageName>${project.artifactId}
            </imageName>
            <!-- 鏡像版本 -->
            <imageTags>
                <imageTag>${project.version}
            </imageTag>
            </imageTags>
        </configuration>
    </plugin>
    3.使用maven的package命令給項目打包

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_java_12

    4.使用maven的docker插件制作鏡像

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_后端_13

     5.查看所有的鏡像,出現(xiàn)springbootdemo7代表鏡像構(gòu)建成功

    docker images

    6.使用鏡像啟動容器

    docker run -d -p 8081:8080springbootdemo7:0.0.1-SNAPSHOT

    Spring Task_定時任務

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_spring boot_14

     定時任務即系統(tǒng)在特定時間執(zhí)行一段代碼,它的場景應用非常廣 泛:

    1 購買游戲的月卡會員后,系統(tǒng)每天給會員發(fā)放游戲資源。

    2 管理系統(tǒng)定時生成報表。

    3 定時清理系統(tǒng)垃圾。

    4 ......

    定時任務的實現(xiàn)主要有以下幾種方式:

    1. Java自帶的java.util.Timer類,這個類允許調(diào)度一個java.util.TimerTask任務。使用這種方式可以讓 程序按照某一個頻度執(zhí)行,但不能在指定時間運行。一般用的較少。

    2 Quartz。這是一個功能比較強大的的調(diào)度器,可以讓程序在指定時間執(zhí)行,也可以按照某一個頻度 執(zhí)行,配置起來稍顯復雜。

    3  Spring3.0以后自帶Spring Task,可以將它看成一個輕量級的Quartz,使用起來比 Quartz簡單許 多,在課程中我們使用Spring Task實現(xiàn)定時任務

    Spring Task_入門案例 

    1.創(chuàng)建SpringBoot項目,在啟動類開啟定時任務。

    @SpringBootApplication
    @EnableScheduling
    public class Springbootdemo8Application {
        public static void main(String[] args)
       {
          
           SpringApplication.run(Springbootdemo8Application.class, args);
       }
    }

    2.編寫定時任務類

    @Component
    public class MyTask {
        // 定時任務方法,每秒執(zhí)行一次
        @Scheduled(cron="* * * * * *")
        public void task1() {
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
            System.out.println(sdf.format(new Date()));
       }
    }

    3.啟動項目,定時任務方法按照配置定時執(zhí)行。

    Spring Task_Cron表達式

    Spring Task依靠Cron表達式配置定時規(guī)則。Cron表達式是一個字 符串,分為6或7個域,每一個域代表一個含義,以空格隔開。有如 下兩種語法格式: 

    1.Seconds Minutes Hours DayofMonth Month DayofWeek Year

    2 Seconds Minutes Hours DayofMonth Month DayofWeek

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_原力計劃_15

     

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_原力計劃_16

     Spring Task_Cron實戰(zhàn)案例

     

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_原力計劃_17

    Spring Task_@Scheduled

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_docker_18

     @Scheduled寫在方法上方,指定該方法定時執(zhí)行。常用參數(shù)如 下:

          cron:cron表達式,定義方法執(zhí)行的時間規(guī)則。

          fixedDelay:任務立即執(zhí)行,之后每隔多久執(zhí)行一次,單位是毫 秒,上一次任務結(jié)束后計算下次執(zhí)行的時間。

    // 立即執(zhí)行,任務結(jié)束后每5秒執(zhí)行一次
    @Scheduled(fixedDelay=5000)
    public void task1() throws
    InterruptedException {
        SimpleDateFormat sdf = new  SimpleDateFormat("HH:mm:ss");
        Thread.sleep(1000);
        System.out.println(sdf.format(new Date()));
    }

     fixedRate:任務立即執(zhí)行,之后每隔多久執(zhí)行一次,單位是毫 秒,上一次任務開始后計算下次執(zhí)行的時間。

    // 立即執(zhí)行,之后每5秒執(zhí)行一次
    @Scheduled(fixedRate=5000)
    public void task2() throws
    InterruptedException {
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        Thread.sleep(1000);
        System.out.println(sdf.format(new Date()));
    }

    initialDelay:項目啟動后不馬上執(zhí)行定時器,根據(jù)initialDelay 的值延時執(zhí)行。

    // 項目啟動3秒后執(zhí)行,之后每5秒執(zhí)行一次。
    @Scheduled(fixedRate=5000,initialDelay =
    3000)
    public void task3() throws
    InterruptedException {
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        Thread.sleep(1000);
        System.out.println(sdf.format(new Date()));
    }

    Spring Task_多線程任務

    SpringBoot【SpringBoot指標監(jiān)控、SpringBoot日志管理、SpringBoot項目部署、 SpringBoot容器化部署】(五)-全面詳解(學習總結(jié)---從入門到深化)_docker_19

    Spring Task定時器默認是單線程的,如果項目中使用多個定時器, 使用一個線程會造成效率低下。代碼如下: 

    @Scheduled(cron="* * * * * *")
    private void task1() throws
    InterruptedException {
      
    System.out.println(Thread.currentThread().getId()+"線程執(zhí)行任務1");
        Thread.sleep(5000);
    }
    @Scheduled(cron="* * * * * *")
    private void task2() {
      
    System.out.println(Thread.currentThread().getId()+"線程執(zhí)行任務2");
    }

    任務1較浪費時間,會阻塞任務2的運行。此時我們可以給Spring Task配置線程池。

      本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
      轉(zhuǎn)藏 分享 獻花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 久久久久久综合网天天| 亚洲人成无码网站18禁| 69久久夜色精品国产69| 99riav国产精品视频| 99热精品毛片全部国产无缓冲| 欧美自拍另类欧美综合图片区| 亚洲欧美日韩中文字幕一区二区三区| 99精品国产中文字幕| 毛片无遮挡高清免费| 青青青爽在线视频观看| AV最新高清无码专区| 亚洲中文在线精品国产| 日本大片免A费观看视频三区| 天天日天天谢天天视2019天干| 欧美老少配性行为| 精品久久久久成人码免费动漫| 国产情侣激情在线对白| 最新国产乱人伦偷精品免费网站 | 在线看无码的免费网站| 18无码粉嫩小泬无套在线观看| 亚洲色最新高清AV网站| 国产精品一区二区手机在线观看| 亚洲人成网网址在线看| 欧美伊人久久大香线蕉综合| 无码人妻丝袜在线视频红杏| √天堂中文www官网在线| 欧乱色国产精品兔费视频| 国产精品午夜av福利| 无码AV中文字幕久久专区| 韩国精品久久久久久无码| 色偷偷www.8888在线观看| 在线观看AV永久免费| 黄又色又污又爽又高潮| 桃子视频在线播放WWW| A级日本乱理伦片免费入口| 在线 欧美 中文 亚洲 精品| 精品国产乱码久久久久久郑州公司 | 一本一本久久AA综合精品| 国产欧美综合在线观看第十页| 亚洲国产精品久久一线不卡| 国产明星精品无码AV换脸|