GaussDB 100在EulerOS上的安装实战:从环境准备到自检指南

发布时间:2026/10/17 16:35:45

GaussDB 100在EulerOS上的安装实战:从环境准备到自检指南 简介这是华为云 GaussDB 100 数据库基于 EulerOS 20 SP8 64 位架构的安装压缩包面向需要部署企业级分布式数据库的运维、开发和架构师适用于高并发事务、OLAP 分析与云原生数据管理场景。包内共 6 个文件其中 4 个 Python 脚本承担安装、升级、密钥处理等自动化任务1 个 SHA256 文件用于校验包体是否完整1 个 gz 运行包为数据库程序主体整体仅 7.39MB结构精简下载后即可快速验证完整性并按需解压。已有 1310 人学习下载。借助这些脚本与实际运行包用户可完成 GaussDB 100 的基础部署和升级前准备减少手工配置环节再结合其分片架构、主备高可用、强一致事务、列式存储与智能索引等特性在本地搭建贴近生产环境的实验平台为后续容量规划、性能调优、业务迁移及华为云服务对接积累可直接复用的实操经验。1. 拿到 GaussDB 100 的 EulerOS 安装包先搞清楚它是什么再决定怎么装从文件名就能读出门道GaussDB_100_1.0.1 是版本号EULER20SP8 是操作系统适配版本64bit 标识体系结构tar.gz 则是打包格式。这本质上是一个免编译的国产关系型数据库二进制发布包目标系统是 EulerOS 20 SP8 x86_64 环境解压后通过脚本就能拉起单机实例。对于需要做国产数据库选型验证、把旧系统从 Oracle 迁移到国产库、或者搭建一套能跑业务测试的环境来说这个包能省掉从源码编译的大把时间。我拆过不少这类数据库安装包第一次拿到就踩了环境依赖的坑安装脚本报了一串内核参数错误。所以这篇文章我按“解压检查→环境调整→安装→配置→排错→自检”的顺序写所有命令都在 EulerOS 20 SP8 上验证过新手能照着敲老手可以直接跳到第 5 章看避坑记录。2. 解压与安装前检查环境准备不能省三个命令确认可安装2.1 安装包概述与解压校验拿到 tar.gz 后别急着解压先确认文件下载完整。常见做法是比对 sha256 校验值但实际很多下载源没提供校验文件所以我习惯先用ls -lh看大小再用tar -tzf列出包内文件清单确认关键路径都在。ls -lh GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz tar -tzf GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz | head -20ls -lh显示文件大小如果明明是 1GB 多的包却只显示几百 KB基本就是下载中断了。tar -tzf不解压直接查看压缩包内部文件列表head -20只截取前 20 行看到install.py、package/、docs/这些常见路径说明包结构完整。我还会用file命令看一眼格式file GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz正常输出应该是gzip compressed data如果显示HTML document那八成是从网页直接保存的假包。确认没问题后解压mkdir -p /opt/gaussdb_src tar -xzf GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz -C /opt/gaussdb_src解压后我会立刻检查目录属主。GaussDB 100 要求以非 root 用户运行安装脚本如果解压时用的是 root后续普通用户无法写数据目录。所以解压完直接归一化属主chown -R gaussdb:gaussdb /opt/gaussdb_src这一步很多人忽略安装脚本跑到一半报“Permission denied”才回头查浪费十分钟。/opt/gaussdb_src是我习惯的路径你完全可以放在/home或/data但要注意后文提到noexec挂载选项的问题。2.2 运行账户与系统限制GaussDB 100 明确禁止在 root 下安装运行。原因很简单root 启动的进程一旦被攻击整个系统沦陷而且数据库内部的某些资源获取逻辑在 root 下会走不同路径反而导致初始化异常。所以必须先建专用账户。groupadd -g 2000 gaussdb useradd -u 2000 -g gaussdb -m -d /home/gaussdb -s /bin/bash gaussdb echo GaussDB123 | passwd --stdin gaussdb组 ID 和用户 ID 固定为 2000是方便后续数据目录迁移到其他机器时权限保持一致。在 EulerOS 上passwd --stdin直接读标准输入设置密码其他发行版可能不支持可以用chpasswd替代。账户创建完先验证资源限制su - gaussdb -c ulimit -n su - gaussdb -c ulimit -u默认情况下ulimit -n可能是 1024意味着每个进程最多同时打开 1024 个文件描述符。数据库的运行包含一组后台进程、多个连接线程每个连接至少占用一个 socket fd就算测试环境并发不高初始化阶段也可能同时打开很多文件。一旦超过限制会报“Too many open files”。修改系统级限制cat /etc/security/limits.conf EOF gaussdb soft nofile 1048576 gaussdb hard nofile 1048576 gaussdb soft nproc 16384 gaussdb hard nproc 16384 gaussdb soft stack 2048 gaussdb hard stack 2048 EOFnofile设成 1048576 是为高并发连接预留余量生产环境可以适当调低到 65536。nproc限制进程/线程数量16384 足够单机实例使用。stack是线程栈大小单位 KB2048 表示 2MB这个值太大只会浪费虚拟内存太小则可能在某些深度递归查询中崩栈。设置完以后要重新登录 gaussdb 用户才会生效。可以用su - gaussdb切换一次再执行ulimit -n验证。如果显示 1048576说明生效。2.3 内核参数与安全策略数据库对共享内存极度依赖。GaussDB 100 的 buffer pool 默认可能占据几百 MB如果系统kernel.shmmax太小分配共享内存会直接失败。我一般会把共享内存调到足够大cat /etc/sysctl.conf EOF kernel.shmmax 34359738368 kernel.shmall 8388608 fs.file-max 1048576 net.ipv4.ip_local_port_range 9000 65535 EOF sysctl -pkernel.shmmax是单块共享内存的最大字节数我设的 34359738368 是 32GB给足大头。kernel.shmall是共享内存页数默认值一般较小同步放大后数据库初始化才不会莫名其妙退出。fs.file-max是系统级文件句柄上限配合 limits.conf 双保险。ip_local_port_range放大本地临时端口段数据库客户端频繁连接断开时端口不会被快速耗尽。测试环境下最省事的做法是关掉防火墙和 SELinuxsystemctl stop firewalld systemctl disable firewalld setenforce 0生产环境不建议直接禁用但至少要放行 GaussDB 的监听端口并且给数据目录配置 SELinux 上下文。很多现场安装失败日志里出现Permission denied不是目录权限问题而是 SELinux 拦截了数据库进程对数据目录的写操作。还有一个容易被忽略的坑数据目录所在分区的挂载选项。检查方式findmnt -no TARGET,FSTYPE,OPTIONS /opt/gaussdb如果 OPTIONS 里包含noexec那么即使你有执行权限二进制文件也跑不起来。VPS 或云主机的/home分区经常默认带noexec此时需要重新挂载mount -o remount,exec /opt/gaussdb最后顺手设置时区和字符集。数据库日志时间默认跟随系统时区如果系统是 UTC排查问题时看到的时间与本地时间差 8 小时很容易误判。设置命令timedatectl set-timezone Asia/Shanghai localectl set-locale LANGen_US.UTF-8这一步不做也能装但做了以后你会在后面的自检阶段少很多疑惑。3. 安装 GaussDB 100脚本安装与手动初始化两条路径3.1 使用 install.py 执行静默安装环境准备完毕接下来进入安装环节。安装包根目录下的install.py是官方提供的自动化部署脚本它能完成创建数据目录、初始化系统表空间、设置初始密码、注册环境变量等一系列操作。进入解压目录以 gaussdb 用户执行安装cd /opt/gaussdb_src su - gaussdb -c python3 /opt/gaussdb_src/install.py -U gaussdb -P GaussDB123 -D /opt/gaussdb/data -C DATA_BUFFER_SIZE512MB;LOG_BUFFER_SIZE64MB;SHARED_POOL_SIZE128MB命令参数说明-U指定运行数据库的操作系统用户这里就是 gaussdb-P操作系统用户 gaussdb 的登录密码-D数据库实例的数据目录建议放在独立分区不能是 root 或系统临时目录-C逗号分隔的初始化参数用分号连接多个键值对这里的DATA_BUFFER_SIZE512MB是数据缓冲区大小决定了数据页缓存的上限如果机器内存只有 2GB这个值压到 256MB 比较稳妥。LOG_BUFFER_SIZE是日志缓冲区事务量大的场景可以调到 128MB。SHARED_POOL_SIZE是共享池用来缓存解析计划和数据字典OLTP 类业务建议设成 128MB 起步。执行过程会打印进度。看到类似Install successfully的输出就成功了。但如果你遇到输出停在某个模块卡住不动先别急着重跑去日志目录看find /opt/gaussdb_src -name install*.log -mmin -5 tail -n 100 /opt/gaussdb_src/install/log/install_$(date %Y%m%d).log日志里能看到具体是哪一个脚本在报错。最常见的两个错误一个是-D指定的目录已经存在非空文件导致初始化无法继续另一个是-P密码不含特殊字符但不符合系统密码复杂度策略这种情况先临时用简单密码装完再改。安装脚本成功执行后会在-D指定的目录下生成gaussdb.conf、系统表空间文件、WAL 日志等。同时脚本会把实例的启动命令封装成一个环境脚本通常在~/.bashrc里写入GAUSSDATA、GAUSSHOME变量。验证环境变量su - gaussdb -c echo $GAUSSDATA su - gaussdb -c echo $GAUSSHOME如果输出为空需要手动在 gaussdb 家目录的.bashrc里添加cat /home/gaussdb/.bashrc EOF export GAUSSHOME/opt/gaussdb_src/install export GAUSSDATA/opt/gaussdb/data export PATH\$GAUSSHOME/bin:\$PATH EOF source /home/gaussdb/.bashrcGAUSSHOME指向安装目录GAUSSDATA指向数据目录。环境变量配错或不配后面启动和连接工具都找不到路径会报 “command not found” 之类的错误。3.2 手动初始化数据目录install.py 虽然方便但在某些定制场景下不够灵活。比如你已经有了现成的数据目录需要手动调整数据文件布局或者脚本安装过程中因缺 Python 依赖而失败此时手动初始化反而更可控。手动初始化需要先创建目录并授权mkdir -p /opt/gaussdb/data chown -R gaussdb:gaussdb /opt/gaussdb/data chmod 750 /opt/gaussdb/data目录权限设为 750确保同组用户可读可执行而不是 777。数据库数据文件的权限越严格越好避免其他系统用户读取表数据。然后使用初始化工具生成系统表空间和配置文件。工具名在不同小版本可能有差异常见的是gs_initdbsu - gaussdb -c /opt/gaussdb_src/bin/gs_initdb -D /opt/gaussdb/data -U sys -P GaussDB123这里的-U sys是数据库超级管理员账号不是操作系统用户。-P是 sys 的密码。执行后/opt/gaussdb/data下会生成gaussdb.conf、system01.dbf之类的系统文件。初始化完成后需要手动修改配置文件中的监听地址和端口。默认情况下 GaussDB 100 监听 127.0.0.1:1888如果你想被外部客户端访问编辑gaussdb.confsed -i s/^LISTEN_ADDRESS.*/LISTEN_ADDRESS 0.0.0.0/ /opt/gaussdb/data/gaussdb.conf sed -i s/^PORT.*/PORT 1888/ /opt/gaussdb/data/gaussdb.confLISTEN_ADDRESS设为0.0.0.0表示监听所有网卡。如果只想内网访问可以写成具体 IP。PORT保持默认 1888如果被占用则换成其他端口但要确保防火墙放行。手动初始化与脚本安装的最大区别在于脚本安装会附带生成一套环境变量和启动脚本手动初始化则完全由你自己控制。在正式生产环境我倾向于手动初始化因为每一步都可见可控出了问题也知道去哪查。4. 配置连接与启动服务端口、认证和开机自启4.1 配置文件关键项不管哪种方式安装最终数据库的核心配置都在数据目录下的gaussdb.conf里。这个文件类似 Oracle 的 pfile/spfile是一组键值对的文本配置。我整理了一张最常需要调整的参数表参数名推荐值说明PORT1888数据库监听端口按业务放行LISTEN_ADDRESS0.0.0.0监听网卡地址测试可直接全监听DATA_BUFFER_SIZE512MB数据缓冲区越大命中率越高SHARED_POOL_SIZE128MB共享池影响解析效率LOG_BUFFER_SIZE64MB日志缓冲区MAX_CONNECTIONS1000最大连接数需配合系统 fd 限制DEFAULT_CHARACTER_SETUTF8字符集迁移前必须确认连接数修改示例sed -i s/^MAX_CONNECTIONS.*/MAX_CONNECTIONS 2000/ /opt/gaussdb/data/gaussdb.confMAX_CONNECTIONS调到 2000 时必须同步确认系统 nofile 是否足够。一个连接大概消耗 20 个文件描述符2000 个连接就需要至少 40000 fd这也是前面为什么把ulimit -n拉到 1048576。字符集尽量在初始化前确定初始化后修改容易产生乱码。如果业务要从 Oracle 迁移建议用AL32UTF8对应的UTF8不要用GBK避免国际化字符丢失。4.2 启动与连接验证启动数据库实例我一般用gs_ctlsu - gaussdb -c gs_ctl start -D /opt/gaussdb/datags_ctl是数据库实例的管理工具-D指向数据目录。启动成功后检查进程和日志ps aux | grep gaussdb | grep -v grep tail -100 /opt/gaussdb/data/alert_log/alert_$(date %Y%m%d).log看到database is ready说明启动完成。如果没有去日志里搜ERROR或FATAL。客户端连接工具默认在安装目录的 bin 下叫zsql。连接语法zql sys/GaussDB123127.0.0.1:1888sys是超级管理员账号GaussDB123是密码127.0.0.1:1888是连接地址。连接成功后能进入SQL提示符。如果连接报ORA-12541: TNS:no listener大概率是监听地址配置成了127.0.0.1而你又从别的机器访问。解决方式在 4.1 已经讲过把LISTEN_ADDRESS改为目标 IP。设置开机自启。GaussDB 100 没有直接提供 systemd 服务文件需要自己写一个。我一般会在/etc/systemd/system/gaussdb.service里创建单元文件cat /etc/systemd/system/gaussdb.service EOF [Unit] DescriptionGaussDB 100 Database Afternetwork.target [Service] Usergaussdb Groupgaussdb ExecStart/opt/gaussdb_src/bin/gs_ctl start -D /opt/gaussdb/data ExecStop/opt/gaussdb_src/bin/gs_ctl stop -D /opt/gaussdb/data Restarton-failure Typeforking [Install] WantedBymulti-user.target EOF systemctl daemon-reload systemctl enable gaussdb systemctl start gaussdbTypeforking表示gs_ctl start会 fork 出后台进程后返回systemd 据此判断服务已启动。Restarton-failure让异常退出时自动拉起避免半夜数据库挂掉没被发现。5. 常见问题与避坑记录五个装完就翻车的真实案例5.1 现象一install.py 提示“Access to ‘/root’ is forbidden”有次在测试机上执行安装脚本直接退出日志里写着访问 /root 被拒绝。原因很简单我是用sudo python3 install.py跑的当前用户虽然是 gaussdb但安装脚本内部某些命令不知为何把当前目录定位到了 root 的家目录而 gaussdb 用户对 /root 没有任何权限于是初始化脚本无法读取临时文件。解决方式是严格切换到 gaussdb 用户再执行不要用sudo -E或su -c时保留 root 环境变量。从那以后我每次装数据库都会先su - gaussdb完完全全切到普通身份再跑安装命令。5.2 现象二端口被占用但 ss 查不到有一次装完数据库启动时报端口被占用可我执行ss -lntp | grep 1888却什么都没看到。原因是 GaussDB 100 的默认监听端口是 1888但系统里某个服务用SO_REUSEPORT占用了同一端口段ss默认不会显示所有权限信息。解决方法是先换成其他端口测试比如 2888修改 gaussdb.conf 里的 PORT 并重启。如果在生产环境必须用 1888就lsof -i :1888全权限查但更建议换端口不是所有业务都有强绑定端口的执念。5.3 现象三数据库启动后立刻崩溃日志里有“Invalid shm”某次客户现场实例启动一秒后消失alert_log 里出现共享内存分配无效的错误。排查后发现/etc/sysctl.conf里的kernel.shmmax虽然设了 32GB但没执行sysctl -p系统仍是默认的 32MB。数据库请求一块 512MB 的共享内存肯定失败。解决方式就是先提前执行sysctl -p并确认sysctl kernel.shmmax输出的是新值然后再启库。这类问题在云主机上尤其多因为重启系统后/etc/sysctl.conf常被初始化脚本覆盖最好检查配置是否持久化。5.4 现象四连接时提示密码过期GaussDB 100 默认对 sys 用户有密码有效期限制安装时的密码可能被记为临时弱密码过一段时间连接就报过期。我当时查了很久以为是密码错了最后在文档里发现有个PASSWORD_EXPIRE参数。解决方式是在第一次连接成功后立刻修改密码并把过期策略关掉ALTER USER sys IDENTIFIED BY NewPass123;修改后选择记住密码有效期或直接在配置文件里把PASSWORD_LOCK_TIME和PASSWORD_LIFE_TIME调成 0。如果是测试环境就直接关掉生产环境按安全策略来。5.5 现象五磁盘空间不足但 df 显示还有数据初始化到一半报“No space left on device”我尝试df -h显示根分区剩余 50GB完全够用。后来才发现初始化进程把数据写到了临时目录/tmp而/tmp所在分区是独立的只有 500MB。GaussDB 100 的安装和初始化过程会使用系统临时目录存放中间文件默认是/tmp。解决方式是修改环境变量TMPDIR或者在安装命令里指定-T参数让它使用大空间目录。从那以后我装任何数据库都会先df -h /tmp和df -h /var/tmp看一圈。6. 安装后的快速自检清单用一条 SQL 确认数据库真正可用6.1 从进程、端口到数据查询的三层自检装完数据库别急着交工跑一套自检脚本把环境状态固化下来。我习惯从上到下一共查三张网第一层是进程层确认实例是否存活pgrep -f gaussdb -D /opt/gaussdb/data /dev/null echo process OK || echo process FAIL第二层是端口层确认监听正常ss -lnt | grep 1888 /dev/null echo listen OK || echo listen FAIL第三层是 SQL 层真正能连上并执行查询才算可用zsql sys/GaussDB123127.0.0.1:1888 -e SELECT 1 FROM dual;如果 SQL 返回1说明实例不仅能启动还能响应请求。这里的FROM dual是 Oracle 风格写法GaussDB 100 兼容这种语法正好可以验证兼容性。6.2 用自检脚本固化环境基线我更建议把整个自检过程写成一个 shell 脚本保存到/home/gaussdb/check_db.sh以后每次启动完都跑一遍#!/bin/bash # 自检脚本验证 GaussDB 100 基本可用性 DATA_DIR/opt/gaussdb/data PORT1888 PASSGaussDB123 echo 1. Check process pgrep -f gaussdb -D $DATA_DIR /dev/null echo OK || { echo FAIL; exit 1; } echo 2. Check listen ss -lnt | grep :$PORT /dev/null echo OK || { echo FAIL; exit 1; } echo 3. Check SQL zsql sys/$PASS127.0.0.1:$PORT -e CREATE TABLE IF NOT EXISTS sm_check(id INT); DROP TABLE sm_check; /dev/null 21 echo OK || echo FAIL脚本里第 3 步会创建一个临时表再删除如果这都能顺利执行说明建表、索引、DDL 功能正常。连建表都成功接下来业务导入表结构基本不会出幺蛾子。跑完脚本后我把输出重定向到日志文件方便以后对比bash /home/gaussdb/check_db.sh /home/gaussdb/log/check_$(date %Y%m%d).log从那以后我每次装完 GaussDB 100都会强制走一遍这套检查哪怕再忙也不跳过。数据库装起来只是第一步能不能稳定响应业务才是真问题。希望这份拆解能帮你绕开我当初踩过的坑真正把这个安装包用起来。本文还有配套的精品资源点击获取
延伸阅读

更多相关文章

2026/10/17 16:35:45

QMT自动化下单实战:Python连接、下单、回调与避坑全指南

简介:面向量化交易开发者的自动化下单实操包,围绕迅投QMT系统展开,重点解决极简版QMT环境配置与程序化交易开发问题,也兼顾普通投研版与极简版两种模式的特点。内容涵盖XtQuant模块的下载安装、XtData行情模块与Xttrader交易模块的…

2026/10/17 16:35:45

多卡训练慢?先读懂GPU拓扑:PCIe、NVLink与NCCL调优指南

如果你的多卡训练速度怎么也上不去,先别急着换卡调参。跑一条命令,看看你手上这几块GPU是怎么互相认识的。这就是今天要聊的GPU拓扑结构。它描述的是多块GPU在主板上的物理连接关系:哪些卡直连NVLink,哪些走PCIe交换机&#xff0c…

2026/10/17 16:35:45

swoole_loader 原理与 PHP 字节码加载实战指南

简介:本资源是面向PHP开发者与运维工程师的Swoole Loader扩展全版本兼容仓库,专为解决不同PHP环境(尤其是旧版及多线程场景)下无法直接编译或缺失预编译扩展的痛点。资源提供覆盖PHP 5.4至8.1全系列版本的so(Linux/mac…

2026/10/17 17:45:52

低代码平台集成TinyVue组件库:Schema驱动渲染与性能优化实践

前阵子在做一个低代码搭建平台的项目,最让我头疼的不是拖拽逻辑,也不是状态管理,而是组件库选型和集成。市面上能叫得上名字的组件库我基本都调研过一圈,要么组件覆盖度不够,要么自定义主题麻烦,要么不好在…

2026/10/17 17:45:52

Linux运维常用脚本:巡检、批量执行与故障自愈实践

简介:面向 Linux 运维工程师和初中级运维学习者的常用脚本合集,聚焦日常巡检、批量管理、网站部署、安全防护等高频场景,可在真实服务器环境中直接参考改造。压缩包共 20 个文件,以 19 个 shell 脚本为主,附带 1 个 ng…

2026/10/17 17:45:52

Unity Task与多线程实战:从线程模型到生命周期管理

我先把话放在前面:标题里的Untiy是个笔误,不过不影响理解,今天要聊的就是Unity里的Task与多线程。这话题我太熟了,因为几乎每个月都能遇到有人把耗时操作直接丢主线程里跑,然后被一顿卡顿教育。我自己第一次在Unity里写…

2026/10/17 17:45:52

selectedIndex属性深度解析:下拉框选中的正确姿势

select下拉选项的selectedIndex属性(你用过吗)前阵子在某前端群里看到一个提问:明明给下拉框设置了value,页面也渲染出了对应的option,为什么提交表单时却拿不到预期选项?问题最后定位到一行很老实的代码—…

2026/10/17 17:45:52

Debian下RAID5+LVM存储方案:从部署到故障处理实践指南

在实际运维里,Debian系统上做“raid5lvm”组合,几乎是中小型Linux服务器最常碰到的存储方案之一。我刚接手某公司那台文件服务器时,前一位运维留下的就是这套东西:4块数据盘做了RAID 5,然后在上面叠加了一层LVM&#x…

2026/10/17 17:40:52

ArcGIS空间分析本质:从画图到地理问题数学求解

简介:本资源是一份系统讲解ArcGIS空间分析核心功能的PPT教学课件,面向地理信息科学、测绘工程、城乡规划等专业的本科生及GIS初学者,旨在帮助学习者掌握空间分析的基本原理、工具模块与典型应用场景。课件内容覆盖矢量与栅格数据的空间分析方…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/17 14:20:58

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/17 0:04:32

PlanarSLAM:面向曼哈顿世界的点线面联合SLAM系统

简介:本资源是面向机器人视觉与SLAM研究者的C开源RGB-D SLAM系统实现,专为结构化室内场景(如办公室、走廊)设计,通过融合点、线、平面三类几何特征并引入“曼哈顿世界”假设,显著提升位姿跟踪鲁棒性与稠密地…

2026/10/17 0:04:32

TDH Workflow调度实战:从DAG依赖驱动到任务编排与故障排查

1. 从一个调度脚本说起:TDH Workflow到底在解决什么问题第一次接触TDH的Workflow,是在一个数据清洗项目里。当时团队每天要跑几十个ETL任务,任务之间有严格的先后依赖——A表清洗完才能跑B表的关联,B表跑完才能触发C表的聚合。最开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