如何在 Amazon EC2 上部署 Java(Spring Boot 版)
让我们学习如何将 Java Spring Boot Web 服务器部署到 Amazon EC2。每月只需 3 美元。
使用 Azure,您可能不知道要花费多少钱。
Spring Boot 项目示例
在本教程中,我们将重点介绍如何将 Java Spring Boot 服务器部署到 Amazon EC2,因此我们不会学习如何从头开始构建 Spring Boot Web 服务。
启动 Amazon Linux EC2 实例
首先,编写下面的main.tf文件
provider "aws" {region = "ap-southeast-2"
}resource "aws_instance" "example_server" {ami = "ami-0f6a1a6507c55c9a8"instance_type = "t2.micro"key_name = "rockaws"tags = {Name = "RockSpringBootExample"}
}
运行terraform apply 来创建EC2。
ninjamac@ip-192-168-1-2 target % terraform apply Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:+ createTerraform will perform the following actions:# aws_instance.example_server will be created
Plan: 1 to add, 0 to change, 0 to destroy.Do you want to perform these actions?Terraform will perform the actions described above.Only 'yes' will be accepted to approve.Enter a value: yesaws_instance.example_server: Creating...
aws_instance.example_server: Still creating... [10s elapsed]
aws_instance.example_server: Creation complete after 16s [id=i-0d3b6e22f089bebf2]
通过 SSH 连接到 EC2 实例
ninjamac@ip-192-168-1-2 key % ssh -i rockaws.pem ec2-user@13.211.xx.xxThe authenticity of host '13.211.xx.xx (13.211.xx.xx)' can't be established.
ED25519 key fingerprint is SHA256:Q45g4PVqKnhtTnw9KQnWXnF5LoeOAFQ7qH2khVmw+Hg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '13.211.xx.xx' (ED25519) to the list of known hosts., #_~\_ ####_ Amazon Linux 2023~~ \_#####\~~ \###|~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023~~ V~' '->~~~ /~~._. _/_/ _/_/m/'
在 Amazon Linux 上安装 Java 17
[ec2-user@ip-172-31-14-36 ~]$ sudo yum install java-17-amazon-corretto-headless -y
Amazon Linux 2023 Kernel Livepatch repository 133 kB/s | 15 kB 00:00
Dependencies resolved.
================================================================================Package Arch Version Repository Size
================================================================================
Installing:java-17-amazon-corretto-headlessx86_64 1:17.0.14+7-1.amzn2023.1 amazonlinux 91 M
Installing dependencies:alsa-lib x86_64 1.2.7.2-1.amzn2023.0.2 amazonlinux 504 kcairo x86_64 1.18.0-4.amzn2023.0.1 amazonlinux 718 kdejavu-sans-fonts noarch 2.37-16.amzn2023.0.2 amazonlinux 1.3 Mdejavu-sans-mono-fonts noarch 2.37-16.amzn2023.0.2 amazonlinux 467 kdejavu-serif-fonts noarch 2.37-16.amzn2023.0.2 amazonlinux 1.0 Mfontconfig x86_64 2.13.94-2.amzn2023.0.2 amazonlinux 273 kfonts-filesystem noarch 1:2.0.5-12.amzn2023.0.2 amazonlinux 9.5 kfreetype x86_64 2.13.2-5.amzn2023.0.1 amazonlinux 423 kgoogle-noto-fonts-common noarch 20201206-2.amzn2023.0.2 amazonlinux 15 kgoogle-noto-sans-vf-fonts noarch 20201206-2.amzn2023.0.2 amazonlinux 492 kgraphite2 x86_64 1.3.14-7.amzn2023.0.2 amazonlinux 97 kharfbuzz x86_64 7.0.0-2.amzn2023.0.2 amazonlinux 873 kjavapackages-filesystem noarch 6.0.0-7.amzn2023.0.6 amazonlinux 12 klangpacks-core-font-en noarch 3.0-21.amzn2023.0.4 amazonlinux 10 klibX11 x86_64 1.8.10-2.amzn2023.0.1 amazonlinux 659 klibX11-common noarch 1.8.10-2.amzn2023.0.1 amazonlinux 147 klibXau x86_64 1.0.11-6.amzn2023.0.1 amazonlinux 33 klibXext x86_64 1.3.6-1.amzn2023.0.1 amazonlinux 42 klibXrender x86_64 0.9.11-6.amzn2023.0.1 amazonlinux 29 klibbrotli x86_64 1.0.9-4.amzn2023.0.2 amazonlinux 315 klibjpeg-turbo x86_64 2.1.4-2.amzn2023.0.5 amazonlinux 190 klibpng x86_64 2:1.6.37-10.amzn2023.0.6 amazonlinux 128 klibxcb x86_64 1.17.0-1.amzn2023.0.1 amazonlinux 235 kpixman x86_64 0.43.4-1.amzn2023.0.4 amazonlinux 296 kxml-common noarch 0.6.3-56.amzn2023.0.2 amazonlinux 32 kTransaction Summary
================================================================================
Install 26 PackagesTotal download size: 99 M
Installed size: 260 M
Downloading Packages:
(1/26): alsa-lib-1.2.7.2-1.amzn2023.0.2.x86_64. 6.8 MB/s | 504 kB 00:00
(2/26): cairo-1.18.0-4.amzn2023.0.1.x86_64.rpm 8.4 MB/s | 718 kB 00:00
(3/26): dejavu-sans-fonts-2.37-16.amzn2023.0.2. 13 MB/s | 1.3 MB 00:00
(4/26): dejavu-sans-mono-fonts-2.37-16.amzn2023 11 MB/s | 467 kB 00:00
(5/26): dejavu-serif-fonts-2.37-16.amzn2023.0.2 26 MB/s | 1.0 MB 00:00
(6/26): fontconfig-2.13.94-2.amzn2023.0.2.x86_6 5.4 MB/s | 273 kB 00:00
(7/26): fonts-filesystem-2.0.5-12.amzn2023.0.2. 245 kB/s | 9.5 kB 00:00
(8/26): freetype-2.13.2-5.amzn2023.0.1.x86_64.r 11 MB/s | 423 kB 00:00
(9/26): google-noto-sans-vf-fonts-20201206-2.am 20 MB/s | 492 kB 00:00
(10/26): google-noto-fonts-common-20201206-2.am 542 kB/s | 15 kB 00:00
(11/26): graphite2-1.3.14-7.amzn2023.0.2.x86_64 2.1 MB/s | 97 kB 00:00
(12/26): harfbuzz-7.0.0-2.amzn2023.0.2.x86_64.r 14 MB/s | 873 kB 00:00
(13/26): javapackages-filesystem-6.0.0-7.amzn20 336 kB/s | 12 kB 00:00
(14/26): langpacks-core-font-en-3.0-21.amzn2023 440 kB/s | 10 kB 00:00
(15/26): libX11-1.8.10-2.amzn2023.0.1.x86_64.rp 16 MB/s | 659 kB 00:00
(16/26): libX11-common-1.8.10-2.amzn2023.0.1.no 4.8 MB/s | 147 kB 00:00
(17/26): libXau-1.0.11-6.amzn2023.0.1.x86_64.rp 1.4 MB/s | 33 kB 00:00
(18/26): libXext-1.3.6-1.amzn2023.0.1.x86_64.rp 1.8 MB/s | 42 kB 00:00
(19/26): libXrender-0.9.11-6.amzn2023.0.1.x86_6 1.3 MB/s | 29 kB 00:00
(20/26): libbrotli-1.0.9-4.amzn2023.0.2.x86_64. 10 MB/s | 315 kB 00:00
(21/26): libjpeg-turbo-2.1.4-2.amzn2023.0.5.x86 6.2 MB/s | 190 kB 00:00
(22/26): libpng-1.6.37-10.amzn2023.0.6.x86_64.r 4.6 MB/s | 128 kB 00:00
(23/26): libxcb-1.17.0-1.amzn2023.0.1.x86_64.rp 10 MB/s | 235 kB 00:00
(24/26): xml-common-0.6.3-56.amzn2023.0.2.noarc 1.6 MB/s | 32 kB 00:00
(25/26): pixman-0.43.4-1.amzn2023.0.4.x86_64.rp 7.5 MB/s | 296 kB 00:00
(26/26): java-17-amazon-corretto-headless-17.0. 66 MB/s | 91 MB 00:01
--------------------------------------------------------------------------------
Total 62 MB/s | 99 MB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transactionPreparing : 1/1 Installing : fonts-filesystem-1:2.0.5-12.amzn2023.0.2.noarch 1/26 Installing : dejavu-sans-mono-fonts-2.37-16.amzn2023.0.2.noarch 2/26 Installing : dejavu-sans-fonts-2.37-16.amzn2023.0.2.noarch 3/26 Installing : libpng-2:1.6.37-10.amzn2023.0.6.x86_64 4/26 Installing : dejavu-serif-fonts-2.37-16.amzn2023.0.2.noarch 5/26 Running scriptlet: xml-common-0.6.3-56.amzn2023.0.2.noarch 6/26 Installing : xml-common-0.6.3-56.amzn2023.0.2.noarch 6/26 Installing : pixman-0.43.4-1.amzn2023.0.4.x86_64 7/26 Installing : libjpeg-turbo-2.1.4-2.amzn2023.0.5.x86_64 8/26 Installing : libbrotli-1.0.9-4.amzn2023.0.2.x86_64 9/26 Installing : libXau-1.0.11-6.amzn2023.0.1.x86_64 10/26 Installing : libxcb-1.17.0-1.amzn2023.0.1.x86_64 11/26 Installing : libX11-common-1.8.10-2.amzn2023.0.1.noarch 12/26 Installing : libX11-1.8.10-2.amzn2023.0.1.x86_64 13/26 Installing : libXext-1.3.6-1.amzn2023.0.1.x86_64 14/26 Installing : libXrender-0.9.11-6.amzn2023.0.1.x86_64 15/26 Installing : javapackages-filesystem-6.0.0-7.amzn2023.0.6.noarc 16/26 Installing : graphite2-1.3.14-7.amzn2023.0.2.x86_64 17/26 Installing : google-noto-fonts-common-20201206-2.amzn2023.0.2.n 18/26 Installing : google-noto-sans-vf-fonts-20201206-2.amzn2023.0.2. 19/26 Installing : langpacks-core-font-en-3.0-21.amzn2023.0.4.noarch 20/26 Installing : cairo-1.18.0-4.amzn2023.0.1.x86_64 21/26 Installing : harfbuzz-7.0.0-2.amzn2023.0.2.x86_64 22/26 Installing : freetype-2.13.2-5.amzn2023.0.1.x86_64 23/26 Installing : fontconfig-2.13.94-2.amzn2023.0.2.x86_64 24/26 Running scriptlet: fontconfig-2.13.94-2.amzn2023.0.2.x86_64 24/26 Installing : alsa-lib-1.2.7.2-1.amzn2023.0.2.x86_64 25/26 Installing : java-17-amazon-corretto-headless-1:17.0.14+7-1.amz 26/26 Running scriptlet: java-17-amazon-corretto-headless-1:17.0.14+7-1.amz 26/26 Running scriptlet: fontconfig-2.13.94-2.amzn2023.0.2.x86_64 26/26 Running scriptlet: java-17-amazon-corretto-headless-1:17.0.14+7-1.amz 26/26 Verifying : alsa-lib-1.2.7.2-1.amzn2023.0.2.x86_64 1/26 Verifying : cairo-1.18.0-4.amzn2023.0.1.x86_64 2/26 Verifying : dejavu-sans-fonts-2.37-16.amzn2023.0.2.noarch 3/26 Verifying : dejavu-sans-mono-fonts-2.37-16.amzn2023.0.2.noarch 4/26 Verifying : dejavu-serif-fonts-2.37-16.amzn2023.0.2.noarch 5/26 Verifying : fontconfig-2.13.94-2.amzn2023.0.2.x86_64 6/26 Verifying : fonts-filesystem-1:2.0.5-12.amzn2023.0.2.noarch 7/26 Verifying : freetype-2.13.2-5.amzn2023.0.1.x86_64 8/26 Verifying : google-noto-fonts-common-20201206-2.amzn2023.0.2.n 9/26 Verifying : google-noto-sans-vf-fonts-20201206-2.amzn2023.0.2. 10/26 Verifying : graphite2-1.3.14-7.amzn2023.0.2.x86_64 11/26 Verifying : harfbuzz-7.0.0-2.amzn2023.0.2.x86_64 12/26 Verifying : java-17-amazon-corretto-headless-1:17.0.14+7-1.amz 13/26 Verifying : javapackages-filesystem-6.0.0-7.amzn2023.0.6.noarc 14/26 Verifying : langpacks-core-font-en-3.0-21.amzn2023.0.4.noarch 15/26 Verifying : libX11-1.8.10-2.amzn2023.0.1.x86_64 16/26 Verifying : libX11-common-1.8.10-2.amzn2023.0.1.noarch 17/26 Verifying : libXau-1.0.11-6.amzn2023.0.1.x86_64 18/26 Verifying : libXext-1.3.6-1.amzn2023.0.1.x86_64 19/26 Verifying : libXrender-0.9.11-6.amzn2023.0.1.x86_64 20/26 Verifying : libbrotli-1.0.9-4.amzn2023.0.2.x86_64 21/26 Verifying : libjpeg-turbo-2.1.4-2.amzn2023.0.5.x86_64 22/26 Verifying : libpng-2:1.6.37-10.amzn2023.0.6.x86_64 23/26 Verifying : libxcb-1.17.0-1.amzn2023.0.1.x86_64 24/26 Verifying : pixman-0.43.4-1.amzn2023.0.4.x86_64 25/26 Verifying : xml-common-0.6.3-56.amzn2023.0.2.noarch 26/26 Installed:alsa-lib-1.2.7.2-1.amzn2023.0.2.x86_64 cairo-1.18.0-4.amzn2023.0.1.x86_64 dejavu-sans-fonts-2.37-16.amzn2023.0.2.noarch dejavu-sans-mono-fonts-2.37-16.amzn2023.0.2.noarch dejavu-serif-fonts-2.37-16.amzn2023.0.2.noarch fontconfig-2.13.94-2.amzn2023.0.2.x86_64 fonts-filesystem-1:2.0.5-12.amzn2023.0.2.noarch freetype-2.13.2-5.amzn2023.0.1.x86_64 google-noto-fonts-common-20201206-2.amzn2023.0.2.noarch google-noto-sans-vf-fonts-20201206-2.amzn2023.0.2.noarch graphite2-1.3.14-7.amzn2023.0.2.x86_64 harfbuzz-7.0.0-2.amzn2023.0.2.x86_64 java-17-amazon-corretto-headless-1:17.0.14+7-1.amzn2023.1.x86_64 javapackages-filesystem-6.0.0-7.amzn2023.0.6.noarch langpacks-core-font-en-3.0-21.amzn2023.0.4.noarch libX11-1.8.10-2.amzn2023.0.1.x86_64 libX11-common-1.8.10-2.amzn2023.0.1.noarch libXau-1.0.11-6.amzn2023.0.1.x86_64 libXext-1.3.6-1.amzn2023.0.1.x86_64 libXrender-0.9.11-6.amzn2023.0.1.x86_64 libbrotli-1.0.9-4.amzn2023.0.2.x86_64 libjpeg-turbo-2.1.4-2.amzn2023.0.5.x86_64 libpng-2:1.6.37-10.amzn2023.0.6.x86_64 libxcb-1.17.0-1.amzn2023.0.1.x86_64 pixman-0.43.4-1.amzn2023.0.4.x86_64 xml-common-0.6.3-56.amzn2023.0.2.noarch Complete!
使用 mvn 创建 jar 文件
只需运行 mvn package 命令即可创建 Java 应用程序的 .jar 文件。
您将在目标目录中看到两个 .jar 文件:
ninjamac@ip-192-168-1-2 target % ls -al
total 44624
drwxr-xr-x 16 ninjamac staff 512 4 20 20:20 .
drwxr-xr-x 11 ninjamac staff 352 4 20 19:38 ..
drwxr-xr-x 4 ninjamac staff 128 4 20 19:38 classes
drwxr-xr-x 3 ninjamac staff 96 4 20 19:38 generated-sources
drwxr-xr-x 3 ninjamac staff 96 4 20 19:38 generated-test-sources
-rw-r--r-- 1 ninjamac staff 22820488 4 20 19:40 hello-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 ninjamac staff 3404 4 20 19:39 hello-0.0.1-SNAPSHOT.jar.original
使用 rsync 将 .jar 文件复制到 EC2
ninjamac@ip-192-168-1-2 target % rsync -avz -e "ssh -i ~/Desktop/Rock/key/rockaws.pem" ./hello-0.0.1-SNAPSHOT.jar ec2-user@13.211.xx.xx:~/
building file list ... done
hello-0.0.1-SNAPSHOT.jar
sent 20421458 bytes received 42 bytes 220772.97 bytes/sec
使用 Java 执行 .jar 文件
我们之前安装了 Java,因此可以使用它的命令行界面 (CLI) 运行 .jar 文件,使用 -jar 参数并传入 .jar 文件的路径:
[ec2-user@ip-172-31-14-36 ~]$ java -jar ./hello-0.0.1-SNAPSHOT.jar . ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v3.3.0)2025-04-20T12:41:34.568Z INFO 26691 --- [hello] [ main] com.learnaws.hello.HelloApplication : Starting HelloApplication v0.0.1-SNAPSHOT using Java 17.0.14 with PID 26691 (/home/ec2-user/hello-0.0.1-SNAPSHOT.jar started by ec2-user in /home/ec2-user)
2025-04-20T12:41:34.583Z INFO 26691 --- [hello] [ main] com.learnaws.hello.HelloApplication : No active profile set, falling back to 1 default profile: "default"
2025-04-20T12:41:37.221Z INFO 26691 --- [hello] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2025-04-20T12:41:37.244Z INFO 26691 --- [hello] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2025-04-20T12:41:37.244Z INFO 26691 --- [hello] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.24]
2025-04-20T12:41:37.555Z INFO 26691 --- [hello] [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2025-04-20T12:41:37.556Z INFO 26691 --- [hello] [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2851 ms
2025-04-20T12:41:39.058Z INFO 26691 --- [hello] [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint beneath base path '/actuator'
2025-04-20T12:41:39.222Z INFO 26691 --- [hello] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'
2025-04-20T12:41:39.254Z INFO 26691 --- [hello] [ main] com.learnaws.hello.HelloApplication : Started HelloApplication in 5.58 seconds (process running for 6.56)
在 EC2 安全组中为 Spring Boot 启用 8080 端口
前往连接到您的 EC2 实例的安全组,并添加 8080 端口范围:

使用 IP 测试在 EC2 上运行的 Spring Boot 服务器

使用curl测试 actuator的健康状态
ninjamac@ip-192-168-1-2 target % curl 13.211.239.xx:8080/actuator/health
{"status":"UP"}%
如何为生产环境设置 Spring Boot
- 使用 Caddy 设置自定义域名和 SSL
- 将您的域名指向 EC2 IP
- 安装并设置 Caddy 作为反向代理
- 设置 CDN(例如 CloudFront 或 Cloudflare)用于缓存
保持 Java 服务器在后台运行
我们希望在系统重启和应用程序崩溃时自动启动应用程序,为此可以使用 systemd。
创建 systemd 服务文件
使用 vim 在 /etc/systemd/system/java-server.service 中创建一个服务文件:
sudo vim /etc/systemd/system/java-server.service
[Unit]
Description=Spring Boot Server[Service]
ExecStart=java -jar /home/ec2-user/hello-0.0.1-SNAPSHOT.jar
Restart=on-failure
RestartSec=1s[Install]
WantedBy=multi-user.target
使用 systemctl 启用 java-server 服务
现在您需要重新加载 systemd 并启用 java 服务器:
sudo systemctl daemon-reload
sudo systemctl enable java-server
启动 java-server 服务
sudo systemctl start java-server
使用 systemctl 检查状态
sudo systemctl status java-server
您将看到类似以下内容:
[ec2-user@ip-172-31-14-36 ~]$ sudo systemctl daemon-reload
[ec2-user@ip-172-31-14-36 ~]$ sudo systemctl enable java-server
Created symlink /etc/systemd/system/multi-user.target.wants/java-server.service → /etc/systemd/system/java-server.service.
[ec2-user@ip-172-31-14-36 ~]$ sudo systemctl start java-server
[ec2-user@ip-172-31-14-36 ~]$ sudo systemctl status java-server
● java-server.service - Spring Boot ServerLoaded: loaded (/etc/systemd/system/java-server.service; enabled; preset: >Active: active (running) since Sun 2025-04-20 12:57:18 UTC; 1s agoMain PID: 27376 (java)Tasks: 15 (limit: 1111)Memory: 46.4MCPU: 1.405sCGroup: /system.slice/java-server.service└─27376 java -jar /home/ec2-user/hello-0.0.1-SNAPSHOT.jarApr 20 12:57:18 ip-172-31-14-36.ap-southeast-2.compute.internal systemd[1]: Sto>
Apr 20 12:57:18 ip-172-31-14-36.ap-southeast-2.compute.internal systemd[1]: jav>
Apr 20 12:57:18 ip-172-31-14-36.ap-southeast-2.compute.internal systemd[1]: Sta>
现在,即使您重启系统或退出 SSH 会话,这也能确保您的 Java Web 服务器继续运行。
相关文章:
如何在 Amazon EC2 上部署 Java(Spring Boot 版)
让我们学习如何将 Java Spring Boot Web 服务器部署到 Amazon EC2。每月只需 3 美元。 使用 Azure,您可能不知道要花费多少钱。 Spring Boot 项目示例 在本教程中,我们将重点介绍如何将 Java Spring Boot 服务器部署到 Amazon EC2,因此我们不…...
IDEA打不开、打开报错
目录 场景异常原因解决 场景 1、本机已经安装了IDEA 2、再次安装另外一个版本的IDEA后打不开、打开报错 异常 这里忘记截图了。。。 原因 情况1-打不开:在同一台电脑安装多个IDEA是需要对idea的配置文件进行调整的,否则打不开 情况2-打开报错&#…...
【React】项目的搭建
create-react-app 搭建vite 搭建相关下载 在Vue中搭建项目的步骤:1.首先安装脚手架的环境,2.通过脚手架的指令创建项目 在React中有两种方式去搭建项目:1.和Vue一样,先安装脚手架然后通过脚手架指令搭建;2.npx create-…...
如何提高单元测试的覆盖率
一、定位未覆盖的代码 利用 IDEA 的覆盖率工具: 右键测试类 → Run with Coverage,或使用 AltShiftF10(Windows)打开运行菜单选择覆盖率。查看高亮标记: 绿色:已覆盖代码行。红色&#x…...
【SAP ME 43】RESRCE表操作导致HANA中表锁定解决方案
症状 SAP ME 通过执行以下 SQL 查询导致 RESRCE 表上的 HANA 数据库锁: 从 RESRCE WHERE HANDLE =? 选择站点待更新 或者 SELECT HANDLE FROM RESRCE WHERE HANDLE =... 用于更新 其他条款 HANA、锁、RESRCE 原因和前提条件 该问题是由运行 SQL FOR UPDATE 查询时的 …...
使用C#和FFmpeg开发RTSP视频播放器的完整指南
RTSP(Real Time Streaming Protocol)是流媒体技术中广泛使用的协议,广泛应用于视频监控、视频会议和在线直播等领域。本文将详细介绍如何使用C#和FFmpeg开发一个功能完整的RTSP视频播放器,涵盖从环境搭建到核心功能实现的全部过程。 一、开发环境准备 …...
CSS例子 > 图片瀑布流布局(vue2)
<template><div class"container"><!-- 临时容器用于计算高度 --><div v-if"!isLayoutReady" class"temp-container"><divv-for"(item, index) in list":key"temp- index":ref"(el) > …...
1.2软考系统架构设计师:系统架构的定义与作用 - 练习题附答案及超详细解析
系统架构定义与作用综合知识单选题 题目覆盖核心概念、发展历程、设计原则、评估标准及易混淆点,附答案解析: 1. 系统架构的标准定义源自于以下哪个标准? A. ISO/IEC 9126 B. IEEE 1471-2000 C. TOGAF 9.2 D. ITIL v4 答案:B 简…...
关于springmvc的404问题的一种猜测解决方案
本文是记录关于在学习动力结点老杜的springmvc时候遇到的404报错的一种解决方式; 由于本人之前学过老杜的springmvc,且运行成功,当时使用的是tomcat10.1.19版本。 idea使用2023.3.2版本。 而这次进行回顾的时候,使用tomcat10.0.1…...
PGSql常用操作命令
1 连接数据库: psql -U postgres (psql -U username -d databse_name -h host -W) -U 指定用户 -d 指定数据库 -h 要链接的主机 -W 提示输入密码 psql -h 主机名/服务器IP -p 端口号 -U 用户名 -d 数据库名 注意:(…...
使用Postman调测“获取IAM用户Token”接口实际操作
概述 Postman是网页调试与辅助接口调用的工具,具有界面简洁清晰、操作方便快捷的特性,可以处理用户发送的HTTP请求,例如:GET,PUT、POST,DELETE等,支持用户修改HTTP请求中的参数并返回响应数据。…...
Java面试(2025)—— Spring MVC
什么是Spring MVC Spring MVC 是 Spring 框架的一个 基于 Java 的 Web 开发模块,它实现了 MVC(Model-View-Controller)架构模式,用于构建灵活、松耦合的 Web 应用程序。 它是 Spring 生态的核心组件之一,通过简化 HTT…...
如何测试雷达与相机是否时间同步?
在多传感器融合系统中,相机与雷达的协同感知已成为环境理解的关键。相机通过捕捉纹理信息识别物体类别,而雷达利用激光或毫米波实现全天候精确测距。两者的数据融合既能避免单一传感器缺陷(如相机受光照影响、雷达缺乏语义信息)&a…...
Redis基本安装和部署
环境: linux docker 安装: sudo apt install -y redis-server运行: 后台模式:redis-server & , 前台模式:redis-server , 用配置文件运行redis: sudo redis-server /etc/redis/redis.conf , /etc/redis/redis.co…...
数据分析与产品、运营、市场之间如何有效对齐
数据分析的重要性在于它能够将海量的原始信息转化为可操作的洞察。以产品开发为例,通过用户行为数据的分析,产品经理可以清晰了解哪些功能被频繁使用,哪些设计导致用户流失,从而优化迭代方向。运营团队则依靠数据分析来监控供应链效率、预测需求波动,甚至通过实时数据调整…...
Pytorch分布式训练(DDP)(记录)
为什么要分布式训练? 随着深度学习模型参数量和数据量不断增大,单卡显存和计算能力有限,单机单卡训练难以满足大模型/大数据集训练需求,因此我们需要: 单机多卡并行:利用一台机器上多张 GPU 加速训练。 …...
爆肝整理!Stable Diffusion的完全使用手册(二)
继续介绍Stable Diffusion的文生图界面功能。 往期文章详见: 爆肝整理!Stable Diffusion的完全使用手册(一) 下面接着对SD的文生图界面的进行详细的介绍。本期介绍文生图界面的截图2,主要包含生成模块下的采用方法、调度类型、迭…...
Redis 键管理
Redis 键管理 以下从键重命名、随机返回键、键过期机制和键迁移四个维度展开详细说明,结合 Redis 核心命令与底层逻辑进行深入分析: 一、键重命名 1. RENAME 与 RENAMENX **RENAME key newkey**: 功能:强制重命名…...
OpenCV day5
函数内容接上文:OpenCV day4-CSDN博客 目录 9.cv2.adaptiveThreshold(): 10.cv2.split(): 11.cv2.merge(): 12.cv2.add(): 13.cv2.subtract(): 14.cv2.multiply(): 15.cv2.divide(): 1…...
基于Spring Boot+微信小程序的智慧农蔬微团购平台-项目分享
基于Spring Boot微信小程序的智慧农蔬微团购平台-项目分享 项目介绍项目摘要目录系统功能图管理员E-R图用户E-R图项目预览登录页面商品管理统计分析用户地址添加 最后 项目介绍 使用者:管理员、用户 开发技术:MySQLSpringBoot微信小程序 项目摘要 随着…...
WPF的发展历程
文章目录 WPF的发展历程引言起源与背景(2001-2006)从Avalon到WPF设计目标与创新理念 WPF核心技术特点与架构基础架构与渲染模型关键技术特点MVVM架构模式 WPF在现代Windows开发中的地位与前景当前市场定位与其他微软UI技术的关系未来发展前景 社区贡献与…...
Franka机器人ROS 2来袭:解锁机器人多元应用新可能
前言: 在机器人技术蓬勃发展的当下,每一次创新都可能为行业带来新的变革。2025年3月12日,Franka Robotics发布的Franka ROS 2软件包首次版本0.1.0,将著名的franka_ros软件包引入当前的ROS 2 LTS Humble Hawksbill,这一…...
树莓派5+Vosk+python实现语音识别
简介 Vosk是语音识别开源框架,支持二十种语言 - 中文,英语,印度英语,德语,法语,西班牙语,葡萄牙语,俄语,土耳其语,越南语,意大利语,荷…...
系统分析师知识点:访问控制模型OBAC、RBAC、TBAC与ABAC的对比与应用
在信息安全领域,访问控制是确保数据和资源安全的关键技术。随着信息系统复杂度的提高,访问控制技术也在不断演进,从早期简单的访问控制列表(ACL)发展到如今多种精细化的控制模型。本文将深入剖析四种主流的访问控制模型:基于对象的…...
Golang errors 包快速上手
文章目录 1.变量2.类型3.函数3.1 New3.2 Is简介函数签名核心功能示例代码使用场景注意事项小结 3.3 As简介函数签名核心功能示例代码使用场景注意事项小结 3.4 Unwrap简介函数签名核心功能使用示例使用场景注意事项小结 3.5 Join简介函数签名核心功能使用场景注意事项小结 4.小…...
数据结构——顺序表(C语言实现)
1.顺序表的概述 1.1 顺序表的概念及结构 在了解顺序表之前,我们要先知道线性表的概念,线性表,顾名思义,就是一个线性的且具有n个相同类型的数据元素的有限序列,常见的线性表有顺序表、链表、栈、队列、字符串等等。线…...
Qt Multimedia 库总结
Qt Multimedia 库总结 Qt Multimedia 库是 Qt 框架中用于处理多媒体内容的模块,支持音频、视频、摄像头和录音功能。它为开发者提供了跨平台的 API,适用于桌面、移动和嵌入式设备。本文将从入门到精通,逐步解析 Qt Multimedia 的核心功能、使…...
STP原理与配置以及广播风暴实验STP实验
学习目标 环路引起的问题 掌握STP的工作原理 掌握STP的基本配置 STP的配置 环路引起的问题 一、广播风暴(Broadcast Storm) 问题原理: 交换机对广播帧(如 ARP 请求、DHCP 发现报文)的处理方式是洪泛࿰…...
网络不可达network unreachable问题解决过程
问题:访问一个环境中的路由器172.16.1.1,发现ssh无法访问,ping发现回网络不可达 C:\Windows\System32>ping 172.16.1.1 正在 Ping 172.16.1.1 具有 32 字节的数据: 来自 172.16.81.1 的回复: 无法访问目标网。 来自 172.16.81.1 的回复:…...
力扣经典拓扑排序
207. 课程表(Course Schedule) 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。先修课程按数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] ,表…...
