数将游戏
  • 首页
  • 游戏攻略
  • 游戏资讯
2026-08-21 作者:数将游戏
游戏资讯

quartz插件怎么用,从任务调度到集群配置的入门实战教程

:聊点啥?咱们先唠唠

哎呀,每次有人问我 quartz 插件怎么用,我都想笑。这玩意儿看着挺复杂,其实就像咱们小区门口那个老修车师傅,你把问题说明白,他手到擒来。今天咱不整那些虚头巴脑的概念,就实实在在地掰开揉碎了讲讲 quartz 任务调度,从最基础的怎么跑起来,到后面搞集群那些花活儿。放心,保证大白话,听我给你捋顺了。

第一步:先搞明白 Quartz 是个啥玩意儿

Quartz 是啥?简单说,就是个开源的任务调度框架。它能让你的 Java 应用在某个特定的时间点或者按一定频率去执行特定的任务。比如:

  • 每天凌晨 3 点自动清理数据库垃圾
  • 每 5 分钟检查一次用户设备是否在线
  • 收到消息后 10 秒内触发一个复杂的业务流程

你看,这些事儿要么得准时准点,要么得重复执行,这时候 quartz 就派上用场了。它不关心你的业务逻辑,只负责“在指定时间做指定事”。这就像你家闹钟,你设定了时间,它就响,不管你起不来还是睡不着。

Quartz 有两种核心模式:

“简单模式”适合小项目,直接把调度器跑在同一个 JVM 里;“集群模式”适合生产环境,多个服务器协同工作,确保任务不会因为单点故障而丢失。

咱们今天先从简单模式入手,后面再讲集群。记住,先跑通单机,再考虑集群,这老话儿没错。

第二步:环境准备,磨刀不误砍柴工

想用 quartz,你得有个 Java 环境,这不用我多说了吧?除了 JDK,你还需要把 quartz 的依赖加到项目中。如果是 Maven 项目,在 pom.xml 里加这几行:

<dependency>

<groupId>org.quartz-scheduler</groupId>

<artifactId>quartz</artifactId>

<version>3.3.2</version> < 建议用最新稳定版 -->

</dependency>

<dependency>

<groupId>org.quartz-scheduler</groupId>

<artifactId>quartz-jobs</artifactId>

<version>3.3.2</version>

</dependency>

这里用 3.3.2 版本只是举个例子,建议你查查最新版,通常官方都会推荐一个稳定版本。版本不一致可能导致一些兼容性问题,所以还是统一好。

接下来,创建一个 Quartz 的配置类,比如叫 SchedulerConfig:

import org.quartz.impl.StdSchedulerFactory;

import org.quartz.impl.jdbcjobstore.JobStoreCMT;

import org.quartz.impl.jdbcjobstore.JobStoreTX;

import static org.quartz.SimpleScheduleBuilder.simpleSchedule;

import static org.quartz.TriggerBuilder.newTrigger;

import static org.quartz.JobBuilder.newJob;

public class SchedulerConfig {

public static Scheduler getScheduler() throws SchedulerException {

// 1. 创建调度器工厂

StdSchedulerFactory factory = new StdSchedulerFactory();

factory.setJobStoreClass(JobStoreTX.class); // 使用事务性 JobStore

// 2. 获取调度器实例

return factory.getScheduler();

}

// 示例:创建并启动一个简单的任务

public static void startSimpleJob() throws SchedulerException {

Scheduler scheduler = getScheduler();

// 定义任务类

JobDetail job = newJob(MyJob.class)

.withIdentity("myJob", "group1")

.build();

// 定义触发器:立即执行,然后每 10 秒执行一次

Trigger trigger = newTrigger()

.withIdentity("trigger1", "group1")

.startNow()

.withSchedule(simpleSchedule()

.withIntervalInSeconds(10)

.repeatForever())

.build();

// 将任务和触发器注册到调度器

scheduler.scheduleJob(job, trigger);

// 启动调度器

scheduler.start();

}

}

第三步:写个任务,让 Quartz 跑起来

任务类(Job)是你要执行的代码逻辑。Quartz 规定,任务类必须实现 org.quartz.Job 接口,并且有一个无参构造函数。比如咱们创建一个叫 MyJob 的类:

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

public class MyJob implements Job {

@Override

public void execute(JobExecutionContext context) throws JobExecutionException {

// 这里写你的业务逻辑

System.out.println("任务执行了!当前时间:" + System.currentTimeMillis());

// 模拟耗时操作

try {

Thread.sleep(2000);

} catch (InterruptedException e) {

Thread.currentThread().interrupt();

}

}

}

注意这个 execute 方法,它会被 quartz 调用。方法里可以干啥?写业务逻辑就行。比如发送邮件、更新缓存、调用第三方 API 等。关键是,不要在这里直接写数据库操作或长时间阻塞的代码,后面会讲为啥。

现在,你可以在 SchedulerConfig 里调用 startSimpleJob 方法,看看效果。如果一切正常,你会看到控制台每 10 秒打印一次时间戳。

第四步:深入理解:调度器的核心概念

Quartz 有几个关键概念,搞懂了后面用起来才顺手:

“Job”是任务本身,是你要执行的代码逻辑;“Trigger”是触发器,决定了什么时候执行任务;“Scheduler”是调度器,负责管理 Job 和 Trigger 的关系。

还有一个容易被忽略的:JobDetail,它描述了 Job 的详细信息,比如名字、组别、要传递给 Job 的参数等。就像你要搬家,除了知道去哪儿,还得知道带啥家具,对吧?

举个例子,咱们修改一下 SchedulerConfig,创建一个带参数的任务:

public static void startParameterizedJob() throws SchedulerException {

Scheduler scheduler = getScheduler();

// 创建带参数的任务

JobDetail job = newJob(MyParameterizedJob.class)

.withIdentity("paramJob", "group1")

.usingJobData("param1", "Hello Quartz!")

.build();

// 创建触发器

Trigger trigger = newTrigger()

.withIdentity("paramTrigger", "group1")

.startNow()

.withSchedule(simpleSchedule()

.withIntervalInSeconds(15)

.repeatForever())

.build();

// 注册任务和触发器

scheduler.scheduleJob(job, trigger);

scheduler.start();

}

然后在 MyParameterizedJob 里接收参数:

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import org.quartz.JobKey;

import org.quartz.JobDataMap;

public class MyParameterizedJob implements Job {

@Override

public void execute(JobExecutionContext context) throws JobExecutionException {

JobKey jobKey = context.getJobDetail().getKey();

JobDataMap dataMap = context.getJobDetail().getJobDataMap();

String param1 = dataMap.getString("param1");

System.out.println("执行任务:" + jobKey);

System.out.println("参数:" + param1);

}

}

这样,每次任务执行时都会打印出传递的参数“Hello Quartz!”。这很实用,比如你可以根据不同的场景传递不同的配置信息给任务。

第五步:集群配置实战:如何让任务不丢

单机模式够用吗?对于小项目或测试环境,够。但真上生产,你得考虑高可用。这时候就得用集群模式了。集群的核心思想是:多个服务器协同工作,互相备份。当一个服务器挂了,其他服务器能接手它的任务。

配置集群主要分几步:

  1. 使用共享数据库:所有服务器都连接同一个数据库来存储调度信息
  2. 配置不同的 JobStore:推荐使用 JobStoreCMT 或 JobStoreTX
  3. 设置集群模式:在 quartz.properties 文件里启用集群
  4. 启动多个调度器实例:每个服务器上都运行一个 Quartz 调度器

以 JobStoreTX 为例,修改 SchedulerConfig:

public class SchedulerConfig {

public static Scheduler getScheduler() throws SchedulerException {

StdSchedulerFactory factory = new StdSchedulerFactory();

// 配置数据库连接信息(需要提前创建 quartz 表)

Properties props = new Properties();

props.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.StdJDBCDelegate");

props.put("org.quartz.jobStore.dataSource", "myDS");

props.put("org.quartz.jobStore.driverClassName", "com.mysql.cj.jdbc.Driver");

props.put("org.quartz.jobStore.url", "jdbc:mysql://localhost/quartz?useSSL=false");

props.put("org.quartz.jobStore.user", "root");

props.put("org.quartz.jobStore.password", "password");

props.put("org.quartz.jobStore.useProperties", "true");

// 启用集群模式

props.put("org.quartz.scheduler.instanceName", "QuartzScheduler1");

props.put("org.quartz.scheduler.instanceId", "AUTO");

props.put("org.quartz.jobStore.isClustered", "true");

factory.initialize(props);

return factory.getScheduler();

}

}

注意这个 org.quartz.jobStore.isClustered 属性,把它设为 true 就开启了集群模式。你需要确保所有服务器上的 Quartz 都连接到同一个数据库,并且数据库里有 quartz 的表结构。你可以用官方提供的 SQL 脚本来创建这些表:

https://github.com/quartz-scheduler/quartz-scheduler/releases/download/v3.3.2/quartz-3.3.2-jobStoreSQL.sql

第六步:常见陷阱与最佳实践

用 quartz 的时候,有几个坑得避开:

  • 任务执行时间过长:如果任务需要执行很久(比如几分钟),可能会导致 quartz 调度器卡住。这时候可以考虑用 StatefulJob,或者把长任务拆分成多个小任务
  • 数据库连接池耗尽:如果任务频繁访问数据库,可能会耗尽连接池。建议使用连接池并合理配置
  • 任务丢失:在集群模式下,如果服务器重启,可能会丢失部分任务。使用共享数据库可以避免这个问题
  • JobDetail 和 Trigger 的命名:建议使用有意义的命名,方便排查问题

最佳实践:

对于重要任务,使用 StatefulJob 并设置 requestRecovery 属性为 true,这样即使服务器重启也能恢复任务

举个例子:

TriggerBuilder.newTrigger()

.withIdentity("importantTrigger", "group1")

.startNow()

.withSchedule(simpleSchedule().repeatForever())

.usingJobData("recovery", true)

.build();

这样,如果服务器重启,quartz 会自动重新执行这个任务。

:从入门到进阶的完整路线

好了,今天就聊到这儿。一下 Quartz 的使用路线:

  1. 先搞懂基本概念:Job、Trigger、Scheduler
  2. 配置单机模式,跑通最简单的任务
  3. 学习参数传递,让任务更灵活
  4. 理解 JobStore 的工作原理
  5. 进阶学习集群模式,提升系统可用性
  6. 掌握最佳实践,避免踩坑

Quartz 功能很强大,但配置起来确实有点复杂。关键在于:分步走,先简单后复杂。等你把单机模式玩明白了,再慢慢扩展到集群,这样不容易被搞懵。

最后送大家一句老话:“罗马不是一天建成的,Quartz 也不是一天能精通的”。多动手实践,多看看源码,慢慢就上手了。有什么问题,评论区见!

上一篇大脚反和谐哪里设置?选项位置与开启步骤说明下一篇 生肉日剧去哪里看,无字幕资源获取和观看方法

归档:

  • 2026 年 9 月
  • 2026 年 8 月
  • 2026 年 7 月
友情链接:栗子漫画栗子漫画栗子漫画栗子漫画栗子漫画漫蛙漫蛙漫蛙漫蛙漫蛙acfun动漫acfun动漫acfun动漫acfun动漫acfun动漫omofun动漫omofun动漫omofun动漫omofun动漫omofun动漫基映短剧禁果短剧禁果短剧禁果短剧禁果短剧禁果短剧禁果短剧禁果短剧禁果短剧禁果短剧黄豆短剧黄豆短剧黄豆短剧芒果短剧芒果短剧芒果短剧黄果漫剧黄果漫剧app黄果漫剧2048短剧2048短剧黄柚短剧野果短剧野果短剧野果短剧野果短剧野果短剧野果短剧野果短剧野果短剧蓝果短剧网蓝果短剧网半生缘未了AI短剧末世男女比例失衡美女们都在抢我短剧萝莉便利店AI短剧漫剧凡人修仙传之血雾禁地魔改AI短剧月子中心猎夫局短剧星月神雕AI短剧叶薰《拳王的绝对支配》AI漫剧井伶vlog短剧风华神女录短剧资源画皮局胭脂债在线观看画皮局胭脂债网盘倪妮人间富贵花AI短剧漫剧仙子的修行AI漫剧阳光合租屋短剧阳光合租屋短剧暗黑金庸AI短剧在线看暗黑金庸EP短剧废柴杂役短剧合集废柴杂役AI漫剧极品家丁短剧百度网盘极品家丁短剧疯狂腥期五短剧琼明神女录AI短剧父女同乐AI短剧青蛙人AI短剧完整版我靠系统收获芳心魔改短剧芙蓉AI短剧泰绿AI短剧东交到家AI短剧我的小姨短剧我的小姨短剧完整版催眠眼镜AI短剧催眠眼镜短剧蓝果短剧蓝果短剧黄豆短剧黄豆短剧黄豆短剧黄豆短剧黄豆短剧黄豆短剧黄豆短剧黄豆短剧黄豆短剧蕉果短剧黄果短剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧蕉果短剧蕉果短剧香蕉ai短剧网香蕉ai短剧网红豆短剧红豆短剧omofunomofunomofunomofunomofunomofun香蕉ai短剧香蕉ai短剧2048短剧2048短剧黄豆短剧海角短剧海角短剧海角短剧海角短剧橙果短剧mama短剧官网橙果短剧橙果短剧橙果短剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果ai漫剧黄果漫剧网页版黄果漫剧网页黄果漫剧官网黄果漫剧野果短剧野果短剧野果短剧野果短剧野果短剧黄果短剧黄果短剧mama短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧acfan动漫官网acfan流鼻血版acfan流鼻血acfan官网入口acfan免费动漫官网拷贝漫画官网入口拷贝漫画无广告拷贝漫画拷贝漫画官网拷贝漫画网页jmcomic入口jmcomic漫画jmcomicjmcomic禁漫天堂jmcomic漫画官方EhViewer漫画阅读EhViewer漫画官网EhViewer绿色版EhViewer漫画EhViewer官网野果短剧app野果短剧ai野果短剧荔枝ai短剧荔枝短剧网页版荔枝短剧ai荔枝短剧七猫短剧蕉果短剧51短剧51短剧荔枝短剧七猫漫剧橙果短剧橙果短剧橙果短剧橙果短剧橙果短剧橙果短剧橙果短剧橙果短剧橙果短剧荔枝短剧官网野果短剧官网嗨兔短剧2048短剧2048短剧2048短剧2048短剧2048短剧2048短剧2048短剧2048短剧2048短剧野果短剧野果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧拷贝漫画拷贝漫画拷贝漫画拷贝漫画拷贝漫画拷贝漫画拷贝漫画拷贝漫画蓝色眼镜妹视频2048短剧2048短剧2048短剧2048ai短剧2048ai vip短剧2048成人短剧Hi-two嗨兔短剧ehviewerehviewerehviewerehviewerehviewerehviewer野果短剧野果短剧hitwo短剧嗨兔短剧51短剧官网星空漫剧51短剧网2048短剧2048短剧2048ai短剧2048ai短剧2048短剧海角短剧黄豆短剧黄豆短剧香蕉短剧花魁短剧花魁短剧花魁短剧花魁短剧花魁短剧花魁短剧花魁短剧花魁短剧花魁短剧花魁短剧黄豆魔改短剧黄豆魔改短剧黄豆魔改短剧黄豆魔改短剧黄豆魔改短剧黄果短剧黄果短剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧野果短剧黄果短剧黄果漫剧橙果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧粉果短剧官网粉果短剧app粉果短剧A站热浪短剧51AI魔改短剧51AI魔改短剧51AI魔改短剧51AI魔改短剧51AI魔改短剧51AI魔改短剧51AI魔改短剧51AI魔改短剧51AI魔改短剧黄果AI短剧香蕉短剧网黄果漫剧黄瓜短剧黄瓜短剧黄瓜短剧黄瓜短剧黄瓜短剧黄瓜短剧黄瓜短剧黄瓜短剧黄瓜短剧青果短剧青果短剧青果短剧青果短剧青果短剧动漫共和国动漫共和国动漫共和国动漫共和国动漫共和国动漫共和国动漫共和国动漫共和国动漫共和国青果短剧赤果短剧黄果短剧黄果短剧黄果短剧网黄果漫剧黄豆短剧黄豆短剧野果短剧官网野果短剧网黄果短剧黄果短剧黄果短剧黄果短剧AcFun黄果AI魔改短剧黄果AI生成短剧黄果短剧百度云黄果短剧重生之郭母黄果短剧魔改版香蕉短剧香蕉短剧黄果短剧快播短剧快播短剧快播短剧快播短剧快播短剧快播短剧泰圈app泰圈acfun黄化版acfun流鼻血acfun追番acfun黄果ai短剧汽水短剧黄果短剧黄果短剧香蕉漫剧香蕉漫剧香蕉漫剧香蕉漫剧香蕉漫剧香蕉漫剧香蕉漫剧香蕉漫剧香蕉漫剧魅影直播魅影直播魅影直播魅影直播魅影直播赤果短剧官网EhViewer网页版EhViewerEhViewer2.0.2.4EhViewerios下载EhViewer官网EhViewer绿色版EhViewer黄桃短剧黄桃短剧黄桃短剧黄桃短剧黄桃短剧黄桃短剧51原创短剧51原创短剧51原创短剧51原创短剧51原创短剧51原创短剧51原创短剧51原创短剧51原创短剧青蛙短剧糖果短剧糖果短剧糖果短剧糖果短剧糖果短剧绿水母官网绿水母网页版绿水母短剧绿水母app正版绿水母苹果版绿水母eggjelly绿水母漫剧完整版橙果短剧赤果短剧野果短剧野果短剧野果短剧野果短剧野果短剧野果短剧野果短剧野果短剧野果短剧AI成人短剧AI成人短剧香蕉短剧ai男男短剧粉果短剧粉果短剧粉果短剧粉果短剧粉果短剧绿水母短剧绿水母短剧荔枝短剧网黄果ai短剧黄果短剧黄果短剧黄果短剧麻豆短剧西瓜短剧官方西瓜短剧app西瓜短剧51爆料基映短剧黄果漫剧麻豆短剧麻豆短剧麻豆AI短剧麻豆短剧麻豆魔改短剧麻豆短剧麻豆短剧麻豆短剧麻豆短剧官网荔枝短剧网汽水短剧香蕉短剧香蕉短剧花魁短剧ai花魁短剧官网糖心短剧糖心魔改短剧糖心短剧糖心短剧糖心短剧糖心vlog短剧糖心短剧糖心原创短剧糖心短剧花魁短剧花魁短剧花魁短剧花魁短剧苹果短剧下载苹果短剧网页版苹果短剧app苹果短剧jmcomic3jmcomic3jmcomic3jmcomic3jmcomic391短剧91短剧91短剧免费版91短剧91原创短剧91短剧91短剧网页版91魔改短剧91短剧官网入口蜜桃短剧官网蜜桃短剧蜜桃传媒ai短剧蜜桃短剧ai荔枝短剧荔枝短剧荔枝短剧荔枝短剧荔枝短剧糖果短剧黄果短剧黄果短剧妈妈AI短剧mama短剧mama短剧appmama短剧全集免费mama短剧在线观看mama短剧女帝和太傅黄豆短剧官方黄火短剧在线观看黄火短剧黄火短剧破译版黄火短剧热浪短剧51短剧51短剧黄果ai官方荔枝短剧七猫魔改短剧真人版七猫短剧入口七猫短剧在线观看七猫短剧魔改tv七猫短剧51短剧黄果短剧黄果短剧黄果短剧黄蜂短剧在线黄蜂短剧王鹤黄蜂短剧黄果短剧糖果短剧糖果短剧网页版糖果短剧官方下载app糖果短剧完整免费版黄果短剧黄果短剧海角社区网页版海角社区app海角社区官网jmtt漫画防走失入口jmtt漫画回家的路黄果官方jmtt漫画appjmtt漫画官网jmtt漫画黄果ai短剧黄果剧场彩虹果AI短剧彩虹果短剧网页版彩虹果短剧app彩虹果短剧播放软件彩虹果短剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果漫剧黄果短剧Hoshivetw黄豆短剧黄豆短剧黄豆短剧黄豆短剧青果短剧青果短剧青果短剧青果短剧青果短剧青果短剧青果短剧青果短剧青果短剧平行岛ai黄豆短剧黄豆短剧黄豆短剧黄豆短剧黄豆短剧黄豆短剧蓝果视频夜色ai黄果ai下载花魁短剧APP花魁短剧魔改版花魁短剧播放花魁短剧轻量版花魁短剧七彩短剧七彩短剧青果短剧 app青果短剧官网入口青果短剧青果短剧青果短剧黄瓜短剧在线观看黄瓜短剧黄瓜短剧AI黄瓜短剧在线重生之郭母黄瓜短剧魔改版热浪短剧热浪短剧黄果ai短剧51每日大赛今日黑榜51每日大赛51每日大赛海角短剧麻豆AI短剧黄果短剧黄果短剧七彩短剧官方网址七彩短剧app七彩短剧黄果短剧热浪短剧热浪短剧网页版热浪短剧最新网站黄果官网赤果短剧在线观看赤果短剧全部剧集赤果短剧安装赤果短剧黄果短剧官网黄果短剧黄果短剧高三爱情故事黄果短剧入口51短剧lulu短剧黄果短剧黄果短剧木瓜短剧官网木瓜短剧ai木瓜短剧蜜桃短剧app蜜桃短剧官网蜜桃短剧撸撸短剧黄果短剧ai漫剧无雾版ai漫剧制作软件ai漫剧免费追剧入口ai漫剧免费平台香蕉短剧魔改版香蕉短剧AI香蕉短剧香蕉短剧官方入口香蕉短剧官网香蕉短剧香蕉AI短剧香蕉魔改短剧香蕉短剧青果短剧黄果短剧黄果Ai短剧黄果短剧热浪短剧官方入口热浪短剧官网热浪短剧51原创短剧51短剧51短剧官网黄豆魔改短剧入口黄豆魔改短剧网页黄豆魔改ai短剧黄豆魔改短剧野果短剧官网入口野果短剧野果短剧撸撸短剧2048短剧ai2048ai短剧网页2048ai网页2048ai短剧入口2048短剧黄果短剧黄果短剧黄果短剧黄果短剧黄果短剧糖心官方糖心ai短剧糖心短剧糖心短剧神瞳觉醒91短剧在线91短剧网页版红豆短剧黄果短剧91短剧短视频91短剧官网入口91短剧九一短剧大全九一短剧免费版九一ai短剧九一短剧全免费91短剧黄果短剧9pm短剧合集9pm短剧在线观看9pm短剧官方网站蜜桃短剧黄果短剧9pm短剧网9pm短剧9pm短剧在线观看9pm短剧合集9pm短剧9pm短剧网app黄果短剧撸撸短剧免费撸撸Ai短剧lulu短剧撸撸短剧香蕉短剧长生诀香蕉短剧红包版香蕉短剧香蕉短剧官网入口香蕉短剧AI游龙工具香蕉AI短剧香蕉短剧官网香蕉短剧蜜桃短剧AI蜜桃短剧官网入口蜜桃短剧七彩Ai短剧七彩短剧官网入口七彩短剧51原创51原创短剧官网51原创短剧51短剧小蓝视频海角社区2048短剧官方入口2048短剧入口2048短剧2048短剧官网入口2048AI短剧2048短剧黄豆魔改短剧黄豆短剧黄豆短剧黄豆AI短剧黄豆魔改短剧黄果魔改短剧黄果短剧2048短剧撸撸短剧黄豆短剧黄果短剧黄果短剧黄果漫剧51短剧黄果短剧花魁短剧黄瓜短剧在线观看黄瓜短剧魔改合集黄瓜短剧网页版入口黄瓜短剧2048ai短剧黄果短剧黄果短剧黄果短剧正版入口黄果短剧官方入口黄果短剧官网黄果Ai短剧黄果短剧官网蓝果视频糖果短剧海角短剧正版海角短剧官方入口海角短剧官网入口海角短剧万圣节版海角短剧海角Ai短剧花魁短剧麻豆短剧万圣节版麻豆短剧官方麻豆短剧AI麻豆短剧官方入口麻豆短剧官网麻豆短剧黄果短剧官网入口风月AI角色广场风月AI官方入口风月AI创作平台风月AI网页版风月AI官网黄果短剧黄果短剧51原创短剧香蕉短剧黄果短剧下载蓝果视频蓝果视频蓝果魔改短剧蓝果AI短剧黄果短剧番茄ai短剧51短剧黄果ai下载黄果短剧黄果官网禁果短剧禁果短剧官网禁果短剧魔改版禁果短剧AI91漫剧黄果短剧黄果ai短剧黄果短剧黄果短剧番茄短剧黄豆魔改短剧黄豆短剧红豆短剧海角魔改短剧海角短剧野果短剧官方发布野果短剧野果短剧野果短剧野果短剧在线观看野果短剧官网野果短剧app官方下载野果短剧《有五个姐姐的我》AI野果短剧官网荔枝短剧荔枝短剧黄果魔改短剧51短剧红豆短剧网页版红豆短剧tv版黄果短剧2026红豆短剧免费版红豆短剧官网入口91漫剧魔改短剧官网魔改短剧免费版魔改短剧魔改短剧家有儿女野果短剧麻豆短剧2048短剧网页版免费2048短剧全集资源2048短剧最新版2048短剧最新网站2048AI短剧官网黄果橙果短剧在线观看橙果短剧免费版橙果短剧琼明神女录橙果短剧app橙果短剧魔改黄桃短剧黄果魔改短剧黄果短剧野果短剧在线观看野果短剧ygdj野果魔改短剧野果短剧官方版野果短剧百度云荔枝短剧51原创短剧黄果ai网糖果短剧51短剧黄果短剧小蓝短剧小蓝短剧黄果短剧91漫剧荔枝短剧荔枝短剧荔枝短剧花魁短剧海角短剧黄豆短剧魔改版官网黄豆短剧AI魔改版黄豆短剧魔改剧黄豆短剧APP下载黄果短剧黄果短剧APP黄果AI短剧黄果短剧官网海角短剧黄果短剧全集免费蓝果短剧51ai短剧小蓝短剧糖心vlog苹果短剧蓝果ai短剧黄果短剧黄果短剧除膜慰道健身美母AI短剧驱鬼师AI短剧我和姐姐与她的朋友AI短剧爸爸出差的那几天AI短剧