Docker部署Oracle XE 11g持久化:容器重启数据不丢的实战指南

做开发这几年,只要涉及到数据库,Oracle总是绕不开的一个坎。尤其是需要快速搭一套测试环境、临时做数据验证或者给客户做演示的时候,直接装完整版Oracle太重了,安装流程又长,稍不留神就卡在某一步。所以我很早开始用Docker部署oracle-xe-11g,镜像体积相对可控、启动也快,一条命令就能把数据库拉起来。但用着用着就发现,真正麻烦的不是部署,而是数据持久化——容器一旦删掉重建,里面辛苦配置的用户、表结构、测试数据全都归零,这个坑让我翻过好几次车。

这篇文章就专门把“Docker部署oracle-xe-11g数据持久化”这个问题从头到尾讲透。我会从为什么选型、数据为什么会丢、持久化到底该怎么做、怎么验证已经生效、到备份恢复的实战经验,全部梳理一遍。文章里所有命令和配置都是我自己在测试环境里反复跑过的,适合正在用oracle-xe-11g容器做开发测试、又对数据持久化没底的同事直接对照操作。

1. 为什么开发测试偏偏选Docker + Oracle XE 11g

1.1 搭建Oracle测试环境的三种常见路径对比

如果你只是需要一个能连、能跑SQL、能验证业务逻辑的Oracle环境,摆在面前的基本是三条路:本地完整安装、虚拟机、还有Docker容器。我三样都折腾过,感受差别很大。

本地完整安装Oracle,特别是11g这类版本,对操作系统的要求比较挑。很多人的开发机是Windows或高版本Linux发行版,装起来兼容性问题一大堆,安装向导点完还要处理各种依赖库和内核参数,少说半天就进去了。即使装好了,占用内存和磁盘也非常夸张,开着它跑日常开发,电脑风扇都能起飞。

虚拟机方案同样不太轻快。虽然隔离性好,但是虚拟机的磁盘镜像动辄好几个G,启动时间也长。平时改个配置、做个备份都很笨重,不适合"用完即走"的临时场景。

Docker容器的优势就在这里体现出来了。oracle-xe-11g镜像一般只有几百M,启动十几秒就能听到底层日志输出"Ready",内存占用也比完整版小得多。最关键是环境可以随时销毁、随时重建,开发机不会越用越脏。对于测试场景来说,这个优势是压倒性的。

1.2 我选型时的核心思路和镜像方案考量

在用Docker跑oracle-xe-11g之前,我给自己定了几条选型标准:镜像必须能稳定启动、进程不能被当成僵尸进程退掉、数据库初始化过程要可靠、最后才考虑体积和易用性。

Oracle官方其实并不直接提供11g XE的Docker镜像,社区里倒是维护了不少。我试过几个不同的镜像,有的启动脚本写得比较粗糙,容器起来以后Oracle进程自己就退出了;有的初始化时间特别长,让人分不清是正常启动还是卡死。最后我定下来用的,是一个启动路径稳定、默认进程用docker logs能看到完整日志输出的社区镜像。这里不写具体镜像名,因为大家拉取时最好根据自己网络环境和镜像更新情况选择,我后面给出的所有持久化方案,本质上跟镜像选择关系不大,更关注的是容器内数据文件路径和启动逻辑。

还有一个容易忽略的细节:oracle-xe-11g容器内部默认用oracle用户运行,监听端口是1521,默认服务名是XE,初始的SYS/SYSTEM密码在容器第一次启动时会根据镜像的环境变量生成,默认值一般是oracle。这些基础信息如果不清楚,后面配置持久化很容易把目录和权限搞错。

2. Docker部署oracle-xe-11g的核心难点在哪里

2.1 容器的数据生命周期和“白板现象”

要理解数据持久化,先得理解Docker容器的一个本质特点:容器本身是临时性的。你可以把容器想象成一块白板,所有写在这块白板上的内容,包括数据库的数据文件、配置文件、日志,都随着容器存在而存在。当你执行docker rm删除容器时,这块白板连同上面的内容就一起被擦掉了。

很多人第一次遇到数据丢失,往往是这样的场景:跑了好几天的oracle-xe-11g容器,因为要升级镜像或者调整端口映射,执行了docker stop和docker rm,重新docker run一个新的容器,进去一看,之前建的用户、表、数据全没了。这个现象特别容易让人抓狂,因为数据库本身没什么错,错的是没有把数据放到容器的“持久层”里。

Docker提供的持久化机制有两个常用方向:一个是volume卷,由Docker管理宿主机上的某个目录;另一个是bind mount,直接把宿主机的某个目录映射到容器内。无论哪种方式,本质都是让容器内这个“临时白板”上的某些关键路径,指向宿主机上的一块“永久记忆”。只有理解了这层关系,才能明白oracle-xe-11g持久化该挂什么、不该挂什么。

2.2 Oracle XE 11g容器里的数据文件到底放在哪

搞清楚了持久化原理,下一个核心问题就是:oracle-xe-11g容器里,哪些文件是数据库的“命根子”。

从Oracle的目录结构来看,XE版本的数据文件默认位于/u01/app/oracle/oradata/XE下。这个目录里放的是系统的表空间文件、数据文件、临时文件、控制文件和联机重做日志。只要这部分内容完整,理论上数据库就能重新启动并被识别。

但实际查看镜像的Dockerfile和启动脚本时你会发现,很多社区镜像还会在/u01/app/oracle目录下存放初始化脚本、日志、配置等。有些新手会把整个/u01/app/oracle挂载出来,虽然可以用,但会带来一个副作用:容器首次启动时如果发现目录里已经有数据,会跳过一些初始化步骤,一旦数据不完整,数据库反而起不来。

所以我的建议是,持久化尽量聚焦在/u01/app/oracle/oradata这个真正存放数据文件的位置。对这个目录做挂载,既能保证数据库核心数据在宿主机上,又不会干扰镜像自带的启动初始化逻辑。

2.3 真正容易丢数据的高危时刻

和数据库本身操作不同,Docker场景下丢数据往往不是某一个瞬间发生的,而是发生在几个非常明确的高危时刻。

第一个高危时刻是直接执行docker run新建容器的时候。如果你从未挂载过任何数据卷,那么容器创建时生成的所有数据都在容器可写层里,一旦删除容器,数据几乎没有恢复手段。很多人第一次部署时就是裸跑,后面只能欲哭无泪。

第二个高危时刻是使用docker-compose更新配置并执行down的时候。docker-compose down默认会移除网络和容器,如果编排文件里没有声明持久化卷,那这个命令执行完,数据库数据一样灰飞烟灭。

第三个高危时刻是挂载了宿主机目录、但目录权限不对的时候。容器内Oracle进程是以oracle用户运行的,这个用户有特定的UID,如果宿主机目录对那个UID没有写权限,数据库启动脚本无法创建数据文件,容器会反复报错。最诡异的是,有时候你看目录是空的,数据却没写进去,就是这个权限问题在作怪。

这三个时刻基本涵盖了oracle-xe-11g容器数据丢失的绝大多数场景。下面我给的解决方案,就是围绕如何堵住这些高危时刻。

3. 数据持久化的完整解决路径(实操)

3.1 方案一:用Docker卷做无脑持久化(快但不够直观)

如果你想先快速跑通持久化,最简单的办法是给Docker容器声明一个卷。对于单容器场景,可以用-v参数直接挂载到数据目录:

docker run -d \ --name oracle-xe \ -p 1521:1521 \ -v oracle-xe-data:/u01/app/oracle/oradata \ 你的oracle-xe-11g镜像名

这里的oracle-xe-data是Docker自动管理的卷名。执行完这个命令后,数据文件就会写到这个卷里。即使容器被删除,只要卷没被docker volume rm删掉,重新用同样的卷名启动容器,数据就能恢复。

这个方案的好处是几乎不需要考虑宿主机的目录结构和权限问题,Docker会处理好卷目录的权限。但缺点也很明显:卷数据是Docker自管的,如果你不熟悉docker volume相关命令,可能会觉得不好控制。而且卷默认存放在/var/lib/docker/volumes下面,路径比较深,想直接备份单个数据文件或者把数据迁移到其他机器,操作起来不够直观。

所以这个方案我一般只用来做快速验证,真正生产或长期使用,我更倾向用bind mount。

3.2 方案二:bind mount挂载宿主机目录(可管理性最强)

bind mount就是把宿主机上你指定的目录直接映射到容器里。它的最大优势是你清楚知道数据存在哪,备份、查看、恢复都很方便。

我的推荐做法是这样:

# 在宿主机准备一个数据目录 mkdir -p /data/oracle-xe/oradata chmod -R 777 /data/oracle-xe/oradata docker run -d \ --name oracle-xe \ -p 1521:1521 \ -v /data/oracle-xe/oradata:/u01/app/oracle/oradata \ 你的oracle-xe-11g镜像名

这里有一个关键细节需要注意:/data/oracle-xe/oradata如果是个空目录,容器启动时Oracle初始化脚本会感知到数据文件不存在,自动执行创建数据库的流程。一旦初始化完成,数据文件就会出现在这个目录里。

我选择直接chmod -R 777而不是去匹配容器内oracle用户的UID,是因为测试环境图省事最直接。但在更规范的环境里,你完全可以用chown把目录属主改成容器内oracle的UID。后面我会专门讲权限问题。

bind mount方案下,容器删除、重建只影响运行环境,不影响数据。你甚至可以换一个版本号完全不同的oracle-xe-11g镜像,只要数据文件兼容,启动后还是原来的数据库内容。所以这个方案的可管理性最强。

3.3 方案三:docker-compose一体化配置持久化

如果你的项目不止一个容器,或者希望把oracle-xe-11g作为某个技术栈的基础依赖,那用docker-compose来定义一套持久化编排是最好的选择。一个完整的docker-compose.yml长这样:

version: "3.8" services: oracle-xe: image: 你的oracle-xe-11g镜像名 container_name: oracle-xe restart: unless-stopped ports: - "1521:1521" volumes: - oracle-xe-data:/u01/app/oracle/oradata environment: - ORACLE_PASSWORD=oracle volumes: oracle-xe-data: driver: local

用docker-compose up -d启动这套环境后,数据卷oracle-xe-data会被自动创建。相比直接写-v命令,compose的好处是配置可以入库、可以分享、团队协作时环境完全一致。执行docker-compose down并不会自动删除数据卷,所以数据是安全的;只有执行docker-compose down -v时才会连卷一起删除。这个-v参数,是很多人在compose场景下丢数据的元凶,一定要记牢。

如果你更希望数据直接落到宿主机某个固定目录里,也可以把compose里的volumes改成bind mount写法:

volumes: - /data/oracle-xe/oradata:/u01/app/oracle/oradata

3.4 权限问题的经典解法

挂载目录后,最常见的报错是日志里出现类似“无法在指定目录下创建数据文件”或者“ORA-01119”这样的信息,排除了磁盘空间问题后,十有八九是权限问题。

解决思路有三个方向。第一个方向最简单,给宿主机目录放开最大权限,测试环境直接用chmod -R 777,不推荐用在生产,因为所有用户可读写存在安全隐患。第二个方向是修改目录属主,让宿主机目录归容器内oracle用户所有,操作时要先了解镜像里的UID。大部分oracle-xe-11g镜像的oracle用户UID是1000,但也有不是的,最好在容器内执行id oracle确认。确认后宿主机执行:

chown -R 1000:1000 /data/oracle-xe/oradata

第三个方向是不要预先创建目录,让Docker或镜像启动脚本自己创建。在bind mount场景下,如果宿主机目录完全不存在,Docker会以root身份自动创建它,但这可能导致目录属主是root,反而更容易触发权限问题,所以我个人还是建议先手动创建并设好权限再挂载。

提示:如果你容器已经启动且初始化失败,千万别反复重试启动。先把容器停了,确认目录权限,再清空目录里不完整的临时文件,重新启动,否则可能残留半初始化的数据文件导致后续反复失败。

4. 持久化是否生效的验证流程与故障排查

4.1 完整验证:建表、写数据、重启容器、再查数据

配置完持久化,不能只看目录里有没有文件就掉以轻心。我每次都习惯做一套完整的“脏数据验证”,确保数据是真的落盘了,而不是还在内存或容器层里。

操作流程分成四步:

第一步,启动容器后用任意数据库客户端连接到Oracle。连接信息基本就是host为宿主机IP、端口1521、服务名XE、用户SYS或SYSTEM、密码为启动时设置的口令。

第二步,创建一个测试用户和一张测试表,插入几条测试记录:

-- 用SYSTEM登录后执行 CREATE USER persist_test IDENTIFIED BY test123; GRANT CONNECT, RESOURCE TO persist_test; ALTER USER persist_test QUOTA UNLIMITED ON USERS; -- 切到 persist_test 用户 CREATE TABLE data_check (id NUMBER PRIMARY KEY, note VARCHAR2(100)); INSERT INTO data_check VALUES (1, 'persistence is working'); COMMIT;

第三步,重启容器模拟真实故障场景。这里关键是要彻底删除容器再重建,不能只做docker restart。因为restart只重启容器,数据本来就在,验证不出持久化作用。执行:

docker stop oracle-xe docker rm oracle-xe # 用同样的挂载参数重新启动一个新容器 docker run -d --name oracle-xe \ -p 1521:1521 \ -v /data/oracle-xe/oradata:/u01/app/oracle/oradata \ 你的oracle-xe-11g镜像名

第四步,等容器启动完成,重新连接数据库,执行:

SELECT * FROM persist_test.data_check;

如果能查到那条记录,持久化就算是稳妥了。查不到,说明挂载路径或初始化逻辑有问题,需要往下排查。

4.2 权限问题与目录结构异常排查实录

我在排查oracle-xe-11g持久化问题时,遇到过几个典型的异常状态,这里逐个记录下现象和解决过程。

第一次遇到的现象是:docker logs里出现“ORA-01034: ORACLE not available”,同时宿主机挂载目录里只有一个.nfs文件或者空的临时目录。排查后发现是宿主机目录权限给的是755,只读不写,Oracle初始化时无法创建数据文件,导致数据库实例根本没有起来。解决办法就是重新设置目录属主和权限,然后清理半成品文件再启动。

第二次现象比较隐蔽:挂载目录里有文件,但容器启动后Oracle日志一直卡在“Database configuration”阶段,数据库始终连不上。后来发现是挂载目录里残留了上一次失败的临时文件,启动脚本认为数据库已经在配置过程中,直接跳过初始化,结果实例状态不一致。这个问题的解法是停容器、备份并清空挂载目录、再重新启动,让初始化从零开始。

第三次现象是:容器起来了,数据库也能连,但新建的表空间文件没有落到宿主机挂载目录。这个原因多半是挂载位置没对准,容器内实际数据文件路径和挂载目标不一致。解决方法是确认Oracle的DB_FILES路径和oradadata目录结构。在容器内执行:

docker exec -it oracle-xe bash

然后进数据库,用命令查询路径:

SELECT name FROM v$datafile; SELECT name FROM v$controlfile; SELECT name FROM v$tempfile;

查询结果会直接显示数据文件在容器里的实际路径,对照挂载配置就能发现偏差。

4.3 常见问题速查表

下面这个表格是我把多年来的踩坑经验压缩成的速查表,建议你遇到问题时直接对照排查。

现象可能原因快速解决
容器反复启动失败挂载目录权限不足重新chmod或chown为容器oracle用户UID
数据库连不上,日志有ORA-01034初始化不完整清空挂载目录,重新启动容器完成初始化
容器能连但没有数据没挂载正确目录或挂载被跳过确认v$datafile路径与挂载路径一致
docker-compose down后数据没了down后面跟了-v参数避免使用-v,用down不带卷删除
新建表空间无法落盘挂载目录不是oracle写入路径查看数据文件位置并调整挂载目标

注意:排查问题时,永远先备份现有目录。数据文件这种东西,一个误操作格式化或覆盖,可比容器崩溃要麻烦得多。备份用cp -r或者tar打包目录即可。

5. 把数据真正攥在自己手里:备份恢复与进阶建议

5.1 容器内逻辑备份与物理备份双保险

持久化解决了“容器删了数据还在”的问题,但还远远不够。宿主机磁盘可能坏、目录可能被误删,所以备份永远是数据库运维的底线。

对于oracle-xe-11g容器,备份有两种最实用的手段。

第一种是逻辑备份,用Oracle自带的exp工具导出数据。执行方法是在容器内切换到oracle用户,然后导出整个库或者指定用户:

docker exec -it oracle-xe bash su - oracle exp system/oracle@XE file=/tmp/xe_backup.dmp owner=persist_test

导出完成后,把/tmp/xe_backup.dmp从容器里拷贝到宿主机,或者直接在挂载目录里找一个共享位置存放。恢复时:

imp system/oracle@XE file=/tmp/xe_backup.dmp full=y

第二种是物理备份,直接备份数据文件目录。操作前最好先把数据库关掉,保证文件一致:

docker exec -it oracle-xe bash -c "echo 'shutdown immediate;' | sqlplus / as sysdba" cp -r /data/oracle-xe/oradata /data/oracle-xe/oradata_bak_$(date +%F)

重启容器后,如果数据目录损坏,只要把备份目录内容完整覆盖回去,再启动容器,数据库就能恢复。

5.2 从已有数据文件快速迁移到宿主机

有一种很常见的诉求是:我已经有一个跑了好久的oracle-xe-11g容器,之前没有做任何持久化配置,现在想把里面的数据捞出来,落到宿主机上。这个操作可以不用重头建库。

先找到容器的可写层里数据文件的实际路径。一般就是/u01/app/oracle/oradata/XE。执行:

docker cp oracle-xe:/u01/app/oracle/oradata /data/oracle-xe/oradata

把数据文件整体复制出来,然后重新启动一个挂载了宿主机目录的容器。这里有一个细节:复制出来的目录里可能包含归档日志、临时文件等,这些文件不影响启动,但为了干净,可以停掉旧容器前先正常关闭数据库,确保文件一致。

新容器启动时,挂载对应目录后,初始化脚本发现已经有数据文件,就不会重新建库,直接拉起现有数据库。整个过程需要关注的是新镜像和旧镜像的文件结构是否一致,如果镜像不同,建议先对比数据文件路径和权限结构,避免路径不一致导致起不来。

5.3 我总结出来的几条实战铁律

这几条经验是踩过很多次坑之后,硬生生总结出来的。每一条都对应过一次或者多次真实的故障,在这里分享给各位。

第一,持久化目录必须明确、架构必须简单。不要试图把整个Oracle安装目录都挂载出来,那是给自己挖坑。只挂载oradata,剩下的交给镜像自己去管。

第二,容器删除要养成习惯性检查。不管用docker rm还是docker-compose down,眼睛扫一遍命令里有没有-v,有没有卷删除标记。数据无价,一个多余的参数就能毁掉几天工作成果。

第三,每次变更前先做备份。哪怕是顺手改一个初始化参数,也要确保备份目录里有最近一次完整可用的数据文件副本。Docker容器世界里的“回滚”,靠的就是这份备份。

第四,不要在容器里保存任何需要长期保留的业务文件。数据可以存在数据库里,但日志、配置、密钥这类文件,应该通过挂载目录或者外部配置中心来管理。容器只负责提供运行环境。

写在最后,一些个人体会

其实Docker部署oracle-xe-11g这件事本身并不复杂,真正复杂的是你对“数据”二字的理解有多深。容器可以随时丢,数据不能随便丢。我见过太多同事把oracle-xe-11g容器跑起来后就再没管过持久化,直到某天需要升级镜像时才发现满盘皆输。如果你还没有给正在跑的容器配置任何持久化,我建议你今天就动起来:先备份现有数据,再规划挂载路径,然后用我上面说的验证流程亲自测一遍。这套动作半小时内就能完成,但它能帮你避开未来不知多少个加班的夜晚。

相关新闻

深度学习人脸识别考勤系统:原理与Python实现

深度学习人脸识别考勤系统:原理与Python实现

简介:这是一套面向计算机专业毕业生与课程设计、期末大作业学生的 Python 人脸识别考勤系统完整源码,基于深度学习实现人脸检测、特征提取与签到统计,可以用来解决传统刷卡或人工考勤易代签、效率低的问题,适合作为毕业设计项目直…

