一種提高afc系統(tǒng)終端設(shè)備黑名單匹配效率的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種提高AFC系統(tǒng)終端設(shè)備黑名單匹配效率的方法,屬于城市軌道交通智能化技術(shù)。
【背景技術(shù)】
[0002]隨著城市軌道交通的迅猛發(fā)展,路網(wǎng)結(jié)構(gòu)日趨復(fù)雜、輸送客流量日益增大。城市軌道交通系統(tǒng)能否正常、高效地運營,不僅取決于軌道和車輛等基礎(chǔ)設(shè)施條件,更有賴于運營管理及其技術(shù)手段的先進性。軌道交通自動售檢票(AFC)系統(tǒng)為乘客提供快捷、簡易的購票服務(wù),實現(xiàn)軌道票務(wù)運營的售檢票、財務(wù)、統(tǒng)計分析、審核等全過程的自動化管理工作。作為運營單位與公眾交互的界面,軌道交通AFC系統(tǒng)的建設(shè)水平直接影響軌道交通的服務(wù)水平、運營效率以及公眾滿意度,因此也越來越得到人們的重視。
[0003]為保證軌道票務(wù)運營安全,需要限制無效、丟失、異常票卡在軌道交通AFC系統(tǒng)中使用,黑名單管理就是其中一種行之有效的方法。黑名單是限制使用的票卡卡號清單,一般采用邏輯卡號,車站終端設(shè)備通常采取逐條記錄的方式來存儲黑名單。軌道交通AFC系統(tǒng)將黑名單通過網(wǎng)絡(luò)或其他途徑下發(fā)到充值、消費等終端設(shè)備中,票卡在終端設(shè)備充值、消費時,設(shè)備自動檢測,一旦發(fā)現(xiàn)黑名單票卡,即會鎖卡并報警,阻止黑名單卡在AFC系統(tǒng)中使用。隨著軌道交通AFC系統(tǒng)的運營,系統(tǒng)中黑名單數(shù)量不斷增加,導(dǎo)致AFC系統(tǒng)終端設(shè)備容量不夠、處理速度變慢等問題,如考慮對終端設(shè)備進行硬件升級,因涉及大量終端的改造或更換,成本巨大;另外,為減少運營負擔,終端黑名單數(shù)據(jù)不宜頻繁更新,終端設(shè)備難以實現(xiàn)對黑名單變化的實時響應(yīng),增加了黑名單卡使用而造成的損失。
[0004]有鑒于此,為提高城市軌道交通AFC系統(tǒng)服務(wù)水平、最大限度地減少票務(wù)損失,迫切需要一種提高AFC系統(tǒng)終端設(shè)備黑名單匹配效率的方法,在終端硬件不變的前提下,系統(tǒng)地解決終端設(shè)備黑名單匹配效率隨運營過程不斷降低這一難題。
【發(fā)明內(nèi)容】
[0005]發(fā)明目的:針對當前城市軌道交通實際運營過程中,AFC系統(tǒng)終端設(shè)備黑名單檢索速度隨運營過程不斷降低的問題,本發(fā)明提出了一種提高AFC系統(tǒng)終端設(shè)備黑名單匹配效率的方法,在終端硬件不變的條件下,通過軟件升級即可實現(xiàn),是一種成本較低的解決方案。
[0006]技術(shù)方案:為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:
[0007]一種提高AFC系統(tǒng)終端設(shè)備黑名單匹配效率的方法,包括如下步驟:
[0008](I)車站終端設(shè)備黑名單存儲及下載
[0009](1.1)終端設(shè)備黑名單存儲:采取單條黑名單記錄和號段黑名單記錄相結(jié)合的方法;
[0010](1.2)終端設(shè)備黑名單下載:采用時間限制方法和分布式下載方法相結(jié)合的黑名單下載方法;
[0011](2)基于單條黑名單票卡邏輯號統(tǒng)計規(guī)律的哈希函數(shù)及地址沖突解決方法
[0012](2.1)以單條黑名單的票卡邏輯號為關(guān)鍵字key,根據(jù)票卡邏輯號的組成結(jié)構(gòu)及其統(tǒng)計分布、構(gòu)造相應(yīng)的哈希函數(shù)H(key);
[0013](2.2)結(jié)合給定哈希函數(shù)H (key)下的實際地址沖突狀況,綜合考慮黑名單規(guī)模及實際可用內(nèi)存大小,選擇開放尋址法或分離鏈接法解決地址沖突問題;
[0014](3)黑名單檢索模式及檢索方法
[0015](3.1)終端設(shè)備可采用脫機和聯(lián)機兩種檢索模式;正常情況下處于脫機模式,執(zhí)行交易票卡的黑名單查詢操作;緊急情況下進入聯(lián)機模式,獲得授權(quán)后方可對終端設(shè)備內(nèi)存黑名單數(shù)據(jù)進行增、刪操作;
[0016](3.2)基于有序鏈表的號段黑名單檢索方法
[0017](3.2.1)基于有序鏈表的號段黑名單裝載
[0018]①每個運營日終端設(shè)備上電啟動后,初始化進程自動運行,開辟內(nèi)存空間并創(chuàng)建空鏈表;
[0019]②初始化進程將存放在終端設(shè)備外存的號段黑名單記錄讀入內(nèi)存緩沖區(qū),若各號段黑名單記錄互不重疊,則直接創(chuàng)建對應(yīng)節(jié)點存放號段記錄中的有效字段,并按其在數(shù)軸上的相對位置插入鏈表;若號段記錄間有相互重疊部分,則取其并集替代相關(guān)號段,得到互不重疊的號段記錄序列,再按其在數(shù)軸上的相對位置插入鏈表;
[0020](3.2.2)基于有序鏈表的號段黑名單插入
[0021 ] ①創(chuàng)建節(jié)點Pcur來存放待插入號段記錄中的有效字段;采用二分法定位待插入號段記錄在鏈表中的位置,并利用鏈表節(jié)點Ppre、Pnext來標記之,則有(Ppre->1gicalID_beg<Pcur->logicalID_beg)&&(Pcur->logicaIID_end〈Pnext_>logicalID_end);其中:logicalID_beg 為起始邏輯號,logicalID_end 為終止邏輯號;
[0022]②若節(jié)點Ppre與節(jié)點Pnext之間存在中間節(jié)點,則將其刪除;
[0023]③若Ppre、Pcur> Pnext中的號段記錄均無重疊部分,則直接將Pcur插入到Ppre與Pnext之間;gPcur中的號段記錄與Ppre中的有重疊部分、與Pnext中的無重疊部分,則令 Ppre_>logicalID_end = Pcur->1gicalID_end ;gPcur 中的號段記錄與 Pnext 中的有重疊部分、與Ppre中的無重疊部分,貝Ij令Pnext_>logicalID_beg = Pcur->logicalID_beg ;若Ppre、Pcur> Pnext中的號段記錄有兩兩重疊部分,則令Ppre_>logicalID_end =Pnext_>logicalID_end,并從鏈表中刪除節(jié)點Pnext ;
[0024](3.2.3)基于有序鏈表的號段黑名單查詢
[0025]當脫機終端受理一張票卡交易時,首先讀取票卡邏輯號,并采用二分法在鏈表中查找滿足logicalID_beg<交易票卡邏輯號<l0gicalID_beg的鏈表節(jié)點;若找到該節(jié)點,返回布爾值1,表示“查找命中”;若找不到該節(jié)點,則轉(zhuǎn)入(3.3.3)進入基于哈希表的單條黑名單查詢流程;
[0026](3.2.4)基于有序鏈表的號段黑名單刪除
[0027]①采用二分法確定待刪除黑名單號段[logicalID_head, logicalID_tail]在鏈表中的位置,將定位到的鏈表節(jié)點記為Pdel,則有(Pdel->logicalID_beg ( logicalID_head)&&(logicalID_taiI ^ Pdel_>logicalID_end);若定位失敗,返回布爾值 0,表示“刪除失敗”;
[0028]②若Pdel_>logicalID_beg = logicalID_head,則令 Pdel_>logicalID_beg=logicalID_tail+l,并返回布爾值 1,表示“刪除成功”;若 Pdel_>logicalID_end =logicalID_tail,則令 Pde 1->1gicalID_end = logicalID_head - 1,并返回布爾值,1,表不“刪除成功”;若 Pdel_>logicalID_beg Φ logicalID_head&&Pde 1->1gicalID_end Φ logicalID_tail,則創(chuàng)建節(jié)點 Pnewl 和 Pnew2,使得 Pnewl_>logicalID_beg =Pdel_>logicalID_beg、Pnewl->logicalID_end = logicalID_head-KPnew2->1gicalID_beg = Pdel->1gicalID_tail+KPnew2->1gicalID_end = Pdel->1gicalID_end,隨后刪除節(jié)點Pdeldf PnewUPnewl依次插入其原先位置,并返回布爾值1,表示“刪除成功”;
[0029](3.3)基于哈希表的單條黑名單檢索方法
[0030](3.3.1)基于哈希表的單條黑名單裝載
[0031]①每個運營日終端設(shè)備上電啟動后,初始化進程自動運行,開辟內(nèi)存空間并創(chuàng)建空哈希表;哈希表長度TableSize = M/ α,其中M為終端設(shè)備存放的單條黑名單記錄數(shù)目,α為裝填因子;
[0032]②初始化進程將存放在終端設(shè)備外存的單條黑名單記錄讀入內(nèi)存緩沖區(qū),并根據(jù)(3.3.2)定義的插入操作將其有效字段存入哈希表;
[0033](3.3.2)基于哈希表的單條黑名單插入
[0034]①以待插入黑名單記錄的票卡邏輯號為關(guān)鍵字key,根據(jù)(2.1)確定的哈希函數(shù)將其映射到哈希表中對應(yīng)位置H(key);若(2.2)中選擇開放尋址法解決地址沖突問題,則設(shè)置探測器locatejimes = O并轉(zhuǎn)②;若(2.2)中選擇分離鏈接法解決地址沖突問題,則轉(zhuǎn)④;
[0035]②若該位置未被占用,即該處1gicalID = null,則將待插入黑名單記錄中的有效字段存入該位置,并返回布爾值1,表示“插入成功”;若該位置已被占用,即該處1gicalID Φ null,則令該處 hash_coll+ = 1,同時令 locate_times+ = 1,轉(zhuǎn)③;所述hash_coll為該位置當前的沖突次數(shù);
[0036]③若locate_times〈TableSize,則根據(jù)(2.2)確定的地址探測方法定位到下一個目標位置并轉(zhuǎn)②;若locate_times = TableSize,則返回布爾值0,表示“插入失敗”,并修改位于探測路徑上所有位置的hash_coll,令hash_coll- = I ;
當前第1頁
1 
2 
3 
4 
5