CN112148556B - 一种基于位运算的软件防抖方法和装置 - Google Patents
一种基于位运算的软件防抖方法和装置 Download PDFInfo
- Publication number
- CN112148556B CN112148556B CN202010963634.2A CN202010963634A CN112148556B CN 112148556 B CN112148556 B CN 112148556B CN 202010963634 A CN202010963634 A CN 202010963634A CN 112148556 B CN112148556 B CN 112148556B
- Authority
- CN
- China
- Prior art keywords
- queue
- bit
- alarm
- content
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000015654 memory Effects 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 7
- 238000005070 sampling Methods 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 4
- 238000007493 shaping process Methods 0.000 claims description 3
- 238000001914 filtration Methods 0.000 abstract description 10
- 230000008569 process Effects 0.000 description 23
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/327—Alarm or error message display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Testing And Monitoring For Control Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及嵌入式控制技术领域,提供了一种基于位运算的软件防抖方法和装置。在每一轮获取到新的告警采集内容需要进行记录时,寻址到相应队列的记录目标bit位;确认告警采集内容属于告警或者非告警,并将告警采集内容转换为相应的bit值;将由告警采集内容转换得到的bit值和寻址到的目标比特位进行位或运算,完成新一轮告警采集内容在队列中的入队。本发明用于优化软件滤波算法的性能,在算法的空间复杂度和时间复杂度上达到最优,使得在硬件资源较少、性能不足的嵌入式系统中,实现大量告警量和开关量的有效滤波防抖操作。
Description
【技术领域】
本发明涉及嵌入式控制技术领域,特别是涉及一种基于位运算的软件防抖方法和装置。
【背景技术】
嵌入式控制系统中,采集开关量和/或告警量时,这些开关量和告警量通常来源于外围的硬件设备或者环境,这些量的特点是不稳定,通常会有一些抖动或干扰。一般的防抖方式是保存n个历史记录,根据这n个历史检测记录是否一致来判断是否有抖动。该方法比较直接,但是扩展性不够好,使用不够灵活。每缓存一个新的检测值,都需要往前拷贝n-1个记录,代码运算效率不够高,占用内存空间大;比较n个检测值是否相等时,也显得有些麻烦。如下为伪代码描述:
v1,v2,v3....vn可以使用数组来保存,使用循环来做值拷贝和比较运算。
假如需要做4次或者更多次滤波防抖,那么,上面的代码需要增加多个变量,增加多次数值拷贝和逻辑判断。滤波深度增加,代码需要做一些改动,并且需要增加内存消耗和运算时间。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
【发明内容】
本发明要解决的技术问题是现有的软件滤波算法的性能,在算法的空间复杂度和时间复杂度上占用较多的资源,并且,扩展性不够好,使用不够灵活。
本发明采用如下技术方案:
第一方面,本发明提供了一种基于位运算的软件防抖方法,使用一个包含指定数量bit位的字节、整数或者字符串作为一个队列,用于缓存历史告警采集记录,每一个bit位代表一次采样记录结果,其中,bit位为0或者为1分别用于对应告警和非告警中的一种情况,方法包括:
在每一轮获取到新的告警采集内容需要进行记录时,寻址到相应队列的记录目标bit位;
确认告警采集内容属于告警或者非告警,并将告警采集内容转换为相应的 bit值;
将由告警采集内容转换得到的bit值和寻址到的目标比特位进行位或运算,完成新一轮告警采集内容在队列中的入队。
优选的,所述方法中以队列首部作为每一轮记录新的告警采集内容的bit 位,并且,在完成每一轮告警采集内容在队列中的入队后,执行一次队列中由队列首部向队列尾部的单bit位的整体单向移动;或者,在每一轮需要执行告警采集内容在队列中的入列操作时,执行一次队列中由队列首部向队列尾部的单bit位的整体单向移动;
其中,所述单bit位的整体单向移动,是指队列中的每一个bit位在保持既有前后相邻关系不变的情况下,都向队列尾部方向平移一位。
优选的,所述寻址到相应队列的记录目标bit位,具体为:寻址到相应队列的首部。
优选的,所述方法中以队列尾部作为每一轮记录新的告警采集内容的bit 位,并且,在完成每一轮告警采集内容在队列中的入队后,执行一次队列中由队列尾部向队列首部的单bit位的整体单向移动;或者,在每一轮需要执行告警采集内容在队列中的入列操作时,执行一次队列中由队列尾部向队列首部的单bit位的整体单向移动;
其中,所述单bit位的整体单向移动,是指队列中的每一个bit位在保持既有前后相邻关系不变的情况下,都向队列首部方向平移一位。
优选的,所述寻址到相应队列的记录目标bit位,具体为:寻址到相应队列的尾部。
优选的,在进行队列中所记录的告警信息的提取时,所述方法还包括:
确认当前队列中记录的告警采集内容个数,根据所述个数生成掩码;其中,所述掩码的长度和队列的长度相同;
在所述掩码中,对应于与队列中记录有告警采集内容的有效bit位设置为1,而相应没有记录告警采集内容的bit位设置为0;
将所述掩码和队列求位与运算,得到当前队列中所记载的告警采集内容。
优选的,所述队列在初始使用或者在每一次完成队列中记载的告警内容提取后,相应的队列的各个bit位的bit值被置0;则在进行队列中所记录的告警信息的提取时,所述方法还包括:
从队列的首部到尾部依次提取相应bit位中记载的bit位值,并相应的依次从数对象的低字节位向高字节位赋值;
根据所述队列赋值后的数对象的数值,还原出当前队列中的告警内容。
优选的,所述根据所述队列赋值后的数对象的数值,还原出当前队列中的告警内容,方法还包括:
根据二叉查找树法、二分查找法和顺序查找法中的一种或者多种,在预先排序好的告警序列里查找所述数对象的数值;
其中,所述告警序列中的每一个参数值,分别对应一告警状态阵列,两者之间建立有映射关系;在查找到告警序列中与所述数对象的数值一致的参数值时,根据所述参数值和告警状态阵列的映射关系,获取相应告警状态阵列。
优选的,指定数量bit位的字节、整数或者字符串,具体采用32位整形数作为队列长度;
其中,队列的数量为一个或者多个。
第二方面,本发明还提供了一种基于位运算的软件防抖装置,用于实现第一方面所述的基于位运算的软件防抖方法,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的基于位运算的软件防抖方法。
第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的基于位运算的软件防抖方法。
本发明描述一种基于位运算的告警滤波防抖方法,用于优化软件滤波算法的性能,在算法的空间复杂度和时间复杂度上达到最优,使得在硬件资源较少、性能不足的嵌入式系统中,实现大量告警量和开关量的有效滤波防抖操作。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于位运算的软件防抖方法流程示意图;
图2是本发明实施例提供的一种32位的队列效果示意图;
图3是本发明实施例提供的一种32位的队列变化效果示意图;
图4是本发明实施例提供的一种队列变化效果示意图;
图5是本发明实施例提供的一种队列变化效果示意图;
图6是本发明实施例提供的一种基于位运算的软件防抖方法流程示意图;
图7是本发明实施例提供的一种基于位运算的软件防抖方法流程示意图;
图8是本发明实施例提供的一种队列变化效果示意图;
图9是本发明实施例提供的一种基于位运算的软件防抖方法流程示意图;
图10是本发明实施例提供的一种基于位运算的软件防抖方法流程示意图;
图11是本发明实施例提供的一种基于位运算的软件防抖装置结构示意图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
本发明实施例1提供了一种基于位运算的软件防抖方法,使用一个包含指定数量bit位的字节、整数或者字符串作为一个队列,用于缓存历史告警采集记录,每一个bit位代表一次采样记录结果,其中,bit位为0或者为1分别用于对应告警和非告警中的一种情况,如图1所示,方法包括:
在步骤201中,在每一轮获取到新的告警采集内容需要进行记录时,寻址到相应队列的记录目标bit位。
在具体实现方式中,所述队列通常是分配自内存的指定存储区域,这是考虑到相应队列里的数据都是临时存储,而且需要顾及到高速的读写速率。而相应的队列寻址方式,通常是在使用过程中,记录相应队列的头部指针或者尾部指针,而相应的队列长度(即包含的bit位数)是系统在使用时候就已获知的,因此,在本发明实施例实现过程中,若完成相应队列的寻址,即可通过队列长度完成整个队列中存储内容的获取。
所述获取具体实现体现通常是一种即时的采集过程,而所述的告警采集内容其实就是一告警输出的电压信息。因此,上述的告警采集内容也可以被表述为告警电压、告警电流等等。
在步骤202中,确认告警采集内容属于告警或者非告警,并将告警采集内容转换为相应的bit值。
此处确认告警采集内容属于告警或者非告警,通常是与预先设定的告警电压阈值或者告警电压电流进行比对,若高于相应的告警电压阈值或者告警电压电流,则可以认定是一次告警类型的bit值转换,而非一次非告警类型的bit 值转换。
在具体实现中,所述的确认告警采集内容属于告警或者非告警,并将告警采集内容转换为相应的bit值,通常可以表现为告警采集内容为“告警”则转换后的相应bit值为1,若告警采集内容为“非告警”则转换后的相应bit值为 0;等同原理的,也可以表现为在告警采集内容为“告警”时,转换后的相应bit 值为0,若告警采集内容为“非告警”时,转换后的相应bit值为1。因此,本发明在具体实现过程中,只要保证“告警”和“非告警”分别对应bit位“0”和“1”中的某一值便可满足本发明实施例方案实现的需求。
在步骤203中,将由告警采集内容转换得到的bit值和寻址到的目标比特位进行位或运算,完成新一轮告警采集内容在队列中的入队;或者将由告警采集内容转换得到的bit值和寻址到的目标比特位进行位与运算,完成新一轮告警采集内容在队列中的入队。
在本发明实施例中,所述的“位或运算”指的是将两个bit位的值做逻辑或运算,这种实现方式主要是针对上述步骤202中指出的,在告警采集内容为“告警”则转换后的相应bit值为1,若告警采集内容为“非告警”则转换后的相应bit值为0,并且,初始的队列中的bit位置设置的是“0”的情况。
在本发明实施例中,所述的“位与运算”指的是将两个bit位的值做逻辑与运算,这种实现方式主要是针对上述步骤202中指出的,在告警采集内容为“告警”则转换后的相应bit值为0,若告警采集内容为“非告警”则转换后的相应bit值为1,并且,初始的队列中的bit位置设置的是“1”的情况。
本发明实施例描述一种基于位运算的告警滤波防抖方法,用于优化软件滤波算法的性能,在算法的空间复杂度和时间复杂度上达到最优,使得在硬件资源较少、性能不足的嵌入式系统中,实现大量告警量和开关量的有效滤波防抖操作。
在本发明实施例中,对于所述包含指定数量bit位的字节、整数或者字符串作为一个队列的使用方式至少提供了两种可行的实现方式,接下来将逐一针对两个实现方式进行展开阐述。
方式一:
以队列首部作为每一轮记录新的告警采集内容的bit位,并且,在完成每一轮告警采集内容在队列中的入队后,执行一次队列中由队列首部向队列尾部的单bit位的整体单向移动;或者,在每一轮需要执行告警采集内容在队列中的入列操作时,执行一次队列中由队列尾部向队列首部的单bit位的整体单向移动;
其中,所述单bit位的整体单向移动,是指队列中的每一个bit位在保持既有前后相邻关系不变的情况下,都向队列尾部方向平移一位。
此时,实施例1中所涉及的,所述寻址到相应队列的记录目标bit位,具体为:寻址到相应队列的首部。
以图2和图3为例,阐述上述的整体单向移动过程,在示例中以32bit位长度的整数作为队列的实现形式,其中,首部指针地址为相应队列的寻址地址记录目标bit位;而图2所示的编号1-32是为了方便观察整体单向移动过程而附加上去的标识内容。其中,图3是完成了上述的一个告警状态的bit位入列后的,并且完成了上述的一次整体单向移动过程后的状态示意图,从图3中可以看到,相应原本处于首部指针地址编号为1的bit位值,被移动到了队列的原本编号为2的bit位,而原本为编号32的bit位值则被从队列的尾部移出去了。
若将上述实施例1中所介绍的在本发明实施例中,所述的“位或运算”指的是将两个bit位的值做逻辑或运算,这种实现方式主要是针对上述步骤202 中指出的,在告警采集内容为“告警”则转换后的相应bit值为“1”,若告警采集内容为“非告警”则转换后的相应bit值为“0”,并且,初始的队列中的 bit位置设置的是“0”的情况应用到图2所示的实例,则相应的以队列中入列的是首个告警状态时,相应的对应图2和图3的转换过程,将以图4和图5的方式呈现。
在图4中,呈现了初始队列中的各个bit位的值都是“0”,而在第一个告警状态所转换后的相应bit值“1”过来要入列的时候,则会执行图4中位于首部指针地址的bit值“0”与相应bit值“1”做或运算,运算结果就是图4中的位于首部指针地址的bit值由“0”变为了“1”。相应的,在执行一次上述的整体单向移动过程,其队列内容便转换成了图5所示的结果。在图4和图5中取消了编号内容,可以知悉,在具体实现过程中,本身是没有编号的技术概念,上述图2和图3中引入编号,仅仅是为了方便技术理解使用的。
方式二:
以队列尾部作为每一轮记录新的告警采集内容的bit位,并且,在完成每一轮告警采集内容在队列中的入队后,执行一次队列中由队列尾部向队列首部的单bit位的整体单向移动;或者,在每一轮需要执行告警采集内容在队列中的入列操作时,执行一次队列中由队列尾部向队列首部的单bit位的整体单向移动;
其中,所述单bit位的整体单向移动,是指队列中的每一个bit位在保持既有前后相邻关系不变的情况下,都向队列首部方向平移一位。
此时,实施例1中所涉及的,所述寻址到相应队列的记录目标bit位,具体为:寻址到相应队列的尾部。
上述方式一和方式二的区别点在于整体单向移动过程的移动方向的不同,在具体实现过程中,方式一和方式二均可适用于不同场景需求,而具体采用哪一种,更多的是根据编程人员的编程习惯来选定。需要说明的是,方式一和方式二中均给予了整体单向移动触发时机的两种选择方式,一种是在有新的告警采集内容需要导入队列的时候,即时的进行整体单向移动;还有一种是每次在完成一轮告警采集内容导入队列操作后,便执行一次整体单向移动,为下一轮的告警采集内容导入队列提前预留好了位置。两种整体单向移动的实现方式各有优势,第一种即时的进行整体单向移动,从使用习惯上来说更容易理解,并且,相应的掩码更直观和清楚;而第二种预先为下一轮告警采集内容导入提前做好整体单向移动的方式,其导出数据时候,相应掩码需要预留一位,则掩码的生成和自带的信息内容,不容易直观的看出来,尤其是相应操作人员在不清楚上述第二种实现机制下,若其想直接通过掩码来反推队列的操作机制则难度将更大。但是,综合的从执行效率来说,第二种的写入效率会更高一些。
相对应的,本发明实施例在进行队列中所记录的告警信息的提取时,根据不用的情况可具体差异性实现为以下两种过程:
过程一,如图6所示,具体包括:
在步骤301中,确认当前队列中记录的告警采集内容个数,根据所述个数生成掩码;其中,所述掩码的长度和队列的长度相同。
在本发明实施例中,使用掩码的最深层次的意义在于队列在每次使用完之后,可以无需重置;而凭借掩码的操作,边可以将队列中历史遗留在队列bit 位中的无效信息进行过滤。
在步骤302中,在所述掩码中,对应于与队列中记录有告警采集内容的有效bit位设置为1,而相应没有记录告警采集内容的bit位设置为0。
在执行本步骤的时候,实际上要获取队列的入列方式是采样上述方式一,还是采用方式二,并进一步结合上述的告警采集内容个数来完成掩码中各bit 位的相应“0”或“1”赋值的,从而才能通过下述的步骤303中的进行掩码和队列之间的位与运算,将队列中并非有效记录告警内容的bit位通过与bit值“0”做与运算过滤掉,而将有效记录告警内容的bit位通过与bit值“1”做与运算保留下来。
在步骤303中,将所述掩码和队列求位与运算,得到当前队列中所记载的告警采集内容。
因此,从这个角度来说,本发明实施例中,若采用队列初始默认bit位值都为0,并且,在每次使用完队列(即进行了队列中告警内容的提取)时,会将队列中的每一个bit位进行清0操作,其中,在告警采集内容为“告警”则转换后的相应bit值为“1”,若告警采集内容为“非告警”则转换后的相应bit 值为“0”,此时,便可以不使用如步骤 301-303所描述的掩码。因此,有了下面阐述的过程二。
过程二:
在初始使用或者在每一次完成队列中记载的告警内容提取后,相应的队列的各个bit位的bit值被置0;则在进行队列中所记录的告警信息的提取时,如图7所示,所述方法还包括:
在步骤401中,从队列的首部到尾部依次提取相应bit位中记载的bit位值,并相应的依次从数对象的低字节位向高字节位赋值。
需要指出的是,步骤401所述的提取方式仅适用于上述方式一的入列方式,而对于上述的方式二的入列方式的话,则步骤401中的“从队列的首部到尾部依次提取相应bit位中记载的bit位值”,就需要调整为“从队列的尾部到首部依次提取相应bit位中记载的bit位值”,其它内容则无需过多的调整。
在步骤402中,根据所述队列赋值后的数对象的数值,还原出当前队列中的告警内容。
此处的数对象其所想表达的含义是,其类型是一个数,具体是8位、16位、 32位或者64位,则根据具体实现场景需要作出调整。其中,所述告警序列中的每一个参数值,分别对应一告警状态阵列,两者之间建立有映射关系;在查找到告警序列中与所述数对象的数值一致的参数值时,根据所述参数值和告警状态阵列的映射关系,获取相应告警状态阵列。则步骤402中的根据所述队列赋值后的数对象的数值,还原出当前队列中的告警内容,在本发明实施例中通常实现为:根据二叉查找树法、二分查找法和顺序查找法中的一种或者多种,在预先排序好的告警序列里查找所述数对象的数值。
一个特定数值对应一告警阵列举例,如图8所示,左上角的为队列内容,右上角的为转换后的数对象以及相应数值结果“7”,下方的位与所述数值“7”对应建立有映射关系的告警状态阵列“告警,告警,告警,非告警,非告警,非告警,非告警,非告警”,需要指出的是,此处的告警状态阵列是直接对应队列中的bit位顺序来呈现的。在图8所示的例子中,队列中的8个bit位都被有效承载告警状态的bit值,并且,“0”代表“非告警”;“1”代表“告警”。如此,便可以进一步分析产生当前告警状态阵列的可能问题情况,从而为进一步分析改善方案提供计数参考依据。
在本发明实施例中,指定数量bit位的字节、整数或者字符串,具体采用 32位整形数作为队列长度;其中,队列的数量为一个或者多个。
实施例2:
本发明实施例将结合实施例1中方式二下的相关程序源码进行其中方式二下完整方案的呈现。相应方法过程如图9所示,包括:
在步骤501中,通过硬件接口,获取最新一次检测告警采集内容,并转换为相应的bit值。
在步骤502中,32位整型数队列整体左移1位,然后把最新一次检测结果保存到尾部。
在步骤503中,执行n次如步骤501-502所示的入列过程(其中n小于32)。
在步骤504中,根据掩码滤波结果,得出本届队列中记录的最终告警内容结果。其中,触发步骤504执行的过程,可以是基于统计的入列bit位是否达到队列的允许长度,或者是收到本届告警内容入列结束的指示。其中,一届告警内容入列包括一轮或者多轮告警采集内容导入,而所述一届告警内容入列通常对应于两次队列中告警信息提取之间包含的多个告警采集内容。
在步骤505中,延时等待下一届:重复步骤501-504过程。
本发明实施例与上面描述的实施例1中实现方式有着一定的差异性,在本发明实施例中,并没有采用如实施例1所述的整体单向移动,而是采用有新的 bit位入列的情况下,历史另一端的bit位直接出列丢弃的方式。根据不同的场景需求,上述两种方式均可作为本发明实现方案的可选技术实现手段。
本发明实施例还从代码层提取了掩码的相应代码呈现。构造一组滤波用的掩码常量,第n个掩码的值即是低n位全1对应的值:
然后定义如下变量:
hist:32位整型数,将其视作一个队列,每一个bit代表一个告警采集内容,用于保存历史32次检测记录;
N:防抖滤波的点数,范围1-32;
new_value:本届采样得到的值;
flag:告警状态,本届的最终结论;
hist左移一位;//相当于队列头出队,队列尾空出一个位置,准备放入新元素(默认为0);
new_value通过采样函数get_new_value()得到新值;
如果new_value等于1则将hist更新为hist与1或运算的结果;//新告警采集内容入列,进入队列的尾部;
如果(hist与运算FILTER_MASK[N])的结果等于FILTER_MASK[N]则完成Flag置为1动作;//低n位全部是1;
否则如果(hist与运算FILTER_MASK[N])的结果等于0则完成Flag置为0 动作;//低n位全部为0
否则flag参数值设置为flag;
上述程序的对应流程图呈现如图10所示,其中,参数值N没有在上面代码中强调,所述N直接代表的是本届告警采集内容导入队列操作中所包含的告警采集内容数量。而上述的掩码数组,则是预先根据一届告警采集内容导入过程中包含的告警采集内容数量N的不同,预备了不同的掩码;而相应的最终上述程序中,告警信息的导出相比较本发明实施例1中给出的告警状态阵列而言更为直观,其直接根据hist&FILTER_MASK[N])==FILTER_MASK[N]确定队列中包含的告警信息和对应掩码的信息是一致,则下结论为有效告警;若(hist& FILTER_MASK[N])==0则认定为当前结论是无告警;若结论属于上述两者以外的情况,则维持前一轮的告警判断。可知悉,本发明实施例是针对实施例1中单次告警采集内容的简单判断。而本发明实施例在实现过程中,也是以一种时间窗的形式体现,即连续的去采集告警采集内容,而不是等待告警内容到来后才进行存储,即是一种主动的时间窗采集方案。
实施例3:
如图11所示,是本发明实施例的基于位运算的软件防抖装置的架构示意图。本实施例的基于位运算的软件防抖装置包括一个或多个处理器21以及存储器22。其中,图11中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图11中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的基于位运算的软件防抖方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行基于位运算的软件防抖方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的基于位运算的软件防抖方法,例如,执行以上描述的图1、图6、图7和图10所示的各个步骤。
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于位运算的软件防抖方法,其特征在于,使用一个包含指定数量bit位的字节、整数或者字符串作为一个队列,用于缓存历史告警采集记录,每一个bit位代表一次采样记录结果,其中,bit位为0或者为1分别用于对应告警和非告警中的一种情况,方法包括:
在每一轮获取到新的告警采集内容需要进行记录时,寻址到相应队列的记录目标bit位;
确认告警采集内容属于告警或者非告警,并将告警采集内容转换为相应的bit值;
将由告警采集内容转换得到的bit值和寻址到的目标比特位进行位或运算,完成新一轮告警采集内容在队列中的入队;
在进行队列中所记录的告警信息的提取时,确认当前队列中记录的告警采集内容个数,根据所述个数生成掩码;通过所述掩码得到当前队列中所记载的告警采集内容;其中,所述队列在初始使用或者在每一次完成队列中记载的告警内容提取后,相应的队列的各个bit位的bit值被置0。
2.根据权利要求1所述的基于位运算的软件防抖方法,其特征在于,所述方法中以队列首部作为每一轮记录新的告警采集内容的bit位,并且,在完成每一轮告警采集内容在队列中的入队后,执行一次队列中由队列首部向队列尾部的单bit位的整体单向移动;或者,在每一轮需要执行告警采集内容在队列中的入列操作时,执行一次队列中由队列首部向队列尾部的单bit位的整体单向移动;
其中,所述单bit位的整体单向移动,是指队列中的每一个bit位在保持既有前后相邻关系不变的情况下,都向队列尾部方向平移一位。
3.根据权利要求2所述的基于位运算的软件防抖方法,其特征在于,所述寻址到相应队列的记录目标bit位,具体为:寻址到相应队列的首部。
4.根据权利要求1所述的基于位运算的软件防抖方法,其特征在于,所述方法中以队列尾部作为每一轮记录新的告警采集内容的bit位,并且,在完成每一轮告警采集内容在队列中的入队后,执行一次队列中由队列尾部向队列首部的单bit位的整体单向移动;或者,在每一轮需要执行告警采集内容在队列中的入列操作时,执行一次队列中由队列尾部向队列首部的单bit位的整体单向移动;
其中,所述单bit位的整体单向移动,是指队列中的每一个bit位在保持既有前后相邻关系不变的情况下,都向队列首部方向平移一位。
5.根据权利要求4所述的基于位运算的软件防抖方法,其特征在于,所述寻址到相应队列的记录目标bit位,具体为:寻址到相应队列的尾部。
6.根据权利要求1-5任一所述的基于位运算的软件防抖方法,其特征在于,所述掩码的长度和队列的长度相同,所述方法还包括:
在所述掩码中,对应于与队列中记录有告警采集内容的有效bit位设置为1,而相应没有记录告警采集内容的bit位设置为0;
将所述掩码和队列求位与运算,得到当前队列中所记载的告警采集内容。
7.根据权利要求1所述的基于位运算的软件防抖方法,其特征在于,在进行队列中所记录的告警信息的提取时,所述方法还包括:
从队列的首部到尾部依次提取相应bit位中记载的bit位值,并相应的依次从数对象的低字节位向高字节位赋值;
根据所述队列赋值后的数对象的数值,还原出当前队列中的告警内容。
8.根据权利要求7所述的基于位运算的软件防抖方法,其特征在于,所述根据所述队列赋值后的数对象的数值,还原出当前队列中的告警内容,方法还包括:
根据二叉查找树法、二分查找法和顺序查找法中的一种或者多种,在预先排序好的告警序列里查找所述数对象的数值;
其中,所述告警序列中的每一个参数值,分别对应一告警状态阵列,两者之间建立有映射关系;在查找到告警序列中与所述数对象的数值一致的参数值时,根据所述参数值和告警状态阵列的映射关系,获取相应告警状态阵列。
9.根据权利要求1所述的基于位运算的软件防抖方法,其特征在于,指定数量bit位的字节、整数或者字符串,具体采用32位整形数作为队列长度;
其中,队列的数量为一个或者多个。
10.一种基于位运算的软件防抖装置,其特征在于,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行权利要求1-9任一所述的基于位运算的软件防抖方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010963634.2A CN112148556B (zh) | 2020-09-14 | 2020-09-14 | 一种基于位运算的软件防抖方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010963634.2A CN112148556B (zh) | 2020-09-14 | 2020-09-14 | 一种基于位运算的软件防抖方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148556A CN112148556A (zh) | 2020-12-29 |
CN112148556B true CN112148556B (zh) | 2022-08-12 |
Family
ID=73892225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010963634.2A Active CN112148556B (zh) | 2020-09-14 | 2020-09-14 | 一种基于位运算的软件防抖方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148556B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649040A (zh) * | 2016-12-26 | 2017-05-10 | 上海新炬网络信息技术有限公司 | 一种Weblogic中间件性能自动监控方法及装置 |
CN107193768A (zh) * | 2016-03-15 | 2017-09-22 | 北京忆芯科技有限公司 | 查询队列状态的方法与装置 |
CN109167761A (zh) * | 2018-08-14 | 2019-01-08 | 河南恒茂创远科技股份有限公司 | 一种请求自动处理的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9336097B2 (en) * | 2014-02-27 | 2016-05-10 | International Business Machines Corporation | Salvaging hardware transactions |
-
2020
- 2020-09-14 CN CN202010963634.2A patent/CN112148556B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193768A (zh) * | 2016-03-15 | 2017-09-22 | 北京忆芯科技有限公司 | 查询队列状态的方法与装置 |
CN106649040A (zh) * | 2016-12-26 | 2017-05-10 | 上海新炬网络信息技术有限公司 | 一种Weblogic中间件性能自动监控方法及装置 |
CN109167761A (zh) * | 2018-08-14 | 2019-01-08 | 河南恒茂创远科技股份有限公司 | 一种请求自动处理的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112148556A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110806986A (zh) | 提高网络芯片报文存储效率的方法、设备及存储介质 | |
CN110442462B (zh) | Tee系统中的多线程数据传输方法和装置 | |
KR101745456B1 (ko) | HiL 시뮬레이션 환경에서 대용량 데이터를 전송하기 위한 전자제어 장치, 이를 포함하는 시스템 및 그 방법 | |
US9229858B2 (en) | Concurrent garbage collector thread | |
JP7074839B2 (ja) | パケット処理 | |
WO2016141735A1 (zh) | 缓存数据的确定方法及装置 | |
CN108496161A (zh) | 数据缓存装置及控制方法、数据处理芯片、数据处理系统 | |
CN110008031B (zh) | 设备操作方法、集群系统、电子设备及可读取存储介质 | |
CN112148556B (zh) | 一种基于位运算的软件防抖方法和装置 | |
CN112104403B (zh) | 基于消息队列的多线程遥感卫星基带数据处理方法及装置 | |
CN114490861A (zh) | 遥测数据解析方法、装置、设备及介质 | |
US10951550B2 (en) | Logging infrastructure with time sustain requirements | |
CN111049684B (zh) | 数据分析方法、装置、设备和存储介质 | |
CN108829345B (zh) | 日志文件的数据处理方法和终端设备 | |
CN116166715A (zh) | 时序数据存储引擎的乱序处理方法及系统 | |
CN111198843A (zh) | 一种基于应用处理器片上总线控制的文件系统写加速方法 | |
CN113626432B (zh) | 一种支持任意Key值的自适应基数树的改进方法 | |
CN113132742B (zh) | 基于队列的双缓冲ai视频传输方法及相关设备 | |
CN103646056B (zh) | 一种基于特征值存储的历史数据存储和抽取方法 | |
KR101487859B1 (ko) | 자바 프로그램 실행시 유저 데이터그램 프로토콜 패킷을 수집하는 방법 | |
CN111857551A (zh) | 一种录像数据老化方法及装置 | |
CN115955428B (zh) | 云网络数据包裁切方法和系统 | |
CN111581489B (zh) | 一种基于共享计数树的存储空间优化采样方法 | |
EP3387524B1 (en) | Hardware access counters and event generation for coordinating multithreaded processing | |
CN106445136B (zh) | 数据波形恢复方法、系统和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |