CN110427397B - 凭证数据查重方法及相关设备 - Google Patents

凭证数据查重方法及相关设备 Download PDF

Info

Publication number
CN110427397B
CN110427397B CN201810393955.6A CN201810393955A CN110427397B CN 110427397 B CN110427397 B CN 110427397B CN 201810393955 A CN201810393955 A CN 201810393955A CN 110427397 B CN110427397 B CN 110427397B
Authority
CN
China
Prior art keywords
data
array
certificate
credential
certificate data
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
Application number
CN201810393955.6A
Other languages
English (en)
Other versions
CN110427397A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810393955.6A priority Critical patent/CN110427397B/zh
Publication of CN110427397A publication Critical patent/CN110427397A/zh
Application granted granted Critical
Publication of CN110427397B publication Critical patent/CN110427397B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07BTICKET-ISSUING APPARATUS; FARE-REGISTERING APPARATUS; FRANKING APPARATUS
    • G07B11/00Apparatus for validating or cancelling issued tickets

Abstract

本申请提供了一种凭证数据查重方法,该方法中在信息采集单元采集到待查验的凭证数据后,计算该凭证数据的散列地址,并从预设的数组中读取该散列地址对应的数组元素中的凭证数据。数组中存储的是经过查验的凭证数据,凭证数据存储在自身的散列地址对应的数组元素中,不同凭证数据的散列地址可能相同,因此同一数组元素中可能存储有一个或多个凭证数据。比对读取到的凭证数据中是否包含与待查验凭证数据相同的凭证数据,获得查重结果。本方法并非遍历数组的每个数组元素,而是根据待查验的凭证数据的散列地址直接定位到数组元素,将其中的凭证数据进行比对即可,提高了查重效率,这种效果在数组存储的已查验凭证数据越多的情况下越明显。

Description

凭证数据查重方法及相关设备
技术领域
本申请涉及数据处理技术领域,更具体地,是凭证数据查重方法及相关设备。
背景技术
现实生活中,用户进入一些场所需要查验通行凭证,例如进出地铁站需要查验车票、进入旅游景点需要查验景点票等。车票、景点票等这些凭证内包含的唯一性数据可以称为凭证数据。
查验过程中,在验证凭证真实性等基础上,还需要对凭证数据进行查重操作,以防止同一凭证被多个用户使用的情况。
发明内容
有鉴于此,本申请提供了一种凭证数据查重方法,用以检查同一凭证数据是否被重复使用的情况。
为实现所述目的,本申请提供的技术方案如下:
第一方面,本申请提供了一种凭证数据查重方法,包括:
对所述待查验凭证数据进行运算得到预设长度的数据值,将所述数据值作为数组地址;
从第一数组中,提取所述数组地址对应的数组元素中的凭证数据;其中所述第一数组的数组元素中存储有凭证数据,凭证数据存储在由所述凭证数据自身得到的数组地址对应的数组元素中;
比对所述待查验凭证数据与提取到的凭证数据是否相同,获得查重结果。
第二方面,本申请提供了一种凭证数据查重装置,包括:
凭证数据获得单元,用于获得待查验凭证数据;
数组地址生成单元,用于对所述待查验凭证数据进行运算得到预设长度的数据值,将所述数据值作为数组地址;
凭证数据提取单元,用于从第一数组中,提取所述数组地址对应的数组元素中的凭证数据;其中所述第一数组的数组元素中存储有凭证数据,凭证数据存储在由所述凭证数据自身得到的数组地址对应的数组元素中;
凭证数据比对单元,用于比对所述待查验凭证数据与提取到的凭证数据是否相同,获得查重结果。
第三方面,本申请提供了一种凭证数据查重设备,包括:存储器以及处理器,所述处理器通过调用所述存储器内的可执行指令用于实现如下步骤:
获得待查验凭证数据;
对所述待查验凭证数据进行运算得到预设长度的数据值,将所述数据值作为数组地址;
从第一数组中,提取所述数组地址对应的数组元素中的凭证数据;其中所述第一数组的数组元素中存储有凭证数据,凭证数据存储在由所述凭证数据自身得到的数组地址对应的数组元素中;
比对所述待查验凭证数据与提取到的凭证数据是否相同,获得查重结果。
第四方面,本申请提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现凭证数据查重方法。
由以上技术方案可知,本申请提供了一种凭证数据查重方法,该方法中在信息采集单元采集到待查验的凭证数据后,计算该凭证数据的散列地址,并从预设的数组中读取该散列地址对应的数组元素中的凭证数据。数组中存储的是经过查验的凭证数据,凭证数据存储在自身的散列地址对应的数组元素中,不同凭证数据的散列地址可能相同,因此同一数组元素中可能存储有一个或多个凭证数据。比对读取到的凭证数据中是否包含与待查验的凭证数据相同的凭证数据,获得查重结果。可见,本方法并非遍历数组中的每个数组元素,而是根据待查验的凭证数据的散列地址直接定位到数组元素,将其中的凭证数据进行比对即可,从而较大地提高了查重效率,这种效果在数组存储的已查验凭证数据越多的情况下越明显。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的对凭证数据进行查验的一个场景示意图;
图2为现有的对凭证数据进行查验的一种流程示意图;
图3为本申请提供的对凭证数据进行查验的一个流程示意图;
图4为本申请提供的链表数据存储凭证数据的一个示意图;
图5为本申请提供的查验设备相互连接的一种结构示意图;
图6为本申请提供的对凭证数据进行查验的又一流程示意图;
图7为本申请提供的查找超过预设时长的凭证数据的一种流程示意图;
图8为本申请提供的凭证数据查重装置的一个结构示意图;
图9为本申请提供的凭证数据查重设备的一个硬件框架图;
图10为本申请提供的凭证数据查重设备的另一个硬件框架图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在凭证进入场所的应用场景中,通常在凭证查验区域设置有查验设备,设备查验代替人工查验操作,以减少人工成本并提高查验效率。凭证可以是记载有唯一性标识的任何信息载体,如卡、证、票等。凭证内的唯一性标识可以称为凭证数据,凭证数据在凭证载体上的表现形式可以有多种,如二维码、条形码、明文等等。
查验过程的一个场景示例如图1所示,场所的查验区域设置有查验设备,查验设备内设置有信息采集单元。用户持有进入场所所需的凭证,凭证内记载有凭证数据。当需要进入该场所时,用户按照信息采集单元的采集要求将凭证放入采集区域。信息采集单元检测到凭证后,读取凭证内的凭证数据。查验设备内还设置有处理器,信息采集单元将凭证数据发送至处理器,由处理器对凭证数据进行查重操作,即判断存储的凭证数据中是否存在与凭证数据相同的记录,如果不存在,则打开通行装置使该用户通行,并存储该凭证数据;如果存在,则进行报警提示。需要说明的是,信息采集单元也可以是独立的设备,并非设置在查验设备内部。在这种结构下,信息采集单元与查验设备之间通过有线或无线方式连接。
在实际应用中,查验现场通常用户较多,为了减少用户的查验等待时间,对查验设备的查重效率提出了较高的要求。目前的查验设备将已经验证过的凭证数据存储在数组中,基于此存储结构查重方式如图2所示,信息采集单元采集到新的凭证数据后,处理器从头到尾遍历数组将各个凭证数据读取出来,与待查验的凭证数据一一比对两者是否相同。但是,该查重方式需要遍历数组中的每一个凭证数据,查验效率较低,用户等待时间较长体验欠佳。
为了解决上述问题,本申请提供了一种凭证数据查重方法,该方法应用在查验设备上,以提高查验设备的查验效率。如图3所示,凭证数据查重方法的一个流程具体包括以下步骤S301~S305。
S301:信息采集单元采集用户凭证中的凭证数据。
其中,凭证是凭证数据的信息载体,凭证的实体表现形式可以是票卡证等各种,凭证数据的表现形式可以是二维码、条形码、磁条等各种。信息采集单元可以是具有信息采集功能的任何模块,信息采集单元的具体实现结构与凭证数据的载体结构相关联。例如凭证数据的载体为二维码,则信息采集单元为二维码识别模块;又如凭证数据的载体为磁卡,则信息采集单元为磁卡读取模块。
在实际应用中,用户按照信息采集单元的采集要求,将凭证放置在采集区域以供信息采集单元进行采集。例如,信息采集单元为地铁站闸机内的二维码识别模块,用户的手机可以生成二维码,用户进站时将手机放置在二维码识别模块的采集区域上方并接近二维码识别模块的感应器。又如,信息采集单元为磁卡识别模块,用户当需要进入某个场所时,将磁卡放入磁卡识别模块的可识别范围内。
如果用户凭证被放置在信息采集单元可识别到的采集区域内,那么信息采集单元可以在采集区域识别到用户凭证,并提取用户凭证中记载的数据。为了便于描述,可以将提取到的数据称为凭证数据。
需要说明的是,用户凭证中可能包含有多项数据信息,如时间、设备标识、凭证数据等。本申请主要解决的是凭证数据是否重复的问题,因此为了减少数据处理量,可以仅提取其中所需的凭证数据即可。凭证数据的数据类型可以是多种,如char[8]等。为了便于与其他的凭证数据区分,可以将从用户凭证中提取到的凭证数据称为待查验的凭证数据,或者也可以称为第一凭证数据,其中“第一”并不限定凭证数据的获取顺序,仅仅是为了区分。
S302:信息采集单元将凭证数据发送给处理器。
其中,处理器可以创建接收线程,接收线程可以指定接收端口,接收线程可以接收到由信息采集单元通过接收端口发送给处理器的凭证数据。
S303:处理器计算凭证数据的散列地址。
其中,处理器可以创建发送线程,发送线程可以对凭证数据进行查重处理。查重过程中,首先使用散列函数计算凭证数据的散列地址。
散列函数也可以称为哈希函数,哈希函数采用折叠法对凭证数据进行散列运算,得到散列值。具体地,首先将凭证数据分为多个部分,各个部分移位叠加,再进行折叠相加,最后取相加值的全部或部分作为散列值。
例如,凭证数据为20083AF6D04F1795,先将前4位与最后4位相加,然后将中间的8位最多转换成16位,如果不足16位则在末尾补0成16位,如3AF6D04F变成311156130415,补0后变成3111561304150000。然后将得到的值分割为4个部分,每部分4位,再折叠相加,如20083AF6D04F1795进行上述处理后变为200831115613041500001795,分为4个部分相加为2008+1795+3111+5613+0415+0000,得到12942。最后,取后四位2942作为散列值。
需要说明的是,散列值作为凭证数据在数组中的存储地址,因此散列值也可以称为散列地址。换句话说,散列地址为凭证数据存储在的数组元素的位置,如凭证数据20083AF6D04F1795,其散列地址为2942,则该凭证数据被存储在地址为2942的数组元素中。凭证数据与散列地址之间存在对应关系,凭证数据可以认为是键(key),散列地址可以认为是值(value),凭证数据与散列地址之间的对应关系可以认为是key-value的关系。
需要说明的是,散列函数计算凭证数据的散列地址仅仅是一种具体的实现方式,其本质上是将凭证数据各个数据位上的值进行处理,以得到预设长度的一个数据值。因此对凭证数据进行运算后可以得到预设长度的一个数据值的任意具体实现方式均可以。比如上述散列函数是将凭证数据分段,各段值进行综合处理,但也可以直接对凭证数据进行运算。又如,上述散列函数分段后所有的段都参与处理,但也可以选择部分段进行处理。运算后得到的数据值可以称为第一数据值,数据值作为在数组中定位元素的地址,因此为了便于描述,也可以该数据值作为数组地址。
对凭证数据进行运算得到预设长度的数据值的实现方式并不局限于在本实施例中,下文中使用散列函数计算散列地址的步骤都可以替换为该实现方式。为了区分得到的数据值,可以使用“第一”、“第二”及“第三”这种命名方式,由数据值得到的数组地址也可以相应命名为“第一数组地址”、“第二数组地址”及“第三数组地址”。
S304:处理器从散列地址对应的数组元素中读取凭证数据。
其中,本申请预先设置有数组,该数组包含多个数组元素,每个数组元素中可以存储多个凭证数组。为了与下文中的其他数组区分,可以将数组称为第一数组。“第一”并非对数组顺序进行限制,仅仅是为了区分。
能够实现该种效果的数组可以是链表数组,即每个数组元素以链表形式存储凭证数据。具体地,链表数组中包含数组元素,数组元素中包含有链表,链表中包含一个或多个链表节点,每个链表节点中存储有一个凭证数据。
如图4所示,假设某个数组中包含10000个数组元素,每个数组元素为一个链表,链表中的数据为凭证数据。数组元素在数组中的地址为凭证数据的散列地址,换句话说,数组元素的链表节点中挂载的凭证数据为,散列地址与该数组元素的地址相同的凭证数据。例如图4所示,凭证数据20083AF6D04F1795的散列地址为2942,其挂载在地址为2942的数组元素的链表节点中。数组中的数组元素为链表结构,这样可以动态地增加删减链表中的凭证数据,可以节省查验设备的存储空间。具体的实现以下说明此处并不赘述。
处理器得到待查验的凭证数据的散列地址后,定位以该散列地址为地址的数组元素,并提取该数组元素中的凭证数据。如果数组元素中的凭证数据存储在链表节点中,则定位到数组元素后,遍历数组元素中的链表中的各个链表节点,从链表节点中读取凭证数据。
需要说明的是,散列函数的运算方式使得多个不同的凭证数据得到的散列地址可能是相同的,因此多个凭证数据可能被存储在同一数组元素中。进而,在查重时依据散列地址所读取到的凭证数据可能为0,可能是一个,也可能是多个。
为了与其他的凭证数据进行区分,可以将从第一数组中读取到的凭证数据称为第二凭证数据。
S305:处理器将读取的凭证数据与信息采集单元发送的凭证数据进行比对,得到比对结果。
其中,处理器比对待查验的凭证数据与从数组中读取到的凭证数据之间是否存在相同的凭证数据,换句话说,处理器判断从数组中读取到的凭证数据之中是否包含与待查验的凭证数据相同的凭证数据。比对结果也可以称为查重结果。
比对方式可以有多种,以二维码为例,可以直接进行二维码字符串比较,也可以对二维码字符串进行消息摘要算法第五版(Message Digest Algorithm5,MD5)处理,比对二者的MD5值是否相同。消息摘要算法第五版是计算机安全领域广泛使用的一种散列函数,主要用来提供消息的完整性保护。比对方式还可以是现有的其他实现技术,对此本申请并不做赘述。
可以理解的是,比对结果包括两种:读取的凭证数据中并不包含与待查验的凭证数据相同的凭证数据;读取的凭证数据中包含与待查验的凭证数据相同凭证数据。后续可以根据比对结果的不同,执行与比对结果对应的操作,如下具体说明。
由以上技术方案可知,本申请提供了一种凭证数据查重方法,该方法中在信息采集单元采集到待查验的凭证数据后,计算该凭证数据的散列地址,并从预设的数组中读取该散列地址对应的数组元素中的凭证数据。数组中存储的是经过查验的凭证数据,凭证数据存储在自身的散列地址对应的数组元素中,不同凭证数据的散列地址可能相同,因此同一数组元素中可能存储有一个或多个凭证数据。比对读取到的凭证数据中是否包含与待查验的凭证数据相同的凭证数据,获得查重结果。可见,本方法并非遍历数组中的每个数组元素,而是根据待查验的凭证数据的散列地址直接定位到数组元素,将其中的凭证数据进行比对即可,从而较大地提高了查重效率,这种效果在数组存储的已查验凭证数据越多的情况下越明显。
在实际应用中,按照场景需求可以将多台查验设备互连,以使该多台查验设备可以配合完成统一验证。凭证数据在互连的任何一台查验设备上进行了查验且成功,则该凭证数据不能在与该查验设备上互连的其他查验设备上进行使用。因此,为了防止凭证数据在某个查验设备使用过之后重复在其他的查验设备上使用,如图5所示,可以将多台查验设备通过网络如局域网互连。前已述及,查验设备对待查验凭证数据的查重结果可以包括两种,如果查重结果为,数组中并不包含有与待查验凭证数据相同的凭证数据,则将待查验凭证数据广播给与该查验设备相连的其他查验设备。或者,查验设备之间并不直接相连,而是通过服务器相连,因此凭证数据可以并非直接广播给其他查验设备,也可以通过服务器转发给其他查验设备。
其中广播技术是已有成熟的数据传播技术,这项技术可以将消息如凭证数据通过广播地址发送到同一广播网络上的每个主机如查验设备,实现了一对多的关系。
具体实现过程中,查验设备的处理器可以创建接收线程,接收线程除了可以接收由信息采集单元发送的凭证数据,还可以接收由其他查验设备发送过来的凭证数据。处理器可以创建发送线程,发送线程除了可以对凭证数据进行查重,还可以在查重结果为不相同的情况下,将凭证数据发送给其他查验设备。
查验设备可以接收其他查验设备发送的凭证数据,为了与其他查验设备区分,可以将该凭证数据称为第三凭证数据。如图5所示,查验设备接收到其他查验设备发送的凭证数据后,存储该凭证数据。如前所述,查验设备是在查重结果为不相同的情况下,将凭证数据发送给互连的其他查验设备,因此该查验设备接收到的凭证数据是不重复的凭证数据,可以直接进行存储。需要说明的是,图5中发送凭证数据及接收凭证数据的查验设备可以是互连的查验设备中的任何一台。
存储凭证数据的具体实现方式为,查验设备接收到其他查验设备发送的凭证数据后,使用散列函数计算该凭证数据的散列地址,然后将该凭证数据存储在该散列地址对应的数组元素中。假如数组元素中的凭证数据以链表形式存储,则将凭证数据存储在链表的最后节点。
本申请的技术方案主要是为了解决查验效率较低的问题,如果凭证数据传输耗时较长则会影响这一技术效果,因此需要尽量提高凭证数据的传输效率。用户凭证中通常不仅包含有凭证数据,还包含有时间信息等,为了保证传输效率,本申请可以仅仅传输凭证数据即可。
需要说明的是,在一些场景中,查验设备包括两种,入型查验设备及出型查验设备。其中入型查验设备,一般设置在场所入口区域,用于查验进入的用户的凭证数据;出型查验设备,一般设置在场所出口区域,用于查验出去的用户的凭证数据。如果将出型查验设备及入型查验设备设置在同一网络内,则每台查验设备会收到每台其他查验设备发送的凭证数据。凭证数据只需在同一类型的查验设备上被检查,因此为了减少存储空间浪费,查验设备在发送凭证数据时同时发送自身的设备类型,查验接收接收到凭证数据时检查与该凭证数据一同发送过来的设备类型是否与自身的设备类型相同,如果相同才存储该凭证数据,如果不同则不进行存储。这样可以进一步提高凭证数据的查验效率。
查验设备可以向数组中存储凭证数据,如待查验的凭证数据与数组中的凭证数据并不相同时需要将凭证数据存储在数组中,又如查验设备接收到其他查验设备发送的凭证数据后需要将凭证数据存储在数组中。查验设备还需要从数组中读取凭证数据,如将待查验的凭证数据与数组中的凭证数据进行比对时,需要从数组中读取凭证数据。为了保证数据一致性,在对数组进行读取或者写入操作时,需要对数组上互斥锁,操作完毕后进行解除互斥锁。
信息采集单元可以持续不断地采集凭证数据,采集到的凭证数据在比对之前可以被存储在另一个数组中。为了与上述第一数组区分,可以将该数组称为第二数组。第二数组与第一数组的区别是,第二数组中每个数组元素只存储一个凭证数据,即:将该凭证数据存储在第二数组的地址指针指示的数组元素中,并将地址指针后移一位,如果地址指针到达末尾则移动至指示首位数组元素。第二数组也可以称为节点数组。
在实际应用中,查验设备的存储空间通常有限,且需要对大量的凭证数据进行存储并查验。例如,查验设备为设置在地铁站内的闸机,通常地铁乘客流量较多,因此查验设备需要查验的凭证数据数据量较大。查验设备并不可能无限制地存储每个凭证数据,需要适当地对存储的凭证数据进行删除。
为了最大限度地节省对查验设备存储空间的占用,可以根据实际应用场景对凭证数据的有效期的要求来设置第二数组的大小。凭证数据的有效时长,指的是待查验的凭证数据不能与某一时间长度内已经查验过的凭证数据相同,时间长度也可以被称为预设时长阈值或预设时长或禁止重复时间。例如,凭证数据为地铁乘车码,业务需求中可以要求乘车码的禁止重复时间为30分钟,也就是说乘车码在30分钟内不能被重复使用。
在实际应用场景中,多台查验设备互连,查验设备的信息采集单元不仅可以自己采集凭证数据,还可以接收到其他查验设备发送过来的凭证数据。因此,可以根据有效期内查验设备能够收到的不重复的凭证数据的最大数量设置第二数组的大小。
以闸机刷码为例进行说明。例如,地铁站互联闸机为100台,假设对闸机刷码的频率要求为1秒2个乘车码,且限制同一乘车码不能在30分钟内重复使用。每台闸机采集到的乘车码需要广播给其他互联的99台闸机,这样每台闸机不仅需要存储自身采集到的乘车码,还需要存储其他99台闸机采集到的乘车码。因此,30分钟内每台闸机需要存储的乘车码个数为:100*2*1800=360000个。可见,在上述相关采集标准限制下,第二数组中数组元素的个数为36万。需要说明的是,为了防止出现存储冗余等误差,可以适当提高数组中数组元素的个数,如计算得到的数组元素个数为36万个,则可以将第二数组中数组元素设置为40万个。当然,采集标准为其他数值,则数组元素按照同样的计算方法可以求解得到第二数组元素个数。
由于第二数组内的凭证数据根据哈希函数被存储至第一数组中,因此可以根据哈希函数的算法来置第一数组的大小。例如,哈希算法为取和值的最后四位,则取值范围为0-9999,进而可知第一数组的大小为10000个数组元素。
基于以上方法设置的第一数组及第二数组,本申请提供了一种凭证数据查重方法。如图6所示,该方法具体包括步骤S601~S607。
S601:获得用户凭证中的待查验凭证数据,并获得待查验凭证数据的采集时间点。
其中,查验设备中可以设置有信息采集器,用于从用户凭证中采集凭证数据。或者,信息采集器是与查验设备独立的设备,信息采集器采集到凭证数据后发送给查验设备。信息采集器在采集用户凭证中的凭证数据时,可以记录采集时间点。查验设备除了可以获得凭证数据,也可以获得由信息采集器记录的采集时间点。为了便于描述,将采集到的用户凭证中的凭证数据称为待查验凭证数据。
S602:对待查验凭证数据在第一数组中进行查重操作。若查重结果为不相同,则执行步骤S603。若查重结果为不相同,则执行步骤S607。
具体地,计算待查验凭证数据的散列地址,在第一数组中提取该散列地址对应的数组元素中的凭证数据,比对提取到的凭证数据中是否包含有与待查验凭证数据相同的凭证数据,获得查重结果。如果第一数组中提取到的凭证数据为多个,则查重结果为不相同,表示待查验凭证数据与任何一个凭证数据均不相同。
其中,有关步骤S602的说明可以参见图3中的步骤S303至步骤S305,此处并不赘述。
S603:确定待查验凭证数据对应的数组地址,将待查验凭证数据及采集时间点存储在第一数组中该数组地址对应的数组元素中。
具体地,可以对待查验凭证数据进行运算,得到待查验凭证数据对应的数组地址,将待查验凭证数据存储在第一数组中该数组地址对应的数组元素中。如果使用散列函数对待查验凭证数据进行运算,则将待查验凭证数据存储在第一数组中该待查验凭证数据的散列地址对应的数组元素中。
S604:将待查验凭证数据及采集时间点发送至与查验设备相连的其他查验设备。
其中,如果查验设备之间通过局域网互连,则可以通过广播方式发送待查验凭证数据;如果查验设备之间通过服务器相连,可以通过服务器将待查验凭证数据转发该其他查验设备,这种情况下,服务器还可以记录待查验凭证数据。在发送待查验凭证数据时,还可以发送对应的采集时间点,以使其他查验设备在存储凭证数据时,也一并存储采集时间点。同样,该查验设备接收到采集时间点后,在存储采集时间点对应的凭证数据时也一并存储该采集时间点。
S605:将待查验凭证数据存储在第二数组的地址指针指示的数组元素中,并按照数组元素首尾相接的顺序,向后调整一位地址指针所指示的数组元素。
具体的移动指针的方式为,若凭证数据存储在第二数组的末尾,则移动地址指针至第二数组的首位;若凭证数据未存储在第二数组的末尾,则将地址指针后移一位。换句话说,每当在一个数组元素中存储一个凭证数据便将地址指针向后移动,指针到达末尾则重新移动到首位。可见,第二数组从头到尾循环使用。需要说明的是,向数组元素内存储待查验凭证数据时,该数组元素中可能包含有凭证数据,在这种情况下,直接将该凭证数据覆盖即可。
需要说明的是,步骤S604及步骤S605并不局限在步骤S603之后执行,该三个步骤可以并行执行,也可以按照其他顺序串行执行。该三个步骤的执行条件是查重结果为不相同,也就是说,若查重结果为不相同则需要执行该三个步骤,其中步骤S603用于将待查验凭证数据存储在第一数组中,步骤S604用于将待查验凭证数据发送给其他查验设备,步骤S605用于将待查验凭证数据存储在第二数组中。
S606:在第二数组中查找超过预设时长的凭证数据,并从第一数组及第二数组中删除查找到的凭证数据。
具体地,在第二数组中,按照首尾相接的顺序从待查验凭证数据前一个凭证数据开始到待查验凭证数据后一位凭证数据,依次查找首个与待查验凭证数据的采集时间点相隔时长大于预设时长的凭证数据。若查找到,则按照首尾相接的顺序,将查找到的凭证数据到待查验凭证数据所覆盖的凭证数据确定为目标凭证数据,并删除第一数组及第二数组中包含的目标凭证数据。
其中,本步骤需要在步骤S605之后执行,也就是说,当将待查验凭证数据存储在第二数组后,则需要使用步骤S606使用第二数组删除第一数组内的凭证数据。需要说明的是,删除的是采集时间点到当前时间点超过预设时长的凭证数据。
为什么第二数组能够删除采集时间点超过预设时长的凭证数据,理由如下:
前已述及第二数组的大小是按照查验设备在有效时长内能够收到的凭证数据最大数量设置的,且第二数组按照首尾相接的方式循环向第二数组中存入凭证数据。例如,闸机每秒采集2个乘车码,若100台闸机互连,在有效时长30分钟内,每台闸机可以收到的乘车码个数为36万个,则设置第二数组包含36万个数组元素。
查验设备按照一定的频率采集凭证数据,如果每台查验设备均连续工作,则第二数组在有效时长会被存满,那么在有效时长之后所收到的凭证数据需要存入第二数组中时,必然需要覆盖凭证数据,且覆盖的凭证数据必然为有效时长之前存在的凭证数据,其他未被覆盖的凭证数据并未超过有效时长。此时,只需要将所覆盖的凭证数据从第一数组中删除即可。
仍以上一示例为例,假设闸机在30分钟之内连续工作且收到的每个乘车码均不重复,则30分钟之后第二数组会被填满,30分钟之后再收到的乘车码会从头到尾覆盖乘车码,每一个所覆盖的乘车码为采集时间点到当前时间点超过30分钟的乘车码。在第一数组中查找所覆盖的乘车码并删除。需要说明的是,可以将存入的该凭证数据的采集时间点作为当前时间点。
可见,在连续工作的情况下,每当在第二数组中覆盖一个凭证数据时,将该凭证数据从第一数组中删除即可。也可以看出,使用第二数组可以达到删除第一数组中超时的凭证数据的目的,且这种方式可以无需记录采集时间点,可以更高效地查重且可以节省更多的存储空间。
从以上说明也可以看出,凭证数据只要超过有效时长便会被从第一数组及第二数组中删除。但是在实际应用中,查验设备可能并非连续工作,因此第二数组中凭证数据的存在时长在达到预设时长后并未被删除,进而第一数组中的凭证数据在超过预设时长后也仍保留在第一数组中。
仍以上述示例为例,如果闸机并非按照每1秒采集2个乘车码的频率工作,而是每秒采集1个乘车码,那么第二数组需要60分钟才能填满,每个乘车码需要被在60分钟后才能被存入的新的凭证数据覆盖,进而第一数组内的凭证数据存在的时长也会超过预设时长。这样,在查重时如果从凭证数据中查找到该凭证数据进行报警的话,是不符合业务需求的。因为按照业务需求该凭证数据已经失效,相同的凭证数据是可以被使用的。
为了避免上述情况的发生,每当在第二数组中存入一个凭证数据后,便在第二数组中查找采集时间点到当前时间点超过预设时长的凭证数据。具体如下:
按照首尾相接的顺序从存入的凭证数据前一个凭证数据开始到存入的凭证数据后一位凭证数据,依次查找首个与存入的凭证数据的采集时间点相隔时长大于预设时长的凭证数据。若查找到,则按照首尾相接的顺序,将查找到的凭证数据到存入的凭证数据所覆盖的凭证数据确定为目标凭证数据。
为了便于理解上述查找方式,现结合图示示例进行说明。如图7所示,第二数组包含有36万个数组元素,当在第二数组的某个数组元素如第55个数组元素中存入凭证数据X时,以首尾相接循环查找方式,从第55个数组元素之前依次查找首个超过预设时长的凭证数据,查找的结束点为存入的凭证数据的后一位凭证数据。假设查找到的凭证数据为第25个凭证数据。
由于第二数组从前到后依次循环存储凭证数据,因此第25个凭证数据之前的凭证数据的采集时间点必然早于第25个凭证数据。第25个凭证数据为首个超过预设时长的凭证数据,进而可知第25个凭证数据之前的凭证数据必然全部为超过预设时长的凭证数据。需要说明的是,第25个凭证数据之前的凭证数据为:从第24个凭证数据到第56个凭证数据之间的凭证数据,以及第55个凭证数据所覆盖的凭证数据55。需要说明的是,第二数组中数组元素的值初始化为空,在首轮向第二数组存入凭证数据的情况下,则被存入的凭证数据覆盖的凭证数据可以为空。另外,为了确定被覆盖的凭证数据,可以在存入凭证数据之前记录该将被覆盖的凭证数据。
见图7中使用圆圈选中的数组地址,将从第25个凭证数据到第56个凭证数据之间的凭证数据,以及第55个凭证数据所覆盖的凭证数据55作为目标凭证数据。将目标凭证数据从第二数组及第一数组中删除。可见,本步骤并不需遍历第二数组中所有的凭证数据,查找到首个满足超过预设时长的凭证数据即可停止遍历,从而节省计算资源。
S607:如果查重结果为相同,则进行报警提示。
其中,报警提示可以包括亮灯、蜂鸣等报警提示。可以理解的是,如果查重结果为相同,并不将待查验凭证数据存储至第一数组中。
需要说明的是,凭证数据在预设时长内有效,可以理解的是,为了能够查重,需要保证每个凭证数据在第一数组内存在的时长达到该时长。一种实现方式是,将各个凭证数据较长时间保存,保存时长超过有效时长的要求。例如凭证数据的有效时长为30分钟,则可以将所有采集到的凭证数据均保存一天,在每天结束时统一删除。
但是,这种方式需要占用查验设备较多的存储空间,为了减少存储空间浪费,可以考虑将第一数组内存在时长超过有效时长的凭证数据删除,这样就需要在第一数组内记录每个凭证数据的采集时间点,并时刻遍历第一数组内的每个凭证数据,以判断凭证数据的采集时间点到当前时间点之间的时长是否超过有效时长,如果超过则删除该凭证数据。这种方式可以实时删除超过有效时长的凭证数据,虽然节省存储资源,但是由于需要遍历第一数组内的每个凭证数据较为耗费计算资源。
经过研究后,本申请使用第二数组对第一数组内的凭证数据进行删除,且无需遍历每个凭证数据,在有效节省存储资源的基础上还可以节省计算资源。
如果不考虑计算资源而是想进一步节省查验设备的存储资源,则可以记录每个待查验的凭证数据的采集时间点,将待查验的凭证数据与第一数组中的凭证数据比对后发现,如果第一数组中存在与待查验的凭证数据相同的凭证数据,则比对待查验的凭证数据的采集时间点与该相同的凭证数据的采集时间点之间的时间间隔是否超过凭证数据的有效时长。
如果超过,则将第一数组中的该凭证数据的采集时间点替换为待查验的凭证数据的采集时间点,并将待查验的凭证数据广播至与查验设备相连的其他查验设备。
如果待查验的凭证数据的采集时间点与该相同的凭证数据的采集时间点之间的时间间隔未超过凭证数据的有效时长,则表明凭证数据重复使用,进而执行报警动作。在不同的应用场景中,报警动作可能不同。如在地铁站查票应用场景中,报警动作可能是蜂鸣。
在以上任何一种查重方法中,如果查重比对结果为不相同,则表示查重成功,进而可以执行与查重成功对应的操作。在不同的应用场景中,查重成功对应的动作可能不同。例如在地铁查票应用场景中,查重成功对应的动作可以是打开闸机通道。
为了便于理解本申请提供的技术方案,以下以地铁闸机查验乘车码这个应用场景为例进行说明。
在地铁站内设置闸机,乘客可以在闸机上扫描手机应用生成的二维码,请求进入地铁站内乘车。二维码有效时长为30分钟。该有效时长表示的是,同一二维码不能在30分钟内重复使用,但如果同一二维码在30分钟之后重复出现则认为是有效的。
假设地铁站内设置有100台闸机,100台闸机通过局域网互连。假设用户在某台闸机上扫描手机应用生成的二维码,闸机内设置有二维码采集器,用于提取二维码内的乘车码。
闸机内设置有节点数组,节点数组的大小是根据乘车码的有效时长设置的。100台闸机互连,每台闸机不仅自身可以采集到乘车码,还可以接收到其他闸机发送的乘车码。假设闸机的扫码率为1秒2个且闸机连续不断扫码,则30分钟内每台闸机可以接收到的乘车码个数为100*2*1800=36万,从而闸机设置的节点数组内包含36万个数组元素。
二维码采集器提取到乘车码后,将乘车码存储到节点数组中,节点数组的每个数组元素中仅存储一个乘车码,将乘车码存储到数组元素后便将地址指针后移一位。如果节点数组存满,则将地址指针重新移动至节点数组的头部,以重复循环利用节点数组。
将乘车码从节点数组中取出,使用哈希函数计算该乘车码的散列地址。假设乘车码为20083AF6D04F1795以及使用哈希函数计算得到的散列地址为2942。闸机内还设置有链表数组,与节点数组不同的是,链表数组的每个数组元素中不仅只存储一个乘车码,链表数组的数组元素以链表形式存储乘车码,只要是乘车码的散列地址与数组元素的地址相同的乘车码均可以存储在数组元素的链表中。例如,地址为2942的数组元素内的链表中存储的都是散列地址为2942的乘车码
在链表数组中直接定位到地址为2942的数组元素,从该数组元素内的链表中查找是否包含有乘车码20083AF6D04F1795,如果包含有则进行报警提示,如果并不包含有则将乘车码20083AF6D04F1795存储在地址为2942的数组元素的链表节点中。
见图8,其示出了本申请提供的一种凭证数据查重装置的结构示意。如图8所示,该凭证数据查重装置具体包括:凭证数据获得单元801、数组地址生成单元802、凭证数据提取单元803及凭证数据比对单元804。
凭证数据获得单元801,用于获得待查验凭证数据;
数组地址生成单元802,用于对所述待查验凭证数据进行运算得到预设长度的数据值,将所述数据值作为数组地址;
凭证数据提取单元803,用于从第一数组中,提取所述数组地址对应的数组元素中的凭证数据;其中所述第一数组的数组元素中存储有凭证数据,凭证数据存储在由所述凭证数据自身得到的数组地址对应的数组元素中;
凭证数据比对单元804,用于比对所述待查验凭证数据与提取到的凭证数据是否相同,获得查重结果。
在一个示例中,所述第一数组的数组元素中包含有链表,链表由链表节点组成,链表节点中存储有凭证数据;则凭证数据提取单元803包括:凭证数据提取子单元。凭证数据提取子单元,用于在第一数组中确定所述数组地址对应的数组元素,并遍历所确定的数组元素中的链表,从所述链表包含的链表节点中提取凭证数据。
在一个示例中,凭证数据查重装置还包括:第一凭证数据存储单元。第一凭证数据存储单元,用于若所述查重结果为所述待查验凭证数据与任何一个提取到的凭证数据均不相同,则将所述待查验凭证数据存储在所述数组地址对应的数组元素中,并将所述待查验凭证数据发送至与所述查验设备相连的其他凭证数据查重装置。
在一个示例中,凭证数据查重装置还包括:第二凭证数据存储单元。第二凭证数据存储单元,用于接收其他凭证数据查重装置发送的凭证数据;对接收到的凭证数据进行运算得到预设长度的数据值,将对所述接收到的凭证数据运算得到的数据值作为所述接收到的凭证数据的数组地址;以及将所述接收到的凭证数据存储在所述接收到的凭证数据的数组地址对应的数组元素中。
在一个示例中,所述查验设备内设置有第二数组,所述第二数组的大小是按照所述查验设备在预设时长阈值内能够收到的不重复凭证数据的最大数量设置的;该装置还包括:第二数组存储单元。第二数组存储单元,用于记录待查验凭证数据的采集时间点;若所述查重结果为所述待查验凭证数据与任何一个提取到的凭证数据均不相同,将所述待查验凭证数据及所述采集时间点存储在第二数组的地址指针指示的数组元素中;以及每在所述第二数组的数组元素中存储一凭证数据时,按照数组元素首尾相接的顺序,向后调整一位地址指针所指示的数组元素。
在一个示例中,凭证数据查重装置还包括:第一超时凭证数据删除单元。第一超时凭证数据删除单元,用于每在所述第二数组的数组元素中存储一凭证数据后,在所述第二数组中,按照首尾相接的顺序,从所述待查验凭证数据前一个凭证数据开始到所述待查验凭证数据后一位凭证数据,依次查找首个与所述待查验凭证数据的采集时间点相隔时长大于所述预设时长的凭证数据;若查找到,则按照首尾相接的顺序,将查找到的凭证数据到所述待查验凭证数据所覆盖的凭证数据确定为目标凭证数据;以及将所述第一数组及所述第二数组中包含的所述目标凭证数据删除。
在一个示例中,凭证数据查重装置还包括:第二超时凭证数据删除单元。第二超时凭证数据删除单元,用于记录每个凭证数据的采集时间点;若所述查重结果为所述待查验凭证数据与某提取到的凭证数据相同,则比对所述待查验凭证数据的采集时间点与所述某提取到的凭证数据的采集时间点之间的时间间隔是否超过预设时长阈值;以及若超过预设时长阈值,则将所述某提取到的凭证数据的采集时间点替换为所述待查验凭证数据的采集时间点,并将所述待查验凭证数据及所述待查验凭证数据的采集时间点发送至与所述查验设备相连的其他凭证数据查重装置。
在一个示例中,凭证数据查重装置,所述数组地址生成单元用于对所述待查验凭证数据进行运算得到预设长度的数据值,包括:数组地址生成单元,具体用于将所述待查验凭证数据分段得到多个数据段,将各个所述数据段进行运算得到多个数据段的数据值,按照预设长度截取所述数据值。
在一个示例中,所述待查验凭证数据为从二维码中提取到的乘车码字符串,所述提取到的凭证数据为乘车码字符串;则所述凭证数据比对单元包括:凭证数据比对子单元。凭证数据比对子单元,用于比对从二维码中提取到的乘车码字符串与提取到的乘车码字符串内容是否一致。
见图9,其为本申请提供的凭证数据查重设备的一个硬件结构示意图。见图9,该设备可以包括:存储器901、处理器902及通信总线903。
其中,存储器901、处理器902通过通信总线903完成相互间的通信。
存储器901,用于存放程序;存储器901可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器902,用于执行程序,程序可以包括程序代码,所述程序代码包括处理器的操作指令。其中,程序可具体用于:
获得待查验凭证数据;
对所述待查验凭证数据进行运算得到预设长度的数据值,将所述数据值作为数组地址;
从第一数组中,提取所述数组地址对应的数组元素中的凭证数据;其中所述第一数组的数组元素中存储有凭证数据,凭证数据存储在由所述凭证数据自身得到的数组地址对应的数组元素中;
比对所述待查验凭证数据与提取到的凭证数据是否相同,获得查重结果。
处理器902可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。
见图10,其为本申请提供的凭证数据查重设备的另一个硬件结构示意图。见图10,该设备在图9的基础上,还可以包括:通信接口904。
通信接口904,用于接收其他凭证数据查重设备发送的凭证数据。
则处理器902,还用于对接收到的凭证数据进行运算得到预设长度的数据值,将对所述接收到的凭证数据运算得到的数据值作为所述接收到的凭证数据的数组地址;以及将所述接收到的凭证数据存储在所述接收到的凭证数据的数组地址对应的数组元素中。
在一个示例中,所述查验设备内设置有第二数组,所述第二数组的大小是按照所述查验设备在预设时长阈值内能够收到的不重复凭证数据的最大数量设置的;则处理器902,还用于记录待查验凭证数据的采集时间点;若所述查重结果为所述待查验凭证数据与任何一个提取到的凭证数据均不相同,将所述待查验凭证数据及所述采集时间点存储在第二数组的地址指针指示的数组元素中;以及每在所述第二数组的数组元素中存储一凭证数据时,按照数组元素首尾相接的顺序,向后调整一位地址指针所指示的数组元素。
在一个示例中,处理器902,还用于每在所述第二数组的数组元素中存储一凭证数据后,在所述第二数组中,按照首尾相接的顺序,从所述待查验凭证数据前一个凭证数据开始到所述待查验凭证数据后一位凭证数据,依次查找首个与所述待查验凭证数据的采集时间点相隔时长大于所述预设时长的凭证数据;若查找到,则按照首尾相接的顺序,将查找到的凭证数据到所述待查验凭证数据所覆盖的凭证数据确定为目标凭证数据;以及将所述第一数组及所述第二数组中包含的所述目标凭证数据删除。
在一个示例中,所述第一数组的数组元素中包含有链表,链表由链表节点组成,链表节点中存储有凭证数据;则所述处理器902用于从第一数组中,提取所述数组地址对应的数组元素中的凭证数据,包括:处理器902,具体用于在第一数组中确定所述数组地址对应的数组元素,并遍历所确定的数组元素中的链表,从所述链表包含的链表节点中提取凭证数据。
在一个示例中,所述处理器902还用于若所述查重结果为所述待查验凭证数据与任何一个提取到的凭证数据均不相同,则将所述待查验凭证数据存储在所述数组地址对应的数组元素中,并将所述待查验凭证数据发送至与所述查验设备相连的其他凭证数据查重设备。
在一个示例中,所述处理器902还用于记录每个凭证数据的采集时间点;若所述查重结果为所述待查验凭证数据与某提取到的凭证数据相同,则比对所述待查验凭证数据的采集时间点与所述某提取到的凭证数据的采集时间点之间的时间间隔是否超过预设时长阈值;以及若超过预设时长阈值,则将所述某提取到的凭证数据的采集时间点替换为所述待查验凭证数据的采集时间点,并将所述待查验凭证数据及所述待查验凭证数据的采集时间点发送至与所述查验设备相连的其他凭证数据查重设备。
在一个示例中,所述处理器902用于对所述待查验凭证数据进行运算得到预设长度的数据值,包括:处理器902具体用于将所述待查验凭证数据分段得到多个数据段,将各个所述数据段进行运算得到多个数据段的数据值,按照预设长度截取所述数据值。
在一个示例中,所述待查验凭证数据为从二维码中提取到的乘车码字符串,所述提取到的凭证数据为乘车码字符串;处理器902用于比对所述待查验凭证数据与提取到的凭证数据是否相同,包括:处理器902具体用于比对从二维码中提取到的乘车码字符串与提取到的乘车码字符串内容是否一致。
本申请还提供了一种可读存储介质,所述可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行以上与凭证数据查重方法相关的步骤。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (13)

