草庐IT

PowerDotNet平台化软件架构设计与实现系列(06):定时任务调度平台

定时任务是后端系统开发中少不了的一个基本必备技能。传统的实现定时任务的方式有很多种,比如直接使用操作系统的Timer和TaskSchedule,或者基于Quartz、HangFire、xxl-job、es-job等优秀开源任务调度框架。PowerDotNet在借鉴现有任务调度框架Quartz的基础上,配合PowerDotNet自研的服务治理平台,加以改进和优化,实现了一套非常易用的任务调度平台系统。接入PowerDotNet的定时任务调度平台,开发人员只要专注开发API接口,然后点点按钮配置下CRON表达式即可,完全感受不到Quartz的存在,距离“动动鼠标解决问题”的目标更近一步了,咩哈哈。

Linux 定时器介绍

以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/YZTaGkKDRXzE7sMcrfxS-w曾经常去沙县小吃,就为了蹭上一碗4块钱的葱油拌面,听着边上的几位小哥老说华仔,有软硬之分。其实写代码也有这种讲究。在linux系统中定时器有分为软定时和硬件定时器,硬件定时器一般指的是CPU的一种底层寄存器,它负责按照固定时间频率产生中断信号,形成信号源。基于硬件提供的信号源,系统就可以按照信号中断来计数,计数在固定频率下对应固定的时间,根据预设的时间参数即可产生定时中断信号,这就是软定时。这里主要讲软定时器,而硬件定时器涉

Linux 定时器介绍

以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/YZTaGkKDRXzE7sMcrfxS-w曾经常去沙县小吃,就为了蹭上一碗4块钱的葱油拌面,听着边上的几位小哥老说华仔,有软硬之分。其实写代码也有这种讲究。在linux系统中定时器有分为软定时和硬件定时器,硬件定时器一般指的是CPU的一种底层寄存器,它负责按照固定时间频率产生中断信号,形成信号源。基于硬件提供的信号源,系统就可以按照信号中断来计数,计数在固定频率下对应固定的时间,根据预设的时间参数即可产生定时中断信号,这就是软定时。这里主要讲软定时器,而硬件定时器涉

Linux-crontab 定时任务配置

Linux-crontab定时任务配置介绍crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。Linuxcrontab是用来定期执行程序的命令。crontab可理解为cron_table,表示cron的任务列表。crontab的服务进程名为crond,英文意为周期任务。crond每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可

Linux-crontab 定时任务配置

Linux-crontab定时任务配置介绍crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。Linuxcrontab是用来定期执行程序的命令。crontab可理解为cron_table,表示cron的任务列表。crontab的服务进程名为crond,英文意为周期任务。crond每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可

深挖【let, for与定时器】引发的疑惑

在一些文章中或者工作面试问题上,会遇见这种看似简单的经典问题。for(vari=0;i对于老鸟来说这种问题不足挂齿,但是如果你是新手正在学习js的路上如火如荼或是刚好遇到了此类问题一知半解,那么这篇文章将给你带来原理和解答。小小问题背后别有洞天。单线程JS是典型的单线程语言,所谓单线程就是只能同时执行一个任务。之所以是单线程而不是多线程,是为了避免多线程对同一DOM对象操作的冲突。比如A线程创造一元素而B线程同时想要删除这个元素那么就会出现矛盾。所以单线程是JS的核心特征。操作系统的进程和线程:对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,

深挖【let, for与定时器】引发的疑惑

在一些文章中或者工作面试问题上,会遇见这种看似简单的经典问题。for(vari=0;i对于老鸟来说这种问题不足挂齿,但是如果你是新手正在学习js的路上如火如荼或是刚好遇到了此类问题一知半解,那么这篇文章将给你带来原理和解答。小小问题背后别有洞天。单线程JS是典型的单线程语言,所谓单线程就是只能同时执行一个任务。之所以是单线程而不是多线程,是为了避免多线程对同一DOM对象操作的冲突。比如A线程创造一元素而B线程同时想要删除这个元素那么就会出现矛盾。所以单线程是JS的核心特征。操作系统的进程和线程:对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,

基于stm32F407ZGT6的三重ADC交替采样+DMA传输数据+定时器TRGO触发

好久没写博客了,最近挺忙的。近来有些好玩的实现,网上的资料并不是非常详细,打算慢慢写下来,希望别人能少走一点弯路。因为希望提高ADC的采样率,这次我试着实现了一下三重ADC交替采样+DMA搬运至内存+TIM的TRGO触发采样(环境是stm32cubemx6.5.0和keil5) 首先打开cubemx进行基础设置(设置时钟树,RCC,SYS)然后设置ADC1(下图为具体设置,仅供参考)此处我们将ADC_Mode设置为Tripleregularsimultaneousmodeonly,并打开DMA连续请求(为了使DMA能够填满数组,按照我们的预期工作)外部触发源设置为TIM2的TRGO由于已经设置

基于stm32F407ZGT6的三重ADC交替采样+DMA传输数据+定时器TRGO触发

好久没写博客了,最近挺忙的。近来有些好玩的实现,网上的资料并不是非常详细,打算慢慢写下来,希望别人能少走一点弯路。因为希望提高ADC的采样率,这次我试着实现了一下三重ADC交替采样+DMA搬运至内存+TIM的TRGO触发采样(环境是stm32cubemx6.5.0和keil5) 首先打开cubemx进行基础设置(设置时钟树,RCC,SYS)然后设置ADC1(下图为具体设置,仅供参考)此处我们将ADC_Mode设置为Tripleregularsimultaneousmodeonly,并打开DMA连续请求(为了使DMA能够填满数组,按照我们的预期工作)外部触发源设置为TIM2的TRGO由于已经设置

关于软件定时器的一些讨论

1、简介这里先介绍下软件定时器和硬件定时器的区别硬件定时器:CPU内部自带的定时器模块,通过初始化、配置可以实现定时,定时时间到以后就会执行相应的定时器中断处理函数。硬件定时器一般都带有其它功能,比如PWM输出、输入捕获等等功能。但是缺点是硬件定时器数量少!!软件定时器:软件定时器允许设置一段时间,当设置的时间到达之后就执行指定的功能函数,被定时器调用的这个功能函数叫做定时器的回调函数。回调函数的两次执行间隔叫做定时器的定时周期,简而言之,当定时器的定时周期到了以后就会执行回调函数。在FreeRTOS中有专门的软件定时器功能,我们可以在MCU中简单的是实现“软件定时器”如下:voidtimer