本申請(qǐng)涉及計(jì)算機(jī)
技術(shù)領(lǐng)域:
,尤其涉及一種數(shù)據(jù)處理的方法及系統(tǒng)。
背景技術(shù):
:線程(Thread),有時(shí)被稱為輕量級(jí)進(jìn)程(LightweightProcess,LWP),是程序執(zhí)行流的最小單元。線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部系統(tǒng)資源(例如,CPU和內(nèi)存)。一個(gè)線程可以創(chuàng)建和撤消另一個(gè)線程,同一進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行。在一個(gè)程序中,可以定義多個(gè)線程并發(fā),每個(gè)線程可以執(zhí)行不同的任務(wù)。例如,某一程序有兩個(gè)線程并發(fā)執(zhí)行。線程1要執(zhí)行{y=1;x=y(tǒng);}//將數(shù)值1賦予變量y;將變量y的數(shù)值賦予變量x。線程2要執(zhí)行{y=2;y=3;}//將數(shù)值2賦予變量y;將數(shù)值3賦予變量y。假設(shè)它們按如下時(shí)間順序執(zhí)行:TimeThread1Thread20y=11y=22x=y(tǒng)3y=3執(zhí)行的結(jié)果為x=2,y=3。與先執(zhí)行線程1,后執(zhí)行線程2得到的結(jié)果x=1,y=3不同。為了解決這種多個(gè)線程對(duì)同一塊內(nèi)存的數(shù)據(jù)訪問時(shí)的沖突,現(xiàn)有技術(shù)中采用鎖機(jī)制?,F(xiàn)有技術(shù)的鎖機(jī)制,通過給某一線程處理的內(nèi)存數(shù)據(jù)加鎖,在加鎖期間禁止其它進(jìn)程的寫操作,從而避免數(shù)據(jù)訪問的沖突問題。例如,上述例子中,現(xiàn)有技術(shù)將線程1處理期間涉及的內(nèi)存數(shù)據(jù)進(jìn)行鎖定;直至線程1執(zhí)行完畢,線程1執(zhí)行完畢后解除鎖定。然后再執(zhí)行線程2。類似的,線程2執(zhí)行加鎖處理,直至線程2執(zhí)行完畢。類似的,多個(gè)線程對(duì)同一塊內(nèi)存的文件訪問也存在沖突的問題。在實(shí)現(xiàn)現(xiàn)有技術(shù)過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題:現(xiàn)有技術(shù)線程處理中的鎖機(jī)制,將對(duì)內(nèi)存數(shù)據(jù)的處理鎖定在當(dāng)前執(zhí)行操作的線程,而其它需要對(duì)同一內(nèi)存數(shù)據(jù)排隊(duì)執(zhí)行的線程,需要一直等待,直至前一線程對(duì)該內(nèi)存數(shù)據(jù)的處理執(zhí)行完畢。這樣,現(xiàn)有技術(shù)中的鎖機(jī)制導(dǎo)致不同線程對(duì)同一內(nèi)存數(shù)據(jù)不能并行處理,線程的等待消耗大量時(shí)間,從而導(dǎo)致數(shù)據(jù)處理效率低。技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)處理效率高的方法,具體的,一種數(shù)據(jù)處理的方法,包括以下步驟:按照拆分規(guī)則,拆分待處理文件形成若干子文件;啟動(dòng)預(yù)設(shè)數(shù)量的線程,根據(jù)線程加載規(guī)則,調(diào)度第一線程加載并處理第一子文件;判斷第一線程的當(dāng)前狀態(tài)是否為就緒或阻塞狀態(tài);如果第一線程的當(dāng)前狀態(tài)是就緒或阻塞狀態(tài),調(diào)度第一線程釋放第一子文件,調(diào)度第一線程加載并處理第二子文件。本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)處理的方法,包括以下步驟:?jiǎn)?dòng)預(yù)設(shè)數(shù)量的線程,根據(jù)線程加載規(guī)則,調(diào)度第一線程加載并處理第一子文件;判斷第一線程的當(dāng)前狀態(tài)是否為就緒或阻塞狀態(tài);如果第一線程的當(dāng)前狀態(tài)是就緒或阻塞狀態(tài),調(diào)度第一線程釋放第一子文 件,調(diào)度第一線程加載并處理第二子文件。本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)處理的系統(tǒng),包括:拆分模塊,用于按照拆分規(guī)則,拆分待處理文件形成若干子文件;調(diào)度模塊,用于:?jiǎn)?dòng)預(yù)設(shè)數(shù)量的線程,根據(jù)線程加載規(guī)則,調(diào)度第一線程加載并處理第一子文件;判斷第一線程的當(dāng)前狀態(tài)是否為就緒或阻塞狀態(tài);如果第一線程的當(dāng)前狀態(tài)是就緒或阻塞狀態(tài),調(diào)度第一線程釋放第一子文件,調(diào)度第一線程加載并處理第二子文件。本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)處理的系統(tǒng),包括:調(diào)度模塊,用于:?jiǎn)?dòng)預(yù)設(shè)數(shù)量的線程,根據(jù)線程加載規(guī)則,調(diào)度第一線程加載并處理第一子文件;判斷第一線程的當(dāng)前狀態(tài)是否為就緒或阻塞狀態(tài);如果第一線程的當(dāng)前狀態(tài)是就緒或阻塞狀態(tài),調(diào)度第一線程釋放第一子文件,調(diào)度第一線程加載并處理第二子文件。本申請(qǐng)實(shí)施例提供的數(shù)據(jù)處理的方法和系統(tǒng),至少具有如下有益效果:如果第一線程的當(dāng)前狀態(tài)是就緒或阻塞狀態(tài),調(diào)度第一線程釋放第一子文件,調(diào)度第一線程加載并處理第二子文件,從而減少了第一線程的閑置,提高了線程的利用率,進(jìn)而提高了數(shù)據(jù)處理效率。附圖說明此處所說明的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:圖1為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)處理的方法的流程圖。圖2為本申請(qǐng)實(shí)施例提供的將待處理文件依照預(yù)設(shè)字符長度拆分為若干子文件的流程圖。圖3為本申請(qǐng)實(shí)施例提供的另一種數(shù)據(jù)處理的方法的流程圖。圖4為本申請(qǐng)實(shí)施例提供的是服務(wù)器與客戶端通訊的工作流程圖。圖5為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)處理的系統(tǒng)的結(jié)構(gòu)示意圖。具體實(shí)施方式為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。圖1為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)處理的方法的流程圖,具體包括以下步驟:S100:按照拆分規(guī)則,拆分待處理文件形成若干子文件。在本申請(qǐng)實(shí)施例中,系統(tǒng)將待處理文件根據(jù)文件自身的結(jié)構(gòu)拆分為若干子文件。例如,對(duì)于待處理文件具有章節(jié)目錄或章節(jié)標(biāo)記等結(jié)構(gòu)標(biāo)識(shí),根據(jù)結(jié)構(gòu)標(biāo)識(shí),系統(tǒng)將待處理文件拆分為若干子文件?;蛘?,對(duì)于待處理文件具有列表形式時(shí),根據(jù)列表中的行標(biāo)簽和/或列標(biāo)簽,系統(tǒng)將待處理文件拆分為若干子文件。該種根據(jù)待處理文件自身的結(jié)構(gòu)拆分待處理文件的拆分方法,拆分得到的子文件完整度高,便于后續(xù)處理。在本申請(qǐng)?zhí)峁┑牧硪环N實(shí)施方式中,還可以根據(jù)文件內(nèi)容的長度將待處理文件拆分為若干子文件。進(jìn)一步的,當(dāng)拆分出來的文件不完整時(shí),在本申請(qǐng)?zhí)峁┑牧硪环N實(shí)施方式中可以包括以下步驟,請(qǐng)參見圖2,具體的:S101:將待處理文件依照預(yù)設(shè)字符長度拆分為若干中間文件。系統(tǒng)將待處理文件依照預(yù)設(shè)字符長度拆分為若干中間文件。例如,每4096個(gè)字符,拆分成一個(gè)中間文件。S102:校驗(yàn)中間文件的首末位,當(dāng)首位不是適格的首位時(shí),向前延伸一定數(shù)量的字符,從中找到適格的首位;當(dāng)末位不是適格的末位時(shí),向后延伸一定數(shù)量的字符,從中找到適格的末位;S103:設(shè)定中間文件適格的首末位為子文件的首末位形成子文件。首先,系統(tǒng)將待處理文件依照預(yù)設(shè)字符長度拆分為若干中間文件。然后,系統(tǒng)對(duì)中間文件的首末位進(jìn)行校驗(yàn)。當(dāng)首位不是適格的首位時(shí),系統(tǒng)向前延伸一定數(shù)量的字符,從中找到適格的首位;當(dāng)末位不是適格的末位時(shí),系統(tǒng)向后延伸一定數(shù)量的字符,從中找到適格的末位。該種依照預(yù)設(shè)字符長度拆分待處理文件的方法,適用于文件無固定格式的情形,直接按照字符的長度拆分,拆分效率高。在本申請(qǐng)?zhí)峁┑囊环N實(shí)施例中,系統(tǒng)定位到中間文件的首位,向前查找一個(gè)字符,判斷該字符是否為句號(hào)、段落標(biāo)記、制表符、省略號(hào)等適格的末位,當(dāng)該字符不是適格的末位時(shí),則向前延伸一定數(shù)量的字符,從中找到適格的末位,然后將適格的末位的下一個(gè)字符作為適格的首位。系統(tǒng)定位到中間文件的末位,判斷該字符是否為句號(hào)、段落標(biāo)記、制表符、省略號(hào)等適格的末位,當(dāng)該字符不是適格的末位時(shí),則向后延伸一定數(shù)量的字符,從中找到適格的末位。設(shè)定中間文件適格的首末位為子文件的首末位形成子文件。S200:?jiǎn)?dòng)預(yù)設(shè)數(shù)量的線程,根據(jù)線程加載規(guī)則,調(diào)度第一線程加載并處理第一子文件。系統(tǒng)啟動(dòng)預(yù)設(shè)數(shù)量的線程。系統(tǒng)在執(zhí)行程序時(shí),都至少有一個(gè)通常稱之為主線程的線程在執(zhí)行。主線程可以創(chuàng)建出另外的線程。創(chuàng)建多線程的方法可以有繼承Thread類、實(shí)現(xiàn)Runnable接口兩種方式。系統(tǒng)通過繼承Thread類、實(shí)現(xiàn)Runnable接口兩種方式,啟動(dòng)預(yù)設(shè)數(shù)量的線程。啟動(dòng)預(yù)設(shè)數(shù)量的線程后,根據(jù)線程加載規(guī)則,系統(tǒng)調(diào)度第一線程加載并處 理第一子文件。具體的,系統(tǒng)通過調(diào)度模塊20來協(xié)調(diào)、管理線程之間的調(diào)度和執(zhí)行任務(wù)。調(diào)度模塊20調(diào)度第一線程執(zhí)行任務(wù),根據(jù)線程加載規(guī)則,第一線程可以使用RandomAccessFile的seek函數(shù)直接定位到第一子文件的起點(diǎn)位置加載第一子文件。應(yīng)當(dāng)指出的是,線程隨機(jī)加載子文件是本申請(qǐng)實(shí)施例提供的一種線程加載規(guī)則,不應(yīng)當(dāng)理解為對(duì)本申請(qǐng)保護(hù)范圍的實(shí)質(zhì)性限縮。基于實(shí)際情形,本申請(qǐng)?jiān)趯?shí)施時(shí),還可以設(shè)定子文件的優(yōu)先級(jí),由線程根據(jù)優(yōu)先級(jí)順序依次加載子文件。當(dāng)然,基于實(shí)際情形,采用其他合理的線程加載規(guī)則,使線程加載子文件也是可以的。S300:判斷第一線程的當(dāng)前狀態(tài)是否為就緒或阻塞狀態(tài)。第一線程可以具有新線程態(tài)(newthread)、就緒(runnable)、運(yùn)行(running)、阻塞(blocked)、死亡態(tài)(dead)五種狀態(tài)。其中,當(dāng)線程處于新線程態(tài)時(shí),僅僅是一個(gè)空線程對(duì)象,它還沒有分配到系統(tǒng)資源,因此只能啟動(dòng)或終止它,任何其他操作都會(huì)引發(fā)異常。就緒狀態(tài)下,第一線程什么時(shí)候運(yùn)行取決調(diào)度模塊20將系統(tǒng)資源分配給第一線程。運(yùn)行狀態(tài)下,第一線程獲得了調(diào)度模塊20分配的系統(tǒng)資源進(jìn)行任務(wù)的處理,可以包括這里的第一子文件的處理。阻塞狀態(tài)下,第一線程在等待一個(gè)事件(如某個(gè)信號(hào)量),邏輯上不可執(zhí)行。在就緒或阻塞兩種狀態(tài)下,第一子文件處于待處理狀態(tài);而在運(yùn)行狀態(tài)下,第一子文件處于在處理狀態(tài)。當(dāng)線程處于死亡態(tài)時(shí),終止處理所有任務(wù)。因此,通??梢钥紤]線程處于就緒(runnable)、運(yùn)行(running)、阻塞(blocked)三種基本狀態(tài)。調(diào)度模塊20可以根據(jù)對(duì)線程的調(diào)度記錄確定第一線程當(dāng)前的狀態(tài)。S400:如果第一線程的當(dāng)前狀態(tài)是就緒或阻塞狀態(tài),調(diào)度第一線程釋放第一子文件,調(diào)度第一線程加載并處理第二子文件。當(dāng)?shù)谝痪€程的處于就緒或阻塞狀態(tài)時(shí),系統(tǒng)調(diào)度第一線程釋放第一子文件,調(diào)度第一線程加載并處理第二子文件,從而減少了第一線程的閑置,提高了線程的利用率,進(jìn)而提高了數(shù)據(jù)處理效率。請(qǐng)參見圖3,為本申請(qǐng)實(shí)施例的一種替代實(shí)施方式,不同之處在于,按照拆分規(guī)則,拆分待處理文件形成若干子文件由客戶端的計(jì)算機(jī)完成,或者,由第三方的計(jì)算機(jī)完成。輸入/輸出阻塞是線程阻塞的一個(gè)原因。請(qǐng)參照?qǐng)D4,是服務(wù)器與客戶端通訊的工作流程圖。服務(wù)器打開端口,接收客戶端發(fā)出的連接請(qǐng)求,接收連接請(qǐng)求后與客戶端建立連接,讀取客戶端的業(yè)務(wù)請(qǐng)求,對(duì)業(yè)務(wù)請(qǐng)求做出處理并發(fā)出響應(yīng),完成后關(guān)閉端口。其中,接收連接、讀取請(qǐng)求、發(fā)出響應(yīng)時(shí),均可能會(huì)發(fā)生輸入/輸出阻塞。如,沒有收到連接請(qǐng)求、沒有收到客戶端的業(yè)務(wù)請(qǐng)求、沒有收到客戶端的接收響應(yīng)請(qǐng)求導(dǎo)致線程在處理客戶端的請(qǐng)求時(shí)發(fā)生阻塞,同時(shí),沒有收到連接請(qǐng)求還會(huì)導(dǎo)致后續(xù)的讀取客戶端的業(yè)務(wù)請(qǐng)求、對(duì)業(yè)務(wù)請(qǐng)求做出處理并發(fā)出響應(yīng)的阻塞。在本申請(qǐng)?zhí)峁┑挠忠粚?shí)施例中,服務(wù)器設(shè)有調(diào)度模塊20,用于協(xié)調(diào)各個(gè)線程。調(diào)度模塊20記載有各線程加載文件、處理文件、釋放文件的事件及記錄。當(dāng)有線程處于就緒或阻塞狀態(tài)時(shí),將該線程加載其他文件并進(jìn)行處理,從而提高了線程的利用率。進(jìn)一步的,在該實(shí)施例中,將文件按照文件自身的結(jié)構(gòu)和/或預(yù)設(shè)字符長度進(jìn)行拆分,可以利用不同的線程處理同一文件下的子文件,不僅從整體上提高了所有文件處理的效率,而且提高了單一文件處理的效率。以上是本申請(qǐng)實(shí)施例提供的數(shù)據(jù)處理的方法,基于同樣的思路,請(qǐng)參照?qǐng)D5,本申請(qǐng)還提供一種數(shù)據(jù)處理的系統(tǒng)1,包括:拆分模塊10,用于按照拆分規(guī)則,拆分待處理文件形成若干子文件;調(diào)度模塊20,用于:?jiǎn)?dòng)預(yù)設(shè)數(shù)量的線程,根據(jù)線程加載規(guī)則,調(diào)度第一線程加載并處理第一子文件;判斷第一線程的當(dāng)前狀態(tài)是否為就緒或阻塞狀態(tài);如果第一線程的當(dāng)前狀態(tài)是就緒或阻塞狀態(tài),調(diào)度第一線程釋放第一子文件,調(diào)度第一線程加載并處理第二子文件。在本申請(qǐng)?zhí)峁┑挠忠粚?shí)施例中,拆分模塊10,用于按照拆分規(guī)則,拆分待處理文件形成若干子文件,具體用于:將待處理文件根據(jù)文件自身的結(jié)構(gòu)拆分為若干子文件。在本申請(qǐng)?zhí)峁┑挠忠粚?shí)施例中,拆分模塊10,用于按照拆分規(guī)則,拆分待處理文件形成若干子文件,具體用于:將待處理文件依照預(yù)設(shè)長度拆分為若干子文件。在本申請(qǐng)?zhí)峁┑挠忠粚?shí)施例中,拆分模塊10,用于將待處理文件依照預(yù)設(shè)長度拆分為若干子文件,具體還用于:將待處理文件依照預(yù)設(shè)長度拆分為若干中間文件;校驗(yàn)中間文件的首末位,當(dāng)首位不是適格的首位時(shí),向前延伸一定數(shù)量的字符,從中找到適格的首位;當(dāng)末位不是適格的末位時(shí),向后延伸一定數(shù)量的字符,從中找到適格的末位;設(shè)定中間文件適格的首末位為子文件的首末位形成子文件。在本申請(qǐng)?zhí)峁┑挠忠粚?shí)施例中,拆分模塊10,用于按照拆分規(guī)則,拆分待處理文件形成若干子文件,具體用于:拆分待處理文件形成若干子文件,每一個(gè)子文件有記錄其起點(diǎn)位置和終點(diǎn)位置的字段。在本申請(qǐng)?zhí)峁┑挠忠粚?shí)施例中,加載模塊20,用于使線程加載子文件,具體用于:使線程使用RandomAccessFile的seek函數(shù)直接定位到子文件的起點(diǎn)位置加載子文件。本申請(qǐng)還提供一種數(shù)據(jù)處理的系統(tǒng)1,包括:加載模塊20,用于啟動(dòng)預(yù)設(shè)數(shù)量的線程,根據(jù)線程加載規(guī)則,使線程加載子文件;處理模塊30,用于當(dāng)子文件處于可處理狀態(tài)時(shí),線程處理該子文件,否則,線程釋放該子文件。本領(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)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)值處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)值處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)值處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)值處理設(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)或閃存(flashRAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任 何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)值結(jié)構(gòu)、程序的模塊或其他數(shù)值。計(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è)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)值信號(hào)和載波。還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(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)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。當(dāng)前第1頁1 2 3