当前位置: 首页 > news >正文

计算机毕业设计PySpark+Hadoop招聘推荐系统 招聘大数据 招聘数据分析 招聘可视化 大数据毕业设计 大数据毕设

1. 管理端:  带有职位的增删改查功能,评论功能是针对新闻模块的,类似新闻大数据的实现
2. 网站端:  python / java 协同过滤推荐算法 / 下载职位数据表收费1元每条 / 账户充值 / 短信验证码修改密码 / 身份证识别 / 多条件搜索
3. 大屏端:  SparkUtils 之大屏 
* 职位的评论带情感分析,和新闻里用的技术一样,可在管理端评论管理中查看结果

核心算法代码分享如下:

package com.university.demo.controller;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.university.demo.dao.JobDao;
import com.university.demo.dao.NewsDao;
import com.university.demo.entity.*;
import com.university.demo.entity.request.NewsRequest;
import com.university.demo.entity.request.SearchRequest;
import com.university.demo.entity.response.JobVo;
import com.university.demo.entity.response.NewsVo;
import com.university.demo.entity.system.ServerResponse;
import com.university.demo.python.TransferPython.ToPython;
import com.university.demo.service.*;
import com.university.demo.service.impl.TokenService;
import org.apache.commons.lang3.StringUtils;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.xm.tendency.word.HownetWordTendency;import java.util.ArrayList;
import java.util.List;/*** @author redcomet* @since 2022-06-24*/
@RestController
@RequestMapping("/job")
public class JobController {@Autowiredprivate JobService jobService;@AutowiredToPython toPython;@Autowiredprivate CommentService commentService;@Autowiredprivate RateService rateService;@Autowiredprivate JobDao jobDao;@Autowiredprivate ThumbService thumbService;@Autowiredprivate ConcernService concernService;@Autowiredprivate StarService starService;@PostMapping("/modify")public ServerResponse modify(@RequestBody Job job) {return jobService.updateById(job) ? ServerResponse.ofSuccess("更新成功!") : ServerResponse.ofError("更新失败!");}@GetMapping("/delete/{id}")public ServerResponse delete(@PathVariable("id") Integer id) {return jobService.removeById(id) ? ServerResponse.ofSuccess("删除成功!") : ServerResponse.ofError("删除失败!");}@GetMapping("/{id}")public ServerResponse query(@PathVariable("id") Integer id) {return ServerResponse.ofSuccess(jobService.getById(id));}// 根据【点赞-thumb】来进行倒序排序@GetMapping("/news/{page}")public ServerResponse querys(@PathVariable("page") Integer page,@RequestParam(defaultValue = "10") Integer limit) {Page<Job> pages = new Page<>(page, limit);QueryWrapper<Job> wrapper = new QueryWrapper<Job>().orderByDesc("job_salary");IPage<Job> iPage = jobService.page(pages, wrapper);return ServerResponse.ofSuccess(iPage);}// 后端的接口@PostMapping("/search2")public ServerResponse search2(@RequestBody SearchRequest params,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer limit) {QueryWrapper<Job> wrapper = new QueryWrapper<>();wrapper.orderByDesc("job_date");wrapper.like(!StringUtils.isEmpty(params.getKeyword()), "job_name", params.getKeyword());
//                .eq(!StringUtils.isEmpty(params.getType()), "type", params.getType())
//                .eq("deleted", false);Page<Job> pages = new Page<>(page, limit);IPage<Job> iPage = jobService.page(pages, wrapper);if (page != null) {return ServerResponse.ofSuccess(iPage);}return ServerResponse.ofError("查询不到数据!");}@GetMapping({"/search/{keyword}", "/search/"})public ServerResponse search(@PathVariable(value = "keyword", required = false) String keyword, @RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer limit) {QueryWrapper<Job> wrapper = new QueryWrapper<>();wrapper.orderByDesc("job_date");wrapper.like(!StringUtils.isEmpty(keyword), "job_name", keyword);Page<Job> pages = new Page<>(page, limit);IPage<Job> iPage = jobService.page(pages, wrapper);if (page != null) {return ServerResponse.ofSuccess(iPage);}return ServerResponse.ofError("查询不到数据!");}@PostMapping("/add")public ServerResponse add(@RequestBody Job job) {job.setId(jobDao.getMaxId());boolean b = jobService.save(job);if (b) {return ServerResponse.ofSuccess("添加成功", job);}return ServerResponse.ofError("添加失败!");}/* 给前端用的 */@GetMapping({"/fontsearch/{username}"})public ServerResponse fontsearch(@PathVariable(value = "username", required = false) String username, @RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer limit) {QueryWrapper<Job> wrapper = new QueryWrapper<>();wrapper.orderByDesc("update_time");wrapper.like(!StringUtils.isEmpty(username), "job_name", username).eq("deleted", false);Page<Job> pages = new Page<>(page, limit);IPage<Job> iPage = jobService.page(pages, wrapper);if (page != null) {return ServerResponse.ofSuccess(iPage);}return ServerResponse.ofError("查询不到数据!");}// 推荐1// Mahout 基于协同过滤的推荐接口  基于User的皮尔逊相关系数@PostMapping({"/recommend"})public ServerResponse recommends(@RequestParam String username,@RequestBody SearchRequest query, @RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer limit) {List<JobVo> records = new ArrayList();List<RecommendedItem> items = rateService.getRecommendItemIds(query.getUserId(), 5);for (RecommendedItem item : items) {JobVo vo = new JobVo();Job job = jobService.getById(item.getItemID());BeanUtils.copyProperties(job, vo);QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();wrapper2.eq("remark", job.getId());wrapper2.eq("deleted", false);List<Comment> comments = commentService.list(wrapper2);vo.setComments(comments);//如果在用户登录状态下,去查询他有没有点赞或者关注过这个文章作者if(!StringUtils.isEmpty(username)) {// 是否点赞QueryWrapper<Thumb> wrapper3 = new QueryWrapper<>();wrapper3.eq("nid", job.getId()).eq("deleted", false).eq("sid", username);int thumbs = thumbService.count(wrapper3);if (thumbs > 0)vo.setIthumb(true);elsevo.setIthumb(false);// 是否关注QueryWrapper<Star> wrapper4 = new QueryWrapper<>();wrapper4.eq("nid", job.getId()).eq("deleted", false).eq("sid", username).eq("type","news");int stars = starService.count(wrapper4);if (stars > 0)vo.setIstar(true);elsevo.setIstar(false);}records.add(vo);}return ServerResponse.ofSuccess(records);}@GetMapping({"/getOne/{id}"})public ServerResponse getOne(@PathVariable("id") Integer id, @RequestParam String username) {JobVo vo = new JobVo();Job job = jobService.getById(id);BeanUtils.copyProperties(job, vo);QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();wrapper2.eq("remark", job.getId());wrapper2.eq("deleted", false);List<Comment> comments = commentService.list(wrapper2);vo.setComments(comments);//如果在用户登录状态下,去查询他有没有点赞或者关注过这个文章作者return ServerResponse.ofSuccess(vo);}// 推荐2@PostMapping({"/recommend2"})public ServerResponse recommends2(@RequestParam String username,@RequestBody SearchRequest query, @RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer limit) {List<JobVo> records = new ArrayList();String content = toPython.itemrec(String.valueOf(query.getUserId()));//转为json数据JSONArray jo = JSONObject.parseArray(content);for(int i=0;i<jo.size();i++){JSONObject  obj = jo.getJSONObject(i);JobVo vo = new JobVo();Job job = jobService.getById(obj.getInteger("iid"));BeanUtils.copyProperties(job, vo);QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();wrapper2.eq("remark", job.getId());wrapper2.eq("deleted", false);List<Comment> comments = commentService.list(wrapper2);vo.setComments(comments);//如果在用户登录状态下,去查询他有没有点赞或者关注过这个文章作者if(!StringUtils.isEmpty(username)) {// 是否点赞QueryWrapper<Thumb> wrapper3 = new QueryWrapper<>();wrapper3.eq("nid", job.getId()).eq("deleted", false).eq("sid", username);int thumbs = thumbService.count(wrapper3);if (thumbs > 0)vo.setIthumb(true);elsevo.setIthumb(false);// 是否关注QueryWrapper<Star> wrapper4 = new QueryWrapper<>();wrapper4.eq("nid", job.getId()).eq("deleted", false).eq("sid", username).eq("type","news");int stars = starService.count(wrapper4);if (stars > 0)vo.setIstar(true);elsevo.setIstar(false);}records.add(vo);}return ServerResponse.ofSuccess(records);}/*** 综合搜索* 2021年12月28日*/@PostMapping({"/searchx"})public ServerResponse searchx(@RequestBody NewsRequest params, @RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer limit) {List<JobVo> response = new ArrayList<>();QueryWrapper<Job> wrapper = new QueryWrapper<>();wrapper.orderByDesc("job_date");if (params != null) {wrapper.like(!StringUtils.isEmpty(params.getTitle()), "job_name", params.getTitle());wrapper.like(!StringUtils.isEmpty(params.getKeyword()), "job_company_type", params.getKeyword());wrapper.ge(!StringUtils.isEmpty(params.getBegin()), "job_date", params.getBegin());wrapper.le(!StringUtils.isEmpty(params.getEnd()), "job_date", params.getEnd());}//        wrapper.eq("deleted", false);Page<Job> pages = new Page<>(page, limit);IPage<Job> iPage = jobService.page(pages, wrapper);List<Job> jobs = iPage.getRecords();HownetWordTendency hownet = new HownetWordTendency();jobs.forEach(job1 -> {JobVo v = new JobVo();String title = v.getJobName();double sim = hownet.getTendency(title);if(sim>0)v.setTend("正向");else if(sim<0)v.setTend("负向");elsev.setTend("中性");
//            v.setId(news1.getId());BeanUtils.copyProperties(job1, v);QueryWrapper<Comment> wrapper2 = new QueryWrapper<>();wrapper2.eq("remark", job1.getId());wrapper2.eq("deleted", false);List<Comment> comments = commentService.list(wrapper2);v.setComments(comments);response.add(v);});//前端需要返回分页参数IPage<JobVo> voPage = new Page<>();voPage.setRecords(response);voPage.setSize(iPage.getSize());voPage.setPages(iPage.getPages());voPage.setCurrent(iPage.getCurrent());voPage.setTotal(iPage.getTotal());if (page != null) {return ServerResponse.ofSuccess(voPage);}return ServerResponse.ofError("查询不到数据!");}}

相关文章:

计算机毕业设计PySpark+Hadoop招聘推荐系统 招聘大数据 招聘数据分析 招聘可视化 大数据毕业设计 大数据毕设

1. 管理端&#xff1a; 带有职位的增删改查功能&#xff0c;评论功能是针对新闻模块的&#xff0c;类似新闻大数据的实现 2. 网站端&#xff1a; python / java 协同过滤推荐算法 / 下载职位数据表收费1元每条 / 账户充值 / 短信验证码修改密码 / 身份证识别 / 多条件搜索 3.…...

.Net预定义的泛型委托

我们每次要使用一个委托前&#xff0c;都需要自定义这个委托类型&#xff0c;声明其参数和返回值&#xff0c;然后才能实例化委托类型的对象、最后调用委托对象。 为了简化这个过程&#xff0c;.Net预定义了Func<T>委托、Action<T>委托类型和Predicate<T>&a…...

Unity的Excel转表工具

该Excel工具主要由Python语言完成&#xff0c;版本为3.x 主要功能&#xff1a; 1.转换后的数据存储结构为二进制。 2.excel文件可以选择多种数据类型&#xff1a;int、float、string、一维&#xff08;int、float、string&#xff09;、二维int、Map&#xff08;int/int、in…...

静态随机存储器(SRAM):高速缓存的奥秘

目录 基本的静态存储单元阵列 基本的SRAM逻辑结构 1. 概述 2. SRAM阵列 3. 行选择器&#xff08;Row Decoder&#xff09; 4. 列选择器&#xff08;Column Decoder&#xff09; 5. 读写电路 6. 控制电路 7. 工作过程 SRAM的读/写时序 SRAM 结构概述 读操作时序 读…...

Linux CentOS 7 服务器集群硬件常用查看命令

&#xff08;一&#xff09;查看内核&#xff1a;uname -a [rootcdh1 ~]# uname -a Linux cdh1.macro.com 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux&#xff08;二&#xff09;查看系统&#xff1a;cat /etc/redhat-releas…...

《Windows API每日一练》5.4 键盘消息和字符集

本节我们将通过实例来说明不同国家的语言、字符集和字体之间的差异&#xff0c;以及Windows系统是如何处理的。 本节必须掌握的知识点&#xff1a; 第31练&#xff1a;显示键盘消息 非英语键盘问题 字符集和字体 第32练&#xff1a;显示默认字体信息 第33练&#xff1a;创建逻…...

【uniapp】uniapp开发微信小程序入门教程

HBuilderx中uniapp开发微信小程序入门教程 一、 环境搭建 1. HBuilderx下载安装 HBuilderx下载安装地址 2. 微信开发者工具下载安装 微信开发者工地址具下载安装 二、创建uniapp项目 选择&#xff1a;文件>新建>项目>uni-app 输入项目名称>选择默认模板>…...

Python爬虫项目集:豆瓣电影排行榜top250

关于整理日常练习的一些爬虫小练习&#xff0c;可用作学习使用。 爬取项目以学习为主&#xff0c;尽可能使用更多的模块进行练习&#xff0c;而不是最优解。 爬虫概要 示例python 库爬取模块request解析模块BeautifulSoup存储类型list&#xff08;方便存入数据库&#xff09…...

34-Openwrt uhttpd与rpcd

uhttpd作为一个简单的web服务器&#xff0c;其代码量并不多&#xff0c;而且组织结构比较清楚。和其它网络服务器差不多&#xff0c;其main函数进行一些初始化&#xff08;首先parse config-file&#xff0c;然后parse argv&#xff09;&#xff0c;然后进入一个循环&#xff0…...

uni app 树状结构数据展示

树状数据展示&#xff0c;可以点击item 将点击数据给父组件 &#xff0c;满足自己需求。不喜勿喷&#xff0c;很简单可以根据自己需求改哈&#xff0c;不要问&#xff0c;点赞收藏就好。其实可以和上一篇文章uni app 自定义 带popup弹窗的input组件-CSDN博客结合使用&#xff…...

KVM在线yum源部署-centos 7

一、虚拟化简介 虚拟化就是操作系统里嵌套操作系统,一台服务器买回来,可能只是用作一个http服务,资源不能充分利用,而虚拟化的诞生有效解决了这个问题,以硬件资源上使用虚拟化,实现单硬件多系统,充分挖掘硬件性能,节能增效。同时通过多年的改进发展,虚拟化进化成云服务…...

TSF的服务发现与Consul有何区别?

TSF(腾讯服务框架)和Consul都是用于服务发现的工具,但它们在设计理念、功能特性、集成方式等方面存在一些区别。 ### 设计理念和目标 **Consul** 是一个开源的工具,用于服务发现、配置和分段。它提供了一种简单的方式来注册和发现服务,以及健康检查和键值存储功能。Consul…...

kotlin集合框架

1、集合框架的接口类型对比 2、不可变和可变List fun main() {// 不可变List - 不能删除或添加元素val intList: List<Int> listOf(1,2,3)intList.forEach{println(it) // 1 2 3}println("")// 可变List - 可以删除或添加元素val mutableList mutableListO…...

服务器(Linux系统的使用)——自学习梳理

root表示用户名 后是机器的名字 ~表示文件夹&#xff0c;刚上来是默认的用户目录 ls -a 可以显示出隐藏的文件 蓝色的表示文件夹 白色的是文件 ll -a 查看详细信息 total表示所占磁盘总大小 一般以KB为单位 d开头表示文件夹 -代表文件 后面得三组rwx分别对应管理员用户-组…...

竞赛选题 python+opencv+深度学习实现二维码识别

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; pythonopencv深度学习实现二维码识别 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 该项目较为新颖&…...

Java读取指定 JAR 包路径中的 git.properties 文件

Java读取指定 JAR 包路径中的 git.properties 文件 在上述代码中&#xff0c;首先打开 JAR 文件&#xff0c;获取 git.properties 文件的 JarEntry 对象&#xff0c;如果存在该条目&#xff0c;就获取其输入流进行后续的读取和处理。具体的读取和处理逻辑需要根据您的实际需求在…...

逻辑回归(Logistic Regression)及其在机器学习中的应用

&#x1f680;时空传送门 &#x1f50d;逻辑回归原理&#x1f4d5;Sigmoid函数&#x1f388;逻辑回归模型 &#x1f4d5;损失函数与优化&#x1f388;损失函数&#x1f680;优化算法 &#x1f50d;逻辑回归的应用场景&#x1f340;使用逻辑回归预测客户流失使用scikit-learn库实…...

【计算机视觉】人脸算法之图像处理基础知识【七】

直方图均衡化 直方图均衡化是一种常用的图像处理技术&#xff0c;用于改善图像的对比度&#xff0c;特别是在图像的细节被埋没在暗部或亮部区域时。通过重新分配图像的像素强度值&#xff0c;使得图像的整体对比度增强&#xff0c;从而让更多的细节变得可见。 import cv2 imp…...

家政预约小程序14权限配置

目录 1 创建用户2 创建角色3 启用登录4 实现退出总结 我们现在小程序端的功能基本开发好了&#xff0c;小程序开发好之后需要给运营人员提供管理后台&#xff0c;要分配账号、配置权限&#xff0c;我们本篇就介绍一下权限如何分配。 1 创建用户 在微搭中&#xff0c;用户分为内…...

解决 vue 项目一直出现 sockjs-node/info?t=问题

其实如果是在开发环境&#xff0c;应该是开发的时候网络环境变更导致&#xff0c;比如你切换无线网络&#xff0c;导致开发服务器的IP地址换了&#xff0c;这样开发服务器会不知道如何确定访问源。开发环境中关闭npm dev server&#xff0c;然后重新npm run serve重新构建服务环…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...