news 2026/9/20 22:33:07

TDengine 用户管理完全指南:创建、查询、修改与安全策略(含 TOTP 双因素认证与 Token 管理)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TDengine 用户管理完全指南:创建、查询、修改与安全策略(含 TOTP 双因素认证与 Token 管理)

TDengine 用户管理完全指南:创建、查询、修改与安全策略(含 TOTP 双因素认证与 Token 管理)

【免费下载链接】tdengineTDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.项目地址: https://gitcode.com/taosdata/tdengine

本文是 TDengine 时间序列数据库用户管理体系的实战指南,围绕CREATE USERSHOW USERSALTER USERDROP USER等 SQL 语句展开,覆盖密码策略、会话与登录限制、IP 白名单/黑名单、基于时间的登录时段控制、TOTP 双因素认证以及 Token 令牌管理等企业级安全能力。读完本文,你将能够在 taos shell 或业务代码中完整地完成用户的创建、授权边界设定、安全加固与生命周期管理,并理解这些语法背后的服务端实现原理。

功能概述与版本说明

TDengine 的用户管理语法在社区版与企业版中均可使用,但功能可用性存在差异:社区版(TDengine TSDB Community Edition)仅开放基础功能,高级安全能力(会话限制、密码策略、IP 白名单、TOTP、Token 等)属于**企业版(TDengine TSDB Enterprise Edition)**特性。文中各参数后标注了引入版本,例如SESSION_PER_USER等会话与密码策略参数支持于企业版 v3.4.0.0 及以上,TOTP 双因素认证支持于 v3.4.0.1 及以上。

需要说明的是,社区版虽然可以执行 IP 白名单、Token 等语句,但不会强制执行对应限制,相关安全策略只有在企业版中才真正生效。

创建用户:CREATE USER

创建用户的完整语法如下:

CREATE USER user_name PASS 'password' [SYSINFO {1|0}] [CREATEDB {1|0}] [ENABLE {1|0}] [CHANGEPASS {2|1|0}] [SESSION_PER_USER {value | DEFAULT | UNLIMITED}] [CONNECT_TIME {value | DEFAULT | UNLIMITED}] [CONNECT_IDLE_TIME {value | DEFAULT | UNLIMITED}] [CALL_PER_SESSION {value | DEFAULT | UNLIMITED}] [VNODE_PER_CALL {value | DEFAULT | UNLIMITED}] [FAILED_LOGIN_ATTEMPTS {value | DEFAULT | UNLIMITED}] [PASSWORD_LOCK_TIME {value | DEFAULT | UNLIMITED}] [PASSWORD_LIFE_TIME {value | DEFAULT | UNLIMITED}] [PASSWORD_GRACE_TIME {value | DEFAULT | UNLIMITED}] [PASSWORD_REUSE_TIME {value | DEFAULT}] [PASSWORD_REUSE_MAX {value | DEFAULT}] [INACTIVE_ACCOUNT_TIME {value | DEFAULT | UNLIMITED}] [ALLOW_TOKEN_NUM {value | DEFAULT | UNLIMITED}] [SECURITY_LEVEL min_level, max_level] [HOST {ip | ip range} [, {ip | ip range}] ...] [NOT_ALLOW_HOST {ip | ip range} [, {ip | ip range}] ...] [ALLOW_DATETIME {time range} [, {time range}] ...] [NOT_ALLOW_DATETIME {time range} [, {time range}] ...]

命名与密码约束

  • 用户名最长23 字节
  • 密码长度必须为8 到 255 个字符,且必须包含大写字母、小写字母、数字、特殊字符四类中的至少三类。特殊字符包括:! @ # $ % ^ & * ( ) - _ + = [ ] { } : ; > < ? | ~ , .
  • 强密码校验可以通过在taos.cfg中设置enableStrongPassword 0关闭,也可以通过 SQL 动态关闭:
alter all dnodes 'EnableStrongPassword' '0'

从源码看,密码格式校验位于 mndUser.c 的mndCheckCreateUserReqPasswordFmt:当tsEnableStrongPassword == 0时允许简单密码;否则依次校验最小长度(TSDB_PASSWORD_MIN_LEN)、最大长度(TSDB_PASSWORD_MAX_LEN)与复杂度(isComplexPass),任一不满足即返回TSDB_CODE_MND_INVALID_PASS_FORMAT或对应长度错误码。

各选项说明

