基于Springboot+Vue的校园招聘系统(进阶版)

本项目是一年前写的一个项目的升级版,因为某些原因将它作了一个升级改进,
好多兄弟来问有没有演示,现在先来写个说明!!!

目录

  • 一. 🦁 前言
  • 二. 🦁 开源代码与组件使用情况说明
  • 三. 🦁 核心功能
    • 1. 算法设计
    • 2. Md5加密算法
    • 3. 文件上传设计
    • 4. 部署项目
    • 5. VueX数据刷新丢失问题
  • 四. 🦁 演示效果
    • 1.管理员模块
      • 1.1 提供管理员对用户和企业进行管理。
      • 1.2 提供管理投递信息功能。
    • 2.企业模块
      • 2.1 提供发布、修改岗位信息功能
      • 2.2 查看申请职位列表
    • 3.用户模块
      • 3.1 提供用户注册和认证功能,确保用户身份的合法性。
      • 3.2 提供用户填写个人信息以及经历,确保信息的完整性。
      • 3.3 提供用户浏览岗位信息功能,以便选择合适的岗位。
      • 3.4 提供用户收藏和投递功能,确保用户选择到合适的公司。
      • 3.5 提供用户岗位推荐功能
  • 五. 🦁 总结

一. 🦁 前言

本系统是一个企业申请入驻校内招聘、校内学生应聘以及学校进行就业工作开展提供便携式平台。企业和学生的招聘信息均在线上录入。主要有三个端口:管理员端,企业端,用户端。管理员端主要对企业和用户进行管理以及对招聘信息进行审核;企业端主要包括发布招聘信息以及审核投递信息;用户端主要可以浏览招聘信息以及对岗位进行投递,系统根据用户的收藏信息对实时进行岗位推荐

二. 🦁 开源代码与组件使用情况说明

  • 使用SpringBoot 2.7.0框架完成项目后端框架的搭建

  • 使用Mybatis-Plus 3.5.0框架完成与数据库的交互

  • 使用SpringMVC开源框架完成界面逻辑和应用程序分离

  • 使用FastJSON(阿里巴巴JSON开源解析库)完成JSON对象的封装

  • 使用Vue框架完成前端框架的搭建

  • 使用ElementUI组件完成前端页面的快速布局

三. 🦁 核心功能

1. 算法设计

协同过滤算法的设计:本项目使用的是基于物品的协同过滤算法,由于对算法设计的流程不熟悉,网上的推荐一般都是python调用库的方式实现,所以在设计过程中走了一定的弯路,查阅大量资料才总结出规律:

构建职位-用户矩阵—计算职位之间的相似度—推荐得分最高的前K个职位

计算职位相似度采用的是余弦相似度计算公式,推荐得分最高的职位需要排序,这里涉及到了Java的一些特有的比较方法,例如Collections的自带的排序方法,而且借助Comparator对象重写了排序规则。

