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

Spring Boot+Vue前后端分离项目练习01之网盘项目的搭建

1.前期设计

一般看来,网盘系统主要实体包括:用户、存储信息、用户文件、文件、回收文件等基本功能点。

各实体对应的表结构如下所示:

表名:user(用户表)

字段名属性说明
userIdbigint主键
usernamevarchar用户名
passwordvarchar密码
telephonevarchar手机号
saltvarchar盐值
registerTimevarchar注册时间

表名:userfile (用户文件表)

字段名属性说明
userFileIdbigint用户文件 id
userIdbigint用户 id
fileIdbigint文件 id
fileNamevarchar文件名
filePathvarchar文件路径
extendNamevarchar扩展名
isDirint是否时目录
uploadTimevarchar上传时间
deleteFlagint删除标志
deleteTimevarchar删除时间
deleteBatchNumvarchar删除批次号

表名:file (文件表)

字段名属性说明
fileIdbigint文件 id
timeStampNamevarchar时间戳名
fileUrlvarchar文件 url
fileSizebigint文件大小
storageTypeint存储类型
identifiervarcharmd5 唯一标识
pointCountint引用数量

表名:storage (存储信息表)

字段名属性说明
storageIdbigint存储信息 id
userIdbigint用户 id
storageSizebigint存储大小

表名:recoveryfile (回收文件表)

字段名属性说明
recoveryFileIdbigint回收文件 id
userFileIdbigint用户文件 id
deleteTimevarchar删除时间
deleteBatchNumvarchar删除批次号

2.创建项目

2.1 文件与用户

网盘系统主要功能就是对文件进行管理,因此这里就需要对网盘文件进行分类。

  • 文件分为普通文件和目录文件。
  • 普通文件是真实存在的,保存在磁盘上,因此它具有真实的文件路径和大小。
  • 目录文件是虚拟的,它存在的目的是对普通文件进行分类归档。

在一个网盘系统中,首先实现用户登录,登录的用户就可以对文件进行管理,最主要的功能为:

  • 文件的上传,删除,修改文件名,文件列表展示。
  • 文件的移动,文件的复制等。

在一个网盘系统,一个用户可以拥有多个文件,一个文件被多个用户所拥有。

2.2 JPA建表

JPA(Java Persistence API),中文名 Java 持久层 API,是 Java 持久化规范,这里可以使用这个工具,建立一个 Java 数据模型与数据库表结构之间的一种关系,并将 Java 的数据模型映射到数据库并建立数据库表结构。

2.2.1 添加依赖

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.shiyanlou.file</groupId><artifactId>qiwen-file</artifactId><version>1.0.0-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.1</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies></project>
2.2.2 添加配置文件

application.properties


spring.datasource.url=jdbc:mysql://localhost:3306/springboot-file
spring.datasource.username=root
spring.datasource.password=12345678# 配置日志保存路径
logging.file.name=/Users/xuzhi/java-projects/java-WangPan/log
# 配置日志级别
logging.level.root=info#jpa 配置
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
2.2.3 创建实体类

创建entity包,在该包下创建对应的实体类。
File.java

import lombok.Data;
import javax.persistence.*;@Data
@Table(name = "file")
@Entity
public class File {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(columnDefinition="bigint(20) comment '文件id'")private Long fileId;@Column(columnDefinition="varchar(500) comment '时间戳名称'")private String timeStampName;@Column(columnDefinition="varchar(500) comment '文件url'")private String fileUrl;@Column(columnDefinition="bigint(10) comment '文件大小'")private Long fileSize;
}

User.java

import lombok.Data;
import javax.persistence.*;@Data
@Table(name = "user")
@Entity
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(columnDefinition = "bigint(20) comment '用户id'")private Long userId;@Column(columnDefinition = "varchar(30) comment '用户名'")private String username;@Column(columnDefinition = "varchar(35) comment '密码'")private String password;@Column(columnDefinition = "varchar(15) comment '手机号码'")private String telephone;@Column(columnDefinition = "varchar(20) comment '盐值'")private String salt;@Column(columnDefinition = "varchar(30) comment '注册时间'")private String registerTime;
}

UserFile.java

