自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 全面掌握Python数据分析:从环境搭建到NumPy实战

NumPy是Python科学计算的基础包,提供高性能的多维数组对象及相关工具。Pandas等高级库都建立在NumPy之上。Python数据分析生态已经非常成熟,从环境搭建到核心库使用都有完整的解决方案。掌握Anaconda环境管理、Jupyter Notebook交互式开发以及NumPy核心操作,是开启数据科学之旅的重要第一步。建议初学者按照"环境→基础→实战"的顺序循序渐进,逐步构建完整的数据分析能力栈。

2025-12-29 21:52:58 592

原创 阿里云服务器部署项目教程

阿里云官网购买即可(新人有3个月免费的)

2025-12-09 16:34:11 427

原创 若依框架DataScopeAspect 数据权限 SQL 语句详细分析

代码实现生成的 SQL 片段(示例)最终执行的 SQL数据库表结构说明-- sys_role_dept 表结构role_id bigint(20) not null comment '角色ID',dept_id bigint(20) not null comment '部门ID',-- 示例数据-- 角色2可以访问部门100-- 角色2可以访问部门101-- 角色2可以访问部门1051. 灵活性: 支持多种权限类型,满足不同业务场景。

2025-12-03 21:30:58 1021

原创 #深入理解若依(RuoYi)框架中的 RBAC 权限管理模型实现流程

若依框架RBAC权限模型的核心特点。

2025-11-26 17:52:49 812

原创 RuoYi-Vue后台管理系统数据分页功能详细分析

数据分页是一种将大量数据分割成多个页面显示的技术,它允许用户逐页浏览数据,而不是一次性加载所有数据。分页功能在Web应用中非常重要,特别是处理大量数据时,它可以显著提高页面加载速度、减少服务器负担,并改善用户体验。分页的主要优势性能优化:减少每次查询的数据量,降低数据库负载用户体验:避免信息过载,让用户更容易浏览和查找数据带宽节省:减少网络传输的数据量响应速度:提高页面渲染速度用户交互 → Vue组件 → API调用 → Axios请求 → 后端响应 → 数据渲染// 查询学生信息列表。

2025-11-19 19:59:24 1038

原创 一句话说明前端请求携带token的作用

前端请求携带 token,说白了就是在网络世界里“”和“

2025-11-16 12:34:12 122

原创 若以异常处理分析

Valid 、@Size等注解:Hibernate Validator提供的标准校验注解:Spring MVC参数校验失败的标准异常:RuoYi框架全局统一异常处理器,负责转换为用户友好的错误提示。

2025-11-12 17:13:48 825

原创 ruoyi 中Spring IOC、DI 注解使用+Spring MVC 注解使用

RestController:等价于 @Component + @ResponseBody作用:专门给“写 RESTful 接口”用的组合注解,它一贴上去就等价于同时贴了强制这个类里所有方法的返回值直接写进 HTTP 响应体,默认走 JSON/XML,不走任何页面视图解析器。@Service 等价于@Component(底层扫描、注册、依赖注入行为与 @Component 完全一致,只是换了个名字)@Service 的作用把类标识为“业务层组件。

2025-11-04 21:06:48 743

原创 Ruoyi Vue 生成代码的使用教程

【代码】Ruoyi Vue 生成代码的使用教程。

2025-10-30 19:51:48 320

原创 RuoYi 框架中新建表并实现增删改查(CRUD)

技术栈:MySQL、Spring Boot、MyBatis、RuoYi 框架(若依前后端分离版)实现基本的 CRUD 操作(select、insert、update、delete)项目结构简介(后端模块划分:admin、system、common 等)字段设计:id、name、email、age、created_at。开发工具:IDEA、Navicat、Postman。表设计规范建议(字段命名、主键、索引、时间戳)将springboot入门中的User。实现分页查询、新增、修改、删除接口。

2025-10-22 20:10:52 406

原创 SpringBoot项目使用MyBatis 读取数据库数据并返回

这样,每一层都只专注于自己的职责,降低了模块间的耦合度,提高了代码的可读性和可维护性。文件会包含实际的 SQL 语句。

2025-10-17 10:37:25 786

原创 spring环境搭建

2. 在 src\main\resources ⽬录下新建 spring.xml ⽂件,并拷⻉官⽹⽂档提供的模板内容到 xml 中。// 通过getBean⽅法得到Spring容器中实例化好的Bean对象 (实例化Bean对象)xmlns:xsi 即xml schema instance xml 遵守的具体规范。--删除build标签中的pluginManagement标签-->// userDao代表的是配置⽂件中bean标签的id属性值。-- 添加Spring框架的核⼼依赖 -->

2025-10-12 09:07:06 463

原创 C++初始化顺序

//如果要用这种把int size放在int* pArray前面,因为在C++中,成员变量的初始化顺序是按照。//因此,当pArray使用size时,size还没有被初始化,这会导致未定义行为。//在初始化列表中使用了成员变量size来初始化pArray指针,//它们在类定义中出现的顺序,而不是它们在初始化列表中的顺序。//它们在类定义中出现的顺序,而不是它们在初始化列表中的顺序。//此时size还没有被赋予x的值,因为它的初始化还没有完成。//简单的来说size(x)是将x的值赋给size成员变量,

2024-11-23 20:39:39 378

原创 c++中容器常用函数

在C++中,vectordequestackqueuelist是几种常用的容器,它们各自有不同的特点和适用场景。

2024-11-21 21:59:56 234

原创 c++构造函数和析构函数

#include<iostream>using namespace std;class A{public: A() { cout<<"无参构造A()"<<endl; this->a=0; this->b=0; } A(int a,int b) { cout<<"有参构造A(int a,int b)"<<endl;

2024-10-26 22:34:56 478

原创 c++string类中相关函数

`replace(size_t pos, size_t len, const string& str)`:替换从`pos`开始的`len`个字符为`str`。- `string(size_t n, char c)`:创建一个由`n`个字符`c`组成的字符串。- `append(size_t n, char c)`:在当前字符串的末尾追加`n`个字符`c`。- `assign(size_t n, char c)`:将`n`个字符`c`赋值给当前字符串。

2024-10-17 21:14:44 405

原创 用栈解决后缀数

用栈解决后缀数

2024-10-10 20:49:49 459 2

原创 C++中基类的构造函数不定义成虚析构函数会怎样

在上面的代码中,`Base` 类的析构函数不是虚函数。当我们创建一个 `Derived` 类型的对象,并通过 `Base` 类型的指针删除它时,只有 `Base` 类的析构函数会被调用,而 `Derived` 类的析构函数则不会。如果基类有一个非虚的析构函数,当通过基类的指针删除派生类的对象时,会发生未定义行为。这样,当通过基类的指针删除派生类的对象时,C++ 运行时会确保首先调用派生类的析构函数,然后调用基类的析构函数,从而保证资源的正确释放和对象的完全析构。

2024-06-17 12:38:42 390

原创 c++初始化列表的使用

在这个例子中,`Cm`类有一个构造函数`Cm(int& ref)`,它接受一个`int`类型的引用作为参数,并将其用于初始化引用成员`c`。在`main`函数中,我们创建了一个`int`类型的变量`someInt`,然后使用它的引用来实例化`Cm`对象`cm`。这样,`cm.c`就会引用`someInt`。在您提供的代码中,并没有定义构造函数,因此编译器不知道如何初始化`c`成员。要解决这个问题,您可以为`Cm`类添加一个构造函数,并在构造函数中初始化引用成员`c`。// 构造函数,初始化引用成员c。

2024-06-08 16:51:23 188

原创 c++deque容器的模拟实现代码

/ 构造函数,初始化 blockSize,head 和 tail 指针。// 提供 rend() 方法,返回指向双端队列头部之前一位的逆向迭代器。// 提供 rbegin() 方法,返回指向双端队列尾部的逆向迭代器。// 提供 end() 方法,返回指向双端队列尾部之后一位的迭代器。// 提供 begin() 方法,返回指向双端队列头部的迭代器。// 定义一个内部结构 Node,用于表示双端队列的节点。// 指向双端队列尾部的指针。// 构造函数,初始化 node 和 index。Node* node;

2024-06-02 10:45:56 370

原创 c++duque容器的相关知识和相关代码

在 C++ STL 中,`deque` 是标准模板库中的一个容器适配器,提供了一个动态数组的功能,但与 `vector` 不同的是,`deque` 允许在两端快速地插入和删除元素。2. **动态数组**:内部使用数组实现,但与 `vector` 不同,`deque` 可以动态地增加和减少其大小。- `deque` 的性能在随机访问和迭代器失效方面不如 `vector`,但在两端操作方面优于 `vector`。- `deque` 的迭代器是双向迭代器,不同于 `vector` 的随机访问迭代器。

2024-06-02 10:26:35 496

原创 vector容器大致模拟实现

*注意**:这个简化的模拟代码仅用于演示`std::vector`的某些底层实现原理,并没有实现`std::vector`的所有功能和优化。在实际应用中,应直接使用STL提供的`std::vector`,因为它经过了优化,提供了更高效、更安全的操作。C++中的`std::vector`是基于动态数组实现的。以下是`std::vector`实现原理的一个简化示例,以及一些关键操作的模拟代码。`std::vector`需要处理迭代器的失效问题,确保它们在操作后仍然有效。// 当前分配的内存大小。

2024-05-31 18:28:48 452

原创 c++vector容器详细内容和相关代码

18. **Iterators(迭代器)**:`vector`提供了多种迭代器,如`begin()`、`end()`、`rbegin()`、`rend()`、`cbegin()`、`cend()`、`crbegin()`和`crend()`,用于访问容器中的元素[^1^]。`capacity`必然大于等于`size`[^1^]。16. **Element access(元素访问)**:可以通过下标`[]`、`at()`、`front()`、`back()`和`data`等方法访问元素[^1^]。

2024-05-30 23:42:32 359

原创 C++中的`string`类及其相关函数以及相关代码辅助理解

`replace(size_type pos, size_type len, const string& str)`: 用`str`替换从位置`pos`开始的`len`个字符。- `substr(size_type pos = 0, size_type len = npos)`: 返回从位置`pos`开始的、长度为`len`的子串。- `find(const string& str, size_type pos = 0)`: 从位置`pos`开始查找子串`str`。// 查找第一个'l'或'o'

2024-05-29 20:30:11 380

原创 c++字符串相关函数

`replace(pos, len, "new")`:从位置`pos`开始,替换长度为`len`的部分为"new"。` 将`str1`和`str2`连接后赋值给`str`。- `substr(pos, len)`:从位置`pos`开始获取长度为`len`的子串。- `erase(pos, len)`:从位置`pos`开始删除长度为`len`的部分。- `insert(pos, "new")`:在位置`pos`插入子串"new"。- `size()` 或 `length()`:返回字符串的长度。

2024-05-29 20:24:57 219

空空如也

空空如也

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

TA关注的人

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