1.一种凭证数据查重方法,其特征在于,所述凭证数据查重方法应用于查验设备上,所述查验设备内设置有第二数组,所述第二数组的大小是按照所述查验设备在预设时长阈值内能够收到的不重复凭证数据的最大数量设置的;所述凭证数据查重方法包括:
获得待查验凭证数据;
对所述待查验凭证数据进行运算得到预设长度的数据值,将所述数据值作为数组地址;
从第一数组中,提取所述数组地址对应的数组元素中的凭证数据;其中所述第一数组的数组元素中存储有凭证数据,凭证数据存储在由所述凭证数据自身得到的数组地址对应的数组元素中;
比对所述待查验凭证数据与提取到的凭证数据是否相同,获得查重结果;
若所述查重结果为所述待查验凭证数据与任何一个提取到的凭证数据均不相同,将所述待查验凭证数据及记录所述待查验凭证数据所得到的采集时间点存储在第二数组的地址指针指示的数组元素中;
每在所述第二数组的数组元素中存储一凭证数据时,按照数组元素首尾相接的顺序,向后调整一位地址指针所指示的数组元素。
2.根据权利要求1所述的凭证数据查重方法,其特征在于,所述第一数组的数组元素中包含有链表,链表由链表节点组成,链表节点中存储有凭证数据;则所述从第一数组中,提取所述数组地址对应的数组元素中的凭证数据,包括:
在第一数组中确定所述数组地址对应的数组元素,并遍历所确定的数组元素中的链表,从所述链表包含的链表节点中提取凭证数据。
3.根据权利要求1所述的凭证数据查重方法,其特征在于,还包括:
若所述查重结果为所述待查验凭证数据与任何一个提取到的凭证数据均不相同,则将所述待查验凭证数据存储在所述数组地址对应的数组元素中,并将所述待查验凭证数据发送至与查验设备相连的其他查验设备。
4.根据权利要求1所述的凭证数据查重方法,其特征在于,还包括:
接收其他查验设备发送的凭证数据;
对接收到的凭证数据进行运算得到预设长度的数据值,将对所述接收到的凭证数据运算得到的数据值作为所述接收到的凭证数据的数组地址;
将所述接收到的凭证数据存储在所述接收到的凭证数据的数组地址对应的数组元素中。
5.根据权利要求1所述的凭证数据查重方法,其特征在于,每在所述第二数组的数组元素中存储一凭证数据后,还包括:
在所述第二数组中,按照首尾相接的顺序,从所述待查验凭证数据前一个凭证数据开始到所述待查验凭证数据后一位凭证数据,依次查找首个与所述待查验凭证数据的采集时间点相隔时长大于所述预设时长的凭证数据;
若查找到,则按照首尾相接的顺序,将查找到的凭证数据到所述待查验凭证数据所覆盖的凭证数据确定为目标凭证数据;
将所述第一数组及所述第二数组中包含的所述目标凭证数据删除。
6.根据权利要求1所述的凭证数据查重方法,其特征在于,还包括:
记录每个凭证数据的采集时间点;
若所述查重结果为所述待查验凭证数据与某提取到的凭证数据相同,则比对所述待查验凭证数据的采集时间点与所述某提取到的凭证数据的采集时间点之间的时间间隔是否超过预设时长阈值;
若超过预设时长阈值,则将所述某提取到的凭证数据的采集时间点替换为所述待查验凭证数据的采集时间点,并将所述待查验凭证数据及所述待查验凭证数据的采集时间点发送至与所述查验设备相连的其他查验设备。
7.根据权利要求1所述的凭证数据查重方法,其特征在于,所述对所述待查验凭证数据进行运算得到预设长度的数据值,包括:
将所述待查验凭证数据分段得到多个数据段,将各个所述数据段进行运算得到多个数据段的数据值,按照预设长度截取所述数据值。
8.根据权利要求1所述的凭证数据查重方法,其特征在于,所述待查验凭证数据为从二维码中提取到的乘车码字符串,所述提取到的凭证数据为乘车码字符串;
则所述比对所述待查验凭证数据与提取到的凭证数据是否相同,包括:
比对从二维码中提取到的乘车码字符串与提取到的乘车码字符串内容是否一致。
9.一种凭证数据查重装置,其特征在于,所述凭证数据查重装置应用于查验设备中,所述查验设备内设置有第二数组,所述第二数组的大小是按照所述查验设备在预设时长阈值内能够收到的不重复凭证数据的最大数量设置的;所述凭证数据查重装置包括:
凭证数据获得单元,用于获得待查验凭证数据;
数组地址生成单元,用于对所述待查验凭证数据进行运算得到预设长度的数据值,将所述数据值作为数组地址;
凭证数据提取单元,用于从第一数组中,提取所述数组地址对应的数组元素中的凭证数据;其中所述第一数组的数组元素中存储有凭证数据,凭证数据存储在由所述凭证数据自身得到的数组地址对应的数组元素中;
凭证数据比对单元,用于比对所述待查验凭证数据与提取到的凭证数据是否相同,获得查重结果;
第二数组存储单元,用于记录待查验凭证数据的采集时间点;若所述查重结果为所述待查验凭证数据与任何一个提取到的凭证数据均不相同,将所述待查验凭证数据及所述采集时间点存储在第二数组的地址指针指示的数组元素中;以及每在所述第二数组的数组元素中存储一凭证数据时,按照数组元素首尾相接的顺序,向后调整一位地址指针所指示的数组元素。
10.一种凭证数据查重设备,其特征在于,包括:存储器以及处理器,所述处理器通过调用所述存储器内的可执行指令用于实现如权利要求1所述的凭证数据查重方法。
11.根据权利要求10所述的凭证数据查重设备,其特征在于,还包括:通信接口;
通信接口,用于接收其他凭证数据查重设备发送的凭证数据;
则处理器,还用于对接收到的凭证数据进行运算得到预设长度的数据值,将对所述接收到的凭证数据运算得到的数据值作为所述接收到的凭证数据的数组地址;以及将所述接收到的凭证数据存储在所述接收到的凭证数据的数组地址对应的数组元素中。
12.根据权利要求10所述的凭证数据查重设备,其特征在于,
处理器,还用于每在所述第二数组的数组元素中存储一凭证数据后,在所述第二数组中,按照首尾相接的顺序,从所述待查验凭证数据前一个凭证数据开始到所述待查验凭证数据后一位凭证数据,依次查找首个与所述待查验凭证数据的采集时间点相隔时长大于所述预设时长的凭证数据;若查找到,则按照首尾相接的顺序,将查找到的凭证数据到所述待查验凭证数据所覆盖的凭证数据确定为目标凭证数据;以及将所述第一数组及所述第二数组中包含的所述目标凭证数据删除。
13.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至8任意一项所述的凭证数据查重方法。
CN201810393955.6A 2018-04-27 2018-04-27 凭证数据查重方法及相关设备 Active CN110427397B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810393955.6A CN110427397B (zh) 2018-04-27 2018-04-27 凭证数据查重方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810393955.6A CN110427397B (zh) 2018-04-27 2018-04-27 凭证数据查重方法及相关设备

