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

news2024/11/29 3:58:54

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

目录

  • 一. 🦁 前言
  • 二. 🦁 开源代码与组件使用情况说明
  • 三. 🦁 核心功能
    • 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工作笔记-volta,package打包,

第一个 &#xff1a;前端项目启动错误 今天写前端工程的时候&#xff0c;运行了npm run dev&#xff0c;结果出现以下问题&#xff0c; 先认为是node版本原因&#xff0c;我的是14&#xff0c;同事说要切换到12&#xff0c;于是切到了12&#xff0c; 用到了volta , 安装和使用…

大咖云集共话AIGC,亚马逊云科技中国峰会亮点抢先看

充满想象的AIGC时代&#xff0c;企业如何抓住机遇实现双效提升&#xff1f;要说2023年科技圈顶流话题&#xff0c;非AIGC&#xff08;AI-generated Content&#xff0c;人工智能生成内容&#xff09;莫属。当前&#xff0c;以GPT模型为代表的AIGC正在持续渗透各行各业&#xff…

信道的数学模型

本专栏包含信息论与编码的核心知识&#xff0c;按知识点组织&#xff0c;可作为教学或学习的参考。markdown版本已归档至【Github仓库&#xff1a;https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 信道的数学模型广义…

OpenMMLab-AI实战营第二期-课程笔记-Class 1:开营仪式OpenMMLab概述

Class 1&#xff1a;开营仪式&OpenMMLab概述 文章目录 Class 1&#xff1a;开营仪式&OpenMMLab概述开营仪式OpenMMLab 简介why&#xff1f;when&#xff1f;what&#xff1f;for who&#xff1f;OpenMMLab 总体框架 二十分钟入门计算机视觉开源神器OpenMMLabOpenMMLab概…

SQL审核工具Yearning搭建及使用

一、背景 实际的业务场景中&#xff0c;我们难免会直接对生产库的数据进行修改。很多朋友都是发sql给运维&#xff0c;然后运维执行。过程不可控&#xff0c;出错几率很大。 而且没有审核&#xff0c;不知道提交的具体是什么sql&#xff0c;极有可能是删库跑路的sql&#xff0…

0基础学习VR全景平台篇第34篇:场景功能-沙盘功能

本期为大家带来蛙色VR平台&#xff0c;场景功能—沙盘功能的操作讲解。 功能位置示意 一、本功能将用在哪里&#xff1f; 沙盘功能&#xff0c;可将区域的平面图、卫星图、手绘图等上传或直接使用高德地图信息&#xff0c;嵌入在VR全景作品中呈现出来&#xff1b; 支持嵌入沙…

【OpenCV】OpenCV4.7.0 + Visual Studio 2019环境配置 + 运行opencv

本文目录 01、OpenCV的下载与安装02、Visual Studio 2019环境配置03、OpenCV接口测试 01、OpenCV的下载与安装 这里贴上网址&#xff1a; https://opencv.org/ 进入会看到主界面&#xff0c;跟着一步一步来下载就好&#xff1a; 当把上面这个下载下来之后&#xff0c;会得到一…

git merge和git rebase有什么区别?

git merge和git rebase有什么区别 git rebase和git merge是在日常开发中常用的用于分支合并的命令&#xff0c;也是非常容易误用的两个命令。本文将通过图文的方式去详解二者之间的区别。 git merge git merge会为本次的合并过程生成一条新的commit&#xff0c;并将该commit…

亚马逊云科技中国峰会带你玩转AIGC全攻略原

充满想象的AIGC时代&#xff0c;企业如何抓住机遇实现双效提升&#xff1f;要说2023年科技圈顶流话题&#xff0c;非AIGC&#xff08;AI-generated Content&#xff0c;人工智能生成内容&#xff09;莫属。当前&#xff0c;以GPT模型为代表的AIGC正在持续渗透各行各业&#xff…

LLVM for TVM

