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

Spring Boot 2.6=>2.7 升级整理

版本变更:

1、@SpringBootTest 属性源优先级:使用 @SpringBootTest 注解的测试现在将命令行属性源置于测试属性源之上

在 Spring Boot 2.7 及更高版本中,对 @SpringBootTest 的属性源优先级进行了调整,使得通过命令行传递的属性(args)现在具有比通过 @TestPropertySource 或 @Properties 注解指定的属性更高的优先级。

这意味着,如果存在同名的属性,命令行属性将覆盖通过注解指定的属性。

示例:

@SpringBootTest(properties = "app.name=MyApp")
public class MyTests {@Testpublic void testAppName() {String appName = EnvironmentTestUtils.getEnvironment().getProperty("app.name");assertEquals("MyAppFromCommandLine", appName);}
}

如果在运行测试时,通过命令行指定了 --app.name=MyAppFromCommandLine,则 testAppName 测试方法中的断言将通过,因为命令行属性 MyAppFromCommandLine 将覆盖 @SpringBootTest 注解中指定的属性。

这个变化使得测试环境更加灵活,允许开发者在不修改测试代码的情况下,通过命令行参数来覆盖测试环境中的配置属性。这对于需要根据不同环境(如不同的 CI/CD 阶段或本地开发环境)调整测试配置的情况非常有用。

2、Flyway 模块更新:升级到 Flyway 8.5,并引入了针对不同数据库的新模块

在 Spring Boot 2.7 版本中,对 Flyway 进行了重要的更新,升级到了 Flyway 8.5 版本。这个版本带来了一些重大变化,特别是对于数据库的支持被分割成了针对不同数据库的新模块。这种模块化的做法旨在提供更清晰、更灵活的依赖管理,并且使得 Flyway 能够更好地支持各种数据库系统。

主要变化
  1. 新模块引入: Flyway 8.5 将对不同数据库的支持分割成了独立的模块。如果你的项目中使用了 Flyway 来管理数据库迁移,并且针对特定的数据库(如 MySQL、PostgreSQL 等),你需要在项目的依赖管理文件中明确指定这些新模块。

    例如,如果你使用的是 MySQL,你需要添加如下依赖:

    <dependency><groupId>org.flywaydb</groupId><artifactId>flyway-mysql</artifactId><version>8.5</version>
    </dependency>
  2. 模块化的优势:

    • 更细粒度的控制:开发者可以只包含他们需要的数据库模块,这有助于减少最终应用程序的体积。
    • 更好的维护:每个数据库模块可以独立更新和维护,使得 Flyway 团队能够更快速地响应特定数据库的变化。
    • 清晰的依赖关系:通过明确指定所需的数据库模块,项目的依赖关系变得更加清晰,减少了潜在的冲突和不一致。

3、H2 数据库升级:升级到 H2 2.1.120 版本,该版本与旧版本不兼容,并修复了一些安全漏洞

4、jOOQ:没有开源版本的 jOOQ 同时兼容 Java 8 和 H2 2.x,如果使用 Java 11,建议升级到 jOOQ 3.16 或更高版本

jOOQ 是一个轻量级的 Java ORM(对象关系映射)框架,可用来构建复杂的 SQL 查询。

5、Microsoft SQL Server JDBC 驱动程序 10:升级 MSSQL 驱动程序到 v10,新驱动程序默认启用加密

