Spring boot对接安全证书

Let’s Encrypt 证书

macOS

在 macOS 上可以直接使用 Homebrew 安装 Certbot,并按照以下步骤生成 Let’s Encrypt 证书并配置到 Spring Boot 项目中。

1. 安装 Certbot

在 macOS 上使用 Homebrew 安装 Certbot:

brew install certbot

2. 使用 Certbot 生成 SSL 证书

生成证书前,请确保 macOS 的防火墙允许 Certbot 的临时服务器监听 80 端口(Certbot 使用此端口验证域名归属)。运行以下命令生成证书:

sudo certbot certonly --standalone -d yourdomain.com

Certbot 会自动生成证书并将其保存在 /etc/letsencrypt/live/yourdomain.com/ 中,其中包含以下文件:

  • fullchain.pem: 证书文件
  • privkey.pem: 私钥文件

3. 将 PEM 证书转换为 PKCS12 格式

Spring Boot 不能直接使用 PEM 文件格式,因此需要将它们转换为 PKCS12 格式:

sudo openssl pkcs12 -export \
  -in /etc/letsencrypt/live/yourdomain.com/fullchain.pem \
  -inkey /etc/letsencrypt/live/yourdomain.com/privkey.pem \
  -out /etc/letsencrypt/live/yourdomain.com/keystore.p12 \
  -name tomcat \
  -CAfile /etc/letsencrypt/live/yourdomain.com/chain.pem \
  -caname root

在此过程中,系统会要求设置 PKCS12 文件的密码,这个密码会在 Spring Boot 配置中使用。

4. 配置 Spring Boot 使用 HTTPS

application.propertiesapplication.yml 中配置 Spring Boot 使用生成的 keystore.p12 文件:

application.properties
server.port=443
server.ssl.enabled=true
server.ssl.key-store=/etc/letsencrypt/live/yourdomain.com/keystore.p12
server.ssl.key-store-password=your_keystore_password   # PKCS12 文件的密码
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat

5. 设置 HTTP 到 HTTPS 的重定向(可选)

可以将 HTTP 请求重定向到 HTTPS,以确保所有流量使用加密通道。以下是配置 HTTP 到 HTTPS 重定向的示例代码:

import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.springframework.boot.web.embedded.jetty.JettyServerCustomizer;
import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JettyHttpsRedirectConfig {

    @Bean
    public JettyServletWebServerFactory jettyServletWebServerFactory() {
        JettyServletWebServerFactory factory = new JettyServletWebServerFactory();
        factory.addServerCustomizers(server -> {
            // 设置 HTTP 连接器
            ServerConnector httpConnector = new ServerConnector(server);
            httpConnector.setPort(80);  // HTTP 端口
            server.addConnector(httpConnector);

            // 设置 HTTPS 连接器
            SslContextFactory.Server sslContextFactory = new SslContextFactory.Server();
            sslContextFactory.setKeyStorePath("/etc/letsencrypt/live/yourdomain.com/keystore.p12");
            sslContextFactory.setKeyStorePassword("your_keystore_password");

            ServerConnector httpsConnector = new ServerConnector(server, sslContextFactory);
            httpsConnector.setPort(443);  // HTTPS 端口
            server.addConnector(httpsConnector);
        });
        return factory;
    }
}

6. 自动续期

Let’s Encrypt 证书有效期为 90 天,可以通过以下命令配置自动续期:

sudo certbot renew --dry-run

将此命令添加到 crontab 中,定期自动续期:

crontab -e

添加如下行(每天凌晨尝试续期一次):

0 3 * * * /usr/local/bin/certbot renew --quiet

这样,每当证书临近到期,Certbot 会自动续订证书。

Centos

在 CentOS 8 上使用 Let’s Encrypt 证书的流程通常包括以下步骤:


1. 安装 Certbot

Certbot 是用于获取 Let’s Encrypt 证书的工具。

安装 Certbot:
  1. 更新系统包:
# 注意 可以跳过 dnf update,直接安装 Certbot

# 直接更新 Certbot 及其相关依赖,而不是更新整个系统
sudo dnf install --refresh certbot python3-certbot-nginx

# 更新安全补丁
sudo dnf update --security -y

# 如果 Certbot 依赖的包需要升级,可以单独指定相关包:
sudo dnf update -y certbot python3-certbot python3-requests

# --------------------------------------------------------- #
# 更新整个系统
sudo dnf update -y
  1. 启用 EPEL 存储库:
# 可以不开启
# EPEL 是由 Fedora 项目维护的一个额外包存储库,提供稳定的开源软件包,用于 RHEL 系列操作系统(包括 CentOS、Rocky Linux、AlmaLinux 等)。
sudo dnf install epel-release -y
# 如果遇到下面的报错,则需要启用 EPEL
Package python3-requests available, but not installed.
No match for argument: python3-requests
Error: No packages marked for upgrade.
  1. 安装 Certbot 和相关插件: 如果您使用的是 Apache:
sudo dnf install certbot python3-certbot-apache -y

如果您使用的是 Nginx:

sudo dnf install certbot python3-certbot-nginx -y

2. 获取 SSL 证书

为域名申请证书:
  1. 停止 Apache/Nginx 服务(如果需要): 如果您计划使用 standalone 模式,请先停止 Web 服务器:
sudo systemctl stop httpd
sudo systemctl stop nginx
  1. 运行 Certbot:
    • 使用 Apache 插件:
sudo certbot --apache
- 使用 Nginx 插件:
sudo certbot --nginx
- 使用 Standalone 模式:
sudo certbot certonly --standalone -d example.com -d www.example.com

Certbot 将自动生成并安装 SSL 证书,并更新 Web 服务器配置。

  1. 验证证书: 您的证书将被保存在 /etc/letsencrypt/live/<your-domain>/
    • 主要文件:
      • fullchain.pem: 完整的证书链。
      • privkey.pem: 私钥。

如果无法绑定80端口,可以使用下面的方法申请证书

2.1 使用 DNS 验证(无需绑定 80 端口)

DNS 验证模式不需要开放任何端口,也无需提供 .well-known/acme-challenge 路径。这种方式尤其适合无法绑定 80 端口或使用动态域名的场景。

操作步骤:

  1. 运行 Certbot 命令
sudo certbot certonly --manual --preferred-challenges dns
  1. 按提示设置 DNS 记录: Certbot 会提供一段字符串,让你将其作为 _acme-challenge.<your-domain> 的 TXT 记录添加到域名的 DNS 配置中。配置方法见问题:DNS验证错误
  2. 完成验证后安装证书: 验证通过后,你会获得证书文件,可以直接配置到 Spring Boot。

3. 配置 Web 服务器

Certbot 的插件(如 --apache--nginx)会自动配置 HTTPS。如果您使用 Standalone 模式,则需要手动配置。

手动配置示例(以 Nginx 为例):

在 Nginx 配置文件中,添加以下内容:

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl;
  server_name example.com www.example.com;

  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

  location / {
    root /var/www/html;
    index index.html;
  }
}

重新加载 Nginx 配置:

sudo systemctl reload nginx
配置 Spring Boot 使用 HTTPS

配置方法见:macOS 第三段落(将 PEM 证书转换为 PKCS12 格式)


4. 设置自动续期

Let’s Encrypt 证书有效期为 90 天,Certbot 会自动续期。

测试自动续期:
sudo certbot renew --dry-run
配置自动续期:

Certbot 在安装时会自动创建续期任务。可以通过以下命令检查:

sudo systemctl list-timers

如果未创建,可以手动添加 cron 任务:

echo "0 0,12 * * * root certbot renew --quiet && systemctl reload nginx" | sudo tee -a /etc/crontab > /dev/null

5. 验证 HTTPS

通过浏览器访问 https://your-domain.com 验证 HTTPS 是否正常工作。


完成后,您的 CentOS 8 服务器将成功启用 Let’s Encrypt SSL 证书,提供安全的 HTTPS 服务。

自签名证书

使用自签名证书为 localhost 配置 HTTPS

如果你只是在本地开发环境中需要 HTTPS,你可以为 localhost 生成一个自签名证书。以下是生成并配置自签名证书的步骤:

1. 生成自签名证书

首先,使用 openssl 生成自签名证书和私钥。

在终端中运行以下命令:
# 生成私钥
openssl genpkey -algorithm RSA -out localhost.key

# 生成自签名证书
openssl req -new -x509 -key localhost.key -out localhost.crt -days 3650 -subj "/CN=localhost"

# 使用公网域名或ip
openssl req -x509 -new -nodes -key server.key -out server.crt -days 365 \
    -subj "/C=US/ST=California/L=San Francisco/O=My Company/OU=IT Department/CN=<公网 IP 或 域名>" \
    -extensions v3_req -config <(echo "[req]"; echo distinguished_name=req; echo "[v3_req]"; echo subjectAltName=DNS:<公网 IP 或 域名>)

这将生成以下两个文件:

  • localhost.key:私钥
  • localhost.crt:证书

2. 将证书和私钥转换为 PKCS12 格式

Spring Boot 需要使用 PKCS12 格式的证书,因此我们需要将 .crt.key 文件转换为 .p12 文件。

openssl pkcs12 -export -in localhost.crt -inkey localhost.key -out localhost.p12 -name tomcat

这将生成 localhost.p12 文件,你可以在 Spring Boot 中使用它。

3. 配置 Spring Boot 使用自签名证书

接下来,配置 Spring Boot 使用生成的自签名证书。打开 application.propertiesapplication.yml 并添加以下配置:

application.properties
server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:localhost.p12
server.ssl.key-store-password=your_password_here
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat

你可以将 localhost.p12 文件放置在 src/main/resources 目录下,或者指定文件的绝对路径。

4. 允许浏览器信任自签名证书(开发环境)

由于是自签名证书,浏览器会警告你不受信任。为了避免每次启动时都看到警告,你可以将证书添加到浏览器或操作系统的信任存储中。

将证书添加到 macOS 的信任存储
  1. 打开 Keychain Access(钥匙串访问)应用。
  2. 拖动 localhost.crt 文件到 Keychain Access 中。
  3. 在“系统”钥匙串中找到该证书,并双击它。
  4. 打开证书详情,展开“信任”设置,选择“始终信任”。
  5. 关闭并保存。

这样,浏览器就不会再显示警告了。

5. 访问本地 HTTPS 服务

在浏览器中,你可以通过 https://localhost:8443 访问你的服务。请注意,由于使用的是自签名证书,浏览器可能会提示“连接不安全”,你需要手动确认继续访问。

问题

访问服务器报错: Invalid SNI

STATUS:	400
MESSAGE:	Invalid SNI
常见原因
  1. 主机名错误
    • 发送请求时,SNI 的主机名和目标服务器不匹配。
    • 比如使用了 IP 地址而不是域名。
    • 例如:生成证书时使用的localhost,浏览器访问服务器时使用的是域名或公网ip
  2. 不支持 SNI 的客户端
    • 使用的 HTTP 客户端或库过旧,无法正确处理 SNI 信息。
  3. 服务器未正确配置
    • 服务器端未启用或未正确配置 SNI。
  4. SSL 协议版本问题
    • 客户端和服务器支持的 TLS/SSL 协议版本不兼容。
  5. 网络代理或负载均衡问题
    • 请求通过代理或负载均衡器时,代理未正确处理 SNI 信息。
  6. 错误的请求
    • 请求头中包含错误的或缺失的 Host 信息。

curl https失败

错误日志如下

curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
解决方案

1. 确认是否需要忽略证书验证

如果您只是测试或不关心安全性(例如在本地开发环境中),可以暂时忽略证书验证。

  • 使用 -k--insecure 参数:
curl -k https://example.com

注意:忽略证书验证是不安全的,仅适用于测试环境。不要在生产环境中使用。

示例

假设目标服务器为 https://my-local-server.com,自签名证书保存为 server-cert.pem

# 忽略证书验证(仅用于测试)
curl -k https://my-local-server.com

# 使用自签名证书
curl --cacert server-cert.pem https://my-local-server.com

# 全局信任自签名证书(Linux 示例)
sudo cp server-cert.pem /usr/local/share/ca-certificates/
sudo update-ca-certificates
curl https://my-local-server.com

回滚包更新

1. 确认当前的更新状态

查看哪些包已经被更新,哪些包仍未更新:

sudo dnf history
  • 这将显示最近的 dnf 操作历史。
  • 找到对应的更新操作的 ID(比如 ID 12)。

2. 回滚到上一个状态

dnf 提供了回滚功能,可以尝试还原到之前的状态:

sudo dnf history undo <ID>
  • <ID> 替换为之前更新操作的 ID。
  • 如果更新中途失败,可能需要手动修复依赖冲突或其他问题。

注意:有些包在更新过程中可能无法完全回滚,尤其是系统关键组件。


3. 强制降级包

如果某些关键包已经更新且无法正常工作,可以尝试手动降级:

sudo dnf downgrade <package-name>

例如,降级某个核心组件:

sudo dnf downgrade glibc

4. 使用快照恢复

如果您在更新前启用了文件系统快照(例如通过 BtrfsLVM),可以恢复到更新前的状态:

  1. 列出系统的快照:
sudo lvdisplay
  1. 恢复到更新前的快照:
sudo lvconvert --merge <snapshot_name>

注意:这种方法需要您提前配置了快照功能。


5. 排查问题包并修复

如果更新一半后出现问题,可以尝试修复依赖:

sudo dnf check
sudo dnf clean all
sudo dnf distro-sync
  • **dnf check**:检查已安装包的依赖关系是否一致。
  • **dnf distro-sync**:将系统包同步到当前发行版默认版本,可能降级不兼容的更新包。

6. 回滚失败的替代方法

如果无法直接回退,可以尝试手动重装某些关键包,或者:

  1. 重装系统核心包
sudo dnf reinstall <package-name>

例如:

sudo dnf reinstall kernel glibc systemd
  1. 恢复系统备份:如果有系统镜像或配置备份,可以恢复到更新前的状态。

7. 建议

  • 启用快照机制:在生产系统中,建议使用 Btrfs 或 LVM 配置文件系统快照,方便在类似情况下快速回滚。
  • 逐步更新:未来避免使用 sudo dnf update -y 一次性更新所有包,改为按需更新特定包,减少出错风险。

总结:使用 dnf history undo <ID> 是最直接的方式。如果无法解决问题,尝试使用快照恢复或重装关键包。

failovermethod

Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/CentOS-epel.repo; Configuration: OptionBinding with id “failovermethod” does not exist

这个错误是因为 yum 配置文件中的 failovermethod 选项已不再被 CentOS 8 或 RHEL 8 的 dnf 包管理器支持。要解决这个问题,可以手动修改相关配置文件。


解决办法

  1. 找到报错的配置文件 根据错误提示,问题出在 /etc/yum.repos.d/CentOS-epel.repo 文件中。
  2. 编辑配置文件 使用文本编辑器打开文件,例如:
sudo nano /etc/yum.repos.d/CentOS-epel.repo

或者:

sudo vi /etc/yum.repos.d/CentOS-epel.repo
  1. 删除 **failovermethod** 在文件中查找 failovermethod=priority,然后将整行删除。例如:
failovermethod=priority

删除这行即可。

  1. 保存并退出
    • 如果使用 nano,按 Ctrl + O 保存文件,然后按 Ctrl + X 退出。
    • 如果使用 vi,按 Esc 输入 :wq 保存并退出。
  2. 清理缓存并重试 清理 dnf 缓存:
sudo dnf clean all

再次尝试安装或更新:

sudo dnf update

批量处理多个存储库文件

如果有多个存储库文件可能包含 failovermethod 配置,可以使用以下命令快速删除:

sudo sed -i '/failovermethod/d' /etc/yum.repos.d/*.repo
  • 该命令会检查 /etc/yum.repos.d 目录下的所有 .repo 文件,并删除包含 failovermethod 的行。

验证

再次运行 dnf 命令,确认问题已解决:

sudo dnf repolist

默认镜像源问题

Errors during downloading metadata for repository ‘appstream’: - Curl error (6): Couldn’t resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock [Could not resolve host: mirrorlist.centos.org]

这个问题的根本原因是 CentOS 8 已于 2021 年停止维护,其默认镜像源(mirrorlist.centos.org)可能不可用。以下是解决办法:


1. 切换到 CentOS Vault 存储库

CentOS 提供了一个归档(Vault)镜像存储,用于保存旧版本的包。

替换默认的存储库配置
  1. 备份原有的存储库配置:
sudo mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/backup/
  1. 创建新的存储库配置:
sudo nano /etc/yum.repos.d/CentOS-Vault.repo
  1. 添加以下内容:
[BaseOS]
name=CentOS-8 - BaseOS
baseurl=http://vault.centos.org/8.5.2111/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[AppStream]
name=CentOS-8 - AppStream
baseurl=http://vault.centos.org/8.5.2111/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[extras]
name=CentOS-8 - Extras
baseurl=http://vault.centos.org/8.5.2111/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  1. 保存并退出文件。
  2. 清理缓存并生成新的元数据:
sudo dnf clean all
sudo dnf makecache
sudo dnf update

2. 检查 DNS 配置

如果仍然出现类似的网络错误,可能是 DNS 配置问题导致的。尝试以下步骤:

修改 DNS 设置
  1. 编辑 /etc/resolv.conf 文件:
sudo nano /etc/resolv.conf
  1. 添加可靠的 DNS 服务器:
nameserver 8.8.8.8
nameserver 8.8.4.4
  1. 保存并退出文件。
  2. 测试网络和域名解析:
ping 8.8.8.8
ping mirrorlist.centos.org

3. 迁移到其他版本或发行版

由于 CentOS 8 已停止维护,建议迁移到以下版本:

  • CentOS Stream:滚动发布版,官方推荐。
  • AlmaLinuxRocky Linux:CentOS 的稳定替代品。
迁移到 AlmaLinux
  1. 安装迁移工具:
sudo dnf install -y almalinux-deploy
  1. 运行迁移命令:
sudo almalinux-deploy
迁移到 Rocky Linux
  1. 安装迁移工具:
sudo dnf install -y rocky-release
  1. 运行迁移命令:
sudo rocky-upgrade

总结

如果只是短期需要继续使用 CentOS 8,可以切换到 Vault 存储库。如果需要长期支持,建议迁移到 AlmaLinux 或 Rocky Linux,以获得社区支持和定期更新。

DNS验证错误

报错: Detail: DNS problem: NXDOMAIN looking up TXT for _acme-challenge.your-domain.cn - check that a DNS record exists for this domain

这个报错表明你在使用 DNS 验证 的方式申请 SSL 证书时,Let’s Encrypt 的服务器无法找到 _acme-challenge.your-domain.cn 的 TXT 记录。这通常是因为 DNS 记录未正确添加或未生效。


解决方法

1. 确保正确添加了 TXT 记录
  1. 登录你的域名管理平台(如阿里云、腾讯云、Cloudflare)。
  2. 添加一个新的 TXT 记录:
    • 主机记录(或名称)_acme-challenge
    • 记录类型:TXT
    • 记录值:Certbot 提示生成的一段字符串(例如:ZSYwtkVIMbfDED30Aou6hXTk9TuepsWisHgTa8ATTBY)。
    • 生存时间(TTL):可以选择较短的值(如 1 分钟)以便快速生效。

2. 验证 TXT 记录是否生效

在添加记录后,使用以下命令检查 TXT 记录是否生效:

nslookup -q=txt _acme-challenge.your-domain.cn

或:

dig TXT _acme-challenge.your-domain.cn
  • 如果返回类似以下结果,表示记录生效:
_acme-challenge.your-domain.cn. 300 IN TXT "ZSYwtkVIMbfDED30Aou6hXTk9TuepsWisHgTa8ATTBY"
  • 如果没有返回结果,可能是:
    • DNS 配置未正确添加。
    • DNS 记录尚未完全生效(可能需要几分钟到几小时)。

3. 等待 DNS 生效

如果确认 DNS 配置无误,但仍报错,可能是因为记录还未传播到 Let’s Encrypt 的 DNS 服务器。
你可以稍等 10 分钟后再尝试重新运行 Certbot 命令。


4. 检查 DNS 服务器设置

确保你的域名解析使用的 DNS 服务器是正确的。可以通过以下方式检查:

whois your-domain.cn | grep "Name Server"

确保查询结果中的 DNS 服务器与你的域名管理平台一致。如果不一致,需要更新域名的 DNS 设置。


5. 避免常见错误
  • 主机记录误加域名:一些域名管理平台可能自动添加主域名。如果你手动输入 _acme-challenge.lonngs.cn,最终记录可能变成 _acme-challenge.your-domain.cn.your-domain.cn,导致无法生效。正确的主机记录应该是 _acme-challenge
  • 多个 TXT 记录冲突:如果同一域名下已经存在多个 _acme-challenge 的 TXT 记录,可能会导致验证失败。请删除其他无关的 TXT 记录。

6. 重新运行 Certbot

在确认 TXT 记录生效后,重新运行 Certbot:

sudo certbot certonly --manual --preferred-challenges dns

然后按照提示完成验证。


总结

  1. 确保 DNS TXT 记录正确配置。
  2. 检查 DNS 是否生效。
  3. 避免域名配置错误或冲突。
  4. 必要时等待 DNS 传播后再重试。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode热题100(79. 单词搜索)dfs回溯 c++

链接&#xff1a;79. 单词搜索 - 力扣&#xff08;LeetCode&#xff09; 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的…

迈向Z级计算:Cloud4Science范式加速科学发现进程

传统超级计算机作为科学计算的核心支柱&#xff0c;在推动技术进步方面发挥了不可替代的作用&#xff0c;但随着科学智能时代下需求的多样化和复杂化&#xff0c;其扩展性和能效的局限逐渐显现。 针对这一挑战&#xff0c; 微软亚洲研究院 的研究员提出了 Cloud4Science 的新范…

高阶数据结构之并查

并查集的概念 之前我们曾学过树&#xff0c;二叉树、二叉搜索树、红黑树、AVL树等&#xff0c;而并查集可以看做是这些树的集合&#xff0c;也就是森林&#xff0c;它也是一种树型结构&#xff0c;不过是顺序的树型结构&#xff0c;如果有学过堆的同学应该会很熟悉。 它的作用是…

全面解析 Node-RED:功能、Docker 部署与实战示例

言简意赅的讲解Node-RED解决的痛点 Node-RED 是一个基于流的编程工具&#xff0c;专为物联网&#xff08;IoT&#xff09;应用而设计。它通过可视化的编程界面&#xff0c;使开发者能够轻松地连接各种硬件设备、API 以及在线服务&#xff0c;构建复杂的应用流程。本文将详细介…

Diffusion Transformer(DiT)——将扩散过程中的U-Net换成ViT:近频繁用于视频生成与机器人动作预测(含清华PAD详解)

前言 本文最开始属于此文《视频生成Sora的全面解析&#xff1a;从AI绘画、ViT到ViViT、TECO、DiT、VDT、NaViT等》 但考虑到DiT除了广泛应用于视频生成领域中&#xff0c;在机器人动作预测也被运用的越来越多&#xff0c;加之DiT确实是一个比较大的创新&#xff0c;影响力大&…

MAC M4安装QT使用国内镜像源在线安装

MAC M4安装QT使用国内镜像源在线安装 一、下载安装包1. 访问[https://www.qt.io/](https://www.qt.io/)下载在线安装包2. 下载结果 二、创建QT账户&#xff0c;安装的时候需要三、安装1. 终端打开安装包2. 指定安装源3. 运行安装完的QT 一、下载安装包 1. 访问https://www.qt.…

No.1十六届蓝桥杯备战|第一个C++程序|cin和cout|命名空间

第一个C程序 基础程序 使用DevC5.4.0 写一个C程序 在屏幕上打印hello world #include <iostream> using namespace std;int main() {cout << "hello world" << endl;return 0; } 运行这个C程序 F9->编译 F10->运行 F11->编译运行 mai…

前端开发 -- 自动回复机器人【附完整源码】

一&#xff1a;效果展示 本项目实现了一个简单的网页聊天界面&#xff0c;用户可以在输入框中输入消息&#xff0c;并点击发送按钮或按下回车键来发送消息。机器人会根据用户发送的消息内容&#xff0c;通过关键字匹配来生成自动回复。 二&#xff1a;源代码分享 <!DOCTYP…

UNI-APP_i18n国际化引入

官方文档&#xff1a;https://uniapp.dcloud.net.cn/tutorial/i18n.html vue2中使用 1. 新建文件 locale/index.js import en from ./en.json import zhHans from ./zh-Hans.json import zhHant from ./zh-Hant.json const messages {en,zh-Hans: zhHans,zh-Hant: zhHant }…

【MySQL】第一弹----库的操作及数据类型

笔上得来终觉浅,绝知此事要躬行 &#x1f525; 个人主页&#xff1a;星云爱编程 &#x1f525; 所属专栏&#xff1a;MySQL &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 一、SQL 语句分类 DDL:数据定…

家用电器销售系统|Java|SSM|JSP|

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…

ChatGPT 与 AGI:人工智能的当下与未来走向全解析

在人工智能的浩瀚星空中&#xff0c;AGI&#xff08;通用人工智能&#xff09;无疑是那颗最为璀璨且备受瞩目的星辰。OpenAI 对 AGI 的定义为“在最具经济价值的任务中超越人类的高度自治系统”&#xff0c;并勾勒出其发展的五个阶段&#xff0c;当下我们大多处于以 ChatGPT 为…

28.<Spring博客系统⑤(部署的整个过程(CentOS))>

引入依赖 Spring-boot-maven-plugin 用maven进行打包的时候必须用到这个插件。看看自己pom.xml中有没有这个插件 并且看看配置正确不正常。 注&#xff1a;我们这个项目打的jar包在30MB左右。 <plugin><groupId>org.springframework.boot</groupId><artif…

win11 vs2022 opencv 4.10使用vs Image Watch插件实时可视化内存mat对象

这个本来是非开源工业软件HALCON的一个功能&#xff0c;方便提升图像识别开发效率。原以为opencv没有&#xff0c;需要通过进程间共享内存的方式去实现。 结果在官网帮助文档中发现已经提供了。 opencv 4.10帮助文档https://docs.opencv.org/4.10.0/index.htmlOpenCV Tutorial…

用Python操作字节流中的Excel工作簿

Python能够轻松地从字节流中加载文件&#xff0c;在不依赖于外部存储的情况下直接对其进行读取、修改等复杂操作&#xff0c;并最终将更改后的文档保存回字节串中。这种能力不仅极大地提高了数据处理的灵活性&#xff0c;还确保了数据的安全性和完整性&#xff0c;尤其是在网络…

uni-app微信小程序如何使用高德地图。通过经纬度获取所在城市,涉及到授权获取地理位置权限

高德地图官方是这样介绍的使用方法可以参考&#xff1a;入门指南-微信小程序插件 | 高德地图API 我再介绍一下我得具体应用。 1&#xff0c;首先要在申请高德地图开放平台得账号。然后在这个账号中申请一个应用。类型选择微信小程序。 我的应用 | 高德控制台 获取Key-创建工…

YOLOv5部署到web端(flask+js简单易懂)

文章目录 前言最终实现效果图后端实现 主界面检测函数检测结果显示 前端实现 主界面(index.html&#xff09;显示图片界面 总结 前言 最近&#xff0c;老板让写一个程序把yolov5检测模型部署到web端&#xff0c;在网页直接进行目标检测。经过1个星期的努力&#xff0c;终于实…

使用Locust对Redis进行负载测试

1.安装环境 安装redis brew install redis 开启redis服务 brew services start redis 停止redis服务 brew services stop redis 安装Python库 pip install locust redis 2.编写脚本 loadTest.py # codingutf-8 import json import random import time import redis …

C#-使用StbSharp库读写图片

一.StbSharp StbSharp是基于C/Stb图形处理库封装的C#接口,支持多种格式PNG/JPG等图片的处理. GitHub链接: GitHub - StbSharp/StbTrueTypeSharp: C# port of stb_truetype.hhttps://github.com/StbSharp/StbTrueTypeSharp二.使用StbSharp创建高度图 创建一张500*500的高度图PN…

单周期CPU电路设计

1.实验目的 本实验旨在让学生通过设计一个简单的单周期 CPU 电路&#xff0c;深入理解 RISC-V 指令集的子集功能实现&#xff0c;掌握数字电路设计与实现的基本流程&#xff0c;包括指令解析、部件组合、电路设计以及功能仿真等环节&#xff0c;同时培养verilog HDL编程能力和…