【SpringBoot + Vue 尚庭公寓实战】项目初始化准备(二)

尚庭公寓SpringBoot + Vue 项目实战】项目初始化准备(二)


文章目录

      • 尚庭公寓SpringBoot + Vue 项目实战】项目初始化准备(二)
        • 1、导入数据库
        • 2、创建工程
        • 3、项目初始配置
          • 3.1、SpringBoot依赖配置
          • 3.2、创建application.yml文件
          • 3.3、创建SpringBoot启动类
        • 4、MyBatisPlus配置
          • 4.1、pom文件配置
          • 4.2、application.yml配置
          • 4.3、配置扫包
        • 5、Knife4j配置
        • 6、生成或导入基础代码
        • 7、导入接口定义代码

1、导入数据库

在MySQL中创建一个lease数据库,建库语句如下

CREATE DATABASE lease CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

导入数据库脚本,将资料中的lease.sql脚本导入lease数据库,其中包含了建表语句和少量的原始数据。

image-20240605222421027

image-20240605222502792

2、创建工程

按照如下目录结构创建一个多模块的Maven工程。

lease
├── common(公共模块——工具类、公用配置等)
│   ├── pom.xml
│   └── src
├── model(数据模型——与数据库相对应地实体类)
│   ├── pom.xml
│   └── src
├── web(Web模块)
│   ├── pom.xml
│   ├── web-admin(后台管理系统Web模块——包含mapper、service、controller)
│   │   ├── pom.xml
│   │   └── src
│   └── web-app(移动端Web模块——包含mapper、service、controller)
│       ├── pom.xml
│       └── src
└── pom.xml

image-20240605223032690

各模块的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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.demo</groupId><artifactId>lease</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>common</module><module>model</module><module>web</module></modules><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties></project>
    
  • common模块

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.demo</groupId><artifactId>lease</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>common</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties></project>
    
  • web模块

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.demo</groupId><artifactId>lease</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>web</artifactId><packaging>pom</packaging><modules><module>web-admin</module><module>web-app</module></modules><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.demo</groupId><artifactId>model</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.demo</groupId><artifactId>common</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies></project>
    
  • web-admin模块

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.demo</groupId><artifactId>web</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>web-admin</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties></project>
    
  • web-app模块

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.demo</groupId><artifactId>web</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>web-app</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties></project>
    
3、项目初始配置
3.1、SpringBoot依赖配置

父工程的pom.xml文件中增加如下内容 , 进行版本控制

注意:这里出现标红是正常现象,因为你的本地仓库找不到,暂时不需要管理,因为等到子模块使用的时候,再进行导入依赖

image-20240605224909339

<!-- 继承Spring Boot父项目 -->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version>
</parent><!-- 注意:直接替换pom文件中原有的properties -->
<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><mybatis-plus.version>3.5.3.1</mybatis-plus.version><swagger.version>2.9.2</swagger.version><jwt.version>0.11.2</jwt.version><easycaptcha.version>1.6.2</easycaptcha.version><minio.version>8.2.0</minio.version><knife4j.version>4.1.0</knife4j.version><aliyun.sms.version>2.0.23</aliyun.sms.version>
</properties><!--配置dependencyManagement统一管理依赖版本-->
<dependencyManagement><dependencies><!--mybatis-plus--><!--官方文档:https://baomidou.com/pages/bab2db/ --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!--knife4j文档--><!--官方文档:https://doc.xiaominfo.com/docs/quick-start --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>${knife4j.version}</version></dependency><!--JWT登录认证相关--><!--官方文档:https://github.com/jwtk/jjwt#install-jdk-maven --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>${jwt.version}</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><scope>runtime</scope><version>${jwt.version}</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><scope>runtime</scope><version>${jwt.version}</version></dependency><!--图形验证码--><!--官方文档:https://gitee.com/ele-admin/EasyCaptcha --><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>${easycaptcha.version}</version></dependency><!--对象存储,用于存储图像等非结构化数据--><!--官方文档:https://min.io/docs/minio/linux/developers/minio-drivers.html?ref=docs#java-sdk --><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>${minio.version}</version></dependency><!--阿里云短信客户端,用于发送短信验证码--><!--官方文档:https://help.aliyun.com/document_detail/215759.html?spm=a2c4g.215759.0.0.49f32807f4Yc0y --><dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>${aliyun.sms.version}</version></dependency></dependencies>
</dependencyManagement>

