Tomcat部署War包实战指南:从环境配置到生产调优
1. 项目概述为什么Tomcat部署War包依然是核心技能如果你刚接触Java Web开发或者是从Spring Boot单体应用转向传统部署模式可能会觉得“把War包扔到Tomcat里”这件事有点老套。现在不都流行打Jar包、用内嵌容器一键启动吗确实Spring Boot的流行让很多开发者远离了手动部署War包的繁琐。但现实是在企业级开发、遗留系统维护、特定生产环境如客户现场部署、安全合规要求严格的内部网络甚至是某些微服务架构下的特定模块War包独立Tomcat的部署方式依然占据着不可替代的地位。我经历过不少项目客户的生产环境不允许连接外网部署介质必须是一个完整的、可离线验证的War包也遇到过需要将同一个应用部署到多个不同版本Tomcat容器中的兼容性测试场景。在这些情况下理解War包的结构、Tomcat的目录逻辑以及它们之间如何协同工作就不是“过时的知识”而是解决问题的基本功。War包是一个标准的Java Web应用程序归档文件它包含了Servlet、JSP、静态资源以及相关的库和配置文件。而Tomcat作为一个Servlet容器其核心工作就是加载、解析这个War包并提供一个运行时环境。这个过程看似简单但其中涉及到的路径、权限、配置、日志排查等细节任何一个环节出问题都可能导致应用无法启动。因此掌握Tomcat部署War包不仅仅是学会“复制粘贴”更是理解Java Web应用从代码到服务的完整生命周期。本文将以一个从业者的视角结合最常见的Windows环境为你拆解从环境准备、War包获取、部署操作到深度配置与排错的完整链路。我们会避开那些泛泛而谈的教程直接切入实际操作中你会遇到的关键选择和典型问题。2. 环境准备不仅仅是安装Tomcat那么简单很多人以为环境准备就是下载、解压、然后双击startup.bat。如果只是本地玩玩这样或许可行。但若想模拟生产环境或进行稳定测试以下几个细节必须提前处理好。2.1 JDK版本匹配兼容性的第一道坎Tomcat的运行依赖Java环境但并不是随便装个JDK就行。版本不匹配是启动失败的常见原因。Tomcat 9.x官方要求至少JDK 8兼容JDK 11、JDK 17需要较高版本如Tomcat 9.0.50。如果你用的是JDK 11或更高版本需要特别注意一些旧的Web应用可能使用了被移除的Java EE API如javax.activation这时你需要手动将对应的JAR包如javax.activation-api放入应用的WEB-INF/lib目录或Tomcat的lib目录。如何检查与设置在命令行输入java -version确认当前默认JDK版本。如果系统装有多个JDK需要为Tomcat指定。最可靠的方法不是改系统环境变量JAVA_HOME而是直接修改Tomcat的启动脚本。找到Tomcat根目录下的bin文件夹编辑setenv.bat如果没有就新建一个里面写入set JAVA_HOMEC:\Your\Path\To\JDK8 set JRE_HOME%JAVA_HOME%这样做的好处是隔离性强不影响系统其他Java应用。2.2 Tomcat目录结构解析知其所以然解压Tomcat后你会看到一堆文件夹。了解它们的作用能在出问题时快速定位。bin核心所在。startup.bat/startup.sh启动、shutdown.bat/shutdown.sh停止、catalina.bat核心脚本。注意直接双击startup.bat弹出的窗口一关Tomcat就停了。对于测试可以在这个窗口看日志对于后台运行需要将其安装为系统服务Windows或用nohupLinux。conf配置中心。server.xml主配置、web.xml全局Web应用描述、context.xml全局上下文配置、tomcat-users.xml用户角色配置用于管理后台。重要习惯修改任何配置前先备份原文件。logs排查问题的生命线。catalina.yyyy-mm-dd.log是主运行日志localhost.yyyy-mm-dd.log是应用相关日志localhost_access_log.yyyy-mm-dd.txt是访问日志。启动失败第一时间来这里找答案。webapps这就是我们放War包的地方。Tomcat启动时会自动解压该目录下的War包到同名文件夹并加载应用。workTomcat的工作目录存放JSP编译后生成的Servlet类文件。当JSP页面显示异常或缓存有问题时可以尝试清空此目录。temp临时文件目录。lib存放Tomcat自身和所有Web应用共享的JAR包。谨慎操作不要随意在这里添加包除非你确定所有应用都需要。2.3 验证基础安装第一次启动的仪式感在部署我们的War包之前必须确保Tomcat本身是健康的。进入bin目录双击startup.bat。你会看到一个命令行窗口弹出并滚动日志。观察日志最后几行如果看到类似INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [xxxx] milliseconds的信息说明启动成功。打开浏览器访问http://localhost:8080。你应该能看到Tomcat的默认欢迎页面。点击页面上的“Manager App”按钮会提示输入用户名密码。这时需要配置conf/tomcat-users.xml。编辑tomcat-users.xml在tomcat-users标签内添加注意xml标签是严格的role rolenamemanager-gui/ user usernameadmin passwordyour_strong_password rolesmanager-gui/注意生产环境务必使用强密码并且可以考虑仅允许本地访问管理页面或使用更安全的连接方式。重启Tomcat先运行shutdown.bat再运行startup.bat再次访问http://localhost:8080/manager/html用刚才设置的用户名密码登录。如果能看到管理界面说明Tomcat基础环境完全就绪。3. War包的获取与部署多种路径的选择与权衡War包从哪里来通常来自项目的构建输出。以最常见的Maven项目为例在项目根目录执行mvn clean package成功后会在target目录下生成你的项目名.war。拿到War包后我们有几种方式将它“交给”Tomcat。3.1 方式一直接拷贝最经典这是最直观、最常用的方法适合开发、测试及简单的生产部署。停止Tomcat运行shutdown.bat。虽然Tomcat支持热部署即运行时扔进去也能检测到并加载但为了确保过程干净避免文件锁或缓存问题建议先停止。放置War包将你的your-app.war文件直接复制到Tomcat的webapps目录下。启动Tomcat运行startup.bat。观察日志启动过程中观察logs/catalina.out或启动窗口你会看到类似这样的信息INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [D:\apache-tomcat-9.0.xx\webapps\your-app.war] INFO [main] org.apache.catalina.startup.ExpandWar.expand Expanding web application archive [D:\apache-tomcat-9.0.xx\webapps\your-app.war] INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [D:\apache-tomcat-9.0.xx\webapps\your-app.war] has finished in [2,345] ms看到“has finished”且没有ERROR基本就成功了。访问应用Tomcat会自动将War包解压到webapps/your-app目录。你的应用上下文路径Context Path默认就是/your-app。因此访问地址是http://localhost:8080/your-app。实操心得命名即路径War包的文件名直接决定了应用的访问路径。如果你希望应用部署在根路径即http://localhost:8080/可以将War包重命名为ROOT.war再放入webapps。注意这会覆盖Tomcat自带的ROOT应用。清理残余如果你更新了War包在放入新的之前最好手动删除webapps目录下旧的your-app.war文件和对应的your-app文件夹。否则Tomcat可能会因为检测到文件夹存在而不再解压新的War包导致更新不生效。3.2 方式二通过管理界面部署可视化操作Tomcat提供了一个Web管理界面可以上传War包进行部署适合远程管理或不方便直接操作服务器文件的情况。确保已按2.3节配置好tomcat-users.xml并拥有manager-gui角色权限。访问http://localhost:8080/manager/html并登录。在页面中找到“WAR file to deploy”区域。点击“浏览”按钮选择你本地的War包文件。点击“Deploy”按钮。页面会刷新并在应用列表Applications中看到你的应用状态应为“Running”。注意事项大小限制管理界面上传默认有文件大小限制通常约50MB。如果你的War包很大需要修改conf/server.xml中对应的Connector配置增加maxPostSize属性设置为-1表示无限制但这会带来安全风险需谨慎。安全性管理界面不应暴露在公网。在生产环境中应通过防火墙规则、Tomcat的RemoteAddrValve过滤器等手段限制仅限特定IP访问管理路径。3.3 方式三配置server.xml或context.xml定制化部署这种方式不把War包放在webapps下而是通过配置文件指定War包或应用目录的位置。这样做的好处是路径灵活、配置集中便于管理。方法A在server.xml的Host标签内添加ContextHost namelocalhost appBasewebapps ... !-- 其他配置 -- Context path/myapp docBaseD:\MyApplications\my-app.war reloadabletrue / /Hostpath浏览器访问的上下文路径这里是/myapp。docBaseWar包或已解压应用目录的绝对路径。reloadable设为true时Tomcat会监视WEB-INF/classes和WEB-INF/lib下的文件变化自动重载应用方便开发但消耗性能生产环境务必设为false。方法B使用独立的Context XML文件推荐这是更优雅、更模块化的方式无需修改主server.xml。在conf/Catalina/localhost/目录下如果没有则创建新建一个XML文件文件名决定了上下文路径。例如创建myapp.xml那么应用路径就是/myapp。在myapp.xml中写入?xml version1.0 encodingUTF-8? Context docBaseD:\MyApplications\my-app.war /内容非常简单。同样docBase指向你的War包或目录。为什么推荐方法B热部署conf/Catalina/localhost/下的配置文件是动态加载的。你放入一个.xml文件Tomcat会立即部署对应的应用删除它Tomcat会卸载该应用。无需重启Tomcat。隔离性每个应用的配置独立互不干扰也避免了直接修改server.xml带来的风险。清晰一看文件名就知道对应哪个应用。4. 深度配置与生产环境调优部署成功只是第一步。要让应用在生产环境中稳定、高效地运行还需要对Tomcat进行一些关键配置。4.1 连接器Connector优化应对高并发Tomcat处理HTTP请求的核心是Connector配置在conf/server.xml里。默认配置可能无法满足生产要求。Connector port8080 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 maxThreads200 minSpareThreads10 acceptCount100 compressionon compressionMinSize1024 compressableMimeTypetext/html,text/xml,text/plain,text/css,text/javascript,application/json /maxThreads最大工作线程数决定了Tomcat同时能处理请求的最大数量。默认200可根据服务器CPU核心数和应用类型调整。计算密集型可设低些如CPU核心数2IO密集型可设高些如CPU核心数50~100。不要盲目设高线程切换有开销。minSpareThreads最小空闲线程数保持随时待命的线程数避免请求到来时临时创建线程的开销。acceptCount当所有工作线程都在忙时新来的请求会被放入等待队列这个参数就是队列长度。队列满了之后新的连接请求会被拒绝。默认100。connectionTimeout连接超时时间毫秒超过这个时间没有数据传输连接会被关闭。compression启用GZIP压缩可以显著减少文本类资源的传输体积提升网络性能。4.2 内存与垃圾回收调优避免OOM通过修改bin/catalina.batWindows或catalina.shLinux脚本来设置JVM参数。建议在setenv.bat中设置与系统环境隔离。在setenv.bat中添加set JAVA_OPTS%JAVA_OPTS% -server -Xms2048m -Xmx2048m -XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m -XX:UseG1GC -XX:PrintGCDetails -Xloggc:../logs/gc.log-Xms和-Xmx设置JVM堆内存的初始大小和最大值。务必设为相同值以避免运行期堆内存扩容收缩带来的性能波动。-XX:MetaspaceSize和-XX:MaxMetaspaceSize元空间取代永久代大小存放类元数据。-XX:UseG1GC使用G1垃圾收集器在大多数场景下比老的Parallel或CMS收集器有更好的延迟表现。-XX:PrintGCDetails -Xloggc:../logs/gc.log开启GC详细日志并输出到文件便于后续性能分析和问题排查。4.3 访问日志与应用日志分离Tomcat的访问日志默认输出到logs/localhost_access_log.*.txt格式是通用的。但我们的应用通常使用Logback、Log4j2等框架打日志。关键是要将应用日志引导到独立的文件而不是和Tomcat的系统日志混在一起。以Logback为例在应用的logback-spring.xml中配置configuration property nameLOG_PATH value${catalina.base}/logs/myapp / appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender file${LOG_PATH}/application.log/file rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy fileNamePattern${LOG_PATH}/application.%d{yyyy-MM-dd}.log/fileNamePattern maxHistory30/maxHistory /rollingPolicy encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern /encoder /appender root levelINFO appender-ref refFILE / /root /configuration这里利用了Tomcat的环境变量${catalina.base}将日志统一输出到Tomcat的logs/myapp目录下便于集中管理。5. 实战排错从启动失败到性能瓶颈部署过程很少一帆风顺。下面是我总结的几个典型问题及其排查思路。5.1 问题一Tomcat启动成功但访问应用报404这是最常见的问题。检查应用是否真的部署成功查看logs/catalina.log搜索你的应用名看是否有部署完成的日志或者是否有SEVERE级别的部署错误。检查上下文路径Context Path你访问的URL路径是否正确通过Tomcat管理界面 (http://localhost:8080/manager/html) 可以清晰地看到所有已部署应用及其路径。检查War包内容用解压软件打开你的War包确认WEB-INF目录下存在web.xml或你是Servlet 3.0的注解方式则可能没有web.xml并且web.xml中配置的欢迎页面welcome-file是否存在。检查应用自身的路由如果你的应用是Spring MVC并且控制器根路径映射为/api那么你需要访问http://localhost:8080/your-app/api/xxx。5.2 问题二Tomcat启动失败端口被占用错误信息通常包含Address already in use: bind或Failed to initialize component [Connector[HTTP/1.1-8080]]。找出占用进程在命令行执行netstat -ano | findstr :8080找到占用8080端口的进程PID。结束进程在任务管理器中根据PID结束该进程或者用命令taskkill /PID PID /F。修改Tomcat端口如果8080端口必须被其他程序使用可以修改conf/server.xml找到第一个Connector port8080 ...将port改为其他值如8081。5.3 问题三应用部署时抛出ClassNotFoundException或NoClassDefFoundError这通常说明应用的类路径Classpath有问题。检查War包内的lib确认WEB-INF/lib目录下包含了所有必要的依赖JAR包。使用Maven打包时确保依赖的scope不是providedprovided依赖意味着你期望容器提供不会打入War包。检查Tomcat的lib如果某些JAR包是容器级别的如数据库驱动你希望所有应用共享可以放在$CATALINA_HOME/lib下。但要注意版本冲突。检查日志堆栈错误堆栈会明确指出是哪个类找不到根据类名判断它是哪个库的然后去补充对应的JAR。5.4 问题四应用运行一段时间后变慢或内存溢出OOM这是性能问题。分析GC日志利用之前配置的-Xloggc参数生成的gc.log文件使用GC分析工具如GCViewer, GCEasy查看GC频率、暂停时间、内存回收效果。如果看到频繁的Full GC且每次回收的内存很少很可能存在内存泄漏。生成堆转储Heap Dump在JVM参数中添加-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath../logs/heapdump.hprof。当OOM发生时会自动生成堆转储文件。使用MATMemory Analyzer Tool或JVisualVM分析该文件找出占用内存最多的对象和引用链定位泄漏点。检查应用代码常见的泄漏原因包括静态集合类持续增长、未关闭的资源数据库连接、文件流、网络连接、线程局部变量ThreadLocal使用后未清理等。6. 进阶部署策略超越手动拷贝对于生产环境手动上传War包的方式显得原始且易出错。可以考虑以下更自动化的方式6.1 与构建工具集成Maven插件在项目的pom.xml中配置tomcat7-maven-plugin也支持Tomcat 8/9可以在Maven构建后自动部署到本地或远程Tomcat。build plugins plugin groupIdorg.apache.tomcat.maven/groupId artifactIdtomcat7-maven-plugin/artifactId version2.2/version configuration urlhttp://localhost:8080/manager/text/url !-- 远程Tomcat管理地址 -- serverTomcatServer/server !-- Maven settings.xml中配置的服务器ID -- path/myapp/path !-- 部署的上下文路径 -- updatetrue/update !-- 如果应用已存在则更新 -- /configuration /plugin /plugins /build在~/.m2/settings.xml中配置服务器认证信息server idTomcatServer/id usernameadmin/username passwordyour_password/password /server然后执行命令mvn tomcat7:deploy首次或mvn tomcat7:redeploy重新部署。6.2 基于Docker容器化部署这是目前更主流的部署方式能实现环境标准化和快速伸缩。编写DockerfileFROM tomcat:9.0-jdk8-openjdk-slim # 删除Tomcat自带的默认应用 RUN rm -rf /usr/local/tomcat/webapps/* # 将你的War包复制到容器中 COPY target/your-app.war /usr/local/tomcat/webapps/ROOT.war # 暴露端口 EXPOSE 8080 # 启动命令可以在这里添加JVM参数 CMD [catalina.sh, run]构建镜像docker build -t my-tomcat-app .运行容器docker run -d -p 8080:8080 --name myapp my-tomcat-app这种方式将应用及其运行环境特定版本的Tomcat和JDK一起打包在任何安装了Docker的机器上都能以完全相同的方式运行彻底解决了“在我机器上是好的”这类环境问题。从手动部署到自动化脚本再到容器化本质上是提升部署可靠性、一致性和效率的过程。理解最基础的War包部署是构建这些高级实践的地基。当你下次再面对一个需要部署到独立Tomcat的应用时希望这份从环境到排错、从基础到进阶的指南能让你心里更有底。

相关新闻

PerfDog性能测试实战:从环境配置到自动化集成的全链路问题解决

PerfDog性能测试实战:从环境配置到自动化集成的全链路问题解决

1. 项目概述:为什么我们需要关注PerfDog的“常见问题”? 做移动端性能测试的同行,估计没人不知道PerfDog。它就像我们手里的“听诊器”,能实时监测App的CPU、内存、帧率、功耗这些核心指标,帮助我们快速定位性能瓶颈。…

2026/10/14 13:19:37 阅读更多 →
OpenClaw智能助理部署指南:PM2保活、飞书集成与API聚合实战

OpenClaw智能助理部署指南:PM2保活、飞书集成与API聚合实战

1. 项目概述:从零到一构建你的智能助理中枢 最近在折腾一个叫 OpenClaw(也叫 CloudBot)的开源项目,它本质上是一个智能对话机器人框架,可以帮你把各种大模型、API服务、本地工具和第三方应用(比如飞书、钉…

2026/10/15 8:24:33 阅读更多 →
基于MiniCPM5-1B构建本地研究智能体:从模型部署到ReAct框架实战

基于MiniCPM5-1B构建本地研究智能体:从模型部署到ReAct框架实战

最近在尝试将大语言模型(LLM)与特定领域研究结合时,发现一个痛点:很多前沿的AI研究工具或智能体平台要么依赖云端API,存在数据隐私和网络延迟问题;要么对硬件要求极高,个人开发者难以负担。有没…

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

最新新闻

多模态AI视频搜索实战:从250分钟到2分钟的工程化落地

多模态AI视频搜索实战:从250分钟到2分钟的工程化落地

1. 项目背景与核心痛点拆解1.1 250分钟到底卡在哪里视频搜索这件事,没做过的人会觉得不就是搜个关键词吗。但真正处理过大规模视频素材库的从业者都清楚,传统视频检索的流程有多笨重。Cond Nast 作为一家拥有海量视频内容的媒体集团,旗下品牌…

2026/10/15 8:24:32 阅读更多 →
2026年薪酬设计口碑爆棚的公司,靠什么赢得人心?

2026年薪酬设计口碑爆棚的公司,靠什么赢得人心?

2026年,企业人才争夺战进入白热化阶段。在薪资谈判桌上,一个数据精准、逻辑清晰的薪酬方案,往往能成为决定候选人去留的关键。我调研了数十家2025-2026年薪酬管理口碑极佳的头部企业,发现它们背后都有一个共同的“隐形推手”——一…

2026/10/15 8:24:32 阅读更多 →
基于JSP的相册管理系统:数据库设计、文件上传与项目避坑指南

基于JSP的相册管理系统:数据库设计、文件上传与项目避坑指南

简介:基于JSP与MySQL的相册管理系统源码包,适合Java Web初学者、课程设计或毕业设计参考,主要用于实现用户照片的在线上传、分类管理、查看与分享。整套资源共115个文件,包括20个JSP页面负责前端展示,22个Java源文件及…

2026/10/15 8:24:32 阅读更多 →
光储充换电站双层优化模型与Matlab实现

光储充换电站双层优化模型与Matlab实现

1. 项目背景与核心价值光储充换电站作为新型能源基础设施,正在经历从单纯充电服务向综合能源服务节点的转型。这个项目的核心价值在于通过电价杠杆撬动用户行为,实现"电站-用户"双向优化。传统充电站运营中普遍存在两个痛点:一是光…

2026/10/15 8:24:32 阅读更多 →
Tailwind裁员背后:开源工具商业化与AI冲击的困境

Tailwind裁员背后:开源工具商业化与AI冲击的困境

1. 开源商业化的冰与火之歌:从Tailwind裁员看基础工具生态困境上周五,Tailwind Labs宣布裁员75%的消息在开发者社区炸开了锅。这个拥有7.4万GitHub星标的明星项目,曾用「实用优先」的CSS方法论改变了前端开发的工作流。我在2019年第一次接触T…

2026/10/15 8:24:32 阅读更多 →
数字电源控制器XDPP1100-Q024实战:从规格书到环路调参

数字电源控制器XDPP1100-Q024实战:从规格书到环路调参

简介:英飞凌XDPP1100-Q024中文版规格书手册是一份面向电源设计工程师、嵌入式开发及服务器/工业电源系统设计人员的技术文档。手册详细解析该芯片基于ARM Cortex-M0的100MHz处理器、64kB OTP、32kB RAM与80kB ROM配置,覆盖双电压轨控制、高速电压/电流检…

2026/10/15 8:23:32 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →