什么是Quartz


Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。简单地创建一个org.quarz.Job接口的Java类,Job接口包含唯一的方法:
 
    public void execute(JobExecutionContext context) throws JobExecutionException;
 
在Job接口实现类里面,添加需要的逻辑到execute()方法中。配置好Job实现类并设定好调度时间表,Quartz就会自动在设定的时间调度作业执行execute()。
 
整合了Quartz的应用程序可以重用不同事件的作业,还可以为一个事件组合多个作业。Quartz通过属性文件来配置JDBC事务的数据源、全局作业、触发器侦听器、插件、线程池等等。
 
Quartz是由James House创建并最初于2001年春天被加入sourceforge工程。接下来的几年里,有很多的新特性和版本出现,但是直到项目迁移到新的站点并成为OpenSymphony项目家族的一员,才开始真正启动并受到也有的关注。
 
目前的版本已经是2.0以上,v2.x相对于v1.x有很多新特性出现,并有很多的改动,具体参见Quartz官网上说明。这里介绍的仍然是v1.x(v1.8.6)。
 
 

 "Hello, Quartz"


 
配置环境:
1. 下载Quartz
2. 阅读Readme.txt,了解每个jar包的作用,将quartz.jar包和lib/下的几个jar包、以及相关依赖的jar包放在工程的classpath中
 
先来看一个简单的Quartz应用,让它每隔5s打印"Hello, Quartz",打印10次。
 
代码清单1:创建任务
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloQuartzJob implements Job {

    public void execute(JobExecutionContext context) 
            throws JobExecutionException {
        System.out.println("Hello, Quartz! - executing its JOB at "+ 
            new Date() + " by " + context.getTrigger().getName());
    }
}
 
 
为了调度此任务执行,需要先得到一个Schedule实例,然后创建一个包含任务信息的JobDetail,最后创建一个Trigger管理任务的执行。
 
代码清单2:调度任务
import java.sql.Date; 
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;


public class HelloQuartzScheduling {

    public static void main(String[] args)throws SchedulerException {

        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();

        JobDetail jobDetail = new JobDetail("helloQuartzJob"
                Scheduler.DEFAULT_GROUP, HelloQuartzJob.class);

        SimpleTrigger simpleTrigger = new SimpleTrigger("simpleTrigger"
                Scheduler.DEFAULT_GROUP);

        simpleTrigger.setStartTime(new Date(System.currentTimeMillis()));
        simpleTrigger.setRepeatInterval(5000);
        simpleTrigger.setRepeatCount(10);

        scheduler.scheduleJob(jobDetail, simpleTrigger);

        scheduler.start();
    }

}
 
运行结果:
 
可以看到,其实它执行了11次。此处没有配置log4j.properties属性文件。
 
整个任务创建及调度的简单示意图如下。
初窥Quartz - 紫龍劍 - 倚天万里须长剑
 
 
Job接口包含唯一方法execute(),将任务逻辑添加到该方法中。StdSchedulerFactory.getScheduler()返回一个可运行的实例,然后创建调度任务的JobDetail实例,并传递3个参数给构造方法。第一个参数是任务名,用于引用该任务。第二个参数是任务组名,这里使用默认名,任务组名用于引用集合起来的一组任务,如可以使用Scheduler.pauseJobGroup()来暂停一组任务,每个组中的任务名是唯一的。第三个参数是实现特定任务的类。创建JobDetail实例后,需要创建一个Trigger,这里使用的是SimpleTrigger类,它提供了JDK Timer风格的触发器行为。传递给SimpleTrigger构造方法的两个参数分别是触发器名和任务组名,触发器名在它所在的任务组中必须是唯一的。接下来是设置触发器的一些属性,setStartTime()是设置启动时间,setRepeatInterval()是设置重复间隔,setRepeatCount()是设置重复次数。最后,scheduler.start()启动调度,终止调度可以用stop()方法。
 
 

 CronTrigger


 
Quartz有两大触发器,除了上面使用的SimpleTrigger外,就是CronTrigger。CronTrigger能够提供复杂的触发器表达式的支持。CronTrigger是基于Unix Cron守护进程,它是一个调度程序,支持简单而强大的触发器语法。
 
使用CronTrigger主要的是要掌握Cron表达式。Cron表达式包含6个必要组件和一个可选组件,如下表所示。
 

位置

含义

允许的特殊字符

1

秒(0~59

, -  *  /

2

分(0~59

, -  *  /

3

小时(0~24

, -  *  /

4

日期(1~31

, -  *  /  ?  L  W  C

5

月(JAN~DEC1~12

, -  *  /

6

星期(SUN~SAT1~7

, -  *  /  ?  L  C  #

7

年(可选,1970~2099),若为空,表示全部时间范围

, -  *  /

 
特殊字符的含义,见下表。
 

特殊字符

说明

*

通配符,任意值

?

无特定值。通常和其他指定的值一起使用,表示必须显示该值但不能检查

-

范围。e.g.小时部分10-12表示10:0011:00 12:00

,

列分隔符。可以让你指定一系列的值。e.g.在星期域中指定MONTUEWED

/

增量。表示一个值的增量,e.g.分钟域中0/1表示从0开始,每次增加1min

L

表示Last。它在日期和星期域中表示有所不同。在日期域中,表示这个月的最后一天,而在星期域中,它永远是7(星期六)。当你希望使用星期中某一天时,L字符非常有用。e.g.星期域中6L表示每一个月的最后一个星期五

W

在本月内离当天最近的工作日触发,所谓的最近工作日,即当天到工作日的前后最短距离,如果当天即为工作日,则距离是0;所谓本月内指的是不能跨月取到最近工作日,即使前/后月份的最后一天/第一天确实满足最近工作日。e.g. LW表示本月的最后一个工作日触发,W强烈依赖月份。

#

表示该月的第几个星期,e.g. 1#2表示每一个月的第一个星期一

C

日历值。日期值是根据一个给定的日历计算出来的。在日期域中给定一个20C将在20日(日历包括20日)或20日后日历中包含的第一天(不包括20日)激活触发器。例如在一个星期域中使用6C表示日历中星期五(日历包括星期五)或者第一天(日历不包括星期五)

 
Cron表达式举例:
 
"30 * * * * ?" 每半分钟触发任务
"30 10 * * * ?" 每小时的10分30秒触发任务
"30 10 1 * * ?" 每天1点10分30秒触发任务
"30 10 1 20 * ?" 每月20号1点10分30秒触发任务
"30 10 1 20 10 ? *" 每年10月20号1点10分30秒触发任务
"30 10 1 20 10 ? 2011" 2011年10月20号1点10分30秒触发任务
"30 10 1 ? 10 * 2011" 2011年10月每天1点10分30秒触发任务
"30 10 1 ? 10 SUN 2011" 2011年10月每周日1点10分30秒触发任务
"15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务
"15-45 * * * * ?" 15到45秒内,每秒都触发任务
"15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次
"15-30/5 * * * * ?" 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
"0 0/3 * * * ?" 每小时的第0分0秒开始,每三分钟触发一次
"0 15 10 ? * MON-FRI" 星期一到星期五的10点15分0秒触发任务
"0 15 10 L * ?" 每个月最后一天的10点15分0秒触发任务
"0 15 10 LW * ?" 每个月最后一个工作日的10点15分0秒触发任务
"0 15 10 ? * 5L" 每个月最后一个星期四的10点15分0秒触发任务
"0 15 10 ? * 5#3" 每个月第三周的星期四的10点15分0秒触发任务
 
将上面HelloQuartz例子中SimpleTrigger换成CronTrigger,代码如下。
 
代码清单3:CronTrigger调度器
import java.text.ParseException;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

public class HelloQuartzScheduling {

    public static void main(String[] args) 
        throws SchedulerException, ParseException {

        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();

        JobDetail jobDetail = new JobDetail("helloQuartzJob"
                Scheduler.DEFAULT_GROUP, HelloQuartzJob.class);

        String cronExpression = "30/5 * * * * ?"; // 每分钟的30s起,每5s触发任务        
        CronTrigger cronTrigger = new CronTrigger("cronTrigger"
                Scheduler.DEFAULT_GROUP, cronExpression);

        scheduler.scheduleJob(jobDetail, cronTrigger);

        scheduler.start();
    }

}
 
运行结果:
 
CronTrigger使用HolidayCalendar类可以排除某一段时间,比如说国庆节不执行调度任务,代码示例如下:
 
代码清单4:HolidayCalendar的使用
import java.text.ParseException;
import java.util.Calendar;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.calendar.HolidayCalendar;


public class HelloQuartzScheduling {

    public static void main(String[] args) 
        throws SchedulerException, ParseException {

        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();

        JobDetail jobDetail = new JobDetail("helloQuartzJob"
                Scheduler.DEFAULT_GROUP, HelloQuartzJob.class);

        Calendar cal = Calendar.getInstance();
        cal.set(2012, Calendar.OCTOBER, 1); // 国庆节

        HolidayCalendar holidayCal = new HolidayCalendar();
        holidayCal.addExcludedDate(cal.getTime()); // 排除该日期

        // addCalendar(String calName, Calendar calendar, 
        //             boolean replace, boolean updateTriggers)
        scheduler.addCalendar("calendar", holidayCal, true, false);

        String cronExpression = "30/5 * * * * ?"// 每5s触发任务        
        CronTrigger cronTrigger = new CronTrigger("cronTrigger"
                Scheduler.DEFAULT_GROUP, cronExpression);

        cronTrigger.setCalendarName("calendar");

        scheduler.scheduleJob(jobDetail, cronTrigger);

        scheduler.start();
    }

}
 
 

 JobStore: 任务持久化


Quartz支持任务持久化,这可以让你在运行时增加任务或者对现存的任务进行修改,并为后续任务的执行持久化这些变更和增加的部分。中心概念是JobStore接口。默认的是RAMJobStore。
 
初窥Quartz - 紫龍劍 - 倚天万里须长剑
 
 

 配置文件


上述没有用到任何的配置文件。Quartz支持配置文件,它的好处是比编写代码简单,且修改后不需要重新编译源码。
 
>> 配置quartz.properties特性文件
 
quartz.properties文件定义了Quartz应用运行时行为,还包含了许多能控制Quartz运转的属性。它应放在工程的classpath中。
 
代码清单5:quartz.properties
#============================================================================  
# Configure Main Scheduler Properties  
#============================================================================

# 实例名
org.quartz.scheduler.instanceName = QuartzScheduler 
# 实例ID
org.quartz.scheduler.instanceId = AUTO

#============================================================================
# Configure ThreadPool  
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
# 线程个数
org.quartz.threadPool.threadCount = 3
org.quartz.threadPool.threadPriority = 5

#============================================================================
# Configure JobStore  
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

#============================================================================
# Configure Plugins 
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
# org.quartz.plugins.xml.JobInitializationPlugin是Quartz自带的插件,
# 默认时,这个插件会在 classpath 中搜索名为 quartz_jobs.xml 
# 的文件并从中加载 Job 和 Trigger 信息
# v1.8之前用JobInitializationPlugin
#org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz_jobs.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval =10
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false

# 关闭quartz新版本检测功能
org.quartz.scheduler.skipUpdateCheck = true
 
>> 配置quartz_jobs.xml文件
 
在配置quart_jobs.xml时,遇到一个问题:
Exception in thread "main" org.quartz.SchedulerException: SchedulerPlugin class'org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin;' couldnot be instantiated.
 
因为quartz从版本1.8开始,配置文件有所改动,以前quartz自带的插件是JobInitializationPlugin,而1.8中是XMLSchedulingDataProcessorPlugin. xml schema亦有所改变,难道是改变后配置不对?错误提示是插件类找不到,jar包也都加入到工程了啊。最后终于发现,在quartz.properties特性文件中配置插件行最后多打了个分号。原来是一个多余的分号引发的错误!
 
下面是新的xml配置文件格式示例。
 
代码清单6:quartz_jobs.xml格式 

<?xmlversion="1.0"encoding="UTF-8"?> 

<job-scheduling-dataxmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData" 

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

   xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.ogr/xml/job_scheduling_data_1_8.xsd" 

   version="1.8"> 

   <pre-processing-commands> 

       <!--在执行作业和触犯器之前执行的命令--> 

       <delete-jobs-in-group>*</delete-jobs-in-group> 

       <!--删除标示组中的所有作业,如果是“*”,则删除所有组中的作业,同时也会删除与作业有关的触犯器 --> 

       <delete-triggers-in-group>*</delete-triggers-in-group> 

       <!--删除标示组中的所有触犯器,如果是“*”,则删除所有组中的触发器 --> 

       <delete-job> 

           <!--删除指定的作业,同时也会删除与它关联的触犯器 --> 

           <name></name> 

           <group></group> 

       </delete-job> 

       <delete-trigger> 

           <!--删除指定的触犯器 --> 

           <name></name> 

           <group></group> 

       </delete-trigger> 

   </pre-processing-commands> 

 

   <processing-directives> 

       <!--在计划作业和触发器是应遵循的命令和原则 --> 

       <overwrite-existing-data>true or false</overwrite-existing-data> 

       <!--是否复写已经存在的任务计划数据,如果为false并且ingore-duplicatesfalse,那么文件中同名的触发器或作业将会继续存在,则会产生错误--> 

       <ignore-duplicates>true or false</ignore-duplicates> 

       <!--如果为true,计划中的任何同名的作业/触发器将会被忽略,不会产生错误--> 

   </processing-directives> 

 

   <schedule> 

       <job> 

           <name>JobName</name> 

           <group>JobGroup</group> 

           <description></description> 

           <job-class></job-class> 

           <job-listener-ref></job-listener-ref> 

           <!-- volatility,durability,recover必须按顺序设定 --> 

           <volatility></volatility> 

           <durability></durability> 

           <recover></recover> 

           <job-data-map> 

               <!-- entry可以设定多个--> 

               <entry> 

                   <key></key> 

                   <value></value> 

               </entry> 

           </job-data-map> 

       </job> 

       <trigger> 

           <!-- Trigger分为simplecrondate-interval三种类型,一个trigger中只能指定一种类型--> 

           <simple> 

               <name></name> 

               <group></group> 

               <description></description> 

               <job-name></job-name> 

               <job-group></job-group> 

               <calendar-name></calendar-name> 

               <volatility></volatility> 

               <job-data-map> 

                   <entry> 

                       <key></key> 

                       <value></value> 

                   </entry> 

               </job-data-map> 

               <start-time></start-time> 

               <end-time></end-time> 

               <misfire-instruction></misfire-instruction> 

               <repeat-count></repeat-count> 

               <repeat-interval></repeat-interval> 

           </simple> 

           <cron> 

               <name></name> 

               <group></group> 

               <description></description> 

               <job-name></job-name> 

               <job-group></job-group> 

               <calendar-name></calendar-name> 

               <volatility></volatility> 

               <job-data-map> 

                   <entry> 

                       <key></key> 

                       <value></value> 

                   </entry> 

               </job-data-map> 

               <start-time></start-time> 

               <end-time></end-time> 

               <misfire-instruction></misfire-instruction> 

               <cron-expression></cron-expression> 

               <time-zone></time-zone> 

           </cron> 

           <date-interval> 

               <name></name> 

               <group></group> 

               <description></description> 

               <job-name></job-name> 

               <job-group></job-group> 

               <calendar-name></calendar-name> 

               <volatility></volatility> 

               <job-data-map> 

                   <entry> 

                       <key></key> 

                       <value></value> 

                   </entry> 

               </job-data-map> 

               <start-time></start-time> 

               <end-time></end-time> 

               <misfire-instruction></misfire-instruction> 

               <repeat-interval></repeat-interval> 

               <repeat-interval-unit></repeat-interval-unit> 

           </date-interval> 

       </trigger> 

   </schedule> 

</job-scheduling-data>

 

 
代码清单7:quartz_jobs.xml示例

<?xmlversion="1.0"encoding="UTF-8"?>  

<job-scheduling-dataxmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData" 

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

   xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd" 

   version="1.8">  

      

   <pre-processing-commands>  

       <delete-jobs-in-group>*</delete-jobs-in-group> <!-- clear all jobs in scheduler -->  

       <delete-triggers-in-group>*</delete-triggers-in-group><!-- clear all triggers in scheduler -->  

   </pre-processing-commands>  

      

   <processing-directives>  

       <overwrite-existing-data>true</overwrite-existing-data>  

       <ignore-duplicates>false</ignore-duplicates>   

   </processing-directives>  

      

   <schedule>  

       <job>  

           <name>helloQuartzJob</name>  

           <group>DEFAULT</group>  

           <description>简单的quartz使用</description>  

           <job-class>HelloQuartzJob</job-class>  

           <volatility>false</volatility>  

           <durability>true</durability>  

           <recover>false</recover>  

       </job>  

       <trigger>  

       <cron>

                <name>trigger</name>     

              <group>DEFAULT</group>     

              <job-name>helloQuartzJob</job-name>     

              <job-group>DEFAULT</job-group> 

             <cron-expression>30/5 * * * * ?</cron-expression>

       </cron>   

       </trigger>

   </schedule>      

</job-scheduling-data>

 
代码清单8:Quartz任务调度
public class HelloQuartzScheduling {
    
    public static void main(String[] args) 
       throws SchedulerException, ParseException {
       
       SchedulerFactory schedulerFactory = new StdSchedulerFactory();
       Scheduler scheduler = schedulerFactory.getScheduler();
       
       scheduler.start();              
    }   
}

 

这里遇到个问题,提示错误:

Exception in thread "main" Java.lang.NoClassDefFoundError: javax/transaction/UserTransaction

 

是由于缺少jta.jar,google出的结果是在quartz发行包的/lib中有此jar包,但是在1.8中没有找到。下载quartz 1.7中,也没有找到,因此,在网上搜一个jta.jar包放置过程classpath中,然后编译运行,ok.

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. MOS管的工作原理及常见的封装(看完必会)

    MOS管的工作原理及常见的封装目录MOS管的概述MOS管的性能MOS管的管脚及常见封装识别MOS管的导通条件加强理解MOS管Question?致谢MOS管的概述场效应管(FET),把输入电压的变化转化为输出电流的变化。FET的增益等于它的跨导, 定义为输出电流的变化和输入电压变化之比。市面上…...

    2024/4/14 11:51:54
  2. STM32中整型数和字符的相互转换

    //整形转字符,stm32不支持标准的itoa,这里自己实现 char *myitoa(int value, char *string, int radix) {int i, d;int flag = 0;char *ptr = string;/* This implementation only works for decimal numbers. */if (radix != 10){*ptr = 0;return string;}if (!va…...

    2024/4/14 11:52:19
  3. 二极管工作原理

    那是1947年的一个冬天,贝尔实验室的三位科学家发明了三极管,改变了世界,推动了全球的半导体电子工业。于是10年后又一个冬天,哥仨一起获得了诺贝尔物理学奖。然而这三极管可不是被凭空发明出来的,从结构上看,她是由两个二极管组成,绝逼二极管“干儿子”。今天电子产品世…...

    2024/4/18 15:52:04
  4. 『C/C++』整型和字符串相互转换

    原文地址:整型和字符串相互转换 我们写程序的时候经常会遇到整型和字符串相互转换的问题,这里要用到几个函数,itoa(),atoi(),sprintf()下面来介绍下这几个函数的具体用法!itoa功 能:把一整数转换为字符串用 法:char *itoa(int value, char *string, int radix);详细解释:…...

    2024/4/14 11:51:54
  5. Quartz和Timer两种定时器的区别

    1:Quartz:Spring配置文件:<!-- 配置触发器 --><!-- 配置JOB类 --><bean id="schedulers" class="com.java.activiti.scheduler.schedulers"></bean><!-- 配置JobDetail --><bean id="jobDetail" class=&quo…...

    2024/4/14 15:07:03
  6. 三极管开关电路设计详细过程

    三极管除了可以当做交流信号放大器之外,也可以做为开关之用。严格说起来,三极管与一般的机械接点式开关在动作上并不完全相同,但是它却具有一些机械式开关所没有的特点。图1所示,即为三极管电子开关的基本电路图。由下图order="0" align="center" marg…...

    2024/4/14 11:51:59
  7. Spring Quartz 和 Spring Task对比

    Spring Quartz 和 Spring Task执行时间对比: 1. Quartz设置同步模式时:一个任务的两次执行的时间间隔是:“执行时间”和“trigger的设定间隔”的最大值 2. Task默认同步模式:一个任务的两次执行的时间间隔是:“执行时间”+“trigger的设定间隔”,即一个任务完成执行后,才…...

    2024/4/20 9:35:48
  8. golang中字符串与数值的转换,整型转浮点型

    #string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, 64) #int到string string:=strconv.Itoa(int) #int64到string string:=strconv.FormatInt(int64,10)Float64转int,Int转Unit8 import ("math""fmt&quo…...

    2024/3/25 12:15:11
  9. 霍尔传感器的工作原理、分类及应用

    ...

    2024/4/14 11:52:29
  10. Go 数字转字符串,字符串转数字, 枚举

    数字转字符串,字符串转数字 package main import ( “fmt” “strconv” ) func main() { // 80 转换成 "80" //number := 80 // //number_int :=strconv.Itoa(number) // //fmt.Println(number_int) //fmt.Printf("%T", number_int)// 如果不用这种的,可…...

    2024/4/15 16:30:38
  11. Spring+监听器+Quartz集群(1)——基本配置

    先说说项目背景,因为业务需求,项目中有很多定时任务,这自然用到了Quartz这个开源产品。而在这之前使用的Quartz主要是基于内存的,在应用程序启动时,由监听器创建定时任务,为了防止多个应用程序重新创建任务,只能在发布时,在另外的web.xml中禁用监听器。这样系统发布变得…...

    2024/4/19 9:17:01
  12. DB2把整型转换成制定长度的字符串,前面补0

    select a.auto_id,right(digits(cast(auto_id as bigint)),18) from T_BZ_DEMO_AREA_APP a; digits必须使用整型参数。 auto_id类型为:small integer :返回5位字符串。large integer :返回10位字符串。big integer :返回19位字符串。 如果需要的字符串长度不是上面这些长…...

    2024/4/14 11:59:16
  13. 了解了三极管的特性对你使用单片机就顺手很多

    实际上,只要你了解了三极管的特性对你使用单片机就顺手很多了。大家其实也都知道三极管具有放大作用,但如何去真正理解它却是你以后会不会使用大部分电子电路和IC的关键。 我们一般所说的普通三极管是具有电流放大作用的器件。其它的三极管也都是在这个原理基础上功能延伸。三…...

    2024/4/17 16:19:54
  14. Quartz2教程(一)——quatz的介绍与基本概念

    很久没有记录一下新的东西了,最近看了一下java平台上的quartz框架,并计划把它使用在目前的项目中,去解决一些问题,如定时计算用户的收益,定时提醒用户预订的资源需要被使用等等。 一、quartz抽象出的任务调度 quartz是一个任务调度框架,通过用户设定的的规则(多为时间方…...

    2024/4/5 19:05:30
  15. STM32学习笔记3——怎样将整型变量转换为字符变量 然后串口 或者LCD发送出来(STM32) 以及sprintf的用法

    原文地址:http://blog.sina.com.cn/s/blog_60e5783601017vb8.html怎样将整型变量转换为字符变量 然后串口 或者LCD发送出来(STM32) 以及sprintf的用法u8 b;unsigned char c[3]; b=123; c[0]= (unsigned char)((b/100)); c[1]= (unsigned char)((b/10)); c[2]= (unsigned cha…...

    2024/4/20 3:19:13
  16. 真空电子三极管简介

    1906年10月25日,美国科学家德福雷斯特申请了真空三极管放大器的专利,第二天又向美国电气工程师协会提交了关于三级管放大器的论文。他的专利于1907年1月15日被批准。 美国科学家德福雷斯特(Lee de Forest,1873~1961)福雷斯特的真空三级管建立在前人发明的真空二极管的技术…...

    2024/4/14 11:53:09
  17. Quartz定时器中Service注入时空指针问题解决

    上周在做一个任务调度时,用到了Quartz定时器,用的xml配置方式,随后进行数据库操作时,发现service注入不进去,报空指针错误,然后网上查了一些资料,找到了一个比较好的解决方法,详情如下:1. 问题:用quartz定时器中的QuartzJobBean进行业务处理时,service对象会报…...

    2024/4/14 11:52:59
  18. 复合三极管

    复合管通常由两个三极管组成,这两个三极管可以是同型号的,也可以是不同型号的;可以是相同功率,也可以是不同功率。无论怎样组合连接,最后所构成的三极管的放大倍数都是二者放大倍数乘积。电路连接一般有四种接法:即NPN+NPN、PNP+PNP、NPN+PNP、PNP+NPN。复合三级管的主要…...

    2024/4/14 16:51:39
  19. 【Python】 整型数与字符串相互转换

    Python中字符串转换为数值:str_num = 100 num = int(str_num)整型数转换为字符串:num = 100 str_num = str(num)...

    2024/3/25 4:44:26
  20. SpringBoot+Quartz图形化(有源码)

    在我们日常的开发中,很多时候,定时任务都不是写死的,都是写好代码,页面配置,定时器执行规则都是灵活的,是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能。https://github.com/huyufan1995/Quartz.git本次demo是SpringBoot的,毕竟…...

    2024/4/18 15:03:43

最新文章

  1. 比例微积分算法

    比例微积分&#xff08;Proportional-Integral-Derivative&#xff0c;简称PID&#xff09;算法是一种常用的控制算法&#xff0c;它用于计算控制器的输出&#xff0c;以使得系统的输出能够尽可能地跟踪期望的目标值。PID控制器基于系统的误差&#xff08;目标值与当前值的差&a…...

    2024/4/20 20:51:36
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. OpenHarmony开发-连接开发板调试应用

    在 OpenHarmony 开发过程中&#xff0c;连接开发板进行应用调试是一个关键步骤&#xff0c;只有在真实的硬件环境下&#xff0c;我们才能测试出应用更多的潜在问题&#xff0c;以便后续我们进行优化。本文详细介绍了连接开发板调试 OpenHarmony 应用的操作步骤。 首先&#xf…...

    2024/4/19 23:50:25
  4. npm常用命令技巧

    NPM (Node Package Manager) 是 JavaScript 的包管理工具&#xff0c;广泛用于管理项目中的依赖。无论是前端项目还是Node.js后端项目&#xff0c;NPM 都扮演着重要的角色。本文将介绍 NPM 中常用的几个命令&#xff0c;并提供相应的代码示例。 1. 初始化项目&#xff1a;npm …...

    2024/4/19 14:30:06
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/19 14:24:02
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/19 18:20:22
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/19 11:57:31
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/19 11:57:31
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/19 11:57:52
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/19 11:57:53
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/19 11:58:14
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/19 11:58:20
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/20 7:40:48
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/19 11:58:39
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/19 11:58:51
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/20 3:12:02
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/19 11:59:15
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/19 11:59:23
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/19 11:59:44
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/19 11:59:48
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/19 12:00:06
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/19 16:57:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/19 12:00:25
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/19 12:00:40
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57