web模块的pom.xml文件中增加如下内容

  • 依赖
<!--包含spring web相关依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><!--包含spring test相关依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
  • 插件
<!-- Spring Boot Maven插件,用于打包可执行的JAR文件 -->
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
3.2、创建application.yml文件

web-admin模块src/main/resources目录下创建application.yml配置文件,内容如下:

server:port: 8080
3.3、创建SpringBoot启动类

web-admin模块下创建com.demo.lease.AdminWebApplication类,内容如下:

@SpringBootApplication
public class AdminWebApplication {public static void main(String[] args) {SpringApplication.run(AdminWebApplication.class, args);}
}
4、MyBatisPlus配置

Mybatis-Plus为公用工具,故将其配置于common模块。具体配置可参考其官方文档。

4.1、pom文件配置

common模块的pom.xml文件中增加如下内容:

<!--mybatis-plus-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId>
</dependency><!--mysql驱动-->
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId>
</dependency>

model模块的pom.xml文件中增加如下内容,因为model模块下的实体类中需要配置Mybatis-Plus相关注解,故也需引入Mybatis-Plus依赖

<!--mybatis-plus-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
4.2、application.yml配置

web-admin模块application.yml文件增加如下内容:

spring:datasource:type: com.zaxxer.hikari.HikariDataSourceurl: jdbc:mysql://<hostname>:<port>/<database>?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8username: <username>password: <password>hikari:connection-test-query: SELECT 1 # 自动检测连接connection-timeout: 60000 #数据库连接超时时间,默认30秒idle-timeout: 500000 #空闲连接存活最大时间,默认600000(10分钟)max-lifetime: 540000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟maximum-pool-size: 12 #连接池最大连接数,默认是10minimum-idle: 10 #最小空闲连接数量pool-name: SPHHikariPool # 连接池名称#用于打印框架生成的sql语句,便于调试
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

注意:需根据实际情况修改hostnameportdatabaseusernamepassword

4.3、配置扫包

common模块下创建com.demo.lease.common.mybatisplus.MybatisPlusConfiguration类,内容如下:

@Configuration
@MapperScan("com.atguigu.lease.web.*.mapper")
public class MybatisPlusConfiguration {}

注意@MapperScan()的包路径需要根据实际情况进行修改。

5、Knife4j配置

pom文件配置

web模块的pom.xml文件添加如下内容

因为web-app模块同样需要Knife4j依赖,故在两个的父工程引入依赖即可

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>

model模块的pom.xml文件添加上述内容

因为model模块下的实体类需要配置Knife4j相关注解,故也需引入Knife4j依赖

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>

配置类

后台管理系统和移动端的接口配置并不相同,所以需各自编写一个配置类。在web-admin模块下创建com.atguigu.lease.web.admin.custom.config.Knife4jConfiguration类,内容如下:

@Configuration
public class Knife4jConfiguration {@Beanpublic OpenAPI customOpenAPI() {return new OpenAPI().info(new Info().title("后台管理系统API").version("1.0").description("后台管理系统API"));}@Beanpublic GroupedOpenApi systemAPI() {return GroupedOpenApi.builder().group("系统信息管理").pathsToMatch("/admin/system/**").build();}@Beanpublic GroupedOpenApi loginAPI() {return GroupedOpenApi.builder().group("后台登录管理").pathsToMatch("/admin/login/**","/admin/info").build();}@Beanpublic GroupedOpenApi apartmentAPI() {return GroupedOpenApi.builder().group("公寓信息管理").pathsToMatch("/admin/apartment/**","/admin/room/**","/admin/label/**","/admin/facility/**","/admin/fee/**","/admin/attr/**","/admin/payment/**","/admin/region/**","/admin/term/**","/admin/file/**").build();}@Beanpublic GroupedOpenApi leaseAPI() {return GroupedOpenApi.builder().group("租赁信息管理").pathsToMatch("/admin/appointment/**","/admin/agreement/**").build();}@Beanpublic GroupedOpenApi userAPI() {return GroupedOpenApi.builder().group("平台用户管理").pathsToMatch("/admin/user/**").build();}
}

注意pathsToMatch参数需要根据实际情况进行配置。

6、生成或导入基础代码

在完成上述配置后,便可使用一些逆向工具自动生成基础代码了(例如实体类、mapper、service等),在使用Mybatis-Plus作为存储层框架时,推荐使用IDEA中的Mybatis X插件。除了可自动生成这些代码,也可直接导入资料中提供的代码。推荐大家直接导入。

导入的代码和目标位置如下:

导入代码模块包名/路径说明
实体类modelcom.atguigu.lease.model.entity与数据库表一一对应
枚举类modelcom.atguigu.lease.model.enums实体类中的某些状态类字段,使用枚举类型
mapper接口web-admincom.atguigu.lease.web.admin.mapper
mapper xmlweb-adminsrc/main/resources/mapper
serviceweb-admincom.atguigu.lease.web.admin.service
serviceImplweb-admincom.atguigu.lease.web.admin.service.impl

知识点

  • 实体类中的公共字段(例如idcreate_timeupdate_timeis_deleted)抽取到一个基类,进行统一管理,然后让各实体类继承该基类。

  • 实体类中的状态字段(例如status)或类型字段(例如type),全部使用枚举类型。

    状态(类型)字段,在数据库中通常用一个数字表示一个状态(类型)。例如:订单状态(1:待支付,2:待发货,3:待收货,4:已收货,5:已完结)。若实体类中对应的字段也用数字类型,例如int,那么程序中就会有大量的如下代码:

    order.setStatus(1);if (order.getStatus() == 1) {
    order.setStatus(2);
    }
    

    这些代码后期维护起来会十分麻烦,所以本项目中所有的此类字段均使用枚举类型。例如上述订单状态可定义为以下枚举:

    public enum Status {CANCEL(0, "已取消"),
    WAIT_PAY(1, "待支付"),
    WAIT_TRANSFER(2, "待发货"),
    WAIT_RECEIPT(3, "待收货"),
    RECEIVE(4, "已收货"),
    COMPLETE(5, "已完结");private final Integer value;
    private final String desc;public Integer value() {return value;
    }
    public String desc() {return desc;
    }
    }
    

    订单实体类中的状态字段定义为Status类型:

    @Data
    public class Order{private Integer id;private Integer userId;private Status status;...
    }
    

    这样上述代码便可调整为如下效果,后期维护起来会容易许多。

    order.setStatus(Status.WAIT_PAY);
    
  • 所有的实体类均实现了Serializable接口,方便对实体对象进行缓存。

  • 所有的Mapper接口均没有使用@Mapper注解,而是使用@MapperScan注解统一扫描。

7、导入接口定义代码

资料中提供了所有的Controller代码,并且Controller中定义好了每个接口(只有定义,没有实现),大家可直接导入接口定义相关的代码,然后只专注于接口逻辑的实现。

导入的代码和目标位置如下:

导入代码模块包名/路径说明
controllerweb-admincom.atguigu.lease.web.admin.controller
voweb-admincom.atguigu.lease.web.admin.voView Object,用于封装或定义接口接受及返回的数据结构
resultcommoncom.atguigu.lease.common.result统一定义接口返回的数据结构

导入完成后,便可启动SpringBoot项目,并访问接口文档了,Knife4j文档的url为:http://localhost:8080/doc.html。

知识点

  • vo(View Object):用于封装或定义接口接收及返回的数据的结构。

  • 统一接口返回数据结构:为方便前端对接口数据进行处理,统一接口返回数据结构是一个良好的习惯。

    以下是所有接口统一返回的数据结构

    {"code": 200,"message": "正常","data": {"id": "1","name": "zhangsan","age": 10}
    }
    

    以下是与上述结构相对应的Java类

    • Result

      @Data
      public class Result<T> {//返回码private Integer code;//返回消息private String message;//返回数据private T data;public Result() {}private static <T> Result<T> build(T data) {Result<T> result = new Result<>();if (data != null)result.setData(data);return result;}public static <T> Result<T> build(T body, ResultCodeEnum resultCodeEnum) {Result<T> result = build(body);result.setCode(resultCodeEnum.getCode());result.setMessage(resultCodeEnum.getMessage());return result;}public static <T> Result<T> ok(T data) {return build(data, ResultCodeEnum.SUCCESS);}public static <T> Result<T> ok() {return Result.ok(null);}public static <T> Result<T> fail() {return build(null, ResultCodeEnum.FAIL);}public static <T> Result<T> fail(Integer code, String message) {Result<T> result = build(null);result.setCode(code);result.setMessage(message);return result;}
      }
      
    • ResultCodeEnum

      为方便管理,可将返回码code和返回消息message封装到枚举类。

      @Getter
      public enum ResultCodeEnum {SUCCESS(200, "成功"),FAIL(201, "失败"),PARAM_ERROR(202, "参数不正确"),SERVICE_ERROR(203, "服务异常"),DATA_ERROR(204, "数据异常"),ILLEGAL_REQUEST(205, "非法请求"),REPEAT_SUBMIT(206, "重复提交"),DELETE_ERROR(207, "请先删除子集"),ADMIN_ACCOUNT_EXIST_ERROR(301, "账号已存在"),ADMIN_CAPTCHA_CODE_ERROR(302, "验证码错误"),ADMIN_CAPTCHA_CODE_EXPIRED(303, "验证码已过期"),ADMIN_CAPTCHA_CODE_NOT_FOUND(304, "未输入验证码"),ADMIN_LOGIN_AUTH(305, "未登陆"),ADMIN_ACCOUNT_NOT_EXIST_ERROR(306, "账号不存在"),ADMIN_ACCOUNT_ERROR(307, "用户名或密码错误"),ADMIN_ACCOUNT_DISABLED_ERROR(308, "该用户已被禁用"),ADMIN_ACCESS_FORBIDDEN(309, "无访问权限"),APP_LOGIN_AUTH(501, "未登陆"),APP_LOGIN_PHONE_EMPTY(502, "手机号码为空"),APP_LOGIN_CODE_EMPTY(503, "验证码为空"),APP_SEND_SMS_TOO_OFTEN(504, "验证法发送过于频繁"),APP_LOGIN_CODE_EXPIRED(505, "验证码已过期"),APP_LOGIN_CODE_ERROR(506, "验证码错误"),APP_ACCOUNT_DISABLED_ERROR(507, "该用户已被禁用"),TOKEN_EXPIRED(601, "token过期"),TOKEN_INVALID(602, "token非法");private final Integer code;private final String message;ResultCodeEnum(Integer code, String message) {this.code = code;this.message = message;}
      }
      

    注意:

    由于ResultResultCodeEnum中使用@Data@Getter注解,因此需要再common模块中引入lombok依赖。

    <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
    </dependency>
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux取经路】网络套接字编程——TCP篇

文章目录 前言十、Tcp Server 端代码10.1 socket、bind10.1 listen——监听一个套接字10.2 accept——获取一个新连接10.3 read——从套接字中读取数据10.4 write——向套接字中进行写入10.5 Tcp Service 端完整代码&#xff08;单进程版&#xff09;10.6 Tcp Server 端代码&am…

这个世界,对于心态好的人,就是个大游乐场,越刺激越好玩。对于胆小鬼,那就是地狱,随时随地都会受伤

心态决定你的世界&#xff1a;游乐场还是地狱 在这个充满变数的世界里&#xff0c;我们的心态决定了我们看待世界的方式。对于心态积极的人来说&#xff0c;世界就像一个巨大的游乐场&#xff0c;每一个挑战都是一个新的游戏&#xff0c;每一个刺激都是乐趣的一部分。而对于那…

解决跨域的几种方法

解决跨域的方法主要有以下几种&#xff1a; 1.CORS&#xff08;跨域资源共享&#xff09; CORS是一种W3C规范&#xff0c;它定义了一种浏览器和服务器交互的方式来确定是否允许跨源请求。 服务器通过设置响应头Access-Control-Allow-Origin来允许或拒绝跨域请求。例如&#xf…

[笔试训练](三十四)100:[NOIP2008]ISBN号码101:kotori和迷宫102:矩阵最长递增路径

目录 100:[NOIP2008]ISBN号码 101:kotori和迷宫 102:矩阵最长递增路径 100:[NOIP2008]ISBN号码 题目链接:[NOIP2008]ISBN号码_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解: 简单模拟 #include <iostream> #include<string> using namespace std; str…

5-Django项目--分页与搜索(资产页面)

目录 views/asset_data.py asset_data/asset_data.html 搜索与分页笔记: 搜索 整数搜索 字符串搜索 分页 views/asset_data.py # -*- coding:utf-8 -*- from django.shortcuts import render, redirect, HttpResponse from django.utils.safestring import mark_safe f…

电子元器件采购商城的售后服务保障

电子元器件采购商城的售后服务保障是用户在采购电子元器件时的重要考量因素之一。以下是常见的售后服务保障内容&#xff1a; 退换货政策&#xff1a; 质量问题退换货&#xff1a;如果用户收到的元器件存在质量问题&#xff0c;通常可以在一定时间内申请退换货。无理由退换货&a…

数据分析第一天(pandas简单的对快餐店数据进行操作获得想要的信息,使用apply,groupby)

前言 数据保存在 https://github.com/harkbox/DataAnalyseStudy 数据名称&#xff1a;快餐数据.tsv &#xff08;tsv是用\t作为字符分隔符的文件格式&#xff1b;csv是逗号&#xff09; 因此可以用pandas的read_csv函数读取数据 1.读取数据 import pandas as pd import matp…

PCA算法

PCA算法 原创 小王搬运工 时序课堂 2024-06-06 19:16 四川 1. PCA算法 PCA算法称为主成分分析&#xff0c;是一种无监督学习算法&#xff0c;主要用于数据降维和特征提取。 PCA是一种数据降维模型&#xff0c;它的基本模型是通过线性变换将数据转换到新的空间&#xff0c;这…

windows架设NTP时间服务器进行时间同步

一、windows架设NTP时间服务器 1.win11更改注册表 winR输入regedit 2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config&#xff0c;找到Config目录&#xff0c;双击Config目录下的AnnounceFlags&#xff0c;设为5。 3.HKEY_LOCAL_MACHINE\SYSTEM\Current…

【养老政策问答】银发经济你怎么看?

概述 养老政策问答是一个专门为老年人设计的一站式问答服务平台。该应用旨在为用户提供关于养老政策的全面信息和专业解答&#xff0c;帮助老年人理解和获取相关政策的详细内容&#xff0c;享受无忧的老年生活。用户可以通过此应用获取关于基本养老保险、养老保险的缴费与领取…

第二十六章CSS3续~

3.CSS3渐变属性 CSS3渐变(gradients)可以在两个或多个指定的颜色之间显示平稳的过渡。 以前&#xff0c;我们必须使用图像来实现这些效果。但是&#xff0c;通过使用CSS3渐变(gradients)&#xff0c;可以减少下载的事件和宽带的使用。由于渐变(gradient)是由浏览器生成的&…

YOLOv3深入解析与实战:实时目标检测的高效多尺度架构网络

参考&#xff1a; https://arxiv.org/pdf/1804.02767.pdf https://blog.csdn.net/weixin_43334693/article/details/129143961 网上有很多关于yolo的文章&#xff0c;有些东西没讲清楚&#xff0c;基于自己对论文的理解&#xff0c;也做一个按照自己的想法做的理解。 1. 预测…

神经网络 torch.nn---损失函数与反向传播

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.nn — PyTorch 2.3 documentation Loss Function的作用 每次训练神经网络的时候都会有一个目标&#xff0c;也会有一个输出。目标和输出之间的误差&#xff0c;就是用Loss Function来衡量的。所以&#xff0c;…

Qt图像处理技术十一:得到QImage图像的马赛克图像

效果图 指数5 指数15 指数40 原理 马赛克的原理很简单&#xff0c;就是取一个值&#xff0c;让这个值作为一个方格子的长宽&#xff0c;如40*40px的格子&#xff0c;取这个区域的平均R G B值&#xff0c;然后这个区域的所有像素点都是这个RGB值即可 源码 QImage applyM…

力扣2968.执行操作使频率分数最大

力扣2968.执行操作使频率分数最大 方法一&#xff1a;滑窗 前缀和 求前缀和数组s 求一个数组补齐到中位数的差值 枚举右端点 class Solution {public:int maxFrequencyScore(vector<int>& nums, long long k) {int res0,n nums.size();sort(nums.begin(),nums…

27-unittest之断言(assert)

在测试方法中需要判断结果是pass还是fail&#xff0c;自动化测试脚本里面一般把这种生成测试结果的方法称为断言&#xff08;assert&#xff09;。 使用unittest测试框架时&#xff0c;有很多的断言方法&#xff0c;下面介绍几种常用的断言方法&#xff1a;assertEqual、assert…

Vue可视化表单设计 FcDesigner v3.1.0 发布,新增 12 个组件,支持事件配置等

FcDesigner 是一款可视化表单设计器组件。可以通过拖拽的方式快速创建表单&#xff0c;提高开发者对表单的开发效率&#xff0c;节省开发者的时间。 本项目采用 Vue 和 ElementPlus 进行页面构建&#xff0c;内置多语言解决方案&#xff0c;支持二次扩展开发&#xff0c;支持自…

【cmake】cmake cache

cmake cache是什么 cmake cache是cmake在配置好后生成的一个CMakeCache.txt的文件&#xff0c;里面存储了一堆变量&#xff0c;这些变量一般都是关于项目的配置和环境的。 比如你用的什么编译器&#xff0c;编译器选项&#xff0c;还有项目目录。 例如&#xff08;在cmakelist…

前端工程化工具系列(九)—— mddir(v1.1.1):自动生成文件目录结构工具

mddir 是一个基于项目目录结构动态生成 Markdown 格式目录结构的工具&#xff0c;方便开发者在文档中展示文件和文件夹的组织结构。 1. 安装 全局安装改工具&#xff0c;方便用于各个项目。 pnpm i -g mddir2. 使用 在想要生成目录接口的项目内打开命令行工具&#xff0c;输…

太阳能航空障碍灯在航空安全发挥什么作用_鼎跃安全

随着我国经济的快速发展&#xff0c;空域已经成为经济发展的重要领域。航空运输、空中旅游、无人机物流、飞行汽车等经济活动为空域经济发展提供了巨大潜力。然而&#xff0c;空域安全作为空域经济发展的关键因素&#xff0c;受到了广泛关注。 随着空域经济活动的多样化和密集…