田海立CSDN 2023-06-01 本文简明列举LLVM作为target&#xff0c;如何集成到TVM里的。 {cmake/modules/LLVM.cmake} 0. 设置编译选项 -- USE_LLVM build option: - USE_LLVM: ON/OFF/<path to llvm-config> {set in cmake/config.cmake, and copy into build/} 1. 执行…

Linux系统上安装VScode且配置C/C++环境

Linux系统给人的印象一直是命令行的形式&#xff0c;今天终于长了见识&#xff0c;其实Linux系统也可以像Windows系统一样&#xff0c;安装、使用VScode软件 1 进入VScode官网下载VScode Linux安装版2 将下载到电脑上压缩包通过tcp指令传到Linux系统上3 在放置安装包的目录下通…

java实现文档部分预览与全预览功能

这里使用的是kkFileView插件&#xff0c;部署在服务器上&#xff0c;使用其生成预览内容&#xff0c;官网地址是&#xff1a;kkFileView - 在线文件预览 下载地址为&#xff1a;kkFileView 4.1.0 版本发布&#xff0c;开源在线文件预览解决方案 - OSCHINA - 中文开源技术交流社…

ANR日志分析全面解析

一、概述 解决ANR一直是Android 开发者需要掌握的重要技巧&#xff0c;一般从三个方面着手。 开发阶段&#xff1a;通过工具检查各个方法的耗时&#xff0c;卡顿情况&#xff0c;发现一处修改一处。 线上阶段&#xff1a;这个阶段主要依靠监控工具发现ANR并上报&#xff0c;比…

linux(system V标准)进程间通信2

目录&#xff1a; 1.回顾上一节的代码 2.shmat、shmdt的使用 3.共享内存的大小为什么最好设置成4096字节的整数倍呢&#xff1f; 4.操作系统如何管理共享内存的 ----------------------------------------------------------------------------------------------------------…

SpringMVC04:数据处理及跳转

目录 一、跳转方式ModelAndView 二、ServletAPI 三、SpringMVC 四、数据处理&#xff1a;处理提交数据 1、提交的域名称和处理方法的参数名一致 2、提交的域名称和处理方法的参数名不一致 3、提交的是一个对象 五、数据显示到前端 1、通过ModelAndView 2、通过ModelM…

Nginx的使用和有关配置

&#x1f331;Nginx的基础使用和有关配置。 &#x1f4eb;相关软件:链接地址 文章目录 Nginx目录结构Nginx基本运行原理Nginx的基本配置文件 Nginx目录结构 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件…

dstat 好用的可视化工具

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 dstat 好用的终端工具 安装方法命令详解负载与CPU相关展示第一颗与第四颗cpu使用情况展示每秒的CPU时钟频率…

Elasticsearch:使用 Transformers 和 Elasticsearch 进行语义搜索

语义/矢量搜索是一种强大的技术&#xff0c;可以大大提高搜索结果的准确性和相关性。 与传统的基于关键字的搜索方法不同&#xff0c;语义搜索使用单词的含义和上下文来理解查询背后的意图并提供更准确的结果。 Elasticsearch 是实现语义搜索最流行的工具之一&#xff0c;它是一…

【运筹优化】元启发式算法详解:变邻域搜索算法(Variable Neighborhood Search,VNS)+ 案例讲解代码实现

文章目录 一、介绍二、基本方案三、一些扩展四、在VNS内改变配方4.1 基于变邻域的公式空间搜索4.2 变公式搜索 五、原始对偶VNS六、求解混合整数线性规划的VNS七、连续全局优化的可变邻域搜索八、可变邻域编程(VNP):自动编程的VNS九、Discovery Science十、总结十一、案例讲解&…

如何视频转语音?想知道视频转语音工具怎么用?

在教育、培训等领域中&#xff0c;有时候需要将讲解视频转化为文字来提供给学生反复阅读学习。那么&#xff0c;小伙伴们&#xff0c;你们知道怎样视频转语音吗&#xff1f;其实我们可以借助一些视频转语音的软件帮助我们实现视频转语音操作。这篇文章就给大家分享几个非常好用…