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

Spring Boot常见面试题

Spring Boot简介

Spring Boot 是由 Pivotal 团队提供,用来简化 Spring 应用创建、开发、部署的框架。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。

Spring Boot 优点

Spring Boot有以下优势:
(1) 容易上手,提升开发效率,为 Spring 开发提供一个更快、更广泛的入门体验。
(2) 开箱即用,提供各种默认配置来简化项目配置。
(3) 尽可能自动化配置Spring和第三方类库。
(4) 内嵌式容器(如tomcat、jetty、Undertow)简化Web项目。
(5) 没有冗余代码生成和XML配置的要求。
(6) 避免大量的 Maven 导入和各种版本冲。

Spring Boot 自动装配

Spring Boot的自动装配是指Spring Boot会自动将一些配置类的Bean注册到IOC容器中,我们可以在需要的地方使用@Autowired或@Resource等注解来使用它。SpringBoot定义了一套接口规范,这套规范规定:Spring Boot在启动时会扫描外部引用jar包中的META-INF/spring.factories文件,将文件中配置的类型信息加载到Spring容器并执行类中定义的各种操作。
自动装配可以简单理解为:通过注解或者一些简单的配置就能在Spring Boot的帮助下实现某块功能。这样就可以更快速地构建应用程序,而无需手动配置大量的Bean。

自动装配原理简介

Spring Boot 通过@EnableAutoConfiguration开启自动装配,通过 SpringFactoriesLoader 最终加载META-INF/spring.factories中的自动配置类实现自动装配,自动配置类其实就是通过@Conditional按需加载的配置类,想要其生效必须引入spring-boot-starter-xxx包实现起步依赖。
可以直接使用@SpringBootApplication注解。@SpringBootApplication注解是一个组合注解,包含如下三个注解:
@SpringBootConfiguration(里面就是@Configuration,标注当前类为配置类,其实只是做了一层封装改了个名字而已)
@EnableAutoConfiguration(开启自动配置)
@ComponentScan(包扫描)
这样,在Spring Boot应用的main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration注解接口。这样在程序执行的时候,会自动去maven中读取每个starter中的spring.factories文件,该文件里配置了所有需要被创建spring容器中的Bean。

如何理解Spring Boot的约定优于配置?

首先,约定优于配置是一种软件设计的范式,它的核心思想是减少软件开发人员对于配置项的维护,从而让开发人员更加聚焦在业务逻辑上。Spring Boot 就是约定优于配置这一理念下的产物,它类似于 Spring 框架下的一个脚手架,通过 Spring Boot,我们可以快速开发基于 Spring 生态下的应用程序。
基于传统的 Spring 框架开发 web 应用,我们需要做很多和业务开发无关并且只需要做一次的配置,比如管理 jar 包依赖web.xml 维护Dispatch-Servlet.xml 配置项维护应用部署到 Web 容器第三方组件集成到Spring IOC 容器中的配置项维护而在 Spring Boot 中,我们不需要再去做这些繁琐的配置,SpringBoot已经自动帮我们完成了,这就是约定优于配置思想的体现。
除此之外,Spring Boot 约定优于配置的体现还有很多,比如Spring Boot Starter 启动依赖,它能帮我们管理所有 jar 包版本如果当前应用依赖了spring mvc相关的jar,那么Spring Boot会自动内置Tomcat容器来运行 web 应用,我们不需要再去单独做应用部署。Spring Boot 的自动装配机制的实现中,通过扫描约定路径下的 spring.factories文件来识别配置类,实现 Bean 的自动装配。默认加载的配置文件 application.properties 等等。

Spring Boot 中的 starter 到底是什么?

首先,这个 Starter 并非什么新的技术点,还是基于 Spring 已有功能来实现的。首先它提供了一个自动化配置类,一般命名为 XXXAutoConfiguration ,在这个配置类中通过条件注解来决定一个配置是否生效(条件注解就是 Spring 中原本就有的),然后它还会提供一系列的默认配置,也允许开发者根据实际情况自定义相关配置,然后通过类型安全的属性注入将这些配置属性注入进来,新注入的属性会代替掉默认属性。正因为如此,很多第三方框架,只需要引入依赖就可以直接使用了。当然,开发者也可以自定义 Starter。
Starter可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,可以实现一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。例如,如果想使用 Sping 和 JPA 访问数据库,只需要你的项目包含 spring-boot-starter-data-jpa 依赖项,就可以完美进行。

spring-boot-starter-parent 有什么用?

新创建一个 Spring Boot 项目,默认都是有 parent 的,这个 parent 就是 spring-boot-starter-parent,spring-boot-starter-parent 主要有如下作用:
定义了 Java 编译版本为 1.8。
使用 UTF-8 格式编码。
继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。
执行打包操作的配置。
自动化的资源过滤。
自动化的插件配置。
针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同环境的配置文件,例如 application-dev.properties 和 application-dev.yml。

Spring Boot配置文件

在大多数情况下,自动配置的Bean可以满足基本需求,但还是需要覆盖一些配置以满足特定的需求。
Spring的环境抽象是各种配置属性的一站式服务。它抽取了原始的属性,这样需要这些属性的Bean就可以从Spring中获取。Spring环境会拉取多个属性源,包括:
(1) JVM系统属性;
(2) 操作系统环境变量;
(3) 命令行参数;
(4) 应用属性配置文件。
它会将这些属性聚合到一个源中,通过这个源可以注入到Spring的Bean中。
请添加图片描述
Spring 环境拉取多个属性源的属性,然后注入到Spring 的Bean中。这样通过 Spring Boot 自动配置的 Bean 就可以通过 Spring 环境进行配置。如,希望应用底层的Servlet容器使用另一个端口监听请求,而不再使用默认的8080端口,那么可以在application.properties文件中的属性(如server.port=9000)进行配置。
注意,如果使用环境变量而不是系统属性,大多数操作系统不允许使用句点分隔的键名,但可以使用下划线代替(例如, SPRING_CONFIG_NAME 代替 spring.config.name)。

properties文件和yaml文件

SpringBoot配置文件支持的格式有两种:properties和yaml。这里重点说下yaml格式。yaml格式文件基本语法如下:

大小写敏感
使用缩进表示层级关系
缩进不允许使用tab,只允许空格
缩进的空格数不重要,只要相同层级的元素左对齐即可  
使用#表示注释

在选用配置文件类型时,可遵从以下原则:
(1) 对于较复杂的数据结构(如数组),yaml优先于properties。
(2) 对于支持的编程语言种类,yaml优先于properties。
注:yaml除了支持Java语言,还支持python、go等大量编程语言。
(3) yaml支持中文内容,properties若想支持中文内容只能用unicode编码。
作为一种通用的格式,推荐使用yaml文件。

配置文件加载

springboot启动会扫描以下位置的application.properties/application.yaml文件作为其默认配置文件:

优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件

请添加图片描述
若相同优先级位置(同一目录下)下同时有properties文件和yaml文件,properties文件中的内容会覆盖yaml文件中的内容。(相同目录下,如果同时存在properties文件和yaml文件,则优先使用properties文件)

加密配置属性

使用 jasypt 实现加解密配置属性。这里采用非对称加密的实现。具体实施步骤如下:
(1) 本地基于公钥手动将明文生成密文。
(2) 将私钥存储到特定的文件中。
(3) 将文件放到服务器指定位置。
(4) 通过文件挂载的方式,引用文件。
(5) 从文件中读取文件并将密文解密成明文。

JavaBean 属性绑定

Spring Boot在将 Environment 属性绑定到 @ConfigurationProperties Bean。将@ConfigurationProperties注解放到Spring Bean上之后,它就会为该Bean中那些能够根据Spring环境注入值的属性赋值。 示例如下:

my:service:enable: truesecurity:username: localpasword: ENC(xxxaaa)
@ConfigurationProperties("my.service")
public class MyProperties {private boolean enable;private final Security security = new Security();// getters/setters...public static class Security {private String username;private String pasword;// getters/setters...}
}

Spring Boot 常见的读取配置的方式?

Spring Boot 可以通过 @PropertySource(.properties文件),@Value,@Environment,@ConfigurationProperties 等方式来绑定变量。

Spring Profiles

Spring profiles是一种条件化的配置,在运行时,根据哪种profile处于激活状态,可以使用或忽略不同的Bean、配置类和配置属性。
定义特定profile相关的属性的一种方式是创建另一个属性文件。文件的名称要遵循如下的约定:application-{profile名称}.文件后缀。然后,就可以在该文件中声明适用于该profile的配置属性了。
对于存在多个profile的场景,可以使用 spring.profiles.active 属性来指定哪些配置文件是活动的(active)。示例如下:

spring:profiles:active: production

对应Bean的定义补充@Profile注解,如果该Bean是和特定环境相关。

@Profile("production")
public class ProductionConfiguration {// ...}

Spring Boot 异常处理

Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法。 我们通过实现一个 ControlerAdvice 类,来处理控制器类抛出的所有异常。

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public ModelAndView customException(Exception e) {ModelAndView mv = new ModelAndView();mv.addObject("message", e.getMessage());mv.setViewName("myerror");return mv;}
}

Spring Boot 任务执行和调度

如果context没有 Executor Bean,Spring Boot会自动配置一个 ThreadPoolTaskExecutor ,它具有合理的默认值,可以自动与异步任务执行( @EnableAsync )和Spring MVC的异步请求处理相关联。
可以配置的有:ThreadPoolTaskExecutor(异步任务)、ThreadPoolTaskScheduler(定时任务)。

spring:task:execution:pool:max-size: 16queue-capacity: 100keep-alive: '10s'
spring:task:scheduling:thread-name-prefix: "scheduling-"pool:size: 2

Spring Boot 与第三方的集成

Spring Boot集成日志

Spring Boot在所有内部日志中使用 Commons Logging ,但对底层日志的实现保持开放。 为 Java Util Logging 、 Log4j2 、 Logback 提供了默认配置。 在每一种情况下,记录器(logger)都被预设为使用控制台输出,也可以选择输出到文件。
默认情况下,如果使用 “Starter”,则默认使用Logback。 适当的Logback路由也包括在内,以确保使用Java Util Logging、Commons Logging、Log4J或SLF4J的依赖库都能正确工作。

支持的日志级别从低到高依次是:

TRACE < DEBUG < INFO < WARN < ERROR < FATAL  

一般需要从环境变量获取日志级别,方便线上动态调整,方便测试。

Spring Boot 集成 Mybatis

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

Spring Boot 集成Redis

Redis是常用的缓存中间件。

Spring Boot 集成MQ

MQ有很多,主流的MQ有kafka、RocketMQ、RabbitMQ等。推荐使用Kafka。

部署 Spring Boot 应用

根据文件类型,可将Spring Boot应用构建成可执行JAR文件或传统的WAR文件。这种选择取决于要将应用部署到传统的Web应用服务器还是部署到云中。
(1) 部署到Java应用服务器(Web容器)中。
如果必须将应用部署到Tomcat、Jetty、WebLogic等Web容器中,只能将应用构建成WAR文件。注意,Spring Boot在构建时,默认内嵌Web容器。所以,该种场景的部署,还需移除对Tomcat等Web容器的依赖。WAR文件是专门针对在Web容器中部署设计的。
(2) 部署到云平台。
如果要将应用部署到云平台,可执行的JAR文件(内嵌Web容器,如Tomcat等)是最佳的选择。即使云平台支持WAR部署,JAR文件也要比WAR格式简单的多。
接下来,将会关注三种部署场景:
(1) 将Spring Boot应用以WAR文件的形式部署到Web容器中,如Tomcat。
(2) 将Spring Boot应用作为可执行的JAR文件,推送到云平台。
(3) 将Spring Boot应用打包到Docker容器,将其部署到任何支持Docker形式的平台中。

构建和部署WAR文件

