ruoyi springboot 开发笔记
1、跳过密码校验实现原理是从库中查询出密码直接用库中密码跳过加密进行密码比较。重写DaoAuthenticationProvider.java密码校验方法package com.zscq.framework.provider; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.dao.DaoAuthenticationProvider; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.AuthenticationException; import org.springframework.security.crypto.factory.PasswordEncoderFactories; public class LoginAuthenticationProvider extends DaoAuthenticationProvider { public LoginAuthenticationProvider(UserDetailsService userDetailsService) { super(); // 这个地方一定要对userDetailsService赋值不然userDetailsService是null (这个坑有点深) setUserDetailsService(userDetailsService); } SuppressWarnings(deprecation) protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException { if (authentication.getCredentials() null) { this.logger.debug(Failed to authenticate since no credentials provided); throw new BadCredentialsException(this.messages.getMessage(AbstractUserDetailsAuthenticationProvider.badCredentials, Bad credentials)); } else { String presentedPassword authentication.getCredentials().toString(); if(presentedPassword.equals(userDetails.getPassword())){ return; } if (!PasswordEncoderFactories.createDelegatingPasswordEncoder().matches(presentedPassword, userDetails.getPassword())) { this.logger.debug(Failed to authenticate since password does not match stored value); throw new BadCredentialsException(this.messages.getMessage(AbstractUserDetailsAuthenticationProvider.badCredentials, Bad credentials)); } } } }SecurityConfig.java 中增加SysPasswordService.java中增加SysLoginService.java中之前的login方法也需要调整否则会有问题2、禁用swaggerapplication.yml中3、java 执行c语言代码!-- java调用执行c语言-- dependency groupIdnet.java.dev.jna/groupId artifactIdjna/artifactId version5.14.0/version /dependency// 定义一个接口继承自 Library public interface ExampleLibrary extends Library { // 不使用的地方可以声明为 null ExampleLibrary INSTANCE null; int sim_main(Integer params); } // 动态获取共享库路径 // 加载共享库 ExampleLibrary exampleLibrary (ExampleLibrary)Native.load(basePath, ExampleLibrary.class); // 调用 C 函数 exampleLibrary.sim_main(numberofTimes); // 卸载dll Class myNative Class.forName(com.sun.jna.Native); Method method myNative.getDeclaredMethod(dispose, new Class[]{}); method.setAccessible(true); method.invoke(myNative, new Object[]{});4、java 判断list中对象是否形成环public static boolean hasCycle(ListTProjectNode nodes) { SetString visited new HashSet(); for (TProjectNode node : nodes) { String currentNodeId node.getNodeId(); // 处理当前节点的 nextNodeId String nextNodeId node.getNextNodeId(); if (visited.contains(currentNodeId)) { return true; // 如果已经访问过当前节点说明有环 } visited.add(currentNodeId); // 检查 nextNodeId 是否存在于 nodes 中 if (nextNodeId ! null) { boolean foundNextNode false; for (TProjectNode nextNode : nodes) { if (nextNode.getNodeId().equals(nextNodeId)) { foundNextNode true; break; } } // 如果 nextNodeId 不在列表中跳出循环 if (!foundNextNode) { break; } } } return false; // 如果没有重复访问说明无环 } public static void main(String[] args) { TProjectNode tProjectNode1 new TProjectNode(); tProjectNode1.setNodeId(1); tProjectNode1.setNextNodeId(2); TProjectNode tProjectNode2 new TProjectNode(); tProjectNode2.setNodeId(2); tProjectNode2.setNextNodeId(3); TProjectNode tProjectNode3 new TProjectNode(); tProjectNode3.setNodeId(3); tProjectNode3.setNextNodeId(1); TProjectNode tProjectNode4 new TProjectNode(); tProjectNode4.setNodeId(4); tProjectNode4.setNextNodeId(5); // 示例数据 ListTProjectNode projectNodes new ArrayList(); projectNodes.add(tProjectNode3); projectNodes.add(tProjectNode2); projectNodes.add(tProjectNode1); projectNodes.add(tProjectNode4); System.out.println(是否有环: hasCycle(projectNodes)); }5、MySQL批量迁移数据库复制Data下的所有库文件和ibdata1(这个不复制navicate中只显示库不显示表)6、mysql数据过30分钟自动删除步骤1创建一个数据库表CREATE TABLE my_table ( id INT AUTO_INCREMENT PRIMARY KEY, data VARCHAR(255), created_at DATETIME DEFAULT CURRENT_TIMESTAMP );步骤2插入一些测试数据INSERT INTO my_table (data) VALUES (测试数据1); INSERT INTO my_table (data) VALUES (测试数据2);步骤3创建触发器或定时任务在MySQL中并不直接支持自动删除数据的触发器功能。但是我们可以利用 EVENT 来创建一个定时任务自动删除超过30分钟的数据。首先我们需要确认我们的 MySQL 服务器支持事件调度。使用以下命令启用事件调度器SET GLOBAL event_scheduler ON;接下来我们创建一个事件来定期执行删除操作CREATE EVENT delete_old_records ON SCHEDULE EVERY 1 MINUTE DO DELETE FROM my_table WHERE created_at NOW() - INTERVAL 30 MINUTE;这个事件每分钟运行一次会删除 created_at 字段值在当前时间之前30分钟的数据。7、windows 测目的端口是否开放# powershell中执行 Test-NetConnection 192.168.0.159 -Port 5672 -InformationLevel Quiet

相关新闻

pacemaker-mgmt未来路线图:下一代集群管理控制台的功能展望

pacemaker-mgmt未来路线图:下一代集群管理控制台的功能展望

pacemaker-mgmt未来路线图:下一代集群管理控制台的功能展望 【免费下载链接】pacemaker-mgmt Management Console for Pacemaker 项目地址: https://gitcode.com/openeuler/pacemaker-mgmt 前往项目官网免费下载:https://ar.openeuler.org/ar/ 在…

2026/7/16 20:54:47阅读更多 →
信创即时通讯合规的三大致命短板及应对

信创即时通讯合规的三大致命短板及应对

信创即时通讯合规的三大致命短板,正在拖垮安全治理 当某省级机关的信息中心负责人发现,科室人员为图方便,在信创办公电脑上私自安装个人版即时通讯工具传输红头文件时,他意识到了一个严峻的问题:安全治理的防线&#x…

2026/7/16 20:54:47阅读更多 →
私有化IM选型逻辑被重写:业务韧性定胜负

私有化IM选型逻辑被重写:业务韧性定胜负

当“合规达标”成为标配,企业私有化IM的选型逻辑正在被重写 信息化负责人最近几年都有一个共同的感受:过去选择私有化IM,只要把安全合规清单拉满,就能在立项会上顺利过关。现在,这份清单依然很长,但业务部门…

2026/7/16 20:54:47阅读更多 →
从STATUS_INVALID_IMAGE_HASH到系统安全:深入解析Chromium内核的代码完整性保护机制

从STATUS_INVALID_IMAGE_HASH到系统安全:深入解析Chromium内核的代码完整性保护机制

1. 当浏览器突然罢工:STATUS_INVALID_IMAGE_HASH的来龙去脉 那天我正在赶一份紧急报告,Edge浏览器突然弹出一个从未见过的错误提示:"STATUS_INVALID_IMAGE_HASH",所有网页瞬间变成一片空白。相信不少使用Chromium内核浏…

2026/7/16 21:59:51阅读更多 →
无影云电脑部署OpenClaw与Qwen模型实战指南

无影云电脑部署OpenClaw与Qwen模型实战指南

1. 为什么非得在无影云电脑上跑OpenClaw?——从“能用”到“好用”的底层逻辑OpenClaw不是个新名字,但把它塞进阿里云无影云电脑这个环境里,就立刻从一个技术玩具变成了可落地的生产力工具。我最早接触OpenClaw是在本地Ubuntu 22.04上跑的&am…

2026/7/16 21:59:51阅读更多 →
突破水声阵列卡脖子技术,偶信拖曳线列阵有何硬核实力?

突破水声阵列卡脖子技术,偶信拖曳线列阵有何硬核实力?

在海洋强国战略深入推进的当下,水下感知能力已成为海洋安防、资源勘探、环境监测的核心支撑。拖曳线列阵作为水下被动声学探测的“水下千里耳”,其水声阵列换能器、低噪声传感单元等核心技术长期被海外企业构筑壁垒,成为制约我国海洋装备自主…

2026/7/16 21:59:51阅读更多 →
终极指南:如何在Windows上免费搭建macOS虚拟机?OSX-Hyper-V完整教程

终极指南:如何在Windows上免费搭建macOS虚拟机?OSX-Hyper-V完整教程

终极指南:如何在Windows上免费搭建macOS虚拟机?OSX-Hyper-V完整教程 【免费下载链接】OSX-Hyper-V OpenCore configuration for running macOS on Windows Hyper-V. 项目地址: https://gitcode.com/gh_mirrors/os/OSX-Hyper-V 想在Windows电脑上体…

2026/7/16 21:59:51阅读更多 →
PDF补丁丁:彻底改变你处理PDF文档的5种高效方法

PDF补丁丁:彻底改变你处理PDF文档的5种高效方法

PDF补丁丁:彻底改变你处理PDF文档的5种高效方法 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: https://gitcode.…

2026/7/16 21:59:51阅读更多 →
CMAQ空气质量模型:从零开始构建你的大气污染模拟系统

CMAQ空气质量模型:从零开始构建你的大气污染模拟系统

CMAQ空气质量模型:从零开始构建你的大气污染模拟系统 【免费下载链接】CMAQ Code for U.S. EPA’s Community Multiscale Air Quality Model (CMAQ) for estimating ozone, particulates, toxics, and deposition of acids and nutrients at neighborhood to global…

2026/7/16 21:54:51阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/16 6:53:04阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并

A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并

摘要:本文系统讲解如何利用Codex App的Review功能与GitHub PR工作流,实现从代码修改到安全合并的完整流程。涵盖Review面板深度使用、/review命令实战、GitHub Connector配置、PR描述撰写技巧,以及常见问题排查方法。通过多个实战案例和流程图,帮助开发者建立高效的AI辅助代…

2026/7/16 0:00:38阅读更多 →
遗传算法解5皇后问题:从Hello World到工业优化的进化实验室

遗传算法解5皇后问题:从Hello World到工业优化的进化实验室

1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…

2026/7/16 0:00:38阅读更多 →
5.1V稳压管输出为何只有4.7V?工作电流与负载影响分析

5.1V稳压管输出为何只有4.7V?工作电流与负载影响分析

前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…

2026/7/16 0:00:38阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →