不同语言下的定时器,你都掌握了吗?

news2024/10/5 21:22:31

我们大家都对定时器不陌生,无论是现实中还是项目中,都离不开定时。在现实中,它叫闹钟,在项目上,它叫定时器,即定时触发某件事情。它能帮助我们在某一个既定的时间节点上,来提醒我们做一些事情,那么作为一个项目开发人员,你都会哪些语言来写定时器呢?

不同语言下的定时器,你都掌握了吗?

  • 1、Java第三方工具
  • 2、Java自带类
  • 3、JavaScript实现定时器
  • 4、C语言实现定时器
  • 5、Mysql实现定时器
  • 6、Shell 实现定时器
  • 7、Python实现定时器

1、Java第三方工具

利用Java实现定时器,现在项目中一般使用第三方比如 schedule 或者 xxl-job 等来处理,这里就先介绍使用第三方工具的写法。

@Component
@EnableScheduling
public class Test {

    @Scheduled(cron = "*/3 * * * * ?")
    public void test() {
        int count = 0;
        System.out.printf(count + ": " + new Date());
        count++;
    }
    
}

在这里插入图片描述

2、Java自带类

其实我们叶可以使用Java 的 SDK 自带的 Timer 类,来实现定时器功能:

  public class Test {

    public static void main(String[] args) {
        // 定义一个任务
        TimerTask stepTimerTask = new TimerTask() {
            @Override
            public void run() {
                System.out.println("运行定时Step任务:" + new Date());
                System.out.println("运行Step完毕");
            }
        };
        // 计时器
        Timer timer = new Timer();
        // 添加执行任务(延迟1s执行,每三秒执行一次)
        timer.schedule(stepTimerTask, 1000, 3000);

    }
}

在这里插入图片描述

3、JavaScript实现定时器

我们也可以使用JavaScript来实现延时定时器

var t2 = window.setInterval(function() {

console.log(‘每隔3秒钟执行一次’)

},1000)

//清除定时器
window.clearInterval(t2)  

4、C语言实现定时器

我们也可以使用C语言来实现一个简单的定时器。

void timer(long time){

 clock_t start;
 long count = 1;
 start = clock();
 
 while(1)
 {
 if((clock() - start) != (time*CLOCKS_PER_SEC))
 {
 //时间没有到,啥也不做,空循环
 }else {
   //时间到了退出循环
   // printf("%s","hello");
   break;
  }
 }
}
int main( void )
{
 for(int i=0;i<10;i++){
  timer(1);
  printf("%d\n",i);
 }
 getch();
}

5、Mysql实现定时器

我们在使用Mysql的时候,有时也会使用MySql自带的定时器,来定时执行sql语句:
例如:

-- 每天0点执行
create event if not EXISTS my_monitor 
on schedule every  1 DAY STARTS date(CURRENT_DATE+1) 
on completion preserve  do call insert_monitor(); 

当然还需要做一些前期的准备工作,比如开启Mysql的定时策略,创建存储函数等等,这里就不介绍了。

6、Shell 实现定时器

有时候,我们也会在Linux上来实现定时脚本,来定时执行一些任务:

首先我们需要一个执行的内容脚本,例如:test.sh:

echo "测试" >> /test
echo "执行时间为`date` " >> /test

然后使用 crontab -e 命令进入定时编辑

*/1 * * * * sh /test/test.sh

7、Python实现定时器

Python和Java实现定时器一样,有多种方式,这里就只介绍Python原生实现定时器:

def task():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    print(ts)

 
def fun():
    while True:
        task()
        time.sleep(3)
 

fun()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Markdown基本语法简介

前言&#xff1a;当你在git平台创建一个仓库时&#xff0c;平台会自动创建一个README.md文件&#xff0c;并将它的内容展现在web端页面&#xff0c;方面其他读者查阅。README.md实则是一个适用Markdown语法的文本文件&#xff0c;从他的后缀md即可看出它是Markdown的缩写。在gi…

实战:kubeadm方式搭建k8s集群(k8s-v1.22.2,containerd-v1.5.5)-2023.2.22(测试成功)