如果要将应用程序部署到Web容器中,就需要构建一个WAR文件。为了让Web容器知道如何运行应用程序,需要创建Web.xml文件或Servlet Initializer类来声明Spring 的DispatchServlet。Spring Boot提供的SpringBootServletInitializer使这个过程变得更加简单。SpringBootServletInitializer是一个能够感知Spring Boot环境的特殊SpringWebApplicationInitializer实现。除了配置Spring的DispatchServlet之外,SpringBootServletInitializer还会查找Spring应用上下文中所有Filter、Servlet或ServletContextInitializer类型的Bean,并将其注册到Servlet容器中。

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(Application.Class, args);}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(Application.Class);}private static Class<Application> applicationClass = Application.class;
}

此外,还需对项目的构建文件类型进行调整。如果使用Maven构建,只需要确保pom.xml文件元素设置为war即可:

<packaging>war</packaging>

执行构建动作后,即可生成WAR文件。
部署WAR文件就是WAR文件放到Web容器的指定目录。如Tomcat是webapp目录。
随着进入云部署时代,JAR文件是更好的选择。

构建和部署JAR文件

基于JAR文件的方式,是目前的主流实现。
服务器的硬件购买和维护成本可能代价高昂。当出现高负载时,恰当地对服务器进行扩展是非常困难的,对有些组织来说,这样做甚至是不允许的。如今,将应用部署到云中是一种人们广泛关注并能够节省成本的方案。
我们有多种可选的云方案,但人们目前最关注的是平台即服务(Platform as a Service,PaaS)。PaaS提供现成的应用部署平台,其中包含多种可以绑定到应用上的附加服务(比如数据库和消息代理)。
可提供推送工具将JAR文件推送到PaaS平台。如果推送成功,应用就可完成部署并处理请求。

在Docker中运行Spring Boot应用

在云中部署应用程序的另一种常见方法是将应用程序打包到Docker等容器中,然后发布到云中。如将应用程序推送到AWS这样的基础设施即服务(Infrastructure as a Service, IaaS)平台。
容器化应用程序的概念借鉴了现实世界中的联运集装箱。在运输过程中,不管里面的东西是什么,所有的联运集装箱都有一个标准的尺寸和格式。按照类似的方式,容器化的应用程序遵循通用的容器格式,可以在任何地方部署和运行,而不必关心里面的应用是什么。
Spotify提供了一个Maven插件,借助它可以轻易地将Spring Boot的构建结果创建为Docker容器。对应配置代码如下:

<build><plugins><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.4.3</version><configuration><reposity>${docker.image.prefix}/${project.artifactId}</reposity><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration></plugin></plugins>
</build>

在代码块下,设置了一些属性,用于指导如何创建Docker镜像。

使用NGINX做反向代理

实际开发中,还会在服务器端使用NGINX做代理,也就是让Ngnix代理REST请求到Spring Boot应用程序。

Spring Boot 中的监视器是什么?

Spring boot actuator 是 spring 启动框架中的重要功能之一。Spring boot 监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。
有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为 HTTP URL 访问的REST 端点来检查状态。
在平台上部署时,应用程序可以使用 Kubernetes Probes 等基础设施向平台提供有关其可用性的信息。Spring Boot对常用的 “liveness” 和 “readiness” 可用性状态提供了开箱即用的支持。如果你使用Spring Boot的 “actuator” ,那么这些状态将作为健康端点组(health endpoint groups)暴露出来。

Liveness

一个应用程序的 “Liveness” 状态告诉我们它的内部状态是否允许它正常工作,或者在当前失败的情况下自行恢复。

Readiness

应用程序的 “Readiness” 状态告诉平台,该应用程序是否准备好处理流量。 failing状态的 “Readiness” 告诉平台,它暂时不应该将流量发送到该应用程序。

参考

