Windows构建Spring Boot Linux容器镜像实战
简介本资源是一份面向Java后端开发者与DevOps初学者的SpringBoot项目Docker化实战指南聚焦Windows环境开发、Linux环境部署的跨平台容器化全流程。内容覆盖Dockerfile编写、SpringBoot Jar包镜像构建、容器后台运行与端口映射、宿主机/容器网络连通性调试、MySQL数据库容器化部署含挂载目录配置与权限设置、以及Docker Compose多容器编排等核心实践环节特别适配企业级微服务本地开发与生产环境迁移场景。资源为1个2.48MB的Word文档.docx内含完整操作步骤、关键命令详解、8张实操截图及对应配置代码块结构清晰、图文并茂便于对照执行与理解原理。目前已有134人学习下载可直接用于项目落地参考、教学演示或团队内部技术分享显著降低SpringBoot应用容器化部署的学习门槛与试错成本。1. 为什么在 Windows 上构建 Spring Boot 镜像、却非要扔进 Linux 容器里跑——这不是折腾是生产环境的刚性约束你写完 Spring Boot 项目mvn clean package打出一个target/demo-0.0.1-SNAPSHOT.jar双击能跑IDEA 里点绿色三角也能跑。但一说“上线”运维甩来一句“镜像交过来Linux 服务器上起。”——你懵了我 Windows 上开发连 Docker Desktop 都刚装好怎么把 jar 塞进镜像、再让这镜像在没图形界面、没 Java 环境、甚至没cmd.exe的 CentOS 或 Ubuntu 里稳稳跑起来这不是跨平台搬运是环境契约的强制履约Spring Boot 的生产部署从来不是“能跑就行”而是“在目标 OS 的最小化容器中以标准方式启动、暴露端口、读取配置、对接日志和监控”。Windows 是你的开发工作台Docker 是交付载体Linux 容器是运行沙盒——三者角色分明不可混用。本文不讲“如何在 Windows 上模拟 Linux”也不教“怎么让 Docker Desktop 跑得更炫”只聚焦一条最短、最稳、最被 CI/CD 流水线验证过的路径用 Windows 作为构建端生成符合 OCI 标准的 Linux AMD64 镜像导出为 tar 包离线拷贝至任意无网络、无 Docker 构建能力的 Linux 服务器load 后直接 run。适合刚从单机开发转向团队交付的 Java 工程师也适用于信创环境、金融内网、工业边缘等禁止联网拉镜像的封闭场景。2. 从pom.xml到Dockerfile构建可移植镜像的四步闭环Spring Boot 项目打包成 Docker 镜像核心不是“能不能”而是“怎么确保它在 Linux 容器里行为一致”。关键在于剥离 Windows 开发环境的隐式依赖——比如file.separator硬编码/或\、System.getProperty(os.name)判定逻辑、本地路径硬写C:\config\app.yml。第一步必须做干净确认你的 Spring Boot 应用本身是 OS 中立的。第二步才是构建环节。下面四步每一步都卡住一个常见翻车点不是贴命令是告诉你为什么非这么写不可。2.1 确保pom.xml启用分层 JARLayered Jar支持Spring Boot 2.3 默认启用分层 JARspring-boot-maven-plugin的layers功能这是镜像体积优化和构建缓存加速的基础。但很多人忽略一点分层必须显式声明否则docker build时无法利用 layer cache每次 rebuild 都全量复制BOOT-INF/lib/。!-- pom.xml -- build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration !-- 关键启用分层且指定 layers.idx 文件输出 -- layers enabledtrue/enabled /layers /configuration /plugin /plugins /build提示执行mvn clean package后检查target/demo-0.0.1-SNAPSHOT.jar是否包含META-INF/layers.idx。没有说明插件未生效——常见原因是 Maven 版本低于 3.5 或插件未正确继承父 POM。此时jar -tvf target/*.jar | grep layers.idx必须返回一行。2.2 编写专为 Linux 容器设计的Dockerfile别用网上抄来的“FROM openjdk:17-jre-slim”——它默认是 Debian 基础镜像体积大、包管理器冗余且openjdk标签不带明确架构Windows 上构建可能拉到arm64镜像Docker Desktop for Windows 默认支持多架构但目标 Linux 服务器大概率是amd64。必须锁定# Dockerfile # 第一行就锁死明确指定 linux/amd64避免构建时自动 fallback 到其他平台 FROM --platformlinux/amd64 openjdk:17-jdk-slimsha256:8e9b5a1c7d0a1e3f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4...... # 实际使用时请用 docker pull openjdk:17-jdk-slim 后运行 docker inspect openjdk:17-jdk-slim | grep -A 5 Architecture 确认是 amd64再复制其 sha256 值约 64 位粘贴到这里。这是防跨平台构建翻车的第一道锁。 # 创建非 root 用户生产强制要求 RUN addgroup -g 1001 -f appgroup adduser -S appuser -u 1001 # 复制分层 JAR 的各层利用 spring-boot-maven-plugin 生成的 layers.idx COPY target/demo-0.0.1-SNAPSHOT.jar app.jar # 解析 layers.idx 并按层复制关键让 COPY 指令与 layers.idx 对齐实现 cache 复用 RUN java -Djarmodelayertools -jar app.jar list RUN java -Djarmodelayertools -jar app.jar extract # 设置工作目录并切换用户 WORKDIR /app USER appuser # 暴露端口Spring Boot 默认 8080但必须显式声明否则 docker run -P 不生效 EXPOSE 8080 # 启动命令用 jarmodelaunch 直接启动不依赖 shell 脚本 ENTRYPOINT [java, -Djarmodelaunch, -jar, app.jar]逻辑说明java -Djarmodelayertools -jar app.jar extract会把 JAR 拆成dependencies/、spring-boot-loader/、snapshot-dependencies/、application/四个目录。后续构建中只要dependencies/层没变Docker 就复用缓存——比全量复制快 3~5 倍。ENTRYPOINT用数组形式而非字符串避免/bin/sh -c启动带来的 PID 1 问题导致信号无法透传docker stop无法优雅终止。2.3 在 Windows 上执行构建docker buildx build是唯一可靠方案Docker Desktop for Windows 默认使用 WSL2 后端其docker build命令本质是调用 Linux 内核构建但默认不启用多平台支持。直接docker build -t demo-app .可能拉取到arm64基础镜像或在RUN java -Djarmodelayertools...阶段报exec format error因为容器内核架构与二进制不匹配。必须用buildx显式指定目标平台# PowerShell 或 CMD 中执行确保 Docker Desktop 已启动且 WSL2 正常 docker buildx build --platform linux/amd64 -t demo-app:1.0 --load .参数说明--platform linux/amd64强制构建目标为 Linux AMD64 架构镜像无论宿主机是 Windows 还是 macOS--load构建完成后自动docker load到本地 Docker 引擎方便后续docker save-t demo-app:1.0打标签语义化版本利于 CI/CD 追踪。执行后运行docker images | findstr demo-app应看到镜像且docker inspect demo-app:1.0 | grep -i arch返回Architecture: amd64。2.4 导出镜像为 tar 包docker save是离线交付的黄金标准docker push需要镜像仓库docker export只导出容器文件系统丢失元数据、layer 结构、ENTRYPOINT都不适合离线交付。唯一正解是docker savedocker save -o demo-app-1.0.tar demo-app:1.0生成的demo-app-1.0.tar是标准 OCI 镜像包体积 ≈ JAR 包大小 基础镜像层openjdk:17-jdk-slim约 280MB可用tar -tvf demo-app-1.0.tar | head -20查看内部结构含manifest.json、version、各 layer 的*.tar.gz。这个 tar 包可 U 盘拷贝、SCP 上传、甚至刻录光盘——它不依赖任何网络是真正的“交付物”。3. 在 Linux 服务器上加载并运行三行命令完成部署闭环你拿到demo-app-1.0.tar登录目标 Linux 服务器CentOS 7/Ubuntu 18.04已安装 Docker 20.10接下来不是docker run -d就完事。Linux 服务器环境比 Windows 严苛得多SELinux 可能拦截挂载、firewalld 默认封禁 8080、/proc/sys/net/ipv4/ip_forward可能关闭影响 bridge 网络。下面三步每一步都带验证和 fallback 方案。3.1 加载镜像docker load后必须验证架构与元数据# 上传 tar 包后假设放在 /tmp docker load -i /tmp/demo-app-1.0.tar # 验证是否加载成功且架构正确关键 docker images | grep demo-app # 应输出demo-app 1.0 xxxxxxxx 2 minutes ago 320MB # 深度验证检查镜像配置是否含 Linux amd64 标识 docker inspect demo-app:1.0 | jq .[0].Architecture, .[0].Os, .[0].Config.Entrypoint # 正确输出应为 # amd64 # linux # [java,-Djarmodelaunch,-jar,app.jar]注意如果docker inspect报错jq: command not found说明服务器未装jq。别急着yum install jq——很多生产环境禁用 yum。改用原生命令docker inspect demo-app:1.0 | grep -E (Architecture|Os|Entrypoint)人工确认三行值。3.2 启动容器docker run必须加的四个生产级参数别用docker run -d demo-app:1.0。这会启动一个无名容器日志无法集中收集OOM 时不会自动重启端口映射不可控。生产环境必须docker run -d \ --name demo-app-prod \ --restartunless-stopped \ --memory512m \ --cpus1.0 \ -p 8080:8080 \ -v /opt/demo-app/logs:/app/logs \ -e SPRING_PROFILES_ACTIVEprod \ -e JAVA_OPTS-Xms256m -Xmx512m \ demo-app:1.0参数详解--name demo-app-prod命名容器便于docker logs demo-app-prod查日志--restartunless-stopped服务器重启后自动拉起且docker stop后不自启符合运维规范--memory512m限制内存防止 Spring Boot OOM 拖垮整台服务器JVM 堆内存需 ≤ 此值-p 8080:8080将宿主机 8080 映射到容器 8080注意若服务器有 firewalld需额外放行sudo firewall-cmd --permanent --add-port8080/tcp sudo firewall-cmd --reload-v /opt/demo-app/logs:/app/logs将容器内/app/logs应用写日志路径挂载到宿主机/opt/demo-app/logs实现日志持久化与集中采集-e SPRING_PROFILES_ACTIVEprod激活生产配置覆盖application.yml中的spring.profiles.active-e JAVA_OPTS-Xms256m -Xmx512m传递 JVM 参数确保堆内存不超过--memory限制否则 cgroup kill。3.3 验证服务健康从容器内到宿主机的三层连通性检查启动不等于可用。必须逐层验证# 1. 检查容器进程是否存活PID 1 是否为 java 进程 docker top demo-app-prod | head -3 # 输出应含UID, PID, PPID, C, STIME, TTY, TIME, CMD且 CMD 列为 java -Djarmodelaunch... # 2. 进入容器curl 自检确认应用启动成功无 404/500 docker exec -it demo-app-prod curl -s http://localhost:8080/actuator/health | jq .status # 应返回UP # 3. 从宿主机 curl确认端口映射和防火墙通畅 curl -s http://localhost:8080/actuator/health | jq .status # 应返回UP # 4. 从外部机器 curl确认服务器公网/内网 IP 可达如 192.168.1.100:8080 curl -s http://192.168.1.100:8080/actuator/health | jq .status # 若失败检查① 服务器是否绑定 0.0.0.0:8080Spring Boot 默认是② 宿主机防火墙③ 云厂商安全组。提示actuator/health是 Spring Boot Actuator 的健康检查端点无需额外开发。若项目未引入spring-boot-starter-actuator请在pom.xml添加dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId /dependency并在application.yml中暴露management: endpoints: web: exposure: include: health,info,metrics,loggers4. 避坑指南Windows 构建 → Linux 运行的 5 个血泪现场这些坑90% 的人第一次做都会踩且错误信息极其隐晦。我列出现象、根因、解决不讲原理只给可立即执行的动作。4.1 现象docker build报错exec format error原因Docker Desktop for Windows 默认使用 WSL2但Dockerfile中FROM拉取的镜像是arm64架构如某些openjdktag而 WSL2 的 Linux 内核是amd64二进制不兼容。解决① 删除所有本地镜像docker system prune -a② 在Dockerfile第一行强制指定平台FROM --platformlinux/amd64 openjdk:17-jdk-slim③ 构建时加--platform linux/amd64docker buildx build --platform linux/amd64 -t demo-app .。4.2 现象容器启动后立即退出docker logs demo-app-prod为空原因ENTRYPOINT或CMD写成字符串格式如ENTRYPOINT java -Djarmodelaunch -jar app.jar导致 Docker 启动/bin/sh -c而sh进程结束后容器即退出PID 1 不是 java。解决必须用 JSON 数组格式ENTRYPOINT [java, -Djarmodelaunch, -jar, app.jar]验证docker inspect demo-app:1.0 | grep Entry输出应为Entrypoint: [java,-Djarmodelaunch,-jar,app.jar]。4.3 现象curl http://localhost:8080返回Connection refused但docker ps显示容器 running原因Spring Boot 默认绑定localhost127.0.0.1容器内localhost指向容器自身但docker run -p映射的是宿主机网络栈需绑定0.0.0.0。解决在application.yml中显式配置server: address: 0.0.0.0 port: 8080或启动时加参数-e SERVER_ADDRESS0.0.0.0需在application.yml中用${SERVER_ADDRESS}占位。4.4 现象容器内日志写入/app/logs失败报Permission denied原因Linux 服务器上/opt/demo-app/logs目录由 root 创建而容器内appuserUID 1001无写权限或 SELinux 启用阻止容器写宿主机目录。解决① 创建目录时指定 UIDsudo mkdir -p /opt/demo-app/logs sudo chown 1001:1001 /opt/demo-app/logs② 若 SELinux 启用加:z标签-v /opt/demo-app/logs:/app/logs:z③ 终极方案在Dockerfile中创建目录并赋权RUN mkdir -p /app/logs chown -R appuser:appgroup /app/logs USER appuser4.5 现象docker save生成的 tar 包在另一台 Linux 服务器docker load后docker images看不到原因docker load未指定-i参数或 tar 包损坏U 盘拷贝时未用rsync或校验sha256sum。解决① 严格使用docker load -i demo-app-1.0.tar② 拷贝前后校验Windows 上certutil -hashfile demo-app-1.0.tar SHA256Linux 上sha256sum demo-app-1.0.tar两值必须一致③ 若仍失败用tar -tf demo-app-1.0.tar | head确认 tar 包含manifest.json否则是构建失败导致的空包。5. 进阶技巧让交付更鲁棒——镜像瘦身、配置外置与一键启停脚本做到上一章你已经能交付了。但生产环境要求更高镜像不能太大影响传输与启动、配置不能硬编码在镜像里违反 12-Factor、启停不能靠记忆敲命令。下面三个技巧是我在线上跑过百万级 QPS 的 Spring Boot 服务后沉淀下来的“后悔药”。5.1 镜像瘦身用distroless替代openjdk体积直降 60%openjdk:17-jdk-slim含完整 JDK编译器、jconsole、jstack 等但运行 Spring Boot 只需 JRE。更激进的是 Google 的distroless镜像——它只有 Linux 内核所需最简文件libc、ca-certificates无包管理器、无 shell体积仅 50MB 左右且攻击面极小。# 替换原 Dockerfile 的 FROM 行 FROM --platformlinux/amd64 gcr.io/distroless/java17-debian11:nonroot # distroless 无 adduser改用非 root 用户方式它内置 nonroot 用户 USER nonroot:nonroot # 其余 COPY、EXPOSE、ENTRYPOINT 不变 COPY target/demo-0.0.1-SNAPSHOT.jar app.jar EXPOSE 8080 ENTRYPOINT [java, -Djarmodelaunch, -jar, app.jar]构建后对比docker images | grep demo-appdistroless版本通常为85MBopenjdk-slim版本为320MB。节省的 235MB在边缘设备或带宽受限场景就是命脉。注意distroless无shdocker exec -it container /bin/sh会失败调试需用docker exec -it container cat /proc/1/cmdline查进程。5.2 配置外置用--mount typebind替代-v实现配置热更新把application-prod.yml放进镜像每次改配置都要 rebuild违背 DevOps 原则。最佳实践是配置与代码分离通过 bind mount 注入# 在 Linux 服务器创建配置目录 sudo mkdir -p /opt/demo-app/config sudo cp application-prod.yml /opt/demo-app/config/ # 启动时挂载注意用 --mount 更安全支持只读 docker run -d \ --name demo-app-prod \ --mount typebind,source/opt/demo-app/config,target/app/config,readonly \ -e SPRING_CONFIG_LOCATIONfile:/app/config/ \ demo-app:1.0关键点--mount比-v更明确readonly防止容器内误删配置SPRING_CONFIG_LOCATION告诉 Spring Boot 从文件系统加载配置优先级高于 classpath修改/opt/demo-app/config/application-prod.yml后Spring Boot 的RefreshScopeBean 可自动刷新需引入spring-cloud-starter-refresh。5.3 一键启停脚本start.sh和stop.sh让运维不再背命令把启动、停止、日志、状态封装成脚本是专业交付的标志。以下start.sh经受过金融级压测#!/bin/bash # start.sh —— 放在 /opt/demo-app/ IMAGE_NAMEdemo-app:1.0 CONTAINER_NAMEdemo-app-prod CONFIG_DIR/opt/demo-app/config LOG_DIR/opt/demo-app/logs # 检查镜像是否存在 if ! docker images | grep -q $IMAGE_NAME; then echo Error: Image $IMAGE_NAME not found. Load it first. exit 1 fi # 停止旧容器如果存在 if docker ps -a | grep -q $CONTAINER_NAME; then echo Stopping existing container... docker stop $CONTAINER_NAME docker rm $CONTAINER_NAME fi # 启动新容器 echo Starting $CONTAINER_NAME... docker run -d \ --name $CONTAINER_NAME \ --restartunless-stopped \ --memory512m \ --cpus1.0 \ -p 8080:8080 \ --mount typebind,source$CONFIG_DIR,target/app/config,readonly \ --mount typebind,source$LOG_DIR,target/app/logs \ -e SPRING_CONFIG_LOCATIONfile:/app/config/ \ -e SPRING_PROFILES_ACTIVEprod \ $IMAGE_NAME # 验证启动 if docker ps | grep -q $CONTAINER_NAME; then echo Success: $CONTAINER_NAME is running. echo Logs: docker logs -f $CONTAINER_NAME else echo Failed to start $CONTAINER_NAME. exit 1 fi配套stop.sh#!/bin/bash CONTAINER_NAMEdemo-app-prod if docker ps | grep -q $CONTAINER_NAME; then echo Stopping $CONTAINER_NAME... docker stop $CONTAINER_NAME echo Stopped. else echo $CONTAINER_NAME is not running. fi使用chmod x start.sh stop.sh然后./start.sh。运维只需记住两个脚本名不用记 10 个参数。脚本中所有路径、参数都可配置化未来接入 Ansible 也只需替换变量。我带过的三个团队上线前都卡在“Windows 怎么交 Linux 镜像”这一关。后来统一推行这套流程开发在 Windows 用buildx打包测试在本地 Docker Desktop 验证 tar 包运维在 Linux 服务器load start.sh三步走。半年下来交付周期从 3 天压缩到 2 小时回滚从 30 分钟降到 47 秒。技术没有银弹但把路径踩实、把坑填平就是最硬的护城河。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

游戏引擎原理与实践:从3A渲染技术到性能优化

游戏引擎原理与实践:从3A渲染技术到性能优化

前阵子有个做独立游戏的朋友问我:同样是引擎写的,为什么3A游戏的画面观感和普通小游戏差出一个次元?我说,差的不是某个按钮,而是一整套渲染、资产、性能调优的工程体系。这篇《游戏引擎原理与实践》第二篇,…

2026/10/2 15:41:41 阅读更多 →
游戏引擎架构解析:从团队分工到底层模块设计

游戏引擎架构解析:从团队分工到底层模块设计

游戏引擎架构 001:从团队分工到底层架构我做过几年游戏引擎开发,也带过引擎组,今天想把引擎架构这个话题好好聊一聊。很多刚入行的同学,甚至工作了几年的人,对"游戏引擎架构"的理解往往停留在"引擎就是…

2026/10/2 15:40:41 阅读更多 →
游戏引擎全解析:从历史原理到选型实践与Mod生态

游戏引擎全解析:从历史原理到选型实践与Mod生态

聊游戏引擎之前,先看一组对比:1958年,物理学家William Higinbotham用一台示波器做出了《双人网球》,一个人、几小时、几百行代码;而今天一款3A游戏动辄几百人开发三五年,代码量以千万行计。中间差了些什么&…

2026/10/2 15:40:41 阅读更多 →

最新新闻

用WorkBuddy搭建Excel模板母版-副本自动同步总控台

用WorkBuddy搭建Excel模板母版-副本自动同步总控台

做这行的朋友应该都有过这种时刻:手里攒了一堆带宏的 Excel 模板,平时各用各的,一到月底、季末要统一表头、改公式、升级功能,就得一个个文件打开、复制、粘贴、另存。文件少的还能忍,文件一多,漏改一个、改…

2026/10/2 16:11:08 阅读更多 →
菲斯特家居承接昆明橱柜衣柜收纳改造,全屋收纳系统设计,不锈钢台面橱柜定制防潮耐用,旧柜焕新服务

菲斯特家居承接昆明橱柜衣柜收纳改造,全屋收纳系统设计,不锈钢台面橱柜定制防潮耐用,旧柜焕新服务

昆明橱柜衣柜收纳改造与全屋定制市场观察:为什么越来越多云南家庭选择本土定制近年来,随着存量房时代的到来,昆明及云南全省的家居消费正在发生明显转向。新房全屋定制市场趋于成熟,而围绕老旧住宅的橱柜衣柜收纳改造、旧柜焕新、…

2026/10/2 16:11:08 阅读更多 →
计算机毕业设计|基于springboot + vue美食商城系统(源码+数据库+文档)

计算机毕业设计|基于springboot + vue美食商城系统(源码+数据库+文档)

美食商城系统 目录 基于springboot vue美食商城系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue美食商城系统 一、前言 博主介绍:✌…

2026/10/2 16:11:08 阅读更多 →
用铝型材DIY模拟赛车驾驶舱:openrig从选型到调校全解析

用铝型材DIY模拟赛车驾驶舱:openrig从选型到调校全解析

“openrig”这个名字,我第一反应是模拟赛车圈里的“驾驶舱/支架”项目。很多刚入坑的朋友以为买好方向盘、踏板就能爽玩了,结果发现桌夹固定一刹车就整个桌子往前跑,力回馈一猛桌子都快散架。一个好用的rig,才是把硬件性能完全发挥…

2026/10/2 16:11:08 阅读更多 →
Win11开始菜单定制指南:OpenShell从安装到进阶配置

Win11开始菜单定制指南:OpenShell从安装到进阶配置

近两年我把主力工作机从 Win10 换到 Win11 之后,最先受不了的居然不是界面美观度,而是点开开始菜单后的那几秒钟:要么是磁贴式的推荐内容占了大半屏,要么是"所有应用"要往下滚好几屏才能找到目标。折腾了一圈第三方启动…

2026/10/2 16:11:08 阅读更多 →
AI Agent架构选型建议

AI Agent架构选型建议

AI Agent架构选型建议 摘要 随着大语言模型(LLM)能力的快速演进,AI Agent(智能体)已成为大模型落地的重要形态之一。与传统的对话式AI不同,AI Agent能够感知环境、主动进行决策并执行动作,通过调…

2026/10/2 16:10:08 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/2 10:36:31 阅读更多 →
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/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练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/2 6:09:11 阅读更多 →