当前位置: 首页 > news >正文

RuoYi(若依)框架的介绍与基本使用(超详细分析)

**RuoYi(若依)**是一个基于Spring Boot和Spring Cloud的企业级快速开发平台。它集成了多种常用的技术栈和中间件,旨在帮助企业快速构建稳定、高效的应用系统。以下是关于RuoYi框架的详细介绍和基本使用教程,涵盖了从环境搭建到核心功能的使用。

RuoYi 框架简介

1. 技术栈
  • 后端技术:Spring Boot, MyBatis, Druid, Redis, Shiro/Spring Security, Quartz等
  • 前端技术:Vue.js, Element UI, Axios, Webpack等
  • 数据库:MySQL, Oracle, SQL Server等
  • 中间件:Nginx, RabbitMQ, Elasticsearch等
2. 核心功能
  • 权限管理:用户、角色、菜单、权限的管理
  • 系统管理:部门、岗位、字典、参数、通知公告等
  • 工具管理:代码生成器、在线表单、定时任务等
  • 监控管理:服务监控、操作日志、登录日志、在线用户等
  • 多租户支持:支持多租户模式,便于企业级应用的扩展

环境搭建

1. 开发环境准备
  • Java:安装JDK 8或更高版本
  • IDE:推荐使用IntelliJ IDEA或Eclipse
  • 数据库:安装MySQL 5.7或更高版本
  • Node.js:用于前端开发,安装Node.js 12或更高版本
  • Git:用于版本控制
2. 下载RuoYi源码
  • 访问RuoYi的GitHub仓库:https://github.com/y_project/RuoYi

  • 克隆项目到本地

    git clone https://github.com/y_project/RuoYi.git
    
3. 配置数据库
  • 创建数据库:

    CREATE DATABASE ruoyi DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  • 导入初始化SQL脚本:

    • 进入ruoyi/sql目录,找到ruoyi.sql文件

    • 执行SQL脚本:

      mysql -u root -p ruoyi < ruoyi.sql
      
4. 配置项目
  • 修改ruoyi-common/src/main/resources/ruoyi.properties文件,配置数据库连接信息:properties深色版本

    spring.datasource.url=jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    spring.datasource.username=root
    spring.datasource.password=your_password
    
  • 配置Redis(可选):properties深色版本

    spring.redis.host=localhost
    spring.redis.port=6379
    
5. 构建和运行项目
  • 后端:

    • 打开IDE,导入项目
    • 运行ruoyi-admin模块中的RuoYiApplication启动类
  • 前端:

    • 进入ruoyi-ui目录

    • 安装依赖:

      npm install
      
    • 启动前端项目:

      npm run dev
      

基本功能使用

1. 登录
  • 打开浏览器,访问http://localhost:8080
  • 使用默认账号admin,密码admin123登录
2. 权限管理
  • 用户管理:添加、编辑、删除用户
  • 角色管理:创建、编辑、删除角色,分配权限
  • 菜单管理:创建、编辑、删除菜单,分配给角色
  • 权限管理:管理具体的权限点
3. 系统管理
  • 部门管理:创建、编辑、删除部门
  • 岗位管理:创建、编辑、删除岗位
  • 字典管理:管理系统的字典项
  • 参数管理:管理系统的参数配置
  • 通知公告:发布、编辑、删除通知公告
4. 工具管理
  • 代码生成器:根据数据库表生成CRUD代码
  • 在线表单:创建和管理表单
  • 定时任务:创建、编辑、删除定时任务
5. 监控管理
  • 服务监控:监控系统的健康状况
  • 操作日志:查看用户的操作记录
  • 登录日志:查看用户的登录记录
  • 在线用户:查看当前在线的用户

扩展功能

1. 多租户支持
  • ruoyi-system模块中,修改SysTenantService类,实现多租户逻辑
  • 在数据库中添加租户表,管理租户信息
  • 在前端页面中,增加租户切换功能
2. 接口文档
  • 使用Swagger生成API文档

  • 在ruoyi-admin模块中,添加Swagger依赖:

    <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>
    </dependency>
    
  • 配置Swagger:

    @Configuration
    @EnableSwagger2WebMvc
    public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.ruoyi")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("RuoYi API 文档").description("RuoYi API 文档").contact(new Contact("RuoYi", "https://github.com/y_project/RuoYi", "y_project@163.com")).version("1.0").build();}
    }
    

从项目的整体结构、核心模块、配置文件、主要功能等方面进行深入探讨。

项目结构

RuoYi项目采用微服务架构设计,主要分为以下几个模块:

  1. ruoyi-common:公共模块,包含一些常用的工具类和配置。
  2. ruoyi-auth:认证授权模块,负责用户的登录、权限校验等。
  3. ruoyi-system:系统管理模块,包括用户、角色、菜单、部门等管理功能。
  4. ruoyi-gen:代码生成模块,用于根据数据库表生成CRUD代码。
  5. ruoyi-job:定时任务模块,管理定时任务的创建、编辑和执行。
  6. ruoyi-monitor:监控模块,包括服务监控、操作日志、登录日志等。
  7. ruoyi-tool:工具模块,提供一些辅助工具,如在线表单等。
  8. ruoyi-admin:后端主项目,整合了上述所有模块。
  9. ruoyi-ui:前端项目,基于Vue.js和Element UI构建的前端界面。

核心模块详解

1. ruoyi-common

功能:提供一些常用的工具类和配置,如日期工具、字符串工具、常量定义等。

主要文件

  • config:配置文件,如数据库配置、Redis配置等。
  • core:核心工具类,如日期工具、字符串工具等。
  • exception:异常处理类。
  • utils:各种实用工具类。
2. ruoyi-auth

功能:负责用户的认证和授权,使用Spring Security或Shiro实现。

主要文件

  • config:安全配置类,如SecurityConfig
  • controller:认证控制器,如LoginController
  • domain:认证相关的实体类,如UserDetailsServiceImpl
  • service:认证服务,如UserService
3. ruoyi-system

功能:系统管理模块,包括用户、角色、菜单、部门等管理功能。

主要文件

  • controller:系统管理相关的控制器,如UserControllerRoleController等。
  • domain:系统管理相关的实体类,如SysUserSysRole等。
  • mapper:MyBatis映射文件,如SysUserMapper.xml
  • service:系统管理相关的服务类,如SysUserServiceSysRoleService等。
  • vo:视图对象,用于封装返回给前端的数据。
4. ruoyi-gen

功能:代码生成模块,根据数据库表生成CRUD代码。

主要文件

  • controller:代码生成相关的控制器,如GenController
  • domain:代码生成相关的实体类,如GenTable
  • mapper:MyBatis映射文件,如GenTableMapper.xml
  • service:代码生成相关的服务类,如GenTableService
  • util:代码生成工具类,如VelocityInitializer
5. ruoyi-job

功能:定时任务管理模块,使用Quartz实现。

主要文件

  • controller:定时任务相关的控制器,如JobController
  • domain:定时任务相关的实体类,如SysJob
  • mapper:MyBatis映射文件,如SysJobMapper.xml
  • service:定时任务相关的服务类,如SysJobService
  • util:定时任务工具类,如ScheduleUtils
6. ruoyi-monitor

功能:监控模块,包括服务监控、操作日志、登录日志等。

主要文件

  • controller:监控相关的控制器,如ServerControllerLogController
  • domain:监控相关的实体类,如SysLogininforSysOperLog
  • mapper:MyBatis映射文件,如SysLogininforMapper.xml
  • service:监控相关的服务类,如SysLogininforServiceSysOperLogService
7. ruoyi-tool

功能:工具模块,提供一些辅助工具,如在线表单等。

主要文件

  • controller:工具相关的控制器,如GenFormController
  • domain:工具相关的实体类,如GenForm
  • mapper:MyBatis映射文件,如GenFormMapper.xml
  • service:工具相关的服务类,如GenFormService
8. ruoyi-admin

功能:后端主项目,整合了上述所有模块。

主要文件

  • application.yml:主配置文件,包含各个模块的配置。
  • RuoYiApplication.java:主启动类。
  • config:全局配置类,如WebMvcConfigDruidConfig
  • controller:主控制器,如IndexController
  • filter:过滤器,如CorsFilter
  • interceptor:拦截器,如AuthTokenInterceptor
  • service:主服务类,如IndexService
9. ruoyi-ui

功能:前端项目,基于Vue.js和Element UI构建的前端界面。

主要文件

  • src
    

    :前端源代码目录。

    • api:API接口文件,如user.js
    • assets:静态资源文件,如图片、样式表。
    • components:自定义组件。
    • router:路由配置文件,如index.js
    • store:状态管理文件,如index.js
    • views:页面组件,如dashboard.vue
    • App.vue:主应用组件。
    • main.js:入口文件。

配置文件详解

1. application.yml

功能:主配置文件,包含各个模块的配置。

示例

server:port: 8080spring:datasource:url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username: rootpassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Driverredis:host: localhostport: 6379thymeleaf:cache: falsemybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath:mapper/**/*.xmldruid:initial-size: 5min-idle: 5max-active: 20test-on-borrow: falsetest-on-return: falsetest-while-idle: truetime-between-eviction-runs-millis: 60000min-evictable-idle-time-millis: 300000validation-query: SELECT 1 FROM DUALfilters: stat,wall,log4jconnection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000logging:level:com.ruoyi: infofile:name: logs/ruoyi.logswagger:enabled: truetitle: RuoYi API 文档description: RuoYi API 文档version: 1.0contact:name: RuoYiurl: https://github.com/y_project/RuoYiemail: y_project@163.com

主要功能详解

1. 登录

功能:用户登录系统,验证用户名和密码。

实现

  • 前端:在ruoyi-ui/src/views/login/index.vue中,使用Axios发送登录请求。

    import axios from 'axios';methods: {handleLogin() {const { username, password } = this.loginForm;axios.post('/login', { username, password }).then(response => {if (response.data.code === 200) {this.$router.push('/dashboard');} else {this.$message.error(response.data.msg);}});}
    }
    
  • 后端:在ruoyi-auth/controller/LoginController.java中,处理登录请求。

    @RestController
    @RequestMapping("/auth")
    public class LoginController {@Autowiredprivate AuthenticationManager authenticationManager;@PostMapping("/login")public AjaxResult login(@RequestBody LoginBody loginBody) {try {UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginBody.getUsername(), loginBody.getPassword());Authentication authentication = authenticationManager.authenticate(authenticationToken);if (authentication.isAuthenticated()) {return AjaxResult.success("登录成功");} else {return AjaxResult.error("用户名或密码错误");}} catch (Exception e) {return AjaxResult.error("登录失败");}}
    }
    
2. 用户管理

功能:添加、编辑、删除用户。

实现

  • 前端:在ruoyi-ui/src/views/system/user/index.vue中,使用Axios发送请求。

    import axios from 'axios';methods: {addUser() {axios.post('/system/user', this.userForm).then(response => {if (response.data.code === 200) {this.$message.success("添加成功");} else {this.$message.error(response.data.msg);}});},editUser() {axios.put('/system/user', this.userForm).then(response => {if (response.data.code === 200) {this.$message.success("编辑成功");} else {this.$message.error(response.data.msg);}});},deleteUser(id) {axios.delete(`/system/user/${id}`).then(response => {if (response.data.code === 200) {this.$message.success("删除成功");} else {this.$message.error(response.data.msg);}});}
    }
    
  • 后端:在ruoyi-system/controller/UserController.java中,处理用户管理请求。

    @RestController
    @RequestMapping("/system/user")
    public class UserController {@Autowiredprivate SysUserService userService;@PostMappingpublic AjaxResult addUser(@RequestBody SysUser user) {return toAjax(userService.insertUser(user));}@PutMappingpublic AjaxResult editUser(@RequestBody SysUser user) {return toAjax(userService.updateUser(user));}@DeleteMapping("/{userId}")public AjaxResult deleteUser(@PathVariable Long userId) {return toAjax(userService.deleteUserById(userId));}
    }
    
3. 角色管理

功能:添加、编辑、删除角色,分配权限。

实现

  • 前端:在ruoyi-ui/src/views/system/role/index.vue中,使用Axios发送请求。

    import axios from 'axios';methods: {addRole() {axios.post('/system/role', this.roleForm).then(response => {if (response.data.code === 200) {this.$message.success("添加成功");} else {this.$message.error(response.data.msg);}});},editRole() {axios.put('/system/role', this.roleForm).then(response => {if (response.data.code === 200) {this.$message.success("编辑成功");} else {this.$message.error(response.data.msg);}});},deleteRole(id) {axios.delete(`/system/role/${id}`).then(response => {if (response.data.code === 200) {this.$message.success("删除成功");} else {this.$message.error(response.data.msg);}});}
    }
    
  • 后端:在ruoyi-system/controller/RoleController.java中,处理角色管理请求。

    @RestController
    @RequestMapping("/system/role")
    public class RoleController {@Autowiredprivate SysRoleService roleService;@PostMappingpublic AjaxResult addRole(@RequestBody SysRole role) {return toAjax(roleService.insertRole(role));}@PutMappingpublic AjaxResult editRole(@RequestBody SysRole role) {return toAjax(roleService.updateRole(role));}@DeleteMapping("/{roleId}")public AjaxResult deleteRole(@PathVariable Long roleId) {return toAjax(roleService.deleteRoleById(roleId));}
    }
    

扩展功能

1. 多租户支持

功能:支持多租户模式,每个租户有独立的数据空间。

实现

  • 数据库:在数据库中添加租户表,如sys_tenant

    CREATE TABLE sys_tenant (tenant_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '租户ID',tenant_name VARCHAR(50) NOT NULL COMMENT '租户名称',status CHAR(1) NOT NULL COMMENT '状态(0正常 1停用)',create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',create_time DATETIME DEFAULT NULL COMMENT '创建时间',update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',update_time DATETIME DEFAULT NULL COMMENT '更新时间',remark VARCHAR(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (tenant_id)
    ) ENGINE=InnoDB AUTO_INCREMENT=100 COMMENT='租户表';
    
  • 后端:在ruoyi-system/service/ISysTenantService.java中,定义租户服务接口。

    public interface ISysTenantService {List<SysTenant> selectTenantList(SysTenant tenant);int insertTenant(SysTenant tenant);int updateTenant(SysTenant tenant);int deleteTenantById(Long tenantId);
    }
    
  • 前端:在ruoyi-ui/src/views/system/tenant/index.vue中,添加租户管理页面。

    <template><div><!-- 租户管理页面内容 --></div>
    </template><script>
    import axios from 'axios';export default {data() {return {tenantList: []};},methods: {getTenantList() {axios.get('/system/tenant').then(response => {this.tenantList = response.data.rows;});},addTenant() {// 添加租户逻辑},editTenant() {// 编辑租户逻辑},deleteTenant(id) {axios.delete(`/system/tenant/${id}`).then(response => {if (response.data.code === 200) {this.$message.success("删除成功");} else {this.$message.error(response.data.msg);}});}},mounted() {this.getTenantList();}
    };
    </script>
    

总结

RuoYi框架是一个非常强大的企业级快速开发平台,它集成了众多主流技术,可以帮助开发者快速搭建稳定、高效的应用系统。

相关文章:

RuoYi(若依)框架的介绍与基本使用(超详细分析)

**RuoYi&#xff08;若依&#xff09;**是一个基于Spring Boot和Spring Cloud的企业级快速开发平台。它集成了多种常用的技术栈和中间件&#xff0c;旨在帮助企业快速构建稳定、高效的应用系统。以下是关于RuoYi框架的详细介绍和基本使用教程&#xff0c;涵盖了从环境搭建到核心…...

js:基础

js是什么 JavaScript是一种运行在客户端的编程语言&#xff0c;实现人机交互的效果 js只要有个浏览器就能跑 js可以做网页特效、表单验证、数据交互、服务端编程 服务端编程是前端人拿他们特有的后端语言node.js来干后端干的事情 js怎么组成 JavaScriptECMAScript(语言基…...

easyui combobox 只能选择第一个问题解决

easyui combobox 只能选择第一个问题解决 问题现象 在拆分开票的时候&#xff0c;弹出框上面有一个下拉框用于选择需要新增的明细行&#xff0c;但是每次只能选择到第一个 选择第二条数据的时候默认选择到第一个了 代码如下 /*新增发票编辑窗口*/function addTicketDialog…...

【RISC-V CPU 专栏 -- 香山处理器介绍】

文章目录 RISC-V 香山处理器介绍雁栖湖处理器南湖处理器RISC-V 香山处理器介绍 相信很多小伙伴对于“香山”都不陌生,它是一款开源RISC-V处理器核,香山的每一代架构,都是采用了湖的名字,第一代架构被命名为雁栖湖,第二代架构则叫做 “南湖”。 “雁栖湖”这款处理器的 R…...

深入理解下oracle 11g block组成

深层次说&#xff0c;oracle数据库的最少组成单位应该是块&#xff0c;一般默认情况下&#xff0c;oracle数据库的块大小是8kb&#xff0c;其中存储着我们平常所需的数据。我们在使用过程中&#xff0c;难免会疑问道&#xff1a;“oracle数据块中到底是怎样组成的&#xff0c;平…...

“华为杯”研究生数学建模比赛历年赛题汇总(2004-2024)

文章目录 赛题链接历年赛题2004年赛题2005年赛题2006年赛题2007年赛题2008年赛题2009年赛题2010年赛题2011年赛题2012年赛题2013年赛题2014年赛题2015年赛题2016年赛题2017年赛题2018年赛题2019年赛题2020年赛题2020年赛题2021年赛题2022年赛题2023年赛题2024年赛题 赛题链接 部…...

LLM PPT Translator

LLM PPT Translator 引言Github 地址UI PreviewTranslated Result Samples 引言 周末开发了1个PowerPoint文档翻译工具&#xff0c;上传PowerPoint文档&#xff0c;指定想翻译的目标语言&#xff0c;通过LLM的能力将文档翻译成目标语言的文档。 Github 地址 https://github.…...

【深度学习之一】2024最新pytorch+cuda+cudnn下载安装搭建开发环境

兵马未动&#xff0c;粮草先行。作为深度学习的初学者&#xff0c;快速搭建一个属于自己的开发环境就是头等大事&#xff0c;可以让我们节省许多的时间。这一期我们主要讲一讲2024年最新pytorchcudacudnn下载安装搭建开发环境&#xff0c;以及安装过程中可能遇到的一些问题以及…...

摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现

随着科技的不断进步&#xff0c;摄像机视频分析软件的发展已经为我们的生活带来了许多便捷。其中&#xff0c;LiteAIServer视频智能分析平台的玩手机打电话检测算法技术尤为突出&#xff0c;它利用先进的图像处理和人工智能技术&#xff0c;能够自动识别并监控视频中的玩手机或…...

HTML5和CSS3新增特性

HTML5的新特性 HTML5新增的语义化标签 HTML5 的新增特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题&#xff0c;基本是 IE9 以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量…...

删除word中页眉里的横线

使用快捷键‌简单粗暴&#xff1a; 双击页眉&#xff0c;将光标定位在页眉的横线上&#xff0c;按下CtrlShiftN快捷键&#xff0c;页眉横线即可删除。...

列表代码思路

目录 列表添加修改删除(单删,批删) 页面>Controller>service>Dao 一.列表的jsp页面 : 一. 想要用户已经来就看到的数据使用文档就绪函数 ①文档就绪函数 : 二. 封装ajax方法 二 : 在body中间 一 : 多条件查询的文本框 二. 写列表 三.在body的下面写脚本 1.给搜…...

40分钟学 Go 语言高并发:Context包与并发控制

Context包与并发控制 学习目标 知识点掌握程度应用场景context原理深入理解实现机制并发控制和请求链路追踪超时控制掌握超时设置和处理API请求超时、任务限时控制取消信号传播理解取消机制和传播链优雅退出、资源释放context最佳实践掌握使用规范和技巧工程实践中的常见场景…...

el-row el-col显示失效问题修复

el-row el-col显示失效 问题&#xff1a; 在列表显示页面&#xff0c;头部有几个搜索框和选择框&#xff0c;由于搜索条件框太多&#xff0c;写了el-row 和el-col进行分行分列展示。测试发现并没有按照行列展示。 <el-form :inline"true" :model"paramForm…...

libphone desktop编译

linphone-desktop 在ubuntu20.04 下编译 linphone 介绍 Linphone是一款遵循GPL的开源网络视频电话系统&#xff0c;支持多种平台如Windows、Linux、Android等。它基于SIP协议&#xff0c;提供语音、视频通话及即时文本消息功能。核心功能包括SIP用户代理、音频视频Codec支持、…...

实现一个可配置的TCP设备模拟器,支持交互和解析配置

前言 诸位在做IOT开发的时候是否有遇到一个问题&#xff0c;那就是模拟一个设备来联调测试&#xff0c;虽然说现在的物联网通信主要是用mqtt通信&#xff0c;但还是有很多设备使用TCP这种协议交互&#xff0c;例如充电桩&#xff0c;还有一些工业设备&#xff0c;TCP这类报文交…...

Rust环境安装乱码解决

安装rust环境open with visual studio2022操作系统乱码问题解决 打开“设置”&#xff0c;找到“时间和语言”。 进去之后依次选择“语言”->"管理语言设置"->“更改系统区域设置” 取消勾选“Beta版:使用Unicode UTF-8 提供全球语言支持”&#xff0c;然后重…...

Zookeeper实现分布式锁、Zookeeper实现配置中心

一、Zookeeper实现分布式锁 分布式锁主要用于在分布式环境中保证数据的一致性。 包括跨进程、跨机器、跨网络导致共享资源不一致的问题。 1.Zookeeper分布式锁的代码实现 新建一个maven项目ZK-Demo,然后在pom.xml里面引入相关的依赖 <dependency><groupId>com.…...

学习日记_20241126_聚类方法(自组织映射Self-Organizing Maps, SOM)

前言 提醒&#xff1a; 文章内容为方便作者自己后日复习与查阅而进行的书写与发布&#xff0c;其中引用内容都会使用链接表明出处&#xff08;如有侵权问题&#xff0c;请及时联系&#xff09;。 其中内容多为一次书写&#xff0c;缺少检查与订正&#xff0c;如有问题或其他拓展…...

【webrtc】 mediasoup中m77的IntervalBudget及其在AlrDetector的应用

IntervalBudget 用于带宽控制和流量整形 mediasoup中m77 代码的IntervalBudget ,版本比较老IntervalBudget 在特定时间间隔内的比特预算管理,从而实现带宽控制和流量整形。 一。 pacedsender 执行周期: 下一次执行的时间的动态可变的 int64_t PacedSender::TimeUntilNextPr…...

Python学习指南 + 谷歌浏览器如何安装插件

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 前言 Python 官方文档的使用 谷歌浏览器中如何安装插件 前言 在学习Python时&#xff0c;我们可能会出现这样的困惑&#x…...

leetcode - LRU缓存

什么是 LRU LRU (最近最少使用算法), 最早是在操作系统中接触到的, 它是一种内存数据淘汰策略, 常用于缓存系统的淘汰策略. LRU算法基于局部性原理, 即最近被访问的数据在未来被访问的概率更高, 因此应该保留最近被访问的数据. 最近最少使用的解释 LRU (最近最少使用算法), 中…...

RabbitMQ7:消息转换器

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…...

C#(14)七大原则

前言 其实在面向对象设计里&#xff0c;程序猿们互相约定好一些原则&#xff0c;即七大原则。 面向对象的七大原则是一组指导软件设计的原则&#xff0c;旨在帮助开发人员实现松耦合、可维护和可扩展的软件系统。这些原则的设计过程和发展历史可以追溯到20世纪80年代。 单一职…...

JDBC使用连接池druid操作数据库mysql

// 创建DruidDataSource实例DruidDataSource dataSource = new DruidDataSource();String url = "jdbc:mysql://localhost:3306/demo_base?useUnicode=true&characterEncoding=utf8&useSSL=true";String username...

零碎04 MybatisPlus自定义模版生成代码

目录 背景 动手开干 需要的依赖包&#xff0c;需要注意mybatis-plus-generator的3.5版本是没有兼容历史版本的。 定义一个CodeGenerator类&#xff0c;负责生成代码和配置属性 Entity模版 背景 MybatisPlus代码生成使用默认的velocity模版解决不了定制化的需求&#xff0…...

rk3568-linux-5.10.160移植rtl8822cs wifi 模块纪要

rk3568-linux-5.10.160移植rtl8822cs wifi 模块纪要 1、将驱动添加到 kernel/drivers/net/wireless/rockchip_wlan/ 或者 kernel/drivers/net/wireless/realtek/rtlwifi/ 2、修改该目录下的makefile、kconfig 3、修改rtl8822cs/os_dep/linux/os_intfs.c&#xff0c;添加 MO…...

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网&#xff1a;我的应用 | 高德控制台 &#xff0c;绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…...

如何通过高效的缓存策略无缝加速湖仓查询

引言 本文将探讨如何利用开源项目 StarRocks 的缓存策略来加速湖仓查询&#xff0c;为企业提供更快速、更灵活的数据分析能力。作为 StarRocks 社区的主要贡献者和商业化公司&#xff0c;镜舟科技深度参与 StarRocks 项目开发&#xff0c;也为企业着手构建湖仓架构提供更多参考…...

微信小程序数据请求教程:GET与POST请求详解

微信小程序数据请求教程:GET与POST请求详解 引言 在微信小程序的开发过程中,数据请求是至关重要的一部分。通过与后端服务器进行通信,小程序能够获取动态数据,实现丰富的功能。在这篇文章中,我们将深入探讨微信小程序中的数据请求,重点介绍GET和POST请求的使用方法、示…...

【Redis 】Bitmap 使用

Redis Bitmap介绍 Redis Bitmap 是一种特殊的数据类型&#xff0c;它通过字符串类型键来存储一系列连续的二进制位&#xff08;bits&#xff09;&#xff0c;每个位可以独立地表示一个布尔值&#xff08;0 或 1&#xff09;。这种数据结构非常适合用于存储和操作大量二值状态的…...

【C语言】指针与数组的例题详解:深入分析与高级用法

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;题目一详细分析与解答代码逐步解析 &#x1f4af;进一步优化和拓展1. 指针与数组的关系2. 指针运算的注意事项3. 常见的错误和陷阱4. 拓展&#xff1a;指针操作的应用场…...

CTF之密码学(密码特征分析)

一.MD5,sha1,HMAC,NTLM 1.MD5:MD5一般由32/16位的数字(0-9)和字母(a-f)组成的字符串 2.sha1:这种加密的密文特征跟MD5差不多,只不过位数是40(sha256:64位;sha512:128位) 3.HMAC:这种算法就是在前两种加密的基础上引入了秘钥,而秘钥又只有传输双方才知道,所以基本上…...

docker compose 使用记录

作用 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件来配置应用程序的服务&#xff0c;然后使用一个命令即可创建并启动所有服务。 文档位置 Part 7: Use Docker Compose | Docker Docs 使用方法 1. 安装 Docker Compose sudo curl -…...

Python的3D可视化库 - vedo (3)visual子模块 点对象的可视化控制

文章目录 3 PointsVisual的方法3.1 对象属性3.1.1 顶点大小3.1.2 复制属性3.1.3 颜色设置3.1.4透明度设置 3.2 对象光效3.2.1 点的形状3.2.2 点的表面光效 3.3 尾随线和投影3.3.1 尾随线3.3.2 投影 3.4 给对象附加文字说明3.4.1 标注3.4.2 2D标注3.4.3 气泡说明3.4.4 旗标说明3…...

计算机网络易混淆知识点串记

文章目录 计算机网络易混淆知识点串记各层PDU首部:地址长度 计算机网络易混淆知识点串记 各层PDU首部: PUD首部长度 (B:字节)首部单位数据链路–帧帧首:14B帧尾部:4B——IPV420~60字节4B [通过4位二进制表示]IPV6固定首部40字节[可拓展]4BTCP20~60字节4BUDP8B字节 地址长度 …...

信息安全实验--密码学实验工具:CrypTool

1. CrypTool介绍&#x1f4ad; CrypTool 1的开源教育工具&#xff0c;用于密码学研究。通过CrypTool 1&#xff0c;可以实现加密和解密操作&#xff0c;数字签名。CrypTool1和2有很多区别的。 2. CrpyTool下载&#x1f527; 在做信息安全实验--密码学相关实验时&#xff0c;发…...

Leetcode 将有序数组转换为二叉搜索树

算法思想及代码解析&#xff1a; 这段代码的目的是将一个有序数组转换为 高度平衡的二叉搜索树&#xff08;Balanced Binary Search Tree, BST&#xff09;。以下是算法的详细解释&#xff1a; 1. 什么是高度平衡的二叉搜索树&#xff1f; 二叉搜索树&#xff1a;对于树中的每…...

VMware虚拟机安装Win7专业版详细教程(附镜像包)

目录 一、Win7镜像下载 二、配置虚拟机 三、安装Win7 四、常见问题 一、Win7镜像下载 镜像下载链接&#xff1a;https://pan.quark.cn/s/a8d3a2880101 此镜像为Win7专业版&#xff08;收藏级镜像 已自用几年&#xff09; 官方纯净系统没有附带任何其他第三方软件&#xf…...

IDEA算法的详细介绍及Python实现

目录 IDEA算法的详细介绍及Python实现引言第一部分:IDEA算法的原理与背景1.1 IDEA算法的来源与特点1.2 IDEA算法的核心步骤第二部分:IDEA算法的Python实现(面向对象设计)2.1 核心类设计2.2 代码实现2.3 使用示例第三部分:案例1 - 函数优化问题(策略模式)3.1 问题描述3.2…...

Spring Boot 开发环境搭建详解

下面安装spring boot的详细步骤&#xff0c;涵盖了从安装 JDK 和 Maven 到创建和运行一个 Spring Boot 项目的全过程。 文章目录 1. 安装 JDK步骤 1.1&#xff1a;下载 JDK步骤 1.2&#xff1a;安装 JDK步骤 1.3&#xff1a;配置环境变量 2. 安装 Maven步骤 2.1&#xff1a;下载…...

Element-Ui组件(icon组件)

一、前言 本篇文章主要是对官网的Icon组件进行总结归纳Icon 图标 | Element Plus 在现代Web应用开发中&#xff0c;图标是用户界面设计中不可或缺的一部分。它们不仅提升了用户体验&#xff0c;还使得信息的传达更加直观和高效。本文主要对Element Plus 官方提供的Icon组件进行…...

使用docker搭建hysteria2服务端

源链接&#xff1a;https://github.com/apernet/hysteria/discussions/1248 官网地址&#xff1a;https://v2.hysteria.network/zh/docs/getting-started/Installation/ 首选需要安装docker和docker compose 切换到合适的目录 cd /home创建文件夹 mkdir hysteria创建docke…...

Docker login 报证书存储错误的解决办法

文章目录 docker login 出现错误&#xff0c;提示&#xff1a;Error saving credentials: error storing credentials - err: exit status 1, out: Cannot autolaunch D-Bus without X11 $DISPLAY 环境 使用的是 Mint Linux &#xff0c;容器为 docker-ce 最新版 1 2 3 4 $…...

vxe-modal VxeUI 窗口组件弹窗多窗口模式

VxeUI 实现在 vue 中使用弹窗组件&#xff0c;弹窗多个窗口可叠加&#xff0c;实现多实例的窗口组件。 npm install vxe-pc-ui4.3.6// ...import VxeUI from vxe-pc-uiimport vxe-pc-ui/lib/style.css// ...createApp(App).use(VxeUI).mount(#app)// ...官网&#xff1a;https…...

华为昇腾 acl_pytorch

目录 sam部署教程&#xff1a; segment-anyghing地址&#xff1a; sam onnx地址&#xff1a; 报错&#xff1a; encode继续报错&#xff1a; sam部署教程&#xff1a; Ascend/ModelZoo-PyTorch - Gitee.com segment-anyghing地址&#xff1a; https://github.com/visher…...

Mybatis控制台打印SQL执行信息(执行方法、执行SQL、执行时间)

文章目录 前言一、基本功能介绍1.1本章功能效果预览图: 二、可执行源码2.1 yaml基础配置2.2 MybatisAnalyzeSQLInterceptor实现SQL拦截 前言 SQL性能监控是一个程序必要的功能&#xff0c;通常我们可以使用数据库自带的客户端工具进行SQL性能分析。然而对于一些专业度不高的人…...

Easyui 实现订单拆分开票功能

Easyui 实现订单拆分开票功能 需求 1、实现一个订单开具多分发票功能&#xff1b; 2、支持拆行&#xff1b; 3、支持拆数量&#xff1b; 流程设计 1、操作页面展示订订单头信息&#xff0c;订单明细信息 2、点击新增发票按钮弹出一个弹出框用于创建一张拆分发票&#xff0c;弹…...

docker-elasticsearch-kibana-logstash

一、安装 Elasticsearch 尝试直接拉取 Elasticsearch 镜像&#xff1a; 执行 docker pull docker.elastic.co/elasticsearch/elasticsearch&#xff0c;拉取失败&#xff0c;错误提示为 “Error response from daemon: manifest for docker.elastic.co/elasticsearch/elasticse…...

深入理解注意力机制(Attention Mechanism)

在深度学习中&#xff0c;“注意力机制&#xff08;Attention Mechanism&#xff09;”是近年来的一个重要突破。它最初被提出用于处理自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;但如今已经广泛应用于计算机视觉、强化学习和其他领域。注意力机制赋予模型一种“…...