2026/10/19 20:16:59 阅读更多 →
Diagram Design方法论:从数据结构到布局算法的可视化实践

Diagram Design方法论:从数据结构到布局算法的可视化实践

diagram-design这个词,说白了就是“画图”。但如果你以为它只是教你怎么画个流程图、架构图,那就太小看它了。我在实际项目里碰到的diagram-design,更像是一门把复杂关系“翻译”成视觉语言的系统工程——从需求分析、数据结构设计&#xff0…

2026/10/19 20:16:59 阅读更多 →
命令模式实战:从撤销重做到宏命令的行为型设计模式详解

命令模式实战:从撤销重做到宏命令的行为型设计模式详解

我先说个结论:命令模式是我个人最常用的行为型设计模式,没有之一。很多人觉得它不就是一个“把方法调用包一层对象”的小技巧嘛,但等你真正遇到需要撤销、排队、做宏、写操作日志的场景时,你会感谢这个“小技巧”的。我在一个模拟…

2026/10/19 20:14:57 阅读更多 →

最新新闻

DeskcommCRM实战:轻量级客户管理与销售跟进全流程落地指南

DeskcommCRM实战:轻量级客户管理与销售跟进全流程落地指南

1. 项目概述:DeskcommCRM 到底是什么,以及为什么值得关注这两年市面上叫 CRM 的产品多得数不过来,但绝大多数都陷入了一个怪圈:功能越做越重,权限越加越细,你要是只为了管好手头几百个客户,得先…

2026/10/19 23:47:06 阅读更多 →
以沟通为核心的轻量级CRM系统设计与实践

以沟通为核心的轻量级CRM系统设计与实践

一个叫 DeskcommCRM 的项目,听起来有点像某个内部系统的代号,但实际上它代表了一类特别值得聊的东西:以“沟通”为核心的客户关系管理工具。我一开始接触这个项目名的时候,第一反应是“Deskcomm”可能是 Desk Communication 的缩写…

2026/10/19 23:47:06 阅读更多 →
从线程池失控到全局限流:高并发系统稳定性实战指南

从线程池失控到全局限流:高并发系统稳定性实战指南

1. 并发失控的第一现场:线程池是怎么被击穿的先说一个我实际排查过的案例场景。某公司核心交易链路的订单服务,平时性能表现很稳定,高峰期单机支撑上千QPS没有任何压力。但一次大促活动中,下游的库存服务因为数据库连接池被打满&a…

2026/10/19 23:39:50 阅读更多 →
STC单片机范例程序实战指南:从点灯到多外设工程搭建

STC单片机范例程序实战指南:从点灯到多外设工程搭建

简介:这是一份面向嵌入式初学者与单片机开发者的STC单片机C语言范例程序合集,围绕ADC采样、串口通信、EEPROM读写、ISP在系统编程、时钟中断、端口测试及优化编程思想等核心功能展开,适合用于课程实验、自学练手与项目参考。资源包共612个文件…

2026/10/19 23:39:50 阅读更多 →
Kafka全链路性能调优:吞吐量与延迟的实战权衡

Kafka全链路性能调优:吞吐量与延迟的实战权衡

前阵子业务告警群里又炸了——消费延迟从平时的几百毫秒一路飙到分钟级,P99 延迟曲线在监控面板上直接拉成一条陡坡。接手这套 Kafka 系统两年,类似的戏码每隔一阵就重演一次。与其每次都临时救火,不如把全链路参数优化这件事系统捋一遍。这篇…

2026/10/19 23:37:47 阅读更多 →
ZXing.Net 0.16.8.0 条码识别实战:从解码链路到性能调优

ZXing.Net 0.16.8.0 条码识别实战:从解码链路到性能调优

简介:ZXing.Net.0.16.8.0 是面向 C# 与 Unity 开发者的开源条码处理库,基于 Zebra Crossing 项目,可在 .NET 框架与 Unity 引擎中实现 QR 码、Aztec、Code 128、EAN 等多种条码的读取与生成。开发者只需调用少量 API 即可为桌面应用、移动端或…

2026/10/19 23:37:47 阅读更多 →

日新闻

周新闻

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

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

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

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

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

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

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

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

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

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →