楊圓飛 田萱
摘 ? 要:論文、代碼及數(shù)據(jù)集是計(jì)算機(jī)科學(xué)領(lǐng)域的重要研究資源。但論文種類(lèi)繁多,論文及其相關(guān)資源(如代碼和數(shù)據(jù)集)散落在個(gè)人電腦上難以查找和共享,導(dǎo)致資源管理效率低、成本高,并容易導(dǎo)致資源泄露或丟失。在當(dāng)前信息時(shí)代,提高研究資源信息化水平具有重要現(xiàn)實(shí)意義。文章為北京林業(yè)大學(xué)信息學(xué)院文本挖掘與智能信息處理研究團(tuán)隊(duì)設(shè)計(jì)開(kāi)發(fā)了一套研究資源共享平臺(tái),該系統(tǒng)旨在對(duì)團(tuán)隊(duì)的論文、代碼及數(shù)據(jù)集資源進(jìn)行統(tǒng)一管理,厘清資源之間的相互關(guān)系。該系統(tǒng)具有資源檢索、資源上傳和下載、數(shù)據(jù)統(tǒng)計(jì)功能,能夠幫助團(tuán)隊(duì)提升研究效率,節(jié)約團(tuán)隊(duì)成本。
關(guān)鍵詞:資源共享;信息管理系統(tǒng);Spring MVC(Spring Model-Viewer-Controller)框架
中圖分類(lèi)號(hào):TP315 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1673-8454(2020)11-0092-05
隨著我國(guó)科學(xué)研究工作如火如荼地進(jìn)行,研究者面臨著大量的論文閱讀,而這些論文往往涉及許多附加資源。以計(jì)算機(jī)科學(xué)領(lǐng)域來(lái)說(shuō),論文中可能涉及算法代碼和實(shí)驗(yàn)數(shù)據(jù)集,而這些資源作為科學(xué)研究的主要參考資料,具有難收集、不易管理等特點(diǎn)。事實(shí)上,目前這些研究資源的管理并沒(méi)有特別好的自動(dòng)化管理方式,可能僅僅在需要某些論文或其附加資源時(shí)才會(huì)去檢索、下載、閱讀,并且在使用完后可能就被清理了。這種原始手工的資源管理方式帶來(lái)了大量重復(fù)勞動(dòng),而且效率低下。此外,在人工管理過(guò)程中,研究資源在硬盤(pán)文件系統(tǒng)中往往只保存為一對(duì)多的關(guān)系,例如一篇論文的代碼或數(shù)據(jù)集與該論文存放在一起,但如果另一篇論文引用了相同的數(shù)據(jù)集,則需要把數(shù)據(jù)集再拷貝一份與之一起存放,這就會(huì)帶來(lái)數(shù)據(jù)冗余。并且,如果僅僅通過(guò)電腦桌面上的文件資源管理器很難查看數(shù)據(jù)集、代碼和論文的引用關(guān)系,不利于研究資源的高效利用和管理。事實(shí)上,隨著研究工作的深入,相關(guān)研究資源數(shù)量越發(fā)龐大,如何高效管理和利用這些數(shù)量巨大的論文及其附加資源越來(lái)越成為研究人員面臨的難題。
一、研究資源管理存在的問(wèn)題
筆者通過(guò)對(duì)北京林業(yè)大學(xué)信息學(xué)院文本挖掘與智能信息處理團(tuán)隊(duì)的分析,發(fā)現(xiàn)目前研究資源的管理仍然存在以下問(wèn)題。
第一,研究資源缺少管理方案,共享困難,需要的時(shí)候通過(guò)網(wǎng)絡(luò)渠道下載后保存在個(gè)人電腦的硬盤(pán)中,共享的時(shí)候直接通過(guò)網(wǎng)絡(luò)從一方的PC上發(fā)到另一方的PC上,步驟煩瑣,而且論文與代碼或數(shù)據(jù)集常常是相關(guān)的,這種直接發(fā)送文件的方式容易讓論文與代碼或數(shù)據(jù)的關(guān)系產(chǎn)生混亂。
第二,研究資源查找和共享效率低。如果團(tuán)隊(duì)成員想要查找相關(guān)資源,需要自己再去查找,不能利用其他成員已經(jīng)做過(guò)的工作。如果想利用其他成員已經(jīng)查找的結(jié)果,則必須求助于其他團(tuán)隊(duì)成員,如果團(tuán)隊(duì)有10個(gè)成員,那么至多需要與9個(gè)成員溝通才能夠拿到需要的資源。
第三,團(tuán)隊(duì)貢獻(xiàn)難以追蹤。當(dāng)團(tuán)隊(duì)成員離開(kāi)團(tuán)隊(duì),其所閱讀的論文、整理的代碼及數(shù)據(jù)集無(wú)法得到有效評(píng)估和高效復(fù)用,因此無(wú)法精確衡量該成員在團(tuán)隊(duì)期間所做的工作。
二、研究資源共享平臺(tái)的優(yōu)點(diǎn)
筆者結(jié)合成熟的Web系統(tǒng)開(kāi)發(fā)技術(shù),依托北京林業(yè)大學(xué)信息學(xué)院文本挖掘與智能信息處理研究團(tuán)隊(duì)的業(yè)務(wù)需求,針對(duì)團(tuán)隊(duì)研究資源設(shè)計(jì)開(kāi)發(fā)了一套集資源檢索、資源上傳和下載、數(shù)據(jù)統(tǒng)計(jì)為一體的Web系統(tǒng)。
該系統(tǒng)設(shè)計(jì)了一套研究資源的管理方案,將資源管理角色分為資源上傳者和資源管理者兩類(lèi)。資源管理者是系統(tǒng)的管理員(下稱(chēng)系統(tǒng)管理員),能夠管理用戶和資源。資源上傳者(下稱(chēng)普通注冊(cè)用戶)是團(tuán)隊(duì)的研究成員,能夠上傳、下載、檢索和評(píng)價(jià)資源。其中,普通用戶在對(duì)資源發(fā)表評(píng)論時(shí),可以引用系統(tǒng)中的其它資源,這將給團(tuán)隊(duì)的資源交流帶來(lái)極大便利。團(tuán)隊(duì)用戶在檢索時(shí),不僅可以按照資源領(lǐng)域進(jìn)行分類(lèi)檢索,還可以根據(jù)資源領(lǐng)域的不同、資源類(lèi)型的不同及關(guān)鍵詞進(jìn)行組合查詢(xún)。
本系統(tǒng)具有數(shù)據(jù)統(tǒng)計(jì)功能。為了使系統(tǒng)管理員了解系統(tǒng)資源情況及用戶使用情況,該系統(tǒng)會(huì)對(duì)系統(tǒng)中資源的數(shù)量、訪問(wèn)量、下載量,普通用戶上傳資源的情況、評(píng)論的情況進(jìn)行統(tǒng)計(jì),并對(duì)這些數(shù)據(jù)進(jìn)行可視化展示,以便管理員對(duì)其團(tuán)隊(duì)成員的貢獻(xiàn)進(jìn)行了解。
此外,本系統(tǒng)還具有消息提醒功能,當(dāng)普通用戶上傳的資源被評(píng)論或附加資源時(shí),系統(tǒng)會(huì)自動(dòng)通知用戶,以便用戶能夠及時(shí)地了解自己所上傳資源的最新情況,用戶登錄后就能夠看到消息提醒。
三、Web系統(tǒng)的架構(gòu)
研究資源共享平臺(tái)底層,根據(jù)實(shí)際業(yè)務(wù)存儲(chǔ)論文及附加資源的基本信息,以及用戶的基本屬性。上層以流行的Web技術(shù)構(gòu)建系統(tǒng),為用戶提供良好的交互體驗(yàn)。系統(tǒng)提供對(duì)研究資源的上傳和下載服務(wù),所有的研究資源都將被系統(tǒng)統(tǒng)一管理和存儲(chǔ)。
研究資源共享平臺(tái)為典型的B/S架構(gòu),以成熟的MVC(Model-View-Controller)架構(gòu)SpringMVC作為依托。該架構(gòu)由請(qǐng)求分發(fā)器(RequestDispatcher)、控制器(Controller)、視圖解析器(ViewResolver)三大核心組件組成,后臺(tái)還包括服務(wù)層(Service)、數(shù)據(jù)持久層,如圖1所示。
其中,請(qǐng)求分發(fā)器接收來(lái)自瀏覽器的請(qǐng)求,并根據(jù)請(qǐng)求路徑查找控制器。之后,將請(qǐng)求交付給控制器處理??刂破鲗邮窍到y(tǒng)的核心,主要負(fù)責(zé)業(yè)務(wù)代碼組織及控制頁(yè)面跳轉(zhuǎn)。每個(gè)控制器接收用戶請(qǐng)求,并調(diào)用一個(gè)或多個(gè)服務(wù)層提供的服務(wù)實(shí)現(xiàn)業(yè)務(wù)功能。處理完成后,控制器會(huì)向視圖解析器傳遞一個(gè)ModelAndView對(duì)象。該對(duì)象由Model和View組成。Model指的是數(shù)據(jù),View指的是視圖。一般地,視圖要呈現(xiàn)給瀏覽器HTML頁(yè)面,而Model要在HTML頁(yè)面上顯示數(shù)據(jù)。視圖解析器就是把HTML頁(yè)面和數(shù)據(jù)結(jié)合起來(lái),構(gòu)造一個(gè)動(dòng)態(tài)的網(wǎng)頁(yè)返回給用戶。數(shù)據(jù)訪問(wèn)對(duì)象(DAO)和Mybatis共同構(gòu)成了系統(tǒng)的數(shù)據(jù)持久層。其中,Mybatis是一個(gè)對(duì)象關(guān)系映射框架,它可以將數(shù)據(jù)訪問(wèn)對(duì)象的參數(shù)映射成關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系,也可以將關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系映射成對(duì)象。
四、Web系統(tǒng)的關(guān)鍵技術(shù)
1.存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)
針對(duì)研究資源共享平臺(tái)的需求,按照數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)的一般原則,通過(guò)分析系統(tǒng)實(shí)體之間的聯(lián)系后,我們建立了實(shí)體-關(guān)系圖(E-R圖,Entity-Relation Model),如圖2所示。該系統(tǒng)涉及用戶、資源、評(píng)論等實(shí)體。其中,資源、資源聯(lián)系、用戶這三者是多對(duì)多的關(guān)系,即一個(gè)資源可以和多個(gè)資源建立聯(lián)系,一個(gè)用戶可以建立多個(gè)資源聯(lián)系,一個(gè)資源也可以被多個(gè)用戶建立聯(lián)系。評(píng)論和資源有兩個(gè)一對(duì)多的關(guān)系,一個(gè)是被引用關(guān)系,即表示一個(gè)資源可以被多個(gè)評(píng)論引用,另一個(gè)是被評(píng)論關(guān)系,表示一個(gè)資源可以有多個(gè)評(píng)論。 用戶和消息也有兩個(gè)一對(duì)多關(guān)系,一個(gè)是產(chǎn)生關(guān)系,一個(gè)是發(fā)送關(guān)系。一個(gè)用戶可以產(chǎn)生多個(gè)消息,一個(gè)用戶也可以接收多個(gè)消息。另外,一個(gè)資源也可以被多個(gè)消息引用。研究資源共享平臺(tái)將這些實(shí)體進(jìn)行了關(guān)系模式化??偣苍O(shè)計(jì)了9張數(shù)據(jù)表。
2.功能模塊
研究資源共享平臺(tái)根據(jù)實(shí)際業(yè)務(wù)需求將用戶分為兩類(lèi),一類(lèi)是普通注冊(cè)用戶,一類(lèi)是系統(tǒng)管理員。這兩類(lèi)用戶分別歸屬兩大功能,即普通用戶功能和管理員功能。如圖3、圖4所示。
(1)針對(duì)普通用戶
對(duì)于普通用戶,可以上傳資源。資源包括論文、代碼和數(shù)據(jù)集。論文以pdf形式上傳至系統(tǒng),數(shù)據(jù)集和代碼以壓縮包形式上傳至系統(tǒng)。壓縮包要求支持常用壓縮格式,包括rar、zip、7z、tar。但對(duì)于系統(tǒng)中已經(jīng)存在的資源,用戶將不能再上傳。
為了使用方便,為了能夠在查看論文時(shí)就找到論文對(duì)應(yīng)的代碼或數(shù)據(jù)集,普通用戶可以為論文附加代碼或者數(shù)據(jù)集。同理,也可以為數(shù)據(jù)集或代碼附加論文。無(wú)論是為論文附加代碼/數(shù)據(jù)集,還是為代碼/數(shù)據(jù)集附加論文,其所建立的聯(lián)系是雙向的。例如,為論文附加代碼后,即代表也為代碼附加了論文。
普通用戶可以對(duì)資源進(jìn)行評(píng)論。即普通用戶可以為論文、代碼或數(shù)據(jù)集發(fā)表評(píng)論。在發(fā)表評(píng)論時(shí),可以?xún)H僅發(fā)表文字,也可以在發(fā)表評(píng)論時(shí)引用一個(gè)資源。引用的資源可以是系統(tǒng)中已經(jīng)存在的資源,也可以是臨時(shí)上傳的一個(gè)資源。此外,還支持用戶刪除評(píng)論,即對(duì)自己發(fā)表的評(píng)論進(jìn)行刪除。
普通用戶可以下載系統(tǒng)中的資源。包括下載論文、下載代碼、下載數(shù)據(jù)集。
普通用戶可以瀏覽系統(tǒng)中的資源。包括瀏覽論文、瀏覽代碼、瀏覽數(shù)據(jù)集及評(píng)論。
(2)針對(duì)管理員
管理員在資源瀏覽上,具有和普通用戶一樣的權(quán)限。即管理員也可以瀏覽系統(tǒng)中的所有論文、所有代碼、所有數(shù)據(jù)集和所有評(píng)論。但是不能上傳資源和為資源建立聯(lián)系,亦不能發(fā)表評(píng)論。
管理員擁有修改資源信息的權(quán)限,即管理員可以修改資源的標(biāo)題和資源的描述。
管理員可以刪除資源。管理員可以對(duì)不喜歡的資源進(jìn)行刪除。但是刪除前需要解除資源所有的附加關(guān)系。只有在一個(gè)資源沒(méi)有被任何其它資源附加時(shí),才能將該資源刪除。即,如果刪除的是論文,那么必須解除附加在論文上的所有代碼和數(shù)據(jù)集才能完成對(duì)論文的刪除。如果是代碼或數(shù)據(jù)集,必須刪除附加在其上的論文,才能將其刪除。刪除資源時(shí),一并刪除與其有關(guān)的評(píng)論、消息及磁盤(pán)上的對(duì)應(yīng)文件。
管理員可以對(duì)用戶進(jìn)行管理,包括通過(guò)用戶注冊(cè)、查看用戶信息、更改用戶信息和統(tǒng)計(jì)注冊(cè)用戶。通過(guò)用戶注冊(cè),即通過(guò)需要審核的用戶。用戶只有通過(guò)管理員的審核才能使用賬號(hào)登錄系統(tǒng)。查看用戶信息,即查看用戶的賬號(hào)、密碼、郵箱信息。更改用戶信息,是對(duì)用戶的賬號(hào)、密碼、郵箱的更新。統(tǒng)計(jì)注冊(cè)用戶,是對(duì)用戶在系統(tǒng)中活動(dòng)的統(tǒng)計(jì),包括統(tǒng)計(jì)某個(gè)用戶上傳的論文數(shù)量、代碼數(shù)量、數(shù)據(jù)集數(shù)量,上傳了哪些論文、哪些代碼、哪些數(shù)據(jù)集以及用戶在系統(tǒng)中發(fā)表了多少評(píng)論。
管理員可以對(duì)系統(tǒng)資源進(jìn)行統(tǒng)計(jì)。即管理員查看系統(tǒng)中資源數(shù)量,以及各個(gè)領(lǐng)域資源的分布情況。
3.基于SpringMVC的系統(tǒng)架構(gòu)實(shí)現(xiàn)
該系統(tǒng)為典型的瀏覽器服務(wù)器體系結(jié)構(gòu),其中服務(wù)器后臺(tái)基于SpringMVC和MySQL數(shù)據(jù)庫(kù),每個(gè)部分具體實(shí)現(xiàn)如下:
(1)請(qǐng)求分發(fā)器。該部分由SpringMVC實(shí)現(xiàn),僅需要在web.xml中配置即可。配置后,Web容器將請(qǐng)求交由SpringMVC管理。
(2)視圖解析器??梢詾榭刂破髋渲靡粋€(gè)默認(rèn)的視圖解析器,也可以使用注解指定視圖解析器,例如@ResponseBody。本平臺(tái)中同時(shí)將兩者結(jié)合使用。
(3)控制器??刂破靼鄠€(gè)實(shí)例,每一個(gè)控制器處理一個(gè)業(yè)務(wù)邏輯,例如登錄有對(duì)應(yīng)登錄的控制器,上傳資源有上傳資源的控制器。每個(gè)控制器是一個(gè)Java類(lèi)中的成員函數(shù),配置控制器不僅要在類(lèi)上使用@Controller注解以表明它是一個(gè)控制器類(lèi)外,還要在成員函數(shù)上映射一個(gè)URL,一般由@RequestMapping指定,當(dāng)前端訪問(wèn)此URL時(shí),就會(huì)調(diào)用相應(yīng)的控制器(成員函數(shù))去處理。
(4)服務(wù)層。服務(wù)層定義被多個(gè)控制器共同使用的功能,以便實(shí)現(xiàn)代碼的復(fù)用以及功能的靈活組合。一般地,在Java類(lèi)上使用@Service注解以表明這是一個(gè)服務(wù)層類(lèi)。研究資源管理平臺(tái)對(duì)服務(wù)層的實(shí)現(xiàn)甚少,僅實(shí)現(xiàn)了判斷資源是否重復(fù)的服務(wù)。
(5)數(shù)據(jù)持久層。數(shù)據(jù)持久層負(fù)責(zé)與數(shù)據(jù)庫(kù)進(jìn)行交互,主要實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的增、刪、改、查功能,實(shí)現(xiàn)了資源數(shù)據(jù)訪問(wèn)對(duì)象ResourceDAO、資源聯(lián)系數(shù)據(jù)訪問(wèn)對(duì)象ConnectDAO等,同時(shí)通過(guò)同名的xml文件配置了對(duì)Mabatis的映射。
以普通用戶資源上傳為例。用戶瀏覽資源上傳界面(例如代碼上傳), 瀏覽器通過(guò)POST訪問(wèn)formUserJudge這個(gè)控制器??刂破髡{(diào)用resourceUtil,resourceUtil將計(jì)算上傳資源的“標(biāo)題與描述”和系統(tǒng)中存在資源的“標(biāo)題與描述”的余弦相似性,通過(guò)判斷相似性來(lái)決定上傳的資源是否與系統(tǒng)中已有的資源重復(fù)。如果資源沒(méi)有重復(fù),瀏覽器再次發(fā)送POST請(qǐng)求調(diào)用formUserUpload控制器將文件上傳至服務(wù)器,控制器會(huì)拷貝文件至服務(wù)器指定目錄中,之后控制器返回給瀏覽器一個(gè)唯一的物理文件名。資源上傳過(guò)程中,資源的邏輯文件名、資源標(biāo)題、資源簡(jiǎn)介等信息通過(guò)POST提交給fromUserResourceUpload控制器,控制器將會(huì)把這些信息插入數(shù)據(jù)庫(kù)中。普通用戶上傳資源的流程順序圖如圖5所示。
另外,非法訪問(wèn)或傳遞非法參數(shù)可能使系統(tǒng)崩潰,為了系統(tǒng)安全,有必要在業(yè)務(wù)流程進(jìn)入控制器之前,使用Interceptor和SpringAOP對(duì)訪問(wèn)權(quán)限及訪問(wèn)參數(shù)進(jìn)行驗(yàn)證。如圖6所示。
大部分業(yè)務(wù)過(guò)程都會(huì)判斷有沒(méi)有登錄,如果沒(méi)有登錄,則不能繼續(xù)訪問(wèn),并強(qiáng)制瀏覽器跳轉(zhuǎn)到登錄界面。如果登錄了,則會(huì)再次驗(yàn)證是否有相應(yīng)的訪問(wèn)權(quán)限。如果遇到?jīng)]有權(quán)限的情況,則認(rèn)為是非法的訪問(wèn)。為防止不合法的參數(shù)進(jìn)入控制器造成處理異常或存入數(shù)據(jù)庫(kù)造成數(shù)據(jù)污染,在權(quán)限判定之后會(huì)進(jìn)行參數(shù)的驗(yàn)證,即驗(yàn)證參數(shù)是否符合設(shè)定的格式、長(zhǎng)度,例如判斷郵箱格式。只有通過(guò)了權(quán)限控制和參數(shù)驗(yàn)證兩重關(guān)口,請(qǐng)求才會(huì)被傳送到控制器中繼續(xù)處理業(yè)務(wù)邏輯。
4.Web系統(tǒng)的運(yùn)行效果
本文以北京林業(yè)大學(xué)信息學(xué)院文本挖掘與智能信息處理研究團(tuán)隊(duì)為依托,設(shè)計(jì)并實(shí)現(xiàn)了一套研究資源共享平臺(tái),系統(tǒng)運(yùn)行效果如圖7、圖8所示。該系統(tǒng)實(shí)現(xiàn)了資源的上傳、下載,添加資源關(guān)聯(lián)性,解決團(tuán)隊(duì)研究資源難以有效管理、高效共享的問(wèn)題,提升了研究資源管理的效率。提供了較友好的人機(jī)交互界面,且易于上手使用。
目前,該系統(tǒng)已經(jīng)在文本挖掘與智能信息處理研究團(tuán)隊(duì)的服務(wù)器上運(yùn)行,獲得了團(tuán)隊(duì)師生的肯定。該系統(tǒng)對(duì)推動(dòng)我國(guó)高校研究團(tuán)隊(duì)的研究資源信息化管理具有重大意義。
參考文獻(xiàn):
[1]倪曉鋒.基于SSM和Shiro的火電SIS系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2019(9):131-132,134.
[2]黃秀文.Web應(yīng)用系統(tǒng)中RBAC模型的研究與實(shí)現(xiàn)[J].武漢紡織大學(xué)學(xué)報(bào),2015(3):90-94.
[3]張文龍,吳林輝,楊晨耀,蔣衛(wèi)祥.基于SSM框架+vue的Web網(wǎng)盤(pán)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2019(34):62-63,65.
[4]韓銀鋒.JSP技術(shù)實(shí)現(xiàn)上傳壓縮文件及文件相關(guān)信息并解壓[J].電腦編程技巧與維護(hù),2015(7):18-19.
[5]timvandermeij.PDF Reader in JavaScript.Mozilla Labs[EB/OL].https://github.com/mozilla/pdf.js, 2020-03-03/2020-03-04.
[6]張振亞,王進(jìn),程紅梅,王煦法.基于余弦相似度的文本空間索引方法研究[J].計(jì)算機(jī)科學(xué),2005(9):160-163.
(編輯:王天鵬)