Publications (2)

Publication Number Publication Date
CN110427397A CN110427397A (zh) 2019-11-08
CN110427397B true CN110427397B (zh) 2023-03-21

Family

ID=68408309

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810393955.6A Active CN110427397B (zh) 2018-04-27 2018-04-27 凭证数据查重方法及相关设备

Country Status (1)

Country Link
CN (1) CN110427397B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1940922A (zh) * 2005-09-30 2007-04-04 腾讯科技(深圳)有限公司 一种提高搜索信息速度的方法及系统
CN101860531A (zh) * 2010-04-21 2010-10-13 北京星网锐捷网络技术有限公司 数据包过滤规则匹配方法及装置
CN102572050A (zh) * 2010-12-09 2012-07-11 希姆通信息技术(上海)有限公司 一种手机通讯录号码查询信息处理方法
CN104809135A (zh) * 2014-01-27 2015-07-29 腾讯科技(深圳)有限公司 一种数据存取方法及装置
CN105144250A (zh) * 2013-04-23 2015-12-09 诺基亚技术有限公司 用于数字票据检验的方法和设备
CN105260757A (zh) * 2015-10-22 2016-01-20 上海澄真信息科技有限公司 一种应用掌脉认证和手机定位相结合的检票系统及方法
US9300643B1 (en) * 2012-06-27 2016-03-29 Amazon Technologies, Inc. Unique credentials verification
CN106846506A (zh) * 2017-01-25 2017-06-13 腾讯科技(深圳)有限公司 一种基于信息标识码进行信息验证的方法及系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1940922A (zh) * 2005-09-30 2007-04-04 腾讯科技(深圳)有限公司 一种提高搜索信息速度的方法及系统
CN101860531A (zh) * 2010-04-21 2010-10-13 北京星网锐捷网络技术有限公司 数据包过滤规则匹配方法及装置
CN102572050A (zh) * 2010-12-09 2012-07-11 希姆通信息技术(上海)有限公司 一种手机通讯录号码查询信息处理方法
US9300643B1 (en) * 2012-06-27 2016-03-29 Amazon Technologies, Inc. Unique credentials verification
CN105144250A (zh) * 2013-04-23 2015-12-09 诺基亚技术有限公司 用于数字票据检验的方法和设备
CN104809135A (zh) * 2014-01-27 2015-07-29 腾讯科技(深圳)有限公司 一种数据存取方法及装置
CN105260757A (zh) * 2015-10-22 2016-01-20 上海澄真信息科技有限公司 一种应用掌脉认证和手机定位相结合的检票系统及方法
CN106846506A (zh) * 2017-01-25 2017-06-13 腾讯科技(深圳)有限公司 一种基于信息标识码进行信息验证的方法及系统