实验环境 1、硬件环境 3台虚机 2c2g,20g。(nat模式&#xff0c;可访问外网) 角色主机名ipmaster节点master1172.29.9.51node节点node1172.29.9.52node节点node2172.29.9.53 2、软件环境 软件版本操作系统centos7.6_x64 1810 mini(其他centos7.x版本也行)containerdv1.5.5ku…

【项目】DTO、VO以及PO之间的关系和区别

【项目】DTO、VO以及PO之间的关系和区别 文章目录【项目】DTO、VO以及PO之间的关系和区别1.概念2. 作用1.概念 DTO&#xff1a;DTO是 Data Transfer Object 的缩写&#xff0c;也叫数据传输对象。 PO&#xff1a;PO是 Persistent Object 的缩写&#xff0c;也叫持久化对象。 …

Java 集合 --- HashMap的底层原理

Java 集合 --- HashMap的底层原理HashMap的下标计算计算步骤为什么要 h ^ (h >>> 16)为什么数组长度必须是2^nHashMap的树化HashMap的扩容HashMap的put流程HashMap的线程安全问题HashMap的下标计算 计算步骤 第一步: 计算hash值 将h 和 h右移十六位的结果 进行XOR操…

Java的dump文件分析及JProfiler使用

Java的dump文件分析及JProfiler使用 1 dump文件介绍 从软件开发的角度上&#xff0c;dump文件就是当程序产生异常时&#xff0c;用来记录当时的程序状态信息&#xff08;例如堆栈的状态&#xff09;,用于程序开发定位问题。 idea配置发生OOM的时候指定路径生成dump文件 # 指定…

关于upstream的八种回调方法

1 creat_request调用背景&#xff1a;用于创建自己模板与第三方服务器的第一次连接步骤1&#xff09; 在Nginx主循环&#xff08;ngx_worker_process_cycle方法&#xff09; 中&#xff0c;会定期地调用事件模块&#xff0c; 以检查是否有网络事件发生。2&#xff09; 事件模块…

智慧校园平台源码 智慧教务 智慧电子班牌系统

系统介绍 智慧校园系统是通过信息化手段,实现对校园内各类资源的有效集成 整合和优化&#xff0c;实现资源的有效配置和充分利用&#xff0c;将校务管理过程的优化协调。为校园提供数字化教学、数字化学习、数字化科研和数字化管理。 致力于为家长和教师提供一个全方位、多层…

ChatGPT的出现网络安全专家是否会被替代?

ChatGPT的横空出世&#xff0c;在业界掀起了惊涛骇浪。很多人开始担心&#xff0c;自己的工作岗位是否会在不久的将来被ChatGPT等人工智能技术所取代。网络安全与先进技术发展密切相关&#xff0c;基于人工智能的安全工具已经得到很多的应用机会&#xff0c;那么未来是否更加可…

关于表格表头和第一列固定

主要是使用黏性布局 position: sticky; top: 0;//left:0; 来实现 给test-table一个固定的宽和高 然后trauma-table开启inline-flex布局&#xff08;注意不能用flex布局 否则 trauma-table的宽度不能被子元素撑起来 会滚动到一定宽度后吸左侧的效果就没有了&#xff09;&am…

Spring 用到了哪些设计模式

关于设计模式&#xff0c;如果使用得当&#xff0c;将会使我们的代码更加简洁&#xff0c;并且更具扩展性。本文主要讲解Spring中如何使用策略模式&#xff0c;工厂方法模式以及Builder模式。1. 策略模式关于策略模式的使用方式&#xff0c;在Spring中其实比较简单&#xff0c;…

【每日一题】缓存穿透、缓存击穿、缓存雪崩及解决方案

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 当下ChatGPT很火&#xff0c;让人心痒痒想试一试好不好用&#xff0c;因此我就试着借它写一篇文章&#xff0c;但是试了几次最终还是没有…

电子技术——负反馈特性

电子技术——负反馈特性 本节我们进一步深入介绍负反馈特性。 增益脱敏性 假设 β\betaβ 是一个常数。考虑下面的微分方程&#xff1a; dAfdA(1Aβ)2dA_f \frac{dA}{(1 A\beta)^2} dAf​(1Aβ)2dA​ 将上式除以 AfA1AβA_f \frac{A}{1A\beta}Af​1AβA​ 得到&#xff1…

LDAP使用docker安装部署与使用

一、准备工作本地或者服务器中安装dockerapt update apt install -y docker.io systemctl restart docker将openLDAP的docker镜像拉取到本地。镜像拉取命令&#xff1a;docker pull osixia/openldap将openLDAP的可视化管理工具phpldapadmin的镜像拉取到本地。镜像拉取命令&am…

来香港一年的感悟与随笔

再过三周&#xff0c;来港就满一年了。 人生就是这样&#xff0c;有时候很微妙&#xff1a;在小木虫看到老板的信息&#xff0c;两封邮件一次面试&#xff0c;我就来香港了。 这一年里的感悟和变化&#xff0c;主要在对科学研究的认识以及对人生与选择的感悟和回顾这两个方面。…

GUI可视化应用开发及Python实现

0 建议学时 4学时&#xff0c;在机房进行 1 开发环境安装及配置 1.1 编程环境 安装PyCharm-community-2019.3.3 安装PyQt5 pip install PyQt5-tools -i https://pypi.douban.com/simple pip3 install PyQt5designer -i https://pypi.douban.com/simple1.2 环境配置 选择“…

Elasticsearch集群内存占用高?用这招!

一、freeze index冻结索引介绍 Elasticsearch为了能够实现高效快速搜索&#xff0c;在内存中维护了一些数据结构&#xff0c;当索引的数量越来越多&#xff0c;那么这些数据结构所占用的内存也会越来越大&#xff0c;这是一个不可忽视的损耗。 在实际的业务开展过程中&#x…

实战——缓存的使用

文章目录前言概述实践一、缓存数据一致1.更新缓存类2.删除缓存类二、项目实践&#xff08;商城项目&#xff09;缓存预热双缓存机制前言 对于我们日常开发的应用系统。由于MySQL等关系型数据库读写的并发量是有一定的上线的&#xff0c;当请求量过大时候那数据库的压力一定会上…

3717: yuyu学数数

描述yuyu开始学数数了&#xff0c;她要爸爸给他一些火柴棍&#xff0c;她要拼出很多数来。yuyu每次说要拼什么数字&#xff0c;爸爸就得想想要给她几根&#xff0c;好累啊&#xff0c;于是就只好写程序了。输入输入数据有多组&#xff0c;每组占一行&#xff0c;每行一个非负整…

K_A12_030 基于STM32驱动Pulse sensor心率模块 上位机与OLED0.96双显示

K_A12_030 基于STM32驱动Pulse sensor心率模块 上位机与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明STM32 ADC采集:四、部分代码说明1、接线引脚定义STM32F103C8T6Pulse sensor心率模块五、基础知识学习与相关资料下载六、视频效果展示与程序资料获取七、…

计算机内存数值存储方式-原码、反码、补码

计算机内存数值存储方式 1、原码 一个数的原码(原始的二进制码)有如下特点&#xff1a; ①最高位做为符号位&#xff0c;0表示正,为1表示负 ②其它数值部分就是数值本身绝对值的二进制数 ③负数的原码是在其绝对值的基础上&#xff0c;最高位变为1 下面数值以1字节的大小描述…