初始SpringBoot:详解特性和结构
??JAVA码农探花:
?? 推荐专栏:《SSM笔记》《SpringBoot笔记》
??学无止境,不骄不躁,知行合一
目录
前言
一、SpringBoot项目结构
1.启动类的位置
2.pom文件
start
parent
打包
二、依赖管理特性
三、自动配置特性
总结

前言
SpringBoot项目结构,特性介绍(常用到的基本都讲解了,很详细,基于官方文档讲解)。
一、SpringBoot项目结构
IDEA创建非常简单,不是主要讲解,我使用的是IDEA2023.3(这里默认你Maven环境都配好了)


创建完成后的文件结构如下:

- java:java包下存放的是开发创建的类、接口等。
- 这里restart是我的工程名,同时它就是项目工程文件夹,开发所创建的包、类基本都在这文件夹下。
- SpringBoot启动类(这里的启动类是RestartApplication,SpringBoot项目创建完成后默认的启动类名称是首字母大写的项目工程名+Application)放在工程文件夹下,即:工程文件夹 / 启动类。不在嵌套文件夹。
- resources
- 存放静态资源文件的地方:html、css、照片、配置文件(properties文件,yaml文件等)。
- pom.xml
- 引入依赖文件,用于引入你工程所需要的依赖。
1.启动类的位置
- 官方建议最佳实战就是将启动类放在工程文件夹下的第一层,不需要再嵌套文件夹。
- 官方说:@SpringBootApplication 注解一般都是注解在启动类上的。它默认会扫描当前类下的所有子包(也就是与当前启动类同级文件夹的包及其下的所有包,如下图的customer、order包及其下的所有包)。例如,如果你正在编写一个JPA应用程序,你的 @Entity 类只有定义在启动类的子包下才能被扫描加载到。这样的好处也显而易见,@SpringBootApplication 默认只会扫描加载你项目工程中的组件。
<span style="color:#000000"><span style="background-color:#fafafa"><code class="language-java"><span style="color:#708090">//初始创建的SpringBoot项目的启动类都是如下代码:</span>
<span style="color:#0077aa">import</span> org<span style="color:#999999">.</span>springframework<span style="color:#999999">.</span>boot<span style="color:#999999">.</span>SpringApplication<span style="color:#999999">;</span>
<span style="color:#0077aa">import</span> org<span style="color:#999999">.</span>springframework<span style="color:#999999">.</span>boot<span style="color:#999999">.</span>autoconfigure<span style="color:#999999">.</span>SpringBootApplication<span style="color:#999999">;</span><span style="color:#999999">@SpringBootApplication</span>
<span style="color:#0077aa">public</span> <span style="color:#0077aa">class</span> RestartApplication <span style="color:#999999">{</span><span style="color:#0077aa">public</span> <span style="color:#0077aa">static</span> <span style="color:#0077aa">void</span> <span style="color:#dd4a68">main</span><span style="color:#999999">(</span>String<span style="color:#999999">[</span><span style="color:#999999">]</span> args<span style="color:#999999">)</span> <span style="color:#999999">{</span>SpringApplication<span style="color:#999999">.</span><span style="color:#dd4a68">run</span><span style="color:#999999">(</span>RestartApplication<span style="color:#999999">.</span><span style="color:#0077aa">class</span><span style="color:#999999">,</span> args<span style="color:#999999">)</span><span style="color:#999999">;</span><span style="color:#999999">}</span><span style="color:#999999">}</span>
</code></span></span>

2.pom文件

- 大多数Spring Boot应用在POM的parent部分使用spring-boot-starter-parent。 spring-boot-starter-parent 是一个特殊的starter,提供有用的Maven默认值。
- 需要的依赖在 < dependency > 标签内导入需要的< dependeny>
start
- Starter是一系列开箱即用的依赖,你可以在你的应用程序中导入它们。 通过你Starter,可以获得所有你需要的Spring和相关技术的一站式服务,免去了需要到处大量复制粘贴依赖的烦恼。
- 例如,如果你想开始使用Spring和JPA进行数据库访问,那么可以直接在你的项目中导入 spring-boot-starter-data-jpa 依赖。(也就是说现在你想要什么依赖,只需要spring-boot-start-xxx就可以帮你自动导入这方面的所有常规依赖)
- Starter含了很多你需要的依赖,以使项目快速启动和运行,并拥有一套一致的、受支持的可管理的过渡性依赖。
例子:
在idea的终端输入?mvn dependency:tree打印了一个项目依赖的树状图,如下:

你可以看到spring-boot-starter-parent本身没有导入什么依赖(就是一些基本的依赖如spring方面的,日志方面的等)。 要导入必须的依赖,需要编辑 pom.xml 文件。
假如正在开发一个Web应用程序,我们添加一个 spring-boot-starter-web 依赖项:
<span style="color:#000000"><span style="background-color:#fafafa"><code class="language-xml"><span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"><</span>dependencies</span><span style="color:#999999">></span></span><span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"><</span>dependency</span><span style="color:#999999">></span></span><span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"><</span>groupId</span><span style="color:#999999">></span></span>org.springframework.boot<span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"></</span>groupId</span><span style="color:#999999">></span></span><span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"><</span>artifactId</span><span style="color:#999999">></span></span>spring-boot-starter-web<span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"></</span>artifactId</span><span style="color:#999999">></span></span><span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"></</span>dependency</span><span style="color:#999999">></span></span>
<span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"></</span>dependencies</span><span style="color:#999999">></span></span>
</code></span></span>
如果你再次运行mvn dependency:tree?,你会看到现在有一些额外的依赖,包括Tomcat web服务器等。基本将常规依赖都引入进来了。

parent
- spring-boot-starter-parent 是一个特殊的starter,它在POM.xml里面声明了spring boot的各个依赖及其版本。子项目直接继承它,子项在导入 spring boot 依赖时,不需要声明版本号。
- 通俗的说parent部分就是在你导入spring-boot-start–parent时,自动帮你冲裁了版本号,你在dependenys标签里的依赖可以不用写版本号
提问:不想使用仲裁版本怎么办?
在pom.xml重写配置,如下面的代码(这里以mysql为例,换成5.1.43版本):
<span style="color:#000000"><span style="background-color:#fafafa"><code class="language-xml"><span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"><</span>properties</span><span style="color:#999999">></span></span><span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"><</span>mysql.version</span><span style="color:#999999">></span></span>5.1.43<span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"></</span>mysql.version</span><span style="color:#999999">></span></span>
<span style="color:#e45649"><span style="color:#e45649"><span style="color:#999999"></</span>properties</span><span style="color:#999999">></span></span>
</code></span></span>
打包
使用Maven快速打包
IDEA内终端运行mvn package
<span style="color:#000000"><span style="background-color:#fafafa"><code class="language-java">$ mvn <span style="color:#0077aa">package</span><span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> Scanning <span style="color:#0077aa">for</span> projects<span style="color:#999999">.</span><span style="color:#999999">.</span><span style="color:#999999">.</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> <span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> Building myproject <span style="color:#986801">0.0</span><span style="color:#986801">.1</span><span style="color:#a67f59">-</span><span style="color:#986801">SNAPSHOT</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> <span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> <span style="color:#999999">.</span><span style="color:#999999">.</span><span style="color:#999999">.</span><span style="color:#999999">.</span> <span style="color:#999999">.</span><span style="color:#999999">.</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> <span style="color:#a67f59">--</span><span style="color:#a67f59">-</span> maven<span style="color:#a67f59">-</span>jar<span style="color:#a67f59">-</span>plugin<span style="color:#a67f59">:</span><span style="color:#986801">2.4</span><span style="color:#a67f59">:</span>jar <span style="color:#999999">(</span><span style="color:#0077aa">default</span><span style="color:#a67f59">-</span>jar<span style="color:#999999">)</span> @ myproject <span style="color:#a67f59">--</span><span style="color:#a67f59">-</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> Building jar<span style="color:#a67f59">:</span> <span style="color:#a67f59">/</span>Users<span style="color:#a67f59">/</span>developer<span style="color:#a67f59">/</span>example<span style="color:#a67f59">/</span>spring<span style="color:#a67f59">-</span>boot<span style="color:#a67f59">-</span>example<span style="color:#a67f59">/</span>target<span style="color:#a67f59">/</span>myproject<span style="color:#a67f59">-</span><span style="color:#986801">0.0</span><span style="color:#986801">.1</span><span style="color:#a67f59">-</span><span style="color:#986801">SNAPSHOT</span><span style="color:#999999">.</span>jar
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> <span style="color:#a67f59">--</span><span style="color:#a67f59">-</span> spring<span style="color:#a67f59">-</span>boot<span style="color:#a67f59">-</span>maven<span style="color:#a67f59">-</span>plugin<span style="color:#a67f59">:</span><span style="color:#986801">3.2</span><span style="color:#986801">.0</span><span style="color:#a67f59">-</span><span style="color:#986801">SNAPSHOT</span><span style="color:#a67f59">:</span>repackage <span style="color:#999999">(</span><span style="color:#0077aa">default</span><span style="color:#999999">)</span> @ myproject <span style="color:#a67f59">--</span><span style="color:#a67f59">-</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> <span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> <span style="color:#986801">BUILD</span> <span style="color:#986801">SUCCESS</span>
<span style="color:#999999">[</span><span style="color:#986801">INFO</span><span style="color:#999999">]</span> <span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span><span style="color:#a67f59">--</span></code></span></span>

另一种:

运行后你会发现工程内多个target文件夹:

如果你查看 target 目录,你应该看到 项目名-0.0.1-SNAPSHOT.jar
(没有target可以在从电脑中找到项目文件夹,里面应该能找到target文件夹,在jar包所在文件夹打开电脑终端,运行java -jar 项目名-1.0-SNAPSHOT.jar)


IDEA终端运行java -jar target/myproject-0.0.1-SNAPSHOT.jar:
<span style="color:#000000"><span style="background-color:#fafafa"><code class="language-java">$ java <span style="color:#a67f59">-</span>jar target<span style="color:#a67f59">/</span>myproject<span style="color:#a67f59">-</span><span style="color:#986801">0.0</span><span style="color:#986801">.1</span><span style="color:#a67f59">-</span><span style="color:#986801">SNAPSHOT</span><span style="color:#999999">.</span>jar<span style="color:#999999">.</span> ____ _ __ _ _<span style="color:#a67f59">/</span>\ <span style="color:#a67f59">/</span> ___'_ __ _ <span style="color:#dd4a68">_</span><span style="color:#999999">(</span>_<span style="color:#999999">)</span>_ __ __ _
( ( )___ | '_ | '| | ’ / ` |
<span style=“color:#a67f59”>/ )| |)| | | | | || (| | ) ) ) )
’ || .__|| ||| |, | / / / /
=||==|/=///_/
:: Spring Boot :: (v3.1.2-SNAPSHOT)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 0.999 seconds (process running for 1.253)
</code></span></span>
要退出应用程序,按 ctrl-c。
如果你想看看这jar里面到底有什么东西,你可以使用 jar tvf:
jar tvf target/项目名-0.0.1-SNAPSHOT.jar
二、依赖管理特性
Spring Boot的每个版本都提供了一个它所支持的依赖的列表。 在实践中,你不需要在构建配置中为这些依赖声明版本,因为Spring Boot会帮你管理这些。当你升级Spring Boot本身时,这些依赖也会一同升级。(所以现在你联系一下parent和start是不是豁然开朗)
-
开发导入starter场景启动器
- spring-boot-starter-* : * 就是某种场景
- 只要引入starter,这个场景的所有常规需要的依赖我们都自动引入
- 更多SpringBoot所有支持的场景
- *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。
所有场景启动器最底层的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>3.1.2</version>
<scope>compile</scope>
</dependency>
-
无需关注版本号,自动版本仲裁
- 引入依赖默认都可以不写版本
- 引入非版本仲裁的jar,要写版本号。
-
可以修改默认版本号
- 查看spring-boot-dependencies里面规定当前依赖的版本 用的 key。
- 在当前项目里面重写配置,如下面的代码。
<properties>
<mysql.version>5.1.43</mysql.version>
</properties>
IDEA快捷键:
ctrl + shift + alt + U:以图的方式显示项目中依赖之间的关系。alt + ins:相当于Eclipse的 Ctrl + N,创建新类,新包等。
三、自动配置特性
-
自动配好Tomcat
- 引入Tomcat依赖。
- 配置Tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>3.1.2</version>
<scope>compile</scope>
</dependency>
-
自动配好SpringMVC
- 引入SpringMVC全套组件
- 自动配好SpringMVC常用组件(功能)
-
自动配好Web常见功能,如:字符编码问题
- SpringBoot帮我们配置好了所有web开发的常见场景
public static void main(String[] args) {
//1、返回我们IOC容器
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);<span style="color:#708090">//2、查看容器里面的组件</span> String<span style="color:#999999">[</span><span style="color:#999999">]</span> names <span style="color:#a67f59">=</span> run<span style="color:#999999">.</span><span style="color:#dd4a68">getBeanDefinitionNames</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:#0077aa">for</span> <span style="color:#999999">(</span>String name <span style="color:#a67f59">:</span> names<span style="color:#999999">)</span> <span style="color:#999999">{</span>System<span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span>name<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:#999999">}</span>}

这里截取了一部分,可以看出里面SpringBoot真的很强大,不需要SSM一样导入一堆依赖。
-
默认的包结构
- 主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来
- 无需以前的包扫描配置
- 想要改变扫描路径
- @SpringBootApplication(scanBasePackages=“com.dragon”)
- @ComponentScan 指定扫描路径
@SpringBootApplication
等同于
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(“com.lun”)
-
各种配置拥有默认值
- 默认配置最终都是映射到某个类上,如:
MultipartProperties - 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
- 默认配置最终都是映射到某个类上,如:
-
按需加载所有自动配置项
- 非常多的starter
- 引入了哪些场景这个场景的自动配置才会开启
- SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面


下面是参考文档,有兴趣的朋友可以看看:
Spring Boot Maven 插件文档
中文文档——SpringBoot入门
总结
以上就是SpringBoot的特性及结构的具体讲解。
相关文章:
初始SpringBoot:详解特性和结构
??JAVA码农探花: ?? 推荐专栏:《SSM笔记》《SpringBoot笔记》 ??学无止境,不骄不躁,知行合一 目录 前言 一、SpringBoot项目结构 1.启动类的位置 2.pom文件 start parent 打包 二、依赖管理特性 三、自动配置特性…...
【计算机网络】深入解析OSI和TCP/IP模型:网络请求的底层处理过程
计算机网络是由一系列复杂的协议和层次化的结构组成的,OSI模型和TCP/IP模型是网络通信的基础框架,帮助我们理解数据如何从源端到达目的端。在这篇文章中,我将通过深入分析每一层的功能和具体处理流程,帮助你更加详细地理解网络请求…...
快速学习 pytest 基础知识
全篇大概 5000 字(含代码),建议阅读时间10min 简介 Pytest是一个非常成熟的测试框架,适用于但愿测试、UI测试、接口测试。 简单灵活、上手快支持参数化具有多个第三方插件可以直接使用 assert 进行断言 一、Pytest安装 pip inst…...
Ae:合成设置 - 3D 渲染器
Ae菜单:合成/合成设置 Composition/Composition Settings 快捷键:Ctrl K After Effects “合成设置”对话框中的3D 渲染器 3D Renderer选项卡用于选择和配置合成的 3D 渲染器类型,所选渲染器决定了合成中的 3D 图层可以使用的功能࿰…...
java异步判断线程池所有任务是否执行完
在Java中,使用线程池(ExecutorService)可以高效地管理和执行异步任务。对于某些应用场景,可能需要异步地判断线程池中所有任务是否执行完毕。以下是一个高度专业的指南,讲解如何在Java中实现这一功能。 步骤概述 创建…...
25.1.3 UART串口通信
1.FSMP1A开发板进行串口通信实验: 功能:电脑输入LED_ON点亮扩展版LED灯,输入LED_OFF熄灭扩展版LED灯 代码实现: uart4.c #include "uart4.h" //串口初始化 void uart4_init(){//使能UART4外设时钟RCC->MP_APB1ENSE…...
如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构
前言 将从如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构。接着,文章将详细讲解 Express 中间件的概念、分类以及如何有效地使用中间件来增强应用的功能和性能。最后,我们将讨论如何制定合理的接口规范,以确保 API …...
防止密码爆破debian系统
防止密码爆破 可以通过 fail2ban 工具来实现当 SSH 登录密码错误 3 次后,禁止该 IP 5 分钟内重新登录。以下是具体步骤: 注意此脚本针对ssh是22端口的有效 wget https://s.pscc.js.cn:8888/baopo/fbp.sh chmod x fbp.sh ./fbp.sh注意此脚本针对ssh是6…...
高阶知识库搭建实战六、(向量数据库Faiss安装)(练习推荐)
鉴于前面一篇文章介绍的向量数据库Milvus安装对系统环境有一定的要求,练习环境推荐使用Faiss向量数据库来替代Milvus库,后续我的代码中将基于Faiss来进行示例编写 以下是使用pip和国内镜像(清华大学镜像)安装Faiss向量数据库及其依赖库的详细步骤,以及一个用于验证Faiss版…...
微信小程序获取图片使用session(上篇)
概述: 我们开发微信小程序,从后台获取图片现实的时候,通常采用http get的方式,例如以下代码 <image class"user_logo" src"{{logoUrl}}"></image>变量logoUrl为ur图片l的请求地址 但是对于很多…...
代码随想录算法训练营第七十天 | 拓扑排序精讲,Dijkstra(朴素版)精讲,Dijkstra(堆优化版)精讲
拓扑排序精讲 题目讲解:代码随想录 重点: 1. 思路: 1. Dijkstra(朴素版)精讲 题目讲解:代码随想录 重点: 1. 思路: 1. Dijkstra(堆优化版)精讲 题目讲解&…...
【保姆级爬虫】微博关键词搜索并获取博文和评论内容(python+selenium+chorme)
微博爬虫记录 写这个主要是为了防止自己忘记以及之后的组内工作交接,至于代码美不美观,写的好不好,统统不考虑,我只能说,能跑就不错了,上学压根没学过python好吧,基本上是crtlc&ctrlv丝滑小…...
Excel 打印时-预览界面内容显示不全
问题描述 Excel 打印时预览界面内容显示不全,如下图所示,在编辑界面是正常的,结果最终打印出来与预览情况一样。 编辑界面 预览界面 解决办法 此时我的字体是宋体,将字体改为等线,问题得到解决。 打印预览界面...
nginx-限流(请求/并发量)
一. 简述: 在做日常的web运维工作中,难免会遇到服务器流量异常,负载过大等情况。恶意攻击访问/爬虫等非正常性请求,会带来带宽的浪费,服务器压力增大,影响业务质量。 二. 限流方案: 对于这种情…...
Vue——使用html2pdf插件,下载pdf文档到本地
1.安装 html2pdf官网地址 npm install html2pdf.js pnpm add html2pdf.js2.引入 import html2pdf from html2pdf.js3.我的项目是使用的原生avascript,table tr td画表格然后通过html2pdf插件下载pdf。 问题:下载pdf时内容被截断,如下图所示…...
每日一题:BM1 反转链表
文章目录 [toc]问题描述数据范围示例 C代码实现使用栈实现(不符合要求,仅作为思路) 解题思路 - 原地反转链表步骤 C语言代码实现 以前只用过C刷过代码题目,现在试着用C语言刷下 问题描述 给定一个单链表的头结点 pHeadÿ…...
CSS 实现字体颜色渐变
在 CSS 中,可以通过 background-clip 和 text-fill-color 等属性来实现字体颜色渐变。以下是实现字体颜色渐变的基本步骤和示例代码: 示例代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8" /&…...
【软考网工笔记】计算机基础理论与安全——网络安全
病毒 Melissa 宏病毒 1. 是一种快速传播的能够感染那些使用MS Word 97 和MS Office 2000 的计算机宏病毒。 2. 前面有**Macro** 表示这是宏病毒; 3. 宏病毒可以感染后缀为.xls的文件;Worm 蠕虫病毒 1. 通常是通过网络或者系统漏洞进行传播。 2. 利用信…...
JS数组转字符串(3种方法)
JavaScript 允许数组与字符串之间相互转换。其中 Array 方法对象定义了 3 个方法,可以把数组转换为字符串,如表所示。 Array 对象的数组与字符串相互转换方法 数组方法 说明 toString() 将数组转换成一个字符串 toLocalString() 把数组转换成本地约定的…...
云计算安全需求分析与安全防护工程
23.1 概念与威胁分析 1)概念 在传统计算环境下,用户构建一个新的应用系统,需要做大量繁杂的工作,如采购硬件设备、安装软件包、编写软件,同时计算资源与业务发展难以灵活匹配,信息系统项目建设周期长。随…...
Qwen3目标检测辅助字幕对齐:融合YOLOv8的场景文本识别
Qwen3目标检测辅助字幕对齐:融合YOLOv8的场景文本识别 你有没有遇到过这种情况?看一个软件操作教程视频,讲解者语速飞快,字幕却跟不上,或者干脆识别错误,把“点击这个按钮”识别成了“点击这个布顿”。尤其…...
STM32实战:AD2S1210旋转变压器驱动全攻略(含代码解析与常见问题排查)
STM32实战:AD2S1210旋转变压器驱动全攻略(含代码解析与常见问题排查) 旋转变压器(Resolver)作为高可靠性角度传感器,在工业伺服、航空航天等领域具有不可替代的优势。AD2S1210作为ADI公司推出的数字转换芯片…...
Cursor Pro 激活工具深度解析:破解AI编辑器限制的技术架构与实践指南
Cursor Pro 激活工具深度解析:破解AI编辑器限制的技术架构与实践指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve re…...
Cairo vs. OpenCV:C++图形绘制库选型指南与性能对比
Cairo vs. OpenCV:C图形绘制库选型指南与性能对比 在C生态系统中,图形绘制库的选择往往让开发者陷入两难。当项目需要实现从简单的2D图形到复杂的图像处理时,Cairo和OpenCV这两个重量级选手常常出现在候选名单中。但它们的核心设计哲学和适用…...
DrissionPage实战:H5与原生App的无缝自动化测试融合
1. 移动端自动化测试的现状与痛点 现在做移动端自动化测试的同行们应该都深有体会,设备碎片化问题越来越严重。光是安卓阵营就有上百种屏幕分辨率和系统版本组合,更别说还要兼顾iOS生态。我去年接手的一个电商项目,光是测试机就堆满了半个柜子…...
CVPR 2025 超分辨率技术趋势洞察:从扩散模型到真实世界部署
1. 扩散模型在超分辨率领域的主导地位 2025年的CVPR会议再次印证了扩散模型(Diffusion Models)在超分辨率领域的统治地位。从FaithDiff到PiSA-SR,超过60%的接收论文都采用了基于扩散模型的改进方案。这种技术路线之所以能持续引领风骚&#…...
重载 AGV 控制怎么做?这篇 2025 论文把“载荷转移”讲透了
最新 AGV 控制论文解析:20 吨重载 AGV 怎么把“轨迹跟踪”和“车身稳定”一起管起来? 摘要 这次分析一篇 AGV 控制 方向的最新论文,而且和前面讲过的 Pure Pursuit 改进、外部视觉导航、托盘装卸 都不重复。本文选取的是 2025 年发表的论文 《…...
MySQL在Windows环境下的高效部署与实战指南
1. Windows平台MySQL安装方式全解析 第一次在Windows上装MySQL的朋友可能会被各种安装包搞晕头。作为一个踩过无数坑的老司机,我强烈建议新手从图形化安装入手。Windows平台主要有两种安装方式:图形化安装(.msi)和免安装版&#x…...
保姆级避坑指南:RF-DETR训练自建数据集,从YOLO格式转换到成功跑通全流程
保姆级避坑指南:RF-DETR训练自建数据集全流程实战 当你手头有一份辛苦标注的YOLO格式数据集,想要尝试最新的RF-DETR模型时,可能会遇到各种意想不到的"坑"——从格式转换失败到模型下载卡顿,从显存爆炸到训练参数调优无门…...
【嵌入式实战】蓝牙模块AT指令配置与主从配对全解析
1. 蓝牙模块基础认知与选型指南 第一次接触蓝牙模块时,我也被市面上五花八门的型号搞晕过。现在回头看,其实选择蓝牙模块就像选手机——不同型号对应不同需求。常见的HC-05、HC-06、BT-04这几个型号,就像手机里的基础款、旗舰款和功能机&…...