Also Published As

Publication number Publication date
CN110427397A (zh) 2019-11-08

Similar Documents

Publication Publication Date Title
CN109522316B (zh) 日志处理方法、装置、设备和存储介质
CN112988667B (zh) 一种基于区块链网络的数据存储方法及装置
CN103077163B (zh) 数据预处理方法、装置及系统
CN111277788B (zh) 一种基于mac地址的监控方法和监控系统
CN107092686B (zh) 一种基于云存储平台的文件管理方法及装置
CN103366247A (zh) 标准有效性判断系统及方法
CN106603529A (zh) 一种快递取件方法、装置及系统
CN104052737A (zh) 一种网络数据报文的处理方法及装置
CN103823807A (zh) 一种去除重复数据的方法、装置及系统
CN110427397B (zh) 凭证数据查重方法及相关设备
CN102932421A (zh) 云备份方法及装置
CN112887343B (zh) 一种用于网络大数据的管理系统及管理方法
CN112235254B (zh) 一种高速主干网中Tor网桥的快速识别方法
CN111680282B (zh) 基于区块链网络的节点管理方法、装置、设备及介质
CN106407165B (zh) 数值转移记录的核对方法和装置
CN103503388A (zh) 一种分布式队列消息读取方法及设备、系统
CN110619023A (zh) 结合区块链的物联网的水源检测数据上链方法及装置
CN110633326A (zh) 物联网的天气数据在区块链上的上链方法及系统
CN106656763A (zh) 发送离线消息的方法及装置
CN112528056B (zh) 双索引现场数据检索系统及方法
CN112002130B (zh) 一种数据管理方法、装置、服务器及计算机可读存储介质
CN104901941B (zh) 一种基于bios下笔记本定位追踪的系统和方法
CN110647769A (zh) 结合区块链的物联网的室内空气检测数据上链方法及设备
CN110674219A (zh) 基于区块链的物联网的环境空气检测数据上链方法及设备
CN109040290A (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