CN105608214B - 对布控车牌号码进行快速搜索的方法 - Google Patents
对布控车牌号码进行快速搜索的方法 Download PDFInfo
- Publication number
- CN105608214B CN105608214B CN201511024045.3A CN201511024045A CN105608214B CN 105608214 B CN105608214 B CN 105608214B CN 201511024045 A CN201511024045 A CN 201511024045A CN 105608214 B CN105608214 B CN 105608214B
- Authority
- CN
- China
- Prior art keywords
- control
- ensure effective
- effective monitoring
- illegal activities
- deploying
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Traffic Control Systems (AREA)
Abstract
本发明涉及一种对布控车牌号码进行快速搜索的方法。本发明通过在内存中建立车牌索引区域,先验证目标车牌号是否为布控范围内的车牌号;若是则读写车辆过车数据库,找到目标车牌号的信息数据;若否,则不再对该车牌号进行下一步搜索。从而可以避免对大量的布控范围外的车牌号进行搜索,提高搜索速度和搜索效率。
Description
技术领域
本发明涉及一种车牌搜索方法,特别是一种对布控车牌号码进行快速搜索的方法。
背景技术
在省级卡口系统中,布控车辆的车牌信息往往百万甚至千万条。传统的搜索效率较低,用户往往需要等很久才能获取到需要的车牌信息。在数据库系统中,为了加快数据的访问速度,一般建立索引结构,索引结构是一个或多个列的值进行排序的结构。因为硬盘的I/O(输入/输出)速度非常耗时,所以尽量选择可以将I/O次数降低的数据索引。常见的硬盘数据库索引有B树索引,B+树索引,T树索引,使用这些索引可以显著的减少硬盘I/O数。
不同于硬盘数据库系统,内存数据库系统在数据访问时更加显著的减少或消除磁盘I/O,提高数据的访问速度。Cache(高速缓冲存储器)是计算机系统的层次存储结构中,介于中央处理器(CPU)和主存储器(ROM)之间的高速小容量存储器。它具有速度快、容量小的特点。内存层次结构的意义在于利用引用的空间局部性和时间局部性原理,将经常被访问的数据放到快速的存储器中,而将不经常访问的数据留在较慢的存储器中。CPU访问数据时,先在Cache中查找,如果找到则直接传输到CPU中的寄存器中,这称之为命中;如果没有找到,那么需要在内存中查找,并且要把查找到内容重新写入Cache,下次读取时就可以避免内存传输。
传统车辆号牌搜索NoX,使用二叉树的查找过程如下:
对布控车辆的所有号牌建立索引;
加载索引到内存数据库中;
根据根节点指针找到文件目录的根磁盘块1,将其中的信息NoX导入内存,此时磁盘I/O一次;
此时内存中有一个文件索引名No10,根据算法发现,NoX<No10,因此我们找到指针P(2);
根据P(2)指针,我们定位到磁盘块2,并将其中的信息导入内存,此时磁盘I/O一次;
此时内存中有另一个文件索引名No9,根据算法发现,NoX>No9,因此我们找到指针P(5);
根据P(5)指针,我们定位到磁盘块5,并将其中的信息导入内存,此时磁盘I/O一次;
以此类推,如果NoX在此二叉树中,时间复杂度为O(logn),返回实际数值。
如果NoX不在布控范围中,则会遍历此二叉树的每一级深度,然后返回空值。
根据上面过程,如果在全省一百万布控车辆范围中查找,最大可能需要20次遍历(2^20=1,048,576)才能找到结果。此时内存查找次数为20次,同时磁盘I/O也达到20次。磁盘的I/O操作将影响整个查找效率的决定因素。
在计算机科学中,指针是编程语言中的一个对象或变数,用来存储某一个地址,这个地址的值直接指向存在电脑存储器中另一块存储器空间的值。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。在指针指向的地址中的值,可能代表另一个变数、结构、对象或函数。但是从指针本身无法得知它所引用的存储器中存储了什么数据类型的信息。作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。
发明内容
本发明所要解决的技术问题是提供一种能够避免对非布控车牌号进行搜索、提高查找效率的对布控车牌号码进行快速搜索的方法。
本发明解决上述技术问题所采用的技术方案如下:
对布控车牌号码进行快速搜索的方法,包括如下步骤:
S11.将布控范围内的每个车牌号拆分到每一个数字或字符的位数;
S12.将布控范围内的每个车牌号的每一个位数建立编号索引:
第一位设为P1,是汉字,来自于23个省、5个自治区和4个直辖市的简称,也就是32种可能,编号1-32;
第二位设为P2,是26个英文字母中的任意一个,编号1-26;
第三位至第七位分别设为P3、P4、P5、P6和P7,同样地,是26个英文字母和0-9中的任意一个,分别编号1-36;
S13.计算每一个布控范围内的车牌号的索引编号总值,计算方式如下:
P=P1*36^5*26+P2*36^5+P3*36^4+P4*36^3+P5*36^2+P6*36+P7,以及确定总值最大值:P(max)=32*36^5*26+26*36^5+36*36^4+36*36^3+36*36^2+36*36+36;
S14.在内存中建立车牌索引区域,按照P(max)的范围来建立索引指针,将每一个布控范围内的车牌号的索引编号总值对应一个内存中索引指针的位置;
S15.将布控范围内的车牌号,按照索引编号总值在车牌索引区域一一标记,有则标记值为1,无则标记值为0;
S21.获取目标车牌号;
S22.将目标车牌号拆分到每一个位数;
S23.将目标车牌号的每一位建立编号索引,与步骤S12中相同;
S24.计算目标车牌号的索引编号总值,与步骤S13中相同;
S25.根据目标车牌号的索引编号总值,索引指针在车牌索引区域中位移;
S26.根据位移结果,确定目标车牌号对应的目标位置的标记值;
S27.如果标记值为0,返回未找到;如果标记值为1,返回已找到;
S31.如果返回值为1,则在布控范围的车牌号索引文件中按照传统二叉树搜索,并返回搜索结果数据;
S32.如果返回值为0,则不再进行搜索。
本发明通过在内存中建立车牌索引区域,先验证目标车牌号是否为布控范围内的车牌号;若是则读写车辆过车数据库,找到目标车牌号的信息数据;若否,则不再对该车牌号进行下一步搜索。从而可以避免对大量的布控范围外的车牌号进行搜索,提高搜索速度和搜索效率。
作为优选,目标车牌号和布控范围内的车牌号分别为字符串形式。其优点在于,字符串的形式可以更好地将车牌号按位划分,从而便于后续搜索步骤的进行。
作为优选,S14中,车牌索引区域内按照索引编号总值大小有序排列;S31中,如果返回值为1,则在布控范围的车牌号索引文件中采用二分法进行搜索,并返回搜索结果数据。其优点在于,有序排列后可以采用二分法进行搜索,大大减少搜索过程的时间消耗,提高搜索效率。
本发明同现有技术相比具有以下优点及效果:
1、由于布控范围内的车牌号占全部车牌号的比例较小,因此本发明采用先验证目标车牌号是否为布控范围内的车牌号,若为布控范围内的车牌号,再在布控范围的车牌号索引文件中进行搜索的思路,从而避免对布控范围外的车牌号进行搜索,大大减少了I/O操作次数,提高了查找效率。
2、由于内存读写速度远远快于硬盘读写速度,因此,本发明利用在Casch中建立车牌索引区域,在该车牌索引区域中对检测到的目标车牌号进行查找,确认其是否是布控范围内的车牌号,减少了对布控范围外的车牌号进行搜索,大大提高了搜索的有效性和搜索效率。
3、由于对车牌索引区域内按照索引编号总值大小有序排列,并采用二分法进行搜索,可以降低对布控范围内的车牌号进行搜索的时间消耗,进一步提高搜索效率。
4、由于国内车牌号的各种排列组合的方式是确定的,可以通过例举的方式获得所有可能的车牌号码;然后将车牌的七位数字或字母或汉字按照十进制的方式转化为统一的数字,再转化为内存中一个固定的二进制位置,从而便于对该车牌号码对应的内存位置进行标识,进而判断是否进行后续的搜索工作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的编号索引建立示意图。
图2为本发明的部分车牌索引区域结构示意图。
具体实施方式
下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
实施例1:本实施例的对布控车牌号码进行快速搜索的方法,包括如下步骤:
S11.将布控范围内的每个车牌号拆分到每一个数字或字符的位数;
S12.将布控范围内的每个车牌号的每一个位数建立编号索引:
第一位设为P1,是汉字,来自于23个省、5个自治区和4个直辖市的简称,也就是32种可能,编号1-32;
第二位设为P2,是26个英文字母中的任意一个,编号1-26;
第三位至第七位分别设为P3、P4、P5、P6和P7,同样地,是26个英文字母和0-9中的任意一个,分别编号1-36;
S13.计算每一个布控范围内的车牌号的索引编号总值,计算方式如下:
P=P1*36^5*26+P2*36^5+P3*36^4+P4*36^3+P5*36^2+P6*36+P7,以及确定索引编号总值最大值:P(max)=32*36^5*26+26*36^5+36*36^4+36*36^3+36*36^2+36*36+36;
S14.在内存中建立车牌索引区域,按照P(max)的范围来建立索引指针;
S15.将布控范围内的车牌号,按照索引编号总值在车牌索引区域一一标记,有则标记值为1,无则标记值为0;
S21.获取目标车牌号;
S22.将目标车牌号拆分到每一个位数;
S23.将目标车牌号的每一位建立编号索引,与步骤S12中相同;
S24.计算目标车牌号的索引编号总值,与步骤S13中相同;
S25.根据目标车牌号的索引编号总值,索引指针在车牌索引区域中位移;
S26.根据位移结果,确定目标车牌号对应的目标位置的标记值;
S27.如果标记值为0,说明目标车牌号为布控范围外的车牌号,则返回未找到;如果标记值为1,说明目标车牌号为布控范围内的车牌号,则返回已找到;
S31.如果返回值为1,则在布控范围的车牌号索引文件中按照传统二叉树搜索,并返回搜索结果数据;
S32.如果返回值为0,则不再进行搜索。
上述步骤S13中,表达式P=P1*36^5*26+P2*36^5+P3*36^4+P4*36^3+P5*36^2+P6*36+P7就是把车牌的七位数字或字母按照十进制的方式转化为统一的数字。将车牌号的每一位转换为十进制后,车牌号的索引总值是多少,方便定位在内存中对应的位置。
车牌号转换成十进制是为了方便比对相对位置,方便在内存中一一排列。如下表,一个车牌的十进制编号,转化为内存中一个固定的二进制位置,而不是存下这个车牌或者编号。如果下一个车牌的十进制编号比前一个车牌大1,就直接往后挪一个位置。这样算相对位置是内存的优势,才可能做到速度快。如果按照十进制计算,就要从绝对起始位置计算,速度就没前一种方法快。
车牌号码 | 十进制编号 | 内存地址 | 值 |
浙A1234E(布控车辆) | 1634363727 | 0X00000XX00 | 1(是布控车辆) |
浙A1234F(非布控车辆) | 1634363728 | 0X00000XX01 | 0(非布控车辆) |
浙A1234G(非布控车辆) | 1634363729 | 0X00000XX10 | 0(非布控车辆) |
上述目标车牌号和布控范围内的车牌号分别为字符串形式。
如图1、2所示,将全国车辆的车牌号记录集分别计算P值,并加载到内存的网格单元中,每个网格单元都通过网络目录与一个车牌号相关联。
以查询过车的车辆号牌浙A1234E是否在布控范围内为例,其具体过程如下:
一、建立全国布控车辆号牌范围的索引文件:
对全国所有布控范围内的车辆的车牌号的每一位建立索引编号,通过公式P=P1*36^5*26+P2*36^5+P3*36^4+P4*36^3+P5*36^2+P6*36+P7得到与车牌号唯一对应的索引编号总值,并计算索引编号总值最大值:P(max)=32*36^5*26+26*36^5+36*36^4+36*36^3+36*36^2+36*36+36。
加载到内存中,按照索引编号总值建立对应的位置;对上述索引编号总值在内存中相应位置标记1,表示这些车牌号在布控范围内。
二、假设沪A1234E不在布控范围内,相应位置标记为0:
控车辆号牌沪A1234E拆分到每一位,得到索引编号总值:P=2*36^5*26+1*36^5+1*36^4+2*36^3+3*36^2+4*36+15=3206484303。
在内存中直接位移到索引指针3206484303位置处,此处取得值为0,表示此布控车辆不在布控范围中。
直接返回无结果,不用再加载二叉树索引查找。
假设车牌号浙A1234E在布控范围中,相应位置标记为1:
布控车牌号浙A1234E拆分到每一位,得到编号:P=1*36^5*26+1*36^5+1*36^4+2*36^3+3*36^2+4*36+15=1634363727;内存地址为0X00000XX00。
在内存中直接位移到索引指针1634363727位置处,此处取得值为1,表示此布控车辆在布控范围中。
三、查找浙A1234E相关的数据:
加载全省布控车辆索引,使用传统的二叉树查找浙A1234E的位置;
取得浙A1234E所在位置的数据,返回搜索结果。
本发明较好的解决了目前车牌布控搜索使用的无差别对比而比较费时的缺点,使用了内存编号索引的方法提前标记布控车辆范围,避免不在布控范围内的车辆号牌搜索操作,从而在高并发过车、海量布控车辆范围条件下得到较快的速度。
搜索时通过号牌索引值计算出内存中的偏移量,效率很高。尤其是在内存中操作,减少磁盘I/O次数,用空间换时间。如前的应用场景,全省布控范围100万车辆号牌,每秒1000条过车号牌要进行比对。而实际情况下,通常每秒只有平均1条过车号牌是在布控范围中的,其他的车辆号牌都不在布控范围,实际上无需搜索,即使搜索也都返回无结果。传统的方法使用无差别搜索,即对那些约999条不在布控范围内的车牌也进行搜索,按照传统二叉树方法,搜索一次都要经历内存查找20次,同时磁盘IO 20次。在同一条件下,磁盘IO性能约为内存IO性能的1/20,总体将非常费时。
新的方法使用车辆号牌编号索引的标记方法,先判断目标车牌是否在布控范围内,如果不在,直接返回无结果,每秒避免了大约999次的无效搜索,即效率提升了将近1000倍。
此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本发明专利构思所述的构造、特征及原理所做的等效或简单变化,均包括于本发明专利的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。
Claims (2)
1.一种对布控车牌号码进行快速搜索的方法,其特征是,包括如下步骤:
S11.将布控范围内的每个车牌号拆分到每一个数字或字符的位数;
S12.将布控范围内的每个车牌号的每一个位数建立编号索引:
第一位设为P1,是汉字,来自于23个省、5个自治区和4个直辖市的简称,也就是32种可能,编号1-32;
第二位设为P2,是26个英文字母中的任意一个,编号1-26;
第三位至第七位分别设为P3、P4、P5、P6和P7,同样地,是26个英文字母和0-9中的任意一个,分别编号1-36;
S13.计算每一个布控范围内的车牌号的索引编号总值,计算方式如下:P=P1*36^5*26+P2*36^5+P3*36^4+P4*36^3+P5*36^2+P6*36+P7,以及确定总值最大值:P(max)=32*36^5*26+26*36^5+36*36^4+36*36^3+36*36^2+36*36+36;
S14.在内存中建立车牌索引区域,按照P(max)的范围来建立索引指针;
S15.将布控范围内的车牌号,按照索引编号总值在车牌索引区域一一标记,有则标记值为1,无则标记值为0;
S21.获取目标车牌号;
S22.将目标车牌号拆分到每一个位数;
S23.将目标车牌号的每一位建立编号索引,与步骤S12中相同;
S24.计算目标车牌号的索引编号总值,与步骤S13中相同;
S25.根据目标车牌号的索引编号总值,索引指针在内存中的车牌索引区域位移;
S26.根据位移结果,确定目标车牌号对应的目标位置的标记值;
S27.如果标记值为0,返回未找到;如果标记值为1,返回已找到;
S31.如果返回值为1,则在布控范围的车牌号索引文件中按照传统二叉树搜索,并返回搜索结果数据;
S32.如果返回值为0,则不再进行搜索。
2.根据权利要求1所述的对布控车牌号码进行快速搜索的方法,其特征是:所述的目标车牌号和布控范围内的车牌号分别为字符串形式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511024045.3A CN105608214B (zh) | 2015-12-30 | 2015-12-30 | 对布控车牌号码进行快速搜索的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511024045.3A CN105608214B (zh) | 2015-12-30 | 2015-12-30 | 对布控车牌号码进行快速搜索的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105608214A CN105608214A (zh) | 2016-05-25 |
CN105608214B true CN105608214B (zh) | 2017-08-11 |
Family
ID=55988153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511024045.3A Expired - Fee Related CN105608214B (zh) | 2015-12-30 | 2015-12-30 | 对布控车牌号码进行快速搜索的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105608214B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108376054B (zh) * | 2018-01-30 | 2020-11-03 | 中国信息通信研究院 | 一种对标识数据进行索引的处理方法及装置 |
CN108829872B (zh) * | 2018-06-22 | 2021-03-09 | 武汉轻工大学 | 无损压缩文件的快速处理方法、设备、系统及存储介质 |
CN110716929B (zh) * | 2018-07-13 | 2023-01-24 | 杭州海康威视系统技术有限公司 | 一种布控处理方法、装置及设备 |
CN109063195B (zh) * | 2018-08-31 | 2019-10-29 | 北京诚志重科海图科技有限公司 | 一种信息检索方法和装置 |
CN111310555A (zh) * | 2019-12-18 | 2020-06-19 | 北京明略软件系统有限公司 | 模糊布控方法和装置、电子设备及存储介质 |
CN115690765B (zh) * | 2022-10-21 | 2023-06-13 | 中关村科学城城市大脑股份有限公司 | 车牌识别方法、装置、电子设备、可读介质和程序产品 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073691A (zh) * | 2010-12-23 | 2011-05-25 | 杭州海康威视数字技术股份有限公司 | 车辆监控方法及其系统 |
CN102890719B (zh) * | 2012-10-12 | 2015-12-16 | 浙江宇视科技有限公司 | 一种对车牌号进行模糊搜索的方法及装置 |
CN104679829A (zh) * | 2015-01-28 | 2015-06-03 | 北京易华录信息技术股份有限公司 | 对车牌号进行快速搜索的方法及装置 |
-
2015
- 2015-12-30 CN CN201511024045.3A patent/CN105608214B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN105608214A (zh) | 2016-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105608214B (zh) | 对布控车牌号码进行快速搜索的方法 | |
CN113196260B (zh) | 能够选择性使用键部分的键值存储树 | |
US9576006B2 (en) | Method and system for storing data in a database | |
CN102024046B (zh) | 数据重复性校验方法和装置及系统 | |
US20160098344A1 (en) | Hardware automation for memory management | |
CN105117417A (zh) | 一种读优化的内存数据库Trie树索引方法 | |
CN102662869B (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
CN104809179A (zh) | 访问哈希表的装置和方法 | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN102792285A (zh) | 层级转换表控制 | |
CN102890675B (zh) | 一种数据存储和查找的方法及装置 | |
CN105677683A (zh) | 批量数据查询方法和装置 | |
CN102662855B (zh) | 一种二叉树的存储方法、系统 | |
CN104361113A (zh) | 一种内存-闪存混合存储模式下的olap查询优化方法 | |
US20130297877A1 (en) | Managing buffer memory | |
CN106611044A (zh) | 一种sql优化方法及设备 | |
CN104750727A (zh) | 一种列式内存存储查询装置及列式内存存储查询方法 | |
CN103336828B (zh) | 实时数据库读取及写入方法 | |
CN104504076A (zh) | 一种高并发和高空间利用率的分布式缓存方法 | |
CN103176914A (zh) | 一种低缺失率、低缺失惩罚的缓存方法和装置 | |
CN102799617A (zh) | 多层Bloom Filter的构建及查询优化方法 | |
CN103377135A (zh) | 寻址方法、装置及系统 | |
US20120066270A1 (en) | Automated memory management of indexed data using weak references | |
CN109918074B (zh) | 编译链接优化方法 | |
CN108614781B (zh) | 基于NANDflash的有效数据查找方法和NANDflash存储设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right | ||
PP01 | Preservation of patent right |
Effective date of registration: 20191118 Granted publication date: 20170811 |
|
PD01 | Discharge of preservation of patent | ||
PD01 | Discharge of preservation of patent |
Date of cancellation: 20200714 Granted publication date: 20170811 |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170811 Termination date: 20211230 |