CN112612790B - 卡号配置方法、装置、设备及计算机存储介质 - Google Patents
卡号配置方法、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN112612790B CN112612790B CN202011496820.6A CN202011496820A CN112612790B CN 112612790 B CN112612790 B CN 112612790B CN 202011496820 A CN202011496820 A CN 202011496820A CN 112612790 B CN112612790 B CN 112612790B
- Authority
- CN
- China
- Prior art keywords
- card number
- card
- target
- character string
- determining
- 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 53
- 239000012634 fragment Substances 0.000 claims abstract description 128
- 238000012545 processing Methods 0.000 claims abstract description 18
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000004891 communication Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- 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/2282—Tablespace storage structures; Management thereof
-
- 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/23—Updating
-
- 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
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及金融科技(Fintech)技术领域,并公开了一种卡号配置方法,该方法包括:获取目标产品的卡产品号对应的卡段,确定所述卡段对应的卡号表,并检测是否接收到输入的场景需求;若未接收到所述场景需求,则对所述卡号表进行分片处理,以获取多个分片;在各所述分片中确定目标分片,并获取所述目标分片中的当前游标,根据所述当前游标获取所述目标分片中的目标卡号,并输出所述目标卡号。本发明还公开了一种卡号配置装置、设备和一种计算机存储介质。本发明提高了卡号分配的高并发和高实时性。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及卡号配置方法、装置、设备及计算机存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链Blockchain、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对卡号配置技术提出了更高的要求。目前,传统线下银行一般采用是预先生成指定卡bin,指定长度的所有卡号,并写入数据库,业务人员根据产品的需求,指定一些条件及卡号数量,提前筛选出一批卡,送给卡商制卡,并把卡号标记为已使用的方式。但是对于纯线上银行来说,客户在使用银行应用程序和小程序开户时,需要实时的给客户分配一张卡号,并发要求大大提高。对于亿级用户的互联网银行产品,其要求的最高开卡TPS(Transact ion Per Second,系统吞吐量),会达到1000以上;并在高并发高实时性的基础上,对卡号也提出了个性化需求。而线下银行采用的方式无法满足线上银行的需求,因此,如何提高卡号分配的高并发和高实时性成为了目前急需解决的问题。
发明内容
本发明的主要目的在于提出一种卡号配置方法、装置、设备及计算机存储介质,旨在解决如何提高卡号分配的高并发和高实时性的技术问题。
为实现上述目的,本发明提供一种卡号配置方法,所述卡号配置方法包括如下步骤:
获取目标产品的卡产品号对应的卡段,确定所述卡段对应的卡号表,并检测是否接收到输入的场景需求;
若未接收到所述场景需求,则对所述卡号表进行分片处理,以获取多个分片;
在各所述分片中确定目标分片,并获取所述目标分片中的当前游标,根据所述当前游标获取所述目标分片中的目标卡号,并输出所述目标卡号。
可选地,检测是否接收到输入的场景需求的步骤之后,包括:
若接收到所述场景需求,则确定所述场景需求对应的关键字,并检测所述关键字对应的字符串是否为可变字符串;
若所述关键字对应的字符串为固定字符串,则基于所述卡号表获取和所述关键字匹配的所有匹配卡号,基于各所述匹配卡号确定目标卡号,并输出所述目标卡号。
可选地,检测所述关键字对应的字符串是否为可变字符串的步骤之后,还包括:
若所述关键字对应的字符串为可变字符串,则确定所述卡号表中具有所述可变字符串的卡号的位置,并根据各所述位置构建位图;
基于所述位图确定具有所述可变字符串的所有卡号中是否存在可用卡号;
若存在可用卡号,则将所述可用卡号作为目标卡号进行输出。
可选地,检测所述关键字对应的字符串是否为可变字符串的步骤之后,还包括:
若所述关键字对应的字符串包括可变字符串和固定字符串,则根据所述卡号表确定所述固定字符串对应的所有匹配卡号和所述可变字符串对应的位图;
根据所述位图和各所述匹配卡号构建倒排索引表,并在所述倒排索引表中获取状态为可用的卡号,并将所述状态为可用的卡号作为目标卡号,并输出所述目标卡号。
可选地,在所述倒排索引表中获取状态为可用的卡号,并将所述状态为可用的卡号作为目标卡号的步骤,包括:
遍历所述倒排索引表中的所有分组,确定遍历的分组是否为可用分组;
若遍历的分组为不可用分组,则基于预设的时间间隔继续遍历所述遍历的分组的下一分组,直至遍历到可用分组,并在所述可用分组中获取状态为可用的卡号;
将所述状态为可用的卡号的状态由所述可用更新为已使用,并将更新后的卡号作为目标卡号。
可选地,在各所述分片中确定目标分片的步骤,包括:
确定各所述分片的分片数量,检测所述分片数量是否大于预设阈值;
若所述分片数量大于预设阈值,则在各所述分片中随机获取一个分片作为目标分片。
可选地,检测所述分片数量是否大于预设阈值的步骤之后,包括:
若所述分片数量小于或等于预设阈值,则确定各所述分片中的排队开卡请求数量,并在各所述排队开卡请求数量中确定数量最少的目标排队开卡请求数量,将所述目标排队开卡请求数量对应的分片作为目标分片。
可选地,检测是否接收到输入的场景需求的步骤之后,还包括:
若未接收到所述场景需求,且不对所述卡号表进行分片处理,则在所述卡号表中确定未使用区间的未更新卡号,并对所述未更新卡号的状态和所述未更新卡号对应的乐观锁版本号进行更新;
若更新成功,则将所述未更新卡号作为目标卡号进行输出。
此外,为实现上述目的,本发明还提供一种卡号配置装置,所述卡号配置装置包括:
获取模块,用于获取目标产品的卡产品号对应的卡段,确定所述卡段对应的卡号表,并检测是否接收到输入的场景需求;
分片处理模块,用于若未接收到所述场景需求,则对所述卡号表进行分片处理,以获取多个分片;
确定模块,用于在各所述分片中确定目标分片,并获取所述目标分片中的当前游标,根据所述当前游标获取所述目标分片中的目标卡号,并输出所述目标卡号。
此外,为实现上述目的,本发明还提供一种卡号配置设备,所述卡号配置设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的卡号配置程序,所述卡号配置程序被所述处理器执行时实现如上所述的卡号配置方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有卡号配置程序,所述卡号配置程序被处理器执行时实现如上所述的卡号配置方法的步骤。
本发明通过获取目标产品的卡产品号对应的卡段,确定所述卡段对应的卡号表,并检测是否接收到输入的场景需求;若未接收到所述场景需求,则对所述卡号表进行分片处理,以获取多个分片;在各所述分片中确定目标分片,并获取所述目标分片中的当前游标,根据所述当前游标获取所述目标分片中的目标卡号,并输出所述目标卡号。通过先确定目标产品的卡产品号对应的卡段的卡号表,并在确定未收到场景需求时,对卡号表进行分片处理,以获取各个分片,并根据各个分片中目标分片的当前游标来获取目标卡号进行输出,相较于现有技术中线上银行进行卡号配置操作时,需要业务人员人工提前进行配置,本发明无需业务人员提前进行配置,提高了卡号分配的高并发和高实时性。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的卡号配置设备结构示意图;
图2为本发明卡号配置方法第一实施例的流程示意图;
图3为本发明卡号配置装置的装置模块示意图;
图4为本发明卡号配置方法中卡号的显示示意图;
图5为本发明卡号配置方法中卡产品号和卡段映射的流程示意图;
图6为本发明卡号配置方法中分片处理的流程示意图;
图7为本发明卡号配置方法中根据场景需求卡号配置的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的卡号配置设备结构示意图。
本发明实施例卡号配置设备可以是PC机或服务器设备,其上运行有Java虚拟机。
如图1所示,该卡号配置设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Di sp l ay)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-vo l at i le memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的卡号配置设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及卡号配置程序。
在图1所示的卡号配置设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的卡号配置程序,并执行下述卡号配置方法中的操作。
基于上述硬件结构,提出本发明卡号配置方法实施例。
参照图2,图2为本发明卡号配置方法第一实施例的流程示意图,所述方法包括:
步骤S10,获取目标产品的卡产品号对应的卡段,确定所述卡段对应的卡号表,并检测是否接收到输入的场景需求;
由于目前的卡号配置方案对于线上银行存在诸多的不便利,因此在本实施例中,描述了一种高性能银行卡号分配方式,通过从逻辑层面分表、分片的方式,大幅提高实时卡号分配的性能,分表和分片功能还可以按需扩容。而且在本实施例中还会通过高效的索引结构,迅速筛选出最佳个性化卡号,以满足互联网产品的开卡需求,方便银行各产品的快速接入。
在本实施例中,卡号以19位银联卡号为例进行举例说明。在固定卡bin为6位,以及1个校验位的情况下,可以将卡号按照如图4所示的5个部分,即6位卡bin,如623633;2位卡类型,给业务备用,如00;3位卡段,自定义的逻辑概率,用于做分表,如700;7位序号,从0到9999999,共1000万;1校验位,由前18位通过某种算法计算得到,如X。其中,卡bin是卡号的前缀,以区分卡号属于哪家机构。也就是由图4可知,在卡bin和卡类型固定时,会1000个3位卡段(SECTION),每个SECTION有1000万张可用卡,因此可以为每个SECTION进行逻辑分表,得到相应的卡号表,并且每个卡号表中可以设置1000万行,一行对应有一个卡号。
而且在本实施例中,会为每个产品的产品方配置一个卡产品号,即若发现新产品的产品方申请接入卡号配置系统时,系统内部会配置好卡段和卡产品号的映射关系,可以是1对多,也可以是多对1,如图5所示,当卡产品号为100002,卡段为700和701时,可以设置100002和700,701之间的映射关系。当卡产品号为100007,100013和100027,卡段为124时,可以设置100007,100013和100027这三个卡产品号与卡段124之间的映射关系。并且若一个产品发展的用户量即将超过已有容量时,可以动态扩展该产品对应的卡号表。
并且本实施例中的卡号表的表名按照如tm_${PRODUCT_CD}_card_no_p${SECTION}的方式进行。例如,如下表所示,为tm_100002_card_no_p700的卡号表。
tm_100002_card_no_p700
因此当为各个卡段配置各自对应的卡号表,且建立好各个卡产品号和各个卡段之间的映射关系后。当接收到用户输入的办卡需求后,需要先确定办卡需求对应的目标产品,并确定目标产品的卡产品号,再根据其映射关系确定卡产品号对应的卡段,获取该卡段对应的卡号表,以便根据卡号表来获取办卡需求对应的目标卡号。并且在本实施例中,为了满足用户的个性化需求,还需要检测是否接收到输入的场景需求,该场景需求可以是产品方输入的,也可以是用户输入的,并根据不同的检测结果执行不同的操作步骤。
步骤S20,若未接收到所述场景需求,则对所述卡号表进行分片处理,以获取多个分片;
当经过判断发现没有接收到场景需求时,可以对卡号表进行分片处理。即为了保证一张卡只能被分配一次,每次开卡请求到来时,需要锁定卡号表进行串行化操作,性能太低,因此可以通过分片锁来减少获取锁的等待时间,而分片锁就是通过把数据区间划分为多片,从而把锁冲突分散在多个分片对应的多个锁上,减少或锁的等待时间。例如,若一个卡号表包含有1000万张卡号,可以将其分成10片(即10个分片),每片100万。而且,为了避免分片过多导致查找麻烦,可以将各个分片进行汇总,得到分片索引表。例如分片索引表tm_100002_card_no_idx可以如下表所示。
tm_100002_card_no_idx
编号 | 卡bin | 卡段 | 当前游标 | 索引起点 | 索引终点 |
1 | 623633 | 700 | 5 | 1 | 1000000 |
2 | 623633 | 700 | 10002 | 1000001 | 2000000 |
3 | 623633 | 701 | 8 | 1 | 1000000 |
步骤S30,在各所述分片中确定目标分片,并获取所述目标分片中的当前游标,根据所述当前游标获取所述目标分片中的目标卡号,并输出所述目标卡号。
当获取到各个分片,且各个分片是存储在分片索引表里,但是在使用悲观锁锁住分片记录之前,分片是缓存在数据库中的,为了减少对数据库的查询次数,在本实施例中是将分片记录缓存在一个全局的ConcurrentHashMap(并发线程)中,每30分钟刷新一次,并在分片用尽时剔除那个分片。并且在本实施例中,为了尽量分散开卡请求压力,保证开卡请求被均匀的分配在各个分片,会对分片的数量进行检测,若分片的数量较多,则随机选择一个分片作为目标分片。但是若分片的数量较少,则需要根据各个分片的排队开卡请求数量来确定目标分片。例如,当分片的分片数量大于5,则随机选择一个分片作为目标分片,若分片的分片数量小于或等于5,则先确定各个分片上的排队开卡请求数量,并选择排队开卡请求数量最小的分片作为目标分片。
而且在根据排队开卡请求数量确定目标分片时,可以预估系统可以支持的TPS。假设每个开卡请求的开卡时间需要8ms,则每个分片支持1s/8ms=125TPS,10个分片就可以支持1250个TPS。
当获取到目标分片后,可以先确定目标分片中的当前游标,再根据当前游标确定目标分片中的所有可用卡号,并在这些可用卡号中选择一个可用分片作为目标卡号,再将目标卡号输出到用户所持有的客户端。其中,当前游标是指分片中卡号使用到的位置,即可用卡号和不可用卡号的分界点。
此外,为辅助理解本实施例中的卡号配置流程,下面进行举例说明。
例如,如图6所示,在开始进行卡号配置时,先根据传入的产品号,找到对应的分片索引表,tm_${PRODUCT_CD}_card_idx;然后在分片索引表中选择一个可用分片,使用悲观锁,锁定这个分片对应的每一行,并使用此分片的当前游标,选择大于此游标,且未使用的卡号,将其作为目标卡号,并更新游标和使用数量,并返回卡号,即将目标卡号返回给到办卡用户。
在本实施例中,通过获取目标产品的卡产品号对应的卡段,确定所述卡段对应的卡号表,并检测是否接收到输入的场景需求;若未接收到所述场景需求,则对所述卡号表进行分片处理,以获取多个分片;在各所述分片中确定目标分片,并获取所述目标分片中的当前游标,根据所述当前游标获取所述目标分片中的目标卡号,并输出所述目标卡号。通过先确定目标产品的卡产品号对应的卡段的卡号表,并在确定未收到场景需求时,对卡号表进行分片处理,以获取各个分片,并根据各个分片中目标分片的当前游标来获取目标卡号进行输出,相较于现有技术中线上银行进行卡号配置操作时,需要业务人员人工提前进行配置,本发明无需业务人员提前进行配置,提高了卡号分配的高并发和高实时性。
进一步地,基于上述本发明的第一实施例,提出本发明卡号配置方法的第二实施例,本实施例中,上述实施例中的步骤S10,检测是否接收到输入的场景需求的步骤之后,包括:
步骤a,若接收到所述场景需求,则确定所述场景需求对应的关键字,并检测所述关键字对应的字符串是否为可变字符串;
在本实施例中,由于目前许多场景中,产品为了给客户最好的服务和体验,一般都会存在一定的场景需求,比如要求卡号的连续四位和客户生日或客户手机号码后四位一致;要求尽量多的连续的6和8等。因此在接收到场景需求时,需要先确定场景需求对应的关键字,并确定该关键字对应的字符串是否为可变字符串,再根据不同的检测结果执行不同的操作。其中,可变字符串是字符串中字符的位置不是固定的,如要求卡号中尽量多的连续的6和8。
步骤b,若所述关键字对应的字符串为固定字符串,则基于所述卡号表获取和所述关键字匹配的所有匹配卡号,基于各所述匹配卡号确定目标卡号,并输出所述目标卡号。
当经过判断发现关键字对应的字符串为固定字符串(字符串的位置是固定的),则可以将关键字的字符串和卡号表中所有卡号的字符串进行匹配,以获取和关键字匹配的匹配卡号,再从获取到的所有匹配卡号中选择一个作为目标卡号进行输出。而且当关键字存在多个时,需要获取各个关键字对应的匹配卡号,并在这些匹配卡号中选择一个和所有关键字匹配的目标匹配卡号作为目标卡号进行输出。例如若场景需求是要求匹配的字符串是用户的生日,手机号后4位,假设生日是10月10日,手机号后4位是5215,经过检索发现包含字符串1010的卡号有5000个,包含字符串5215的字符串有5000个,如下表1所示。
编号 | 倒排索引字符串 | 倒排索引集合 |
1 | 0000 | [1,205,478,...,100021] |
2 | 1010 | [16,102,278,323,959,2000001] |
3 | 5215 | [102,205,278,...,102925,6802346] |
4 | 9999 | [325,208,2438,...,331921,8801346] |
表1
由表1可知,字符串1010和5215的交集是278,则找到了符合条件的卡号,在标记卡表的卡号为已使用后,需要从此集合删除。如果没有交集,则按优先级退化为使用一个字符串的匹配集合中选取任一个。
在本实施例中,通过在确定接收到场景需求时,先确定场景需求对应的关键字,并在关键字对应的字符串为固定字符串时,获取卡号表中和关键字匹配的匹配卡号,并将其作为目标卡号进行输出,从而实现了卡号配置的个性化需求,保障了获取到的目标卡号的准确性。
进一步地,检测所述关键字对应的字符串是否为可变字符串的步骤之后,还包括:
步骤c,若所述关键字对应的字符串为可变字符串,则确定所述卡号表中具有所述可变字符串的卡号的位置,并根据各所述位置构建位图;
步骤d,基于所述位图确定具有所述可变字符串的所有卡号中是否存在可用卡号;
步骤e,若存在可用卡号,则将所述可用卡号作为目标卡号进行输出。
在本实施例中,当经过判断发现关键字对应的字符串是可变字符串,例如,需求是尽可能多的8,而包含8的字符串存在多个。此时就需要先确定具有可变字符串的所有卡号的位置,再根据这些位置来构建位图,也就是进行压缩索引集合,即可以使用位图来进行存储,位图的0代表不可用,1代表可用,也就是可用根据位图中的数字来判断索引是否可用,进而确定索引对应的卡号是否可用。并且为了提高处理效率,将位图缓存在应用服务内存中,进行异步的更新和加载。而对于非可变字符串,依然可以采用数字集合的方式倒排索引,并按照匹配字符串所在卡号的起始位置进行分组,以缩小索引范围,减少计算量和数据库单行更新,并减少了乐观锁冲突的可能性。而且在本实施例中,在进行分组后,当分组的集合大小小于1000时,可以异步进行分组合并。
而在本实施例中,当获取到位图后,可以先根据位图确定可变字符串的所有卡号中是否存在可用卡号,若存在可用卡号,且可用卡号存在多个,则随机选择一个作为目标卡号进行输出。
在本实施例中,通过在关键字对应的字符串为可变字符串,根据卡号表中可变字符串的卡号的位置构建位图,并根据位图确定存在可用卡号时,将可用卡号作为目标卡号进行输出,从而实现了卡号配置的个性化需求,保障了获取到的目标卡号的准确性。
进一步地,检测所述关键字对应的字符串是否为可变字符串的步骤之后,还包括:
步骤f,若所述关键字对应的字符串包括可变字符串和固定字符串,则根据所述卡号表确定所述固定字符串对应的所有匹配卡号和所述可变字符串对应的位图;
在本实施例中,若关键字对应的字符串包括可变字符串和固定字符串,例如,场景需求是卡号中要包含手机尾号5215,以及至少具有一位8时。此时就需要先在卡号表中确定和固定字符串匹配的所有卡号,即匹配卡号。还需要根据可变字符串来构建相应的位图,位图构建方式和上述方式相同,再此不做阐述。
步骤g,根据所述位图和各所述匹配卡号构建倒排索引表,并在所述倒排索引表中获取状态为可用的卡号,并将所述状态为可用的卡号作为目标卡号,并输出所述目标卡号。
并在获取到位图和各个匹配卡号后,可以构建相应的倒排索引表,例如以固定字符串5215,可变字符串8为例,其倒排索引表可以如下表2所述,
在获取到倒排索引表后,可以在倒排索引表中获取状态为可用的卡号,并将此状态为可用的卡号作为目标卡号进行输出。例如,如图7所示,在开始进行卡号配置时,先随机选择5215的位置,比如12,加载其索引集合,并获取字符8的位图bitmap。再遍历5215,位置是12的索引集合分组,通过bitmap.getBit(index),查看是否可用,若遍历全部分组后,均不可用,即无可用,则检查执行时间是否超过2s,若不超过,则加载下一分组。若超过,则退化为不匹配8。当发现索引集合分组可用时,更新卡号为已使用,并检测是否更新成功,若失败,则删除数据库中5215集合中的索引,标记内存中bitmap对应bit为0(不可用)。若成功,则删除数据库中5215集合中的索引,标记内存中bitmap对应bit为0(不可用),并返回卡号到办卡用户。
而且需要说明的是,在本实施例中进行卡号配置操作时,各应用服务器,需要定时的把内存中最新的bitmap更新到数据库,并重新加载,在更新时,需要使用悲观锁,增量更新,用内存中的位图和数据库的位图进行按位“或”操作后更新。并且在进行分组集合合并时,当分组集合之和小于1000时,合并所有集合模式的分组,位置使用ALL。
在本实施例中,通过在确定关键字对应的字符串包括可变字符串和固定字符串时,根据可变字符串对应的位图和固定字符串对应的所有匹配卡号构建倒排索引表,并在倒排索引表中获取状态为可用的卡号作为目标卡号进行输出,从而实现了卡号配置的个性化需求,保障了获取到的目标卡号的准确性。
进一步地,在所述倒排索引表中获取状态为可用的卡号,并将所述状态为可用的卡号作为目标卡号的步骤,包括:
步骤q,遍历所述倒排索引表中的所有分组,确定遍历的分组是否为可用分组;
在本实施例中,当构建好具有倒排索引表后,还需要遍历倒排索引表中的所有分组,确定遍历的分组中的所有卡号是否为可用的,若都是不可用的,则确定遍历的分组为不可用分组。但是若遍历的分组中存在有卡号是可用的,则将遍历的分组作为可用分组。
步骤w,若遍历的分组为不可用分组,则基于预设的时间间隔继续遍历所述遍历的分组的下一分组,直至遍历到可用分组,并在所述可用分组中获取状态为可用的卡号;
步骤t,将所述状态为可用的卡号的状态由所述可用更新为已使用,并将更新后的卡号作为目标卡号。
当经过判断发现遍历的分组为不可用分组,则需要继续遍历下一个未遍历的分组,也就是在经过预设的时间间隔(用户提前设置的任意时间间隔,如2s)后继续遍历下一个分组,即遍历的分组的下一分组,确定下一分组是否为可用分组,若不是可用分组,则继续遍历下一个未遍历的分组,直至遍历到的分组是可用分组,然后在可用分组中获取状态为可用的卡号,当状态为可用的卡号存在多个时,随机选择一个,将状态为可用的卡号的状态由可用更新为已使用,并将更新后的卡号作为目标卡号。
在本实施例中,通过遍历倒排索引表中的所有分组,并在确定遍历的分组为不可用分组时,基于预设的时间间隔继续遍历,直至遍历到可用分组,并对可用分组中状态为可用的卡号进行更新,以确定目标卡号,从而保障了获取到的目标卡号的有效性。
进一步地,基于上述本发明的第一实施例,提出本发明卡号配置方法的第三实施例,本实施例中,上述实施例中的步骤S30,在各所述分片中确定目标分片的步骤,包括:
步骤h,确定各所述分片的分片数量,检测所述分片数量是否大于预设阈值;
在本实施例中,当对卡号表进行分片处理后,是将各个分片存储在分片索引表中的,因此可以在分片索引表中确定分片的数量(即分片数量),并检测分片数量是否大于预设阈值(用户提前设置的任意阈值,如5,10等),再根据不同的检测结果执行不同的操作。
步骤k,若所述分片数量大于预设阈值,则在各所述分片中随机获取一个分片作为目标分片。
在本实施例中,当经过判断发现分片数量大于预设阈值,则可以直接在各个分片中随机选择一个分片作为目标分片,并在该目标分片中根据当前游标获取目标卡号进行输出。
在本实施例中,通过在各个分片的分片数量大于预设阈值时,随机获取一个分片作为目标分片,从而保障了获取到目标分片的效率。
具体地,检测所述分片数量是否大于预设阈值的步骤之后,包括:
步骤m,若所述分片数量小于或等于预设阈值,则确定各所述分片中的排队开卡请求数量,并在各所述排队开卡请求数量中确定数量最少的目标排队开卡请求数量,将所述目标排队开卡请求数量对应的分片作为目标分片。
在本实施例中,当经过判断发现分片数量小于或等于预设阈值时,也就是分片的数量过少时,需要先确定所有分片中的排队开卡请求数量,并将各个排队开卡请求数量进行对比,根据对比结果在各个排队开卡请求数量中确定数量最少的排队开卡请求数量,并将其作为目标排队开卡请求数量,同时将目标排队开卡请求数量对应的分片作为目标分片。
在本实施例中,通过在确定分片数量小于或等于预设阈值时,将各个分片中排队开卡请求数量中数量最少的目标排队开卡请求数量对应的分片作为目标分片,从而保障了卡号配置的效率。
进一步地,检测是否接收到输入的场景需求的步骤之后,还包括:
步骤n,若未接收到所述场景需求,则在所述卡号表中确定未使用区间的未更新卡号,并对所述未更新卡号的状态和所述未更新卡号对应的乐观锁版本号进行更新;
步骤x,若更新成功,则将所述未更新卡号作为目标卡号进行输出。
在本实施例中,当经过判断发现未接收到场景需求时,且不进行分片处理时,还可以在卡号表中先确定未使用区间,并在未使用区间中获取未使用的卡号,即未更新卡号,并对未更新卡号的状态和乐观锁版本号进行更新,若未更新成功,则重新选择一个新的未更新卡号继续进行更新操作。若更新成功,则将未更新卡号作为目标卡号进行输出。
在本实施例中,通过在确定未接收到场景需求时,在卡号表中确定未使用区间的未更新卡号,并在未更新卡号的状态和乐观锁版本号更新成功时,将未更新卡号作为目标卡号进行输出,从而保证了获取到的目标卡号的准确性。
本发明还提供一种卡号配置装置,参照图3,所述卡号配置装置包括:
获取模块A10,用于获取目标产品的卡产品号对应的卡段,确定所述卡段对应的卡号表,并检测是否接收到输入的场景需求;
分片处理模块A20,用于若未接收到所述场景需求,则对所述卡号表进行分片处理,以获取多个分片;
确定模块A30,用于在各所述分片中确定目标分片,并获取所述目标分片中的当前游标,根据所述当前游标获取所述目标分片中的目标卡号,并输出所述目标卡号。
进一步地,获取模块A10,用于:
若接收到所述场景需求,则确定所述场景需求对应的关键字,并检测所述关键字对应的字符串是否为可变字符串;
若所述关键字对应的字符串为固定字符串,则基于所述卡号表获取和所述关键字匹配的所有匹配卡号,基于各所述匹配卡号确定目标卡号,并输出所述目标卡号。
进一步地,获取模块A10,用于:
若所述关键字对应的字符串为可变字符串,则确定所述卡号表中具有所述可变字符串的卡号的位置,并根据各所述位置构建位图;
基于所述位图确定具有所述可变字符串的所有卡号中是否存在可用卡号;
若存在可用卡号,则将所述可用卡号作为目标卡号进行输出。
进一步地,获取模块A10,用于:
若所述关键字对应的字符串包括可变字符串和固定字符串,则根据所述卡号表确定所述固定字符串对应的所有匹配卡号和所述可变字符串对应的位图;
根据所述位图和各所述匹配卡号构建倒排索引表,并在所述倒排索引表中获取状态为可用的卡号,并将所述状态为可用的卡号作为目标卡号,并输出所述目标卡号。
进一步地,获取模块A10,用于:
遍历所述倒排索引表中的所有分组,确定遍历的分组是否为可用分组;
若遍历的分组为不可用分组,则基于预设的时间间隔继续遍历所述遍历的分组的下一分组,直至遍历到可用分组,并在所述可用分组中获取状态为可用的卡号;
将所述状态为可用的卡号的状态由所述可用更新为已使用,并将更新后的卡号作为目标卡号。
进一步地,确定模块A30,用于:
确定各所述分片的分片数量,检测所述分片数量是否大于预设阈值;
若所述分片数量大于预设阈值,则在各所述分片中随机获取一个分片作为目标分片。
进一步地,确定模块A30,用于:
若所述分片数量小于或等于预设阈值,则确定各所述分片中的排队开卡请求数量,并在各所述排队开卡请求数量中确定数量最少的目标排队开卡请求数量,将所述目标排队开卡请求数量对应的分片作为目标分片。
进一步地,获取模块A10,用于:
若未接收到所述场景需求,则在所述卡号表中确定未使用区间的未更新卡号,并对所述未更新卡号的状态和所述未更新卡号对应的乐观锁版本号进行更新;
若更新成功,则将所述未更新卡号作为目标卡号进行输出。
上述各程序单元所执行的方法可参照本发明卡号配置方法各个实施例,此处不再赘述。
本发明还提供一种计算机存储介质。
本发明计算机存储介质上存储有卡号配置程序,所述卡号配置程序被处理器执行时实现如上所述的卡号配置方法的步骤。
其中,在所述处理器上运行的卡号配置程序被执行时所实现的方法可参照本发明卡号配置方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种卡号配置方法,其特征在于,所述卡号配置方法包括如下步骤:
获取目标产品的卡产品号对应的卡段,确定所述卡段对应的卡号表,并检测是否接收到输入的场景需求;
若接收到所述场景需求,则确定所述场景需求对应的关键字,并检测所述关键字对应的字符串是否为可变字符串;
若所述关键字对应的字符串为固定字符串,则基于所述卡号表获取和所述关键字匹配的所有匹配卡号,基于各所述匹配卡号确定目标卡号,并输出所述目标卡号;
若所述关键字对应的字符串为可变字符串,则确定所述卡号表中具有所述可变字符串的卡号的位置,并根据各所述位置构建位图;基于所述位图确定具有所述可变字符串的所有卡号中是否存在可用卡号;若存在可用卡号,则将所述可用卡号作为目标卡号进行输出;
若未接收到所述场景需求,则对所述卡号表进行分片处理,以获取多个分片;在各所述分片中确定目标分片,并获取所述目标分片中的当前游标,根据所述当前游标获取所述目标分片中的目标卡号,并输出所述目标卡号。
2.如权利要求1所述的卡号配置方法,其特征在于,所述检测所述关键字对应的字符串是否为可变字符串的步骤之后,还包括:
若所述关键字对应的字符串包括可变字符串和固定字符串,则根据所述卡号表确定所述固定字符串对应的所有匹配卡号和所述可变字符串对应的位图;
根据所述位图和各所述匹配卡号构建倒排索引表,并在所述倒排索引表中获取状态为可用的卡号,并将所述状态为可用的卡号作为目标卡号,并输出所述目标卡号。
3.如权利要求2所述的卡号配置方法,其特征在于,所述在所述倒排索引表中获取状态为可用的卡号,并将所述状态为可用的卡号作为目标卡号的步骤,包括:
遍历所述倒排索引表中的所有分组,确定遍历的分组是否为可用分组;
若遍历的分组为不可用分组,则基于预设的时间间隔继续遍历所述遍历的分组的下一分组,直至遍历到可用分组,并在所述可用分组中获取状态为可用的卡号;
将所述状态为可用的卡号的状态由所述可用更新为已使用,并将更新后的卡号作为目标卡号。
4.如权利要求1所述的卡号配置方法,其特征在于,所述在各所述分片中确定目标分片的步骤,包括:
确定各所述分片的分片数量,检测所述分片数量是否大于预设阈值;
若所述分片数量大于预设阈值,则在各所述分片中随机获取一个分片作为目标分片。
5.如权利要求4所述的卡号配置方法,其特征在于,所述检测所述分片数量是否大于预设阈值的步骤之后,包括:
若所述分片数量小于或等于预设阈值,则确定各所述分片中的排队开卡请求数量,并在各所述排队开卡请求数量中确定数量最少的目标排队开卡请求数量,将所述目标排队开卡请求数量对应的分片作为目标分片。
6.一种卡号配置装置,其特征在于,所述卡号配置装置包括:
获取模块,用于获取目标产品的卡产品号对应的卡段,确定所述卡段对应的卡号表,并检测是否接收到输入的场景需求;
分片处理模块,用于若未接收到所述场景需求,则对所述卡号表进行分片处理,以获取多个分片;
确定模块,用于在各所述分片中确定目标分片,并获取所述目标分片中的当前游标,根据所述当前游标获取所述目标分片中的目标卡号,并输出所述目标卡号,以及用于若接收到所述场景需求,则确定所述场景需求对应的关键字,并检测所述关键字对应的字符串是否为可变字符串,以及用于若所述关键字对应的字符串为固定字符串,则基于所述卡号表获取和所述关键字匹配的所有匹配卡号,基于各所述匹配卡号确定目标卡号,并输出所述目标卡号;以及用于若所述关键字对应的字符串为可变字符串,则确定所述卡号表中具有所述可变字符串的卡号的位置,并根据各所述位置构建位图;以及用于基于所述位图确定具有所述可变字符串的所有卡号中是否存在可用卡号;以及用于若存在可用卡号,则将所述可用卡号作为目标卡号进行输出。
7.一种卡号配置设备,其特征在于,所述卡号配置设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的卡号配置程序,所述卡号配置程序被所述处理器执行时实现如权利要求1至5中任一项所述的卡号配置方法的步骤。
8.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有卡号配置程序,所述卡号配置程序被处理器执行时实现如权利要求1至5中任一项所述的卡号配置方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011496820.6A CN112612790B (zh) | 2020-12-17 | 2020-12-17 | 卡号配置方法、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011496820.6A CN112612790B (zh) | 2020-12-17 | 2020-12-17 | 卡号配置方法、装置、设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612790A CN112612790A (zh) | 2021-04-06 |
CN112612790B true CN112612790B (zh) | 2024-06-18 |
Family
ID=75240995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011496820.6A Active CN112612790B (zh) | 2020-12-17 | 2020-12-17 | 卡号配置方法、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612790B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342819B (zh) * | 2021-06-28 | 2024-09-20 | 深圳前海微众银行股份有限公司 | 一种卡号生成方法、装置、设备及存储介质 |
CN116645751B (zh) * | 2023-06-27 | 2023-11-24 | 深圳市亲邻科技有限公司 | 一种ic卡片信息变更方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095263A (zh) * | 2014-05-08 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 卡号的生成方法及其装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7308446B1 (en) * | 2003-01-10 | 2007-12-11 | Cisco Technology, Inc. | Methods and apparatus for regular expression matching |
US20160027000A1 (en) * | 2014-07-23 | 2016-01-28 | Bank Of America Corporation | Mobile one-time bank card number generator for digital wallet |
CN105956921A (zh) * | 2016-05-24 | 2016-09-21 | 中国银行股份有限公司 | 一种银行卡号自选方法及装置 |
CN108256054A (zh) * | 2018-01-15 | 2018-07-06 | 腾讯科技(深圳)有限公司 | 确定目标号码集合的方法和装置 |
KR20180048543A (ko) * | 2018-04-30 | 2018-05-10 | 주식회사 비즈모델라인 | 동적 카드정보 운영 방법 |
CN109542894B (zh) * | 2018-10-22 | 2023-07-11 | 平安科技(深圳)有限公司 | 用户数据集中存储方法、装置、介质和计算机设备 |
CN109710619B (zh) * | 2018-12-29 | 2023-09-29 | 中国银联股份有限公司 | 一种数据库扩容方法、装置和可读介质 |
CN111914956A (zh) * | 2019-05-08 | 2020-11-10 | 威海新北洋荣鑫科技股份有限公司 | 无序发卡方法、装置、发卡机及计算机可读存储介质 |
CN111414379A (zh) * | 2020-03-20 | 2020-07-14 | 深圳前海微众银行股份有限公司 | 序列号生成方法、装置、设备及计算机可读存储介质 |
CN111563109B (zh) * | 2020-04-26 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 基数统计方法、装置、系统、设备和计算机可读存储介质 |
-
2020
- 2020-12-17 CN CN202011496820.6A patent/CN112612790B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095263A (zh) * | 2014-05-08 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 卡号的生成方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112612790A (zh) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8949189B2 (en) | Managing storage of individually accessible data units | |
EP3292481B1 (en) | Method, system and computer program product for performing numeric searches | |
US20120303624A1 (en) | Dynamic rule reordering for message classification | |
EP3654195A1 (en) | Index data storage and retrieval methods and apparatuses, and storage medium | |
CN109033295B (zh) | 超大数据集的合并方法及装置 | |
CN111045988B (zh) | 文件查找方法、设备和计算机程序产品 | |
CN112612790B (zh) | 卡号配置方法、装置、设备及计算机存储介质 | |
KR20130036094A (ko) | 개별적으로 액세스 가능한 데이터 유닛의 스토리지 관리 방법 | |
CN112104725B (zh) | 容器镜像去重方法、系统、计算机设备及存储介质 | |
US10311093B2 (en) | Entity resolution from documents | |
CN110036381B (zh) | 存储器内数据搜索技术 | |
CN107357794B (zh) | 优化键值数据库的数据存储结构的方法和装置 | |
CN115576947A (zh) | 一种数据管理方法、装置、组合库、电子设备及存储介质 | |
CN112231400B (zh) | 分布式数据库的访问方法、装置、设备及存储介质 | |
CN117369731B (zh) | 一种数据的缩减处理方法、装置、设备及介质 | |
CN104794129A (zh) | 一种基于查询日志的数据处理方法和系统 | |
CN103891244B (zh) | 一种进行数据存储和检索的方法及装置 | |
CN114205424B (zh) | 账单文件解压方法、装置、计算机设备和存储介质 | |
CN115455425A (zh) | 防护补丁生成方法、系统、设备及存储介质 | |
US12259859B2 (en) | Deduplication of data via associative similarity search | |
CN114138552B (zh) | 数据动态重删方法、系统、终端及存储介质 | |
CN105468603A (zh) | 数据选择方法及装置 | |
CN107085571B (zh) | 一种校验规则的执行方法和装置 | |
CN112506877B (zh) | 基于重删域的数据重删方法、装置、系统及存储设备 | |
CN113392124B (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 |