OceanBase社区版部署实战:从单机到三节点集群

1. 部署前的环境评估与版本选型

1.1 社区版与商业版的边界要先搞清楚

很多人一上来就直接下载安装包,结果装到一半才发现功能不对、架构不匹配,浪费大量时间。这里先花两分钟把社区版和商业版的关系捋清楚。

OceanBase社区版是开源版本,支持MySQL协议,具备分布式事务、多副本一致性、水平扩展这些核心能力,单机或者多机都能跑。商业版则在性能优化、运维工具链、高级压缩、专有云集成等方面有更多增强。如果你是要做业务系统验证、技术预研、中小规模生产环境,社区版完全够用;但如果是金融级核心业务,建议直接走商业版渠道拿技术支持。

版本选择上,我自己主用4.x系列,相对3.x在部署方式上更友好,尤其是OBD(OceanBase Deployer)这套部署工具的成熟度,让整个流程从“手工改一堆配置文件”变成了“写一个yaml、跑一条命令”。如果你拿到的教程还是教你在每个节点上手动执行一堆脚本,那基本是旧版本时代的东西,建议直接切到4.x。

1.2 硬件配置怎么给才不浪费

部署前先算算你的机器能不能扛得住。社区版本身不是一个“轻量级玩具”,它是分布式数据库,即使单机部署,对资源也有明确要求。

最低配置建议是2核8GB内存、50GB磁盘,但这仅仅够“能启动”级别,跑跑测试SQL勉强可以。想要比较流畅地跑TPC-C测试、模拟真实业务负载,建议4核16GB起步。生产环境三节点集群,每个节点8核32GB比较稳妥,磁盘用SSD,数据目录和日志目录分开挂载。

操作系统的选择上,社区版对Linux系的兼容性最好,CentOS 7/8、Alibaba Cloud Linux、麒麟等都可以,内核版本建议3.10以上。我自己实测过CentOS 7.9和Alibaba Cloud Linux 3这两个环境,都很顺利。需要注意,Oracle Linux如果开了UEK内核,某些依赖包会有兼容问题,能避开就避开。

还有一个容易忽略的点:部署前确认glibc版本。OceanBase 4.x对glibc的要求是2.17以上,CentOS 7默认就是这个版本,但如果你用的是精简版系统,可能被裁剪过,部署时会出现莫名其妙的段错误。检查方法很简单,执行ldd --version看一下即可。

1.3 部署工具链:为什么选择OBD而不是手工步骤

社区版提供了两套部署路径:一种是完全手工方式,下载rpm包、逐台安装、手工改配置文件、脚本启动,这个过程繁琐且容易出错;另一种就是OBD一键部署,它是官方提供的自动化部署工具,把环境检查、依赖安装、配置文件生成、服务启动、集群初始化全部串起来。

我强烈推荐用OBD,原因是它不光能装,还能管。你用OBD部署的集群,后续可以通过obd cluster start、obd cluster stop来启停,通过obd cluster status来查状态,比手工维护systemd服务省心太多。而且OBD有内置的检查项,比如磁盘空间不够、端口占用、时区不对,它都会在部署前警告,把很多坑挡在了前面。

2. 单机环境快速部署:先让数据库跑起来

2.1 下载安装包与配置本地源

部署单机环境前,先把安装包准备好。我建议直接配置在线源,不推荐下载一堆rpm手工装。以CentOS为例,你需要在目标机器上创建OceanBase的yum仓库文件。

vi /etc/yum.repos.d/oceanbase.repo

写入以下内容:

[oceanbase] name=OceanBase baseurl=https://mirrors.oceanbase.com/OceanBase/rpm/7/x86_64/ gpgcheck=0 enabled=1

这里提一个细节:/rpm/7/代表CentOS 7/RHEL 7系列,如果你用的是Alibaba Cloud Linux 3或CentOS 8,要改成/rpm/8/,否则yum解析会报「找不到包」。这个目录结构不少人在初次部署时栽过跟头。

配置好后,执行:

yum install -y oceanbase-ce obd

oceanbase-ce是数据库服务端,obd是部署工具。安装完成后,执行obd --version确认工具就绪。

2.2 编写单机部署配置

OBD用的配置文件格式是YAML。单机部署的配置比较简单,核心是定义一个集群名、指定一台机器的IP、分配组件版本和资源路径。

obd cluster autodeploy quick-demo -c oceanbase-ce --version 4.2.1

这条命令会自动生成配置并部署一个单机实例,适合快速尝鲜。但如果你对目录结构有特殊要求,还是建议自己写配置文件。下面是一个我常用的单机配置模板:

oceanbase-ce: servers: - name: ob1 ip: 192.168.1.100 global: home_path: /data/oceanbase data_dir: /data/oceanbase/data redo_dir: /data/oceanbase/redo devname: eth0 mysql_port: 2881 rpc_port: 2882 root_password: "YourStrongPassword@2024" ob1: mysql_port: 2881 rpc_port: 2882

home_path是OceanBase的安装目录,data_dir是数据文件目录,redo_dir是redo日志目录。强烈建议把redo目录放到单独的磁盘或者至少独立分区上,这直接影响写入性能。

devname参数指定网卡名称,OBD需要通过它检测IP。如果你的机器有多个网卡,务必写准确,不然后续observer无法正常通信。

配置写好后,执行部署命令:

obd cluster deploy quick-demo -c quick-demo.yaml

OBD会先做环境检查,然后下载依赖,初始化目录,安装组件,最后启动服务。整个过程视网络速度而定,一般五到十分钟能完成。

2.3 连接数据库做首次验证

部署完成后,OBD会自动初始化系统租户(sys租户)并设置root密码。你可以在部署机的命令行直接用mysql客户端连接:

mysql -h192.168.1.100 -P2881 -uroot -p

但有个小坑:CentOS 7默认不带mysql客户端,需要先安装:

yum install -y mysql

如果连不上,先看2881端口是否监听:

ss -lntp | grep 2881

从实际经验看,最常见的连不上原因就两个:一是防火墙没放行2881,二是配置里mysql_port写错。单机部署的容器化版本还要检查Docker映射,物理机部署基本不涉及。

连上后执行一条SQL验证基本功能:

show databases;

然后建一个测试库和表,随便插入几条数据,看看响应是否正常。这一步能过滤掉90%的“部署假成功”问题。

3. 生产环境三节点集群部署实践

3.1 集群拓扑规划与Zone设计

单机跑通之后,如果你要部署三节点集群,最核心的步骤是做好Zone规划。OceanBase的数据可靠性依赖多副本机制,一个Zone是一组逻辑上的节点集合,每个Zone内可以有一个或多个observer。

三节点生产环境最经典的布局就是三个Zone各放一个节点:

节点IPZone角色
节点A192.168.1.101zone1observer
节点B192.168.1.102zone2observer
节点C192.168.1.103zone3observer

这样的布局下,你可以在线容忍任意一个节点故障,因为多数派副本仍然存活。官方推荐的同步事务语义也需要多数派,至少三副本就是生产级的最低门槛。

规划时还要注意磁盘容量。数据目录空间建议按业务数据量的1.5倍预留,redo日志目录单独留200GB以上。很多生产事故不是机器挂了,而是数据目录写满导致observer异常退出。

3.2 集群配置文件参数详解

三节点集群的配置和单机相比,主要在servers列表、rootserver位置、参数设置上有所升级。下面是我在模拟项目X中实际使用过的配置模板:

oceanbase-ce: servers: - name: ob1 ip: 192.168.1.101 - name: ob2 ip: 192.168.1.102 - name: ob3 ip: 192.168.1.103 global: home_path: /data/oceanbase data_dir: /data/oceanbase/data redo_dir: /data/oceanbase/redo devname: eth0 mysql_port: 2881 rpc_port: 2882 root_password: "YourStrongPassword@2024" # 集群级参数 cluster_id: 1001 memory_limit: 16G system_memory: 3G stack_size: 512K cpu_count: 8 ob1: zone: zone1 ob2: zone: zone2 ob3: zone: zone3

这里重点说一下几个参数:

memory_limit是observer进程能从OS申请的总内存上限,建议设为物理内存的80%左右。system_memory是留给系统租户的内存,不要小于2G,否则系统内部任务容易触发OOM。cpu_count如果机器超过16核,建议显式设置,因为observer默认会用满所有核,反而容易造成CPU调度争抢。

cluster_id建议设置一个业务相关的唯一ID,后续做数据迁移或者多集群管理时会省很多麻烦。

配置文件里还需要额外指定rootserver的位置。OBD在4.x版本已经可以自动选举,但为了部署的可预期性,我习惯手动把第一个节点指定为初始rootserver:

servers: - name: ob1 ip: 192.168.1.101 role: ROOTSERVICE

3.3 执行三节点部署三步曲

配置文件就绪后,部署流程跟单机差不多:

obd cluster deploy ob-cluster -c ob-cluster.yaml obd cluster start ob-cluster obd cluster status ob-cluster

但三节点部署有一个额外强制步骤:初始化Paxos组。实际上OBD在deploy阶段会调用obd cluster init,把三个observer成员关系建立起来。如果你漏掉了这一步,哪怕三个节点进程都在,集群也无法对外提供分布式服务。

初始化过程会有类似这样的输出:

obd cluster init ob-cluster --init-only

执行完成后再查状态,应该看到类似active的标识。

我用一个比喻来解释这个过程:deploy相当于把三台服务器的“数据库引擎”安装好并点火,init是让三个人互相确认“我们属于同一个团队,谁是领导、谁做备份”,没有init,引擎再多也是一盘散沙。

3.4 租户创建与业务接入前的检查

集群起来后,默认只有sys租户。业务要使用OceanBase,需要创建业务租户。这一步很多人会漏,因为单机部署时sys租户就能建表测试,但生产环境不推荐业务直接使用系统租户。

创建业务租户的SQL示例:

CREATE RESOURCE UNIT u_small_config MAX_CPU = 2, MIN_CPU = 1, MAX_MEMORY = '6G', MIN_MEMORY = '4G', MAX_IOPS = 1024, MIN_IOPS = 1024, LOG_DISK_SIZE = '8G'; CREATE RESOURCE POOL pool_small UNIT = u_small_config, UNIT_NUM = 1, ZONE_LIST = ('zone1','zone2','zone3'); CREATE TENANT business_tenant RESOURCE_POOL_LIST = ('pool_small'), PRIMARY_ZONE = 'zone1;zone2,zone3', DEFAULT_TABLEGROUP = NULL, CHARACTER_SET = 'utf8mb4';

PRIMARY_ZONE的定义会影响强一致读的流量优先调度到哪个Zone。上面写法表示优先用zone1,如果zone1故障,再使用zone2和zone3。UNIT_NUM = 1表示每个Zone放一个资源单元,三副本数据落盘就是3份。

创建完成后,用一下命令确认租户可见:

SHOW TENANTS;

然后就可以通过业务租户的链接来连接了:mysql -h192.168.1.101 -P2881 -ubusiness_user@business_tenant -p。如果你把用户名写成裸的business_user,会连不上,这里奥妙在于用户名@租户名的结构,初次用的人最容易在这里卡住。

4. 部署后的健康检查与基础运维

4.1 集群状态与分区副本校验

部署完成不代表万事大吉。至少要跑一遍系统性的健康检查,才能确认集群真的处于“可用且高可用”状态。

先用OBD查集群进程状态:

obd cluster status ob-cluster

正常输出会有每个节点的observer进程状态和uptime。然后登录sys租户,查看集群的全局视图:

SELECT * FROM oceanbase.DBA_OB_ZONES; SELECT * FROM oceanbase.DBA_OB_SERVERS;

重点关注STATUS是否为ACTIVE,以及START_SERVICE_TIME是否已经初始化。如果ZONE显示INACTIVE,说明该Zone内的observer没有正常启动或者心跳丢失,需要进一步查observer日志。

分区副本的校验也很必要,尤其在你创建了业务租户并导入测试数据后:

SELECT COUNT(*) FROM oceanbase.DBA_OB_TABLEGROUPS;

这个命令能确认表的副本分发情况。副本不是均匀分布也不代表有问题,OceanBase的负载均衡会自动迁移,但如果你初始化后立刻检查发现大量副本还在某个Zone里,可以等一会儿再看,或者手动触发均衡任务。

4.2 配置文件与日志体系速查

OceanBase的日志主要分两个部分:observer.log是核心运行日志,记录SQL执行、事务提交、合并等关键事件;election.log是选举相关日志,多副本环境下排查主备切换问题时特别有用。

日志位置默认在home_path/log/,我常用的排查命令组合:

# 查看observer最近的错误日志 grep -i error /data/oceanbase/log/observer.log | tail -n 50 # 查看选举相关日志 tail -n 200 /data/oceanbase/log/election.log

OBD本身的日志在~/.obd/log/下,如果obd cluster deploy中途失败,先看这个目录里的obd.log。

这里有一件非常重要的经验:不要随意删日志文件。OceanBase的日志系统不是简单的追加文件,它内部有log归档和索引机制,直接删物理日志文件会导致observer无法启动,出现data gap错误。真要清理,应该用系统自带的任务或设置日志滚动策略。

4.3 备份策略与恢复演练

任何数据库部署完,备份是第一优先级。OceanBase社区版的备份恢复有两种方式:逻辑备份和物理备份。物理备份在社区版里能力有限,我更推荐逻辑备份工具obd内置的obclient配合SQL导出。

最简单的逻辑备份方式:

obd cluster tenant backup ob-cluster -t business_tenant -p /backup/tenant_20240101.dump

这条命令会把业务租户的数据做逻辑导出。恢复的时候:

obd cluster tenant restore ob-cluster -t business_tenant -p /backup/tenant_20240101.dump

注意,恢复目标租户必须已经存在,且不能有同名表,否则会报错。所以我在实际操作中的习惯是恢复前先建一个临时租户,导入完成确认数据无误后再切换。

另外,备份文件一定要放到独立的存储位置,不要放在observer的数据盘上。曾经见过有人把备份放到/data/oceanbase/backup,结果那个目录和数据目录同盘,磁盘一满,整个数据库一起挂掉,这属于典型的“备份把自己备份没了”。

5. 部署过程中的高频问题与排查实录

5.1 依赖缺失与Python版本兼容问题

OBD本身是用Python写的,对Python版本比较敏感。CentOS 7默认的Python 2.7可以用,但如果你用CentOS 8,系统默认Python 3.6,部分OBD版本会对某些模块不兼容,报出类似ModuleNotFoundError的信息。

我遇到过一次:在新装CentOS 8.5的系统上执行obd cluster deploy,报错找不到setuptools。解决方法是:

yum install -y python3-setuptools

还有一次是缺少mysqlclient库,会在集群初始化写初始化密码时报错。解决方法是安装:

yum install -y mysql-devel gcc

如果依赖问题反复出现,建议直接查看OBD日志中具体是哪个Python模块导入失败,然后针对性地安装对应包,不要盲目装一堆。

5.2 端口占用与防火墙拦截

OceanBase默认使用2881(MySQL协议端口)和2882(内部RPC端口),三节点部署下,每台机器这两个端口都要互通。

如果你在同一台机器上跑多个observer实例,还会用到2883等端口。端口冲突的最典型报错是Bind failed: Address already in use,排查用ss -lntp | grep 288看哪个进程占了。

防火墙关闭或放行的问题,在部署前就应该处理完。我一般直接确认生产环境使用的节点都已经配置成相应放行:

firewall-cmd --permanent --add-port=2881/tcp firewall-cmd --permanent --add-port=2882/tcp firewall-cmd --reload

集群内部节点通信如果被安全组或防火墙挡了,最直观的现象是observer启动后ZONE状态一直是INACTIVE,或者Paxos选举超时。这类问题排查链路长,一定要在动手部署前把网络打通验证做掉。

5.3 内存配置过大导致OOM

内存参数memory_limit如果设置得比物理内存还大,observer会在负载上来后频繁触发OOM。这个问题在低配机器上尤其常见,比如4G内存的机器,memory_limit写成了刚好4G,还有操作系统本身占用,结果OOM killer直接杀掉observer进程。

我习惯的经验公式是:

  • 物理内存8G以下,memory_limit控制在物理内存的60%
  • 物理内存16G,memory_limit设置到物理内存的75%
  • 物理内存32G以上,memory_limit设置到物理内存的80%,同时预留足够空间给OS page cache

如果出现OOM,登录机器执行dmesg | grep -i oom能看到kernel kill进程的记录。解决方式是调低memory_limit,然后重启observer。但注意,直接obd cluster restart会把整个集群重启,生产环境要先确认维护窗口。

5.4 磁盘空间计算失误

OceanBase的data目录增长非常快,尤其是开启合并后,临时文件可能占掉和实际数据差不多的空间。redo日志目录则要支持持续的写入,如果redo所在磁盘写满,observer会直接进入stopped状态。

我踩过一次坑:本机测试环境给了数据盘200GB,以为够用,结果执行了一个大事务导入,加上合并和日志归档,一天之内磁盘就满了,然后集群状态全面飘红。后来我把redo目录挂载到另一块独立的NVMe盘上,问题才彻底解决,因为这个盘即使写满,也不会阻塞数据盘的合并。

给新人的建议:无论什么环境,先执行df -h看看各目录的挂载情况,确保data_dir和redo_dir不在同一个分区。如果机器只有一块盘,至少在不同目录上预估足够余量,并把自动清理日志的定时任务提前配好。

5.5 时区不一致引发的诡异问题

如果你有多台服务器,一台是CST,一台是UTC,部署完成后查询时间戳可能差8小时。这个问题不会导致启动失败,但会导致监控告警、日志时间线错乱。

给集群统一时区很简单,修改每台机器:

timedatectl set-timezone Asia/Shanghai

同时,在OceanBase的配置文件中加上ob_timezone参数统一设定数据库会话时区。这一步在单机部署感受不明显,但在多节点生产环境是必须做的。

写在后面的一些体会

从我反复部署社区版OceanBase的经验看,这套系统的部署本身并不难,真正考验人的是各种前置规划的细节。硬件评估、网络放行、目录挂载、参数预留,这些看起来琐碎的工作,决定了后续运行期你是在安稳地写业务,还是在半夜起来救火。

我个人最想强调的是,把部署脚本和配置文件纳入版本管理。很多团队的数据库环境是“一人部署完,其他人黑盒使用”,一旦要扩容、迁移、重建环境,就只能靠记忆猜配置,这是最危险的状态。我自己的习惯是为每个集群环境单独建一个目录,配置、检查脚本、备份策略说明都放进去,任何人拿到就能复现一套新环境。

社区版OceanBase在4.x之后越来越成熟,部署的复杂度已经大幅下降,但生产环境终究不是跑个demo,多留一分谨慎,少踩一个坑,这大概就是运维人最真实的日常。

相关新闻

动漫社区AI实战:Spring Boot+Spring AI实现推荐、助手与情感分析

动漫社区AI实战:Spring Boot+Spring AI实现推荐、助手与情感分析

