尹邦磊,王東梅,左 欣
(貴州師范學(xué)院 數(shù)學(xué)與大數(shù)據(jù)學(xué)院,貴州 貴陽 550018)
計(jì)算機(jī)類專業(yè)在工科教育中占有重要地位,其專業(yè)人數(shù)占整個信息類專業(yè)人數(shù)的50%左右[1]。根據(jù)美國勞工統(tǒng)計(jì)局的預(yù)測,2026年計(jì)算機(jī)類職位將占所有科學(xué)、技術(shù)、工程、數(shù)學(xué)類職位的63%[2]。然而,2019年麥克斯調(diào)研表明,畢業(yè)生找不到合適專業(yè)崗位與企業(yè)找不到合適人才的矛盾比較尖銳[3]。因此,提供一個技術(shù)交流型的論壇平臺,幫助計(jì)算機(jī)類學(xué)生盡可能地精通專業(yè)技術(shù),盡早樹立技術(shù)型的就業(yè)目標(biāo)是非常重要的。雖然國內(nèi)外有很多著名的論壇網(wǎng)站,但是針對大學(xué)生的網(wǎng)站運(yùn)用很少,搭建一個供師生就學(xué)習(xí)生活溝通的論壇網(wǎng)站很有必要[4]。
高校IT技術(shù)論壇采用B/S結(jié)構(gòu),前端頁面采用簡約美觀的輕量級框架BootStrap,后端基于Java開發(fā)的主流框架SpringBoot,數(shù)據(jù)庫用到了MySQL和Redis。為了更快地給用戶響應(yīng),額外使用了高效能的消息中間件Kafka。為了提高系統(tǒng)的抗壓能力,運(yùn)維端搭建了集群服務(wù),使用Nginx實(shí)現(xiàn)負(fù)載均衡。為了降低系統(tǒng)的運(yùn)維成本,運(yùn)維端采用Docker容器化技術(shù)搭建數(shù)據(jù)庫和Nginx服務(wù)。
高校IT技術(shù)論壇主要有帖子發(fā)布、點(diǎn)贊、評論、頂置、拉黑、刪除、關(guān)注、私信等功能。為了營造文明上網(wǎng)的良好環(huán)境,系統(tǒng)中加入了敏感詞過濾的功能[5]。用戶注冊需要使用真實(shí)郵箱激活賬號,加上樓主拉黑評論、管理員拉黑用戶或帖子的功能設(shè)置,可以有效地避免系統(tǒng)平臺被濫用。
一般來說,論壇的主要功能是讓訪問者在論壇上提出問題、討論問題、解決問題、分享心得及資源等。如果把每一條信息看作一個帖子,論壇的功能則是發(fā)布帖子、回復(fù)帖子、查看帖子、修改帖子、刪除帖子等。由此,論壇的設(shè)計(jì)就變成如何表示信息、管理信息[6]。
高校IT技術(shù)論壇分為6大功能模塊,分別是登錄模塊、用戶設(shè)置模塊、用戶個人中心模塊、帖子模塊、消息模塊、自學(xué)模塊(見圖1)。
圖1 系統(tǒng)功能層次
(1)用戶登錄模塊,是整個系統(tǒng)的安全基石和功能基礎(chǔ)。該模塊除了退出登錄,其余子模塊均要經(jīng)過驗(yàn)證碼或郵箱進(jìn)行安全驗(yàn)證。同時(shí),具有生成、驗(yàn)證登錄憑證的功能。通過攔截訪問請求、查詢登錄憑證,進(jìn)一步保障系統(tǒng)的安全性。登錄模塊是非登錄狀態(tài)下的功能,登錄后不提供注冊、登錄、忘記密碼等功能。
(2)用戶設(shè)置模塊,一方面是對于賬戶信息的基本設(shè)置,另一方面是為了滿足用戶的個性化需求,具有自定義頭像、選擇系統(tǒng)實(shí)名制等功能特點(diǎn)。用戶設(shè)置模塊是登錄狀態(tài)的功能,未登錄時(shí)不能訪問。
(3)用戶個人中心模塊,分為查看本人中心、查看他人中心兩種應(yīng)用場景。個人中心能看到用戶的基本信息、發(fā)布的帖子、發(fā)表的評論、關(guān)注列表以及粉絲列表。用戶個人中心模塊在非登錄狀態(tài)也能訪問,登錄后增加關(guān)注他人、刪除個人帖子、個人評論等功能。
(4)帖子模塊,是系統(tǒng)核心功能模塊,擁有發(fā)布、評論、點(diǎn)贊、頂置、拉黑、刪除等基本的論壇系統(tǒng)功能。帖子模塊在未登錄狀態(tài)只提供查看功能,在登錄狀態(tài)才增加其他功能,樓主登錄后可以對自己的帖子進(jìn)行頂置評論和拉黑評論的操作,管理員登錄額外增加頂置帖子、拉黑帖子等功能。
(5)消息模塊,分為私信消息模塊和系統(tǒng)通知模塊,其中系統(tǒng)通知是系統(tǒng)功能的重難點(diǎn),帖子模塊進(jìn)行的操作幾乎都要經(jīng)過系統(tǒng)通知模塊反饋消息給相關(guān)的用戶群體。消息模塊也是登錄狀態(tài)下提供的功能,未登錄狀態(tài)無法查看消息。
(6)自學(xué)模塊,是系統(tǒng)的文化中心,擁有Java開發(fā)、Web前端、Python開發(fā)、大數(shù)據(jù)技術(shù)4個自學(xué)專區(qū)。自學(xué)模塊不受登錄狀態(tài)影響,是系統(tǒng)的靜態(tài)模塊,可自由訪問。
系統(tǒng)采用MySQL作為關(guān)系型數(shù)據(jù)庫,實(shí)體關(guān)系如圖2所示。
圖2 數(shù)據(jù)庫實(shí)體關(guān)系
2.1.1 登錄模塊
系統(tǒng)針對登錄憑證單獨(dú)建立一個實(shí)體,用戶每次登錄生成唯一的一條有效憑證,舊憑證自動過期,以此避免一個用戶在多個客戶端登錄。
系統(tǒng)使用Spring攔截器應(yīng)對攔截訪問的需求,使用SpringBoot內(nè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ù)庫,不同場景、不同用戶的專屬驗(yàn)證碼字符均緩存在Redis中,在使用Nginx的背景下,實(shí)現(xiàn)登錄驗(yàn)證跨域跨集群,適應(yīng)高并發(fā)使用場景。
2.1.2 用戶設(shè)置模塊和用戶個人中心模塊
(1)用戶設(shè)置模塊,系統(tǒng)使用SpringMVC內(nèi)置對象MultipartFile實(shí)現(xiàn)上傳文件,實(shí)現(xiàn)用戶上傳個性頭像。
(2)用戶個人中心模塊,用戶的關(guān)注列舉以及粉絲列表保存在Redis數(shù)據(jù)庫中,減輕關(guān)系型數(shù)據(jù)庫關(guān)聯(lián)查詢的壓力。
2.1.3 帖子模塊
系統(tǒng)前端使用更高效的Thymeleaf模板引擎,以此應(yīng)對帖子模塊復(fù)雜的邏輯處理。點(diǎn)贊功能與Redis關(guān)聯(lián),避免頻繁的點(diǎn)贊操作拖累系統(tǒng)后臺的響應(yīng)效率。帖子模塊發(fā)布的信息均經(jīng)過后端格式化處理和敏感詞過濾,以此避免超文本內(nèi)容惡意攻擊以及敏感內(nèi)容的惡劣影響。
2.1.4 消息模塊和自學(xué)模塊
(1)消息模塊,系統(tǒng)使用Kafka發(fā)送系統(tǒng)通知,一方面更快地給用戶響應(yīng),適應(yīng)高并發(fā);另一方面提高系統(tǒng)的容錯性,增強(qiáng)可用性。
(2)自學(xué)模塊,收集了全國著名IT教育培訓(xùn)機(jī)構(gòu)在全網(wǎng)公布的免費(fèi)自學(xué)資源,主要來源于Bilibili網(wǎng),包含Java開發(fā)在內(nèi)的各個IT學(xué)科領(lǐng)域。
論壇系統(tǒng)的難點(diǎn)在于交互式、高并發(fā)的使用場景,但它的特色也是來自于交互使用、并發(fā)環(huán)境使用時(shí)產(chǎn)生的娛樂性和實(shí)用性。本文設(shè)計(jì)與實(shí)現(xiàn)的高校IT技術(shù)論壇基于Java開發(fā)、SpringBoot框架,最終滿足了娛樂性和實(shí)用性的需求,是一個適用于高校計(jì)算機(jī)類大學(xué)生使用的技術(shù)論壇平臺。目前,高校IT技術(shù)論壇的功能還有待完善。后期將會使用SpringSecurity,ElasticSearch等技術(shù)實(shí)現(xiàn)系統(tǒng)功能升級。此外還會開發(fā)一個后臺管理系統(tǒng),更好地維護(hù)論壇系統(tǒng)。