选项含义与取值默认值备注
SYSINFO是否可查看系统信息(服务配置、dnode、vnode、存储等)。1可查看,0无权限1
CREATEDB是否可创建数据库。1可创建,0不可0企业版 v3.3.2.0 起支持
ENABLE用户是否启用。1启用,0禁用;禁用用户无法连接数据库1
CHANGEPASS是否允许/必须修改密码:2可修改,1必须修改,0不可修改2企业版 v3.4.0.0 起支持
SESSION_PER_USER同一用户最大并发连接数enableAdvancedSecurity=1时为32,否则-1(UNLIMITED)最小1-1/UNLIMITED关闭限制;企业版 v3.4.0.0 起
CONNECT_TIME单次会话最大时长(分钟)高级安全开启时480,否则-1最小1;企业版 v3.4.0.0 起
CONNECT_IDLE_TIME单次会话最大空闲时长(分钟)高级安全开启时30,否则-1最小1;企业版 v3.4.0.0 起
CALL_PER_SESSION单会话最大子调用次数高级安全开启时128,否则-1最小1;企业版 v3.4.0.0 起
VNODE_PER_CALL单次调用最多涉及的 vnode 数-1(不限)企业版 v3.4.0.0 起
FAILED_LOGIN_ATTEMPTS连续登录失败次数上限,超限锁定高级安全开启时3,否则 UNLIMITED最小1;企业版 v3.4.0.0 起
PASSWORD_LOCK_TIME因登录失败被锁定的解锁等待时间(分钟)高级安全开启时1440,否则1最小1UNLIMITED表示永久锁定;企业版 v3.4.0.0 起
PASSWORD_LIFE_TIME密码有效期(天)高级安全开启时90,否则 UNLIMITED最小1UNLIMITED永不过期;企业版 v3.4.0.0 起
PASSWORD_GRACE_TIME密码过期后的宽限期(天),宽限期内仅允许修改密码高级安全开启时7,否则 UNLIMITED最小0;超期未改则锁定;企业版 v3.4.0.0 起
PASSWORD_REUSE_TIME旧密码不可重复使用的时间(天)高级安全开启时30,否则0范围0~365;须与PASSWORD_REUSE_MAX同时满足;企业版 v3.4.0.0 起
PASSWORD_REUSE_MAX旧密码可复用前需经历的改密次数高级安全开启时5,否则0范围0~100;企业版 v3.4.0.0 起
INACTIVE_ACCOUNT_TIME用户不活动锁定周期(天)高级安全开启时90,否则 UNLIMITED最小1;企业版 v3.4.0.0 起
ALLOW_TOKEN_NUM允许的 Token 最大数量3最小0;企业版 v3.4.0.0 起
SECURITY_LEVEL强制访问控制(MAC)下的用户安全级别区间(min_level, max_level)企业版特性,详见授权管理
HOST/NOT_ALLOW_HOSTIP 白名单/黑名单,可填单 IP(如192.168.1.1)或 CIDR 网段(如192.168.1.1/24见下文 IP 白名单章节企业版 v3.4.0.0 起;需enableWhiteList1才生效,详见 taosd
ALLOW_DATETIME/NOT_ALLOW_DATETIME允许/禁止登录的时间段(按服务器本地时区),格式为"日期 + 起始时间(精确到分钟)+ 时长(分钟)",如2025-12-25 08:00 120TUE 08:00 120见下方组合语义企业版 v3.4.0.0 起

登录时间段的组合语义

  • 两者均未设置:任何时间均可登录。
  • 仅设置ALLOW_DATETIME:仅在该时间段内允许登录。
  • 仅设置NOT_ALLOW_DATETIME:仅禁止在该时间段内登录。
  • 两者均设置:仅允许在属于ALLOW_DATETIME且不属于NOT_ALLOW_DATETIME的时间登录。

关于 enableAdvancedSecurity

FAILED_LOGIN_ATTEMPTS等选项的默认值取决于配置参数enableAdvancedSecurity。该参数默认开启(源码中int8_t tsEnableAdvancedSecurity = 1;,见 tglobal.c),属于全局安全类配置(CFG_PRIV_SECURITY)。可通过 SQL 动态切换:

-- 开启高级安全(默认) alter all dnodes 'EnableAdvancedSecurity' '1' -- 关闭高级安全 alter all dnodes 'EnableAdvancedSecurity' '0'

关闭高级安全后,密码校验逻辑相应放宽:在 mndUser.c 中,当tsEnableAdvancedSecurity == 0且使用默认密码时直接放行,不再强制复杂密码。

创建用户示例

创建一个密码为abc123!@#、可查看系统信息的用户test

taos> create user test pass 'abc123!@#' sysinfo 1; Query OK, 0 of 0 rows affected (0.001254s)

查看用户:SHOW USERS 与系统表

查看系统中全部用户:

SHOW USERS;

示例输出:

taos> show users; name | super | enable | sysinfo | createdb | create_time | totp | allowed_host | allowed_datetime | ============================================================================================================================================ test | 0 | 1 | 1 | 0 | 2025-12-24 18:56:20.709 | 0 | +127.0.0.1/32, +::1/128 | +ALL | root | 1 | 1 | 1 | 1 | 2025-12-24 18:00:43.197 | 0 | +127.0.0.1/32, +::1/128 | +ALL | Query OK, 2 rows in set (0.001657s)

输出列说明:allowed_host中地址前缀+表示白名单条目(允许登录),前缀-表示黑名单条目(禁止登录);allowed_datetime同理。totp列为1表示该用户已启用 TOTP 双因素认证。

也可以查询内置系统表INFORMATION_SCHEMA.INS_USERS获取相同的用户信息:

taos> select * from information_schema.ins_users; name | super | enable | sysinfo | createdb | create_time | totp | allowed_host | allowed_datetime | ============================================================================================================================================ test | 0 | 1 | 1 | 0 | 2025-12-24 18:56:20.709 | 0 | +127.0.0.1/32, +::1/128 | +ALL | root | 1 | 1 | 1 | 1 | 2025-12-24 18:00:43.197 | 0 | +127.0.0.1/32, +::1/128 | +ALL | Query OK, 2 row(s) in set (0.007383s)

在仓库的 mnode 单元测试 user.cpp 中,可以看到通过TSDB_MGMT_TABLE_USER消息类型配合ins_users表名来批量验证用户信息的测试模式,这印证了SHOW USERSINFORMATION_SCHEMA.INS_USERS底层共享同一份用户元数据。

删除用户:DROP USER

DROP USER [IF EXISTS] user_name;

IF EXISTS可避免用户不存在时报错。注意:删除用户时,该用户拥有的 Token 会被级联删除

修改用户:ALTER USER

修改用户配置的完整语法:

ALTER USER user_name alter_user_clause alter_user_clause: { [PASS 'password'] [SYSINFO {1|0}] [CREATEDB {1|0}] [ENABLE {1|0}] [CHANGEPASS {2|1|0}] [SESSION_PER_USER {value | DEFAULT | UNLIMITED}] [CONNECT_TIME {value | DEFAULT | UNLIMITED}] [CONNECT_IDLE_TIME {value | DEFAULT | UNLIMITED}] [CALL_PER_SESSION {value | DEFAULT | UNLIMITED}] [VNODE_PER_CALL {value | DEFAULT | UNLIMITED}] [FAILED_LOGIN_ATTEMPTS {value | DEFAULT | UNLIMITED}] [PASSWORD_LOCK_TIME {value | DEFAULT | UNLIMITED}] [PASSWORD_LIFE_TIME {value | DEFAULT | UNLIMITED}] [PASSWORD_GRACE_TIME {value | DEFAULT | UNLIMITED}] [PASSWORD_REUSE_TIME {value | DEFAULT}] [PASSWORD_REUSE_MAX {value | DEFAULT}] [INACTIVE_ACCOUNT_TIME {value | DEFAULT | UNLIMITED}] [ALLOW_TOKEN_NUM {value | DEFAULT | UNLIMITED}] [SECURITY_LEVEL min_level, max_level] [ADD HOST {ip | ip range} [, {ip | ip range}] ...] [DROP HOST {ip | ip range} [, {ip | ip range}] ...] [ADD NOT_ALLOW_HOST {ip | ip range} [, {ip | ip range}] ...] [DROP NOT_ALLOW_HOST {ip | ip range} [, {ip | ip range}] ...] [ADD ALLOW_DATETIME {time range} [, {time range}] ...] [DROP ALLOW_DATETIME {time range} [, {time range}] ...] [ADD NOT_ALLOW_DATETIME {time range} [, {time range}] ...] [DROP NOT_ALLOW_DATETIME {time range} [, {time range}] ...] }

各选项含义与CREATE USER一致;DEFAULT表示恢复默认值,UNLIMITED表示解除限制。

示例:禁用用户test

taos> alter user test enable 0; Query OK, 0 of 0 rows affected (0.001160s)

改密后的会话处理机制

修改用户密码(ALTER USER ... PASS)后,服务端会在心跳检测时发现仍使用旧密码的既有会话并将其断开,这些连接上的后续请求会返回认证失败错误码0x80000357;执行改密的连接本身不受影响。需要特别注意的是,使用 Token 认证的连接不受此机制约束

SYSINFO 与角色的联动

自企业版 v3.4.2.1 起,ALTER USER ... SYSINFO {0|1}会同步更新用户的SYSINFO_0/SYSINFO_1角色;反过来,授予更高系统角色也会提升SYSINFO属性。详见授权管理中的联动说明。

IP 白名单与黑名单(HOST / NOT_ALLOW_HOST)

IP 白名单/黑名单用于限制用户可登录的源地址,与GRANT权限体系相互独立管理。企业版自 v3.2.0.0 起提供白名单能力,HOST/NOT_ALLOW_HOST语法自 v3.4.0.0 起支持。社区版可以执行增删改查语句,但不强制执行源 IP 限制。设置系统配置enableWhiteList1后白名单/黑名单才生效(见 taosd)。该配置默认值为false(源码见 tglobal.c),属于系统类动态配置(CFG_DYN_SERVERCFG_PRIV_SYSTEM)。

登录判定规则

  • HOSTNOT_ALLOW_HOST均未设置,用户可从任意地址登录。注意:出于安全与便利考虑,创建用户时若设置了HOST,或两者均未设置,系统会自动将127.0.0.1::1加入HOST。因此"任意地址"的情形只会在通过ALTER USERHOSTNOT_ALLOW_HOST全部删除后出现。
  • 仅设置HOST:只允许从这些地址/网段登录。
  • 仅设置NOT_ALLOW_HOST:禁止从这些地址/网段登录,其余地址允许。
  • 两者均设置:仅允许从属于HOST且不属于NOT_ALLOW_HOST的地址登录。

从创建用户的实现看(mndUser.c):当创建请求未携带任何 IP 范围时,调用createDefaultIpWhiteList生成默认白名单;当携带了正向(非neg)范围时,会通过addDefaultIpToTable自动补充本机 IP;范围总数超过MND_MAX_USER_IP_RANGE时返回TSDB_CODE_MND_TOO_MANY_USER_IP_RANGE

添加与查询示例

添加 IP 白名单:

CREATE USER test PASS 'taosdata1' HOST '192.168.1.0/24', '10.0.0.1'; ALTER USER test ADD HOST '192.168.2.0/24';

添加 IP 黑名单:

ALTER USER test ADD NOT_ALLOW_HOST '203.0.113.5/32';

查询:

SELECT name, allowed_host FROM information_schema.ins_users; SHOW USERS;

allowed_host+前缀表示白名单(允许登录),-前缀表示黑名单(禁止登录)。

移除条目:

ALTER USER test DROP HOST '192.168.2.0/24'; ALTER USER test DROP NOT_ALLOW_HOST '203.0.113.5/32';

使用注意事项

  • 社区版与企业版均可添加和查询条目,但社区版不强制执行 IP 限制。
  • 可一次添加多个 IP 范围,服务端仅对完全相同的条目去重。例如:CREATE USER u_write PASS 'taosdata1' HOST 'iprange1','iprange2'
  • 127.0.0.1默认加入白名单且在查询中可见(部分文档场景还会包含::1)。
  • 集群节点 IP 集合会自动加入白名单,但查询中不可见
  • taosAdaptertaosd不在同一主机时,需手动将taosAdapter的 IP 加入taosd的白名单。
  • 集群中enableWhiteList必须在各节点保持一致(全部false或全部true),否则集群无法启动。
  • 白名单变更约 1 秒(不超过 2 秒)生效;变更本身对收发性能影响可忽略,变更完成后无持续影响;不影响已入白名单 IP 的集群与客户端。
  • 若添加了存在包含关系的两个网段(如 A:192.168.1.1/16与 B:192.168.1.1/24),由于情形复杂不会被合并。
  • 删除必须精确匹配:添加的是192.168.1.1/24,就必须删除192.168.1.1/24
  • 只有root可以为其他用户添加或删除白名单条目。
  • 兼容旧版本,但不支持从当前版本回滚到旧版本。
  • x.x.x.x/32x.x.x.x等价,展示为x.x.x.x
  • 客户端收到0.0.0.0/0表示白名单未启用。
  • 白名单变更后,客户端通过心跳感知。
  • 单用户最大 IP 数为2048

TOTP 双因素认证

TOTP 双因素认证是企业版特性,支持版本 v3.4.0.1 及以上。启用后,客户端登录时除密码外还需提供 TOTP 动态验证码。

创建/更新 TOTP 密钥

CREATE TOTP_SECRET FOR USER user_name

若用户尚未创建 TOTP 密钥,该命令会为其生成;若已存在,则更新密钥。无论哪种情况,命令都会返回新生成的密钥,该密钥仅显示一次,请及时妥善保存。系统会自动为拥有 TOTP 密钥的用户启用双因素认证。

启用后,TDengine 要求 OTP 为6 位数字、每 30 秒刷新一次。请据此配置你的 TOTP 生成器(如 Google Authenticator、1Password 等),否则客户端可能登录失败。

test用户创建 TOTP 密钥示例:

taos> create totp_secret for user test; totp_secret | ======================================================= ERIRPLZL4ZBFTPT5BNXMVFPR4Z3PTHUWTBTCNZPOHYPYQGTD25XA | Query OK, 1 row(s) in set (0.002314s)

在服务端创建用户的实现中(mndUser.c),当请求携带totpseed时,会调用taosGenerateTotpSecret生成 TOTP 种子并存入用户对象,生成失败则返回TSDB_CODE_PAR_INVALID_OPTION_VALUE

删除 TOTP 密钥

DROP TOTP_SECRET FROM USER user_name

删除后该用户的 TOTP 双因素认证即被禁用。示例:

taos> drop totp_secret from user test; Drop OK, 0 row(s) affected (0.002295s)

Token 令牌管理

Token 管理是企业版特性,支持版本 v3.4.0.0 及以上。Token 可替代密码用于连接认证,且不受"改密即断开旧会话"机制影响,适合服务间调用等场景。

创建 Token

CREATE TOKEN [IF NOT EXISTS] token_name FROM USER user_name [ENABLE {1|0}] [TTL value] [PROVIDER value] [EXTRA_INFO value]
  • token_name最长31 字节
  • ENABLE:Token 是否启用,1启用、0禁用;禁用的 Token 无法用于连接数据库。默认1
  • TTL:有效期(天),从创建时间起算。默认0表示永久有效。
  • PROVIDER:Token 提供方名称,最长63 字节
  • EXTRA_INFO:由应用管理的附加信息,最长1023 字节

示例:为test用户创建名为test_token的 Token。Token 值仅在创建时显示一次,之后无法再查询,请及时保存:

taos> create token test_token from user test; token | ================================================================== BsyjYKxhCMntZ3pHgweCd2uV2C8HoGKn8Mvd49dRRCtzusX0P1mgqRMrG7SzUca | Query OK, 1 row(s) in set (0.003018s)

查看 Token

SHOW TOKENS;

根据权限不同,你可能只能看到自己的 Token。示例:

taos> show tokens; name | user | provider | enable | create_time | expire_time | extra_info | ========================================================================================================= root_token | root | | 1 | 2025-12-25 10:02:28.000 | 1970-01-01 08:00:00.000 | | test_token | test | | 1 | 2025-12-25 10:01:47.000 | 1970-01-01 08:00:00.000 | | Query OK, 2 row(s) in set (0.003313s)

也可查询内置系统表INFORMATION_SCHEMA.INS_TOKENS

taos> select * from information_schema.ins_tokens; name | user | provider | enable | create_time | expire_time | extra_info | ========================================================================================================= root_token | root | | 1 | 2025-12-25 10:02:28.000 | 1970-01-01 08:00:00.000 | | test_token | test | | 1 | 2025-12-25 10:01:47.000 | 1970-01-01 08:00:00.000 | | Query OK, 2 row(s) in set (0.007438s)

修改 Token

ALTER TOKEN token_name [ENABLE {1|0}] [TTL value] [PROVIDER value] [EXTRA_INFO value]

注意:修改有效期(TTL)时,新的有效期从修改时刻重新起算

删除 Token

DROP TOKEN [IF EXISTS] token_name;

删除用户时,其名下 Token 会被级联删除。

用户管理实践要点

  1. 密码策略分层落地:默认enableStrongPassword=1enableAdvancedSecurity=1(源码默认值见 tglobal.c)。生产环境建议保持开启;若确需弱口令(如仅限内网的测试环境),可通过alter all dnodes 'EnableStrongPassword' '0'关闭强密码校验。
  2. 访问控制按需收紧:为每个应用分配独立账号,按最小权限原则设置SYSINFOCREATEDB,并通过HOST/NOT_ALLOW_HOST限制登录来源,通过ALLOW_DATETIME/NOT_ALLOW_DATETIME限制登录时段。
  3. 账号生命周期管理:使用ENABLE 0临时冻结账号、FAILED_LOGIN_ATTEMPTS+PASSWORD_LOCK_TIME防暴力破解、PASSWORD_LIFE_TIME+PASSWORD_GRACE_TIME强制定期改密、INACTIVE_ACCOUNT_TIME清理僵尸账号。
  4. 会话与资源限制:通过SESSION_PER_USERCONNECT_TIMECONNECT_IDLE_TIMECALL_PER_SESSIONVNODE_PER_CALL防止单账号过度占用连接与计算资源。
  5. 认证强度升级:对核心账号启用 TOTP 双因素认证;对自动化任务与微服务间调用改用 Token 认证,避免共享密码,同时利用TTLPROVIDEREXTRA_INFO做好 Token 的周期轮换与归属管理。
  6. 权限联动意识SYSINFO属性与系统角色存在联动关系,改密会影响旧密码会话,集群部署时enableWhiteList必须全集群一致——这些隐含规则是排障时最容易忽略的点。

以上语法与行为均可在当前仓库中验证:用户管理的服务端核心实现在 mndUser.c,相关安全/系统配置注册于 tglobal.c,用户与 Token 的元数据查询(ins_users/ins_tokens)在 user.cpp 中亦有覆盖测试。

【免费下载链接】tdengineTDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.项目地址: https://gitcode.com/taosdata/tdengine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 22:30:56

Claude Code 实战:从安装到深度配置,打造你的 AI 编程队友

说实话&#xff0c;我实际用 Claude Code 做日常开发已经一个多月了&#xff0c;最初只是抱着“试一下”的心态装上&#xff0c;结果它逐渐变成了我工作流里绕不开的一环。与其说它是一个 AI 聊天框&#xff0c;不如说它更像一支可以塞进终端、跟着你一起读代码、写代码、跑测试…

作者头像 李华
网站建设 2026/9/20 22:30:27

UWB超宽带技术解析:从测距定位到雷达感知的工程实践

简介&#xff1a;《超宽带基础知识&#xff08;UWB&#xff09;》是一份面向通信工程、物联网定位及智能硬件开发人员的白皮书式PDF文档&#xff0c;系统讲解UWB这一IEEE 802.15.4a/z标准技术的核心原理与落地应用。文档从飞行时间&#xff08;ToF&#xff09;测距机制入手&…

作者头像 李华
网站建设 2026/9/20 22:29:32

STM32 ADC+DMA压力采集实战:XGZP6847A高精度采样方案

1. 为什么压力采集项目里ADC加DMA是绕不开的组合做过压力变送器、液位检测或者气路监控的朋友应该都有体会&#xff0c;传感器输出的模拟信号本身并不难读&#xff0c;难的是持续、稳定、不丢点地把数据搬进内存。XGZP6847A 这颗压力传感器在工业现场和消费类设备里出镜率很高&…

作者头像 李华
网站建设 2026/9/20 22:29:28

如何给OpenMMO贡献代码?CLA签署与CI检查新手完整指南

如何给OpenMMO贡献代码&#xff1f;CLA签署与CI检查新手完整指南 【免费下载链接】OpenMMO 项目地址: https://gitcode.com/GitHub_Trending/open/OpenMMO OpenMMO 是一个用 Rust 构建、AI 智能体与人类玩家平等游玩的开源 3D MMORPG。新手给 OpenMMO 贡献代码时&#…

作者头像 李华
网站建设 2026/9/20 22:27:25

VMware 16搭建Linux开发环境全攻略

1. 项目概述在Windows系统上搭建Linux开发环境是很多开发者的刚需。VMware Workstation 16作为目前最稳定的虚拟机平台之一&#xff0c;能够完美解决双系统切换麻烦、云服务器延迟高、Docker环境不完整等问题。我自己从2015年开始就坚持使用VMwareLinux的组合&#xff0c;累计创…

作者头像 李华