/**
     * similarity方法通过余弦相似度计算职位之间的相似度,根据用户收藏的id来计算相似度
      * @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方法根据用户的收藏情况和职位之间的相似度计算推荐得分,并返回前k个得分最高的职位
     * @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加密算法

首先只接收一个参数为password的参数,获取MessageDigest类的实例,该实例可以使用MD5算法进行加密;

接着将password字符串转化为字节数组,并计算该字节数组的MD5值;使用Java中的BigInteger类将计算出的MD5值转化为一个表示16进制的字符串

如果MD5加密后的字符串不足32位,则在字符串的前面加上0,使其长度为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. 文件上传设计

上传文件:上传文件并不是很难,但是这里涉及到了项目部署,部署到服务器之后,本地的路径就失效了,这里借助了Nginx反向代理技术将文件存储到服务器上。

4. 部署项目

这里使用的是阿里云服务器(centos 7.6),刚开始不熟悉docker的部署步骤,走了很多弯路。同时对于web项目利用nginx反向代理过程中,产生的跨域问题导致部署上线之后接口频频出错,通过修改配置项目基本路径以及对nginx代理过程中的配置进行拦截和重新设置,最终得以解决。

详细教程可看:https://lions.blog.csdn.net/article/details/128581369?spm=1001.2014.3001.5502

5. VueX数据刷新丢失问题

Vue项目中将从接口获取得到的信息存储在VueX中存在页面点击刷新会丢失数据的问题,以往通过每次刷新时重新调用接口进行数据获取,增加了代码量同时数据加载延迟,可以通过第三方组件vuex-along将数据进行持久化存储。这样将共用的用户信息、职位信息、消息等数据存储到Vuex中,即可做到全局组件可对数据调用、更新,提高数据加载速率。

四. 🦁 演示效果

1.管理员模块

1.1 提供管理员对用户和企业进行管理。

在这里插入图片描述

1.2 提供管理投递信息功能。

在这里插入图片描述

2.企业模块

2.1 提供发布、修改岗位信息功能

在这里插入图片描述
在这里插入图片描述

2.2 查看申请职位列表

**在这里插入图片描述**

3.用户模块

3.1 提供用户注册和认证功能,确保用户身份的合法性。

在这里插入图片描述

3.2 提供用户填写个人信息以及经历,确保信息的完整性。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 提供用户浏览岗位信息功能,以便选择合适的岗位。

在这里插入图片描述

3.4 提供用户收藏和投递功能,确保用户选择到合适的公司。

在这里插入图片描述

3.5 提供用户岗位推荐功能

根据用户的收藏记录,对用户进行岗位推荐,提高招聘成功率。
在这里插入图片描述

五. 🦁 总结

历时两周改完,改这个一年前写过的项目确实是有不小困难的,好多逻辑都忘记了,而且现在回看以前写过的代码和设计的数据库,都感觉好多不合理的地方,很多时候都有点看不下去的感觉,那也说明咱相对以前还是进步了嘛!你说不是?🌹,希望还能接触到更多更好的项目,加油!!!

源码获取:https://download.csdn.net/download/m0_58847451/87694471?spm=1001.2014.3001.5503

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/32413.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt之事件过滤器讲解并且实现快捷键切换鼠标焦点

目录 1、需求背景2、使用Qt键盘事件3、安装事件过滤器4、事件处理级别 1、需求背景 现在有一个类似于下方图的ui&#xff0c;用户需要在输入前一行内容后&#xff0c;需要摁下指定案件能够跳转到下一行继续进行输入。 2、使用Qt键盘事件 一种更为直接的解决方案是子类化QLi…

如何在 Linux 中安装、设置和使用 SNMP?

概要 SNMP&#xff08;Simple Network Management Protocol&#xff09;是一种用于管理和监控网络设备的协议。它允许网络管理员通过远程方式收集设备的运行状态、性能数据和错误信息&#xff0c;以便进行故障排除和网络优化。在Linux系统中&#xff0c;我们可以安装、设置和使…

IDEA配置本地Maven详细教程

IDEA配置本地Maven详细教程 一、下载二、安装三、配置环境变量四、IDEA配置Maven 一、下载 官网下载&#xff1a;点击下载 网盘下载&#xff1a;点击下载 二、安装 将下载后的zip文件&#xff08;免安装版&#xff09;解压到自己想要放的位置&#xff0c;&#xff0c;我这里…

对MVVM和MVC开发模式的理解

对MVVM和MVC开发模式的理解 1、MVVM2、MVC3、MVVM与MVC的区别 1、MVVM MVVM最早由微软提出来&#xff0c;它借鉴了桌面应用程序的MVC思想&#xff0c;在前端页面中&#xff0c;把Model用纯JavaScript对象表示&#xff0c;View负责显示&#xff0c;两者做到了最大限度的分离&am…

UE4/5 通过Control rig的FullBody【蜘蛛模型,不用basic ik】

目录 根设置 FullBody IK 额外骨设置 ​编辑 晃动效果 根设置 第一步你需要准备一个蜘蛛模型&#xff0c;不论是官方示例或者是epic上购买的模型 然后我用的是epic上面购买的一个眼球蜘蛛&#xff1a; 第一步&#xff0c;我们从根创建一个空项【这个记得脱离父子级到root之…

多传感器时频信号处理:多通道非平稳数据的分析工具(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

四、用户管理

云尚办公系统&#xff1a;用户管理 B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布&#xff0c;并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步&#xff01;&#xff01;&#x…

【服务器远程工具】一款好用的xshell

这里写目录标题 背景Tabby简介安装使用SSHSFTPPowerShellGit 设置外观颜色快捷键窗口 插件支持总结 背景 作为一名后端开发&#xff0c;我们经常需要和Linux系统打交道&#xff0c;免不了要使用Xshell这类终端工具来进行远程管理。今天给大家推荐一款更炫酷的终端工具Tabby&…

【SQL应知应会】分析函数的点点滴滴(三)

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 分析函数的点点滴滴 1.什么是分析函数&#xff1a;…

计算机中CPU、内存、缓存的关系

CPU&#xff08;Central Processing Unit&#xff0c;中央处理器&#xff09; 内存&#xff08;Random Access Memory&#xff0c;随机存取存储器&#xff09; 缓存&#xff08;Cache&#xff09; CPU、内存和缓存之间有着密切的关系&#xff0c;它们共同构成了计算机系统的核…

go-cqhttp签名服务sign-server的本地搭建

新版go-cqhttp新增签名服务器签名服务器相关问题 Issue #2242 Mrs4s/go-cqhttp GitHubhttps://github.com/Mrs4s/go-cqhttp/issues/2242 其在win10系统下本地化搭建的方式为&#xff1a; 1.解压缩qq安装包提取lib里面的libfekit.so、libQSec.so文件并存放至一个文件夹&…

nodejs高版本降为低版本的详细解决方案

部分老旧项目需要使用低版本的node,网上很多是无效的,高版本无法直接安装低版本node,但是低版本nodejs可以安装部分高版本node,从而达到升级效果,下面这篇文章主要给大家介绍了关于nodejs高版本降为低版本的详细解决方案,需要的朋友可以参考下 1.首先通过控制面板应用卸载当前环…

Spark 4/5

4. 启动Spark Shell编程 4.1 什么是Spark Shell spark shell是spark中的交互式命令行客户端&#xff0c;可以在spark shell中使用scala编写spark程序&#xff0c;启动后默认已经创建了SparkContext&#xff0c;别名为sc 4.2 启动Spark Shell Shell /opt/apps/spark-3.2.3-bi…

opencv检测二维码和条形码

文章目录 1 excel制作简单二维码2 识别二维码和条形码2.1 相关库2.2 decode解码2.3 圈出二维码的位置2.4 判断二维码是否授权 3 完整代码3.1 使用图片进行识别3.2 使用摄像头实时识别 4 总结 1 excel制作简单二维码 使用excel可以实现制作二维码&#xff0c;但只能实现做英文和…

Docker容器日志管理详解

1. 简介 Docker容器日志是指容器在运行过程中产生的各种日志信息&#xff0c;包括错误、警告、信息等。Docker将所有容器的日志统一管理&#xff0c;方便用户对容器进行监控、故障排查和性能分析。 1.1 什么是Docker容器日志 Docker容器日志是容器在运行过程中产生的各种日志…

ASEMI代理NXP高压三端双向可控硅BT139-800E综合指南

编辑-Z BT139-800E是一种高压三端双向可控硅开关&#xff0c;近年来由于其卓越的性能和多功能性而广受欢迎。这种强大的半导体器件广泛应用于各种应用&#xff0c;包括电机控制、照明控制和温度调节。 BT139-800E的特点 1.高压能力&#xff1a;BT139-800E设计用于处理高压&am…

[Leetcode] 0026. 删除有序数组中的重复项

26. 删除有序数组中的重复项 点击上方&#xff0c;跳转至Leetcode 题目描述 给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语…

yum安装LNMP

目录 前言 一、yum安装要用在线yum源 二、安装Nginx 1、搭建Nginx环境 2、安装yum 3、查看Nginx是否安装成功 4、设置开机自启 三、安装MySQL 1、除系统中所有以"mariadb"开头的软件包 2、安装MySQL 3、设置开机自启 4、查看MySQL初始密码 5、修改MySQL密码…

C#和LABVIEW的对决:哪种上位机编程语言更适合你?

今天&#xff0c;我们将谈论主流的上位机编程语言。你听说过C#和LABVIEW吗&#xff1f;它们是的上位机编程语言&#xff0c;C#作为自动化主流编程语言特别受欢迎&#xff0c;LABVIEW用于自动化测试&#xff0c; 首先&#xff0c;我们来了解C#语言。C#是一种文本语言&#xff0c…

Docker教程

Docker 能解决的问题 ⾸先&#xff0c;我们先来看⼏个问题&#xff1a; 1. 合作开发的时候&#xff0c;在本机可以运⾏&#xff0c;在别⼈的电脑上跑不起来。 这⾥我们以 Java Web 应⽤程序为例&#xff0c;⼀个 Java Web 应⽤程序涉及很多东⻄&#xff0c;⽐如 JDK 、 Tomc…