<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[gsgsshbs的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/gsgsshbs</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; gsgsshbs]]></copyright><item><title><![CDATA[若依数据权限原理与车间设备模块实现]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/161632642</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/161632642</guid><author>gsgsshbs</author><pubDate>Tue, 02 Jun 2026 20:37:59 +0800</pubDate><description><![CDATA[菜单权限用于控制前端组件显示与后端接口访问，数据权限用于控制同一张表中不同用户能够查看的数据行，实现不同部门用户仅可查看本部门数据的需求。若依数据权限基于 AOP + 注解 + 动态 SQL 实现，核心是通过 @DataScope 注解与 DataScopeAspect 切面动态拼接 SQL 语句，实现行级数据过滤。车间设备模块通过继承 BaseEntity、添加注解、配置 XML 中的 ${params.dataScope}，完成了基于部门的数据权限控制，不同部门用户可自动查看对应权限的数据。]]></description><category></category></item><item><title><![CDATA[若依(RuoYi-Vue)实战：自定义接口开发+权限验证全流程（附Gitee上传）]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/161253761</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/161253761</guid><author>gsgsshbs</author><pubDate>Wed, 20 May 2026 12:52:23 +0800</pubDate><description><![CDATA[后端开发核心是编写自定义接口，并通过若依框架提供的@PreAuthorize注解配置权限，确保只有拥有指定权限的用户才能访问接口。全程遵循若依框架的代码规范，无需额外配置权限拦截器，简化开发流程。本次开发基于若依Vue框架，完成了自定义接口开发、权限配置、前端适配及Gitee上传全流程，核心要点如下：后端：通过@PreAuthorize注解配置权限，与菜单权限的权限标识保持一致，实现接口级权限控制；前端：通过v-hasPermi指令控制按钮显示，封装接口并调用，添加操作反馈；]]></description><category></category></item><item><title><![CDATA[若依框架分页查询实现分析]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/161213326</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/161213326</guid><author>gsgsshbs</author><pubDate>Tue, 19 May 2026 10:14:11 +0800</pubDate><description><![CDATA[语法，通过动态传入页码和每页条数参数，实现了高效的数据分页。该功能能有效避免一次性加载大量数据导致的性能问题，是后台管理系统中不可或缺的基础功能。6. 实验总结 ：本次实验验证了若依框架基于 MyBatis 的分页查询功能，其核心实现依赖 MySQL 的。，即跳过前 10 条数据，取后续 10 条数据（实际剩余 1 条）。5. 分页查询原理分析 内容： MySQL 分页查询的核心语法为。，验证其分页查询功能的实现逻辑与效果。，实现了第 2 页数据的查询。，实际执行 SQL 为。本次实验中，当前页码。]]></description><category></category></item><item><title><![CDATA[学生管理参数校验异常演示]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/161024006</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/161024006</guid><author>gsgsshbs</author><pubDate>Tue, 12 May 2026 18:27:30 +0800</pubDate><description><![CDATA[通过@NotBlank@Size注解实现后端参数校验，配合@Validated自动拦截不合法请求，无需手动判断，统一返回错误信息，保证接口数据合法性。]]></description><category></category></item><item><title><![CDATA[基于 RuoYi-Vue 代码生成器快速开发学生管理 CRUD 功能]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/160581459</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/160581459</guid><author>gsgsshbs</author><pubDate>Tue, 28 Apr 2026 09:50:26 +0800</pubDate><description><![CDATA[利用其内置的「代码生成器」，快速开发一套学生信息管理模块，实现对学生数据的 ** 增、删、改、查（CRUD）** 完整功能，目的是熟悉前后端分离项目的开发流程，掌握低代码生成工具的使用。中的菜单数据，自动生成后台左侧菜单。本次作业基于开源后台框架。点击「生成」按钮，下载。，解压后得到前后端代码。]]></description><category></category></item><item><title><![CDATA[RuoYi Vue 登录功能后端调用流程完整分析]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/160379369</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/160379369</guid><author>gsgsshbs</author><pubDate>Tue, 21 Apr 2026 19:15:45 +0800</pubDate><description><![CDATA[本次基于前后端分离权限管理框架，以小组合作形式，分析从登录页面 → 系统首页 → 退出登录整个过程中后端代码的调用逻辑、接口流转与核心业务处理，并通过时序图清晰展示各模块之间的交互流程。用户输入账号密码，发起登录请求登录成功后，系统自动获取当前用户信息与权限菜单，进入首页用户点击退出登录，清除身份信息并返回登录页下面从后端接口调用角度，逐层拆解每一步的执行逻辑。：接收登录、退出、获取信息等请求，统一入口：登录逻辑校验、异常处理、日志记录：用户信息查询、状态判断。]]></description><category></category></item><item><title><![CDATA[ruoyi vue v3.8.2 实现后端单表user 的CURD 功能代码和Postman 测试接口]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/160379082</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/160379082</guid><author>gsgsshbs</author><pubDate>Tue, 21 Apr 2026 19:09:24 +0800</pubDate><description><![CDATA[本项目基于 Spring Boot 框架，实现了一个用户信息的增删改查（CRUD）接口，用于演示前后端分离开发中后端接口的编写与测试流程。后端：Spring Boot 4.0.5 + Java测试工具：Postman本次项目实现了用户信息的 CRUD 接口，掌握了 Spring Boot 接口的编写、启动与 Postman 测试流程，理解了前后端分离开发中后端接口的作用。]]></description><category></category></item><item><title><![CDATA[SpringBoot 多模块项目：Helloworld+MyBatis 数据库交互实战]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/160147877</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/160147877</guid><author>gsgsshbs</author><pubDate>Tue, 14 Apr 2026 14:59:40 +0800</pubDate><description><![CDATA[本次作业基于 SpringBoot 4.0.5 搭建多模块项目hellow模块：复用上节课的 SpringBoot Helloworld 代码，实现基础 HTTP 接口mybatis模块：集成 MyBatis 框架，连接 MySQL 数据库，读取数据并返回前端本次作业完整实现了 SpringBoot 多模块项目的搭建，完成了 Helloworld 接口和 MyBatis 数据库交互的全部要求，项目可直接拉取运行，测试结果一致·。]]></description><category></category></item><item><title><![CDATA[SpringBoot HelloWorld 入门 + Postman 接口测试全流程]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/159919934</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/159919934</guid><author>gsgsshbs</author><pubDate>Tue, 07 Apr 2026 13:49:59 +0800</pubDate><description><![CDATA[本文介绍了基于SpringBoot的HelloWorld入门项目实现。项目使用Java17开发环境，通过Spring Initializr初始化创建，包含GET/POST/PUT/DELETE四种HTTP接口功能。核心代码实现了一个REST控制器，使用Map模拟数据存储，完成了用户数据的增删改查操作。项目使用Postman进行了完整的接口测试流程验证，包括数据添加、查询、修改和删除等功能测试。最后将项目代码通过Git提交至Gitee代码仓库，完成了从开发到部署的全流程。项目结构清晰，可作为SpringBoo]]></description><category></category></item><item><title><![CDATA[opencv]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/135617713</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/135617713</guid><author>gsgsshbs</author><pubDate>Tue, 16 Jan 2024 10:46:38 +0800</pubDate><description><![CDATA[, 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)    #线段二位置。]]></description><category></category></item><item><title><![CDATA[记录一下dd]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/135598492</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/135598492</guid><author>gsgsshbs</author><pubDate>Mon, 15 Jan 2024 12:38:57 +0800</pubDate><description><![CDATA[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('请输出结束页：'))]]></description><category></category></item><item><title><![CDATA[包含弹窗的提交按钮]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/135360314</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/135360314</guid><author>gsgsshbs</author><pubDate>Wed, 03 Jan 2024 12:05:06 +0800</pubDate><description><![CDATA[提交成功！</strong>请耐心等待企业通知！x = "<strong>已取消！提交简历]]></description><category></category></item><item><title><![CDATA[Flask学习记录#3]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/135182236</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/135182236</guid><author>gsgsshbs</author><pubDate>Tue, 02 Jan 2024 21:00:17 +0800</pubDate><description><![CDATA[os.path.join函数用于拼接指定目录和上传的文件名，secure_filename则保证文件名的正确性（将文件名中的空格替换为下划线），app.config则确保获取到UPLOAD_FOLDER的路径#<input type="submit" value="提交" />#配置文件的上传目录为uploaddir/##mult确保正确上传表单内容##用于存储用户上传的文件#]]></description><category></category></item><item><title><![CDATA[Flask学习记录#2]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/135195396</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/135195396</guid><author>gsgsshbs</author><pubDate>Tue, 26 Dec 2023 16:50:23 +0800</pubDate><description><![CDATA[' + "<b><a href = '/logout'>点击这里注销</a></b>"#如果是post提交（从input中得到），post数据为admin则跳转到/success网页，不是admin则跳转为401（没有权限）#return "您暂时未登录,<br><a href = '/login'><b>点击这里登录]]></description><category></category></item><item><title><![CDATA[Flask学习记录#1]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/135089414</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/135089414</guid><author>gsgsshbs</author><pubDate>Sun, 24 Dec 2023 22:35:27 +0800</pubDate><description><![CDATA[Flask 会根据当前应用的配置，将其转换为正确的 URL 地址，这样，无论在什么环境中都可以引用该文件的相对路径，而不是单一的硬路径#静态文件是指css，js，jpg等从外部引入不变的代码，使用url_for（‘函数名xxx’，关键词参数）来生成url。#创建了一个新的 Flask 应用程序实例，并将其赋值给变量app，name是一个特殊的python变量##运行应用程序，host表示在运行地址，此处为本地服务器ip127，threaded为多线程模式##检测是否为post，如果是获取内容到rst#]]></description><category></category></item><item><title><![CDATA[opencv学习记录#4]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/134990722</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/134990722</guid><author>gsgsshbs</author><pubDate>Thu, 14 Dec 2023 12:11:01 +0800</pubDate><description><![CDATA[首先，os.path.split函数将iamgePath里存储的路径再次分为目录和文件名两部分，再用[1]索引从分成后的元组中获取第二个元素，就是文件名，其次，用.split('.')函数将提取出的文件名按.为分割线分割成一个列表，再利用[0]索引获取该列表中的第一个元素，就是不带扩展名的文件名，如“123.jpg”会被分割成“123”，最后再用int函数将其转换为整数##从img_numpy中提取一个范围为（x，y）到（x+w，y+h）的子图像，并添加到facesbag列表的末尾#]]></description><category></category></item><item><title><![CDATA[opencv学习记录#3]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/134983148</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/134983148</guid><author>gsgsshbs</author><pubDate>Wed, 13 Dec 2023 22:13:19 +0800</pubDate><description><![CDATA[将当前捕获的图像保存到指定路径。文件名格式为"FacesaveX.jpg"，其中X是图片的序号（num）##从摄像头读取图像，ret返回值代表是否读取成功，frame存储读取的图像##VideoCapture函数用于从摄像头中捕获视频帧，0为默认摄像头##等待一毫秒输入，&0xFF将输入的ascll码转换为无符号整数##显示捕获的图像，窗口为Capture_Test##定义一个变量num用于记录生成的图片## 按 'q' 键退出循环##检测当摄像头开启时##读取失败结束函数#]]></description><category></category></item><item><title><![CDATA[OPENCV学习记录#2]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/134967869</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/134967869</guid><author>gsgsshbs</author><pubDate>Wed, 13 Dec 2023 13:15:10 +0800</pubDate><description><![CDATA[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 #设定四个变量，用于定义图形#]]></description><category></category></item><item><title><![CDATA[OPENCV学习记录#1]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/134959989</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/134959989</guid><author>gsgsshbs</author><pubDate>Tue, 12 Dec 2023 22:35:57 +0800</pubDate><description><![CDATA[将img转换为灰度图像并存入gray_img中，COLOR_BGR2GRAY可以修改成任一滤镜函数##将waitkey（0）改进为改代码以后，可直接点击q键退出图像#print('已修改：',resize_img.shape)#将图像存储为一个新的jpg文件，保存在项目文档中##使程序等待，直到用户按下一个键，正数为等待数值##显示原图尺寸，shape函数调出参数##read_img是显示出图像的名字##resize函数调整图像大小##显示修改后的图像##显示修改后的尺寸#]]></description><category></category></item><item><title><![CDATA[爬虫学习记录#1]]></title><link>https://blog.youkuaiyun.com/gsgsshbs/article/details/134926039</link><guid>https://blog.youkuaiyun.com/gsgsshbs/article/details/134926039</guid><author>gsgsshbs</author><pubDate>Mon, 11 Dec 2023 22:01:01 +0800</pubDate><description><![CDATA[将网址start后的数字改为{}，并用format函数将start_num的值赋予进去，达到每一次爬取不同start网址的效果，后面代码不变##由于外语标题也是title属性且前面带“/”，因此用if函数判断有无“/”，无斜杠为中文标题并输出##添加一个0到250，步长为25的循环，并赋予每个值start_num的名字##将all_names中的每个元素赋予name的名字，创造一个循环##找到所有name中的a元素，并将其添加于all_title中##将每个a元素赋予title的名字，创造一个循环#]]></description><category></category></item></channel></rss>