import lombok.Data;
import javax.persistence.*;@Data
@Table(name = "userfile", uniqueConstraints = {@UniqueConstraint(name = "fileindex", columnNames = {"fileName", "filePath", "extendName"})})
@Entity
public class UserFile {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(columnDefinition = "bigint(20) comment '用户文件id'")private Long userFileId;@Column(columnDefinition = "bigint(20) comment '用户id'")private Long userId;@Column(columnDefinition="bigint(20) comment '文件id'")private Long fileId;@Column(columnDefinition="varchar(100) comment '文件名'")private String fileName;@Column(columnDefinition="varchar(500) comment '文件路径'")private String filePath;@Column(columnDefinition="varchar(100) comment '扩展名'")private String extendName;@Column(columnDefinition="int(1) comment '是否是目录 0-否, 1-是'")private Integer isDir;@Column(columnDefinition="varchar(25) comment '上传时间'")private String uploadTime;
}

在JPA中,主要的注解作用如下:

  • @Entity 表明该类是一个实体类,添加了该注解后,才能被 jpa 扫描到
  • @Table 可以自定义表名,让实体类的类名和数据库中表名进行对应
  • @Id 用来声明主键
  • @GeneratedValue 设置主键生成方式,主要有四种类型,这里将 strategy 属性设置为 GenerationType.IDENTITY,表明主键由数据库生成,为自动增长型
  • @Column 可以自定义列名或者定义其他的数据类型

接着启动项目就会在数据库中创建对应的表。
在这里插入图片描述

3.整合MyBatis与MyBatis plus

在完整的项目中,一般会使用成熟的持久层框架来操作数据库,这里就选用mybatis和mybatis plus进行持久层操作。

3.1 添加依赖

        <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency>

3.2 添加配置

# mybatis配置
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xmlmybatis-plus.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis-plus.configuration.map-underscore-to-camel-case=false

在启动类上添加@MapperScan注解,用于指定扫描的mapper接口。
在这里插入图片描述

3.3 创建mapper接口

创建mapper包,在该包下创建实体类对应的mapper接口。
FileMapper

public interface FileMapper {}

UserfileMapper

public interface UserfileMapper {}

UserMapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.picacho.entity.User;import java.util.List;public interface UserMapper extends BaseMapper<User> {void insertUser(User user);List<User> selectUser();
}

在 resources 文件夹下创建mybatis文件夹,并在该文件夹下创建配置文件 mybatis-config.xml ,该配置文件主要用来指定 MyBatis 基础配置文件和实体类映射文件的地址。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><typeAliases><typeAlias alias="Integer" type="java.lang.Integer" /><typeAlias alias="Long" type="java.lang.Long" /><typeAlias alias="HashMap" type="java.util.HashMap" /><typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" /><typeAlias alias="ArrayList" type="java.util.ArrayList" /><typeAlias alias="LinkedList" type="java.util.LinkedList" /></typeAliases>
</configuration>

3.4 创建mapper对应的xml文件

在mybatis文件夹下创建mapper文件夹,在该文件夹下创建UserMapper.xml文件。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.picacho.mapper.UserMapper"><insert id="insertUser" parameterType="com.picacho.entity.User">insert into user (username, password, telephone)value (#{username}, #{password}, #{telephone})</insert><select id="selectUser" resultType="com.picacho.entity.User">select * from user</select>
</mapper>

3.5 进行测试

    @Autowiredprivate UserMapper userMapper;@Testpublic void testInsert() {User user = new User();user.setUsername("picacho1");user.setPassword("123456");user.setTelephone("12345566789");userMapper.insertUser(user);System.out.println("数据库字段查询结果显示");List<User> list = userMapper.selectUser();list.forEach(System.out::println);}

在这里插入图片描述
在这里插入图片描述

3.6 使用MyBatis Plus功能

在之前已经创建的三个实体类中,需要添加 MyBatis Plus相关注解,这里需要用到的注解有两个,分别是 @TableName 和 @TableId。

  • @TableName(“表名”) 实体类添加,如果不添加,会按照默认规则进行表明的映射,比如 UserTable->user_table
  • @TableId(type = IdType.AUTO) 用来标注实体类主键

在这里插入图片描述
使用mybatis plus自带的方法实现测试。

    @Testpublic void testInsert2() {User user = new User();user.setUsername("picacho2");user.setPassword("123456");user.setTelephone("123456678");userMapper.insert(user);List<User> list = userMapper.selectList(null);System.out.println("数据库字段查询结果显示");list.forEach(System.out::println);}

