- 博客(20)
- 收藏
- 关注
原创 若依数据权限原理与车间设备模块实现
菜单权限用于控制前端组件显示与后端接口访问,数据权限用于控制同一张表中不同用户能够查看的数据行,实现不同部门用户仅可查看本部门数据的需求。若依数据权限基于 AOP + 注解 + 动态 SQL 实现,核心是通过 @DataScope 注解与 DataScopeAspect 切面动态拼接 SQL 语句,实现行级数据过滤。车间设备模块通过继承 BaseEntity、添加注解、配置 XML 中的 ${params.dataScope},完成了基于部门的数据权限控制,不同部门用户可自动查看对应权限的数据。
2026-06-02 20:37:59
248
原创 若依(RuoYi-Vue)实战:自定义接口开发+权限验证全流程(附Gitee上传)
后端开发核心是编写自定义接口,并通过若依框架提供的@PreAuthorize注解配置权限,确保只有拥有指定权限的用户才能访问接口。全程遵循若依框架的代码规范,无需额外配置权限拦截器,简化开发流程。本次开发基于若依Vue框架,完成了自定义接口开发、权限配置、前端适配及Gitee上传全流程,核心要点如下:后端:通过@PreAuthorize注解配置权限,与菜单权限的权限标识保持一致,实现接口级权限控制;前端:通过v-hasPermi指令控制按钮显示,封装接口并调用,添加操作反馈;
2026-05-20 12:52:23
484
原创 若依框架分页查询实现分析
语法,通过动态传入页码和每页条数参数,实现了高效的数据分页。该功能能有效避免一次性加载大量数据导致的性能问题,是后台管理系统中不可或缺的基础功能。6. 实验总结 :本次实验验证了若依框架基于 MyBatis 的分页查询功能,其核心实现依赖 MySQL 的。,即跳过前 10 条数据,取后续 10 条数据(实际剩余 1 条)。5. 分页查询原理分析 内容: MySQL 分页查询的核心语法为。,验证其分页查询功能的实现逻辑与效果。,实现了第 2 页数据的查询。,实际执行 SQL 为。本次实验中,当前页码。
2026-05-19 10:14:11
74
原创 学生管理参数校验异常演示
通过@NotBlank@Size注解实现后端参数校验,配合@Validated自动拦截不合法请求,无需手动判断,统一返回错误信息,保证接口数据合法性。
2026-05-12 18:27:30
198
原创 基于 RuoYi-Vue 代码生成器快速开发学生管理 CRUD 功能
利用其内置的「代码生成器」,快速开发一套学生信息管理模块,实现对学生数据的 ** 增、删、改、查(CRUD)** 完整功能,目的是熟悉前后端分离项目的开发流程,掌握低代码生成工具的使用。中的菜单数据,自动生成后台左侧菜单。本次作业基于开源后台框架。点击「生成」按钮,下载。,解压后得到前后端代码。
2026-04-28 09:50:26
220
原创 RuoYi Vue 登录功能后端调用流程完整分析
本次基于前后端分离权限管理框架,以小组合作形式,分析从登录页面 → 系统首页 → 退出登录整个过程中后端代码的调用逻辑、接口流转与核心业务处理,并通过时序图清晰展示各模块之间的交互流程。用户输入账号密码,发起登录请求登录成功后,系统自动获取当前用户信息与权限菜单,进入首页用户点击退出登录,清除身份信息并返回登录页下面从后端接口调用角度,逐层拆解每一步的执行逻辑。:接收登录、退出、获取信息等请求,统一入口:登录逻辑校验、异常处理、日志记录:用户信息查询、状态判断。
2026-04-21 19:15:45
383
原创 ruoyi vue v3.8.2 实现后端单表user 的CURD 功能代码和Postman 测试接口
本项目基于 Spring Boot 框架,实现了一个用户信息的增删改查(CRUD)接口,用于演示前后端分离开发中后端接口的编写与测试流程。后端:Spring Boot 4.0.5 + Java测试工具:Postman本次项目实现了用户信息的 CRUD 接口,掌握了 Spring Boot 接口的编写、启动与 Postman 测试流程,理解了前后端分离开发中后端接口的作用。
2026-04-21 19:09:24
433
原创 SpringBoot 多模块项目:Helloworld+MyBatis 数据库交互实战
本次作业基于 SpringBoot 4.0.5 搭建多模块项目hellow模块:复用上节课的 SpringBoot Helloworld 代码,实现基础 HTTP 接口mybatis模块:集成 MyBatis 框架,连接 MySQL 数据库,读取数据并返回前端本次作业完整实现了 SpringBoot 多模块项目的搭建,完成了 Helloworld 接口和 MyBatis 数据库交互的全部要求,项目可直接拉取运行,测试结果一致·。
2026-04-14 14:59:40
201
原创 SpringBoot HelloWorld 入门 + Postman 接口测试全流程
本文介绍了基于SpringBoot的HelloWorld入门项目实现。项目使用Java17开发环境,通过Spring Initializr初始化创建,包含GET/POST/PUT/DELETE四种HTTP接口功能。核心代码实现了一个REST控制器,使用Map模拟数据存储,完成了用户数据的增删改查操作。项目使用Postman进行了完整的接口测试流程验证,包括数据添加、查询、修改和删除等功能测试。最后将项目代码通过Git提交至Gitee代码仓库,完成了从开发到部署的全流程。项目结构清晰,可作为SpringBoo
2026-04-07 13:49:59
429
原创 opencv
, black = cv2.threshold(canny, 255, 255, cv2.THRESH_BINARY) # 全黑图。img = cv2ImgAddText(img,"普天同庆 爱我中华",30,120,(255,0,0),50)cv2.line(img,(100,0),(100,300),(0,0,255),2) #线段一位置。cv2.line(img,(100,0),(100,300),(0,0,255),2) #线段二位置。
2024-01-16 10:46:38
484
1
原创 记录一下dd
self.driver = webdriver.Edge(r'C:\Users\DELL\Desktop\msedgedriver.exe') # 确保Edge浏览器已安装并配置好对应的驱动。input_box.send_keys('web') # 在输入框中输入文本'web'file_name = '第' + str(page) + '页.html'begin_page = int(input('请输入起始页:'))end_page = int(input('请输出结束页:'))
2024-01-15 12:38:57
400
1
原创 Flask学习记录#3
os.path.join函数用于拼接指定目录和上传的文件名,secure_filename则保证文件名的正确性(将文件名中的空格替换为下划线),app.config则确保获取到UPLOAD_FOLDER的路径#<input type="submit" value="提交" />#配置文件的上传目录为uploaddir/##mult确保正确上传表单内容##用于存储用户上传的文件#
2024-01-02 21:00:17
362
1
原创 Flask学习记录#2
' + "<b><a href = '/logout'>点击这里注销</a></b>"#如果是post提交(从input中得到),post数据为admin则跳转到/success网页,不是admin则跳转为401(没有权限)#return "您暂时未登录,<br><a href = '/login'><b>点击这里登录
2023-12-26 16:50:23
804
1
原创 Flask学习记录#1
Flask 会根据当前应用的配置,将其转换为正确的 URL 地址,这样,无论在什么环境中都可以引用该文件的相对路径,而不是单一的硬路径#静态文件是指css,js,jpg等从外部引入不变的代码,使用url_for(‘函数名xxx’,关键词参数)来生成url。#创建了一个新的 Flask 应用程序实例,并将其赋值给变量app,name是一个特殊的python变量##运行应用程序,host表示在运行地址,此处为本地服务器ip127,threaded为多线程模式##检测是否为post,如果是获取内容到rst#
2023-12-24 22:35:27
958
原创 opencv学习记录#4
首先,os.path.split函数将iamgePath里存储的路径再次分为目录和文件名两部分,再用[1]索引从分成后的元组中获取第二个元素,就是文件名,其次,用.split('.')函数将提取出的文件名按.为分割线分割成一个列表,再利用[0]索引获取该列表中的第一个元素,就是不带扩展名的文件名,如“123.jpg”会被分割成“123”,最后再用int函数将其转换为整数##从img_numpy中提取一个范围为(x,y)到(x+w,y+h)的子图像,并添加到facesbag列表的末尾#
2023-12-14 12:11:01
77
1
原创 opencv学习记录#3
将当前捕获的图像保存到指定路径。文件名格式为"FacesaveX.jpg",其中X是图片的序号(num)##从摄像头读取图像,ret返回值代表是否读取成功,frame存储读取的图像##VideoCapture函数用于从摄像头中捕获视频帧,0为默认摄像头##等待一毫秒输入,&0xFF将输入的ascll码转换为无符号整数##显示捕获的图像,窗口为Capture_Test##定义一个变量num用于记录生成的图片## 按 'q' 键退出循环##检测当摄像头开启时##读取失败结束函数#
2023-12-13 22:13:19
87
1
原创 OPENCV学习记录#2
read属性读取视频的下一帧,返回两个属性,flag为布尔值,frame为存储视频帧图像的多维数组,当成功读取时flag为true#minNeighbors:构成检测目标的相邻矩形的最小个数(即成功检测的次数),一般为3个,可提高检测图像的准确性。#起始点为(x,y),并在起始点绘制一个长x+w,宽y+h的矩形。#绘制一个圆形,圆心在(x+w,y+h),半径为100,颜色为蓝255,绿0,红0,线条宽度为2#x,y,w,h=100,100,100,100 #设定四个变量,用于定义图形#
2023-12-13 13:15:10
96
1
原创 OPENCV学习记录#1
将img转换为灰度图像并存入gray_img中,COLOR_BGR2GRAY可以修改成任一滤镜函数##将waitkey(0)改进为改代码以后,可直接点击q键退出图像#print('已修改:',resize_img.shape)#将图像存储为一个新的jpg文件,保存在项目文档中##使程序等待,直到用户按下一个键,正数为等待数值##显示原图尺寸,shape函数调出参数##read_img是显示出图像的名字##resize函数调整图像大小##显示修改后的图像##显示修改后的尺寸#
2023-12-12 22:35:57
74
原创 爬虫学习记录#1
将网址start后的数字改为{},并用format函数将start_num的值赋予进去,达到每一次爬取不同start网址的效果,后面代码不变##由于外语标题也是title属性且前面带“/”,因此用if函数判断有无“/”,无斜杠为中文标题并输出##添加一个0到250,步长为25的循环,并赋予每个值start_num的名字##将all_names中的每个元素赋予name的名字,创造一个循环##找到所有name中的a元素,并将其添加于all_title中##将每个a元素赋予title的名字,创造一个循环#
2023-12-11 22:01:01
83
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