https://www.baidu.com/ 百度AI助手
https://docs.spring.io/spring-boot/docs Spring Boot官方文档
https://springdoc.cn/spring-boot/index.html Spring Boot 中文文档
https://springdoc.cn/spring-boot/features.html#features.external-config Spring Boot 核心特性
https://blog.csdn.net/ThinkWon/article/details/104397299 Spring Boot面试题
https://cloud.tencent.com/developer/article/2110061 40个SpringBoot面试题
https://blog.csdn.net/cx521600/article/details/90205359 SpringBoot常见的经典面试题
https://zhuanlan.zhihu.com/p/643166816 2023 SpringBoogt高频面试题(精品)
https://www.cnblogs.com/lenve/p/10748453.html SpringMVC 中 @ControllerAdvice 注解的三种使用场景

https://cloud.tencent.com/developer/article/1481147 [Spring Boot] 如何优雅的对配置文件进行加密
https://blog.csdn.net/justry_deng/article/details/95712802 SpringBoot使用jasypt加密密码等重要信息

相关文章:

Spring Boot常见面试题

Spring Boot简介 Spring Boot 是由 Pivotal 团队提供&#xff0c;用来简化 Spring 应用创建、开发、部署的框架。它提供了丰富的Spring模块化支持&#xff0c;可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能&#xff0c;降低了复杂性&#xff0c;同…...

分块矩阵求逆

另可参考Block matrix on Wikipedia2018.4.3 补充补充两个参考文献&#xff0c;都是对工科很实用的矩阵手册&#xff1a;D. S. Bernstein, Matrix mathematics: Theory, facts, and formulas with application to linear systems theory. Princeton, NJ: Princeton University …...

Python 文件写入操作

视频版教程 Python3零基础7天入门实战视频教程 w模式是写入&#xff0c;通过write方法写入内容。 # 打开文件 模式w写入&#xff0c;文件不存在&#xff0c;则自动创建 f open("D:/测试3.txt", "w", encoding"UTF-8")# write写入操作 内容写入…...

【Spring Boot系列】- Spring Boot侦听器Listener

【Spring Boot系列】- Spring Boot侦听器Listener 文章目录 【Spring Boot系列】- Spring Boot侦听器Listener一、概述二、监听器Listener分类2.1 监听ServletContext的事件监听器2.2 监听HttpSeesion的事件监听器2.3 监听ServletRequest的事件监听器 三、SpringMVC中的监听器3…...

JavaScript速成课—事件处理

目录 一.事件类型 1.窗口事件 2.表单元素事件 3.图像事件 4.键盘事件 5.鼠标事件 二.JavaScript事件处理的基本机制 三.绑定事件的方法 1.DOM元素绑定 2.JavaScript代码绑定事件 3.监听事件函数绑定 四.JavaScript事件的event对象 1.获取event对象 2.鼠标坐标获取…...

【入门篇】ClickHouse最优秀的开源列式存储数据库

文章目录 一、什么是ClickHouse&#xff1f;OLAP场景的关键特征列式数据库更适合OLAP场景的原因输入/输出CPU 1.1 ClickHouse的定义与发展历程1.2 ClickHouse的版本介绍 二、ClickHouse的主要特性2.1 高性能的列式存储2.2 实时的分析查询2.3 高度可扩展性2.4 数据压缩2.5 SQL支…...

【C++ Exceptions】异常处理的成本

最低成本 exception是C的一部分&#xff0c;编译器必须支持。即使从未使用任何异常处理机制&#xff0c;也必须付出一些空间放置某些数据结构&#xff0c;付出一些时间随时保持那些数据结构的正确性。 第二种成本&#xff1a;来自try语句块 避免非必要的try语句块。 粗略估计&a…...

API接口:原理、实现及应用

API&#xff08;Application Programming Interface&#xff09;接口是现代软件开发中不可或缺的一部分。它们提供了一种机制&#xff0c;使得不同的应用程序和服务可以相互通信&#xff0c;共享数据和功能。在这篇文章中&#xff0c;我们将探讨API接口的原理、实现及应用&…...

SpringBoot学习笔记(项目创建,yaml,多环境开发,整合mybatis SMM)

