Springboot+Vue项目-基于Java+MySQL的毕业就业信息管理系统(附源码+演示视频+LW)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。
💞当前专栏:Java毕业设计
精彩专栏推荐👇🏻👇🏻👇🏻
🎀 Python毕业设计
🌎微信小程序毕业设计
开发环境
开发语言:Java
框架:Springboot+Vue
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7
数据库工具:Navicat12
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器
演示视频
springboot275毕业就业信息管理系统的录像
原版高清演示视频-编号275:
https://pan.quark.cn/s/5cda95b17ee0
源码下载地址:
https://download.csdn.net/download/2301_76953549/89099745
LW目录
【如需全文请按文末获取联系】
目录
- 开发环境
- 演示视频
- 源码下载地址:
- LW目录
- 一、项目简介
- 二、系统设计
- 2.1软件功能模块设计
- 2.2数据库设计
- 三、系统项目部分截图
- 3.1学生信息管理
- 3.2公司信息管理
- 3.3公告类型管理
- 四、部分核心代码
- 4.1 用户部分
- 获取源码或论文
一、项目简介
毕业就业信息管理系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现毕业就业信息管理系统的功能。其中管理员管理用户,新闻公告。
二、系统设计
2.1软件功能模块设计
为了让系统的编码可以顺利进行,特意对本系统功能进行细分设计,设计的系统功能结构见下图。
2.2数据库设计
(1)下图是学生实体和其具备的属性。
(2)下图是职位留言实体和其具备的属性。
(3)下图是公告信息实体和其具备的属性。
(5)下图是公司实体和其具备的属性。
(6)下图是就业统计实体和其具备的属性。
(9)下图是简历投递实体和其具备的属性。
三、系统项目部分截图
3.1学生信息管理
如图5.1显示的就是学生信息管理页面,此页面提供给管理员的功能有:学生信息的查询管理,可以删除学生信息、修改学生信息、新增学生信息,
还进行了对用户名称的模糊查询的条件
3.2公司信息管理
如图5.2显示的就是公司信息管理页面,此页面提供给管理员的功能有:查看已发布的公司信息数据,修改公司信息,公司信息作废,即可删除,还进行了对公司信息名称的模糊查询 公司信息信息的类型查询等等一些条件。
.
3.3公告类型管理
如图5.3显示的就是公告类型管理页面,此页面提供给管理员的功能有:根据公告类型进行条件查询,还可以对公告类型进行新增、修改、查询操作等等。
四、部分核心代码
4.1 用户部分
package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 简历* 后端接口* @author* @email
*/
@RestController
@Controller
@RequestMapping("/jianli")
public class JianliController {private static final Logger logger = LoggerFactory.getLogger(JianliController.class);@Autowiredprivate JianliService jianliService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//级联表service@Autowiredprivate YonghuService yonghuService;@Autowiredprivate GongsiService gongsiService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永不会进入");else if("学生".equals(role))params.put("yonghuId",request.getSession().getAttribute("userId"));else if("公司".equals(role))params.put("gongsiId",request.getSession().getAttribute("userId"));if(params.get("orderBy")==null || params.get("orderBy")==""){params.put("orderBy","id");}PageUtils page = jianliService.queryPage(params);//字典表数据转换List<JianliView> list =(List<JianliView>)page.getList();for(JianliView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put("data", page);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);JianliEntity jianli = jianliService.selectById(id);if(jianli !=null){//entity转viewJianliView view = new JianliView();BeanUtils.copyProperties( jianli , view );//把实体数据重构到view中//级联表YonghuEntity yonghu = yonghuService.selectById(jianli.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody JianliEntity jianli, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,jianli:{}",this.getClass().getName(),jianli.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("学生".equals(role))jianli.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));Wrapper<JianliEntity> queryWrapper = new EntityWrapper<JianliEntity>().eq("yonghu_id", jianli.getYonghuId());logger.info("sql语句:"+queryWrapper.getSqlSegment());JianliEntity jianliEntity = jianliService.selectOne(queryWrapper);if(jianliEntity==null){jianli.setCreateTime(new Date());jianliService.insert(jianli);return R.ok();}else {return R.error(511,"每个用户只能有一份简历");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody JianliEntity jianli, HttpServletRequest request){logger.debug("update方法:,,Controller:{},,jianli:{}",this.getClass().getName(),jianli.toString());String role = String.valueOf(request.getSession().getAttribute("role"));
// if(false)
// return R.error(511,"永远不会进入");
// else if("学生".equals(role))
// jianli.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));//根据字段查询是否有相同数据Wrapper<JianliEntity> queryWrapper = new EntityWrapper<JianliEntity>().notIn("id",jianli.getId()).andNew().eq("yonghu_id", jianli.getYonghuId()).eq("jianli_uuid_number", jianli.getJianliUuidNumber()).eq("jianli_name", jianli.getJianliName()).eq("jianli_xingming", jianli.getJianliXingming()).eq("jianli_types", jianli.getJianliTypes()).eq("jianli_xinzi", jianli.getJianliXinzi()).eq("jianli_xueli", jianli.getJianliXueli()).eq("jianli_jingli", jianli.getJianliJingli()).eq("sex_types", jianli.getSexTypes()).eq("jianli_phone", jianli.getJianliPhone()).eq("jianli_address", jianli.getJianliAddress()).eq("jiaoyu_text", jianli.getJiaoyuText()).eq("shixi_text", jianli.getShixiText()).eq("geren_text", jianli.getGerenText());logger.info("sql语句:"+queryWrapper.getSqlSegment());JianliEntity jianliEntity = jianliService.selectOne(queryWrapper);if("".equals(jianli.getJianliPhoto()) || "null".equals(jianli.getJianliPhoto())){jianli.setJianliPhoto(null);}if(jianliEntity==null){jianliService.updateById(jianli);//根据id更新return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());jianliService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上传*/@RequestMapping("/batchInsert")public R save( String fileName){logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);try {List<JianliEntity> jianliList = new ArrayList<>();//上传的东西Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段Date date = new Date();int lastIndexOf = fileName.lastIndexOf(".");if(lastIndexOf == -1){return R.error(511,"该文件没有后缀");}else{String suffix = fileName.substring(lastIndexOf);if(!".xls".equals(suffix)){return R.error(511,"只支持后缀为xls的excel文件");}else{URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径File file = new File(resource.getFile());if(!file.exists()){return R.error(511,"找不到上传文件,请联系管理员");}else{List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行,因为第一行是提示for(List<String> data:dataList){//循环JianliEntity jianliEntity = new JianliEntity();
// jianliEntity.setYonghuId(Integer.valueOf(data.get(0))); //学生 要改的
// jianliEntity.setJianliUuidNumber(data.get(0)); //简历唯一编号 要改的
// jianliEntity.setJianliName(data.get(0)); //简历名称 要改的
// jianliEntity.setJianliXingming(data.get(0)); //姓名 要改的
// jianliEntity.setJianliTypes(Integer.valueOf(data.get(0))); //求职意向 要改的
// jianliEntity.setJianliXinzi(data.get(0)); //期望工资 要改的
// jianliEntity.setJianliXueli(data.get(0)); //学历 要改的
// jianliEntity.setJianliJingli(data.get(0)); //工作经历 要改的
// jianliEntity.setSexTypes(Integer.valueOf(data.get(0))); //性别 要改的
// jianliEntity.setJianliPhone(data.get(0)); //手机号 要改的
// jianliEntity.setJianliPhoto("");//照片
// jianliEntity.setJianliAddress(data.get(0)); //位置 要改的
// jianliEntity.setJiaoyuText(data.get(0)); //教育经历 要改的
// jianliEntity.setShixiText(data.get(0)); //实习或工作经历 要改的
// jianliEntity.setGerenText(data.get(0)); //个人介绍 要改的
// jianliEntity.setCreateTime(date);//时间jianliList.add(jianliEntity);//把要查询是否重复的字段放入map中//简历唯一编号if(seachFields.containsKey("jianliUuidNumber")){List<String> jianliUuidNumber = seachFields.get("jianliUuidNumber");jianliUuidNumber.add(data.get(0));//要改的}else{List<String> jianliUuidNumber = new ArrayList<>();jianliUuidNumber.add(data.get(0));//要改的seachFields.put("jianliUuidNumber",jianliUuidNumber);}//手机号if(seachFields.containsKey("jianliPhone")){List<String> jianliPhone = seachFields.get("jianliPhone");jianliPhone.add(data.get(0));//要改的}else{List<String> jianliPhone = new ArrayList<>();jianliPhone.add(data.get(0));//要改的seachFields.put("jianliPhone",jianliPhone);}}//查询是否重复//简历唯一编号List<JianliEntity> jianliEntities_jianliUuidNumber = jianliService.selectList(new EntityWrapper<JianliEntity>().in("jianli_uuid_number", seachFields.get("jianliUuidNumber")));if(jianliEntities_jianliUuidNumber.size() >0 ){ArrayList<String> repeatFields = new ArrayList<>();for(JianliEntity s:jianliEntities_jianliUuidNumber){repeatFields.add(s.getJianliUuidNumber());}return R.error(511,"数据库的该表中的 [简历唯一编号] 字段已经存在 存在数据为:"+repeatFields.toString());}//手机号List<JianliEntity> jianliEntities_jianliPhone = jianliService.selectList(new EntityWrapper<JianliEntity>().in("jianli_phone", seachFields.get("jianliPhone")));if(jianliEntities_jianliPhone.size() >0 ){ArrayList<String> repeatFields = new ArrayList<>();for(JianliEntity s:jianliEntities_jianliPhone){repeatFields.add(s.getJianliPhone());}return R.error(511,"数据库的该表中的 [手机号] 字段已经存在 存在数据为:"+repeatFields.toString());}jianliService.insertBatch(jianliList);return R.ok();}}}}catch (Exception e){return R.error(511,"批量插入数据异常,请联系管理员");}}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));// 没有指定排序字段就默认id倒序if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){params.put("orderBy","id");}PageUtils page = jianliService.queryPage(params);//字典表数据转换List<JianliView> list =(List<JianliView>)page.getList();for(JianliView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put("data", page);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);JianliEntity jianli = jianliService.selectById(id);if(jianli !=null){//entity转viewJianliView view = new JianliView();BeanUtils.copyProperties( jianli , view );//把实体数据重构到view中//级联表YonghuEntity yonghu = yonghuService.selectById(jianli.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody JianliEntity jianli, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,jianli:{}",this.getClass().getName(),jianli.toString());Wrapper<JianliEntity> queryWrapper = new EntityWrapper<JianliEntity>().eq("yonghu_id", jianli.getYonghuId()).eq("jianli_uuid_number", jianli.getJianliUuidNumber()).eq("jianli_name", jianli.getJianliName()).eq("jianli_xingming", jianli.getJianliXingming()).eq("jianli_types", jianli.getJianliTypes()).eq("jianli_xinzi", jianli.getJianliXinzi()).eq("jianli_xueli", jianli.getJianliXueli()).eq("jianli_jingli", jianli.getJianliJingli()).eq("sex_types", jianli.getSexTypes()).eq("jianli_phone", jianli.getJianliPhone()).eq("jianli_address", jianli.getJianliAddress()).eq("jiaoyu_text", jianli.getJiaoyuText()).eq("shixi_text", jianli.getShixiText()).eq("geren_text", jianli.getGerenText());logger.info("sql语句:"+queryWrapper.getSqlSegment());JianliEntity jianliEntity = jianliService.selectOne(queryWrapper);if(jianliEntity==null){jianli.setCreateTime(new Date());jianliService.insert(jianli);return R.ok();}else {return R.error(511,"表中有相同数据");}}}
获取源码或论文
如需对应的LW或源码,以及其他定制需求,也可以点我头像查看个人简介联系。
相关文章:

Springboot+Vue项目-基于Java+MySQL的毕业就业信息管理系统(附源码+演示视频+LW)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…...

条件平差——以水准网平差为例 (python详细过程版)
目录 一、原理概述二、案例分析三、代码实现四、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、原理概述 条件平差的函数模型和随机模型为: A V + W = 0...
mysql -- WITH RECURSIVE 语法
引言 在 SQL 中,WITH RECURSIVE 是一个用于创建递归查询的语句。它允许你定义一个 Common Table Expression (CTE),该 CTE 可以引用自身的输出。递归 CTE 非常适合于查询具有层次结构或树状结构的数据,例如组织结构、文件系统或任何其他具有…...

洗地机什么品牌好?洗地机怎么选?618洗地机选购指南
随着科技的飞速发展,洗地机以其高效的清洁能力、稳定的性能和用户友好的设计而闻名,不仅可以高效吸尘、拖地,还不用手动洗滚布,已经逐渐成为现代家庭不可或缺的清洁助手。然而,在众多品牌和型号中,如何选择…...
nginx负载均衡配置
1.nginx负载均衡配置 upstream lbs {server 192.168.1.12:8080;server 192.168.1.12:8081; }server {listen 80;server_name localhost a.com;#charset koi8-r;#access_log logs/host.access.log main;location / {root html;index index.html index.htm;}locatio…...

HarmonyOS NEXT星河版之美团外卖点餐功能实战(中)
接上 一、UI布局 1.1 购物车Item Preview Component export struct MTCartItemView {build() {Row({ space: 6 }) {Image(https://bkimg.cdn.bcebos.com/pic/4d086e061d950a7bc94a331704d162d9f3d3c9e2).width(42).aspectRatio(1).borderRadius(5)Column({ space: 3 }) {Text…...

CTF-Web Exploitation(持续更新)
CTF-Web Exploitation 1. GET aHEAD Find the flag being held on this server to get ahead of the competition Hints Check out tools like Burpsuite to modify your requests and look at the responses 根据提示使用不同的请求方式得到response可能会得到结果 使用…...
图书管理系统c语言
创建一个图书管理系统是一个涉及数据结构和文件操作的项目。在C语言中,你可以使用结构体来表示图书信息,使用函数来实现系统的各项功能。以下是一个简单的图书管理系统的示例,包括基本的添加、显示、查找和删除图书的功能。 1. 定义图书结构…...

森林消防—高扬程水泵,高效、稳定、可靠!/恒峰智慧科技
森林,作为地球的“绿色肺叶”,不仅为我们提供了丰富的自然资源,更是维持生态平衡的重要一环。然而,随着全球气候的变化和人为活动的增加,森林火灾频发,给生态环境和人民生命财产安全带来了巨大威胁。在森林…...

光伏设备制造5G智能工厂数字孪生可视化平台,推进行业数字化转型
光伏设备制造5G智能工厂数字孪生可视化平台,推进行业数字化转型。光伏设备制造5G智能工厂数字孪生可视化平台是光伏行业数字化转型的重要一环。通过数字孪生平台,光伏设备制造企业可以实现对生产过程的全面监控和智能管理,提高生产效率&#…...

【论文阅读笔记】TS2Vec: Towards Universal Representation of Time Series
【论文阅读笔记】TS2Vec: Towards Universal Representation of Time Series 摘要 这段文字介绍了一个名为TS2Vec的通用框架,用于学习时间序列数据的表示,可以在任意语义层次上进行。与现有方法不同,TS2Vec通过对增强的上下文视图进行层次化…...
windows驱动开发-DMA技术(一)
DMA(Direct Memory Access)是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量中断负载,否则CPU 需要从设备缓存中把每一页的数据复制到缓存中,然后把它们再次写入到新的地方,在这个过…...
实用的Chrome命令
以下是一些实用的Chrome命令及其用途: --allow-outdated-plugins:允许浏览器使用过期的插件,这在开发过程中可能会用到,以便测试兼容性。chrome://downloads:打开Chrome的下载页面,查看和管理你的下载文件…...

数据库(MySQL)基础:约束
一、概述 1.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 2.目的:保证数据库中数据的正确、有效性和完整性。 3.分类 约束描述关键字非空约束限制该字段的数据不能为nullnot null唯一约束保证该字段的所有数据都是唯一…...

ControlNet作者放大招!IC-Light:控制生成图片光照效果!
ControlNet作者张吕敏近日又开源了一项新的工作:IC-Light (Impose Constant Light),在不改变图片内容的条件下,可以控制生成图片的光照效果。 作者发布了两种类型的模型:文本条件重打光模型和背景条件重打光…...

【Java】Java中类的初始化顺序(静态方法,静态块,非静态块,最后有流程图)
📝个人主页:哈__ 期待您的关注 目录 一、无继承关系类的初始化 1、静态变量k被初始化 2、静态变量t1初始化 3、静态变量 t2初始化 4、静态变量i初始化 5、静态变量n初始化 6、静态块初始化 7、非静态块初始化 8、非静态属性初始化 9、执行构造…...

在RK3588开发板使用FFMpeg 结合云服务器加SRS实现摄像头数据推流到云端拱其他设备查看
今天测试了一把在开发板把摄像头数据推流到云端服务器,然后给其他电脑通过val软件拉取显示摄像头画面,浅浅记录一下大概步骤 1.开发板端先下载ffmpeg apt install ffmpeg2.云服务器先安装SRS的库 云服务器我使用ubuntu系统,SRS是个什么东西&…...
elasticsearch搭建教程
主要参看这里就行,需要特别注意其中报错的解决方案:搭建elasticsearch 单机节点里,按照上述教程搭建只能开放本地访问,如果需要其他机器访问,需要在elasticsearch.yml里新增几个配置: node.name: node-1 network.host…...

c++ 归并排序
归并排序是一种遵循分而治之方法的排序算法。它的工作原理是递归地将输入数组划分为较小的子数组并对这些子数组进行排序,然后将它们合并在一起以获得排序后的数组。 简单来说,归并排序的过程就是将数组分成两半,对每一半进行排序,…...

基于vs和C#的WPF应用之动画3
注:1、在内部和外部使用缓动函数 <Grid.Resources> <PowerEase x:Key"powerease" Power"3" EasingMode"EaseInOut"/> </Grid.Resources> <DoubleAnimation EasingFunction"{StaticResource powerease}&quo…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...