CentOS上部署SpringBoot与PostgreSQL全流程实战
1. 为什么选CentOS PostgreSQL这套组合来跑SpringBoot很多刚接触服务端部署的朋友第一反应是买台服务器、装个Java、把jar包一扔就完事。真到线上跑起来才发现数据库连不上、端口访问不了、重启之后服务没了各种问题一个接一个。我自己第一次在云服务器上部署SpringBoot项目时光是PostgreSQL的远程访问就折腾了大半天最后发现是配置文件的监听地址没改对。所以这篇内容我想把从零开始在CentOS上部署一个SpringBoot项目的完整链路讲清楚包括JDK安装、PostgreSQL部署、端口远程访问设置这几个核心环节每一步都说明白为什么要这么做以及实际踩过的坑。先说说为什么是CentOS。CentOS在服务器领域的地位不用多讲稳定、生态成熟、社区资料多很多企业的生产环境至今仍然跑着CentOS 7.x。虽然现在CentOS Stream的定位有所变化但大量云服务器镜像依然以CentOS为基础短期内不会消失。对于学习和中小型项目部署来说CentOS的上手成本低yum包管理用起来也顺手。再说PostgreSQL。相比MySQLPostgreSQL在复杂查询、JSON字段支持、事务完整性方面更强而且开源协议宽松越来越多的项目选它作为主数据库。SpringBoot对PostgreSQL的支持也很成熟只需要引入对应的驱动依赖配置好连接信息就能用。但PostgreSQL默认的安装配置偏保守远程访问默认是关闭的这也是很多人部署时最容易卡住的地方。这套组合适合谁如果你手里有一个SpringBoot项目想部署到云服务器上让外部能访问或者你正在学习服务端部署流程那这篇内容基本可以照着走一遍。不需要你之前有运维经验但需要你会基本的Linux命令操作比如cd、ls、vi这些。注意以下操作假设你已经在云平台上购买了一台CentOS系统的服务器实例并且能通过SSH登录。服务器配置建议至少2核4GPostgreSQL和Java应用同时跑起来对内存有一定要求。2. 登录服务器后的第一轮环境摸底2.1 确认系统版本和架构在动手装任何东西之前先摸清楚这台机器的底细。不同版本的CentOS在包管理和服务管理命令上有差异CentOS 7用的是systemctlCentOS 6用的是service搞混了会浪费很多时间。cat /etc/centos-release uname -m第一条命令看系统版本第二条看CPU架构。输出如果是x86_64说明是64位系统后面下载JDK和PostgreSQL都要选对应的64位版本。如果是aarch64那就是ARM架构现在很多云厂商推出了ARM实例价格更便宜但软件包要选ARM版本不能搞错。2.2 检查是否已预装Java和数据库有些云服务器的镜像里会预装OpenJDK或者MariaDB如果你不检查直接装可能会出现版本冲突。java -version psql --version rpm -qa | grep -i jdk rpm -qa | grep -i postgres如果java -version能输出版本号说明系统里已经有Java了。这时候你要判断这个Java版本是否满足你的SpringBoot项目要求。比如你的项目用的是SpringBoot 3.x那至少需要JDK 17如果用的是SpringBoot 2.xJDK 8或11都可以。版本不匹配的话要么换JDK要么调整项目编译版本。2.3 更新系统包并安装常用工具在正式安装之前先把系统的包索引更新一下顺便装几个后面会用到的工具。yum update -y yum install -y wget vim net-tools lsofwget用来下载文件vim用来编辑配置文件net-tools里有netstat命令可以看端口占用lsof可以查进程打开了哪些文件或端口。这几个工具在后面排查问题时非常有用建议一开始就装上。实操心得yum update在刚创建的服务器上可能要跑几分钟取决于更新包的数量。如果服务器在国内建议先配置好yum源加速否则下载速度可能很慢。具体怎么换源这里不展开各大云厂商的文档里都有说明。3. 在CentOS上安装和配置JDK3.1 选择哪个JDK版本和发行版Java的发行版有很多Oracle JDK、OpenJDK、Amazon Corretto、Azul Zulu、Eclipse Temurin等等。对于服务器部署来说我一般推荐用OpenJDK或者Eclipse Temurin原因是免费、开源、更新及时而且通过yum就能直接安装省去手动配置环境变量的麻烦。版本选择上看你的SpringBoot项目用什么版本SpringBoot版本推荐JDK版本说明2.7.x及以下JDK 8 或 11JDK 8最稳定资料最多3.0.x - 3.1.xJDK 17SpringBoot 3最低要求JDK 173.2.x及以上JDK 17 或 21JDK 21是LTS版本性能更好如果你不确定项目用哪个版本打开项目根目录的pom.xml或build.gradle看spring-boot-starter-parent的版本号就知道了。3.2 通过yum安装OpenJDK以JDK 17为例在CentOS 7上安装命令如下yum install -y java-17-openjdk java-17-openjdk-develjava-17-openjdk是运行时环境java-17-openjdk-devel是开发工具包包含javac等编译工具。虽然服务器上只跑jar包不需要编译但有些工具和脚本会依赖devel包里的内容建议一起装上。安装完成后验证java -version javac -version如果输出类似openjdk version 17.0.x的信息说明安装成功。这时候不需要手动配置JAVA_HOME环境变量因为yum安装的OpenJDK会自动在/usr/lib/jvm/下创建目录并且java命令已经加入了系统PATH。3.3 手动配置JAVA_HOME的场景有些应用或脚本会依赖JAVA_HOME环境变量比如Tomcat的启动脚本、Maven Wrapper等。虽然yum安装的JDK不配置也能跑但为了保险起见建议还是配上。先找到JDK的安装路径ls /usr/lib/jvm/你会看到类似java-17-openjdk-17.0.x.x-x.el7.x86_64的目录。然后编辑/etc/profile文件vim /etc/profile在文件末尾添加export JAVA_HOME/usr/lib/jvm/java-17-openjdk-17.0.x.x-x.el7.x86_64 export PATH$JAVA_HOME/bin:$PATH保存后执行source /etc/profile echo $JAVA_HOME能正确输出路径就说明配置生效了。踩坑提醒/etc/profile的修改只对登录shell生效如果你是用nohup或systemd启动Java应用可能读不到这个文件里的环境变量。更稳妥的做法是在启动脚本里显式指定JAVA_HOME或者在/etc/environment里也配一份。4. PostgreSQL的安装与初始化配置4.1 通过yum安装PostgreSQLCentOS 7自带的yum源里PostgreSQL版本比较老通常是9.2版本。现在主流项目至少用12以上所以需要先添加PostgreSQL官方的yum源。yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm添加完源之后安装PostgreSQL 15yum install -y postgresql15-server postgresql15-contribpostgresql15-server是数据库服务端postgresql15-contrib包含一些额外的扩展和工具比如pg_stat_statements性能分析插件建议一起装。4.2 初始化数据库集群安装完成后数据库还没有初始化需要执行初始化命令/usr/pgsql-15/bin/postgresql-15-setup initdb这个命令会创建数据目录/var/lib/pgsql/15/data/并生成初始的配置文件。初始化完成后设置开机自启并启动服务systemctl enable postgresql-15 systemctl start postgresql-15 systemctl status postgresql-15看到active (running)就说明数据库跑起来了。4.3 创建业务数据库和用户PostgreSQL安装后会默认创建一个名为postgres的超级用户和一个同名的数据库。直接用超级用户跑业务不安全应该为你的SpringBoot项目单独创建数据库和用户。切换到postgres用户su - postgres psql进入psql命令行后执行以下SQLCREATE USER myapp WITH PASSWORD YourStrongPassword123; CREATE DATABASE myapp_db OWNER myapp; GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp; \q这里创建了一个名为myapp的用户密码是YourStrongPassword123数据库叫myapp_db所有者是myapp。密码建议用大小写字母加数字的组合不要用纯数字或简单单词。实操心得PostgreSQL的密码认证方式默认是ident或peer本地连接不需要密码。但SpringBoot通过TCP连接时需要改成md5或scram-sha-256认证。这个在下一节会详细说。5. 打通PostgreSQL的远程访问链路5.1 修改postgresql.conf的监听地址PostgreSQL默认只监听localhost也就是127.0.0.1。这意味着只有本机的应用能连上数据库外部机器包括你本地的开发机都连不上。要让SpringBoot应用能连上如果应用和数据库在同一台服务器上其实监听localhost就够了。但很多时候我们希望能从本地用Navicat或DBeaver连上去调试这就需要开放远程访问。编辑配置文件vim /var/lib/pgsql/15/data/postgresql.conf找到listen_addresses这一行把前面的注释去掉改成listen_addresses **表示监听所有网卡地址。如果你只想监听内网IP也可以写成具体的IP地址比如listen_addresses 10.0.0.5。生产环境建议只监听内网地址不要暴露到公网。5.2 配置pg_hba.conf的认证规则pg_hba.conf是PostgreSQL的客户端认证配置文件决定了哪些IP能以什么方式连接哪些数据库。vim /var/lib/pgsql/15/data/pg_hba.conf在文件末尾添加一行host all all 0.0.0.0/0 scram-sha-256这行的意思是允许所有IP0.0.0.0/0以scram-sha-256加密方式连接所有数据库。scram-sha-256比md5更安全PostgreSQL 10以上都支持。如果你只想允许特定IP段访问比如只允许公司内网可以写成host all all 192.168.1.0/24 scram-sha-256安全提醒0.0.0.0/0意味着任何IP都能尝试连接虽然还需要密码但风险仍然存在。生产环境务必限制来源IP或者通过云平台的安全组做二次限制。5.3 重启服务并验证远程连接配置改完后需要重启PostgreSQLsystemctl restart postgresql-15然后在云平台的安全组里放行PostgreSQL的默认端口5432。注意安全组规则要同时配置入方向和出方向入方向允许你的IP访问5432端口。验证方式有两种第一种在服务器上用psql命令连接psql -h 127.0.0.1 -U myapp -d myapp_db第二种在你本地的数据库客户端工具里新建一个PostgreSQL连接主机填服务器的公网IP端口5432用户名myapp密码填你设置的密码。如果能连上并看到myapp_db数据库说明远程访问配置成功。5.4 端口不通时的排查思路如果连不上按以下顺序排查确认PostgreSQL服务是否在运行systemctl status postgresql-15确认端口是否在监听netstat -tlnp | grep 5432确认防火墙是否放行firewall-cmd --list-all如果没有放行执行firewall-cmd --add-port5432/tcp --permanent firewall-cmd --reload确认云平台安全组是否放行5432端口确认pg_hba.conf里的规则是否正确改完后是否重启了服务这五步走下来基本上能定位到问题所在。我遇到最多的情况是安全组没放行其次是pg_hba.conf改完忘了重启。6. SpringBoot项目的打包与服务器部署6.1 本地打包注意事项在本地开发机上用Maven或Gradle打包成可执行的jar文件mvn clean package -DskipTests-DskipTests跳过测试可以加快打包速度但正式发布前建议还是跑一遍测试。打包完成后在target/目录下会生成一个xxx.jar文件。打包时要注意application.properties或application.yml里的数据库配置。本地开发时可能连的是localhost:5432部署到服务器后要改成实际的数据库地址。有两种做法一种是在打包前就把配置文件改成服务器地址另一种是打包时用默认配置启动时通过命令行参数覆盖。推荐第二种更灵活java -jar myapp.jar --spring.datasource.urljdbc:postgresql://127.0.0.1:5432/myapp_db --spring.datasource.usernamemyapp --spring.datasource.passwordYourStrongPassword1236.2 上传jar包到服务器用scp命令把jar包传到服务器scp target/myapp.jar root你的服务器IP:/opt/myapp/如果服务器上还没有/opt/myapp/目录先创建mkdir -p /opt/myapp/opt目录通常用来存放第三方应用程序放在这里比较规范。6.3 用nohup启动并验证最简单的启动方式是用nohupcd /opt/myapp nohup java -jar myapp.jar app.log 21 nohup让进程在终端关闭后继续运行 app.log 21把标准输出和错误输出都重定向到日志文件让命令在后台执行。启动后查看日志tail -f app.log看到SpringBoot的启动banner和Started MyApplication in x.x seconds就说明启动成功了。验证接口是否可访问curl http://127.0.0.1:8080/your-api-path如果返回了预期结果说明应用正常运行。然后在云平台安全组里放行8080端口就可以从外部访问了。6.4 用systemd管理服务实现开机自启nohup的方式虽然简单但服务器重启后应用不会自动启动而且进程管理不方便。更好的做法是用systemd来管理。创建服务文件vim /etc/systemd/system/myapp.service内容如下[Unit] DescriptionMy SpringBoot Application Afternetwork.target postgresql-15.service [Service] Typesimple Userroot WorkingDirectory/opt/myapp ExecStart/usr/bin/java -jar /opt/myapp/myapp.jar --spring.datasource.urljdbc:postgresql://127.0.0.1:5432/myapp_db --spring.datasource.usernamemyapp --spring.datasource.passwordYourStrongPassword123 Restarton-failure RestartSec10 [Install] WantedBymulti-user.target几个关键点说明Afternetwork.target postgresql-15.service表示网络和数据库启动后再启动应用Restarton-failure表示进程异常退出时自动重启RestartSec10表示重启前等待10秒ExecStart里的Java路径要写绝对路径可以用which java查看保存后执行systemctl daemon-reload systemctl enable myapp systemctl start myapp systemctl status myapp这样应用就会开机自启而且可以用systemctl restart myapp来重启用journalctl -u myapp -f查看日志管理起来方便很多。7. 部署完成后容易忽略的几个细节7.1 时区问题导致日志时间不对CentOS默认可能是UTC时区导致应用日志的时间和你本地时间差8小时。检查时区timedatectl如果显示Time zone: UTC改成Asia/Shanghaitimedatectl set-timezone Asia/Shanghai改完后重启应用日志时间就对了。这个问题在排查线上问题时特别重要时间对不上会导致你分析日志时产生误判。7.2 JVM内存参数没有限制默认情况下JVM会根据服务器物理内存自动设置堆大小。如果服务器上还跑了PostgreSQL和其他服务JVM可能会占用过多内存导致系统不稳定。建议在启动参数里显式限制java -Xms512m -Xmx1024m -jar myapp.jar-Xms是初始堆大小-Xmx是最大堆大小。具体设多少取决于你的服务器配置和应用负载。2核4G的服务器给JVM分配1G到1.5G比较合适留足够内存给数据库和系统。7.3 日志文件没有轮转导致磁盘写满SpringBoot默认的日志配置不会自动清理旧日志时间长了app.log可能涨到几个G把磁盘写满。解决方案有两种一种是在application.properties里配置日志轮转logging.file.max-size100MB logging.file.max-history30另一种是用系统的logrotate工具来管理。我个人更推荐第一种配置简单不用额外维护。7.4 数据库连接池配置不合理SpringBoot默认用的HikariCP连接池默认最大连接数是10。对于小型项目够用但如果并发稍微高一点可能会出现连接等待。可以在配置文件里调整spring.datasource.hikari.maximum-pool-size20 spring.datasource.hikari.minimum-idle5 spring.datasource.hikari.connection-timeout30000同时要注意PostgreSQL的max_connections参数默认是100。如果应用连接池设得太大加上其他连接可能会超过数据库的限制。一般来说应用连接池的最大连接数不要超过数据库max_connections的80%。8. 我在这套流程里踩过的几个真实坑第一个坑是PostgreSQL的pg_hba.conf改完后没有重启服务。当时改完配置直接用客户端连一直报Connection refused查了半天以为是安全组问题最后发现是忘了systemctl restart postgresql-15。PostgreSQL的配置文件修改后必须重启或reload才能生效这一点和MySQL不同MySQL有些参数可以动态修改。第二个坑是JDK版本和SpringBoot版本不匹配。有一次帮朋友部署一个SpringBoot 3的项目服务器上装的是JDK 11启动直接报UnsupportedClassVersionError。SpringBoot 3编译出来的class文件版本是61对应JDK 17用JDK 11跑不了。所以部署前一定要确认版本对应关系。第三个坑是云平台安全组的出方向规则。很多人只配置了入方向允许访问8080但忽略了出方向。如果出方向默认是拒绝所有服务器上的应用可能无法访问外部资源比如调用第三方API。虽然大多数云平台出方向默认是允许的但有些安全策略严格的环境需要手动配置。第四个坑是nohup启动的应用在SSH断开后偶尔会挂掉。虽然nohup理论上能让进程忽略挂断信号但如果服务器资源紧张或者遇到OOM进程还是会被杀掉。后来我全部改用systemd管理稳定性好很多而且能自动重启。第五个坑是数据库密码里有特殊字符导致连接失败。有一次设置的密码里包含符号在JDBC URL里没有转义导致解析出错。如果密码里有特殊字符要么换一个简单点的密码要么在URL里做URL编码。最省事的做法是密码只用大小写字母和数字。这套部署流程看起来步骤不少但真正走一遍下来熟练之后半小时内能搞定。关键是要理解每一步在做什么而不是机械地复制命令。比如为什么要改listen_addresses为什么要配置pg_hba.conf为什么要用systemd而不是nohup搞清楚了这些遇到问题才能自己排查。

相关新闻

HDFS Delegation Token失效导致文件不可见的精准诊断与修复

HDFS Delegation Token失效导致文件不可见的精准诊断与修复

1. 项目概述:这不是数据“删除”,而是授权链断裂导致的元数据失联HDFS里突然发现某些目录或文件“不见了”,用hdfs dfs -ls /path查不到,但hdfs fsck /path -files -blocks却能扫出大量“MISSING”块,且这些块在DataNo…

2026/10/18 13:12:39 阅读更多 →
如何快速上手InternVideo2-Stage1-1B-224p-f8-SthSth:从权重下载到视频推理的5步完整教程

如何快速上手InternVideo2-Stage1-1B-224p-f8-SthSth:从权重下载到视频推理的5步完整教程

【免费下载链接】InternVideo2-Stage1-1B-224p-f8-SthSth 项目地址: https://ai.gitcode.com/OpenGVLab/InternVideo2-Stage1-1B-224p-f8-SthSth 点击查看 免费下载 🎬 InternVideo2-Stage1-1B-224p-f8-SthSth 是 InternVideo2 视频基础模型的官方 Stag…

2026/10/18 13:12:43 阅读更多 →
如何调用GLiNER2.5-Decide对fast-decisions做分类推理:候选标签原样传入的完整教程

如何调用GLiNER2.5-Decide对fast-decisions做分类推理:候选标签原样传入的完整教程

【免费下载链接】fast-decisions 项目地址: https://ai.gitcode.com/hf_mirrors/fastino/fast-decisions 点击查看 免费下载 fast-decisions 是专为 GLiNER2.5-Decide 打造的分类决策数据集:17 个业务域、每域一个 JSONL 文件、共 1,700 条样本。每一行…

2026/10/18 13:12:39 阅读更多 →

最新新闻

pH敏感型IgG标记试剂:从抗体标记设计到活细胞内吞追踪的实战指南

pH敏感型IgG标记试剂:从抗体标记设计到活细胞内吞追踪的实战指南

做这行做久了会发现,抗体标记这件事,看着是"把荧光染料接到IgG上"这么一步操作,真正拉开差距的,全在细节里。普通标记试剂只能告诉你抗体在哪里,而pH敏感型IgG标记试剂能告诉你抗体到了什么环境、经历了什么…

2026/10/18 13:11:50 阅读更多 →
三个线程按序打印:信号量闸门模型与Java/C++/Python实现

三个线程按序打印:信号量闸门模型与Java/C++/Python实现

1. 三个线程按序打印,到底在考什么1.1 题目描述与表面难点这道题我先后在几个刷题平台和多轮面试复盘里见过,算是多线程入门必刷的经典题目。题目描述很短:有三个线程,分别调用同一个对象上的三个方法,每个方法内部会打…

2026/10/18 13:11:50 阅读更多 →
微信爬虫实战:公众号历史文章与阅读点赞评论抓取全链路

微信爬虫实战:公众号历史文章与阅读点赞评论抓取全链路

简介:这是一份基于 Node.js 的微信爬虫项目源码,面向需要批量采集公众号数据的开发者与数据分析人员,通过 AnyProxy 中间人代理原理抓取微信文章正文、阅读量、点赞量、在看数及评论等信息,并支持获取公众号历史文章链接。项目已适…

2026/10/18 13:11:50 阅读更多 →
HTML5移动端支付金额输入:自绘键盘与精度处理实战

HTML5移动端支付金额输入:自绘键盘与精度处理实战

简介:这份资源提供了一套可直接运行的HTML5微信支付页面键盘输入金额代码,面向移动端前端开发者、H5页面制作人员以及需要实现支付金额输入交互的初学者与进阶者。它解决的是在微信内置浏览器中,如何用自定义数字键盘完成金额输入、并配合支付…

2026/10/18 13:11:50 阅读更多 →
RTSP拉流YOLO检测:OpenCV实时视频分析与避坑指南

RTSP拉流YOLO检测:OpenCV实时视频分析与避坑指南

简介:这是一份面向视频流实时检测场景的YOLOOpenCVPython项目资源,核心解决通过RTSP协议对网络摄像头或视频流进行目标识别的问题,适合有一定Python基础的计算机视觉开发者参考。包内共14个文件,以Python脚本、YOLO模型配置、说明…

2026/10/18 13:11:50 阅读更多 →
C语言数据结构入门:从栈队列到链表的工程实践指南

C语言数据结构入门:从栈队列到链表的工程实践指南

简介:本资源是面向C语言初学者与算法进阶学习者的数据结构与算法实践合集,聚焦线性表、栈、队列、树、图、查找、排序等核心模块的C语言原生实现,覆盖高校课程教学与工程实践双重需求。压缩包共558个文件,以80个.c源码文件为主体&…

2026/10/18 13:10:49 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →