判斷結(jié)果為:CSV片段標(biāo)識符符合RFC-7111語法。
[0091]步驟S1-4,以CSV片段標(biāo)識符中的“=”為分割點(diǎn)獲取CSV片段的選擇方式和范圍。
[0092]CSV片段的選擇方式為:行(row)
[0093]CSV片段的范圍為:1-30000
[0094]步驟S2,客戶端將CSV片段的選擇方式和范圍發(fā)送給服務(wù)端,具體如下:
[0095]客戶端將如下HTTP POST請求發(fā)送給服務(wù)端:
[0096]POST/csv/data/Consumer_Complaints.csv HTTP/1.1
[0097]Accept:*/*
[0098]User-Agent: Java/1.7.0_67
[0099]Host: dbws.hhu.edu.cn
[0100]Connect1n:keep-alive
[0101]Content-Type: applicat1n/χ-www-form-urIencoded
[0102]Content-Length:24
[0103]scheme = row&range = 1-30000
[0104]步驟S3,服務(wù)端根據(jù)CSV片段的選擇方式和范圍提取CSV片段,具體如下:
[0105]服務(wù)端從客戶端HTTP POST請求的消息體中讀取CSV片段的選擇方式(scheme)和范圍(range)的參數(shù)值,得到CSV片段的選擇方式和范圍分別為“row”和“ 1-30000”。于是,調(diào)用行提取算法獲取CSV片段。
[0106]所述行提取算法的處理步驟如下:
[0107](I)初始化變量fragment為空。
[0108](2)以CSV片段的范圍中的“;”為分割點(diǎn)獲取I個行選擇范圍“1-30000”,并獲取該行選擇范圍的起始行號“ I ”和結(jié)束行號“30000”。
[0109](3)針對行選擇范圍“ 1-30000”執(zhí)行如下操作:逐行讀取CSV文件直至讀取到第I行(起始行);從第I行開始逐行讀取CSV文件的數(shù)據(jù),并將其添加到fragment中,直到讀取完第30000行(結(jié)束行)為止。
[0110](4)變量fragment中存儲了結(jié)果CSV片段。
[0111]步驟S4,服務(wù)端將提取的CSV片段返回給客戶端,具體如下:
[0112]服務(wù)端以如下HTTP 2000K響應(yīng)返回給客戶端:
[0113]HTTP/1.1 2000K
[0114]Date: Thu, 9Apr 2015 07:02:26GMT
[0115]Content-Length:4969767
[0116]Server:Apache-Coyote/l.1
[0117]{CSV片段數(shù)據(jù)}
[0118]步驟S5,客戶端獲取CSV片段并顯示或保存,具體如下:
[0119]從服務(wù)端返回的HTTP 2000K響應(yīng)的消息體中讀取CSV片段數(shù)據(jù),并將其進(jìn)行屏幕顯不O
[0120]我們已用Java SE 7.0實(shí)現(xiàn)了本發(fā)明的以上技術(shù)方案,并已在以下特定的網(wǎng)絡(luò)環(huán)境下運(yùn)行了以上【具體實(shí)施方式】,目的是表明本發(fā)明技術(shù)方案與傳統(tǒng)技術(shù)方案(即下載完整CSV文件)相比,節(jié)省網(wǎng)絡(luò)帶寬和縮短通信延時的實(shí)際效果。我們的具體網(wǎng)絡(luò)環(huán)境配置如下:
[0121]服務(wù)端:計(jì)算機(jī)型號:DELLPowerEdge R710 ;主要硬件配置=Intel(R)Xeon(R)CPUE5640, 2.66GHz, 12M Cache !Memory 16GB (8 X 2GB), 1066MHz ;操作系統(tǒng):Windows Server2008R2Enterprise 64-bit, Service Pack I ;HTTP Web 服務(wù)器:Apache Tomcat/7.0.55。
[0122]客戶端:主要硬件配置:Intel(R) Core (TM) i5-2430M, 2.4GHz !Memory 4GB ;操作系統(tǒng):ffindows 7Ultimate edit1n 64-bit。
[0123]網(wǎng)絡(luò)配置:協(xié)議為HTTP/1.1 ;帶寬約10Mbps ;下載速度約1.24MB/s。
[0124]在以上網(wǎng)絡(luò)環(huán)境下,客戶端完成檢索以上具體實(shí)施例中CSV片段的網(wǎng)絡(luò)帶寬代價為4.7MB,是下載完整主資源文件的總帶寬代價58.3MB的約8%;客戶端檢索時間片段的耗時為2.58秒,是下載完整CSV文件的耗時47.08秒的約5%。這些表明,本發(fā)明的技術(shù)方案比下載完整CSV文件的傳統(tǒng)技術(shù)方案大大節(jié)省了網(wǎng)絡(luò)帶寬,縮短了通信延時,而且,本發(fā)明的技術(shù)方案無需擴(kuò)充當(dāng)前的HTTP協(xié)議。
[0125]本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中所述的“客戶端”與“服務(wù)端”是指HTTP/1.1協(xié)議(或未來的升級版)的國際標(biāo)準(zhǔn)中所述的“客戶端”與“服務(wù)端”。根據(jù)HTTP/1.1協(xié)議,“客戶端”是指為發(fā)送請求(requests)的目的而與服務(wù)端建立連接(connect1ns)的計(jì)算機(jī)程序,無論該計(jì)算機(jī)程序以何種方式運(yùn)行于何種類型的客戶端設(shè)備;“服務(wù)端”是指為響應(yīng)(respond)客戶端請求(requests)的目的而接受連接(connect1ns)或由第三方代理其接受連接的計(jì)算機(jī)程序,無論該計(jì)算機(jī)程序以何種方式運(yùn)行于何種類型的服務(wù)端設(shè)備。
[0126]以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種URI標(biāo)識的CSV片段的HTTP檢索方法,其特征在于,包括: 步驟SI,客戶端解析片段URI并獲得主資源URI及CSV片段標(biāo)識符; 步驟S2,客戶端將CSV片段的選擇方式和范圍發(fā)送給服務(wù)端; 步驟S3,服務(wù)端根據(jù)CSV片段的選擇方式和范圍提取CSV片段; 步驟S4,服務(wù)端將提取的CSV片段返回給客戶端; 步驟S5,客戶端獲取CSV片段并顯示或保存。2.如權(quán)利要求1所述的方法,其特征在于,所述步驟SI進(jìn)一步包括: 步驟Sl-1,以片段URI中的“#”為分割點(diǎn)獲取主資源URI和CSV片段標(biāo)識符; 步驟S1-2,判斷主資源URI是否符合RFC-3986語法,若否,則報錯并終止; 步驟S1-3,判斷CSV片段標(biāo)識符是否符合RFC-7111語法,若否,則報錯并終止; 步驟S1-4,以CSV片段標(biāo)識符中的“=”為分割點(diǎn)獲取CSV片段的選擇方式和范圍。3.如權(quán)利要求1所述的方法,其特征在于,所述步驟S3進(jìn)一步包括: 服務(wù)端從客戶端HTTP POST請求的消息體中讀取CSV片段的選擇方式和范圍的參數(shù)值; 若為“行”選擇方式,則調(diào)用行提取算法獲取CSV片段; 若為“列”選擇方式,則調(diào)用列提取算法獲取CSV片段; 若為“單元格”選擇方式,則調(diào)用單元格提取算法獲取CSV片段。4.如權(quán)利要求3所述的方法,其特征在于,所述行提取算法的處理步驟,進(jìn)一步包括: (1)初始化變量fragment為空; (2)以CSV片段的范圍中的“;”為分割點(diǎn)獲取若干個行選擇范圍,并獲取每個行選擇范圍的起始行和結(jié)束行參數(shù); (3)依次針對每個行選擇范圍執(zhí)行如下操作: 從第一行開始逐行讀取CSV文件直至讀取到行選擇范圍的起始行; 從該起始行開始逐行讀取CSV文件的數(shù)據(jù),將其添加到變量fragment中,直到讀取完行選擇范圍的結(jié)束行為止; (4)變量fragment中存儲了結(jié)果CSV片段。5.如權(quán)利要求3所述的方法,其特征在于,所述列提取算法的處理步驟,進(jìn)一步包括: (1)初始化變量fragment為空; (2)以CSV片段的范圍中的“;”為分割點(diǎn)獲取若干個列選擇范圍,并獲取每個列選擇范圍的起始列和結(jié)束列參數(shù); (3)從第一行開始逐行讀取CSV文件中的數(shù)據(jù),從中依次截取各個列選擇范圍的起始列和結(jié)束列之間的數(shù)據(jù),將其添加到變量fragment中,直到讀取完CSV文件為止; (4)變量fragment中存儲了結(jié)果CSV片段。6.如權(quán)利要求3所述的方法,其特征在于,所述單元格提取算法的處理步驟,進(jìn)一步包括: (1)初始化變量fragment為空; (2)以CSV片段的范圍中的“;”為分割點(diǎn)獲取若干個單元格選擇范圍,并獲取每個單元格選擇范圍的起始單元格〈行,列〉和結(jié)束單元格〈行,列〉參數(shù); (3)依次針對每個單元格選擇范圍執(zhí)行如下操作: 從第一行開始逐行讀取CSV文件直到讀取到起始單元格的行; 從起始單元格的行開始截取起始單元格的列和結(jié)束單元格的列之間的數(shù)據(jù),將其添加到變量fragment中,依次逐行讀取CSV文件并針對當(dāng)前行以同樣方式截取數(shù)據(jù)、添加到變量fragment中,直到讀取并處理完結(jié)束單元格的行為止; (4)變量fragment中存儲了結(jié)果CSV片段。
【專利摘要】本發(fā)明公開一種URI標(biāo)識的CSV片段的HTTP檢索方法,包括:客戶端解析片段URI并獲得主資源URI及CSV片段標(biāo)識符;客戶端將CSV片段的選擇方式和范圍發(fā)送給服務(wù)端;服務(wù)端根據(jù)CSV片段的選擇方式和范圍提取CSV片段;服務(wù)端將提取的CSV片段返回給客戶端;客戶端獲取CSV片段并顯示或保存。本發(fā)明公開的CSV片段的HTTP檢索方法,一方面無需對當(dāng)前HTTP/1.1協(xié)議進(jìn)行擴(kuò)充;另一方面,不僅支持RFC?7111國際規(guī)范《文本/CSV媒體類型URI片段標(biāo)識符》,而且與客戶端下載完整CSV文件后再提取片段的傳統(tǒng)技術(shù)方案相比,可大大節(jié)省網(wǎng)絡(luò)帶寬、縮短通信延時。
【IPC分類】G06F17/30
【公開號】CN105045834
【申請?zhí)枴緾N201510374311
【發(fā)明人】許卓明, 王駿華, 張進(jìn)
【申請人】河海大學(xué)
【公開日】2015年11月11日
【申請日】2015年6月26日