CN104700459B - 一种提高afc系统终端设备黑名单匹配效率的方法 - Google Patents
一种提高afc系统终端设备黑名单匹配效率的方法 Download PDFInfo
- Publication number
- CN104700459B CN104700459B CN201510126417.7A CN201510126417A CN104700459B CN 104700459 B CN104700459 B CN 104700459B CN 201510126417 A CN201510126417 A CN 201510126417A CN 104700459 B CN104700459 B CN 104700459B
- Authority
- CN
- China
- Prior art keywords
- blacklist
- logicalid
- ticket card
- record
- hash
- 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
Abstract
本发明公开了一种提高AFC系统终端设备黑名单匹配效率的方法,主要包括以下步骤:(1)车站终端设备黑名单存储及下载方案设计;(2)基于单条黑名单记录票卡逻辑号统计规律的哈希函数设计及地址冲突解决方案确定;(3)黑名单检索模式及算法设计,定义了脱机和联机两种工作模式并从算法层面对基于有序链表及哈希表的各授权操作进行了设计。本发明可用于城市轨道交通AFC系统票卡黑名单检测,能够在终端硬件不变的前提下、通过软件升级来提升票卡黑名单的检索速度;紧急情况下亦可通过联机工作模式对终端内存黑名单数据进行手动增删,以实现终端设备对黑名单数据变化的实时响应。
Description
技术领域
本发明涉及一种提高AFC系统终端设备黑名单匹配效率的方法,属于城市轨道交通智能化技术。
背景技术
随着城市轨道交通的迅猛发展,路网结构日趋复杂、输送客流量日益增大。城市轨道交通系统能否正常、高效地运营,不仅取决于轨道和车辆等基础设施条件,更有赖于运营管理及其技术手段的先进性。轨道交通自动售检票(AFC)系统为乘客提供快捷、简易的购票服务,实现轨道票务运营的售检票、财务、统计分析、审核等全过程的自动化管理工作。作为运营单位与公众交互的界面,轨道交通AFC系统的建设水平直接影响轨道交通的服务水平、运营效率以及公众满意度,因此也越来越得到人们的重视。
为保证轨道票务运营安全,需要限制无效、丢失、异常票卡在轨道交通AFC系统中使用,黑名单管理就是其中一种行之有效的方法。黑名单是限制使用的票卡卡号清单,一般采用逻辑卡号,车站终端设备通常采取逐条记录的方式来存储黑名单。轨道交通AFC系统将黑名单通过网络或其他途径下发到充值、消费等终端设备中,票卡在终端设备充值、消费时,设备自动检测,一旦发现黑名单票卡,即会锁卡并报警,阻止黑名单卡在AFC系统中使用。随着轨道交通AFC系统的运营,系统中黑名单数量不断增加,导致AFC系统终端设备容量不够、处理速度变慢等问题,如考虑对终端设备进行硬件升级,因涉及大量终端的改造或更换,成本巨大;另外,为减少运营负担,终端黑名单数据不宜频繁更新,终端设备难以实现对黑名单变化的实时响应,增加了黑名单卡使用而造成的损失。
有鉴于此,为提高城市轨道交通AFC系统服务水平、最大限度地减少票务损失,迫切需要一种提高AFC系统终端设备黑名单匹配效率的方法,在终端硬件不变的前提下,系统地解决终端设备黑名单匹配效率随运营过程不断降低这一难题。
发明内容
发明目的:针对当前城市轨道交通实际运营过程中,AFC系统终端设备黑名单检索速度随运营过程不断降低的问题,本发明提出了一种提高AFC系统终端设备黑名单匹配效率的方法,在终端硬件不变的条件下,通过软件升级即可实现,是一种成本较低的解决方案。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种提高AFC系统终端设备黑名单匹配效率的方法,包括如下步骤:
(1)车站终端设备黑名单存储及下载
(1.1)终端设备黑名单存储:采取单条黑名单记录和号段黑名单记录相结合的方法;
(1.2)终端设备黑名单下载:采用时间限制方法和分布式下载方法相结合的黑名单下载方法;
(2)基于单条黑名单票卡逻辑号统计规律的哈希函数及地址冲突解决方法
(2.1)以单条黑名单的票卡逻辑号为关键字key,根据票卡逻辑号的组成结构及其统计分布、构造相应的哈希函数H(key);
(2.2)结合给定哈希函数H(key)下的实际地址冲突状况,综合考虑黑名单规模及实际可用内存大小,选择开放寻址法或分离链接法解决地址冲突问题;
(3)黑名单检索模式及检索方法
(3.1)终端设备可采用脱机和联机两种检索模式;正常情况下处于脱机模式,执行交易票卡的黑名单查询操作;紧急情况下进入联机模式,获得授权后方可对终端设备内存黑名单数据进行增、删操作;
(3.2)基于有序链表的号段黑名单检索方法
(3.2.1)基于有序链表的号段黑名单装载
①每个运营日终端设备上电启动后,初始化进程自动运行,开辟内存空间并创建空链表;
②初始化进程将存放在终端设备外存的号段黑名单记录读入内存缓冲区,若各号段黑名单记录互不重叠,则直接创建对应节点存放号段记录中的有效字段,并按其在数轴上的相对位置插入链表;若号段记录间有相互重叠部分,则取其并集替代相关号段,得到互不重叠的号段记录序列,再按其在数轴上的相对位置插入链表;
(3.2.2)基于有序链表的号段黑名单插入
①创建节点Pcur来存放待插入号段记录中的有效字段;采用二分法定位待插入号段记录在链表中的位置,并利用链表节点Ppre、Pnext来标记之,则有(Ppre->logicalID_beg<Pcur->logicalID_beg)&&(Pcur->logicalID_end<Pnext->logicalID_end);其中:logicalID_beg为起始逻辑号,logicalID_end为终止逻辑号;
②若节点Ppre与节点Pnext之间存在中间节点,则将其删除;
③若Ppre、Pcur、Pnext中的号段记录均无重叠部分,则直接将Pcur插入到Ppre与Pnext之间;若Pcur中的号段记录与Ppre中的有重叠部分、与Pnext中的无重叠部分,则令Ppre->logicalID_end=Pcur->logicalID_end;若Pcur中的号段记录与Pnext中的有重叠部分、与Ppre中的无重叠部分,则令Pnext->logicalID_beg=Pcur->logicalID_beg;若Ppre、Pcur、Pnext中的号段记录有两两重叠部分,则令Ppre->logicalID_end=Pnext->logicalID_end,并从链表中删除节点Pnext;
(3.2.3)基于有序链表的号段黑名单查询
当脱机终端受理一张票卡交易时,首先读取票卡逻辑号,并采用二分法在链表中查找满足logicalID_beg≤交易票卡逻辑号≤logicalID_beg的链表节点;若找到该节点,返回布尔值1,表示“查找命中”;若找不到该节点,则转入(3.3.3)进入基于哈希表的单条黑名单查询流程;
(3.2.4)基于有序链表的号段黑名单删除
①采用二分法确定待删除黑名单号段[logicalID_head,logicalID_tail]在链表中的位置,将定位到的链表节点记为Pdel,则有(Pdel->logicalID_beg≤logicalID_head)&&(logicalID_tail≤Pdel->logicalID_end);若定位失败,返回布尔值0,表示“删除失败”;
②若Pdel->logicalID_beg=logicalID_head,则令Pdel->logicalID_beg=logicalID_tail+1,并返回布尔值1,表示“删除成功”;若Pdel->logicalID_end=logicalID_tail,则令Pdel->logicalID_end=logicalID_head–1,并返回布尔值,1,表示“删除成功”;若Pdel->logicalID_beg≠logicalID_head&&Pdel->logicalID_end≠logicalID_tail,则创建节点Pnew1和Pnew2,使得Pnew1->logicalID_beg=Pdel->logicalID_beg、Pnew1->logicalID_end=logicalID_head-1、Pnew2->logicalID_beg=Pdel->logicalID_tail+1、Pnew2->logicalID_end=Pdel->logicalID_end,随后删除节点Pdel,将Pnew1、Pnew1依次插入其原先位置,并返回布尔值1,表示“删除成功”;
(3.3)基于哈希表的单条黑名单检索方法
(3.3.1)基于哈希表的单条黑名单装载
①每个运营日终端设备上电启动后,初始化进程自动运行,开辟内存空间并创建空哈希表;哈希表长度TableSize=M/α,其中M为终端设备存放的单条黑名单记录数目,α为装填因子;
②初始化进程将存放在终端设备外存的单条黑名单记录读入内存缓冲区,并根据(3.3.2)定义的插入操作将其有效字段存入哈希表;
(3.3.2)基于哈希表的单条黑名单插入
①以待插入黑名单记录的票卡逻辑号为关键字key,根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);若(2.2)中选择开放寻址法解决地址冲突问题,则设置探测器locate_times=0并转②;若(2.2)中选择分离链接法解决地址冲突问题,则转④;
②若该位置未被占用,即该处logicalID=null,则将待插入黑名单记录中的有效字段存入该位置,并返回布尔值1,表示“插入成功”;若该位置已被占用,即该处logicalID≠null,则令该处hash_coll+=1,同时令locate_times+=1,转③;所述hash_coll为该位置当前的冲突次数;
③若locate_times<TableSize,则根据(2.2)确定的地址探测方法定位到下一个目标位置并转②;若locate_times=TableSize,则返回布尔值0,表示“插入失败”,并修改位于探测路径上所有位置的hash_coll,令hash_coll-=1;
④将待插入黑名单记录中的有效字段存入预先创建的链表节点;若该位置未被占用,即表中该处地址为null,则将节点链入该位置,并返回布尔值1,表示“插入成功”;若该位置已被占用,即表中该处地址不为null,则将节点插入该位置所指链表的头部并返回布尔值1,表示“插入成功”;
(3.3.3)基于哈希表的单条黑名单查询
①当脱机终端受理一张票卡交易时,首先读取票卡逻辑号,并依据(3.2.3)进行号段黑名单查询,若“查找未命中”,则以待查询票卡逻辑号为关键字key,根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);若(2.2)中选择开放寻址法解决地址冲突问题,则设置探测器locate_times=0并转②;若(2.2)中选择分离链接法解决地址冲突问题,则转⑥;
②若该位置无冲突,即该处hash_coll=0,则转③;若该位置有冲突,则转④;
③若该位置已被占用,即该处logicalID≠null,且该处存放的票卡逻辑号与待查询票卡逻辑号相等,则返回布尔值1,表示“查找命中”;若该位置未被占用,或者该处存放的票卡逻辑号与待查询票卡逻辑号不相等,则返回布尔值0,表示“查找未命中”;
④若该位置已被占用,即该处logicalID≠null,且该处存放记录的票卡逻辑号与待查询票卡逻辑号相等,则返回布尔值1,表示“查找命中”;否则令locate_times+=1并转⑤;
⑤若locate_times<TableSize,则根据(2.2)确定的地址探测方法定位到下一个目标位置并转②;若locate_times=TableSize,则返回布尔值0,表示“查找未命中”;
⑥若该位置未被占用,即表中该处地址为null,则返回布尔值0,表示“查找未命中”,否则转⑦;
⑦在该位置指向的链表中逐个比对各节点的票卡逻辑号与待查询票卡逻辑号是否相等,若找到相匹配的,则返回布尔值1,表示“查找命中”;否则返回布尔值0,表示“查找未命中”;
(3.3.4)基于哈希表的单条黑名单删除
①以待删除单条黑名单记录的票卡逻辑号为关键字key,根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);若(2.2)中选择开放寻址法解决地址冲突问题,则设置探测器locate_times=0并转②;若(2.2)中选择分离链接法解决地址冲突问题,则转⑥;
②若该位置无冲突,即该处hash_coll=0,则转③;若该位置有冲突,则转④;
③若该位置已被占用,即该处logicalID≠null,且该处存放的票卡逻辑号与待删除黑名单记录的票卡逻辑号相等,则将该处存放的单条黑名单有效字段均置为null,同时修改探测路径上所有其他位置的hash_coll,即令hash_coll-=1,并返回布尔值1,表示“删除成功”;若该位置未被占用,或者该处存放的票卡逻辑号与待查询票卡逻辑号不相等,则返回布尔值0,表示“删除失败”;
④若该位置已被占用,即该处logicalID≠null,且该处存放的票卡逻辑号与待删除黑名单记录的票卡逻辑号相等,则将该处存放的单条黑名单有效字段均置为null,同时修改探测路径上所有其他位置的hash_coll,即令hash_coll-=1,并返回布尔值1,表示“删除成功”;否则令locate_times+=1并转⑤;
⑤若locate_times<TableSize,则根据(2.2)确定的地址探测方法定位到下一个目标位置并转②;若locate_times=TableSize,则返回布尔值0,表示“删除失败”;
⑥若该位置未被占用,即表中该处地址为null,则返回布尔值0,表示“删除失败”;若该位置已被占用,则转⑦;
⑦在该位置指向的链表中逐个比对各记录的票卡逻辑号与待查询黑名单记录的关键字是否相等,若查找到相匹配的,则将其从链表删除,并返回布尔值1,表示“删除成功”;否则返回布尔值0,表示“删除失败”。
具体的,所述步骤(1.1)中,所述的单条黑名单记录应用于黑名单票卡逻辑号分布较为离散的情况下,包含如下字段:票卡逻辑号(logicalID)、黑名单生成时间(cre_time)、黑名单类别(b_class)、最近活动时间(active_time)、生成原因(cre_reason)。
具体的,所述步骤(1.1)中,所述的号段黑名单记录包含如下字段:起始逻辑号(logicalID_beg)、终止逻辑号(logicalID_end)、黑名单生成时间(cre_time)、黑名单类别(b_class)、生成原因(cre_reason)。
具体的,所述步骤(1.2)中,所述的时间限制方法设定票卡的有效期,有效期内用户在终端使用票卡时,自动将卡激活,使其有效期增加;若有效期内从未使用该卡,则需要到地铁售票窗口延长有效期;所述的时间限制方法仅将黑名单全数据库中处于有效期内的黑名单数据下发到终端设备。
具体的,所述步骤(1.2)中,所述的分布式下载方法根据设备容量将黑名单库动态地分配到各终端设备上,并保证全部黑名单覆盖整个系统。
具体的,所述步骤(2.1)中,构造相应的哈希函数H(key)方法包括直接寻法址、数字分析法、平方取中法、折叠法、除留余数法。
更为具体的,所述步骤(3.2.1)②中,所述的号段记录中的有效字段必须包括起始逻辑号(logicalID_beg)、终止逻辑号(logicalID_end),号段记录中的其他字段可根据运营需求及终端实际可用内存酌情选取。
更为具体的,所述步骤(3.3.1)①中,所述的空哈希表,其初始化方案取决于(2.2)中选定的地址冲突解决方法:若选择开放寻址法,则哈希表是一个结构数组,其结构体成员除了单条黑名单记录中的有效字段外,还应包括hash_coll项,用于记录表中该位置当前的冲突次数,且空哈希表中各位置均满足:hash_coll=0、logicalID=null;若选择分离链接法,则哈希表是一个头节点指针数组,被散列到表中某处的单条黑名单记录中的有效字段被存入预先创建的链表节点,再链入该位置,且空哈希表中各指针均置为null。
更为具体的,所述步骤(3.3.1)②中,所述的有效字段必须包括票卡逻辑号(logicalID),单条黑名单记录中的其他字段可根据运营需求及终端实际可用内存酌情选取。
更为具体的,所述步骤(3.3.1)①中所述的装填因子α,其取值范围通常控制在0.6~0.9之内;对于开放寻址法,则应严格限制在0.8以下。
有益效果:本发明提供的提高AFC系统终端设备黑名单匹配效率的方法,其优点在于:
①采用单条记录和号段记录相结合的终端黑名单存储方式,既兼顾了存储方式的灵活性,又可节约存储空间;
②采用时间限制方法和分布式下载方法相结合的终端设备黑名单下载方案,有效减少了终端设备存放黑名单的数量,从而提高了检测效率;
③采用基于有序链表的号段黑名单检索和基于哈希表的单条黑名单检索相结合的复合检索方案,查询算法的时间复杂度从线性查询的o(N)降低到了二分法查询的o(lgN)和哈希表查询的o(1)。
④支持联机模式下对各终端设备内存黑名单数据的插入、删除操作,能够实现紧急情况下终端设备对黑名单变化的实时响应。
附图说明
图1为本发明主要实施步骤示意图。
图2为黑名单票卡检索流程示意图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
实施例1:选择分离链接法解决哈希函数H(key)中地址冲突问题
如图1所示为一种提高AFC系统终端设备黑名单匹配效率的方法的步骤示意图,下面结合实例对本发明做出进一步的说明。
(1)车站终端设备黑名单存储及下载方案设计
本实例以苏州地铁AFC系统为实施背景,其终端嵌入式读写器采用32位CPU、嵌入式操作系统,FLASH与内存应有足够的容量,用以运行操作系统、应用程序和保存与票卡有关的参数文件。
(1.1)黑名单票卡逻辑号分布较为离散的情况下,采取单条存储方式;对于某些特殊的情况,譬如整批票卡的丢失,采取号段记录的方式以节约存储空间。
(1.2)采用时间限制方法和分布式下载方法相结合的终端设备黑名单下载方案
(1.2.1)时间限制方法将票卡的有效期定为一年。有效期内用户在终端使用票卡时,自动将卡激活,使其有效期增加一年;若一年之内从未使用该卡,则需要到地铁售票窗口延长有效期。时间限制方法仅将黑名单全数据库中处于有效期内的黑名单数据下发到终端设备。
(1.2.2)根据设备容量大小,将黑名单库动态地分配到各终端设备上,并保证全部黑名单覆盖整个系统;同时,各设备上存放的黑名单列表也应动态地从全黑名单库中提取,使得同一设备在一段时间内被黑名单库完全覆盖。
(2)基于单条黑名单票卡逻辑号统计规律的哈希函数设计及地址冲突解决方案确定
(2.1)苏州地铁票卡逻辑号为8个字节的BCD码,可用16位十进制数表示。其低32位从高位到低位依次为:前导码(8bit)+卡印刷类型(8bit)+批次日期(16bit);高32位从高位到低位依次为:批次号(8bit)+批次流水号(16bit)+校验码(8bit)。因此,可通过对黑名单库中现存票卡的批次号+批次流水号进行分析,统计不同位置上各十进制数出现的规律,采用数字分析法结合除留余数法构造哈希函数H(key)。
(2.2)综合考虑黑名单规模及实际可用内存大小,选择分离链接法解决地址冲突问题具有如下优势:
①分离链接法冲突处理方法简单,非同义词决不会发生冲突,因此平均查找长度较短;
②开放寻址法为减少冲突,要求装填因子α较小,故当黑名单规模庞大时较为浪费空间;
③在用分离链接法构造的哈希表中,删除结点的操作易于实现,只需直接删去链表上相应结点即可;而对开放地址法构造的哈希表,除了将被删数据置null以外,还需在被删位置上做冲突标记,否则将截断在其后填入哈希表的同义词的查找路径。
(3)黑名单检索模式及检索方法
(3.1)终端设备可采用脱机和联机两种检索模式。正常情况下处于脱机模式,执行交易票卡的黑名单查询、判断;紧急情况下可进入联机模式,获得授权后方可对终端内存黑名单数据进行增、删操作。
(3.2)基于有序链表的号段黑名单检索方法
(3.2.1)基于有序链表号段黑名单装载
①每个运营日终端设备上电启动后,操作系统自动加载外存文件系统并调用其上脚本,实现驱动和应用程序的加载;加载完毕后,初始化进程自动运行,开辟内存空间并创建空链表。
②初始化进程将存放在终端外存的号段黑名单记录读入内存缓冲区,若各号段记录互不重叠,则直接创建对应节点存放号段记录中的有效字段,并按其在数轴上的相对位置插入链表;若号段记录间有相互重叠部分,则取其并集替代相关号段,得到互不重叠的号段记录序列,再按上述要求插入链表。
(3.2.2)基于有序链表的号段黑名单插入
①创建节点Pcur来存放待插入号段记录中的有效字段;采用二分法定位待插入号段记录在链表中的位置,并利用链表节点Ppre、Pnext来标记之,则有(Ppre->logicalID_beg<Pcur->logicalID_beg)&&(Pcur->logicalID_end<Pnext->logicalID_end)。
②若节点Ppre与节点Pnext之间存在中间节点,则将其删除。
③若Ppre、Pcur、Pnext中的号段记录均无重叠部分,则直接将Pcur插入到Ppre与Pnext之间;若Pcur中的号段记录与Ppre中的有重叠部分、与Pnext中的无重叠部分,则令Ppre->logicalID_end=Pcur->logicalID_end;若Pcur中的号段记录与Pnext中的有重叠部分、与Ppre中的无重叠部分,则令Pnext->logicalID_beg=Pcur->logicalID_beg;若Ppre、Pcur、Pnext中的号段记录有两两重叠部分,则令Ppre->logicalID_end=Pnext->logicalID_end,并从链表中删除节点Pnext。
(3.2.3)基于有序链表的号段黑名单查询
如图2所示,当脱机终端受理一张票卡交易时,首先读取票卡逻辑号,并采用二分法在链表中查找满足logicalID_beg≤交易票卡逻辑号≤logicalID_beg的链表节点,时间复杂度为o(lgN),其中N为链表长度,也是终端所储存的黑名单号段记录的数目;若找到该节点,返回布尔值1,表示“查找命中”,否则转入(3.3.3)进入基于哈希表的单条黑名单查询流程。
(3.2.4)基于有序链表的号段黑名单删除
①采用二分法确定待删除黑名单号段[logicalID_head,logicalID_tail]在链表中的位置,将定位到的链表节点记为Pdel,则有(Pdel->logicalID_beg≤logicalID_head)&&(logicalID_tail≤Pdel->logicalID_end);若定位失败,返回布尔值0,表示“删除失败”;
②若Pdel->logicalID_beg=logicalID_head,则令Pdel->logicalID_beg=logicalID_tail+1,并返回布尔值1,表示“删除成功”;若Pdel->logicalID_end=logicalID_tail,则令Pdel->logicalID_end=logicalID_head–1,并返回布尔值1,表示“删除成功”;若Pdel->logicalID_beg≠logicalID_head&&Pdel->logicalID_end≠logicalID_tail,则创建节点Pnew1和Pnew2,使得Pnew1->logicalID_beg=Pdel->logicalID_beg、Pnew1->logicalID_end=logicalID_head-1、Pnew2->logicalID_beg=Pdel->logicalID_tail+1、Pnew2->logicalID_end=Pdel->logicalID_end,随后删除节点Pdel,将Pnew1、Pnew1依次插入其原先位置,并返回布尔值1,表示“删除成功”。
(3.3)基于哈希表的单条黑名单检索方法
(3.3.1)基于哈希表的单条黑名单装载
①每个运营日终端设备上电启动后,操作系统自动加载外存文件系统并调用其上脚本,实现驱动和应用程序的加载;加载完毕后,初始化进程自动运行,开辟内存空间并创建空哈希表。本例中,哈希表用头节点指针数组实现,且空表各指针均设为null;表长TableSize=M/α,其中M为终端设备存放的单条黑名单记录数目,α为装填因子,本例中取α=0.9。
②初始化进程将存放在终端外存的单条黑名单记录读入内存缓冲区,并根据(3.3.2)定义的插入操作将其有效字段存入哈希表。考虑到运营需求,暂取票卡逻辑号(logicalID)为有效字段。
(3.3.2)基于哈希表的单条黑名单插入
①以待插入黑名单记录的票卡逻辑号为关键字key,根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);
②将待插入黑名单记录中的有效字段存入预先创建的链表节点。若该位置未被占用,即表中该处地址为null,则将节点链入该位置,并返回布尔值1,表示“插入成功”;否则,将节点插入该位置所指链表的头部并返回布尔值1,表示“插入成功”。
(3.3.3)基于哈希表的单条黑名单查询
①如图2所示,当脱机终端受理一张票卡交易时,首先读取票卡逻辑号,并依据(3.2.3)进行号段黑名单查询,若“查找未命中”,则以待查询票卡逻辑号为关键字(key),根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);
②若该位置未被占用,即表中该处地址为null,则返回布尔值0,表示“查找未命中”,否则转③;
③在该位置指向的链表中逐个比对各节点的票卡逻辑号与待查询票卡逻辑号是否相等,若找到相匹配的,则返回布尔值1,表示“查找命中”;否则返回布尔值0,表示“查找未命中”;
(3.3.4)基于哈希表的单条黑名单删除
①以待删除单条黑名单记录的票卡逻辑号为关键字(key),根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);
②若该位置未被占用,即表中该处地址为null,则返回布尔值0,表示“删除失败”,否则转③;
③在该位置指向的链表中逐个比对各记录的票卡逻辑号与待查询黑名单记录的关键字是否相等,若查找到相匹配的,则将其从链表删除,并返回布尔值1,表示“删除成功”;否则返回布尔值0,表示“删除失败”。
实施例2:选择开放寻址法解决哈希函数H(key)中地址冲突问题
虽然实施例1中采用分离链接法解决地址冲突问题较优,但采用开放寻址法亦可。采用开放寻址法与实施例1的区别在于:
步骤(3.3.2)中,基于哈希表的单条黑名单插入
①以待插入黑名单记录的票卡逻辑号为关键字key,根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);若选择开放寻址法解决地址冲突问题,则设置探测器locate_times=0并转②;
②若该位置未被占用,即该处logicalID=null,则将待插入黑名单记录中的有效字段存入该位置,并返回布尔值1,表示“插入成功”;若该位置已被占用,即该处logicalID≠null,则令该处hash_coll+=1,同时令locate_times+=1,转③;所述hash_coll为该位置当前的冲突次数;
③若locate_times<TableSize,则根据(2.2)确定的地址探测方法定位到下一个目标位置并转②;若locate_times=TableSize,则返回布尔值0,表示“插入失败”,并修改位于探测路径上所有位置的hash_coll,令hash_coll-=1。其中,“插入失败”表示哈希表中已无可用空位、无法继续插入数据,除非在联机模式下一次性插入大量额外数据,否则基本不会发生。在该情形下,操作员可考虑取消当前操作;或等待一段时间,待表中出现空位后再尝试操作。
步骤(3.3.3)中:基于哈希表的单条黑名单查询
①当脱机终端受理一张票卡交易时,首先读取票卡逻辑号,并依据(3.2.3)进行号段黑名单查询,若“查找未命中”,则以待查询票卡逻辑号为关键字key,根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);若选择开放寻址法解决地址冲突问题,则设置探测器locate_times=0并转②;
②若该位置无冲突,即该处hash_coll=0,则转③;若该位置有冲突,则转④;
③若该位置已被占用,即该处logicalID≠null,且该处存放的票卡逻辑号与待查询票卡逻辑号相等,则返回布尔值1,表示“查找命中”;若该位置未被占用,或者该处存放的票卡逻辑号与待查询票卡逻辑号不相等,则返回布尔值0,表示“查找未命中”;
④若该位置已被占用,即该处logicalID≠null,且该处存放记录的票卡逻辑号与待查询票卡逻辑号相等,则返回布尔值1,表示“查找命中”;否则令locate_times+=1并转⑤;
⑤若locate_times<TableSize,则根据(2.2)确定的地址探测方法定位到下一个目标位置并转②;若locate_times=TableSize,则返回布尔值0,表示“查找未命中”。
步骤(3.3.4)中,基于哈希表的单条黑名单删除
①以待删除单条黑名单记录的票卡逻辑号为关键字key,根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);若选择开放寻址法解决地址冲突问题,则设置探测器locate_times=0并转②;
②若该位置无冲突,即该处hash_coll=0,则转③;若该位置有冲突,则转④;
③若该位置已被占用,即该处logicalID≠null,且该处存放的票卡逻辑号与待删除黑名单记录的票卡逻辑号相等,则将该处存放的单条黑名单有效字段均置为null,同时修改探测路径上所有其他位置的hash_coll,即令hash_coll-=1,并返回布尔值1,表示“删除成功”;若该位置未被占用,或者该处存放的票卡逻辑号与待查询票卡逻辑号不相等,则返回布尔值0,表示“删除失败”;
④若该位置已被占用,即该处logicalID≠null,且该处存放的票卡逻辑号与待删除黑名单记录的票卡逻辑号相等,则将该处存放的单条黑名单有效字段均置为null,同时修改探测路径上所有其他位置的hash_coll,即令hash_coll-=1,并返回布尔值1,表示“删除成功”;否则令locate_times+=1并转⑤;
⑤若locate_times<TableSize,则根据(2.2)确定的地址探测方法定位到下一个目标位置并转②;若locate_times=TableSize,则返回布尔值0,表示“删除失败”。其中,删除失败表示待删除票卡不在哈希表中。
本实施例1、2所示方案中,采用单条记录和号段记录相结合的终端黑名单存储方式,既兼顾了存储方式的灵活性,又可节约存储空间;采用时间限制方法和分布式下载方法相结合的终端设备黑名单下载方案,有效减少了终端设备存放黑名单的数量,从而提高了检测效率;采用基于有序链表的号段黑名单检索和基于哈希表的单条黑名单检索相结合的复合检索方案,查询算法的时间复杂度从线性查询的o(N)降低到了二分法查询的o(lgN)和哈希表查询的o(1)。支持联机模式下对各终端设备内存黑名单数据的插入、删除操作,能够实现紧急情况下终端设备对黑名单变化的实时响应。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种提高AFC系统终端设备黑名单匹配效率的方法,其特征在于:包括如下步骤:
(1)车站终端设备黑名单存储及下载
(1.1)终端设备黑名单存储:采取单条黑名单记录和号段黑名单记录相结合的方法;
(1.2)终端设备黑名单下载:采用时间限制方法和分布式下载方法相结合的黑名单下载方法;
(2)基于单条黑名单票卡逻辑号统计规律的哈希函数及地址冲突解决方法
(2.1)以单条黑名单的票卡逻辑号为关键字key,根据票卡逻辑号的组成结构及其统计分布、构造相应的哈希函数H(key);
(2.2)结合给定哈希函数H(key)下的实际地址冲突状况,综合考虑黑名单规模及实际可用内存大小,选择开放寻址法或分离链接法解决地址冲突问题;
(3)黑名单检索模式及检索方法
(3.1)终端设备可采用脱机和联机两种检索模式;正常情况下处于脱机模式,执行交易票卡的黑名单查询操作;紧急情况下进入联机模式,获得授权后方可对终端设备内存黑名单数据进行增、删操作;
(3.2)基于有序链表的号段黑名单检索方法
(3.2.1)基于有序链表的号段黑名单装载
①每个运营日终端设备上电启动后,初始化进程自动运行,开辟内存空间并创建空链表;
②初始化进程将存放在终端设备外存的号段黑名单记录读入内存缓冲区,若各号段黑名单记录互不重叠,则直接创建对应节点存放号段记录中的有效字段,并按其在数轴上的相对位置插入链表;若号段记录间有相互重叠部分,则取其并集替代相关号段,得到互不重叠的号段记录序列,再按其在数轴上的相对位置插入链表;
(3.2.2)基于有序链表的号段黑名单插入
①创建节点Pcur来存放待插入号段记录中的有效字段;采用二分法定位待插入号段记录在链表中的位置,并利用链表节点Ppre、Pnext来标记之,则有(Ppre->logicalID_beg<Pcur->logicalID_beg)&&(Pcur->logicalID_end<Pnext->logicalID_end);其中:logicalID_beg为起始逻辑号,logicalID_end为终止逻辑号;
②若节点Ppre与节点Pnext之间存在中间节点,则将其删除;
③若Ppre、Pcur、Pnext中的号段记录均无重叠部分,则直接将Pcur插入到Ppre与Pnext之间;若Pcur中的号段记录与Ppre中的有重叠部分、与Pnext中的无重叠部分,则令Ppre->logicalID_end=Pcur->logicalID_end;若Pcur中的号段记录与Pnext中的有重叠部分、与Ppre中的无重叠部分,则令Pnext->logicalID_beg=Pcur->logicalID_beg;若Ppre、Pcur、Pnext中的号段记录有两两重叠部分,则令Ppre->logicalID_end=Pnext->logicalID_end,并从链表中删除节点Pnext;
(3.2.3)基于有序链表的号段黑名单查询
当脱机终端受理一张票卡交易时,首先读取票卡逻辑号,并采用二分法在链表中查找满足logicalID_beg≤交易票卡逻辑号≤logicalID_beg的链表节点;若找到该节点,返回布尔值1,表示“查找命中”;若找不到该节点,则转入(3.3.3)进入基于哈希表的单条黑名单查询流程;
(3.2.4)基于有序链表的号段黑名单删除
①采用二分法确定待删除黑名单号段[logicalID_head,logicalID_tail]在链表中的位置,将定位到的链表节点记为Pdel,则有(Pdel->logicalID_beg≤logicalID_head)&&(logicalID_tail≤Pdel->logicalID_end);若定位失败,返回布尔值0,表示“删除失败”;
②若Pdel->logicalID_beg=logicalID_head,则令Pdel->logicalID_beg=logicalID_tail+1,并返回布尔值1,表示“删除成功”;若Pdel->logicalID_end=logicalID_tail,则令Pdel->logicalID_end=logicalID_head–1,并返回布尔值1,表示“删除成功”;若Pdel->logicalID_beg≠logicalID_head&&Pdel->logicalID_end≠logicalID_tail,则创建节点Pnew1和Pnew2,使得Pnew1->logicalID_beg=Pdel->logicalID_beg、Pnew1->logicalID_end=logicalID_head-1、Pnew2->logicalID_beg=Pdel->logicalID_tail+1、Pnew2->logicalID_end=Pdel->logicalID_end,随后删除节点Pdel,将Pnew1、Pnew1依次插入其原先位置,并返回布尔值1,表示“删除成功”;
(3.3)基于哈希表的单条黑名单检索方法
(3.3.1)基于哈希表的单条黑名单装载
①每个运营日终端设备上电启动后,初始化进程自动运行,开辟内存空间并创建空哈希表;哈希表长度TableSize=M/α,其中M为终端设备存放的单条黑名单记录数目,α为装填因子;
②初始化进程将存放在终端设备外存的单条黑名单记录读入内存缓冲区,并根据(3.3.2)定义的插入操作将其有效字段存入哈希表;
(3.3.2)基于哈希表的单条黑名单插入
①以待插入黑名单记录的票卡逻辑号为关键字key,根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);若(2.2)中选择开放寻址法解决地址冲突问题,则设置探测器locate_times=0并转②;若(2.2)中选择分离链接法解决地址冲突问题,则转④;
②若该位置未被占用,即该处logicalID=null,则将待插入黑名单记录中的有效字段存入该位置,并返回布尔值1,表示“插入成功”;若该位置已被占用,即该处logicalID≠null,则令该处hash_coll+=1,同时令locate_times+=1,转③;所述hash_coll为该位置当前的冲突次数;
③若locate_times<TableSize,则根据(2.2)确定的地址探测方法定位到下一个目标位置并转②;若locate_times=TableSize,则返回布尔值0,表示“插入失败”,并修改位于探测路径上所有位置的hash_coll,令hash_coll-=1;
④将待插入黑名单记录中的有效字段存入预先创建的链表节点;若该位置未被占用,即表中该处地址为null,则将节点链入该位置,并返回布尔值1,表示“插入成功”;若该位置已被占用,即表中该处地址不为null,则将节点插入该位置所指链表的头部并返回布尔值1,表示“插入成功”;
(3.3.3)基于哈希表的单条黑名单查询
①当脱机终端受理一张票卡交易时,首先读取票卡逻辑号,并依据(3.2.3)进行号段黑名单查询,若“查找未命中”,则以待查询票卡逻辑号为关键字key,根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);若(2.2)中选择开放寻址法解决地址冲突问题,则设置探测器locate_times=0并转②;若(2.2)中选择分离链接法解决地址冲突问题,则转⑥;
②若该位置无冲突,即该处hash_coll=0,则转③;若该位置有冲突,即hash_coll≠0,则转④;
③若该位置已被占用,即该处logicalID≠null,且该处存放的票卡逻辑号与待查询票卡逻辑号相等,则返回布尔值1,表示“查找命中”;若该位置未被占用,即logicalID=null,或者该处存放的票卡逻辑号与待查询票卡逻辑号不相等,则返回布尔值0,表示“查找未命中”;
④若该位置已被占用,即该处logicalID≠null,且该处存放记录的票卡逻辑号与待查询票卡逻辑号相等,则返回布尔值1,表示“查找命中”;否则令locate_times+=1并转⑤;
⑤若locate_times<TableSize,则根据(2.2)确定的地址探测方法定位到下一个目标位置并转②;若locate_times=TableSize,则返回布尔值0,表示“查找未命中”;
⑥若该位置未被占用,即表中该处地址为null,则返回布尔值0,表示“查找未命中”,否则转⑦;
⑦在该位置指向的链表中逐个比对各节点的票卡逻辑号与待查询票卡逻辑号是否相等,若找到相匹配的,则返回布尔值1,表示“查找命中”;否则返回布尔值0,表示“查找未命中”;
(3.3.4)基于哈希表的单条黑名单删除
①以待删除单条黑名单记录的票卡逻辑号为关键字key,根据(2.1)确定的哈希函数将其映射到哈希表中对应位置H(key);若(2.2)中选择开放寻址法解决地址冲突问题,则设置探测器locate_times=0并转②;若(2.2)中选择分离链接法解决地址冲突问题,则转⑥;
②若该位置无冲突,即该处hash_coll=0,则转③;若该位置有冲突,则转④;
③若该位置已被占用,即该处logicalID≠null,且该处存放的票卡逻辑号与待删除黑名单记录的票卡逻辑号相等,则将该处存放的单条黑名单有效字段均置为null,同时修改探测路径上所有其他位置的hash_coll,即令hash_coll-=1,并返回布尔值1,表示“删除成功”;若该位置未被占用,或者该处存放的票卡逻辑号与待查询票卡逻辑号不相等,则返回布尔值0,表示“删除失败”;
④若该位置已被占用,即该处logicalID≠null,且该处存放的票卡逻辑号与待删除黑名单记录的票卡逻辑号相等,则将该处存放的单条黑名单有效字段均置为null,同时修改探测路径上所有其他位置的hash_coll,即令hash_coll-=1,并返回布尔值1,表示“删除成功”;否则令locate_times+=1并转⑤;
⑤若locate_times<TableSize,则根据(2.2)确定的地址探测方法定位到下一个目标位置并转②;若locate_times=TableSize,则返回布尔值0,表示“删除失败”;
⑥若该位置未被占用,即表中该处地址为null,则返回布尔值0,表示“删除失败”;若该位置已被占用,则转⑦;
⑦在该位置指向的链表中逐个比对各记录的票卡逻辑号与待查询黑名单记录的关键字是否相等,若查找到相匹配的,则将其从链表删除,并返回布尔值1,表示“删除成功”;否则返回布尔值0,表示“删除失败”。
2.根据权利要求1所述的一种提高AFC系统终端设备黑名单匹配效率的方法,其特征在于:所述步骤(1.1)中,所述的单条黑名单记录应用于黑名单票卡逻辑号分布较为离散的情况下,包含如下字段:票卡逻辑号(logicalID)、黑名单生成时间(cre_time)、黑名单类别(b_class)、最近活动时间(active_time)、生成原因(cre_reason)。
3.根据权利要求1所述的一种提高AFC系统终端设备黑名单匹配效率的方法,其特征在于:所述步骤(1.1)中,所述的号段黑名单记录包含如下字段:起始逻辑号(logicalID_beg)、终止逻辑号(logicalID_end)、黑名单生成时间(cre_time)、黑名单类别(b_class)、生成原因(cre_reason)。
4.根据权利要求1所述的一种提高AFC系统终端设备黑名单匹配效率的方法,其特征在于:所述步骤(1.2)中,所述的时间限制方法设定票卡的有效期,有效期内用户在终端使用票卡时,自动将卡激活,使其有效期增加;若有效期内从未使用该卡,则需要到地铁售票窗口延长有效期;所述的时间限制方法仅将黑名单全数据库中处于有效期内的黑名单数据下发到终端设备。
5.根据权利要求1所述的一种提高AFC系统终端设备黑名单匹配效率的方法,其特征在于:所述步骤(1.2)中,所述的分布式下载方法根据设备容量将黑名单库动态地分配到各终端设备上,并保证全部黑名单覆盖整个系统。
6.根据权利要求1所述的一种提高AFC系统终端设备黑名单匹配效率的方法,其特征在于:所述步骤(2.1)中,构造相应的哈希函数H(key)方法包括直接寻法址、数字分析法、平方取中法、折叠法、除留余数法。
7.根据权利要求1所述的一种提高AFC系统终端设备黑名单匹配效率的方法,其特征在于:所述步骤(3.2.1)②中,所述的号段记录中的有效字段必须包括起始逻辑号(logicalID_beg)、终止逻辑号(logicalID_end),号段记录中的其他字段可根据运营需求及终端实际可用内存酌情选取。
8.根据权利要求1所述的一种提高AFC系统终端设备黑名单匹配效率的方法,其特征在于:所述步骤(3.3.1)①中,所述的空哈希表,其初始化方案取决于(2.2)中选定的地址冲突解决方法:若选择开放寻址法,则哈希表是一个结构数组,其结构体成员除了单条黑名单记录中的有效字段外,还应包括hash_coll项,用于记录表中该位置当前的冲突次数,且空哈希表中各位置均满足:hash_coll=0、logicalID=null;若选择分离链接法,则哈希表是一个头节点指针数组,被散列到表中某处的单条黑名单记录中的有效字段被存入预先创建的链表节点,再链入该位置,且空哈希表中各指针均置为null。
9.根据权利要求1所述的一种提高AFC系统终端设备黑名单匹配效率的方法,其特征在于:所述步骤(3.3.1)②中,所述的有效字段必须包括票卡逻辑号(logicalID),单条黑名单记录中的其他字段可根据运营需求及终端实际可用内存酌情选取。
10.根据权利要求1所述的一种提高AFC系统终端设备黑名单匹配效率的方法,其特征在于:所述步骤(3.3.1)①中所述的装填因子α,其取值范围控制在0.6~0.9之内;对于开放寻址法,则严格限制在0.8以下。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510126417.7A CN104700459B (zh) | 2015-03-20 | 2015-03-20 | 一种提高afc系统终端设备黑名单匹配效率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510126417.7A CN104700459B (zh) | 2015-03-20 | 2015-03-20 | 一种提高afc系统终端设备黑名单匹配效率的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104700459A CN104700459A (zh) | 2015-06-10 |
CN104700459B true CN104700459B (zh) | 2016-03-23 |
Family
ID=53347540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510126417.7A Active CN104700459B (zh) | 2015-03-20 | 2015-03-20 | 一种提高afc系统终端设备黑名单匹配效率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104700459B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105427450A (zh) * | 2015-11-10 | 2016-03-23 | 东方通信股份有限公司 | 基于新型纸币冠字号存储结构的atm假币识别系统及方法 |
CN112044081B (zh) * | 2020-08-26 | 2023-11-10 | 杭州电魂网络科技股份有限公司 | 一种玩家列表更新、查询的方法及系统 |
CN113112619B (zh) * | 2021-04-07 | 2023-12-05 | 高新现代智能系统股份有限公司 | 联机类票卡的检票方法、检票设备、系统及存储介质 |
CN113329036B (zh) * | 2021-08-02 | 2021-11-05 | 南京大数据集团有限公司 | 一种黑名单系统工作方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876989A (zh) * | 2009-12-07 | 2010-11-03 | 公安部交通管理科学研究所 | 一种对海量含通配符黑名单高速匹配的方法 |
CN103020182A (zh) * | 2012-11-29 | 2013-04-03 | 深圳市新国都技术股份有限公司 | 一种基于hash算法的数据查找方法 |
CN202939648U (zh) * | 2012-12-16 | 2013-05-15 | 四川久远新方向智能科技有限公司 | 轨道交通清分系统车票黑名单管理系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2475252A (en) * | 2009-11-10 | 2011-05-18 | Skype Ltd | A hashing scheme is used to facilitate identifying the presence of matching information items on different network nodes without disclosing the information. |
-
2015
- 2015-03-20 CN CN201510126417.7A patent/CN104700459B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876989A (zh) * | 2009-12-07 | 2010-11-03 | 公安部交通管理科学研究所 | 一种对海量含通配符黑名单高速匹配的方法 |
CN103020182A (zh) * | 2012-11-29 | 2013-04-03 | 深圳市新国都技术股份有限公司 | 一种基于hash算法的数据查找方法 |
CN202939648U (zh) * | 2012-12-16 | 2013-05-15 | 四川久远新方向智能科技有限公司 | 轨道交通清分系统车票黑名单管理系统 |
Non-Patent Citations (2)
Title |
---|
轨道交通线网AFC系统黑名单管理;高朝晖 等;《都市快轨交通》;20120229;第23卷(第1期);89-92 * |
轨道交通网络化AFC系统票务管理分析;高朝晖 等;《现代城市轨道交通》;20080630;14-17 * |
Also Published As
Publication number | Publication date |
---|---|
CN104700459A (zh) | 2015-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104700459B (zh) | 一种提高afc系统终端设备黑名单匹配效率的方法 | |
CN102331993B (zh) | 分布式数据库的数据迁移方法和分布式数据库迁移系统 | |
EP2797014B1 (en) | Database update execution according to power management schemes | |
US8682941B2 (en) | Database apparatus | |
CN103425663B (zh) | 嵌入式系统数据库创建表、存记录、删记录的方法和装置 | |
CN101645179B (zh) | 出入室管理系统、出入室管理方法及接待装置 | |
CN102376111A (zh) | 进出管理系统及方法 | |
US20140181059A1 (en) | Batching content management operations to facilitate efficient database interactions | |
CN101617299A (zh) | 数据库管理方法 | |
CN102819494B (zh) | 一种闪存顺序写入时的优化方法 | |
CN111666305A (zh) | 一种实现redis缓存和数据库进行关联的方法及其系统 | |
CN102156744A (zh) | 一种内存话单剔重方法 | |
CN108647266A (zh) | 一种异构数据快速分布存储、交互方法 | |
CN106406748A (zh) | 存储器中心数据库架构 | |
CN104077078B (zh) | 读存储区、更新存储区的方法及装置 | |
CN106649530B (zh) | 云详单查询管理系统及方法 | |
CN104468665A (zh) | 数据分布式存储的实现方法和系统 | |
CN116301656A (zh) | 基于日志结构合并树的数据存储方法、系统及设备 | |
CN101004741A (zh) | 一种改进的哈希方法及其应用 | |
CN116187915A (zh) | 一种仓库管理方法、装置、设备及存储介质 | |
CN109492020A (zh) | 一种数据缓存方法、装置、电子设备及存储介质 | |
CN115509446A (zh) | 元数据垃圾识别方法、装置和设备 | |
CN102375892B (zh) | 大容量数据库卡的事务管理方法、大容量数据库卡及系统 | |
CN110262755A (zh) | 一种嵌入式系统的文件存储方法 | |
KR20210081619A (ko) | 셀렉트 쿼리 처리 시 네트워크 비용 절감을 위해 멀티 캐시를 구비한 클라우드 데이터베이스 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |