本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種文件壓縮方法、文件解壓縮方法、裝置及服務(wù)器。
背景技術(shù):目前,現(xiàn)有的GZIP(GNUZip)壓縮方法中,先將文件拆分成多個(gè)數(shù)據(jù)塊,然后對(duì)拆分后的多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮,之后,在以bit為單位將壓縮的每個(gè)數(shù)據(jù)塊合并為一個(gè)壓縮文件。由該GZIP壓縮方法可知,整個(gè)GZIP壓縮文件只有壓縮數(shù)據(jù)塊的起始地址,并沒(méi)有壓縮數(shù)據(jù)的數(shù)據(jù)塊數(shù)和每個(gè)數(shù)據(jù)塊的長(zhǎng)度。所以,在對(duì)應(yīng)的GZIP解壓縮方法中,即對(duì)所述壓縮文件進(jìn)行解壓縮時(shí),只能順序的一個(gè)個(gè)bit進(jìn)行讀取和解析,也就是說(shuō),只有對(duì)所述壓縮文件中的第一個(gè)壓縮數(shù)據(jù)塊解壓縮完成后,才能對(duì)第二個(gè)壓縮數(shù)據(jù)塊進(jìn)行解壓,即,只能對(duì)一個(gè)一個(gè)數(shù)據(jù)塊進(jìn)行串行解壓?,F(xiàn)有的GZIP解壓縮方式中,只能對(duì)壓縮文件進(jìn)行串行解壓縮,解壓縮的速度和效率不高。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例中提供了一種文件壓縮方法、文件解壓縮的方法、裝置及服務(wù)器,數(shù)據(jù)的并行解壓提高解壓縮的速度和效率。為了解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例公開(kāi)了如下技術(shù)方案:第一方面提供了一種文件壓縮方法,包括:將文件拆分成多個(gè)數(shù)據(jù)塊,并統(tǒng)計(jì)所述數(shù)據(jù)塊的個(gè)數(shù);根據(jù)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù)計(jì)算需要擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度,并根據(jù)所述長(zhǎng)度申請(qǐng)額外可選項(xiàng)占用的內(nèi)存;對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮,得到對(duì)應(yīng)的多個(gè)壓縮數(shù)據(jù)塊,并獲取各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;將所述擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)、各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊 的CRC值存儲(chǔ)在所述額外可選項(xiàng)中;將所述額外可選項(xiàng)添加到數(shù)據(jù)壓縮格式中頭部對(duì)應(yīng)的擴(kuò)展extra選項(xiàng)中,合并所述多個(gè)壓縮數(shù)據(jù)塊,以獲得壓縮文件;將所述壓縮文件發(fā)送給接收端,以便于接收端對(duì)所述壓縮文件進(jìn)行并行解壓。在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮,具體包括:通過(guò)多個(gè)壓縮引擎分別對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮。結(jié)合第一方面或第一方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述額外可選項(xiàng)還包括:SI1和SI2,其中,所述SI1和SI2表示額外可選項(xiàng)中擴(kuò)展數(shù)據(jù)的ID。第二方面提供了一種文件解壓縮方法,包括:獲取壓縮文件中各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;根據(jù)所述壓縮數(shù)據(jù)塊的長(zhǎng)度和數(shù)據(jù)塊的個(gè)數(shù)對(duì)所述壓縮文件進(jìn)行分塊,得到各個(gè)壓縮數(shù)據(jù)塊;對(duì)所述各個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮,得到對(duì)應(yīng)的各個(gè)數(shù)據(jù)塊;計(jì)算解壓縮得到的所述各個(gè)數(shù)據(jù)塊的CRC值;判斷獲取的所述各個(gè)數(shù)據(jù)塊的CRC值與解壓縮得到的各個(gè)數(shù)據(jù)塊的CRC值是否相同;在所述各個(gè)數(shù)據(jù)塊的CRC值與解壓縮得到的各個(gè)數(shù)據(jù)塊的CRC值相同時(shí),合并解壓縮得到的所述各個(gè)數(shù)據(jù)塊,得到原文件。在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述獲取壓縮文件中各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值具體包括:從壓縮文件頭部擴(kuò)展extra選項(xiàng)中的額外可選項(xiàng)中獲取各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值。結(jié)合第二方面或第二方面第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述對(duì)所述各個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮,具體包括:通過(guò)多個(gè)解壓縮引擎分別對(duì)所述多個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮。第三方面提供了一種文件壓縮裝置,包括:拆分單元,用于將文件拆分成多個(gè)數(shù)據(jù)塊,并統(tǒng)計(jì)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù);第一計(jì)算單元,用于根據(jù)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù)計(jì)算擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度,根據(jù)所述長(zhǎng)度申請(qǐng)額外可選項(xiàng)占用的內(nèi)存;壓縮單元,用于對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮,得到多個(gè)壓縮數(shù)據(jù)塊;第二計(jì)算單元,用于在壓縮單元對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮時(shí),分別計(jì)算各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;存儲(chǔ)單元,用于所述擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)、各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊的CRC值存儲(chǔ)在額外可選項(xiàng)中;添加單元,用于將所述額外可選項(xiàng)添加到壓縮格式中頭部對(duì)應(yīng)的擴(kuò)展extra選項(xiàng)中;合并單元,用于在所述添加單元將所述額外可選項(xiàng)添加到GZIP格式中頭部對(duì)應(yīng)的位置后,合并所述多個(gè)壓縮數(shù)據(jù)塊,得到壓縮文件;發(fā)送單元,用于將所述壓縮文件發(fā)送給接收端,以便于接收端對(duì)所述壓縮文件進(jìn)行并行解壓。第四方面提供了一種文件解壓縮裝置,包括:獲取單元,用于從壓縮文件頭部的額外可選項(xiàng)中獲取各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;劃分單元,用于根據(jù)所述壓縮數(shù)據(jù)塊的長(zhǎng)度和數(shù)據(jù)塊的個(gè)數(shù)對(duì)所述壓縮文件進(jìn)行分塊,得到各個(gè)壓縮數(shù)據(jù)塊;解壓縮單元,用于對(duì)所述各個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮,得到對(duì)應(yīng)的各個(gè)數(shù)據(jù)塊;計(jì)算單元,用于在解壓縮單元對(duì)所述各個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮時(shí),計(jì)算解壓縮得到的所述各個(gè)數(shù)據(jù)塊的CRC值;判斷單元,用于判斷所述獲取單元獲取的所述各個(gè)數(shù)據(jù)塊的CRC值與計(jì)算解壓縮得到的各個(gè)數(shù)據(jù)塊的CRC值是否相同;確定單元,用于在判斷單元判斷CRC值相同時(shí),確定所述數(shù)據(jù)塊與原數(shù)據(jù)塊一致;合并單元,用于在所述確定單元合確定所述數(shù)據(jù)塊與原數(shù)據(jù)塊一致時(shí),合并解壓縮得到的所述各個(gè)數(shù)據(jù)塊,得到原文件。在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述獲取單元,具體用于從壓縮文件頭部擴(kuò)展extra選項(xiàng)中的額外可選項(xiàng)中獲取各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值。第五方面提供了一種服務(wù)器,包括:處理器,用于將待壓縮的文件拆分成多個(gè)數(shù)據(jù)塊,并統(tǒng)計(jì)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù);根據(jù)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù)計(jì)算擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度,以及根據(jù)所述長(zhǎng)度申請(qǐng)額外可選項(xiàng)占用的內(nèi)存;壓縮引擎組,包括多個(gè)壓縮引擎,用于對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮,得到多個(gè)壓縮數(shù)據(jù)塊;所述處理器,還用于計(jì)算各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值,并將所述擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)、各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊的CRC值存儲(chǔ)在額外可選項(xiàng)中;以及將所述額外可選項(xiàng)添加到GZIP格式中頭部對(duì)應(yīng)的擴(kuò)展extra選項(xiàng)中,合并所述多個(gè)壓縮數(shù)據(jù)塊,得到壓縮文件,并將所述壓縮文件發(fā)送給接收端,以便于接收端對(duì)所述壓縮文件進(jìn)行并行解壓。第六方面提供了一種服務(wù)器,包括:處理器,用于從壓縮文件頭部的額外可選項(xiàng)中獲取各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;根據(jù)所述壓縮數(shù)據(jù)塊的長(zhǎng)度和數(shù)據(jù)塊的個(gè)數(shù)對(duì)所述壓縮文件進(jìn)行分塊,得到各個(gè)壓縮數(shù)據(jù)塊;解壓縮引擎組,用于對(duì)所述各個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮,得到對(duì)應(yīng)的各個(gè)數(shù)據(jù)塊;所述處理器,還用于計(jì)算解壓縮得到的所述各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;如果判斷獲取的所述各個(gè)數(shù)據(jù)塊的CRC值與解壓縮得到的各個(gè)數(shù)據(jù)塊的CRC值相同,則所述數(shù)據(jù)塊與原數(shù)據(jù)塊一致;合并解壓縮得到的所述各個(gè)數(shù)據(jù)塊,得到原文件。由上述技術(shù)方案可知,本發(fā)明實(shí)施例中,在對(duì)文件進(jìn)行壓縮時(shí),將各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)(CRC,CyclicRedundancyCheck)值添加在頭部 信息的額外可選項(xiàng)中,以便于接收端在對(duì)該壓縮文件解壓時(shí),可以根據(jù)所述各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊的CRC值對(duì)該壓縮文件進(jìn)行并行解壓縮,從而提高了解壓縮的速度與效率。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例提供的一種文件壓縮方法的流程圖;圖2為本發(fā)明實(shí)施例提供的一種文件解壓縮方法的流程圖;圖3為本發(fā)明實(shí)施例提供的一種文件壓縮裝置的結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例提供的一種文件解壓縮裝置的結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例提供的一種服務(wù)器的結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例提供的另一種服務(wù)器的結(jié)構(gòu)示意圖;圖7為本發(fā)明實(shí)施例提供的一種文件壓縮方法的應(yīng)用實(shí)例的流程圖;圖8為本發(fā)明實(shí)施例提供的一種文件解壓縮方法的應(yīng)用實(shí)例的流程圖。具體實(shí)施方式描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。請(qǐng)參閱圖1,圖1為本發(fā)明實(shí)施例提供的一種文件壓縮方法的流程圖;所述方法包括:步驟101:將文件拆分成多個(gè)數(shù)據(jù)塊,并統(tǒng)計(jì)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù);其中,服務(wù)器(X86服務(wù)器、簡(jiǎn)約指令集計(jì)算機(jī)、IA-64服務(wù)器等)對(duì)文件(比如UNIX系統(tǒng)的文件、本地存儲(chǔ)的文件或者接收到的文件,或者是操作系統(tǒng)上運(yùn)行的各種格式的文件,特別是文本文件等等)拆分方式有多種,針對(duì)不同格式的數(shù)據(jù)塊,可以采用的不同的拆分方法,比如,可以采用TMPGEnc來(lái)拆分MPEG格式的文件;還可以采用ASFTools拆分ASF或 WMV格式的文件,還可以采用AVIchop拆分MPEG4格式的文件等等。其中,拆分的方式可以按照固定字節(jié)數(shù)拆分,也可以按照文件的大小均分,還可以根據(jù)需要任意拆分,本實(shí)施例不作限制。本實(shí)施例中的文件,是指適用于GZIP壓縮或解壓縮的文件。步驟102:根據(jù)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù)計(jì)算擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度,并根據(jù)所述長(zhǎng)度申請(qǐng)額外可選項(xiàng)占用的內(nèi)存;比如,如果將文件拆分成10個(gè)數(shù)據(jù)塊,則擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度(XLEN,eXtraLENgth)就是:每個(gè)數(shù)據(jù)塊的長(zhǎng)度之和,即10個(gè)數(shù)據(jù)塊的長(zhǎng)度之和。本實(shí)施例將所有數(shù)據(jù)塊占用的長(zhǎng)度定義為擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度。也就是說(shuō),所述XLEN是可選項(xiàng)字節(jié)數(shù)。即下述表1的NUM~nCRC的字節(jié)數(shù)。比如,如果將文件拆分成10個(gè)數(shù)據(jù)塊的情況下,參考下述表2中每個(gè)表示項(xiàng)的字節(jié)數(shù),即XLEN=2(NUM)+(4+4)*10=82。然后,由于計(jì)算出XLEN的長(zhǎng)度為82,可以通過(guò)malloc函數(shù)來(lái)申請(qǐng)82bite的內(nèi)存。本實(shí)施例中,所述額外可選項(xiàng)位于壓縮文件的頭部的擴(kuò)展選項(xiàng)中,其額外可選項(xiàng)的結(jié)構(gòu)具體詳見(jiàn)下述表1所示。步驟103:對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮,得到多個(gè)壓縮數(shù)據(jù)塊,并計(jì)算各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;在該實(shí)施例中,并行壓縮需要通過(guò)多個(gè)壓縮引擎分別對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行壓縮,本實(shí)施例中,在硬件壓縮的場(chǎng)合下,并行壓縮是利用多個(gè)壓縮引擎同時(shí)對(duì)多個(gè)數(shù)據(jù)塊進(jìn)行壓縮;在軟件壓縮的場(chǎng)合下,并行壓縮是在中央處理器(CPU,CentralProcessingUnit)有多個(gè)物理核的情況下,利用多線(xiàn)程技術(shù),同時(shí)對(duì)多個(gè)數(shù)據(jù)塊進(jìn)行壓縮。通常情況下,為了校驗(yàn)各個(gè)數(shù)據(jù)解壓后是否正確,需要計(jì)算各個(gè)數(shù)據(jù)塊的CRC校驗(yàn)值,以便于通過(guò)CRC算法進(jìn)行校驗(yàn),其中CRC的原理是:而計(jì)算各個(gè)數(shù)據(jù)塊的CRC校驗(yàn)值,其中一種CRC算法的原理為,但并不限于此:下面,借助于多項(xiàng)式除法,其余數(shù)為校驗(yàn)字段。例如:數(shù)據(jù)段代碼為:1011001;對(duì)應(yīng)m(x)=x6+x4+x3+1假設(shè)生成多項(xiàng)式為:g(x)=x4+x3+1;則對(duì)應(yīng)g(x)的代碼為:11001x4m(x)=x10+x8+x7+x4對(duì)應(yīng)的代碼記為:10110010000;采用多項(xiàng)式除法:得余數(shù)為:1010(即校驗(yàn)字段為:1010)。當(dāng)然,對(duì)于本領(lǐng)域技術(shù)人員,還可以采用其他的CRC算法,本實(shí)例不作限制。步驟104:將所述擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)、各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊的CRC值存儲(chǔ)在額外可選項(xiàng)中;比如,在上述過(guò)程中,先將文件拆分成N個(gè)數(shù)據(jù)塊,統(tǒng)計(jì)數(shù)據(jù)塊的個(gè)數(shù),以及根據(jù)數(shù)據(jù)塊的個(gè)數(shù)得到擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度;然后,再對(duì)各個(gè)數(shù)據(jù)塊進(jìn)行壓縮后,獲知每個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度,并計(jì)算得到各個(gè)數(shù)據(jù)塊的CRC值,然后,將所述擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)、第一個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和第一數(shù)據(jù)塊的CRC值,第二個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和第二數(shù)據(jù)塊的CRC值,一直到第N個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和第N數(shù)據(jù)塊的CRC值依次分別添加到額外可選項(xiàng)中對(duì)應(yīng)的XLEN字段、NUM字段、1LEN字段、1CRC字段;2LEN字段、2CRC字段;以及NLEN字段、NCRC字段中;進(jìn)一步,所述額外可選項(xiàng)還可以包括標(biāo)識(shí)信息,比如SI1和SI2,其中,所述SI1和SI2為額外可選項(xiàng)中擴(kuò)展數(shù)據(jù)內(nèi)容的ID。具體的,所述額外可選項(xiàng)的結(jié)構(gòu)具體如表1所示:表1SI1SI2XLENNUM1LEN1CRC····nLENnCRC其中,所述SI1和SI2為標(biāo)識(shí)信息;所述XLEN為擴(kuò)展內(nèi)容的長(zhǎng)度,即從NUM到nCRC的長(zhǎng)度;所述NUM,表示該壓縮文件擁有的數(shù)據(jù)塊數(shù);所述1LEN,1CRC至NLEN,NCRC,用于表示擴(kuò)展信息,包括各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度信息,具體包括:壓縮后的各個(gè)壓縮數(shù)據(jù)塊(block)的長(zhǎng)度和壓縮前的各個(gè)數(shù)據(jù)塊的CRC32值,所述CRC32是一種數(shù)據(jù)差錯(cuò)校驗(yàn)碼,在數(shù)據(jù)通信中以及壓縮等情況下,通過(guò)比較原始數(shù)據(jù)和壓縮包解壓數(shù)據(jù)的CRC32值是否相同來(lái)校驗(yàn)數(shù)據(jù)是否出錯(cuò)。其中,額外可選項(xiàng)的結(jié)構(gòu)中包括 具體內(nèi)容如表2所示:表2其中,表2所示內(nèi)容只是舉例說(shuō)明,并不限于此,還可以根據(jù)需要進(jìn)行適應(yīng)性修改。步驟105:將所述額外可選項(xiàng)添加到壓縮格式中頭部對(duì)應(yīng)的擴(kuò)展extra選項(xiàng)中,合并所述多個(gè)壓縮數(shù)據(jù)塊,以得到壓縮文件;進(jìn)一步,所述擴(kuò)展extra選項(xiàng)除了包括所述額外可選項(xiàng)外,還可以包括源文件名、注釋文字或CRC16等。本實(shí)施例主要是對(duì)額外可選項(xiàng)進(jìn)行擴(kuò)展。即在額外可選項(xiàng)中增加所述擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)、各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊的CRC值,以便于接收端根據(jù)所述增加的信息對(duì)各個(gè)數(shù)據(jù)塊進(jìn)行并行解壓。本實(shí)施例對(duì)文件的壓縮適用于GZIP壓縮格式。每個(gè)獨(dú)立的GZIP壓縮文件都包括頭部、數(shù)據(jù)部和尾部,其中,頭部可以包括擴(kuò)展extra選項(xiàng),之外還可以包括:ID1ID2、CM、FLG、MTIME、XFL、OS,其中,所述ID1ID2為固定值,即ID1=0X1F,ID2=0X8B;用于標(biāo)識(shí)GZIP格式;所述CM:表示壓縮方法,目前只有一個(gè)值,即CM=8,表示DEFLATE方法;所述MTIME:表示壓縮時(shí)間,采用UNIX格式;所述XFL:表示壓縮模式,XFL=2:表示最大壓縮但最慢算法;XFL=4,表示最快但最小壓縮算法;所述OS:表示文件系統(tǒng),例如:OS=0表示FAT文件系統(tǒng);OS=3表示UNIX文件系統(tǒng);所述FLG:表示擴(kuò)展功能標(biāo)識(shí),每個(gè)BIT表示一種附加數(shù)據(jù),具體的對(duì)應(yīng)內(nèi)容會(huì)在extra里面表示,所述extra包括:額外可選項(xiàng),原文件名,注釋文字和CRC16等。上述描述了GZIP壓縮文件的頭部的內(nèi)容信息,之外,GZIP壓縮文件還可以包括數(shù)據(jù)部和尾部,也就是說(shuō),目前,每個(gè)獨(dú)立的GZIP壓縮文件都是由頭部,數(shù)據(jù)部和尾部組成。其中,所述頭部的信息詳見(jiàn)上述,在此不再贅述。所述數(shù)據(jù)部包括一個(gè)或者多個(gè)數(shù)據(jù)塊(本實(shí)施例即一個(gè)或多個(gè)壓縮數(shù)據(jù)塊,下同),每個(gè)數(shù)據(jù)塊的格式包括BFINAL、BTYPE和數(shù)據(jù)DATA信息。BFINAL位占用1bit,表示是否為最后一個(gè)數(shù)據(jù)塊,如果為BFINAL位為1時(shí)表示最后一個(gè)數(shù)據(jù)塊。BYTPE表示數(shù)據(jù)的壓縮方式,壓縮類(lèi)型(2bit),可能是靜態(tài)Huffman壓縮(01)、動(dòng)態(tài)Huffman壓縮(10)也可能是表示不壓縮(00);DATA表示壓縮數(shù)據(jù),(比如,LZ77+huffman編碼+二叉樹(shù)特性等)。所述尾部,包括原文件的32位CRC值和以及原始數(shù)據(jù)長(zhǎng)度的低32位值,尾部主要用來(lái)驗(yàn)證解壓后的文件和壓縮前的原文件是否一致。步驟106:將所述壓縮文件發(fā)送給接收端,以便于接收端對(duì)所述壓縮文件進(jìn)行并行解壓。需要說(shuō)明的是,在該實(shí)施例中,針對(duì)本實(shí)施例的壓縮方式,可以采用現(xiàn)有的串行解壓,也可以采用本發(fā)明實(shí)施例提供的并行解壓(具體如下述圖2實(shí)施例所示),如果采用串行解壓縮,就需要利用該壓縮文件尾部的內(nèi)容來(lái)校驗(yàn)解壓后的文件和壓縮前的原文件是否一致;而如果采用本申請(qǐng)的并行解壓縮,不需要利用尾部的內(nèi)容用來(lái)驗(yàn)證解壓后的文件和壓縮前的原文件是否一致,而是需要根據(jù)頭部中擴(kuò)展extra選項(xiàng)中的額外可選項(xiàng)的各個(gè)CRC值來(lái)校驗(yàn)解壓后的各個(gè)數(shù)據(jù)塊和壓縮前的原各個(gè)數(shù)據(jù)塊是否一致。本發(fā)明實(shí)施例中,在對(duì)文件進(jìn)行壓縮時(shí),將各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊的CRC值通過(guò)新增字段添加在頭部信息的額外可選項(xiàng)中,以便于在接收端解壓時(shí),可以根據(jù)這些信息對(duì)該壓縮文件進(jìn)行并行解壓縮,從而提高了解壓縮的速度與效率。還請(qǐng)參閱圖2,圖2為本發(fā)明實(shí)施例提供的一種文件解壓縮方法的流程圖,所述方法包括:步驟201:獲取壓縮文件中各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;其獲取的過(guò)程為:服務(wù)器從壓縮文件頭部擴(kuò)展extra選項(xiàng)中的額外可選項(xiàng)中獲取各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值。步驟202:根據(jù)所述壓縮數(shù)據(jù)塊的長(zhǎng)度和數(shù)據(jù)塊的個(gè)數(shù)對(duì)所述壓縮文件進(jìn)行分塊,得到各個(gè)壓縮數(shù)據(jù)塊;步驟203:對(duì)所述各個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮,得到對(duì)應(yīng)的各個(gè)數(shù)據(jù)塊;具體可以服務(wù)器將各個(gè)壓縮數(shù)據(jù)塊輸入到對(duì)應(yīng)解壓縮引擎中,通過(guò)多個(gè)解壓縮引擎分別對(duì)所述多個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮。其中并行解壓縮的過(guò)程對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),已是熟知技術(shù),在此不再贅述。步驟204:計(jì)算解壓縮得到的所述各個(gè)數(shù)據(jù)塊的CRC值;其計(jì)算過(guò)程對(duì)于本領(lǐng)域技術(shù)人員已是熟知技術(shù),在此不再贅述。步驟205:如果獲取的所述各個(gè)數(shù)據(jù)塊的CRC值與解壓縮得到的各個(gè)數(shù)據(jù)塊的CRC值相同,則所述各個(gè)數(shù)據(jù)塊與原各個(gè)數(shù)據(jù)塊一致;步驟206:合并解壓縮得到的所述各個(gè)數(shù)據(jù)塊,得到原文件。本發(fā)明實(shí)施例中,在解壓縮時(shí),服務(wù)器先從壓縮文件中獲取各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊的CRC值,根據(jù)這些信息對(duì)該壓縮文件進(jìn)行并行解壓縮,并對(duì)解壓縮后的數(shù)據(jù)塊可以分別通過(guò)獨(dú)立的CRC值進(jìn)行正確性檢查,從而提高了解壓縮的速度與效率?;谏鲜龇椒ǖ膶?shí)現(xiàn)過(guò)程,本發(fā)明實(shí)施例還提供一種文件壓縮裝置,其結(jié)構(gòu)示意圖如圖3所示,所述裝置包括:拆分單元31,第一計(jì)算單元32,壓縮單元33,第二計(jì)算單元34,存儲(chǔ)單元35,添加單元36和合并單元37,其中,所述拆分單元31,用于將文件拆分成多個(gè)數(shù)據(jù)塊,并統(tǒng)計(jì)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù);其中,可以按照固定字節(jié)數(shù)拆分,可以均分,還可以根據(jù)需要任意拆分。所述第一計(jì)算單元32,用于根據(jù)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù)計(jì)算擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度,根據(jù)所述長(zhǎng)度申請(qǐng)額外可選項(xiàng)占用的內(nèi)存;所述壓縮單元33,用于對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮,得到多個(gè)壓縮數(shù)據(jù)塊,具體可以通過(guò)多個(gè)壓縮引擎分別對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮;所述第二計(jì)算單元34,用于在壓縮單元33對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮時(shí),分別計(jì)算各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;所述存儲(chǔ)單元35,用于所述擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)、各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊的CRC值存儲(chǔ)在額外可選項(xiàng)中;所述添加單元36,用于將所述額外可選項(xiàng)添加到壓縮格式中頭部對(duì)應(yīng)的擴(kuò)展extra選項(xiàng)中;所述合并單元37,用于在所述添加單元將所述額外可選項(xiàng)添加到GZIP格式中頭部對(duì)應(yīng)的位置后,合并所述多個(gè)壓縮數(shù)據(jù)塊,得到壓縮文件。所述裝置中各個(gè)單元的功能和作用的實(shí)現(xiàn)過(guò)程,詳見(jiàn)上述方法中對(duì)應(yīng)的實(shí)現(xiàn)過(guò)程,在此不再贅述。相應(yīng)的,本發(fā)明實(shí)施例還提供一種文件解壓縮裝置,其結(jié)構(gòu)示意圖如圖4所示,所述裝置包括:獲取單元41,劃分單元42,解壓縮單元43,計(jì)算單元44,判斷單元45,確定單元46、合并單元47和發(fā)送單元48,其中,所述獲取單元41,用于從壓縮文件頭部的額外可選項(xiàng)中獲取各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值,具體用于從壓縮文件頭部擴(kuò)展extra選項(xiàng)中的額外可選項(xiàng)中獲取各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;所述劃分單元42,用于根據(jù)所述壓縮數(shù)據(jù)塊的長(zhǎng)度和數(shù)據(jù)塊的個(gè)數(shù)對(duì)所述壓縮文件進(jìn)行分塊,得到各個(gè)壓縮數(shù)據(jù)塊;所述解壓縮單元43,用于對(duì)所述各個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮,得到對(duì)應(yīng)的各個(gè)數(shù)據(jù)塊;所述計(jì)算單元44,用于在解壓縮單元對(duì)所述各個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮時(shí),計(jì)算解壓縮得到的所述各個(gè)數(shù)據(jù)塊的CRC值;所述判斷單元45,用于判斷所述獲取單元獲取的所述各個(gè)數(shù)據(jù)塊的CRC值與計(jì)算解壓縮得到的各個(gè)數(shù)據(jù)塊的CRC值是否相同;所述確定單元46,用于在判斷單元判斷CRC值相同時(shí),確定所述數(shù)據(jù)塊與原數(shù)據(jù)塊一致;所述合并單元47,用于在所述確定單元合確定所述數(shù)據(jù)塊與原數(shù)據(jù)塊一致時(shí),合并解壓縮得到的所述各個(gè)數(shù)據(jù)塊,得到原文件;所述發(fā)送單元48,用于將所述壓縮文件發(fā)送給接收端,以便于接收端對(duì)所述壓縮文件進(jìn)行并行解壓。所述裝置中各個(gè)單元的功能和作用的實(shí)現(xiàn)過(guò)程,詳見(jiàn)上述方法中對(duì)應(yīng)的實(shí)現(xiàn)過(guò)程,在此不再贅述。相應(yīng)的,本發(fā)明實(shí)施例還提供一種服務(wù)器,其結(jié)構(gòu)示意圖如圖5所示,所述服務(wù)器包括:處理器51和壓縮引擎組52,其中,所述處理器51,用于將待壓縮的文件拆分成多個(gè)數(shù)據(jù)塊,并統(tǒng)計(jì)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù);根據(jù)所述多個(gè)數(shù)據(jù)塊的個(gè)數(shù)計(jì)算擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度,以及根據(jù)所述長(zhǎng)度申請(qǐng)額外可選項(xiàng)占用的內(nèi)存;所述壓縮引擎組52,包括對(duì)個(gè)壓縮引擎,用于對(duì)所述多個(gè)數(shù)據(jù)塊進(jìn)行并行壓縮,得到多個(gè)壓縮數(shù)據(jù)塊;所述處理器51,還用于計(jì)算各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值,并將所述擴(kuò)展數(shù)據(jù)內(nèi)容的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)、各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度和各個(gè)數(shù)據(jù)塊的CRC值存儲(chǔ)在額外可選項(xiàng)中;以及將所述額外可選項(xiàng)添加到GZIP格式中頭部對(duì)應(yīng)的擴(kuò)展extra選項(xiàng)中,合并所述多個(gè)壓縮數(shù)據(jù)塊,得到壓縮文件,并將所述壓縮文件發(fā)送給接收端,以便于接收端對(duì)所述壓縮文件進(jìn)行并行解壓。所述服務(wù)器的功能和作用的實(shí)現(xiàn)過(guò)程,詳見(jiàn)上述方法中對(duì)應(yīng)的實(shí)現(xiàn)過(guò)程,在此不再贅述。相應(yīng)的,本發(fā)明實(shí)施例還提供另一種服務(wù)器,其結(jié)構(gòu)示意圖如圖6所示,所述服務(wù)器包括:處理器61和解壓縮引擎組62,其中,所述處理器61,用于從壓縮文件頭部的額外可選項(xiàng)中獲取各個(gè)壓縮數(shù)據(jù)塊的長(zhǎng)度、數(shù)據(jù)塊的個(gè)數(shù)以及各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;根據(jù)所述壓縮數(shù)據(jù)塊的長(zhǎng)度和數(shù)據(jù)塊的個(gè)數(shù)對(duì)所述壓縮文件進(jìn)行分塊,得到各個(gè)壓縮數(shù)據(jù)塊;所述解壓縮引擎組62,用于對(duì)所述各個(gè)壓縮數(shù)據(jù)塊進(jìn)行并行解壓縮,得到對(duì)應(yīng)的各個(gè)數(shù)據(jù)塊; 所述處理器61,還用于計(jì)算解壓縮得到的所述各個(gè)數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC值;如果判斷獲取的所述各個(gè)數(shù)據(jù)塊的CRC值與解壓縮得到的各個(gè)數(shù)據(jù)塊的CRC值相同,則所述數(shù)據(jù)塊與原數(shù)據(jù)塊一致;合并解壓縮得到的所述各個(gè)數(shù)據(jù)塊,得到原文件。本發(fā)明實(shí)施例中,為了使包含多壓縮數(shù)據(jù)塊(block)的壓縮文件在解壓的時(shí)候能夠并行解壓,從而發(fā)揮多核或者多通道技術(shù)的優(yōu)勢(shì)。在遵循現(xiàn)有GZIP格式的基礎(chǔ)上,本發(fā)明實(shí)施例中,在壓縮的時(shí)把各block塊的長(zhǎng)度信息和各block塊原數(shù)據(jù)塊的CRC32值存放在頭部擴(kuò)展選項(xiàng)的額外可選項(xiàng)中,以便于在解壓時(shí),根據(jù)所述各block塊的長(zhǎng)度信息和各block塊原數(shù)據(jù)塊的CRC32值進(jìn)行并行解壓,從而提高了解壓縮的速度與效率。為了便于本領(lǐng)域技術(shù)人員的理解,下面以具體的應(yīng)用實(shí)例來(lái)說(shuō)明。還請(qǐng)參閱圖7,為本發(fā)明實(shí)施例提供的一種文件壓縮方法的應(yīng)用實(shí)例的流程圖;如圖所示,該壓縮方式主要是利用硬件或者軟件的多個(gè)壓縮引擎對(duì)個(gè)block塊進(jìn)行并行壓縮,整個(gè)壓縮過(guò)程主要包括:1、處理器將原文件分成各個(gè)子數(shù)據(jù)塊,比如,將文件拆分成n個(gè)子文件,即子文件1、子文件2直到子文件n,并統(tǒng)計(jì)各個(gè)子文件的個(gè)數(shù),比如為n個(gè);2、處理器根據(jù)子文件的個(gè)數(shù)(即n),計(jì)算出擴(kuò)展數(shù)據(jù)的長(zhǎng)度(XLEN),并申請(qǐng)存儲(chǔ)擴(kuò)展數(shù)據(jù)所占用內(nèi)存;3、處理器將各個(gè)子數(shù)據(jù)塊被傳輸?shù)綄?duì)應(yīng)的各個(gè)壓縮引擎(壓縮引擎組),所述每個(gè)壓縮引擎對(duì)所述對(duì)應(yīng)各個(gè)子文件進(jìn)行并行壓縮,并計(jì)算數(shù)據(jù)塊的CRC32值;4、各壓縮引擎在把各個(gè)子文件壓縮成壓縮子文件后,把壓縮子文件的長(zhǎng)度和原子文件的CRC32值存儲(chǔ)到擴(kuò)展可選項(xiàng)中的額外可選項(xiàng)中,其中子文件的長(zhǎng)度是以bit為單位;同時(shí),還需要將各個(gè)子文件的個(gè)數(shù),以及擴(kuò)展數(shù)據(jù)的長(zhǎng)度的存儲(chǔ)到擴(kuò)展可選選中的額外可選項(xiàng)中;5、當(dāng)所有數(shù)據(jù)塊壓縮好后,處理器把額外可選項(xiàng)添加到壓縮文件的頭部對(duì)應(yīng)位置(即擴(kuò)展可選項(xiàng)),然后合并所述壓縮子文件,得到壓縮文件。在該壓縮的實(shí)施例中,因?yàn)閿U(kuò)展數(shù)據(jù)信息是按原先的GZIP方式進(jìn)行編寫(xiě),所以按這個(gè)方式壓縮的文件,任何能解壓其他GZIP格式壓縮包的程序或者解壓引擎都可以對(duì)這個(gè)文件進(jìn)行解壓縮,只是不能發(fā)揮并行解壓縮的優(yōu)勢(shì)。如果想提交解壓縮的效率,可以采用本實(shí)施例提供的并行解壓縮。還請(qǐng)參閱圖8,為本發(fā)明實(shí)施例提供的一種文件解壓縮方法的應(yīng)用實(shí)例的流程圖;如圖 所示,該解壓縮方式主要是利用硬件或者軟件的多個(gè)解壓縮引擎(即解壓縮引擎組)對(duì)個(gè)block塊進(jìn)行并行解壓縮,整個(gè)解壓縮過(guò)程主要包括:1處理器從壓縮文件中擴(kuò)展選項(xiàng)中的額外可選項(xiàng)中獲取各個(gè)block(即壓縮子文件或壓縮數(shù)據(jù)塊)的個(gè)數(shù)和各block的長(zhǎng)度,并根據(jù)各個(gè)block的個(gè)數(shù)和各block的長(zhǎng)度對(duì)所述壓縮文件進(jìn)行分塊,得到各個(gè)block,比如block1、block2直到blockn。2處理器將各個(gè)block并行放入對(duì)應(yīng)的各個(gè)解壓引擎中;3、各個(gè)解壓引擎對(duì)各個(gè)block進(jìn)行并行解壓,并計(jì)算各block塊對(duì)應(yīng)的CRC值。4、處理器在各個(gè)解壓引擎對(duì)各個(gè)block塊解壓成數(shù)據(jù)塊后,讀取各個(gè)block對(duì)應(yīng)的額外可選項(xiàng)中的CRC值;5、處理器比較解壓后計(jì)算的各個(gè)block對(duì)應(yīng)的CRC值與讀取的各個(gè)block對(duì)應(yīng)的CRC32值,如果二者相同,則確認(rèn)該數(shù)據(jù)塊與原數(shù)據(jù)塊一致。6、當(dāng)所有block解壓完畢后,合并所述解壓的數(shù)據(jù)塊,得到原文件。需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。