做动漫社区的人大概率都会遇到同一个问题:新用户注册以后,首页一堆榜单让他无从下手,老用户看完一部番就消失,社区看起来热闹,其实用户一直在靠搜索引擎解决“下一部看什么”。我做的这个项目没有去堆社交功能&#xf…

2026/10/20 23:58:08 阅读更多 →
语音克隆之后:情感韵律与实时交互的工程化实战

语音克隆之后:情感韵律与实时交互的工程化实战

语音克隆这东西,我前前后后折腾了差不多一年半。最开始纯粹是好奇,想看看能不能用几十秒的素材复刻出一个像模像样的声音出来。结果一脚踩进去才发现,克隆本身只是整个链条里最容易被看见的那一环,真正有意思、也真正难啃的&#…

2026/10/20 23:57:05 阅读更多 →
王爽汇编实验十:子程序、div溢出与数值显示全程解析

王爽汇编实验十:子程序、div溢出与数值显示全程解析

1. 实验目标与三个子程序任务拆解汇编语言学到实验十,基本就进入了一个分水岭:前面的章节一直在教你怎么用指令、怎么访问内存、怎么写分支和循环,但程序稍微一长,代码就乱成一锅粥。这个实验的核心就一个字——结构化。用子程序把…

2026/10/20 23:57:05 阅读更多 →

最新新闻

Quartz动态设置并发数量

Quartz动态设置并发数量

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

2026/10/21 2:48:00 阅读更多 →
AI Agent ROI评估指南:从成本结构到收益测算全解析

AI Agent ROI评估指南:从成本结构到收益测算全解析

1. 先别急着算账,想清楚AI Agent的ROI和传统IT项目有什么不同这两年不少公司都开始折腾AI Agent,有的把它接到客服系统,有的让它帮着写代码,还有的用它处理合同和报表。但当你真坐下来算这笔账时,会发现一个尴尬的问题…

2026/10/21 2:48:00 阅读更多 →
基于卷积神经网络的食物图像识别实战:从ResNet迁移学习到部署

基于卷积神经网络的食物图像识别实战:从ResNet迁移学习到部署

简介:基于卷积神经网络的食物图像识别项目完整代码与数据包,面向具备Python基础并希望实践CNN图像分类的开发者与学习者。资源围绕TensorFlow与tf.keras构建食物识别模型,涵盖数据预处理、网络定义、训练评估与预测全流程,并引入迁…

2026/10/21 2:48:00 阅读更多 →
SECS-II/HSMS调试工具实战:从协议原理到模拟器应用

SECS-II/HSMS调试工具实战:从协议原理到模拟器应用

简介:面向半导体制造与MES系统集成场景,这份SECS-II HSMS调试工具模拟器适合设备工程师、上位机开发人员使用。它可模拟客户端与服务端,用于验证自定义程序是否符合SECS-II通信标准,减少现场联调时的错误与返工。压缩包为rar格式&…

2026/10/21 2:48:00 阅读更多 →
eNSP校园网拓扑设计实战:VLAN划分、DHCP配置与静态路由全解析

eNSP校园网拓扑设计实战:VLAN划分、DHCP配置与静态路由全解析

简介:面向计算机网络期末设计、课程设计及eNSP仿真练习的完整项目资料包,围绕某中学校园网络拓扑设计展开。方案包含网络拓扑选型、综合布线系统规划、教学楼/行政楼/宿舍接入设计,以及VLAN划分、IP地址分配、路由协议配置等模拟配置要点&…

2026/10/21 2:48:00 阅读更多 →
思科模拟器6.2:从安装到避坑的完整实战指南

思科模拟器6.2:从安装到避坑的完整实战指南

简介:这是一份思科模拟器6.2安装包,官方名称为Packet Tracer,面向网络技术学习者、思科认证考生以及开展网络实验教学的教师。软件以图形化方式搭建虚拟网络环境,可模拟路由器、交换机、无线接入点、防火墙等设备,支持…

2026/10/21 2:47:00 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/20 2:50:50 阅读更多 →

月新闻

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