尹邦磊,王東梅,左 欣
(貴州師范學(xué)院 數(shù)學(xué)與大數(shù)據(jù)學(xué)院,貴州 貴陽(yáng) 550018)
計(jì)算機(jī)類(lèi)專(zhuān)業(yè)在工科教育中占有重要地位,其專(zhuān)業(yè)人數(shù)占整個(gè)信息類(lèi)專(zhuān)業(yè)人數(shù)的50%左右[1]。根據(jù)美國(guó)勞工統(tǒng)計(jì)局的預(yù)測(cè),2026年計(jì)算機(jī)類(lèi)職位將占所有科學(xué)、技術(shù)、工程、數(shù)學(xué)類(lèi)職位的63%[2]。然而,2019年麥克斯調(diào)研表明,畢業(yè)生找不到合適專(zhuān)業(yè)崗位與企業(yè)找不到合適人才的矛盾比較尖銳[3]。因此,提供一個(gè)技術(shù)交流型的論壇平臺(tái),幫助計(jì)算機(jī)類(lèi)學(xué)生盡可能地精通專(zhuān)業(yè)技術(shù),盡早樹(shù)立技術(shù)型的就業(yè)目標(biāo)是非常重要的。雖然國(guó)內(nèi)外有很多著名的論壇網(wǎng)站,但是針對(duì)大學(xué)生的網(wǎng)站運(yùn)用很少,搭建一個(gè)供師生就學(xué)習(xí)生活溝通的論壇網(wǎng)站很有必要[4]。
高校IT技術(shù)論壇采用B/S結(jié)構(gòu),前端頁(yè)面采用簡(jiǎn)約美觀(guān)的輕量級(jí)框架BootStrap,后端基于Java開(kāi)發(fā)的主流框架SpringBoot,數(shù)據(jù)庫(kù)用到了MySQL和Redis。為了更快地給用戶(hù)響應(yīng),額外使用了高效能的消息中間件Kafka。為了提高系統(tǒng)的抗壓能力,運(yùn)維端搭建了集群服務(wù),使用Nginx實(shí)現(xiàn)負(fù)載均衡。為了降低系統(tǒng)的運(yùn)維成本,運(yùn)維端采用Docker容器化技術(shù)搭建數(shù)據(jù)庫(kù)和Nginx服務(wù)。
高校IT技術(shù)論壇主要有帖子發(fā)布、點(diǎn)贊、評(píng)論、頂置、拉黑、刪除、關(guān)注、私信等功能。為了營(yíng)造文明上網(wǎng)的良好環(huán)境,系統(tǒng)中加入了敏感詞過(guò)濾的功能[5]。用戶(hù)注冊(cè)需要使用真實(shí)郵箱激活賬號(hào),加上樓主拉黑評(píng)論、管理員拉黑用戶(hù)或帖子的功能設(shè)置,可以有效地避免系統(tǒng)平臺(tái)被濫用。
一般來(lái)說(shuō),論壇的主要功能是讓訪(fǎng)問(wèn)者在論壇上提出問(wèn)題、討論問(wèn)題、解決問(wèn)題、分享心得及資源等。如果把每一條信息看作一個(gè)帖子,論壇的功能則是發(fā)布帖子、回復(fù)帖子、查看帖子、修改帖子、刪除帖子等。由此,論壇的設(shè)計(jì)就變成如何表示信息、管理信息[6]。
高校IT技術(shù)論壇分為6大功能模塊,分別是登錄模塊、用戶(hù)設(shè)置模塊、用戶(hù)個(gè)人中心模塊、帖子模塊、消息模塊、自學(xué)模塊(見(jiàn)圖1)。

圖1 系統(tǒng)功能層次
(1)用戶(hù)登錄模塊,是整個(gè)系統(tǒng)的安全基石和功能基礎(chǔ)。該模塊除了退出登錄,其余子模塊均要經(jīng)過(guò)驗(yàn)證碼或郵箱進(jìn)行安全驗(yàn)證。同時(shí),具有生成、驗(yàn)證登錄憑證的功能。通過(guò)攔截訪(fǎng)問(wèn)請(qǐng)求、查詢(xún)登錄憑證,進(jìn)一步保障系統(tǒng)的安全性。登錄模塊是非登錄狀態(tài)下的功能,登錄后不提供注冊(cè)、登錄、忘記密碼等功能。
(2)用戶(hù)設(shè)置模塊,一方面是對(duì)于賬戶(hù)信息的基本設(shè)置,另一方面是為了滿(mǎn)足用戶(hù)的個(gè)性化需求,具有自定義頭像、選擇系統(tǒng)實(shí)名制等功能特點(diǎn)。用戶(hù)設(shè)置模塊是登錄狀態(tài)的功能,未登錄時(shí)不能訪(fǎng)問(wèn)。
(3)用戶(hù)個(gè)人中心模塊,分為查看本人中心、查看他人中心兩種應(yīng)用場(chǎng)景。個(gè)人中心能看到用戶(hù)的基本信息、發(fā)布的帖子、發(fā)表的評(píng)論、關(guān)注列表以及粉絲列表。用戶(hù)個(gè)人中心模塊在非登錄狀態(tài)也能訪(fǎng)問(wèn),登錄后增加關(guān)注他人、刪除個(gè)人帖子、個(gè)人評(píng)論等功能。
(4)帖子模塊,是系統(tǒng)核心功能模塊,擁有發(fā)布、評(píng)論、點(diǎn)贊、頂置、拉黑、刪除等基本的論壇系統(tǒng)功能。帖子模塊在未登錄狀態(tài)只提供查看功能,在登錄狀態(tài)才增加其他功能,樓主登錄后可以對(duì)自己的帖子進(jìn)行頂置評(píng)論和拉黑評(píng)論的操作,管理員登錄額外增加頂置帖子、拉黑帖子等功能。
(5)消息模塊,分為私信消息模塊和系統(tǒng)通知模塊,其中系統(tǒng)通知是系統(tǒng)功能的重難點(diǎn),帖子模塊進(jìn)行的操作幾乎都要經(jīng)過(guò)系統(tǒng)通知模塊反饋消息給相關(guān)的用戶(hù)群體。消息模塊也是登錄狀態(tài)下提供的功能,未登錄狀態(tài)無(wú)法查看消息。
(6)自學(xué)模塊,是系統(tǒng)的文化中心,擁有Java開(kāi)發(fā)、Web前端、Python開(kāi)發(fā)、大數(shù)據(jù)技術(shù)4個(gè)自學(xué)專(zhuān)區(qū)。自學(xué)模塊不受登錄狀態(tài)影響,是系統(tǒng)的靜態(tài)模塊,可自由訪(fǎng)問(wèn)。
系統(tǒng)采用MySQL作為關(guān)系型數(shù)據(jù)庫(kù),實(shí)體關(guān)系如圖2所示。

