CN112148556A - 一种基于位运算的软件防抖方法和装置 - Google Patents

一种基于位运算的软件防抖方法和装置 Download PDF

Info

Publication number
CN112148556A
CN112148556A CN202010963634.2A CN202010963634A CN112148556A CN 112148556 A CN112148556 A CN 112148556A CN 202010963634 A CN202010963634 A CN 202010963634A CN 112148556 A CN112148556 A CN 112148556A
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.)
Granted
Application number
CN202010963634.2A
Other languages
English (en)
Other versions
CN112148556B (zh
Inventor
林飞浪
刘勇刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN202010963634.2A priority Critical patent/CN112148556B/zh
Publication of CN112148556A publication Critical patent/CN112148556A/zh
Application granted granted Critical
Publication of CN112148556B publication Critical patent/CN112148556B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit 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个检测值是否相等时,也显得有些麻烦。如下为伪代码描 述:
Figure BDA0002681445010000011
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对应的值:
Figure BDA0002681445010000121
然后定义如下变量:
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值和寻址到的目标比特位进行位或运算,完成新一轮告警采集内容在队列中的入队。
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值被置0;则在进行队列中所记录的告警信息的提取时,所述方法还包括:
从队列的首部到尾部依次提取相应bit位中记载的bit位值,并相应的依次从数对象的低字节位向高字节位赋值;
根据所述队列赋值后的数对象的数值,还原出当前队列中的告警内容。
8.根据权利要求7所述的基于位运算的软件防抖方法,其特征在于,所述根据所述队列赋值后的数对象的数值,还原出当前队列中的告警内容,方法还包括:
根据二叉查找树法、二分查找法和顺序查找法中的一种或者多种,在预先排序好的告警序列里查找所述数对象的数值;
其中,所述告警序列中的每一个参数值,分别对应一告警状态阵列,两者之间建立有映射关系;在查找到告警序列中与所述数对象的数值一致的参数值时,根据所述参数值和告警状态阵列的映射关系,获取相应告警状态阵列。
9.根据权利要求1所述的基于位运算的软件防抖方法,其特征在于,指定数量bit位的字节、整数或者字符串,具体采用32位整形数作为队列长度;
其中,队列的数量为一个或者多个。
10.一种基于位运算的软件防抖装置,其特征在于,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行权利要求1-9任一所述的基于位运算的软件防抖方法。
CN202010963634.2A 2020-09-14 2020-09-14 一种基于位运算的软件防抖方法和装置 Active CN112148556B (zh)

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 true CN112148556A (zh) 2020-12-29
CN112148556B 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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150242298A1 (en) * 2014-02-27 2015-08-27 International Business Machines Corporation Salvaging hardware transactions
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 河南恒茂创远科技股份有限公司 一种请求自动处理的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150242298A1 (en) * 2014-02-27 2015-08-27 International Business Machines Corporation Salvaging hardware transactions
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
CN112148556B (zh) 2022-08-12

Similar Documents

Publication Publication Date Title
CN110806986A (zh) 提高网络芯片报文存储效率的方法、设备及存储介质
CN110442462B (zh) Tee系统中的多线程数据传输方法和装置
US9229858B2 (en) Concurrent garbage collector thread
JP7074839B2 (ja) パケット処理
CN108496161A (zh) 数据缓存装置及控制方法、数据处理芯片、数据处理系统
WO2016141735A1 (zh) 缓存数据的确定方法及装置
CN110008031B (zh) 设备操作方法、集群系统、电子设备及可读取存储介质
CN109298888B (zh) 队列的数据存取方法及装置
CN105512051B (zh) 一种自学习型智能固态硬盘缓存管理方法和装置
CN112148556B (zh) 一种基于位运算的软件防抖方法和装置
CN111708921A (zh) 一种号码选择的方法、装置、设备和存储介质
US10951550B2 (en) Logging infrastructure with time sustain requirements
CN114490861A (zh) 遥测数据解析方法、装置、设备及介质
CN108829345B (zh) 日志文件的数据处理方法和终端设备
CN117193669B (zh) 一种报文描述符离散存储方法、装置、设备及存储介质
CN111049684B (zh) 数据分析方法、装置、设备和存储介质
Thomson et al. Has the age at transition of Southern Hemisphere minke whales declined over recent decades?
CN112306827A (zh) 日志采集装置、方法和计算机可读存储介质
CN113626432B (zh) 一种支持任意Key值的自适应基数树的改进方法
CN116166715A (zh) 时序数据存储引擎的乱序处理方法及系统
CN115567305A (zh) 基于深度学习的顺序网络攻击预测分析方法
CN114780533A (zh) 基于双数组字典树的存储空间分配方法、装置及电子设备
CN103646056B (zh) 一种基于特征值存储的历史数据存储和抽取方法
CN112883239A (zh) 一种资源分配方法、装置、计算机设备及存储介质
KR101487859B1 (ko) 자바 프로그램 실행시 유저 데이터그램 프로토콜 패킷을 수집하는 방법

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