测试结果:
在这里插入图片描述

4.统一返回结果封装

在前后端分离的项目中,一般需要统一封装响应的结果。

首先就需要定义响应码对应的枚举类。创建common包,在该包下创建状态码枚举类ResultCodeEnum.java。

import lombok.Getter;/*** 结果类枚举*/
@Getter
public enum ResultCodeEnum {SUCCESS(true,200,"成功"),UNKNOWN_ERROR(false,201,"未知错误"),PARAM_ERROR(false,202,"参数错误"),NULL_POINT(false, 203, "空指针异常"),INDEX_OUT_OF_BOUNDS(false, 204, "下标越界异常"),;// 响应是否成功private Boolean success;// 响应状态码private Integer code;// 响应信息private String message;ResultCodeEnum(boolean success, Integer code, String message) {this.success = success;this.code = code;this.message = message;}
}

接着需要创建统一结果返回类RestResult.java。

import lombok.Data;/*** 统一结果返回** @param <T>*/
@Data
public class RestResult<T> {private Boolean success = true;private Integer code;private String message;private T data;// 通用返回成功public static RestResult success() {RestResult r = new RestResult();r.setSuccess(ResultCodeEnum.SUCCESS.getSuccess());r.setCode(ResultCodeEnum.SUCCESS.getCode());r.setMessage(ResultCodeEnum.SUCCESS.getMessage());return r;}// 通用返回失败,未知错误public static RestResult fail() {RestResult r = new RestResult();r.setSuccess(ResultCodeEnum.UNKNOWN_ERROR.getSuccess());r.setCode(ResultCodeEnum.UNKNOWN_ERROR.getCode());r.setMessage(ResultCodeEnum.UNKNOWN_ERROR.getMessage());return r;}
}

4.1 测试效果

添加控制器,测试通用统一返回结果的效果。创建controller包,在该包下创建控制器UserController.java。

import com.picacho.common.RestResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/user")
public class UserController {/*** 成功响应测试*/@GetMapping(value="/testSuccess")@ResponseBodypublic RestResult testSuccess(){return RestResult.success();}/*** 失败响应测试*/@GetMapping(value="/testFail")@ResponseBodypublic RestResult testFail(){return RestResult.fail();}
}

启动项目测试其效果:
在这里插入图片描述
在这里插入图片描述
这里返回通用的情况,但是有时候会有一种情况,我们需要给前端返回自定义消息的响应结果。因此需要在RestResult.java添加自定义的返回方法。

    // 自定义返回数据public RestResult data(T param) {this.setData(param);return this;}// 自定义状态信息public RestResult message(String message) {this.setMessage(message);return this;}// 自定义状态码public RestResult code(Integer code) {this.setCode(code);return this;}// 设置结果,形参为结果枚举public static RestResult setResult(ResultCodeEnum result) {RestResult r = new RestResult();r.setSuccess(result.getSuccess());r.setCode(result.getCode());r.setMessage(result.getMessage());return r;}

5.统一异常处理

对控制层进行切面拦截,当发生异常时就会执行异常处理类,在Spring Boot项目中创建统一异常处理类。

创建advice包,在该包下创建GlobalExceptionHandlerAdvice.java类。

import com.picacho.common.RestResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;@Slf4j
@ControllerAdvice
public class GlobalExceptionHandlerAdvice {/**-------- 通用异常处理方法 --------**/@ExceptionHandler(Exception.class)@ResponseBodypublic RestResult error(Exception e) {e.printStackTrace();log.error("全局异常捕获:" + e);return RestResult.fail();    // 通用异常结果}
}

在全局异常处理中,主要使用以下三个注解。

  • @ControllerAdvice 这是一个增强的 Controller。使用这个 Controller ,可以实现三个方面的功能:1、全局异常处理, 2、全局数据绑定, 3、全局数据预处理
  • @ExceptionHandler 该注解用来指明异常的处理类型
  • @ResponseBody 该注解为 Spring Boot 响应体注解,用在这里的目的就是当出现异常时,直接将错误返回给前台

这里除了可以处理Exception异常,也可以处理其他异常或者自定义异常。

    /*** 处理空指针异常* @param e* @return*/@ExceptionHandler(NullPointerException.class)@ResponseBodypublic RestResult error(NullPointerException e) {e.printStackTrace();log.error("全局异常捕获:" + e);return RestResult.setResult(ResultCodeEnum.NULL_POINT);}/*** 越界异常* @param e* @return*/@ExceptionHandler(IndexOutOfBoundsException.class)@ResponseBodypublic RestResult error(IndexOutOfBoundsException e) {e.printStackTrace();log.error("全局异常捕获:" + e);return RestResult.setResult(ResultCodeEnum.INDEX_OUT_OF_BOUNDS);}

在UserController.java中添加测试方法,测试异常处理效果:

    /*** 空指针异常响应测试*/@GetMapping(value="/testNullException")@ResponseBodypublic RestResult testNullException(){String s = null;int index = s.length();return RestResult.success();}

在这里插入图片描述
项目demo源码下载地址:源码下载

相关文章:

Spring Boot+Vue前后端分离项目练习01之网盘项目的搭建

1.前期设计 一般看来&#xff0c;网盘系统主要实体包括&#xff1a;用户、存储信息、用户文件、文件、回收文件等基本功能点。 各实体对应的表结构如下所示&#xff1a; 表名&#xff1a;user&#xff08;用户表&#xff09; 字段名属性说明userIdbigint主键usernamevarcha…...

超详细MySQL(免安装版)安装与配置

一、MySQL下载 首先打开MySQL官网&#xff0c;官网首页地址为 MySQL官网首页地址 进入官网后如下图所示&#xff0c;点击DOWNLOADS进入下载页面 下滑页面找到MySQL Community&#xff08;GPL&#xff09;Downloads>>并点击 接下来点击MySQL Community Server 若想要安…...

STM32F1,F4,L1系列禁止JTAG和SW引脚方法

STM32F1系列 程序中在使用到JTAG、SWD的某个IO 时&#xff0c;需要禁用掉相关调试方法后&#xff0c;再配置相应的IO方式。在需要相应的接口配置前使用这些代码。 对于F1系列&#xff0c;调用函数进行专门的禁止。 标准库配置方式&#xff1a; RCC_APB2PeriphClockCmd(RCC_A…...

NVIDIA CUDA初级教程视频学习笔记1

周斌老师 课程链接&#xff1a; 目录第一课内容生态环境第一课 CPU体系架构的概述什么是CPU指令存储器架构CPU内部的并行性第一课 预修课程&#xff1a; Cuda c programming guide 参考内容 1,2&#xff0c;3查找一下。 内容 CPU体系架构概述 并行程序设计概述 CUDA开发环境…...

CEC2005:星雀优化算法(Nutcracker optimizer algorithm,NOA)求解CEC2005(提供MATLAB代码)

一、星雀优化算法NOA 星雀优化算法(Nutcracker optimizer algorithm,NOA)由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模拟星雀的两种行为&#xff0c;即&#xff1a;在夏秋季节收集并储存食物&#xff0c;在春冬季节搜索食物的存储位置。 星鸦单独或成对活动&…...

工作实战之密码防重放攻击

目录 前言 一、登录认证密码加密 二、bcrypt加密密码不一样&#xff0c;匹配原理 1.程序运行现象 2.原理解释 三、密码防重放 总结 前言 密码重放攻击&#xff1a;请求被攻击者获取&#xff0c;并重新发送给认证服务器&#xff0c;从而达到认证通过的目的 一、登录认证密…...

如何编写测试用例?

编写测试用例流程 1、确定测试目标&#xff1a;首先&#xff0c;需要明确测试目标&#xff0c;即测试人员需要测试什么&#xff0c;这有助于测试人员了解需要测试哪些方面&#xff0c;以及如何测试。 2、识别测试场景&#xff1a;在确定测试目标后&#xff0c;测试人员需要识…...

5.排序算法之二:选择排序

选择排序&#xff08;select sort&#xff09;在无序列表中&#xff0c;把无序列表分成有序区&#xff08;刚开始有序区元素个数为0&#xff09;和无序区&#xff08;刚开始无序区元素个数为n&#xff09;&#xff0c;循环n-1趟&#xff0c;每一趟找到最小或最大的那个元素&…...

Ubuntu18系统安装:node及node版本管理工具nvm部署前端项目

注意在安装之前先安装好Git 如何在Ubuntu 上安装Git与入门教程_ubuntu安装git_飞鹰雪菲的博客-CSDN博客 1、把nvm远程镜像克隆到指定目录 git clone https://gitee.com/mirrors/nvm 1.1在终端指定的文件夹下 drciZwz91oq31508figapkas0Z:~/qiang/tools$ git clone https://…...

统计学 假设检验

文章目录假设检验假设检验的基本原理提出假设作出决策表述决策结果一个总体参数的检验总体均值的检验总体比例的检验总体方差的检验两个总体参数的检验两个总体均值之差的检验两个总体比例之差的检验两个总体方差比的检验总体分布的检验正态性检验的图示法Shapiro-Wilk 和 K-S …...

【C++】哈希

哈希一、unordered系列关联式容器二、哈希原理2.1 哈希映射2.2 哈希冲突2.2.1 闭散列—开放地址法2.2.2 代码实现2.2.3 开散列—拉链法2.2.4 代码实现三、哈希封装unordered_map/unordered_set3.1 基本框架3.2 迭代器实现3.2.3 operator*和operator->和operator!3.2.4 opera…...

「TCG 规范解读」PC 平台相关规范(3)

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…...

这篇教你搞定Android内存优化分析总结

一、内存优化概念1.1 为什么要做内存优化&#xff1f;内存优化一直是一个很重要但却缺乏关注的点&#xff0c;内存作为程序运行最重要的资源之一&#xff0c;需要运行过程中做到合理的资源分配与回收&#xff0c;不合理的内存占用轻则使得用户应用程序运行卡顿、ANR、黑屏&…...

概率论与数理统计期末小题狂练 11-12两套,12-13-1

11-12第一学期A1 略。2 X服从正态分布N&#xff08;0&#xff0c;1&#xff09;&#xff0c;X^2服从卡方分布。又考查了卡方分布均值和方差公式。一开始如果对本题无从下手&#xff0c;大概是没看出来是什么分布。3 第二小空本身也可以作为一个结论。4 考查切比雪夫不等式&…...

golang对字符串的处理操作 如何正确理解 rune byte和string

fmt.Printf相关参数介绍 先来看代码的演示 package mainimport ("fmt""unicode/utf8" )func main() {s:"我爱中国人haha!"fmt.Println(len(s))//20个字节 一个中文三个字节 1541fmt.Print("\n echo byte \n")for k,v: range []byte(…...

软件项目管理简答题复习(1)

1.项目&#xff1a;创造唯一的产品&#xff0c;唯一的服务临时性的努力 2.项目特征&#xff1a;不可见性&#xff0c;复杂性&#xff0c;一致性&#xff0c;变更性&#xff0c;特殊性 3.项目和日常活动的区别&#xff1f; 项目具有特殊性&#xff0c;负责人是项目经理&#…...

云Windows Server 2022 Datacenter 安装MySQL8解压缩版 mysql-8.0.32-winx64 230301记录

MySQL Community Downloads MySQL社区版压缩包下载地址 https://dev.mysql.com/downloads/mysql/ 解压到了C盘 没打算设置环境变量 右键点击开始 或 winx 以管理员身份打开 PowerShell 进入到安装目录下的 bin 目录 可以输入cd 后&#xff0c; 拖动 bin 文件夹到控制台&…...

如何使用BeaconEye监控CobaltStrike的Beacon

关于BeaconEye BeaconEye是一款针对CobaltStrike的安全工具&#xff0c;该工具可以扫描正在运行的主动CobaltStrike Beacon。当BeaconEye扫描到了正在运行Beacon的进程之后&#xff0c;BeaconEye将会监控每一个进程以查看C2活动。 工作机制 BeaconEye将会扫描活动进程或Mini…...

STM32开发(17)----CubeMX配置CRC

CubeMX配置CRC前言一、什么是CRC&#xff1f;二、实验过程1.STM32CubeMX配置2.代码实现重载printf3.实验结果总结前言 本章介绍使用STM32CubeMX对CRC进行配置的方法&#xff0c;CRC的目的是保证数据的完整性&#xff0c;所有的STM32芯片都内置了一个硬件的CRC计算模块&#xf…...

【MySQL】基础操作:登录、访问、退出和卸载

一、MySQL简介 MySQL数据库最初是由瑞典MySQL AB公司开发&#xff0c;2008年1月16号被Sun公司收购。2009年&#xff0c;SUN又被Oracle收购。MySQL是目前IT行业最流行的开放源代码的数据库管理系统&#xff0c;同时它也是一个支持多线程、高并发、多用户的关系型数据库管理系统。…...

【算法经典题集】递推(持续更新~~~)

&#x1f63d;PREFACE&#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐ 评论&#x1f4dd;&#x1f4e2;系列专栏&#xff1a;算法经典题集&#x1f50a;本专栏涉及到的知识点或者题目是算法专栏的补充与应用&#x1f4aa;种一棵树最好是十年前其次是现在递推简单的斐波那契…...

mysql兼容性验证

MySQL是一个关系型数据库管理系统。 一、安装启动 安装mysql相关软件包 yum install mysql-server 启动mysql服务 systemctl start mysqld systemctl status mysqld mysql数据库启动失败问题汇总&#xff1a; <问题1>、start mysqld显示失败&#xff0c;如下所示&…...

C++回顾(五)—— 构造函数和析构函数

5.1 构造和析构 5.1.1 构造函数 &#xff08;1&#xff09;定义 1&#xff09;C中的类可以定义与类名相同的特殊成员函数&#xff0c;这种与类名相同的成员函数叫做构造函数&#xff1b;2&#xff09;构造函数在定义时可以有参数&#xff1b;3&#xff09;没有任何返回类型的…...

嵌入式学习笔记——概述

嵌入式系统概述前言“嵌入式系统”概念1.是个啥&#xff1f;2.可以干啥&#xff1f;3.有哪些入坑方向&#xff1f;4.入坑后可以有多少薪资&#xff1f;单片机1.什么是单片机&#xff1f;2.架构简介3.基于ARM架构的单片机结构简介总结前言 断更很长时间了&#xff0c;写博客确实…...

化繁为简高效部署 华为云发布部署服务CodeArts Deploy

​随着互联网、数字化的发展&#xff0c;公司机构与各类企业往往需要进行大量频繁的软件部署&#xff0c;部署设备类型多样&#xff0c;如&#xff1a;本地机器、云上裸金属服务器、云上虚拟机与容器等。面对多种部署模式、分布式复杂运行环境&#xff0c;如何用最短时间、高质…...

注意力机制详解系列(四):混合注意力机制

👨‍💻作者简介: 大数据专业硕士在读,CSDN人工智能领域博客专家,阿里云专家博主,专注大数据与人工智能知识分享。 🎉专栏推荐: 目前在写CV方向专栏,更新不限于目标检测、OCR、图像分类、图像分割等方向,目前活动仅19.9,虽然付费但会长期更新,感兴趣的小伙伴可以…...

Makefiles学习1

初识"Makefiles" 创建一个 “Makefile” 文件 touch Makefile“touch” 用于修改文件或者目录的时间属性&#xff0c;包括访问时间和修改时间&#xff0c;若文件不存在&#xff0c;则重新建立一个新的文件。这里有两个需要我们注意的&#xff1a; 进入并编辑"…...

日志框架以及如何使用LogBack记录程序

使用日志框架可以记录一个程序运行的过程和详情&#xff0c;同时便捷地存储到文件里面&#xff0c;并且性能和灵活性都比较好。日志的体系结构包括两类日志规范接口&#xff1a;Commons Logging&#xff0c;简称&#xff1a;JCL&#xff1b;Simple Logging Facade for Java&…...

集成RocketChat至现有的.Net项目中,为ChatGPT铺路

文章目录前言项目搭建后端前端代理账号鉴权方式介绍登录校验模块前端鉴权方式后端鉴权方式登录委托使用登录委托处理聊天消息前端鉴权方式后端校验方式项目地址前言 今天我们来聊一聊一个Paas的方案&#xff0c;如何集成到一个既有的项目中。 以其中一个需求为例子&#xff1a…...

王道操作系统课代表 - 考研计算机 第三章 内存管理 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记&#xff0c;以及一整年里对 操作系统 知识点的理解的总结。希望对新一届的计算机考研人提供帮助&#xff01;&#xff01;&#xff01; 关于对 “内存管理” 章节知识点总结的十分全面&#xff0c;涵括了《操作系统》课程里的全部…...