自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 若依后台搭建商品购物车系统全攻略

本文详细介绍了在若依后台管理系统上搭建商品管理和购物车功能系统的完整流程。主要包括:1)准备工作与数据库表创建;2)通过若依后台生成代码并整合到项目中;3)前端页面文件搬运和重命名;4)路由配置与权限设置;5)运行调试过程中的问题分析与解决,包括组件引用修复、全局方法缺失处理等。最终实现了商品管理和购物车功能的系统集成,展示了完整的开发调试过程。

2025-11-27 21:05:17 771

原创 若依系统权限控制全流程解析

摘要:本文详细解析了若依(RuoYi)系统的权限控制流程,分为五个核心步骤:1)用户登录生成Token凭证;2)获取用户权限信息;3)动态路由过滤菜单;4)接口级权限校验。系统采用前后端双重验证机制,通过Token识别用户身份,利用权限字符(如system:user:add)控制访问权限。文章还提供了自定义接口权限的完整实现方案,包括后端注解添加、前端菜单配置、角色权限分配等关键步骤,强调权限标识必须前后端一致才能生效。整个权限体系基于数据库表sys_role_menu和sys_menu的关联关系,确保从界

2025-11-26 20:45:55 602

原创 深入解析数据分页:从源码到实战

本文深入解析了数据分页的实现原理与源码分析。首先阐述了分页的必要性:提升性能、优化用户体验和节省网络流量。然后以操作日志页面为例,详细拆解了前后端协作的分页流程:前端通过pageNum/pageSize参数发起请求,后端通过PageHelper插件实现分页拦截,最终返回包含total总数的包装数据。文章还展示了若依系统的字典管理分页实现,并提供了自定义MyPage类的实践方案,包括创建分页类、Service层实现、Controller接口改造等关键步骤。整个分页机制的核心在于前后端参数传递与PageHelp

2025-11-22 19:13:30 1076

原创 Spring Boot参数校验全流程解析

本文系统阐述了异常校验的完整实现逻辑,分为前端校验(提升用户体验)和后端校验(确保系统安全)。以角色名称和岗位添加为例,详细展示了从表单设计、规则触发到异常拦截的全流程。重点介绍了如何自定义参数验证注解@NoSpecialChars,包括注解定义、校验器实现及实体类应用。文中还归纳了常见校验注解(如@NotBlank、@Size)的使用场景,并强调前后端双重校验的必要性——前端快速反馈,后端防范恶意请求。整个校验过程通过全局异常处理器实现统一错误处理,最终形成完整的校验闭环体系。

2025-11-13 21:17:18 922 1

原创 Spring IOC/DI 与 MVC 从入门到实战

本文系统介绍了Spring框架中IOC/DI和SpringMVC的核心概念与实现方式。在IOC/DI部分,通过传统Java与Spring实现方式的对比,阐明了控制反转(IOC)和依赖注入(DI)的核心思想:对象创建和管理权交给Spring容器,由容器自动处理依赖关系。重点讲解了@Service、@Autowired等关键注解的使用方法,并通过示例展示了Spring容器的启动和配置过程。在SpringMVC部分,详细解析了@Controller、@RestController、@RequestMapping等

2025-11-08 14:43:34 713

原创 使用若依(RuoYi)代码生成器快速创建“学生管理”功能

摘要:本文详细介绍了使用若依(RuoYi)框架快速开发学生管理模块的全流程。从数据库建表开始,到代码生成器配置(包括字段类型、字典绑定等关键设置)、菜单结构设计,再到最终功能测试验证。重点展示了若依代码生成器如何自动生成前后端CRUD代码,相比传统手工开发极大提升效率(从数小时缩短至几分钟),同时避免权限遗漏等问题。文中还针对菜单不显示、字典值异常等常见问题提供了解决方案,为开发者提供了一套完整的若依框架实践指南。

2025-10-30 22:21:55 421

原创 若依(RuoYi-Vue)框架自定义接口并实现CRUD完整流程

在使用若依(RuoYi)快速开发平台时,我们经常需要为业务模块创建自定义的实体类和 CRUD 接口。本文将带你从零开始,在项目中实现一个完整的用户管理模块(User CRUD)自定义实体类UserMapper 映射Service 层接口与实现Controller 接口User.java--系统模块的数据对象注意事项字段名必须与数据库字段对应(或通过 MyBatis 映射)使用Date类型处理DATETIME添加注解以便返回时间格式化为原来的namesex字段删除,除非你打算扩展注解说明。

2025-10-25 04:52:52 811

原创 RuoYi-Vue 登录功能后端代码调用流程详解

本文概述了一个基于Vue和Spring Boot(若依框架)的系统登录流程,分为三个主要阶段:登录阶段(用户验证与Token生成)、首页访问阶段(Token校验与权限加载)和退出阶段(Token清除)。重点解析了登录功能的后端处理流程,包括Controller层请求处理、验证码校验、用户认证(通过SysLoginService)以及Token生成机制。同时提及了退出登录时的Token清理过程,完整展现了系统从登录到退出的安全认证全链路。

2025-10-23 21:42:18 349 1

原创 Spring Boot 分模块:从数据库到前端接口

数据库表设计 - Spring Boot 分层编码 - 接口测试与验证--分层架构(Controller → Service → Mapper)- - Controller层 - 作用:接收HTTP请求,返回响应-- 核心注解:@RestController、@GetMapping-- 示例:UserController.getAllUsers()-- Service层 - 作用:处理业务逻辑,调用Mapper-- 核心注解:@Service、@Autowired。

2025-10-18 17:55:08 979

原创 VueRouter终极指南:从入门到实战

✅路由配置:基础路由设置和懒加载✅导航方式:声明式导航和编程式导航✅参数传递:动态路由参数和查询参数✅导航守卫:全局守卫和权限控制✅状态管理:Pinia 状态管理与路由结合✅完整流程:从页面跳转到权限控制的完整流程。

2025-10-13 13:53:59 826

原创 前端框架学习指南:提升开发效率

前端框架提升开发效率的关键在于:1. 组件化开发模式提高复用性和维护性;2. 数据驱动视图实现自动更新,减少手动DOM操作;3. 提供现代开发工具链。框架与库的核心区别在于控制反转 - 框架控制流程调用开发者代码,而库是被开发者调用的工具。MVVM模式相比MVC优势明显:通过ViewModel实现双向数据绑定,使视图与模型完全解耦,开发更高效。Vue完美体现了MVVM架构,其响应式系统基于数据劫持、依赖收集和派发更新三大机制,实现数据与视图的自动同步。

2025-10-09 21:51:57 850

原创 JavaScript核心构成与基础语法详解2

本文介绍了JavaScript中核心对象及其功能,主要包括: 对象基础:创建方式(字面量、构造函数等)和常用方法 三大包装类: String:提供文本处理方法(截取、分割、查找等) Number:数值格式化和转换方法 Boolean:布尔值转换和逻辑运算 Global对象:包含全局属性(Infinity、NaN等)和函数(eval、编码解码等) Math对象:提供数学运算和常数(PI、随机数生成等) 数组对象:有序集合的操作方法(增删、遍历、排序等) 其他重要对象: RegExp(正则表达式) Date(日

2025-10-09 16:26:23 981

原创 JavaScript核心构成与基础语法详解1

本文系统介绍了JavaScript的核心概念和基础语法,主要包括:1)JS的三大构成(ECMAScript核心、DOM文档对象模型和BOM浏览器对象模型);2)两种JS引入方式(内嵌式和外部引用式);3)基本语法(变量声明、注释规范等);4)数据类型(7种原始类型和对象类型);5)流程控制语句(条件、循环、跳转);6)运算符(算术、比较、逻辑等)及其优先级;7)最后通过两个实战案例(优先级验证工具和表达式计算器)演示了基础知识的应用。文章采用代码示例与理论说明相结合的方式,全面覆盖了JavaScript的基

2025-10-08 23:13:48 887

原创 CSS是什么?—— 网页的“化妆师”

样式属性键:样式属性值样式属性键:样式属性值1 样式属性值2 样式属性值3····(样式属性值之间使用空格)

2025-10-07 19:41:04 1200

原创 HTML的本质——网页的“骨架”

HTML是构建网页结构的标记语言,通过标签如<table>、<a>、<form>等定义内容。基础标签包括表格(table/tr/td)、链接(<a href>)、排版(h1/p/hr)和表单(input/select)等。HTML5新增语义化标签如<header>、<nav>提升可读性。开发时需注意:小写标签、双引号属性、合理注释,以及通过meta标签优化SEO。兼容性问题可通过CSS解决,如对旧浏览器添加display:block。规

2025-10-07 15:31:35 791

原创 《SpringBoot入门实战:从HelloWorld到RESTful接口(支持GET/POST/PUT/DELETE,附Git版本控制)》

【30分钟快速上手SpringBoot接口开发】本教程面向Java初学者,通过SpringBoot实现RESTful接口开发全流程。内容涵盖:1)环境准备(JDK17+IDEA+Postman+Git);2)创建SpringBoot项目并开发GET/POST/PUT/DELETE接口;3)使用Postman测试接口;4)Git代码管理规范。重点演示了基于HashMap的内存数据增删改查操作,并提供了端口冲突、参数接收等常见问题的解决方案。通过本教程,开发者可快速掌握从项目创建到接口测试的完整开发流程,并学会

2025-10-05 19:46:44 994

原创 vue3组合式 API vs 选项式 API 的核心差异

通过本次实验,你不仅巩固了 Vue3 组合式 API 的核心知识点(

2025-09-21 14:38:50 1233

原创 Vue3 组件的“一生”:8 个核心生命周期阶段

今天咱们来学习 Vue3 的 “生命周期”——它就像“组件的一生”,从“出生”(创建)到“工作”(更新)再到“死亡”(卸载),每个阶段都有对应的“钩子函数”,让我们能在特定时机执行代码(比如初始化数据、发送请求、清理定时器等)。我们会用 “人生阶段”类比 理解生命周期,并结合 Vue3 组合式 API(<script setup>)的写法,通过 2 个实战案例 掌握用法,保证你学得明明白白!

2025-09-21 00:33:04 2268

原创 Vue中的监听方式

Vue监听机制实战指南:从基础到进阶应用 文章摘要: 本文系统介绍Vue2/Vue3中的数据监听机制。对比计算属性与监听器的差异,详细讲解Vue2的watch选项配置(deep/immediate),重点解析Vue3的watch(精准监听)和watchEffect(自动依赖追踪)两种API。通过Todo应用实例演示本地存储持久化实现,并展示条件监听弹窗等进阶用法。涵盖简单类型监听、对象/数组深度监听、多源监听等核心场景,帮助开发者根据需求选择最佳监听方案,有效处理数据变化的副作用操作。(149字)

2025-09-20 21:04:37 1275

原创 从零编写vue3系统--5步教学

2、v-for=“(todo,index)in todos”:循环遍历todos数组,每次循环拿到todo(当前代办对象)和Index(索引)3、:key="index":Vue要求循环列表时必须加key,帮助Vue识别每个元素的唯一性(这里简单的用Index,实际项目推荐唯一ID)5、@click“toggleDone(index)":事件绑定,点击时触发,toggleDone函数,并传入index(当前代办索引)案例:“Todo待办事项列表”,(功能类似:添加/删除代办、切换完成状态、统计数量)

2025-09-20 12:05:50 774

原创 揭秘Vue组件三大核心架构

Vue组件由三部分组成:template(页面结构)、script(逻辑处理)和style(样式美化)。本文通过计数器案例演示如何规范编写组件:在template中定义按钮和显示区,script中使用ref创建响应式变量count和addCount方法,style中设置样式。组件遵循三分离原则,结构清晰,响应正确。最后提出扩展练习:新增响应式变量age和按钮,巩固组件编写规范。

2025-09-19 19:50:08 349

原创 C++继承与多态

1)基类的公有和受保护类型,被派生类私有继承吸收后,都变成派生类的私有类型,即在鑫恒源函数可以访问,不能在类外访问。3)基类中的保护成员,在派生类依然是保护类型,可以通过派生类的成员函数访问,单数不可用派生对象访问。1)基类中的公有成员,在派生类中依然为公有成员,当然无论拍胜利的成员函数还是派生对象都可以访问。2)基类中的私有成员,无论在派生类中的成员函数还是派生对象都不可以访问。2)而基类的私有成员,在派生类无论类内还是类外都不可以访问。1)基类的公有成员和保护类型成员在派生类依然为保护成员。

2024-11-28 00:27:18 349

原创 栈和队列0

对于n个不同的元素,所有可能的出栈顺序的总数可以用第n个卡特兰数来计算。第n个卡特兰数的计算公式是: [ C_n = \frac{1}{n+1} \binom{2n}{n} ] 其中,( \binom{2n}{n} ) 是组合数,表示从2n个不同元素中选择n个元素的组合方式数。此时栈的状态是从栈底到栈顶依次为:2, 3, 2, 2。将十进制整数转换为八进制通常使用除以8取余数的方法。例如c_4=(1/(4+1))*8!=1/5*=4/7;转换完成后,从栈顶依次取出的余数是八进制数,即2322。

2024-11-26 20:42:40 206

原创 可大可小的容器-——向量

对于从数据库中查询得到的数据,主要有两种保存方式——数组向量数组和向量的区别:数组的长度是固定的,我们并不知道能查询到多少符合条件的数据,所以就有了向量。

2024-09-25 09:38:18 405

原创 构造函数和析构函数

public://构造函数//析构函数~MyClass()cout<<endl;在则合格李周四中,MyClass有一个动态分配的整形数组arry 构造函数结束一个整形参数size,并使用new运算符分配一个整形数组。析构函数使用delete[]运算符释放这个数组使用析构函数int mian()MyClass abj(10)//调用构造函数return 0;//程序结束 ,调用析构函数。

2024-09-20 18:01:30 401

原创 链表的插入

插入链表具体思路及其算法1,查找要插入值的具体位置即需要找插入值的前驱2,分情况讨论1、遍历完q循环结束也并非找到比elem更大的数据{a、链表为空链表 b、elem就是最大值 插入尾部即可}2、 找到了比elem更大的值{c、elem是整个链表中最小的值 插入头部做头结点 d、非空链表中elem就是最大值 插入尾部 q->next=s e、找到了比elelm更大的值}3、常规创建遍历链表释放资源例题。

2024-05-14 09:41:39 865 1

原创 C语言结构体全解

3个同学都建立了微信账号,账号信息包括:用户名,密码,头像,年龄,生日(这几个变量不同类型的变量所以不能直接用数组来储存的)需要用到结构体 --------->结构体可以储存不同类型的变量 当然结构体也可以储存结构体变量(了解即可 并非重点)上述代码需要注意的是:之前所学过的字符字符数字赋值要用到库函数 而不能直接用赋值等号(==)

2024-05-07 18:29:57 400 1

原创 结构体数组查询

【代码】结构体数组查询。

2024-04-22 22:16:26 423 1

原创 指针的指针与指针数组及二维数组】【】二维数组求和

输入一批数据,存放在二维数组中,求数组的和,要求使用指针数组实现。

2024-04-16 22:05:58 420

原创 【指针数组】与【二维数组】的应用

输入一个m行n列(m,n<=6)的二维数组,输出所有内容。以上是详细代码加注释 ,希望能够帮助到大家。接下来m行每行输入n个整数。

2024-04-14 17:13:38 229 1

原创 利用元素指针求二维数组和

从键盘输入12个整数,存入到3行4列的二维数组中,求和并输出数组及和的结果。输出三行四列的二维数组及和的结果。

2024-04-14 16:49:27 376 1

原创 求二维数组每行的最大值

输入3*4的二维数组,求每行的最大值,并输出。

2024-04-14 16:28:50 772 1

原创 二维数组+指针

注意:&a[M-1][N-1]+1是一个指针,表二维数组a的最后一个元素的下一个元素,如果直接将其写成&a[M][N]那么循环将会从二维数组的最后一个元素开始而不是最后一个元素的前一个元素开始。这可能导致访问数组使发生越界的情况。&a[M][N]实际上是指向a的一个地址,而&a[M-1][N-1]+1则表示最后一个元素的下一个元素。从键盘输入12个整数,存入到3行4列的二维数组中,求和并输出数组及和的结果。这样就可以确保循环从数组的最后一个元素开始。输出三行四列的二维数组及和的结果。

2024-04-14 13:39:22 442 1

原创 【指针与二维数组】求二维数组的最大值

需要注意的是,在循环中,我们使用了指针的递增操作,而不是使用了数组的索引,这是因为数组的内存是连续储存的,指针是通过递增操作依次访问数组的每一个元素的,而数组的索引需要用循环遍历整个数组,因此,使用指针递增操作可以更加高效的访问数组的元素。二维数组的总行数可以用m*n来表述,因为二维数组可以看走一个矩阵,其中每个元素都是一个一维数组,在矩阵中,每一行代表一个一维数组,每一列页代表一个一维数组,因此总行数就是一维数组的个数,而总列数就是每个一维数组的总长度。2.判断row二维数组的总行数(m*n)

2024-04-14 12:23:32 639 1

原创 二维数组指针习题来咯

分布解释到位:eg:a+0是第一行的地址,所以a+0*n;表示第一行有n列即第一行所有元素的地址,所以(a+0*n)+0,则就表示第一行第一列的元素的地址即*(a+0*n)+0即是其所指向的内容即第一行第一列的那个元素。需要理解透彻才能准确把握题目,多做题从题目中悟出其中的奥妙需要慢慢理解,千万不可急于求成,指针需要花费时间去学习,加油!从键盘输入数值,构成一个3行4列的二维整型数组,设计函数对每个元素执行加1操作,然后在主函数中输出该数组的内容。*((a+i*n)+j)表示指向第i行第j列元素的指针。

2024-04-13 21:38:17 938 3

原创 【函数 数组 指针】求整数因数

要求:设计一个函数 int yinshu(int n,int *a) //result将返回所有因数结果,因此,实际参数必须是数组;该函数的功能是,从字符串str1中,从序号index开始(第1个字符的序号为0),提取length个字符,复制给字符串str2。n求一个正整数(1~32767)的所有因数(能整除该数且小于其本身的数),数与数之间用空格隔开,例如输入12,输出:1 2 3 4 6。第2行是2个整数,第1个整数是起始序号,第2个整数是提取的字符个数。求整数因数即就是取余为0的数。

2024-04-11 23:14:14 534 1

原创 【C语言】【指针与数组】计算平均分及人数统计

要求:设计一个输入数据的函数 void inputarray(int * a,int *n) //a是指向数组的指针,n用于返回实际输入数据个数。输入n(n<20)个整数,统计数组中大于平均值(含相等的值)和小于平均值的比例,并输出结果,其中大于平均值(含相等的值)在前,小于平均值在后。这一操作的目的是要求求高于平均值和低于平均值人数的最大公约数,然后记录他们除以最大公约数的值,最后输出他们的比列形式。算法:“”统计数组中大于平均值(含相等的值)和小于平均值”同上,主要是求平均值,然后进行比较,

2024-04-11 18:52:51 2903 1

原创 问题 D: 【函数 数组 指针 】分数转换成等级

2.分数是0-100 如果写五个分数那就只能判断那个分段的等级 ,但一般情况是1-100的分值。转换结果,注意outscore数组要用p 指针访问,使用指针将其地址保存起来。3.switch 函数切记不要忘记break;将输入的5个成绩转换成对应的等级输出。输出5个字符等级,用空格分隔。

2024-04-11 17:10:16 456 1

原创 【问题C】: 【数组 函数 指针】求数组元素最大值

7 5 8 9 6 4 7 39#include<stdio.h>#define N 100//宏定义void findLargest(int a[],int n,int *pmax);//*pmax是通过指针来返回最大值int main(){ int a[N],i,n,max; scanf("%d",&n);//第一行输入一个数字n; for(i=0;i<n;i++) scanf("%d",&a[i]);//第二行输入n个数 findLargest(a,n,

2024-04-10 14:14:06 500 1

原创 写指针与数组的代码

指针p指向数组a的元素a[i],常有以下3种方式1. p=a+i;2. p=&a[i];3. 先让p指向数组a,即指向a[0],然后让p不断地++,让它分别指向a[1]、a[2]、.........。下面,你就尝试一下,用这种方式,让指针指向数组元素。

2024-04-09 23:48:26 860

指针p指向数组a的元素ai,常有以下3种方式 1. p=a+i; 2. p=&ai; 3. 先让p指向数组a,即指向a

C语言代码: #include<stdio.h> int main() { int a[4]={3,5,7,9}; int i,*p,*q; for(i=0;i<4;i++) { p=a+i;//注意:p 是指针实质上是一个地址 在数组中即为下标,a也是指向数组的首个元素此处需要遍历数组的每一个元素所以采用a+i; printf("%d ",*p);//*p表示P所指向的内容*p=*(a+i)=a[i] } printf("\n"); for(i=0;i<4;i++) { p=&a[i];//让P指向数组a printf("%d ",*p); } printf("\n"); q=a;//表示指向数组a的首个元素,即a[0],并非整个数组 for(i=0;i<4;i++) { printf("%d ",*q); q++;//地址自增依次往后推 循环四次输出整个数组,虽然指出已经越界了但是循环结束,其实向其他页没关系 } printf("\n"); return 0; }

2024-04-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除