一、SpringBoot入门 1.1 SpringBoot概述 SpringBoot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化Spring应用的初始搭建以及开发过程。 Spring程序缺点&#xff1a;配置繁琐&#xff0c;依赖设置繁琐。SpringBoot程序优点&#xff1a;自动装配&#xff0c…...

Linux内核分析:输入输出,字符与块设备 31-35

CPU 并不直接和设备打交道,它们中间有一个叫作设备控制器(Device Control Unit)的组件,例如硬盘有磁盘控制器、USB 有 USB 控制器、显示器有视频控制器等。这些控制器就像代理商一样,它们知道如何应对硬盘、鼠标、键盘、显示器的行为。 输入输出设备我们大致可以分为两类…...

Linux抓包工具tcpdump

一、介绍 tcpdump是一个抓包工具&#xff0c;用于实时捕获和分析网络流量。它通常在unix和linux操作系统上使用。tcpdump能够捕获流经网络接口的数据包&#xff0c;并显示或保存它们以供进一步分析。它提供有关每个数据包的详细信息&#xff0c;包括源IP地址、目标IP地址、使用…...

Qt消息机制和事件

事件 事件是由Qt或者系统在不同时刻发出的,当敲下鼠标,或者按下键盘,或者当窗口需要重新绘制的时候,就会发出一个相应的事件,一些操作由用户的操作发出,一些则由系统自动发出,如系统定时器事件等。 Qt 中所有事件类都继承于 QEvent。 在事件对象创建完毕后, Qt 将这个…...

LeetCode-739-每日温度-单调栈

题目描述&#xff1a;给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 题目…...

MyBatis中当实体类中的属性名和表中的字段名不一样,怎么办

方法1&#xff1a; 在mybatis核心配置文件中指定&#xff0c;springboot加载mybatis核心配置文件 springboot项目的一个特点就是0配置&#xff0c;本来就省掉了mybatis的核心配置文件&#xff0c;现在又加回去算什么事&#xff0c;总之这种方式可行但没人这样用 具体操作&…...

Flutter框架和原理剖析

Flutter是Google推出并开源的跨平台开发框架&#xff0c;主打跨平台、高保真、高性能。开发者可以通过Dart语言开发Flutter应用&#xff0c;一套代码同时运行在ios和Android平台。不仅如此&#xff0c;flutter还支持web、桌面、嵌入应用的开发。flutter提供了丰富的组件、接口&…...

NFS:使用 Ansible 自动化配置 NFS 客户端服务端

考试顺便整理博文内容整理涉及使用 Ansible 部署 NFS 客户端和服务端理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是人的逃…...

IntelliJ IDEA使用——Debug操作

文章目录 版本说明图标和快捷键查看变量计算表达式条件断点多线程调试 版本说明 当前的IntelliJ IDEA 的版本是2021.2.2&#xff08;下载IntelliJ IDEA&#xff09; ps&#xff1a;不同版本一些图标和设置位置可能会存在差异&#xff0c;但应该大部分都差不多。 图标和快捷键…...

uniapp项目实践总结(十八)自定义多列瀑布流组件

导语&#xff1a;有时候展示图片等内容&#xff0c;会遇到图片高度不一致的情况&#xff0c;这时候就不能使用等高双列或多列展示了&#xff0c;这时候会用到瀑布流的页面布局&#xff0c;下面就一起探讨一下瀑布流的实现方法。 目录 准备工作原理分析实战演练案例展示 准备工…...

Ubuntu 22.04LTS + 深度学习环境安装全流程

一、 CUDA Toolkit 安装 1. 选择需要安装的版本(下载地址) 2. 选择自己的系统版本获取下载地址和安装指令 3. 运行安装指令进行安装 wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run sudo sh cuda_12.2.…...

【lesson7】git的介绍及使用

文章目录 什么是gitgit的历史git使用在gitee上创建仓库git clone HTTPS地址git add .git add 文件名git commit “日志”git pushgit loggit rm 文件名git statusgit pull 什么是git git是版本控制器&#xff0c;那么什么是版本控制器呢&#xff1f; 下面讲个故事为大家讲解一…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...

基于Java项目的Karate API测试

Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...