圖2 數(shù)據(jù)庫(kù)實(shí)體關(guān)系
2.1.1 登錄模塊
系統(tǒng)針對(duì)登錄憑證單獨(dú)建立一個(gè)實(shí)體,用戶(hù)每次登錄生成唯一的一條有效憑證,舊憑證自動(dòng)過(guò)期,以此避免一個(gè)用戶(hù)在多個(gè)客戶(hù)端登錄。
系統(tǒng)使用Spring攔截器應(yīng)對(duì)攔截訪(fǎng)問(wèn)的需求,使用SpringBoot內(nèi)置依賴(lài)spring-boot-starter-mail實(shí)現(xiàn)發(fā)送郵件的功能。
系統(tǒng)后端使用Kaptcha工具生成驗(yàn)證碼字符,驗(yàn)證碼圖片以字節(jié)流的方式發(fā)送給前端,實(shí)現(xiàn)更安全的驗(yàn)證碼后端邏輯判斷。
系統(tǒng)額外使用了Redis數(shù)據(jù)庫(kù),不同場(chǎng)景、不同用戶(hù)的專(zhuān)屬驗(yàn)證碼字符均緩存在Redis中,在使用Nginx的背景下,實(shí)現(xiàn)登錄驗(yàn)證跨域跨集群,適應(yīng)高并發(fā)使用場(chǎng)景。
2.1.2 用戶(hù)設(shè)置模塊和用戶(hù)個(gè)人中心模塊
(1)用戶(hù)設(shè)置模塊,系統(tǒng)使用SpringMVC內(nèi)置對(duì)象MultipartFile實(shí)現(xiàn)上傳文件,實(shí)現(xiàn)用戶(hù)上傳個(gè)性頭像。
(2)用戶(hù)個(gè)人中心模塊,用戶(hù)的關(guān)注列舉以及粉絲列表保存在Redis數(shù)據(jù)庫(kù)中,減輕關(guān)系型數(shù)據(jù)庫(kù)關(guān)聯(lián)查詢(xún)的壓力。
2.1.3 帖子模塊
系統(tǒng)前端使用更高效的Thymeleaf模板引擎,以此應(yīng)對(duì)帖子模塊復(fù)雜的邏輯處理。點(diǎn)贊功能與Redis關(guān)聯(lián),避免頻繁的點(diǎn)贊操作拖累系統(tǒng)后臺(tái)的響應(yīng)效率。帖子模塊發(fā)布的信息均經(jīng)過(guò)后端格式化處理和敏感詞過(guò)濾,以此避免超文本內(nèi)容惡意攻擊以及敏感內(nèi)容的惡劣影響。
2.1.4 消息模塊和自學(xué)模塊
(1)消息模塊,系統(tǒng)使用Kafka發(fā)送系統(tǒng)通知,一方面更快地給用戶(hù)響應(yīng),適應(yīng)高并發(fā);另一方面提高系統(tǒng)的容錯(cuò)性,增強(qiáng)可用性。
(2)自學(xué)模塊,收集了全國(guó)著名IT教育培訓(xùn)機(jī)構(gòu)在全網(wǎng)公布的免費(fèi)自學(xué)資源,主要來(lái)源于Bilibili網(wǎng),包含Java開(kāi)發(fā)在內(nèi)的各個(gè)IT學(xué)科領(lǐng)域。
論壇系統(tǒng)的難點(diǎn)在于交互式、高并發(fā)的使用場(chǎng)景,但它的特色也是來(lái)自于交互使用、并發(fā)環(huán)境使用時(shí)產(chǎn)生的娛樂(lè)性和實(shí)用性。本文設(shè)計(jì)與實(shí)現(xiàn)的高校IT技術(shù)論壇基于Java開(kāi)發(fā)、SpringBoot框架,最終滿(mǎn)足了娛樂(lè)性和實(shí)用性的需求,是一個(gè)適用于高校計(jì)算機(jī)類(lèi)大學(xué)生使用的技術(shù)論壇平臺(tái)。目前,高校IT技術(shù)論壇的功能還有待完善。后期將會(huì)使用SpringSecurity,ElasticSearch等技術(shù)實(shí)現(xiàn)系統(tǒng)功能升級(jí)。此外還會(huì)開(kāi)發(fā)一個(gè)后臺(tái)管理系統(tǒng),更好地維護(hù)論壇系統(tǒng)。
無(wú)線(xiàn)互聯(lián)科技2021年17期