專利名稱:一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種復(fù)雜字符串邏輯處理方法和裝置,特別是一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法和裝置。
背景技術(shù):
自計(jì)算機(jī)問(wèn)世以來(lái),數(shù)據(jù)處理與分析便是其主要的工作與存在目的,如何提高數(shù)據(jù)處理的效率是計(jì)算機(jī)領(lǐng)域的科研人員探求的方向,同樣也是計(jì)算機(jī)的發(fā)展與進(jìn)步的方向。計(jì)算機(jī)已經(jīng)被廣泛應(yīng)用在各種行業(yè),在大量的計(jì)算機(jī)應(yīng)用系統(tǒng)中,普遍涉及到對(duì)復(fù)雜的字符串的邏輯分析處理(包括搜索、計(jì)算、判斷等),并且分析判斷邏輯隨著應(yīng)用場(chǎng)合也經(jīng)常會(huì)發(fā)生變化。傳統(tǒng)的邏輯判斷分析處理辦法一般采用通過(guò)編寫(xiě)分析腳本(如AWK、GREP、PERL等) 或者寫(xiě)一段程序(C、JAVA等),采用這樣的方式實(shí)現(xiàn)的應(yīng)用系統(tǒng)存在很多的局限,系統(tǒng)的實(shí)施部署需要編寫(xiě)大量的邏輯分析的腳本或者程序代碼,系統(tǒng)后期的維護(hù)中,如果分析判斷邏輯稍有變化,就必須重新修改邏輯分析腳本和代碼,給系統(tǒng)使用人員帶來(lái)諸多不便,對(duì)系統(tǒng)維護(hù)人員技術(shù)水平要求也很高,同時(shí)缺少通用性和靈活性等。通過(guò)對(duì)大量應(yīng)用中的復(fù)雜字符串的調(diào)查研究,發(fā)現(xiàn)很多的復(fù)雜字符串存在其特定的格式,比如一般有回車換行符、TAB和空格字符等。總之,需要本領(lǐng)域技術(shù)人員迫切解決的一個(gè)技術(shù)問(wèn)題是如何通過(guò)一種簡(jiǎn)單的配置的方式實(shí)現(xiàn)對(duì)復(fù)雜字符串進(jìn)行各種分析判斷邏輯。
發(fā)明內(nèi)容
為解決上述問(wèn)題,本發(fā)明公開(kāi)了一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法和裝置,通過(guò)預(yù)先配置的功能性基本邏輯模板進(jìn)行組合,實(shí)現(xiàn)對(duì)復(fù)雜字符串的邏輯分析和判斷處理,使復(fù)雜字符串邏輯分析處理變得簡(jiǎn)單易用,大幅提高系統(tǒng)開(kāi)發(fā)效率,提高系統(tǒng)部署及維護(hù)靈活方便。本發(fā)明公開(kāi)了一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法,基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法包括如下步驟
a、對(duì)復(fù)雜長(zhǎng)字符串進(jìn)行格式化預(yù)處理,按照給定的行、列分隔符將復(fù)雜字符串格式化為m行和η列數(shù)據(jù)格式,保存到內(nèi)存表中;
b、根據(jù)選擇的內(nèi)存表的實(shí)現(xiàn)方式,定制基本邏輯模板,配置邏輯運(yùn)算表達(dá)式和處理結(jié)果類型,實(shí)現(xiàn)對(duì)字符串基礎(chǔ)的邏輯運(yùn)算配置操作;
c、服務(wù)端啟動(dòng)主線程和邏輯服務(wù)工作線程,主線程和邏輯服務(wù)工作線程并行運(yùn)行,主線程在服務(wù)端啟動(dòng)時(shí),完成初始化工作;d、邏輯服務(wù)工作線程得到客戶端請(qǐng)求連接后,實(shí)施復(fù)雜字符串的邏輯運(yùn)算分析服務(wù), 然后將分析結(jié)果返回客戶端。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法,通過(guò)預(yù)先配置的功能性基本邏輯模板進(jìn)行組合,實(shí)現(xiàn)對(duì)復(fù)雜字符串的邏輯分析和判斷處理,使復(fù)雜字符串邏輯分析處理變得簡(jiǎn)單易用,大幅提高系統(tǒng)開(kāi)發(fā)效率,提高系統(tǒng)部署及維護(hù)靈活方便,同時(shí)降低了對(duì)用戶操作水平的要求,降低了用戶的使用難度,提高用戶的數(shù)據(jù)處理效率,另外本方法在軟件開(kāi)發(fā)和維護(hù)過(guò)程中都簡(jiǎn)單易用,極大的提高軟件開(kāi)發(fā)速度,提高生產(chǎn)效率,節(jié)約修改代碼成本、降低出錯(cuò)概率。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的一種改進(jìn),步驟a中的內(nèi)存表采用開(kāi)源內(nèi)存數(shù)據(jù)庫(kù)或者大型數(shù)據(jù)庫(kù)。本改進(jìn)通過(guò)采用開(kāi)源內(nèi)存數(shù)據(jù)庫(kù)來(lái)作為內(nèi)存表,節(jié)約系統(tǒng)資源,降低了系統(tǒng)生成與開(kāi)發(fā)成本,提高了系統(tǒng)的穩(wěn)定性和開(kāi)發(fā)效率。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),開(kāi)源內(nèi)存數(shù)據(jù)庫(kù)為基本邏輯模板提供內(nèi)置函數(shù),同時(shí)以自定義函數(shù)完成數(shù)據(jù)庫(kù)內(nèi)置函數(shù)無(wú)法實(shí)現(xiàn)的部分,將內(nèi)置函數(shù)和自定義函數(shù)組裝成基本邏輯模板。本改進(jìn)通過(guò)使用開(kāi)源數(shù)據(jù)庫(kù)的內(nèi)置函數(shù)作為基本邏輯模板的函數(shù)組成,有效地降低了系統(tǒng)開(kāi)發(fā)成本,提高了系統(tǒng)開(kāi)發(fā)效率, 同時(shí)還能有效地提高系統(tǒng)的兼容性和運(yùn)行速度,降低系統(tǒng)的資源損耗。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),基本邏輯模板按功能分類成包括字符操作、數(shù)值計(jì)算、時(shí)間操作、關(guān)系操作和轉(zhuǎn)義操作等功能邏輯運(yùn)算,并保存到存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)為數(shù)據(jù)庫(kù)或者文件。本改進(jìn)通過(guò)對(duì)基本邏輯模板進(jìn)行功能性的分類,提高了系統(tǒng)對(duì)模板的調(diào)用效率,降低了系統(tǒng)對(duì)復(fù)雜字符串的處理的難度,提高對(duì)復(fù)雜字符串進(jìn)行邏輯分析處理的效率,同時(shí)以內(nèi)存數(shù)據(jù)庫(kù)或者文件為邏輯運(yùn)算表達(dá)式配置表的存儲(chǔ)介質(zhì),提高了系統(tǒng)運(yùn)行中對(duì)模板的調(diào)用效率。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),步驟b 中的邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程中,需要配置一系列的子邏輯操作集,對(duì)每個(gè)子操作生成操作邏輯的文字說(shuō)明,所有邏輯子操作配置結(jié)束,最后自動(dòng)生成所需功能的復(fù)雜邏輯運(yùn)算表達(dá)式。本改進(jìn)將邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程劃分為一系列的子邏輯操作集,并形成相應(yīng)的生成操作邏輯的文字說(shuō)明,提高了系統(tǒng)整體開(kāi)發(fā)與更新效率,降低了更新的難度,同時(shí)還便于進(jìn)行錯(cuò)誤檢查,降低編程開(kāi)發(fā)的出錯(cuò)率。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),步驟b 中的邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程中,基本邏輯模板中的參數(shù)元字符串分為靜態(tài)參數(shù)和動(dòng)態(tài)參數(shù),靜態(tài)參數(shù)根據(jù)配置的實(shí)際數(shù)據(jù)被實(shí)例化,動(dòng)態(tài)參數(shù)根據(jù)運(yùn)行時(shí)上下文中數(shù)據(jù)被實(shí)例化;步驟b中的邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程中,對(duì)同一個(gè)字符串或文本配置多個(gè)邏輯運(yùn)算表達(dá)式,配置好的邏輯運(yùn)算表達(dá)式在保存之前必須調(diào)用字符串邏輯分析服務(wù)接口進(jìn)行驗(yàn)證,返回得到期望的結(jié)果方可保存。本改進(jìn)使得邏輯運(yùn)算表達(dá)式的配置更具有適應(yīng)性,符合特定的復(fù)雜字符串的特定的處理與分析要求,提高了系統(tǒng)的對(duì)復(fù)雜字符串的適應(yīng)性,提高了系統(tǒng)實(shí)用性,同時(shí)還降低了系統(tǒng)的運(yùn)算表達(dá)式修改的困難程度,同時(shí)通過(guò)在邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程中對(duì)邏輯運(yùn)算表達(dá)式進(jìn)行驗(yàn)證,有效地降低了系統(tǒng)的運(yùn)行的出錯(cuò)率,提高了系統(tǒng)生成與運(yùn)行實(shí)施的效率。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),步驟c中的初始化工作包括如下步驟,首先,創(chuàng)建邏輯服務(wù)工作線程池,邏輯服務(wù)工作線程池的大小取決于服務(wù)器硬件參數(shù)和客戶端負(fù)荷的大?。蝗缓髣?chuàng)建客戶端服務(wù)連接請(qǐng)求隊(duì)列,設(shè)置客戶端連接參數(shù);最后創(chuàng)建服務(wù)監(jiān)聽(tīng)接口,監(jiān)聽(tīng)客戶端服務(wù)請(qǐng)求連接;邏輯服務(wù)工作線程池采用先進(jìn)先出隊(duì)列,隊(duì)列為所有線程共享,隊(duì)列壓入與彈出操作采用互斥機(jī)制,并使用條件變量實(shí)現(xiàn)同步。本改進(jìn)在系統(tǒng)的初始階段,以服務(wù)器和客戶端的參數(shù)為依據(jù),來(lái)決定工作線程池的大小,決定工作參數(shù),有效地提高系統(tǒng)的兼容性,同時(shí)通過(guò)對(duì)系統(tǒng)的線程池隊(duì)列進(jìn)行約定,有效地提高了系統(tǒng)處理分析字符串的效率。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),復(fù)雜字符串的邏輯運(yùn)算分析服務(wù)包括以下步驟,首先,對(duì)服務(wù)接口調(diào)用參數(shù)XML解析,得到待分析字符串、字符串格式化規(guī)則、邏輯分析結(jié)果類型;其次,在待分析字符串被格式化為若干行和列后,在內(nèi)存數(shù)據(jù)庫(kù)中按照格式化后的行數(shù)和列數(shù)創(chuàng)建內(nèi)存表,再將格式化好的數(shù)據(jù)依次插入到內(nèi)存表中;再次,在待分析字符串格式化并加載到內(nèi)存表后,依次取得接口服務(wù)調(diào)用參數(shù)解析出的邏輯運(yùn)算分析表達(dá)式,在該內(nèi)存表上進(jìn)行邏輯運(yùn)算,全部計(jì)算結(jié)束后,將內(nèi)存表從內(nèi)存中釋放;最后,將分析的結(jié)果按照服務(wù)接口中給定的返回?cái)?shù)據(jù)XML格式生成返回結(jié)果;字符串格式化規(guī)則為首先去掉字符串頭尾處空字符,按照格式化規(guī)則給定的行分隔特征字符進(jìn)行分行,給每一行進(jìn)行編號(hào);然后再按照格式化規(guī)則給定的列分隔特征字符將每一行分隔為η列,記錄下最大列數(shù)值N ;最后對(duì)行中列數(shù)不夠最大列數(shù)值的列值設(shè)置為空,使得每一行按最大列數(shù)值格式化為相同的列數(shù)N;內(nèi)存表的第一列為行編號(hào),自第二列開(kāi)始至第Ν+1列的列名取名為F1、F2…FN。本改進(jìn)通過(guò)對(duì)復(fù)雜字符串的邏輯運(yùn)算分析服務(wù)進(jìn)行限定,以開(kāi)源數(shù)據(jù)庫(kù)內(nèi)存表的形式進(jìn)行運(yùn)算處理,為復(fù)雜字符串的處理提供了簡(jiǎn)單有效的處理方式,另外通過(guò)對(duì)復(fù)雜字符串進(jìn)行統(tǒng)一格式化,保證了字符串每一行都具有穩(wěn)定的結(jié)構(gòu),提高了系統(tǒng)處理的穩(wěn)定性,同時(shí),通過(guò)對(duì)復(fù)雜字符串格式化后得到的特點(diǎn)格式的字符串進(jìn)行編號(hào)處理,使得復(fù)雜字符串格式化后的每一節(jié)均被賦予了特定的名稱,有效提高了字符串讀取與處理的難度,從而有效地降低了復(fù)雜字符串的邏輯處理難度。本發(fā)明公開(kāi)的一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置,包括服務(wù)端、接口參數(shù)解析模塊、分析結(jié)果處理模塊、基本邏輯模板編制模塊、復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊、復(fù)雜字符串格式化處理模塊和字符串邏輯分析處理模塊,基本邏輯模板編制模塊和復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊位于客戶端,
基本邏輯模板編制模塊,根據(jù)內(nèi)存表實(shí)現(xiàn)方式,編制字符操作的通用的邏輯模板,包括字符操作、數(shù)值操作、時(shí)間操作和關(guān)系操作等;
復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊,針對(duì)某個(gè)固定格式的復(fù)雜字符串或者文本, 利用基本邏輯模板通過(guò)組合并實(shí)例化成為復(fù)雜的邏輯運(yùn)算表達(dá)式,或者直接編寫(xiě)邏輯運(yùn)算表達(dá)式;
復(fù)雜字符串格式化處理模塊,對(duì)各種格式的復(fù)雜字符串或文本,按照行和列分隔符參數(shù),格式化為統(tǒng)一數(shù)量的行和列,再保存到內(nèi)存表中;
字符串邏輯分析處理模塊,首先由接口參數(shù)獲得包括字符串格式類型、字符串、邏輯運(yùn)算表達(dá)式序列和返回結(jié)果類型的參數(shù),再調(diào)用復(fù)雜字符串格式化處理模塊對(duì)復(fù)雜字符串或者文本進(jìn)行格式化處理,然后在內(nèi)存表上依次進(jìn)行邏輯運(yùn)算分析,最后將結(jié)果通過(guò)接口返回到客戶端。
本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置,實(shí)現(xiàn)了對(duì)復(fù)雜字符串的邏輯分析和判斷處理,使復(fù)雜字符串邏輯分析處理變得簡(jiǎn)單易用,大幅提高系統(tǒng)處理復(fù)雜字符串的效率,提高系統(tǒng)部署及維護(hù)靈活方便。本發(fā)明公開(kāi)的一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置的一種改進(jìn),基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置還包括內(nèi)存表操作模塊,內(nèi)存表操作模塊用于內(nèi)存表的創(chuàng)建、刪除和數(shù)據(jù)插入、刪除。本改進(jìn)通過(guò)對(duì)處理裝置添加內(nèi)存表操作模塊,使得處理裝置能夠被直接方便地進(jìn)行修改更新,提高了系統(tǒng)裝置的可操作性和實(shí)用性,降低了修改的難度。本發(fā)明公開(kāi)的一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法和裝置,實(shí)現(xiàn)對(duì)復(fù)雜字符串的邏輯分析和判斷處理,使復(fù)雜字符串邏輯分析處理變得簡(jiǎn)單易用,大幅提高系統(tǒng)開(kāi)發(fā)效率,提高系統(tǒng)部署及維護(hù)靈活方便。
圖1、本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的流程圖; 圖2、本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置的模塊結(jié)構(gòu)圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
,進(jìn)一步闡明本發(fā)明,應(yīng)理解下述具體實(shí)施方式
僅用于說(shuō)明本發(fā)明而不用于限制本發(fā)明的范圍。如圖1所示,本發(fā)明公開(kāi)了一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法,基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法包括如下步驟
a、對(duì)復(fù)雜長(zhǎng)字符串進(jìn)行格式化預(yù)處理,按照給定的行、列分隔符將復(fù)雜字符串格式化為m行和η列數(shù)據(jù)格式,保存到內(nèi)存表中;
b、根據(jù)選擇的內(nèi)存表的實(shí)現(xiàn)方式,定制基本邏輯模板,配置邏輯運(yùn)算表達(dá)式和處理結(jié)果類型,實(shí)現(xiàn)對(duì)字符串基礎(chǔ)的邏輯運(yùn)算配置操作;
c、服務(wù)端啟動(dòng)主線程和邏輯服務(wù)工作線程,主線程和邏輯服務(wù)工作線程并行運(yùn)行,主線程在服務(wù)端啟動(dòng)時(shí),完成初始化工作;
d、邏輯服務(wù)工作線程得到客戶端請(qǐng)求連接后,實(shí)施復(fù)雜字符串的邏輯運(yùn)算分析服務(wù), 然后將分析結(jié)果返回客戶端。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的一種改進(jìn),步驟a中的內(nèi)存表采用開(kāi)源內(nèi)存數(shù)據(jù)庫(kù)。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),開(kāi)源內(nèi)存數(shù)據(jù)庫(kù)為基本邏輯模板提供內(nèi)置函數(shù),同時(shí)在數(shù)據(jù)庫(kù)內(nèi)置函數(shù)無(wú)法實(shí)現(xiàn)的情況下,以自定義函數(shù)完成所需功能,將內(nèi)置函數(shù)和自定義函數(shù)組裝成基本邏輯模板。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),基本邏輯模板按功能分類成包括字符操作、數(shù)值計(jì)算、時(shí)間操作、關(guān)系操作和轉(zhuǎn)義操作等功能邏輯運(yùn)算,并保存到存儲(chǔ)介質(zhì)中。
本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),存儲(chǔ)介質(zhì)為數(shù)據(jù)庫(kù)或者文件。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),步驟b 中的邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程中,需要配置一系列的子邏輯操作集,對(duì)每個(gè)子操作生成操作邏輯的文字說(shuō)明,所有邏輯子操作配置結(jié)束,最后自動(dòng)生成所需功能的復(fù)雜邏輯運(yùn)算表達(dá)式。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),步驟b 中的邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程中,基本邏輯模板中的參數(shù)元字符串分為靜態(tài)參數(shù)和動(dòng)態(tài)參數(shù),靜態(tài)參數(shù)根據(jù)配置的實(shí)際數(shù)據(jù)被實(shí)例化,動(dòng)態(tài)參數(shù)根據(jù)運(yùn)行時(shí)上下文中數(shù)據(jù)被實(shí)例化。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),步驟b 中的邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程中,對(duì)同一個(gè)字符串配置多個(gè)邏輯運(yùn)算表達(dá)式,配置好的邏輯運(yùn)算表達(dá)式在保存之前必須調(diào)用字符串邏輯分析服務(wù)接口進(jìn)行驗(yàn)證, 返回得到期望的結(jié)果方可保存。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),步驟c 中的初始化工作包括如下步驟,首先,創(chuàng)建邏輯服務(wù)工作線程池,邏輯服務(wù)工作線程池的大小取決于服務(wù)器硬件參數(shù)和客戶端負(fù)荷的大??;然后創(chuàng)建客戶端服務(wù)連接請(qǐng)求隊(duì)列,設(shè)置客戶端連接參數(shù);最后創(chuàng)建服務(wù)監(jiān)聽(tīng)接口,監(jiān)聽(tīng)客戶端服務(wù)請(qǐng)求連接。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),邏輯服務(wù)工作線程池采用先進(jìn)先出隊(duì)列,隊(duì)列為所有線程共享,隊(duì)列壓入與彈出操作采用互斥機(jī)制,并使用條件變量實(shí)現(xiàn)同步。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),復(fù)雜字符串的邏輯運(yùn)算分析服務(wù)包括以下步驟,首先,對(duì)服務(wù)接口調(diào)用參數(shù)XML解析,得到待分析字符串、字符串格式化規(guī)則、邏輯分析結(jié)果類型;其次,在待分析字符串被格式化為若干行和列后,在內(nèi)存數(shù)據(jù)庫(kù)中按照格式化后的行數(shù)和列數(shù)創(chuàng)建內(nèi)存表,再將格式化好的數(shù)據(jù)依次插入到內(nèi)存表中;再次,在待分析字符串格式化并加載到內(nèi)存表后,依次取得接口服務(wù)調(diào)用參數(shù)解析出的邏輯運(yùn)算分析表達(dá)式,在該內(nèi)存表上進(jìn)行邏輯運(yùn)算,全部計(jì)算結(jié)束后,將內(nèi)存表從內(nèi)存中釋放;最后,將分析的結(jié)果按照服務(wù)接口中給定的返回?cái)?shù)據(jù)XML格式生成返回結(jié)果。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),字符串格式化規(guī)則為首先去掉字符串頭尾處空字符,按照格式化規(guī)則給定的行分隔特征字符進(jìn)行分行,給每一行進(jìn)行編號(hào);然后再按照格式化規(guī)則給定的列分隔特征字符將每一行分隔為 η列,記錄下最大列數(shù)值N ;最后對(duì)行中列數(shù)不夠最大列數(shù)值的列值設(shè)置為空,使得每一行按最大列數(shù)值格式化為相同的列數(shù)N。本發(fā)明公開(kāi)的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法的又一種改進(jìn),內(nèi)存表的第一列為行編號(hào),自第二列開(kāi)始至第Ν+1列的列名取名為F1、F2…FN。如圖2所示,本發(fā)明公開(kāi)的一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置,包括服務(wù)端、接口參數(shù)解析模塊、分析結(jié)果處理模塊、基本邏輯模板編制模塊、復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊、復(fù)雜字符串格式化處理模塊和字符串邏輯分析處理模塊,基本邏輯模板編制模塊和復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊位于客戶端,
基本邏輯模板編制模塊,根據(jù)實(shí)現(xiàn)內(nèi)存表采用的內(nèi)存數(shù)據(jù)庫(kù),使用內(nèi)存數(shù)據(jù)庫(kù)提供的 SQL語(yǔ)言、內(nèi)置的函數(shù)以及自定義函數(shù),編制字符操作的通用的邏輯模板,包括字符操作、數(shù)值操作、時(shí)間操作和關(guān)系操作等;
復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊,針對(duì)某個(gè)固定格式的復(fù)雜字符串或者文本, 利用基本邏輯模板通過(guò)組合并實(shí)例化成為復(fù)雜的邏輯運(yùn)算表達(dá)式,或者直接編寫(xiě)邏輯運(yùn)算表達(dá)式;
復(fù)雜字符串格式化處理模塊,對(duì)各種格式的復(fù)雜字符串或文本,按照行和列分隔符參數(shù),格式化為統(tǒng)一數(shù)量的行和列,再保存到內(nèi)存表中;
字符串邏輯分析處理模塊,首先由接口參數(shù)獲得包括字符串格式類型、字符串、邏輯運(yùn)算表達(dá)式序列和返回結(jié)果類型的參數(shù),再調(diào)用復(fù)雜字符串格式化處理模塊對(duì)復(fù)雜字符串進(jìn)行格式化處理,然后在內(nèi)存表上依次進(jìn)行邏輯運(yùn)算分析,最后將結(jié)果通過(guò)接口返回到客戶端。本發(fā)明公開(kāi)的一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置的一種改進(jìn),基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置還包括內(nèi)存表操作模塊,內(nèi)存表操作模塊用于內(nèi)存表的創(chuàng)建、刪除和數(shù)據(jù)插入、刪除。本發(fā)明公開(kāi)了一種通過(guò)分布式計(jì)算(RPC)的方式提供對(duì)復(fù)雜字符串和文本的分析判斷的邏輯服務(wù)。具體包括
服務(wù)接口定義,接口采用XML格式,使得接口具有很好的可讀性、可擴(kuò)展性。輸入?yún)?shù)主要有邏輯操作類型、待分析字符串、字符串格式化正則表達(dá)式、邏輯表達(dá)式、返回結(jié)果類型等;輸出參數(shù)有邏輯操作類型、錯(cuò)誤類型、分析結(jié)果等。客戶端使用服務(wù)接口發(fā)起邏輯分析請(qǐng)求之后,服務(wù)端為該服務(wù)端單獨(dú)啟動(dòng)一個(gè)服務(wù)線程,該線程通過(guò)以下步驟實(shí)現(xiàn)客戶端服務(wù)請(qǐng)求
獲得接口輸入?yún)?shù),解析XML參數(shù);
使用字符串格式化正則表達(dá)式,將待分析字符串格式化為行和列,在內(nèi)存中創(chuàng)建一個(gè)內(nèi)存表,將格式化后的字符串?dāng)?shù)據(jù)存放于內(nèi)存表中,并為每一行進(jìn)行編號(hào);
采用輸入?yún)?shù)中的邏輯表達(dá)式在該內(nèi)存表上進(jìn)行邏輯運(yùn)算,運(yùn)算結(jié)果按照返回結(jié)果類型,生成XML格式返回?cái)?shù)據(jù)。優(yōu)選的,本發(fā)明包括編制各種基本邏輯分析模板,包括字符操作、類型轉(zhuǎn)換操作、 時(shí)間操作、關(guān)系操作等,邏輯模板中參數(shù)采用特定的元字符串,參數(shù)分為靜態(tài)參數(shù)和動(dòng)態(tài)參數(shù)。優(yōu)選的,本發(fā)明還包括復(fù)雜字符串的邏輯分析配置模塊,該模塊采用樣本字符串, 使用若干基本邏輯分析模板組合后,自動(dòng)生成復(fù)雜的邏輯分析判斷邏輯。組合過(guò)程中必須對(duì)基本模板參數(shù)進(jìn)行實(shí)例化,最終生成可以執(zhí)行的邏輯分析表達(dá)式。對(duì)生成的邏輯分析表達(dá)式使用前面實(shí)現(xiàn)的邏輯分析服務(wù)接口進(jìn)行測(cè)試,測(cè)試結(jié)果達(dá)到預(yù)期的結(jié)果則邏輯配置完成。如圖1,示出了本發(fā)明一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法在分布式環(huán)境中的實(shí)施例,具體可以包括以下步驟
步驟101、根據(jù)內(nèi)存表的實(shí)現(xiàn)方式,編制基本邏輯模板。內(nèi)存表的實(shí)現(xiàn)有很多選擇,可以使用大型數(shù)據(jù)庫(kù)(如0RACLE、DB2、SYBASE、SQL SERVER、MYSQL等),也可以使用小的內(nèi)存數(shù)據(jù)庫(kù)(如SQLITE、FASTDB、TimeSTen等),也可以自行開(kāi)發(fā)小型內(nèi)存數(shù)據(jù)庫(kù)。綜合比較,大型數(shù)據(jù)庫(kù)大多是商業(yè)性的,占用系統(tǒng)資源大,目前有很多開(kāi)源的內(nèi)存數(shù)據(jù)庫(kù),具有其所占資源很小、性能穩(wěn)定、速度快等優(yōu)點(diǎn),而自行研發(fā)的內(nèi)存數(shù)據(jù)庫(kù),開(kāi)發(fā)周期長(zhǎng),各方面性能和穩(wěn)定性不完善,綜合比較,優(yōu)選選用開(kāi)源的內(nèi)存數(shù)據(jù)庫(kù)(比如SQLITE)。編制基本邏輯模板可以采用內(nèi)存數(shù)據(jù)庫(kù)中內(nèi)置的處理函數(shù),在數(shù)據(jù)庫(kù)內(nèi)置函數(shù)無(wú)法實(shí)現(xiàn)的情況下,通過(guò)自定義函數(shù)來(lái)完成所需功能。再通過(guò)這些函數(shù)組裝成基本的基本邏輯模板,模板中參數(shù)的定義采用特定的元字符串(如$1$、$2$等),必須注意選用的元字符串不能為內(nèi)存數(shù)據(jù)庫(kù)中的關(guān)鍵字。將編制好的基本邏輯模板按功能進(jìn)行分類,如字符操作、數(shù)值計(jì)算、時(shí)間操作、關(guān)系操作、轉(zhuǎn)義操作等,最后保存到存儲(chǔ)介質(zhì)中(文件或數(shù)據(jù)庫(kù)等)。步驟102、根據(jù)提供的復(fù)雜字符串或文本樣本數(shù)據(jù),使用步驟101配制好的基本邏輯模板,配置所需邏輯處理功能的邏輯運(yùn)算表達(dá)式和處理結(jié)果類型,處理結(jié)果類型包括布爾類型、數(shù)值類型、數(shù)據(jù)集類型。在配置過(guò)程中,需要配置一系列的子邏輯操作集,對(duì)每個(gè)子操作生成操作邏輯的文字說(shuō)明,以便于后期邏輯的閱讀,所有邏輯子操作配置結(jié)束,最后自動(dòng)生成所需功能的復(fù)雜邏輯運(yùn)算表達(dá)式,這過(guò)程中模板中的參數(shù)元字符串根據(jù)配置的實(shí)際數(shù)據(jù)被實(shí)例化。對(duì)同一個(gè)字符串或文本可以配置多個(gè)邏輯運(yùn)算表達(dá)式,配置好的表達(dá)式在保存之前必須調(diào)用字符串邏輯分析服務(wù)接口進(jìn)行驗(yàn)證,返回得到期望的結(jié)果方可保存。驗(yàn)證過(guò)程中可以對(duì)樣本數(shù)據(jù)進(jìn)行修改,以便得到多種結(jié)果,確保配置邏輯的準(zhǔn)確性。該步驟中,對(duì)于熟悉內(nèi)存數(shù)據(jù)庫(kù)SQL語(yǔ)言的人員,也可以直接編寫(xiě)邏輯運(yùn)算表達(dá)式。步驟103、采用分布式計(jì)算實(shí)現(xiàn)對(duì)復(fù)雜字符串或文本邏輯分析處理服務(wù)功能,通過(guò)簡(jiǎn)單易用的服務(wù)接口對(duì)外提供服務(wù)。服務(wù)端采用主線程和邏輯服務(wù)工作線程的實(shí)現(xiàn)方式。 具體步驟如下
步驟104、主線程在服務(wù)啟動(dòng)時(shí),要完成以下初始化步驟,首先,創(chuàng)建邏輯服務(wù)工作線程池,線程池的大小處決于服務(wù)器硬件參數(shù)、客戶端負(fù)荷的大小即并發(fā)服務(wù)數(shù)量的大小,然后創(chuàng)建客戶端服務(wù)連接請(qǐng)求隊(duì)列,設(shè)置客戶端連接的一些參數(shù),如服務(wù)時(shí)間限制,用于防止客戶端為某惡意客戶提供超長(zhǎng)時(shí)間的服務(wù),而影響到系統(tǒng)的性能或者其他客戶得不到正常的服務(wù),以及數(shù)據(jù)包發(fā)送和接收超時(shí)設(shè)置等,最后,主線程創(chuàng)建服務(wù)監(jiān)聽(tīng)接口,監(jiān)聽(tīng)客戶端服務(wù)請(qǐng)求連接。線程池調(diào)度采用先進(jìn)先出隊(duì)列(FIFO QUEUE),由于隊(duì)列為所有線程所共享,所以隊(duì)列壓入和彈出操作必須采用互斥的機(jī)制,并且使用條件變量用于實(shí)現(xiàn)同步。當(dāng)主線程監(jiān)聽(tīng)到客戶端服務(wù)請(qǐng)求連接時(shí),將連接請(qǐng)求壓入隊(duì)列,如果此時(shí)隊(duì)列已滿,主線程將在此循環(huán)等待,再有其他客戶請(qǐng)求服務(wù)將被阻塞,如果服務(wù)請(qǐng)求連接壓入隊(duì)列成功,則將條件變量置為有信號(hào)。服務(wù)工作線程循環(huán)檢測(cè)條件變量,如果測(cè)試到有信號(hào),則從隊(duì)列中按照FIFO彈出該服務(wù)請(qǐng)求,接受該服務(wù)請(qǐng)求。服務(wù)接口參數(shù)采用XML實(shí)現(xiàn),具有較好的可讀性、可擴(kuò)展性等。調(diào)用參數(shù)為一個(gè) string類型的XML結(jié)構(gòu)的command,用來(lái)描述命令參數(shù)等信息,格式如下< xml version=〃l. 0〃 encoding=〃GBK〃?> 〈SERVICE〉 <TYPE>1</TYPE>
<R0ff_RULE> 回車換行 </ R0ff_RULE > <C0L_RULE> 空格或 TAB</ C0L_RULE > <ANALYSTR> Value</ ANALYSTR > <L0GICEXP_LIST COUNT =3>
〈LOGICEXP NO=I RETYPE=1>···</L0GICEXP>
〈LOGICEXP N0=2 RETYPE=2>···</L0GICEXP>
</L0GICEXP_ LIST > 〈/SERVICE〉
返回參數(shù)為一 XML結(jié)構(gòu)的Mring。其XML格式如下示例所示 < xml version=//l. 0" encoding="GBK" > 〈SERVICE〉 <TYPE>1</TYPE>
〈LOGICEXP NO=I RETYPE=I RESULT=〃succ" 〈LOGICEXP NO=I RETYPE=2 RESULT=〃succ" 〈LOGICEXP NO=I RETYPE=2 RESULT=〃succ" 〈RESULTSET NAME="select〃 R0WC0UNT="2〃 〈FIELDS〉 〈FIELD NAME="fl" /> 〈FIELD NAME="f2" /> 〈FIELD NAME="f3" /> 〈/FIELDS〉 <R0WDATA>
<R0W fl=〃l〃 f2=〃test〃 f3=〃3〃 /> <R0W fl="2" f2="test〃 f3="4" /> </R0WDATA> </RESULTSET> </L0GICEXP> 〈/SERVICE〉
步驟105、邏輯服務(wù)工作線程得到客戶端請(qǐng)求連接后,按以下步驟完成復(fù)雜字符串的邏輯運(yùn)算分析服務(wù),并按照返回XML格式將分析結(jié)果返回給客戶端
步驟106、對(duì)服務(wù)接口調(diào)用參數(shù)XML解析,得到待分析字符串、字符串格式化規(guī)則、邏輯分析結(jié)果類型。 步驟107、對(duì)待分析字符串實(shí)施格式化,首先去掉字符串頭尾處空字符,按照格式化規(guī)則給定的行分隔特征字符(如換行符、局號(hào)或者正則表達(dá)式)進(jìn)行分行,給每一行進(jìn)行編號(hào),然后再按照格式化規(guī)則給定的列分隔特征字符(如空格、TAB、逗號(hào)或者正則表達(dá)式)
VALUE="Valuel"/> VALUE="Value2"/>
R0WC0UNT="2">
>將每一行分隔為若干列,每行分隔后可能列數(shù)不一樣,這時(shí)必須記錄下最大列數(shù)值N。最后對(duì)行中列數(shù)不夠最大列數(shù)值的列值設(shè)置為空,使得每一行按最大列數(shù)值格式化為相同的列數(shù)。步驟108、在待分析字符串被格式化為若干行和列后,在內(nèi)存數(shù)據(jù)庫(kù)中按照格式化后的行數(shù)和列數(shù)創(chuàng)建內(nèi)存表,表的第一列為行編號(hào),自第二列至第N+1列列名取名為F1、 F2…FN。再將格式化好的數(shù)據(jù)依次插入到內(nèi)存表中。步驟109、在待分析字符串格式化并加載到內(nèi)存表后,依次取得接口服務(wù)調(diào)用參數(shù)解析出的邏輯運(yùn)算分析表達(dá)式,在該內(nèi)存表上進(jìn)行邏輯運(yùn)算,全部計(jì)算結(jié)束后,將內(nèi)存表從內(nèi)存中釋放。步驟110中,將分析的結(jié)果按照服務(wù)接口中給定的返回?cái)?shù)據(jù)XML格式生成返回結(jié)果。至此,一個(gè)客戶端發(fā)起的字符串邏輯分析請(qǐng)求服務(wù)流程結(jié)束。如圖2,示出了基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置的模塊結(jié)構(gòu)示意圖,客戶端301包括基本邏輯模板編制模塊302和復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊303, 服務(wù)端201包括主線程模塊202和邏輯服務(wù)工作線程模塊203,主線程模塊202包括接口子模2021塊和創(chuàng)建并調(diào)度邏輯服務(wù)線程池模塊2022,邏輯服務(wù)工作線程模塊203包括接口參數(shù)解析模塊2031、復(fù)雜字符串格式化處理模塊2032、字符串邏輯分析處理模塊2033和分析結(jié)果處理模塊2034?;具壿嬆0寰幹颇K302根據(jù)選擇的內(nèi)存表的實(shí)現(xiàn)形式,定制基本邏輯模板。復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊303配置邏輯運(yùn)算表達(dá)式和處理結(jié)果類型,實(shí)現(xiàn)對(duì)字符串基礎(chǔ)的邏輯運(yùn)算操作。服務(wù)端201啟動(dòng)主線程模塊202和邏輯服務(wù)工作線程模塊203,主線程和邏輯服務(wù)工作線程并行運(yùn)行,主線程在服務(wù)端啟動(dòng)時(shí),完成初始化工作,主線程模塊202對(duì)客戶端監(jiān)聽(tīng)子模塊2021調(diào)用參數(shù)XML解析,接口參數(shù)解析模塊2031解析得到待分析字符串、字符串格式化規(guī)則、邏輯分析結(jié)果類型。創(chuàng)建并調(diào)度邏輯服務(wù)線程池模塊2022創(chuàng)建邏輯服務(wù)工作線程池,邏輯服務(wù)工作線程池的大小取決于服務(wù)器硬件參數(shù)和客戶端負(fù)荷的大小。復(fù)雜字符串格式化處理模塊2032去掉字符串頭尾處空字符,按照格式化規(guī)則給定的行分隔特征字符進(jìn)行分行,給每一行進(jìn)行編號(hào);然后再按照格式化規(guī)則給定的列分隔特征字符將每一行分隔為若干列,記錄下最大列數(shù)值N;最后對(duì)行中列數(shù)不夠最大列數(shù)值的列值設(shè)置為空,使得每一行按最大列數(shù)值格式化為相同的列數(shù)。 在待分析字符串被格式化為若干行和列后,在內(nèi)存數(shù)據(jù)庫(kù)中按照格式化后的行數(shù)和列數(shù)創(chuàng)建內(nèi)存表,內(nèi)存表的第一列為行編號(hào),自第二列開(kāi)始至第N+1列的列名取名為Fl、F2…FN, 再將格式化好的數(shù)據(jù)依次插入到內(nèi)存表中,字符串邏輯分析處理模塊2033在待分析字符串格式化并加載到內(nèi)存表后,依次取得接口服務(wù)調(diào)用參數(shù)解析出的邏輯運(yùn)算分析表達(dá)式, 在該內(nèi)存表上進(jìn)行邏輯運(yùn)算,全部計(jì)算結(jié)束后,將內(nèi)存表從內(nèi)存中釋放;分析結(jié)果處理模塊 2034將分析的結(jié)果按照服務(wù)接口中給定的返回?cái)?shù)據(jù)XML格式生成返回結(jié)果。優(yōu)選的,為了便于對(duì)內(nèi)存表實(shí)施修改和操作,基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置還包括內(nèi)存表操作模塊用于內(nèi)存表的創(chuàng)建、刪除和數(shù)據(jù)插入、刪除。以提高系統(tǒng)的開(kāi)發(fā)與編程效率,以及利于系統(tǒng)的后期更新與維護(hù)。本發(fā)明方案所公開(kāi)的技術(shù)手段不僅限于上述技術(shù)手段所公開(kāi)的技術(shù)手段,還包括由以上技術(shù)特征任意組合所組成的技術(shù)方案。
權(quán)利要求
1.一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法,其特征在于所述的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法包括如下步驟a、對(duì)復(fù)雜長(zhǎng)字符串進(jìn)行格式化預(yù)處理,按照給定的行、列分隔符將復(fù)雜字符串格式化為m行和η列數(shù)據(jù)格式,保存到內(nèi)存表中;b、根據(jù)選擇的內(nèi)存表的實(shí)現(xiàn)方式,定制基本邏輯模板,配置邏輯運(yùn)算表達(dá)式和處理結(jié)果類型,實(shí)現(xiàn)對(duì)字符串基礎(chǔ)的邏輯運(yùn)算配置操作;c、服務(wù)端啟動(dòng)主線程和邏輯服務(wù)工作線程,所述的主線程和邏輯服務(wù)工作線程并行運(yùn)行,所述的主線程在服務(wù)端啟動(dòng)時(shí),完成初始化工作;d、邏輯服務(wù)工作線程得到客戶端請(qǐng)求連接后,實(shí)施復(fù)雜字符串的邏輯運(yùn)算分析服務(wù), 然后將分析結(jié)果返回客戶端。
2.根據(jù)權(quán)利要求1所述的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法,其特征在于 所述的步驟a中的內(nèi)存表采用開(kāi)源內(nèi)存數(shù)據(jù)庫(kù)或者大型數(shù)據(jù)庫(kù)。
3.根據(jù)權(quán)利要求2所述的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法,其特征在于 所述的開(kāi)源內(nèi)存數(shù)據(jù)庫(kù)為基本邏輯模板提供內(nèi)置函數(shù),同時(shí)以自定義函數(shù)完成數(shù)據(jù)庫(kù)內(nèi)置函數(shù)無(wú)法實(shí)現(xiàn)的部分,將內(nèi)置函數(shù)和自定義函數(shù)組裝成基本邏輯模板。
4.根據(jù)權(quán)利要求3所述的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法,其特征在于 所述的基本邏輯模板按功能分類成包括字符操作、數(shù)值計(jì)算、時(shí)間操作、關(guān)系操作和轉(zhuǎn)義操作等功能的邏輯運(yùn)算,并保存到存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì)為數(shù)據(jù)庫(kù)或者文件。
5.根據(jù)權(quán)利要求1所述的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法,其特征在于 所述的步驟b中的邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程中,需要配置一系列的子邏輯操作集,對(duì)每個(gè)子操作生成操作邏輯的文字說(shuō)明,所有邏輯子操作配置結(jié)束,最后自動(dòng)生成所需功能的復(fù)雜邏輯運(yùn)算表達(dá)式。
6.根據(jù)權(quán)利要求1所述的基于邏輯模板對(duì)復(fù)雜字符串進(jìn)行邏輯處理的方法,其特征在于所述的步驟b中的邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程中,基本邏輯模板中的參數(shù)元字符串分為靜態(tài)參數(shù)和動(dòng)態(tài)參數(shù),靜態(tài)參數(shù)根據(jù)配置的實(shí)際數(shù)據(jù)被實(shí)例化,動(dòng)態(tài)參數(shù)根據(jù)運(yùn)行時(shí)上下文中數(shù)據(jù)被實(shí)例化;所述的步驟b中的邏輯運(yùn)算表達(dá)式和處理結(jié)果類型的配置過(guò)程中,對(duì)同一個(gè)字符串或文本配置多個(gè)邏輯運(yùn)算表達(dá)式,配置好的邏輯運(yùn)算表達(dá)式在保存之前必須調(diào)用字符串邏輯分析服務(wù)接口進(jìn)行驗(yàn)證,返回得到期望的結(jié)果方可保存。
7.根據(jù)權(quán)利要求1所述的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法,其特征在于 所述的步驟c中的初始化工作包括如下步驟,首先,創(chuàng)建邏輯服務(wù)工作線程池,所述的邏輯服務(wù)工作線程池的大小取決于服務(wù)器硬件參數(shù)和客戶端負(fù)荷的大小;然后創(chuàng)建客戶端服務(wù)連接請(qǐng)求隊(duì)列,設(shè)置客戶端連接參數(shù);最后創(chuàng)建服務(wù)監(jiān)聽(tīng)接口,監(jiān)聽(tīng)客戶端服務(wù)請(qǐng)求連接;所述的邏輯服務(wù)工作線程池采用先進(jìn)先出隊(duì)列,所述的隊(duì)列為所有線程共享,隊(duì)列壓入與彈出操作采用互斥機(jī)制,并使用條件變量實(shí)現(xiàn)同步。
8.根據(jù)權(quán)利要求1所述的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法,其特征在于 所述的復(fù)雜字符串的邏輯運(yùn)算分析服務(wù)包括以下步驟,首先,對(duì)服務(wù)接口調(diào)用參數(shù)XML解析,得到待分析字符串、字符串格式化規(guī)則、邏輯分析結(jié)果類型;其次,在待分析字符串被格式化為若干行和列后,在內(nèi)存中按照格式化后的行數(shù)和列數(shù)創(chuàng)建內(nèi)存表,再將格式化好的數(shù)據(jù)依次插入到內(nèi)存表中;再次,在待分析字符串格式化并加載到內(nèi)存表后,依次取得接口服務(wù)調(diào)用參數(shù)解析出的邏輯運(yùn)算分析表達(dá)式,在該內(nèi)存表上進(jìn)行邏輯運(yùn)算,全部計(jì)算結(jié)束后,將內(nèi)存表從內(nèi)存中釋放;最后,將分析的結(jié)果按照服務(wù)接口中給定的返回?cái)?shù)據(jù)XML格式生成返回結(jié)果;所述的字符串格式化規(guī)則為首先去掉字符串頭尾處空字符,按照格式化規(guī)則給定的行分隔特征字符進(jìn)行分行,給每一行進(jìn)行編號(hào);然后再按照格式化規(guī)則給定的列分隔特征字符將每一行分隔為η列,記錄下最大列數(shù)值N ;最后對(duì)行中列數(shù)不夠最大列數(shù)值的列值設(shè)置為空,使得每一行按最大列數(shù)值格式化為相同的列數(shù)N;所述的內(nèi)存表的第一列為行編號(hào),自第二列開(kāi)始至第Ν+1列的列名取名為F1、F2…FN。
9.一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置,包括服務(wù)端、接口參數(shù)解析模塊和分析結(jié)果處理模塊,其特征在于所述的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置還包括基本邏輯模板編制模塊、復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊、復(fù)雜字符串格式化處理模塊和字符串邏輯分析處理模塊,所述的基本邏輯模板編制模塊和復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊位于客戶端,所述的基本邏輯模板編制模塊,根據(jù)內(nèi)存表實(shí)現(xiàn)方式,編制字符操作的通用的邏輯模板,包括字符操作、數(shù)值操作、時(shí)間操作和關(guān)系操作等;所述的復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊,針對(duì)某個(gè)固定格式的復(fù)雜字符串,利用基本邏輯模板通過(guò)組合并實(shí)例化成為復(fù)雜的邏輯運(yùn)算表達(dá)式,或者直接編寫(xiě)邏輯運(yùn)算表達(dá)式;所述的復(fù)雜字符串格式化處理模塊,對(duì)各種格式的復(fù)雜字符串或文本,按照行和列分隔符參數(shù),格式化為統(tǒng)一數(shù)量的行和列,再保存到內(nèi)存表中;所述的字符串邏輯分析處理模塊,首先由接口參數(shù)獲得包括字符串格式類型、字符串、 邏輯運(yùn)算表達(dá)式序列和返回結(jié)果類型的參數(shù),再調(diào)用復(fù)雜字符串格式化處理模塊對(duì)復(fù)雜字符串或者文本進(jìn)行格式化處理,然后在內(nèi)存表上依次進(jìn)行邏輯運(yùn)算分析,最后將結(jié)果通過(guò)接口返回到客戶端。
10.根據(jù)權(quán)利要求9所述的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置,其特征在于 所述的基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的裝置還包括內(nèi)存表操作模塊,所述的內(nèi)存表操作模塊用于內(nèi)存表的創(chuàng)建、刪除和數(shù)據(jù)插入、刪除。
全文摘要
本發(fā)明公開(kāi)了一種基于邏輯模板對(duì)復(fù)雜字符串邏輯處理的方法和裝置,根據(jù)選擇的內(nèi)存表的實(shí)現(xiàn)形式編制各種基本邏輯模板,采用基本邏輯模板及其組合對(duì)復(fù)雜字符串的邏輯處理配置邏輯運(yùn)算表達(dá)式和處理結(jié)果類型,將復(fù)雜字符串格式化得到的數(shù)據(jù)保存到內(nèi)存表中,根據(jù)字符串類型從邏輯配置表中取得相應(yīng)的邏輯運(yùn)算表達(dá)式序列,依次在內(nèi)存表上進(jìn)行運(yùn)算并輸出結(jié)果,其裝置包括基本邏輯模板編制模塊、復(fù)雜字符串運(yùn)算分析判斷邏輯配置模塊、復(fù)雜字符串格式化處理模塊和字符串邏輯分析處理模塊。本發(fā)明解決的技術(shù)問(wèn)題是復(fù)雜字符串的邏輯分析和處理,通過(guò)本發(fā)明公開(kāi)的方法和裝置使復(fù)雜字符串邏輯分析處理變得簡(jiǎn)單易用,大幅提高系統(tǒng)開(kāi)發(fā)效率,提高系統(tǒng)部署及維護(hù)靈活方便。
文檔編號(hào)G06F17/27GK102446167SQ201110254900
公開(kāi)日2012年5月9日 申請(qǐng)日期2011年8月31日 優(yōu)先權(quán)日2011年8月31日
發(fā)明者劉庭華, 朱云杰, 牛立強(qiáng), 王文峰, 王睿峰, 趙旸, 顧剛 申請(qǐng)人:中博信息技術(shù)研究院有限公司