本項(xiàng)目是一年前寫(xiě)的一個(gè)項(xiàng)目的升級(jí)版,因?yàn)槟承┰驅(qū)⑺髁艘粋€(gè)升級(jí)改進(jìn),
好多兄弟來(lái)問(wèn)有沒(méi)有演示,現(xiàn)在先來(lái)寫(xiě)個(gè)說(shuō)明?。?!
一. ?? 前言
本系統(tǒng)是一個(gè)企業(yè)申請(qǐng)入駐校內(nèi)招聘、校內(nèi)學(xué)生應(yīng)聘以及學(xué)校進(jìn)行就業(yè)工作開(kāi)展提供便攜式平臺(tái)。企業(yè)和學(xué)生的招聘信息均在線(xiàn)上錄入。主要有三個(gè)端口:管理員端,企業(yè)端,用戶(hù)端。管理員端主要對(duì)企業(yè)和用戶(hù)進(jìn)行管理以及對(duì)招聘信息進(jìn)行審核;企業(yè)端主要包括發(fā)布招聘信息以及審核投遞信息;用戶(hù)端主要可以瀏覽招聘信息以及對(duì)崗位進(jìn)行投遞,系統(tǒng)根據(jù)用戶(hù)的收藏信息對(duì)實(shí)時(shí)進(jìn)行崗位推薦
。
二. ?? 開(kāi)源代碼與組件使用情況說(shuō)明
-
使用SpringBoot 2.7.0框架完成項(xiàng)目后端框架的搭建
-
使用Mybatis-Plus 3.5.0框架完成與數(shù)據(jù)庫(kù)的交互
-
使用SpringMVC開(kāi)源框架完成界面邏輯和應(yīng)用程序分離
-
使用FastJSON(阿里巴巴JSON開(kāi)源解析庫(kù))完成JSON對(duì)象的封裝
-
使用Vue框架完成前端框架的搭建
-
使用ElementUI組件完成前端頁(yè)面的快速布局
三. ?? 核心功能
1. 算法設(shè)計(jì)
協(xié)同過(guò)濾算法
的設(shè)計(jì):本項(xiàng)目使用的是基于物品的協(xié)同過(guò)濾算法
,由于對(duì)算法設(shè)計(jì)的流程不熟悉,網(wǎng)上的推薦一般都是python調(diào)用庫(kù)的方式實(shí)現(xiàn),所以在設(shè)計(jì)過(guò)程中走了一定的彎路,查閱大量資料才總結(jié)出規(guī)律:
構(gòu)建職位-用戶(hù)矩陣—計(jì)算職位之間的相似度—推薦得分最高的前K個(gè)職位
計(jì)算職位相似度采用的是余弦相似度計(jì)算公式,推薦得分最高的職位需要排序,這里涉及到了Java的一些特有的比較方法,例如Collections的自帶的排序方法,而且借助Comparator對(duì)象重寫(xiě)了排序規(guī)則。
/**
* similarity方法通過(guò)余弦相似度計(jì)算職位之間的相似度,根據(jù)用戶(hù)收藏的id來(lái)計(jì)算相似度
* @param p1
* @param p2
* @return
*/
private double similarity(int p1, int p2) {
int sum1 = 0, sum2 = 0, sum3 = 0;
for (int i = 0; i < matrix.length; i++) {
if (matrix[i][p1] > 0 && matrix[i][p2] > 0) {
sum1 += matrix[i][p1] * matrix[i][p2];
sum2 += matrix[i][p1] * matrix[i][p1];
sum3 += matrix[i][p2] * matrix[i][p2];
}
}
double sim = sum1 / (Math.sqrt(sum2) * Math.sqrt(sum3));
return sim;
}
/**
* recommend方法根據(jù)用戶(hù)的收藏情況和職位之間的相似度計(jì)算推薦得分,并返回前k個(gè)得分最高的職位
* @param userId
* @param k
* @return
*/
private List<Integer> recommend(int userId, int k) {
List<Integer> items = new ArrayList<>();
Map<Integer, Double> scores = new HashMap<>();
for (int i = 1; i < matrix[1].length; i++) {
if (matrix[userId][i] == 0) {
double score = 0;
for (int j = 1; j < matrix[1].length; j++) {
if (matrix[userId][j] > 0) {
double sim = similarity(i, j);
score += sim * matrix[userId][j];
}
}
scores.put(i, score);
}
}
2. Md5加密算法
首先只接收一個(gè)參數(shù)為password的參數(shù),獲取MessageDigest類(lèi)的實(shí)例,該實(shí)例可以使用MD5算法
進(jìn)行加密;
接著將password字符串轉(zhuǎn)化為字節(jié)數(shù)組,并計(jì)算該字節(jié)數(shù)組的MD5值;使用Java中的BigInteger類(lèi)將計(jì)算出的MD5值轉(zhuǎn)化為一個(gè)表示16進(jìn)制的字符串;
如果MD5加密后的字符串不足32位,則在字符串的前面加上0,使其長(zhǎng)度為32;最后返回MD5加密后的字符串。
public class Md5Utils {
public static String md5(String password) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(password.getBytes());
BigInteger number = new BigInteger(1, messageDigest);
String md5 = number.toString(16);
while (md5.length() < 32){
md5 = "0" + md5;
}
return md5;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
3. 文件上傳設(shè)計(jì)
上傳文件:上傳文件并不是很難,但是這里涉及到了項(xiàng)目部署,部署到服務(wù)器之后,本地的路徑就失效了,這里借助了Nginx反向代理技術(shù)將文件存儲(chǔ)到服務(wù)器上。
4. 部署項(xiàng)目
這里使用的是阿里云服務(wù)器(centos 7.6),剛開(kāi)始不熟悉docker的部署步驟,走了很多彎路。同時(shí)對(duì)于web項(xiàng)目利用nginx反向代理過(guò)程中,產(chǎn)生的跨域問(wèn)題導(dǎo)致部署上線(xiàn)之后接口頻頻出錯(cuò),通過(guò)修改配置項(xiàng)目基本路徑以及對(duì)nginx代理過(guò)程中的配置進(jìn)行攔截和重新設(shè)置,最終得以解決。
詳細(xì)教程可看:https://lions.blog.csdn.net/article/details/128581369?spm=1001.2014.3001.5502
5. VueX數(shù)據(jù)刷新丟失問(wèn)題
Vue項(xiàng)目中將從接口獲取得到的信息存儲(chǔ)在VueX中存在頁(yè)面點(diǎn)擊刷新會(huì)丟失數(shù)據(jù)的問(wèn)題,以往通過(guò)每次刷新時(shí)重新調(diào)用接口進(jìn)行數(shù)據(jù)獲取,增加了代碼量同時(shí)數(shù)據(jù)加載延遲,可以通過(guò)第三方組件vuex-along將數(shù)據(jù)進(jìn)行持久化存儲(chǔ)。這樣將共用的用戶(hù)信息、職位信息、消息等數(shù)據(jù)存儲(chǔ)到Vuex中,即可做到全局組件可對(duì)數(shù)據(jù)調(diào)用、更新,提高數(shù)據(jù)加載速率。
四. ?? 演示效果
1.管理員模塊
1.1 提供管理員對(duì)用戶(hù)和企業(yè)進(jìn)行管理。
1.2 提供管理投遞信息功能。
2.企業(yè)模塊
2.1 提供發(fā)布、修改崗位信息功能
2.2 查看申請(qǐng)職位列表
3.用戶(hù)模塊
3.1 提供用戶(hù)注冊(cè)和認(rèn)證功能,確保用戶(hù)身份的合法性。
3.2 提供用戶(hù)填寫(xiě)個(gè)人信息以及經(jīng)歷,確保信息的完整性。
3.3 提供用戶(hù)瀏覽崗位信息功能,以便選擇合適的崗位。
3.4 提供用戶(hù)收藏和投遞功能,確保用戶(hù)選擇到合適的公司。
3.5 提供用戶(hù)崗位推薦功能
根據(jù)用戶(hù)的收藏記錄,對(duì)用戶(hù)進(jìn)行崗位推薦,提高招聘成功率。
五. ?? 總結(jié)
歷時(shí)兩周改完,改這個(gè)一年前寫(xiě)過(guò)的項(xiàng)目確實(shí)是有不小困難的,好多邏輯都忘記了,而且現(xiàn)在回看以前寫(xiě)過(guò)的代碼和設(shè)計(jì)的數(shù)據(jù)庫(kù),都感覺(jué)好多不合理的地方,很多時(shí)候都有點(diǎn)看不下去的感覺(jué),那也說(shuō)明咱相對(duì)以前還是進(jìn)步了嘛!你說(shuō)不是???,希望還能接觸到更多更好的項(xiàng)目,加油?。。?mark hidden color="red">文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-467414.html
源碼獲?。篽ttps://download.csdn.net/download/m0_58847451/87694471?spm=1001.2014.3001.5503文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-467414.html
到了這里,關(guān)于基于Springboot+Vue的校園招聘系統(tǒng)(進(jìn)階版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!