本申請(qǐng)涉及軟件開發(fā)領(lǐng)域,特別涉及一種代碼處理方法和裝置。
背景技術(shù):
在軟件開發(fā)的過(guò)程中,通過(guò)將既有的用以實(shí)現(xiàn)某個(gè)功能的多個(gè)源代碼模塊進(jìn)行合并來(lái)獲得與某個(gè)業(yè)務(wù)相關(guān)的源代碼文件,已成為目前比較常見的手段。
現(xiàn)有技術(shù)中,在實(shí)現(xiàn)多個(gè)源代碼模塊合并的過(guò)程中,為解決各個(gè)源代碼模塊的依賴問(wèn)題,通??梢砸氪a依賴框架,從而使得最終合并得到的源代碼文件中的各模塊通過(guò)上述代碼依賴框架來(lái)解決模塊依賴的問(wèn)題。
現(xiàn)有技術(shù)中,由于引入的代碼依賴框架會(huì)增加合并得到的源代碼文件的長(zhǎng)度,致使最終得到的源代碼文件不夠精簡(jiǎn)。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例的目的是提供一種代碼處理的方法及裝置,用以解決現(xiàn)有技術(shù)中由于引入的代碼依賴框架會(huì)增加合并得到的源代碼文件的長(zhǎng)度,致使最終得到的源代碼文件不夠精簡(jiǎn)的問(wèn)題。
為解決上述技術(shù)問(wèn)題,本申請(qǐng)實(shí)施例提供的代碼處理的方法和裝置是這樣實(shí)現(xiàn)的:
一種代碼處理的方法,包括:
獲取與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊代碼;
提取所述模塊代碼中包含的依賴信息;
根據(jù)所述依賴信息確定當(dāng)前業(yè)務(wù)中的各模塊的次序,并依據(jù)所述模塊的次序合并所述模塊代碼,得到與所述當(dāng)前業(yè)務(wù)對(duì)應(yīng)的代碼文件。
一種代碼處理的裝置,包括:
獲取單元,用于獲取與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊代碼;
提取單元,用于提取所述模塊代碼中包含的依賴信息;
確定單元,用于根據(jù)所述依賴信息確定當(dāng)前業(yè)務(wù)中的各模塊的次序,并依據(jù)所述模塊的次序合并所述模塊代碼,得到與所述當(dāng)前業(yè)務(wù)對(duì)應(yīng)的代碼文件。
由以上本申請(qǐng)實(shí)施例提供的技術(shù)方案可見,本申請(qǐng)實(shí)施例提供的代碼處理的方法及裝置,通過(guò)在獲取到與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊代碼之后,提取所述模塊代碼中包含的依賴信息,并根據(jù)所述依賴信息確定當(dāng)前業(yè)務(wù)中的各模塊的次序,最終依據(jù)所述次序?qū)⑺瞿K代碼進(jìn)行合并,得到與所述當(dāng)前業(yè)務(wù)對(duì)應(yīng)的代碼文件。以上過(guò)程中,避免通過(guò)引入特定的代碼依賴框架來(lái)解決各模塊的依賴問(wèn)題,從而使得最終合并得到的代碼文件更為精簡(jiǎn)。
附圖說(shuō)明
為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請(qǐng)一實(shí)施例中提供的代碼處理方法的流程圖;
圖2為本申請(qǐng)一實(shí)施例中的根據(jù)依賴信息確定各模塊的次序的方法流程圖;
圖3為本申請(qǐng)一實(shí)施例中的根據(jù)依賴信息確定各模塊的次序的方法流程圖;
圖4為本申請(qǐng)一實(shí)施例中提供的代碼處理裝置的模塊示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;? 于本申請(qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
圖1為本申請(qǐng)一實(shí)施例中的代碼處理方法的流程圖。本實(shí)施例中,所述代碼處理方法包括如下步驟:
S110:獲取與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊代碼。
當(dāng)前業(yè)務(wù)是軟件開發(fā)人員當(dāng)前所需實(shí)現(xiàn)的業(yè)務(wù),該當(dāng)前業(yè)務(wù)可以包含多個(gè)預(yù)先規(guī)劃的模塊,并且各個(gè)模塊之間可以存在依賴關(guān)系。其中,在需要實(shí)現(xiàn)某個(gè)業(yè)務(wù)之前,可以由軟件開發(fā)人員指定當(dāng)前業(yè)務(wù)所包含的模塊。舉例而言,對(duì)于當(dāng)前業(yè)務(wù)X,其包含的模塊可以是{a、b、c、d、e},隨后可根據(jù)這些模塊分別獲取到與之對(duì)應(yīng)的模塊代碼。
本申請(qǐng)實(shí)施例中,獲取與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊代碼之前,所述方法還包括:
根據(jù)模塊之間的依賴關(guān)系,在各模塊的模塊代碼中添加與依賴關(guān)系對(duì)應(yīng)的依賴信息;將各模塊的模塊代碼與該模塊的模塊標(biāo)識(shí)進(jìn)行映射并存儲(chǔ)。
如前所述,各個(gè)模塊之間可以存在依賴關(guān)系,這些依賴關(guān)系可以通過(guò)在各模塊的模塊代碼中添加相應(yīng)的依賴信息來(lái)實(shí)現(xiàn)。如:
/*global extend*/
//依賴extend
function ajax(settings){
…
}
在上述示例性的模塊代碼中,則可以通過(guò)依賴信息“/*global extend*/”來(lái)實(shí)現(xiàn)該模塊“ajax”依賴于模塊“extend”。
按照上述方法分別在存在依賴關(guān)系的模塊的模塊代碼中添加相應(yīng)的依賴信息,并賦予所述劃分的各模塊以不同的模塊標(biāo)識(shí)ID(例如上述“ajax”、“extend”),則每個(gè)模塊的模塊代碼與該模塊的模塊標(biāo)識(shí)一一對(duì)應(yīng)。最終將這些添加依賴信息后的模塊代碼分別與各個(gè)模塊的模塊標(biāo)識(shí)ID進(jìn)行映射,并存 儲(chǔ)到源代碼數(shù)據(jù)庫(kù)中。
如上所述,本實(shí)施例中,該步驟S110具體包括:
接收用戶輸入的與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊標(biāo)識(shí)。
根據(jù)所述模塊標(biāo)識(shí)查詢到與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊代碼。
所述用戶可以是軟件開發(fā)人員,系統(tǒng)接收軟件開發(fā)人員根據(jù)當(dāng)前業(yè)務(wù)的需求輸入的與當(dāng)前業(yè)務(wù)包含的各模塊對(duì)應(yīng)的模塊標(biāo)識(shí)。隨后,系統(tǒng)根據(jù)接收到的各個(gè)模塊標(biāo)識(shí)查詢上述源代碼數(shù)據(jù)庫(kù),得到預(yù)先存儲(chǔ)的與各個(gè)模塊對(duì)應(yīng)的模塊代碼。如:輸入的模塊標(biāo)識(shí)包括:“ajax”、“extend”,則系統(tǒng)查詢與模塊標(biāo)識(shí)“ajax”、“extend”相映射的模塊代碼。
S120:提取所述模塊代碼中包含的依賴信息。
具體地,本申請(qǐng)實(shí)施例可以通過(guò)編輯相應(yīng)的提取依賴信息的正則表達(dá)式(Regular Expression,RE)來(lái)掃描模塊代碼以獲取所述依賴信息。
舉例而言,若當(dāng)前業(yè)務(wù)X包含的模塊是{a、b、c、d、e},通過(guò)掃描上述模塊對(duì)應(yīng)的模塊代碼,可以得到模塊a的模塊代碼中包含的依賴信息是:“/*global a*/”,模塊b的模塊代碼中包含的依賴信息是:“/*global c*/”,模塊d的模塊代碼中包含的依賴信息是:“/*global b*/”,模塊e的模塊代碼中包含的依賴信息是:“/*global c*/”;則,上述依賴信息對(duì)應(yīng)的依賴關(guān)系如下:
a依賴于b,b依賴于c,d依賴于b,e依賴于c。
S130:根據(jù)所述依賴信息列表確定當(dāng)前業(yè)務(wù)中的各模塊的次序,并依據(jù)所述次序?qū)⑺瞿K代碼進(jìn)行合并,得到與所述當(dāng)前業(yè)務(wù)對(duì)應(yīng)的代碼文件。
本申請(qǐng)一實(shí)施例中,在上述步驟S120之后和該步驟S130之前,所述方法還包括:
S140:根據(jù)提取的依賴信息確定與當(dāng)前業(yè)務(wù)對(duì)應(yīng)的依賴信息列表。其中,所述依賴信息列表是按照提取得到的依賴關(guān)系,將當(dāng)前業(yè)務(wù)的各模塊按照一定順序進(jìn)行排序。
繼續(xù)沿用上述例子,若當(dāng)前業(yè)務(wù)X包含的模塊是{a、b、c、d、e},并通 過(guò)提取各模塊代碼中的依賴信息可以得到下述依賴關(guān)系:a依賴于b,b依賴于c,d依賴于b,e依賴于c。則,可以得到依賴信息列表中的模塊順序是:[a,b,c]、[d,b]、[e,c],隨后,通過(guò)將上述模塊順序進(jìn)行合并,得到依賴信息列表中的模塊順序是:[a,b,c,d,b,e,c]。
圖2為本申請(qǐng)一實(shí)施例中的根據(jù)所述依賴信息確定當(dāng)前業(yè)務(wù)中的各模塊的次序的步驟的方法的流程圖。基于上述步驟,該步驟S130具體包括:
S1301:判斷所述依賴信息列表中是否存在多余的模塊標(biāo)識(shí)。
沿用上述例子,得到的依賴信息列表中的模塊順序是:[a,b,c,d,b,e,c],可見,該依賴信息列表中存在多余的模塊標(biāo)識(shí):b、c,也就是說(shuō),一個(gè)模塊標(biāo)識(shí)在依賴信息列表中只能出現(xiàn)一次。
S1302:若是,將所述多余的模塊標(biāo)識(shí)進(jìn)行刪除。
在上述例子中,將多余的模塊標(biāo)識(shí):b、c作刪除處理,得到刪除后的依賴信息列表中的模塊順序是:[a,d,b,e,c]。
S1303:將刪除所述多余的模塊標(biāo)識(shí)的所述依賴信息列表中的模塊標(biāo)識(shí)的順序進(jìn)行倒序排列,將倒序排列后的模塊標(biāo)識(shí)的順序確定為當(dāng)前業(yè)務(wù)中的各模塊的次序。
在上述例子中,由于最終合并生成的代碼文件中,被依賴的模塊代碼需要置于代碼文件中靠前的位置,故,本實(shí)施例可以對(duì)上述刪除后的依賴信息列表中的模塊順序:[a,d,b,e,c]作倒序排列,并將倒序排列后的模塊標(biāo)識(shí)的順序:[c,e,b,d,a]確定為當(dāng)前業(yè)務(wù)中的各模塊的次序。
最終可以根據(jù)上述當(dāng)前業(yè)務(wù)中的各模塊的次序?qū)Σ樵兊玫降哪K代碼進(jìn)行合并,得到與當(dāng)前業(yè)務(wù)對(duì)應(yīng)的代碼文件。
舉例而言,若模塊a的模塊代碼是:
/*global b*/
//依賴b
function a(settings){
…
}
若模塊b的模塊代碼是:
/*global c*/
//依賴c
function b(settings){
…
}
若模塊c的模塊代碼是:
function c(settings){
…
}
若模塊d的模塊代碼是:
/*global b*/
//依賴b
function d(settings){
…
}
若模塊e的模塊代碼是:
/*global c*/
//依賴c
function e(settings){
…
}
則按照上述確定為當(dāng)前業(yè)務(wù)中的各模塊的次序,將上述各模塊代碼進(jìn)行合并后,得到最終的代碼文件是:
function c(settings){
…
}
/*global c*/
//依賴c
function e(settings){
…
}
/*global c*/
//依賴c
function b(settings){
…
}
/*global b*/
//依賴b
function d(settings){
…
}
/*global b*/
//依賴b
function a(settings){
…
}
值得述及的是,上述當(dāng)前業(yè)務(wù)中的各模塊的次序并不是唯一的,部分不存在相互依賴關(guān)系的模塊之間的次序可以顛倒,如:在[c,e,b,d,a]中,a和e的次序可以相互對(duì)調(diào)。此外,在實(shí)際應(yīng)用中,可能存在某個(gè)模塊與其他模塊并不存在任何依賴關(guān)系(該模塊的模塊代碼中也不包含依賴信息),則在最終合并代碼文件的過(guò)程中,可以將該沒有依賴關(guān)系的模塊代碼插置于最終合并得到的代碼文件中的任意位置。
本申請(qǐng)另一實(shí)施例中,在沒有上述步驟S140的前提下,上述步驟S130中的根據(jù)所述依賴信息確定當(dāng)前業(yè)務(wù)中的各模塊的次序的步驟,如圖3所示,具 體包括:
S1304:根據(jù)所述依賴信息,確定被依賴模塊的第一模塊標(biāo)識(shí)和依賴模塊的第二模塊標(biāo)識(shí)。
繼續(xù)沿用上述例子,若當(dāng)前業(yè)務(wù)X包含的模塊是{a、b、c、d、e},并通過(guò)提取各模塊代碼中的依賴信息可以得到下述依賴關(guān)系:a依賴于b,b依賴于c,d依賴于b,e依賴于c。其中,被依賴模塊包括:b、c,依賴模塊包括:a、b、d、e。
S1305:判斷預(yù)設(shè)的次序表中是否存在所述第一模塊標(biāo)識(shí)或所述第二模塊標(biāo)識(shí)。
本實(shí)施例中,系統(tǒng)預(yù)先設(shè)置一個(gè)次序表,以依次將確定的存在依賴關(guān)系的模塊標(biāo)識(shí)插入到該次序表中。
S1306:若存在所述第一模塊標(biāo)識(shí)而不存在所述第二模塊標(biāo)識(shí),則將所述第二模塊標(biāo)識(shí)置于所述第一模塊標(biāo)識(shí)之后。
S1307:若存在所述第二模塊標(biāo)識(shí)而不存在所述第一模塊標(biāo)識(shí),則將所述第一模塊標(biāo)識(shí)置于所述第二模塊標(biāo)識(shí)之前。
通過(guò)上述步驟S1306和步驟S1307,上述次序表中的模塊標(biāo)識(shí)的插入順序如下:
起初,次序表為空,“a依賴于b”中的被依賴模塊是b,依賴模塊是a,則按照被依賴模塊在前、依賴模塊在后的次序插入到次序表中,得到次序表:
[b、a];
隨后,對(duì)于“b依賴于c”,被依賴模塊是c,依賴模塊是b,通過(guò)判斷,可以發(fā)現(xiàn)上述次序表中已經(jīng)存在b(符合步驟S1307的情況),則將模塊c插置于模塊b之前,得到次序表:
[c、b、a];
對(duì)于“d依賴于b”,被依賴模塊是b,依賴模塊是d,通過(guò)判斷,可以發(fā)現(xiàn)上述次序表中已經(jīng)存在b(符合步驟S1306的情況),則將模塊d插置于模塊 b之后,得到次序表:
[c、b、d、a];
對(duì)于“e依賴于c”,被依賴模塊是c,依賴模塊是e,通過(guò)判斷,可以發(fā)現(xiàn)上述次序表中已經(jīng)存在c(符合步驟S1306的情況),則將模塊e插置于模塊c之后,得到次序表:
[c、e、b、d、a]。
至此,按照上述過(guò)程可以確定最終的次序表中的模塊標(biāo)識(shí)的順序?yàn)楫?dāng)前業(yè)務(wù)對(duì)應(yīng)的各模塊的次序。則,依據(jù)所述次序表中包含的模塊標(biāo)識(shí)的次序合并所述模塊代碼,得到與所述當(dāng)前業(yè)務(wù)對(duì)應(yīng)的代碼文件。
本申請(qǐng)實(shí)施例中,為了使得最終合并得到的代碼文件更為精簡(jiǎn),還包括:
確定合并后的所述模塊代碼中包含的注釋信息并刪除。所述注釋信息包括但不限于:用于描述依賴關(guān)系的注釋等,例如:“//依賴extend”。
與上述方法流程對(duì)應(yīng)的,本申請(qǐng)的實(shí)施例還提供了一種代碼處理的裝置。該裝置可以通過(guò)軟件實(shí)現(xiàn),也可以通過(guò)硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為邏輯意義上的裝置,是通過(guò)服務(wù)器的中央處理器(Central Process Unit,CPU)將對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。
圖4為本申請(qǐng)一實(shí)施例提供的代碼處理的裝置的模塊示意圖。其中,該裝置中各單元的功能與上述方法中各步驟的功能類似,故該裝置可以參照上述方法實(shí)施例的具體內(nèi)容。該裝置包括:
獲取單元401,用于獲取與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊代碼;
提取單元402,用于提取所述模塊代碼中包含的依賴信息;
確定單元403,用于根據(jù)所述依賴信息確定當(dāng)前業(yè)務(wù)中的各模塊的次序,并依據(jù)所述模塊的次序合并所述模塊代碼,得到與所述當(dāng)前業(yè)務(wù)對(duì)應(yīng)的代碼文件。
如圖4的所示的裝置,本申請(qǐng)實(shí)施例中,該裝置還包括:
存儲(chǔ)單元,用于根據(jù)模塊之間的依賴關(guān)系,在各模塊的模塊代碼中添加與 依賴關(guān)系對(duì)應(yīng)的依賴信息;將各模塊的模塊代碼與該模塊的模塊標(biāo)識(shí)進(jìn)行映射并存儲(chǔ);
則,所述獲取單元401具體用于:
接收用戶輸入的與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊標(biāo)識(shí);
根據(jù)所述模塊標(biāo)識(shí)查詢到與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊代碼。
如圖4的所示的裝置,本申請(qǐng)實(shí)施例中,該裝置還包括:
列表生成單元,用于根據(jù)提取的依賴信息確定與當(dāng)前業(yè)務(wù)對(duì)應(yīng)的依賴信息列表;
則,所述確定單元403具體包括:
第一判斷單元,用于判斷所述依賴信息列表中是否存在多余的模塊標(biāo)識(shí);
刪除單元,若所述依賴信息列表中存在多余的模塊標(biāo)識(shí)時(shí),將所述多余的模塊標(biāo)識(shí)進(jìn)行刪除;
次序確定單元,用于將刪除所述多余的模塊標(biāo)識(shí)的所述依賴信息列表中的模塊標(biāo)識(shí)的順序進(jìn)行倒序排列,將倒序排列后的模塊標(biāo)識(shí)的順序確定為當(dāng)前業(yè)務(wù)中的各模塊的次序。
如圖4的所示的裝置,本申請(qǐng)實(shí)施例中,所述確定單元403具體包括:
依賴確定單元,用于根據(jù)所述依賴信息,確定被依賴模塊的第一模塊標(biāo)識(shí)和依賴模塊的第二模塊標(biāo)識(shí);
第二判斷單元,用于判斷預(yù)設(shè)的次序表中是否存在所述第一模塊標(biāo)識(shí)或所述第二模塊標(biāo)識(shí);
排序單元,用于在次序表中存在所述第一模塊標(biāo)識(shí)而不存在所述第二模塊標(biāo)識(shí)時(shí),將所述第二模塊標(biāo)識(shí)置于所述第一模塊標(biāo)識(shí)之后;在次序表中存在所述第二模塊標(biāo)識(shí)而不存在所述第一模塊標(biāo)識(shí)時(shí),將所述第一模塊標(biāo)識(shí)置于所述第二模塊標(biāo)識(shí)之前;依據(jù)所述次序表中包含的模塊標(biāo)識(shí)的次序合并所述模塊代碼,得到與所述當(dāng)前業(yè)務(wù)對(duì)應(yīng)的代碼文件。
如圖4的所示的裝置,本申請(qǐng)實(shí)施例中,該裝置還包括:
注釋刪除單元,用于確定合并后的所述模塊代碼中包含的注釋信息并刪除。
由以上本申請(qǐng)實(shí)施例提供的技術(shù)方案可見,本申請(qǐng)實(shí)施例通過(guò)在獲取到與當(dāng)前業(yè)務(wù)包含的模塊對(duì)應(yīng)的模塊代碼之后,提取所述模塊代碼中包含的依賴信息,并根據(jù)所述依賴信息確定當(dāng)前業(yè)務(wù)中的各模塊的次序,最終依據(jù)所述次序?qū)⑺瞿K代碼進(jìn)行合并,得到與所述當(dāng)前業(yè)務(wù)對(duì)應(yīng)的代碼文件。以上過(guò)程中,避免通過(guò)引入特定的代碼依賴框架來(lái)解決各模塊的依賴問(wèn)題,從而使得最終合并得到的代碼文件更為精簡(jiǎn)。
上述實(shí)施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來(lái)實(shí)現(xiàn)。
為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中 的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè) 備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說(shuō)明即可。
以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。