升级到 MSSQL 驱动程序 v10 带来了以下主要变化:

  1. 默认启用加密:新驱动程序默认启用了 TLS 加密,这意味着所有通过这个驱动程序建立的数据库连接都将使用加密连接。这是一个重要的安全增强,可以保护数据在客户端和服务器之间传输过程中的安全性。如果你的应用之前依赖于未加密的连接,这可能需要你更新应用的配置,以确保它能够正确地使用加密连接。

  2. 证书验证:当 encrypt 设置为 false 但服务器要求加密时,将根据 trustServerCertificate 连接设置验证证书。这确保了即使在非加密模式下,也能对服务器的证书进行验证,增加了一层安全保障。

  3. 连接属性的变更:一些连接属性已经被弃用,例如 aadSecurePrincipalId 和 aadSecurePrincipalSecret。推荐使用用户名和密码代替这些属性进行身份验证。

  4. API 的变更:出于安全考虑,一些 API 被移除,例如 getAADSecretPrincipalId API。这些变更可能需要你更新应用代码,以确保与新版本的驱动程序兼容。

  5. 支持新的 Java 版本:JDBC 驱动程序现在支持 Java 17,除了之前的 JDK 11 和 JDK 8。这为使用最新 Java 版本的开发者提供了更好的支持。

  6. 其他改进和修复:新版本的驱动程序还包含其他一些改进和修复,例如提高了从 SQL Server 检索临时数据类型时的性能,支持具有安全 Enclave 的 Always Encrypted 功能,以及改进了 Azure Active Directory 身份验证的支持。

6、OkHttp 4:由于 OkHttp 3 不再维护,Spring Boot 2.7 升级到 OkHttp 4

7、netty-tcnative 分离依赖管理:移除了对 netty-tcnative 的单独依赖管理

8、Spring Data MongoDB 嵌入式功能配置属性移除:移除了 spring.mongodb.embedded.features 配置属性

这个属性用于配置嵌入式 MongoDB 的特定功能。

嵌入式 MongoDB 是一个轻量级的 MongoDB 实例,它被用于测试,可以快速启动和停止。在 Spring Boot 应用中,它通常用于测试而不需要一个完整的 MongoDB 服务器。在旧版本中,spring.mongodb.embedded.features 属性允许你指定要启用的嵌入式 MongoDB 的特性。

9、Servlet-specific Mustache 属性:一些特定于 Servlet 的 Mustache 属性已被弃用,并引入了替代属性

Mustache是一个无逻辑的模板引擎,用于创建动态HTML内容。它由{{}}包围的标签名称组成,不支持if-else语句和for循环等逻辑操作。Mustache的Java API可以用于生成动态内容,并且可以作为Maven依赖项添加到项目中‌。

以下是一些被弃用和替代的属性:

  1. spring.mustache.allow-request-override - 被替换为 spring.mustache.servlet.allow-request-override
  2. spring.mustache.allow-session-override - 被替换为 spring.mustache.servlet.allow-session-override
  3. spring.mustache.cache - 被替换为 spring.mustache.servlet.cache
  4. spring.mustache.content-type - 被替换为 spring.mustache.servlet.content-type
  5. spring.mustache.expose-request-attributes - 被替换为 spring.mustache.servlet.expose-request-attributes
  6. spring.mustache.expose-session-attributes - 被替换为 spring.mustache.servlet.expose-session-attributes
  7. spring.mustache.expose-spring-macro-helpers - 被替换为 spring.mustache.servlet.expose-spring-macro-helpers

10、ReactiveElasticsearchTemplate 默认索引选项:更改了自动配置的 ReactiveElasticsearchTemplate 的默认索引选项

ReactiveElasticsearchTemplate是Spring Data Elasticsearch提供的一个响应式的Elasticsearch操作模板,用于检索命中和聚合数据。它基于Reactive Streams和Elasticsearch的Reactive REST客户端实现,可以方便地进行异步、非阻塞的数据操作。

使用ReactiveElasticsearchTemplate检索命中和聚合的步骤如下:

  1. 引入依赖:在项目的构建文件中添加Spring Data Elasticsearch和Elasticsearch的依赖。
  2. 配置连接:在应用的配置文件中配置Elasticsearch的连接信息,包括主机地址、端口号、索引名称等。
  3. 创建Elasticsearch实体类:根据需要检索和聚合的数据结构,在Java代码中创建对应的Elasticsearch实体类,并使用注解标记字段与Elasticsearch索引的映射关系。
  4. 创建ReactiveElasticsearchTemplate:在需要使用ReactiveElasticsearchTemplate的类中,通过注入的方式创建ReactiveElasticsearchTemplate对象。
  5. 编写查询和聚合操作:使用ReactiveElasticsearchTemplate提供的方法,结合Elasticsearch的查询语法和聚合语法,编写检索命中和聚合的操作。
  6. 执行操作并处理结果:调用ReactiveElasticsearchTemplate的方法执行操作,并通过响应式编程的方式处理返回的结果流。可以使用操作符进行数据转换、过滤、排序等操作,最终得到符合需求的结果。

ReactiveElasticsearchTemplate的优势在于它提供了响应式的操作方式,能够更好地适应高并发、大数据量的场景。它还提供了丰富的查询和聚合操作方法,可以满足各种复杂的数据检索和分析需求。

ReactiveElasticsearchTemplate的应用场景包括但不限于:

  1. 实时日志分析:通过实时检索和聚合Elasticsearch中的日志数据,进行实时监控和分析。
  2. 数据可视化:将Elasticsearch中的数据进行可视化展示,例如生成图表、仪表盘等。
  3. 搜索引擎:构建全文搜索引擎,支持关键词搜索、过滤、排序等功能。
  4. 推荐系统:基于用户行为和兴趣偏好,使用ReactiveElasticsearchTemplate进行数据检索和聚合,实现个性化推荐。

11、MongoDB 属性优先级:spring.data.mongodb.uri 属性现在优先于其他单独的属性

12、在 Maven 进程中运行应用程序:spring-boot:run 和 spring-boot:start Maven 插件目标默认在 forked 进程中运行应用程序,禁用此行为的 fork 属性已被弃用

13、有序退出代码生成器:ExitCodeGenerators 现在根据它们的 Ordered 实现和 @Order 注解进行排序。

14、度量标签键重命名:将 camelCase 风格的度量标签键重命名为符合 Micrometer 推荐的全小写和使用点分隔的风格

15、从 Spring Security 5.7 开始,弃用了 WebSecurityConfigurerAdapter

从 Spring Security 5.7 开始,WebSecurityConfigurerAdapter 已经被弃用。这是 Spring Security 项目为了进一步简化安全性配置而做出的变更。在 Spring Security 5.7 及更高版本中,推荐使用基于 Java 的配置方式,而不是继承 WebSecurityConfigurerAdapter

弃用原因:
  1. WebSecurityConfigurerAdapter 需要在配置类中重写多个方法,这增加了配置的复杂性
  2. 新的配置方式旨在简化安全性设置,使其更加直观和易于理解
推荐的替代方案:
  1. 使用 SecurityFilterChain Bean 来配置安全性。这种方式允许你直接在 Spring 配置中声明安全性规则,而不是通过重写方法
  2. 对于不需要自定义过滤器链的场景,可以使用 HttpSecurity Bean 来配置安全性
示例配置:
1、使用 SecurityFilterChain Bean 
@Configuration
@EnableWebSecurity
public class SecurityConfig {@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception {http.authorizeRequests(authorizeRequests ->authorizeRequests.antMatchers("/public/**").permitAll().anyRequest().authenticated()).httpBasic(withDefaults());return http.build();}
}
2、使用 HttpSecurity Bean 
@Configuration
@EnableWebSecurity
public class SecurityConfig {@Autowiredpublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests(authorizeRequests ->authorizeRequests.antMatchers("/public/**").permitAll().anyRequest().authenticated()).httpBasic(withDefaults());}
}

新特性

1、Spring GraphQL 启动器:引入了新的 spring-boot-starter-graphql 启动器。

2、RabbitStreamTemplate 支持:如果设置了 spring.rabbitmq.stream.name 属性,将自动配置 RabbitStreamTemplate

3、Hazelcast @SpringAware 支持:自动配置的 Hazelcast 嵌入式服务器现在默认使用 SpringManagerContext

4、操作系统信息在 Info 端点:可以公开有关操作系统的信息。

5、Java 供应商信息在 Info 端点:改进了现有的 JavaInfoContributor,提供了一个专用的部分用于供应商信息。

6、在 RSocket 处理方法中访问经过身份验证的主体:RSocket 处理方法现在可以注入 @Authenticated Principal

7、无需 OIDC SDK 即可进行不透明令牌内省:如果使用不透明令牌内省在 OAuth2 资源服务器中,自动配置的内省器不再需要依赖 com.nimbusds:oauth2-oidc-sdk

8、@DataCouchbaseTest 和 @DataElasticsearchTest:引入了用于测试使用 Spring Data Couchbase 和 Spring Data Elasticsearch 的应用程序的新的测试注解。

这些注解专门设计用于测试环境,它们提供了一种快速且高效的方式来配置和初始化这些 NoSQL 数据库的测试实例。

1、@DataCouchbaseTest

这个注解自动配置了 Spring Data Couchbase 的测试环境,允许开发者编写针对 Couchbase 数据库的集成测试。

它通常与 @Document 注解一起使用,后者用于标识与 Couchbase 数据库交互的实体类。

2、@DataElasticsearchTest

这个注解自动配置了 Spring Data Elasticsearch 的测试环境,使得开发者可以轻松编写和执行针对 Elasticsearch 的集成测试。

它与 @Document 注解协同工作,后者定义了映射到 Elasticsearch 索引的实体类。

这些注解的引入,不仅简化了测试配置,还提高了测试的可读性和维护性。开发者可以通过简单地添加这些注解来启用对相应数据库的测试支持,而无需手动编写大量的配置代码。

示例:

 @DataElasticsearchTest 的测试类如下所示:

import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.query.Query;
import org.springframework.data.elasticsearch.core.query.QueryResults;
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchMappingContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.test.context.ActiveProfiles;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;// 指定这是一个使用 Elasticsearch 的测试
@DataElasticsearchTest// 告诉 Spring Boot 测试框架使用哪个配置文件
@ActiveProfiles("test")public class ElasticsearchTests {@Autowiredprivate ElasticsearchRestTemplate elasticsearchTemplate;@Autowiredprivate ElasticsearchMappingContext mappingContext;@Autowiredprivate YourElasticsearchRepository yourRepository; // 注入你的 Elasticsearch 仓库@Document(indexName = "your_index")public static class YourDocument {private String id;private String content;// getters and setters}public interface YourElasticsearchRepository extends ElasticsearchRepository<YourDocument, String> {// 可以添加自定义查询方法}@Testpublic void testSaveAndFind() throws Exception {YourDocument document = new YourDocument();document.setId("1");document.setContent("Hello Elasticsearch");// 保存文档elasticsearchTemplate.save(document);// 验证文档是否被正确保存Query query = new Query();QueryResults<YourDocument> results = elasticsearchTemplate.search(query, YourDocument.class);assertThat(results.getTotalHits()).isEqualTo(1);assertThat(results.getContent().get(0).getId()).isEqualTo(document.getId());}
}

在这个示例中:

  • @DataElasticsearchTest 注解被用于自动配置 Elasticsearch 测试环境。
  • YourDocument 是一个简单的文档类,使用 @Document 注解标记,表示它将被映射到 Elasticsearch 的索引中。
  • YourElasticsearchRepository 是一个继承自 ElasticsearchRepository 的接口,用于操作 YourDocument
  • 在测试方法 testSaveAndFind 中,我们创建了一个 YourDocument 实例,使用 ElasticsearchRestTemplate 保存它,并验证它是否被正确索引。

依赖升级

Spring Boot 2.7 升级了多个 Spring 项目到新版本,包括 Spring Data 2021.2、Spring HATEOAS 1.5、Spring LDAP 2.4、Spring Security 5.7 和 Spring Session 2021.2。此外,还升级了许多第三方依赖。

其他变更

支持 Podman 作为构建镜像的容器引擎

添加了对 Cache2k 的依赖管理和自动配置

使用 PEM 编码证书简化了嵌入式 Web 服务器的 SSL 配置

弃用了 Elasticsearch 的 RestHighLevelClient 并推荐使用低级别的 RestClient

R2DBC 驱动程序变更,特别是 PostgreSQL 和 MySQL 驱动程序的变更

相关文章:

Spring Boot 2.6=>2.7 升级整理

版本变更&#xff1a; 1、SpringBootTest 属性源优先级&#xff1a;使用 SpringBootTest 注解的测试现在将命令行属性源置于测试属性源之上 在 Spring Boot 2.7 及更高版本中&#xff0c;对 SpringBootTest 的属性源优先级进行了调整&#xff0c;使得通过命令行传递的属性&am…...

Race Track Generator Ultimate:Race Track Generator(赛车场赛道看台场景创建工具)

下载&#xff1a;​​Unity资源商店链接资源下载链接 效果图&#xff1a;...

数据结构7——二叉树的顺序结构以及堆的实现

在上篇文章数据结构6——树与二叉树中&#xff0c;我们了解了树和二叉树的概念&#xff0c;接着上篇文章&#xff0c;在本篇文章中我们学习二叉树顺序结构的实现。 目录 1. 二叉树的顺序存储结构 2. 堆的概念及结构 1. 堆的概念 2. 堆的结构 3. 堆的实现 1. 堆节点 2. 交…...

leetcode hot100 之【LeetCode 21. 合并两个有序链表】 java实现

LeetCode 21. 合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接两个链表的节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 …...

Android Camera系列(五):Camera2

Life was like a box of chocolates, you never know what you’re gonna get. 生命就像一盒巧克力&#xff0c;你永远无法知道下一个是什么味道的。 Android Camera系列&#xff08;一&#xff09;&#xff1a;SurfaceViewCamera Android Camera系列&#xff08;二&#xff0…...

从DexMV、VideoDex、MimicPlay到SeeDo:从人类视频中学习:机器人的主流训练方法之一

前言 在此文《UMI——斯坦福刷盘机器人&#xff1a;从手持夹持器到动作预测Diffusion Policy(含代码解读)》的1.1节开头有提到 机器人收集训练数据一般有多种方式&#xff0c;比如来自人类视频的视觉演示 有的工作致力于从视频数据——例如YouTube视频中进行策略学习 即最常见…...

如何在Docker中运行Squid

测试环境 VMware Rocky Linux 9.4 实现步骤 过程&#xff1a;写一个Dockerfile构建Squid镜像; 再写一个启动脚本start_squid.sh&#xff0c;在启动脚本中配置并运行Squid。 编写Dockerfile 以rockylinux9.3做基础镜像&#xff0c;通过yum安装Squid, 拷贝squid.conf FROM …...

Ubuntu22.04 加入AD域

Ubuntu22.04 加入AD域 要在Ubuntu 22.04上加入Active Directory (AD) 域&#xff0c;你可以使用realmd和sssd服务。以下是加入AD域的步骤和示例配置&#xff1a; 更新系统软件包列表&#xff1a; sudo apt update 下载安装必要的软件包&#xff1a; sudo apt install realm…...

Docker 构建 Miniconda3 Python 运行环境实战指南

Docker 构建 Miniconda3 Python 运行环境实战指南 文章目录 Docker 构建 Miniconda3 Python 运行环境实战指南一 准备 environment.yml二 获取项目 pip 信息三 Dockerfile 编写四 构建多平台镜像1 准备组件2 构建镜像3 导出镜像4 导入镜像 五 注意事项 本文详细介绍了如何通过 …...

029 elasticsearch文档管理(ElasticsearchRepository、ElasticsearchRestTemplate)

文章目录 BlogRepository.javaBlogRepositoryTest.javaBulkTest.java 文档的管理 ElasticSearchRepository接口 使用方法&#xff1a; 创建一个接口&#xff0c;继承于ElasticSearchRepository&#xff0c;指定使用的Entity类及对应主键数据类型 Springboot自动扫描接口并创建代…...

【Flutter】Dart:Isolate

在 Dart 和 Flutter 中&#xff0c;所有的代码默认都运行在单一的线程&#xff08;即主线程&#xff09;上&#xff0c;这个线程也叫做 UI 线程。当进行耗时操作&#xff08;如复杂计算或网络请求&#xff09;时&#xff0c;如果不使用多线程处理&#xff0c;主线程会被阻塞&am…...

​微信小程序 页面间传递数据

在小程序中&#xff0c;给页面传递参数通常有以下几种方法&#xff1a; 通过URL传递参数&#xff1a; 在小程序中&#xff0c;可以在页面的路径后面添加参数&#xff0c;然后在页面的 onLoad 函数中获取这些参数。 // 在app.json中配置页面路径 "pages": [{"pat…...

前端_005_Nodejs

文章目录 npm包管理器cjs和mjsYarn包管理器 1.Node.js 是js的一个运行环境&#xff0c;从nodejs诞生后js代码不局限于只在浏览器中执行&#xff0c;此外还能再nodejs里写服务端&#xff0c;用js可以前后端全栈开发 2.Node.js不跟浏览器一样默认含有document,window对象&#xf…...

SpringCache缓存介绍

1.为什么需要缓存 ​ 前台请求&#xff0c;后台先从缓存中取数据&#xff0c;取到直接返回结果&#xff0c;取不到时从数据库中取&#xff0c;数据库取到更新缓存&#xff0c;并返回结果&#xff0c;数据库也没取到&#xff0c;那直接返回空结果&#xff1a; 使用缓存是一个很…...

python实战(一)——iris鸢尾花数据集分类

一、任务背景 本文是python实战系列专栏的第一篇文章&#xff0c;我们将从分类开始由浅入深逐步学习如何使用python完成常规的机器学习/深度学习任务。iris数据集是经典的机器学习入门数据集&#xff0c;许多分类任务教程都会以这个数据集作为示例&#xff0c;它的数据量是150条…...

k8s-对命名空间资源配额

对k8s命名空间限制的方法有很多种&#xff0c;今天来演示一下很常用的一种 用的k8s对象就是ResourceQuota 一&#xff1a;创建命名空间 kubectl create ns test #namespace命名空间可以简写成ns 二&#xff1a; 对命名空间进行限制 创建resourcequota vim resourcequ…...

Failed to connect to github.com port 443

git push无法连接443端口 **问题1****方法一&#xff1a;取消代理设置**git命令 其他解决方案1. **设置 Git 使用 HTTP 而不是 HTTPS**2. **检查证书**3. **配置 Git 忽略 SSL 验证&#xff08;不推荐&#xff09;**4. **检查代理设置** 问题1 Failed to connect to github.com…...

【设计模式系列】简单工厂模式

一、什么是简单工厂模式 简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种设计模式&#xff0c;其中包含一个工厂类&#xff0c;根据传入的参数不同&#xff0c;返回不同类的实例。这个工厂类封装了对象的创建逻辑&#xff0c;使得客户端代码可以从直接创建…...

给定一个正整数n随机生成n个字节即生成2n个十六进制数将其组成字符串返回secrets.token_hex(n)

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 给定一个正整数n 随机生成n个字节 即生成2n个十六进制数 将其组成字符串返回 secrets.token_hex(n) [太阳]选择题 根据题目代码&#xff0c;执行的结果错误的是&#xff1f; import secrets …...

[Gtk] 工程

MediaPlayer 可执行文件工程 结构 . ├── BUILD ├── ButtonHelper.cpp ├── ButtonHelper.h ├── CMakeLists.txt ├── DrawingAreaHelper.cpp ├── DrawingAreaHelper.h ├── layout.ui └── main.cpp CMakeLists.txt # 1) cmake basic cmake_minimum_r…...

基于Multisim的汽车尾灯控制电路设计与仿真

假设汽车尾部左右量测各有3个指示灯&#xff08;用发光二极管模拟&#xff09;1. 汽车正常运行时指示灯全灭&#xff1b;2.右转弯时&#xff0c;右侧3个指示灯按右循环顺序点亮&#xff1b;.3. 左转弯时&#xff0c;左侧3个指示灯按左循环顺序点亮&#xff1b;4.临时刹车时所有…...

Leetcode 3326. Minimum Division Operations to Make Array Non Decreasing

Leetcode 3326. Minimum Division Operations to Make Array Non Decreasing 1. 解题思路2. 代码实现 题目链接&#xff1a;3326. Minimum Division Operations to Make Array Non Decreasing 1. 解题思路 这一题的话就是要看出来题中给出的operation的本质事实上就是将任意…...

redo文件误删除后通过逻辑备份进行恢复

问题描述 开发同事让在一个服务器上查找下先前库的备份文件是否存在&#xff0c;如果存在进行下恢复。翻了服务器发现备份文件存在&#xff0c;多愁了一眼竟翻到了该备份文件于2024.6.17日恢复过的日志&#xff0c;赶紧和开发沟通说2024.6.17号已经恢复过了为啥还要恢复&#x…...

7805的输出电压如何调整?

7805稳压集成电路的输出电压通常是固定的&#xff0c;标称为5V。然而&#xff0c;在实际应用中&#xff0c;可以通过一些方法调整其输出电压&#xff0c;尽管这些调整方法可能会使电路变得更加复杂或需要额外的元件。以下是几种可能的调整方法&#xff1a; 1. 使用不同型号的稳…...

git命令使用一览【自用】

git常见操作&#xff1a; git initgit remote add master【分支名字】 gitgits.xxxxx【仓库中获取的ssh链接或者http协议的链接】检查远程仓库是否链接成功。 git remote -v出现以下画面就可以git pull,git push了...

MES系列-报表和分析

MES系列-报表和分析 MES系列文章目录 ISA-95制造业中企业和控制系统的集成的国际标准-(1) ISA-95制造业中企业和控制系统的集成的国际标准-(2) ISA-95制造业中企业和控制系统的集成的国际标准-(3) ISA-95制造业中企业和控制系统的集成的国际标准-(4) ISA-95制造业中企业和控制…...

如何在分布式环境中实现高可靠性分布式锁

目录 一、简单了解分布式锁 &#xff08;一&#xff09;分布式锁&#xff1a;应对分布式环境的同步挑战 &#xff08;二&#xff09;分布式锁的实现方式 &#xff08;三&#xff09;分布式锁的使用场景 &#xff08;四&#xff09;分布式锁需满足的特点 二、Redis 实现分…...

Vue基础(4)

自定义指令 除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。在vue中使用directive来创建自定义指令 钩子函数 指令定义函数提供了几个钩子函数&#xff08;可选&#xff09;&#xff1a; bind: 只调用一次&#xff0c;指令第一次绑定到元素时调用&…...

Redis高阶篇之Redis单线程与多线程

文章目录 0 前言1. 为什么Redis是单线程&#xff1f;1.1 Redis单线程1.2 为什么Redis3时代单线程快的原因1.3 使用单线程原因 2.为什么逐渐加入多线程呢&#xff1f;2.1 如何解决 3.redis6/7的多线程特性和IO多路复用入门3.1主线程和IO线程怎么协作完成请求处理的3.2 Unix网络编…...

【C++】STL——priority_queue优先级队列

目录 前言priority_queue的使用简单使用在OJ中的使用 priority_queue的模拟实现基本功能仿函数在这里插入图片描述 前言 上一节我们说了stack和queue这两种容器适配器&#xff0c;而priority_queue&#xff08;优先级队列&#xff09;同样也是属于容器适配器&#xff0c;它会优…...