搭建Springboot的基础开发框架-01

本系列专题虽然是按教学的深度来定稿的,但在项目结构和代码组织方面是按公司系统的要求来书定的。在本章中主要介绍下基础开发框架的功能。后续所有章节的项目全是在本基础框架的基础上演进的。

工程结构介绍

在这里插入图片描述

  • SpringbootSeries:父工程,定义一个通用pom.xml,主要用于版本管理;
  • Framework:子工程组,包含两个Modules,主要是一些框架底层开发jar包;
  • Springboot:子工程组,基于Springboot的项目,主要是集成不同的开发框架,比如springboot+mybatis等;
  • Springcloud:子工程组,基于官方Springcloud的项目,主要是集成微服务组件,比如Gateway网关,Ribbon负载均衡等;
  • Alibaba Springcloud:子工程组,功能同Springcloud工程组差不多,主要是用阿里巴巴发展的组件实现微服务各功能部件,比如Nacos注册中心等;

运行与测试

因采用了父子结构,所以在本地运行相应模块的SpringbootXxxxApplication.java启动类之前,首先:

安装Maven基础模块

  1. 先在springbootSeries模块(即最外层的父工程)中执行mvn install,把pom.xml缓存到本地maven缓存库中;
    在这里插入图片描述
  2. 再依次在framework-commonsframework-persistence模块中执行mvn install,缓存通用jar包到本地maven缓存库中;

如果不需要修改上述三个模块的源码,则在本地只需执行一次mvn install命令即可,需要注意的是以上三个模块的执行顺序不能弄错,先springbootSeries–>framework-commons–>framework-persistence

三方插件服务启动

某些模块需要其它三方插件来辅助运行,现把启动方式罗列在些,以方便查找:

# 启动Nacos,访问地址:http://localhost:8848/nacos
sh startup.sh -m standalone  # 启动Consul,访问地址:http://127.0.0.1:8500/
consul agent -dev# 启动Redis
redis server# 启动sentinel dashboard,访问地址 http://localhost:9999
java -Dserver.port=9999 -Dcsp.sentinel.dashboard.server=localhost:9999 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.7.jar

启动Springboot服务

一般只需要执行位于`com.korgs.SpringbootXxxxxApplication.java’路径下的SpringbootApplication启动类,即可运行相应模块服务。
在这里插入图片描述

测试Springboot服务

在这里笔者建议采用 Swagger3 来进行测试,因为 Swagger3 服务已事先集成到了framework-commons模块中,同时为了方便,在每个模块的SpringbootXxxxxApplication.
java类中都定义了一个名为 http://localhost:18080/helloworld 的测试Restful接口。Swagger-UI访问地址如下:

  • http://localhost:18080/swagger-ui.html

在这里插入图片描述

18080是应用开放的端口,通过application.properties文件的server.port=18080属性定义

如果涉及多个springboot配置文件的模块,在Idea中可以在启动配置对话框中添加Springboot,然后在配置界面勾选程序实参,最后配置–spring.profiles.active=serverBackup,以指定不同springboot的profile配置文件

基础框架项目集说明

SpringbootSeries父工程

版本依赖说明

类别必选可选
基础框架jdk 17+(采用20, 21等也同样适用)
spring-boot-starter 3.2.4
spring-boot-starter-web 3.2.4
spring-cloud 2023.0.1
spring-cloud-alibaba 2023.0.1.0
数据库mybatis-plus-spring-boot3-starter 3.5.6
druid-spring-boot-starter 1.2.22
mysql-connector-java 8.0.33
工具包cn.hutool 5.8.27
org.projectlombok 1.18.30
org.mapstruct 1.5.5.Final
mapstruct-processor 1.5.5.Final
framework-commons 1.0-SNAPSHOT
日志slf4j 2.0.12
logback 1.4.14
测试spring-boot-starter-test 3.2.4
springdoc-openapi-starter-webmvc-ui 2.4.0
spring-boot-starter-actuator 3.2.4 : runtime
spring-boot-devtools 3.2.4

Maven scope属性说明

scope编译测试运行打包特殊说明
compile
runtimex
testxxx
systemx不依赖maven仓库,而是本地的jar包,不具备传递性
providedxx不具备传递性
importxxxx只能在 dependencyManagement下使用,且 type 需要为 pom,解决单继承问题

pom.xml源码

在本地测试时,需要把<modules>中的子模块做适当删减。

<?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><!--指定父工程:1、其版本兼容情况可从:https://spring.io/projects/spring-cloud 或https://github.com/spring-cloud/spring-cloud-release/releases 上查询2、springboot项目也可以用官方的工具生成https://start.spring.io--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version><relativePath/> <!--如果子工程出现parent.relativePath问题,需要加入这么一行--></parent><!--此工程声明为pom形式,供其它子模块引用--><groupId>com.korgs</groupId><artifactId>springbootSeries</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><!--子模块,一般为空,只在开发调试时建议放入一些子模块,为了便捷--><modules><module>springboot-base</module><module>framework-commons</module><module>framework-persistence</module><module>springboot-web</module></modules><properties><!--设置javaSDK版本:语言级别要一致,然后匹配下idea中的在maven编译设置JDK 21 = 65 JDK 17 = 61  JDK 8 = 52--><java.version>17</java.version><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-cloud.version>2023.0.1</spring-cloud.version><spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version><!--开发中用到的三方工具包--><hutool.version>5.8.27</hutool.version><lombok.version>1.18.30</lombok.version><lombok.mapstruct.binding.version>0.2.0</lombok.mapstruct.binding.version><mapstruct.version>1.5.5.Final</mapstruct.version><framework-commons.version>1.0-SNAPSHOT</framework-commons.version><!--db-mysql--><mybatisplus.version>3.5.6</mybatisplus.version><druid.version>1.2.22</druid.version><mysql.version>8.0.33</mysql.version><!--测试相关--><junit.test.version>4.13.2</junit.test.version><openapi.restfultest.version>2.5.0</openapi.restfultest.version></properties><!--公共依赖--><dependencies><!--springboot-main--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--springboot辅助工具--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--工具类,前提是必须先给IDEA安装Lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><scope>annotationProcessor</scope></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version></dependency><dependency><groupId>com.korgs</groupId><artifactId>framework-commons</artifactId><version>${framework-commons.version}</version></dependency><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>${openapi.restfultest.version}</version></dependency></dependencies><!--可选依赖,这块的依赖不建议放太多--><dependencyManagement><dependencies><!--springboot-main:引入spring cloud的依赖,主要用来管理Spring Cloud生态各组件的版本--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!--alibaba-springboot-main:引入spring cloud的依赖,主要用来管理alibaba Spring Cloud生态各组件的版本--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!--数据库相关--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>${mybatisplus.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!--工具类--><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>${mapstruct.version}</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${mapstruct.version}</version></dependency><!--测试类--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${maven.compiler.source}</source><target>${maven.compiler.target}</target><encoding>${project.build.sourceEncoding}</encoding><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></path><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${mapstruct.version}</version></path><!-- additional annotation processor required as of Lombok 1.18.30 --><path><groupId>org.projectlombok</groupId><artifactId>lombok-mapstruct-binding</artifactId><version>${lombok.mapstruct.binding.version}</version></path></annotationProcessorPaths></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

Framework子工程组

这个工程中一共包含两个子模块, framework-persistence依赖framework-commons,framework-commons也可以单独引用。

  • framework-commons:springboot框架底层功能封装;
  • framework-commons:mybatis数据库操作相关底层功能封装;

framework-commons模块

此模块主要是一些工具类
在这里插入图片描述

  • 日志相关

    • AccessLogInterceptor.java:web日志拦截器
    • InterceptorRegister.java:拦截器注册类
    • LogGenerator.java:日志工具类
  • Restful相关

    • BaseResponse.java:基础restful响应对象
    • ListResponse.java:继承BaseResponse.java,集合响应对象
    • PageResponse.java:继承ListResponse.java,分页响应对象
    • FileResponse.java:文件响应对象
    • ResponseConst.java:响应常量类
  • Servlet相关

    • CorsConfig.java:跨域设置过滤器
  • 工具类

    • TranslatorUtil.java:对象转换工具类
    • UUIDUtil.java:ID生成器

framework-persistence模块

数据持久化操作相关,暂时只封装了mybatis插件
在这里插入图片描述

  • 底级框架封装

    • DBEntity.java:数据实体基础类
    • DBMetaObjectHandler.java:数据实体基础操作类
    • MybatisPlusConfig.java:mybatis操作配置,主要集成了分页插件
  • 分页数据对象相关

    • PageParam.java:用于Controller层的分页查询参数对象
    • PageQueryBo.java:用于Service层的分页查询参数对象
    • PageBo.java:用于Service层的分页结果
    • PageUtil.java:分页工具类

Springboot子工程组

springboot-base模块

此模块采用了maven独立配置,与父模块没有任何关系,只是为了说明如何简单的实现sprinboot应用,但可以由springbootSeries父模块进行管理。
在这里插入图片描述

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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version><relativePath/> <!--如果子工程出现parent.relativePath问题,需要加入这么一行--></parent><groupId>com.korgs</groupId><artifactId>springboot-base</artifactId><description>一个最基础的springboot工程框架</description><version>1.0-SNAPSHOT</version><packaging>jar</packaging><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><!--springboot-main--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><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></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

注意:pring-boot-maven-plugin必须配置,否则用maven -clear package打包后的jar包无法用 java -jar xxx.jar来启动,原因是不包含依赖项。

application.properties配置

本次专题Springboot配置采用了两个文件,一个用于个性化配置(名称为application-.properties),另一个用于基础配置(名称为application-dev.properties)。

  • application.properties 个性化配置,每个项目的配置都不一样
spring.profiles.active = dev
spring.application.name=springbootBase
server.port=18080
  • application-dev.properties 基本配置,这里的配置在任何项目中基本不会变化
#springboot Server
spring.aop.auto=true
spring.aop.proxy-target-class=true# log4j
logging.level.root=INFO
logging.level.org.springframework.web=ERROR#restful Server
server.compression.enabled=true
server.compression.mime-types=application/json,application/octet-stream
Restful Controller实现

实现一个简单的Restful测试类,返回hello world字符串,测试地址为:http://localhost:18080/helloworld

@RestController
public class HelloWorldController {private static final Log log = LogFactory.getLog(HelloWorldController.class);@GetMapping("/helloworld")public String helloWorld(){log.info("I am busy to handle this request.");return "hello world";}
}

springboot-web 模块

此模块的父模块为 springbootSeries。此模块的代码可以做为一个模板工程,如果想开发新的工程时可以复制一份,然后修改部分配置即可,省去了从头写代码的麻烦。也可以仿照笔者 构建RPC开发脚手架 中的实现写一个小工具。
在这里插入图片描述

  • OpenAPIConfig:swagger3测试框架组件,详细可参考文章最后的源码
  • SpringbootWebApplication:springboot启动类
@Slf4j
@SpringBootApplication(scanBasePackages = {"com.korgs",  "cn.hutool.extra.spring"})
@Configuration
@EnableConfigurationProperties
@ServletComponentScan
@RestController
public class SpringbootWebApplication {public static void main(String[] args) {SpringApplication.run(SpringbootWebApplication.class, args);}@GetMapping("/helloworld")public BaseResponse helloWorld(){log.info(LogGenerator.trackLog()+ "msg="+ "I am busy to handle this request.");return BaseResponse.success("hello world");}
}

说明:上述代码的配置中只有@SpringBootApplication注解是必须的,其它的只是为了后续开发方便直接就加注上了。

pom.xml

因为基础配置已经从springbootSeries父模块继承了,所以在本pom.xml中只配置maven坐标就可以了。

<?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>com.korgs</groupId><artifactId>springbootSeries</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>springboot-web</artifactId><description>带有日志和基础组件的springbootweb工程</description><packaging>jar</packaging><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>

application.properties配置

  • application.properties 个性化配置,每个项目的配置都不一样
spring.profiles.active = dev
spring.application.name=springbootWeb
server.port=18081# 用于actuator插件分析
management.endpoints.web.exposure.include = *
management.endpoint.health.show-details=always
  • application-dev.properties 基本配置,这里的配置在任何项目中基本不会变化,后续章节不再给出了。
#springboot Server config
spring.aop.auto=true
spring.aop.proxy-target-class=true# log4j config
logging.config=classpath:log4j2.xml
logging.level.root=INFO
logging.level.org.springframework.web=ERROR#restful Server config
server.compression.enabled=true
server.compression.mime-types=application/json,application/octet-stream#swagger-ui config
springdoc.api-docs.enabled=true
springdoc.api-docs.path=/api-schemaswagger-config.group = default-group
swagger-config.description= The following is a restful-api list of {} application, and you can browse or test them to determine if they are working as you expect.
swagger-config.version=V1.0
swagger-config.urlPattern=/**
swagger-config.base-package=com.korgs
swagger-config.authorization-key-name=token
swagger-config.wiki = https://korgs.blog.csdn.net/

源码下载

涉及模块:

  • SpringbootSeries
  • framework-commons
  • framework-persistence
  • springboot-base:18080
  • springboot-web:18081

源码下载:

  • 基础框架源码下载

源码运行方法:

  • 模块详细功能说明和运行测试方法

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

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

相关文章

MyBatis高级扩展

五、MyBatis高级扩展 5.1 Mapper批量映射优化 需求Mapper 配置文件很多时&#xff0c;在全局配置文件中一个一个注册太麻烦&#xff0c;希望有一个办法能够一劳永逸。 配置方式Mybatis 允许在指定 Mapper 映射文件时&#xff0c;只指定其所在的包&#xff1a; <mappers&…

算法训练营第60天|LeetCode 647.回文子串 516.最长回文子序列

LeetCode 647.回文子串 题目链接&#xff1a; LeetCode 647.回文子串 代码&#xff1a; class Solution { public:int countSubstrings(string s) {int size s.size();int result 0;vector<vector<int>>dp(size,vector<int>(size,false));for(int i si…

SystemVerilog/Verilog中的仿真延时建模之门延时

提到门延时,就必须重提分布延迟。 分布延迟指模块内信号从(逻辑门的输入到输出)或者(线网的延迟)。这里虽然简短一句话,却涵盖非常大的信息量。 一 门延迟种类 今天我们着重看门延迟。常见门延迟主要有三种: 注意!:如果信号从0/1/z变化到x,那么此时的门传输延迟为上…

C语言 函数概述

好 接下来 我们来讲函数 构建C程序的最佳方式 就是模块化程序设计 C语言中 最基本的程序模块被称为 函数 所以 这个知识点的重要性不言而喻 这里 我们讲个故事 诸葛亮六出祁山时 为了逼司马懿出战 派人送给力司马懿一件女人衣服 司马懿只是为使者 诸葛亮的饮食起居 使者感叹…

AI绘图神器!InstantStyle保留风格进行文本到图像生成

在今天的数字化时代&#xff0c;我们可以看到AI技术的应用已经渗透到生活的各个角落&#xff0c;尤其是在视觉艺术领域。最近&#xff0c;一个名为InstantStyle的全新框架引起了广泛关注&#xff0c;它是一个创新的文本到图像生成框架&#xff0c;其核心功能在于能够有效地分离…

【NumPy数组】:深入解析numpy.array()函数

NumPy数组&#xff1a;深入解析numpy.array()函数 引言 在Python的数据科学世界中&#xff0c;NumPy库无疑扮演着举足轻重的角色。NumPy&#xff08;Numerical Python的简称&#xff09;是一个开源的Python库&#xff0c;用于进行大规模数值和矩阵计算&#xff0c;同时提供了…

Python实现3D建模工具(下)

#Python实现3D建模工具 ###用户接口 我们希望与场景实现两种交互&#xff0c;一种是你可以操纵场景从而能够从不同的角度观察模型&#xff0c;一种是你拥有添加与操作修改模型对象的能力。为了实现交互&#xff0c;我们需要得到键盘与鼠标的输入&#xff0c;GLUT允许我们在键盘…

IoTDB 入门教程 基础篇⑥——数据库SQL操作 | 数据库管理和数据读写

文章目录 一、前文二、数据库管理2.1 创建数据库2.2 查询数据库2.3 删除数据库 三、数据读写3.1 查询数据3.2 新增数据3.3 修改数据3.4 删除数据 四、参考 一、前文 IoTDB入门教程——导读 本博文主要讲述数据库管理和数据读写 二、数据库管理 2.1 创建数据库 CREATE DATABASE…

【JVM】类加载机制及双亲委派模型

目录 一、类加载过程 1. 加载 2. 连接 a. 验证 b. 准备 c. 解析 3. 初始化 二、双亲委派模型 类加载器 双亲委派模型的工作过程 双亲委派模型的优点 一、类加载过程 JVM的类加载机制是JVM在运行时&#xff0c;将 .class 文件加载到内存中并转换为Java类的过程。它…

全面升级企业网络安全 迈入SASE新时代

随着数字化业务、云计算、物联网和人工智能等技术的飞速发展&#xff0c;企业的业务部署环境日渐多样化&#xff0c;企业数据的存储由传统的数据中心向云端和SaaS迁移。远程移动设备办公模式的普及&#xff0c;企业多分支机构的加速设立&#xff0c;也使得企业业务系统的用户范…

第IV章-Ⅱ Vue3中的插槽使用

第IV章-Ⅱ Vue3中的插槽使用 基本插槽默认内容 具名插槽作用域插槽 在 Vue 3 中&#xff0c;插槽&#xff08;slots&#xff09;是一种强大的模式&#xff0c;用于将模板代码从父组件注入到子组件中&#xff0c;使得子组件的内容可以在使用时被自定义。Vue 3 中的插槽用法包括基…

# 代码随想录算法训练营Day31 | 理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

代码随想录算法训练营Day31 | 理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和 LeetCode 455.分发饼干 题目链接&#xff1a;LeetCode 455.分发饼干 思路&#xff1a; 分别排序&#xff0c;最大的饼干给胃口最大的孩子&#xff0c;充分利用。 注意索引需要大于0 class…

神器:jQuery一键转换为纯净JavaScript代码

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 该工具将 jQuery 代码转换为现代、高效的 JavaScript。它允许您用纯 JavaScript 替换 jQuery&#xff0c;同时保持原始代码不变。 虽然 jQuery 一直是 Web 开发中…

【自动驾驶|毫米波雷达】初识毫米波雷达射频前端硬件

第一次更新&#xff1a;2024/5/4 目录 整体概述 混频器&#xff08;MIXER&#xff09; 低通滤波器&#xff08;LPF&#xff1a;Low-Pass filter&#xff09; 数模转换器&#xff08;ADC&#xff1a;Analog to Digital Converter&#xff09; 毫米波雷达功能框图 整体概述 完…

ctfshow web入门 sql注入 web224--web233

web224 扫描后台&#xff0c;发现robots.txt&#xff0c;访问发现/pwdreset.php &#xff0c;再访问可以重置密码 &#xff0c;登录之后发现上传文件 检查发现没有限制诶 上传txt,png,zip发现文件错误了 后面知道群里有个文件能上传 <? _$GET[1]_?>就是0x3c3f3d60245…

echars 的一些运用

基础图形 // 支架压力数据量统计 let splitLine { // 网格线设置show:true,lineStyle:{color:#E2E7EC,width:1,}, } let itemStyle { // 柱形图颜色color:#5B9BD5, } let axisLine { // 轴线样式lineStyle:{color:#E2E7EC,}, } let axisLabel { // 轴刻度字-样式fontSize:…

代码随想录leetcode200题之数组

目录 1 介绍2 训练3 参考 1 介绍 本博客用来记录代码随想录leetcode200题中数组部分的题目。 2 训练 题目1&#xff1a;704二分查找 C代码如下&#xff0c; class Solution { public:int search(vector<int>& nums, int target) {int res -1;int l 0, r nums…

STM32快速入门(串口传输之USART)

STM32快速入门&#xff08;串口传输之USART&#xff09; 前言 USART串口传输能实现信息在设备之间的点对点传输&#xff0c;支持单工、半双工、全全双工&#xff0c;一般是有三个引脚&#xff1a;TX、RX、SW_RX&#xff08;共地&#xff09;。不需要一根线来同步时钟。最大优…

停车场收费管理系统winfrom

停车场收费管理系统winfrom 管理员登陆后可以费用设置 修改密码 开户 充值 注销 入库 出库 退出 本项目通过dat文件格式存储数据 public static void Load() { string path Application.StartupPath "\data\data2.dat"; if (File.Exists(path)) …

4diacIDE同时编译不同版本踩坑记录

4diac不同版本依赖插件版本及jdk版本是不同的&#xff0c;当你需要搭建不同版本4diacIDE开发环境时&#xff0c;就会出现各种问题。最近一个月github上项目提交记录比较多&#xff0c;出现了不少坑。以下记录下此背景下的解决方法&#xff1a; 1、首先由于.target依赖的eclipse…