当前位置: 首页 > news >正文

Linux之rsyslog(2)输入输出配置

Linux之rsyslog(2)输入输出配置

Author:Once Day Date:2025年10月30日

全系列文章请查看专栏: Linux Shell基础_Once_day的博客-CSDN博客。

漫漫长路,有人对你微笑过嘛…

参考文档:

  • Beginner Tutorials - rsyslog 8.2510.0 documentation

文章目录

      • Linux之rsyslog(2)输入输出配置
        • 1. 基本架构
          • 1.1 日志消息流
          • 1.2 处理规则
          • 1.3 配置文件
          • 1.4 支持的配置格式
        • 2. rsyslog输出模块
        • 3. rsyslog输入模块
        • 4. rsyslog解析模块
          • 4.1 pmrfc3164: RFC3164格式消息解析器
          • 4.2 pmrfc5424: RFC5424格式消息解析器
          • 4.3 pmrfc3164sd: 解析RFC3164消息中的RFC5424结构化数据
          • 4.4 pmciscoios: Cisco IOS设备日志解析器
          • 4.5 pmdb2diag: IBM DB2诊断文件解析器
          • 4.6 pmlastmsg: "最后一条消息重复n次"处理器
          • 4.7 pmnormalize: 日志消息标准化解析器
          • 4.8 pmnull: Null解析器模块
        • 5. 消息修改模块

1. 基本架构

理解 rsyslog 的最佳方式是将其视为一个高度可扩展的日志与事件处理框架。虽然日志消息的总体流转流程固定,但通过配置 rsyslog 对象,几乎可以自定义其处理流水线的所有环节。

1.1 日志消息流

在这里插入图片描述

从宏观层面看,rsyslog 处理消息分为三个主要阶段:

  1. 输入(Inputs):通过输入模块接收消息。例如,通过imuxsock模块接收系统日志,或通过imtcp模块接收基于 TCP 的日志。
  2. 规则集(Rulesets):每条消息会经过一个或多个规则集。一个规则集包含一系列规则,每条规则都配有过滤器和关联的操作。
  3. 操作(Actions,即输出):当某条规则匹配时,会执行其关联的操作。操作决定消息的处理方式,包括写入文件、转发至远程服务器、插入数据库,或进行其他处理。
1.2 处理规则

理解 rsyslog 处理模型的关键规则:

  • 作为入口点的规则集:输入模块将消息提交给规则集。若未明确绑定规则集,则使用默认规则集(RSYSLOG_DefaultRuleset)。也可定义额外的自定义规则集。

  • 规则集中的规则:一个规则集包含零条或多条规则(不过零规则没有实际意义)。规则在规则集中按从上到下的顺序依次执行评估。

  • 过滤器与操作列表:一条规则由过滤器(评估结果为真 / 假)和操作列表组成。当过滤器匹配时,执行操作列表;若过滤器不匹配,rsyslog 会继续处理下一条规则。

  • 完整评估:所有规则都会被评估,除非通过stop命令明确终止消息处理。stop会立即中止对该消息的处理流程。

  • 操作列表:一个操作列表可包含一个或多个操作,操作按顺序串行执行。同一列表中的操作不包含过滤器(过滤器仅作用于规则级别)。

1.3 配置文件

默认情况下,rsyslog 会从/etc/rsyslog.conf加载配置。该文件可能会包含其他配置片段(通常位于/etc/rsyslog.d/目录下)。

若需指定其他配置文件,可使用以下命令:

rsyslogd -f /path/to/your-config.conf
1.4 支持的配置格式

rsyslog 在历史上支持三种配置语法:

  • RainerScript(现代风格)—— 推荐使用且持续维护,这是当前完全受支持的配置格式。语法简洁、结构化,最适合创建新配置或复杂配置场景。

  • sysklogd 风格(旧式语法)—— 新配置中已弃用,该格式使用广泛且仍可正常运行,但对新用户而言较难理解。仅推荐熟悉它的资深管理员使用,或用于维护旧配置。示例如下:

    mail.info    /var/log/mail.log
    mail.err     @server.example.net
    
  • 旧式 rsyslog 风格(美元符号前缀)—— 已弃用,这种格式的指令以 $ 开头(例如 $ActionFileDefaultTemplate),为保证向后兼容仍完全支持,但不建议用于任何新配置。

为何优先选择 RainerScript?

RainerScript 更易阅读和维护,能避免包含文件带来的副作用,还支持结构化过滤器、模板、复杂控制流等现代功能。

对于新配置,应始终使用 RainerScript。旧式格式仅为兼容旧部署和发行版而保留。

以下是 RainerScript 规则示例:

if $syslogfacility-text == 'mail' and $syslogseverity-text == 'err' then {action(type="omfile" file="/var/log/mail-errors.log")
}

rsyslog 支持两种注释方式:

  • # 注释:以#开头,注释内容延伸至行尾。
  • C 风格注释:以/*开头、*/结尾。可跨多行,但不支持嵌套。

RainerScript 支持控制结构(如 if/else 等)。

过滤器(例如prifilt())可用于对消息进行条件匹配。

可使用setunsetreset语句修改数据。

每个输入(Inputs)都需要专用的输入模块。

加载模块后,使用input()对象定义输入。

module(load="imtcp")                   # 加载TCP输入模块
input(type="imtcp" port="514")         # 监听TCP 514端口

输出(Outputs,即动作),动作负责输出操作,例如写入文件、数据库或转发到其他系统。

使用action()对象配置动作。

action(type="omfile" file="/var/log/messages")   # 写入本地文件

规则集与规则,规则集类似于消息处理的 “程序”。一个规则集可绑定到特定输入,也可作为默认规则集使用。

ruleset(name="fileLogging") {if prifilt("*.info") then {action(type="omfile" file="/var/log/info.log")}
}

在这里插入图片描述

2. rsyslog输出模块

基础传输模块:

  • omfile: 文件输出模块,将日志写入本地文件系统,适用于大多数基本日志存储场景。
  • omfwd: 标准syslog转发模块,通过UDP/TCP转发日志消息到远程服务器,适用于简单的集中式日志收集架构。
  • ompipe: 管道输出模块,将日志发送到命名管道,适用于与其他进程进行IPC通信的场景。
  • omstdout: 标准输出模块,将日志输出到标准输出,主要用于测试和调试目的。
  • omuxsock: Unix套接字输出模块,通过Unix域套接字发送消息,适用于本地进程间通信。

数据库存储模块:

  • omclickhouse: ClickHouse数据库输出模块,适用于需要高性能分析大量日志数据的场景。
  • omlibdbi: 通用数据库输出模块,支持多种数据库的日志存储。
  • ommongodb: MongoDB输出模块,适用于需要存储非结构化或半结构化日志数据的场景。
  • ommysql: MariaDB/MySQL数据库输出模块,适合需要SQL查询能力的标准关系型数据库存储。
  • omoracle: Oracle数据库输出模块,适用于企业级环境中使用Oracle数据库存储日志。
  • ompgsql: PostgreSQL数据库输出模块,适合需要强大SQL能力和可靠性的场景。

消息队列和事件处理:

  • omamqp1: AMQP 1.0消息输出模块,用于将日志发送到支持AMQP协议的消息队列。
  • omazureeventhubs: 微软Azure事件中心输出模块,适用于Azure云环境中的事件处理。
  • omczmq: ZeroMQ输出模块,适用于高性能分布式消息传递场景。
  • omkafka: Apache Kafka输出模块,适用于需要高吞吐量、可扩展的日志流处理系统。
  • omrabbitmq: RabbitMQ输出模块,适合需要可靠消息队列的场景。
  • omrelp: RELP(可靠事件日志协议)输出模块,提供可靠的日志传输,适用于不能容忍日志丢失的场景。

安全和认证模块:

  • omdtls: DTLS协议输出模块,提供UDP上的安全传输,适用于需要加密但不想使用TCP的场景。
  • gt: GuardTime日志签名提供程序,用于日志完整性验证。
  • ksi: 无密钥签名基础设施提供程序,用于不依赖密钥的日志真实性验证。
  • rsyslog-ksi-ls12: KSI签名提供程序,用于日志签名和验证。

云和大数据集成:

  • omelasticsearch: Elasticsearch输出模块,适用于需要全文搜索和分析日志的场景。
  • omhdfs: Hadoop文件系统输出模块,适合将日志直接存储到HDFS中进行大数据分析。
  • omhttpfs: Hadoop HTTPFS输出模块,通过HTTP接口将日志写入HDFS。

特殊用途模块:

  • omhiredis: Redis输出模块,适用于需要高性能缓存和数据结构存储的场景。
  • omhttp: HTTP输出模块,通过HTTP协议发送日志,适用于与RESTful API集成。
  • omjournal: Systemd Journal输出模块,将日志写入systemd日志系统,适用于现代Linux系统。
  • ommail: 邮件输出模块,发送邮件通知,适用于重要事件的警报场景。
  • omprog: 程序集成输出模块,将日志传递给外部程序处理,适用于自定义处理逻辑。
  • omruleset: 规则集输出/包含模块,允许将消息传递到其他规则集进行处理。
  • omsendertrack: 发送者跟踪输出模块,跟踪消息来源,适用于监控和审计场景。
  • omsnmp: SNMP陷阱输出模块,将日志转换为SNMP陷阱,适用于网络监控环境。
  • omudpspoof: UDP欺骗输出模块,允许使用指定源地址发送UDP包,适用于特殊测试场景。
  • omusrmsg: 用户通知模块,向系统用户发送消息,适用于管理员通知场景。
3. rsyslog输入模块

标准网络输入模块:

  • imtcp: TCP Syslog输入模块,通过TCP接收标准syslog消息,提供可靠的日志传输,适用于不能容忍数据丢失的场景。
  • impstcp: Plain TCP Syslog,提供类似imtcp但性能优化的TCP接收模块,适用于高吞吐量环境。
  • imudp: UDP Syslog输入模块,通过UDP接收syslog消息,具有较低延迟但不保证可靠性,适用于高容量低关键性日志场景。
  • imrelp: RELP(可靠事件日志协议)输入模块,提供可靠的日志传输机制,适合关键应用日志的可靠接收。
  • imdtls: DTLS协议输入模块,在UDP上提供安全传输,适用于需要加密但优先考虑UDP性能的场景。

本地系统输入模块:

  • imuxsock: Unix套接字输入模块,从本地Unix域套接字接收消息,是接收本地应用日志的主要方式。
  • imklog: 内核日志输入模块,从内核获取日志消息,适用于监控系统和硬件事件。
  • imkmsg: /dev/kmsg日志输入模块,现代Linux系统中从/dev/kmsg读取内核日志的模块。
  • imsolaris: Solaris输入模块,专为Solaris操作系统设计的输入模块。
  • imjournal: Systemd Journal输入模块,从systemd日志系统读取日志,适用于现代Linux发行版。

文件和程序输入模块:

  • imfile: 文本文件输入模块,监控文本文件变化并将内容作为日志消息处理,适用于接入非syslog应用的日志文件。
  • improg: 程序集成输入模块,从外部程序的标准输出读取数据作为日志,适合集成自定义数据源。
  • imdocker: Docker输入模块,专门用于从Docker容器收集日志,适用于容器化环境。
  • imtuxedoulog: Tuxedo ULOG输入模块,用于接收Oracle Tuxedo应用服务器的日志。

消息队列和事件源:

  • imczmq: ZeroMQ输入模块,从ZeroMQ消息队列接收日志,适用于分布式架构。
  • imkafka: Apache Kafka输入模块,从Kafka主题读取消息,适合大规模日志聚合场景。
  • imhiredis: Redis输入模块,从Redis数据结构存储读取日志条目。
  • im3195: RFC3195输入模块,支持RFC3195协议的日志接收,适用于特定标准化环境。

网络和安全相关:

  • imgssapi: GSSAPI Syslog输入模块,支持通过GSSAPI进行身份验证的syslog接收,适用于需要Kerberos等认证的环境。
  • impcap: 网络流量捕获模块,直接捕获网络数据包并将其转换为日志,适用于网络监控和安全分析。
  • imhttp: HTTP输入模块,通过HTTP协议接收日志数据,适用于与Web应用集成或跨防火墙传输日志。

监控和诊断模块:

  • immark: 标记消息输入模块,定期生成标记消息,用于验证rsyslog是否正常运行。
  • imdiag: 诊断工具模块,提供rsyslog内部状态的诊断信息。
  • impstats: 内部计数器统计生成模块,周期性生成rsyslog内部性能统计信息,适用于监控和性能优化。
  • imbatchreport: 批量报告输入模块,用于生成批处理操作的报告,适用于大量日志处理后的汇总分析。

这些输入模块使rsyslog能够从多种来源收集日志数据,从标准网络协议到特定应用程序接口,为集中式日志管理提供了灵活性和广泛的兼容性。

4. rsyslog解析模块

rsyslog的解析模块在消息接收后处理消息内容,用于解析特定格式的日志消息或处理格式不规范的消息。这些模块让rsyslog能够灵活地适应各种日志格式,从标准的syslog格式到各种专有格式。

下面是一个综合示例,展示如何在同一个rsyslog配置中使用多个解析器处理不同类型的日志:

# 加载所需解析器模块
module(load="pmrfc3164")
module(load="pmrfc5424")
module(load="pmciscoios")
module(load="pmlastmsg")
module(load="pmnormalize")# 定义各类解析器
parser(name="rfc5424_parser" type="pmrfc5424")
parser(name="cisco_parser" type="pmciscoios")
parser(name="custom_app_parser" type="pmnormalize" rulebase="/etc/rsyslog.d/app_rules.rb")
parser(name="compress_repeats" type="pmlastmsg")# 应用解析器规则
# 1. 处理现代系统的结构化日志
if $fromhost contains "modern-server" then {parser(parser="rfc5424_parser")action(type="omfile" file="/var/log/structured/system.log")
}# 2. 处理网络设备日志
else if $fromhost-ip startswith "10.0.1." then {parser(parser="cisco_parser")action(type="omfile" file="/var/log/network/cisco.log")
}# 3. 处理自定义应用程序日志
else if $programname == "custom-app" then {parser(parser="custom_app_parser")action(type="omfile" file="/var/log/apps/custom-app.log")
}# 4. 为所有日志应用重复消息压缩
action(type="omfile" file="/var/log/all-messages.log"parser="compress_repeats")

这个配置示例展示了rsyslog解析模块的强大功能,它能够根据消息来源、内容和格式应用不同的解析策略,将各种日志格式转换为结构化数据,并进行适当的处理和存储。

4.1 pmrfc3164: RFC3164格式消息解析器

功能: 解析传统的BSD syslog格式(RFC3164)的消息。

格式说明: RFC3164格式通常包含优先级、时间戳、主机名和消息内容,但缺乏结构化数据支持。

示例消息:

<34>Oct 11 22:14:15 mymachine su: 'su root' failed for lonvick on /dev/pts/8

适用场景: 处理大多数传统系统和应用程序生成的syslog消息,作为rsyslog的默认解析器,处理标准格式的日志。

配置示例:

module(load="pmrfc3164")template(name="rfc3164format" type="string" string="%timegenerated% %HOSTNAME% %syslogtag%%msg%\n")action(type="omfile" file="/var/log/syslog" template="rfc3164format")
4.2 pmrfc5424: RFC5424格式消息解析器

功能: 解析现代的结构化syslog格式(RFC5424)的消息。

格式说明: RFC5424提供了更严格的时间戳格式、版本号、结构化数据和其他元数据字段。

示例消息:

<165>1 2003-10-11T22:14:15.003Z mymachine.example.com evntslog - ID47 [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] An application event log entry...

适用场景: 处理现代系统和应用程序生成的结构化日志,需要提取和处理结构化数据元素的环境。

配置示例:

module(load="pmrfc5424")template(name="rfc5424format" type="string" string="%timegenerated% %HOSTNAME% %syslogtag% %$!all-json%\n")action(type="omfile" file="/var/log/structured-syslog" template="rfc5424format")
4.3 pmrfc3164sd: 解析RFC3164消息中的RFC5424结构化数据

功能: 专门用于处理混合格式,即在RFC3164格式消息中包含RFC5424结构化数据的情况。

适用场景: 处理过渡期的日志系统,部分应用已支持结构化数据但仍使用传统消息格式,需要从传统格式中提取结构化信息的场景。

配置示例:

module(load="pmrfc3164sd")# 自定义规则使用pmrfc3164sd处理消息
parser(name="custom_rfc3164_parser" type="pmrfc3164sd")ruleset(name="parse_rfc3164sd" parser="custom_rfc3164_parser") {action(type="omfile" file="/var/log/structured-legacy.log")
}
4.4 pmciscoios: Cisco IOS设备日志解析器

功能: 专门解析来自Cisco IOS网络设备的日志消息格式。

示例消息:

<189>29: *Apr 29 2007 15:37:11.958 UTC: %SYS-5-CONFIG_I: Configured from console by vty0 (10.0.0.1)

适用场景: 网络运维环境,需要处理Cisco路由器、交换机等设备的日志,网络安全监控系统,需要解析和分析网络设备事件。

配置示例:

module(load="pmciscoios")# 定义模板提取Cisco设备特定字段
template(name="ciscoformat" type="string" string="%timegenerated% %$!cisco.facility%-%$!cisco.severity%-%$!cisco.mnemonic%: %$!cisco.message%\n")# 使用pmciscoios解析器处理来自Cisco设备的消息
parser(name="cisco_parser" type="pmciscoios")
if $fromhost-ip startswith '10.1.1.' then {parser(parser="cisco_parser")action(type="omfile" file="/var/log/cisco/network.log" template="ciscoformat")
}
4.5 pmdb2diag: IBM DB2诊断文件解析器

功能: 解析IBM DB2数据库生成的诊断日志文件格式。

示例消息:

2013-06-13-14.28.41.378108 I1182E377         LEVEL: Event
PID     : 1234                TID  : 5678
PROC    : db2sysc 0
INSTANCE: db2inst1            NODE : 000
FUNCTION: DB2 UDB, base sys utilities, sqeLocalDatabase
MESSAGE : ADM7513W  Database "SAMPLE" is being activated.

适用场景: 数据库管理员监控DB2数据库运行状态,数据库性能分析和问题排查,集中式日志管理系统中整合DB2诊断信息。

配置示例:

module(load="imfile")  # 用于读取DB2诊断文件
module(load="pmdb2diag")  # 用于解析DB2诊断内容input(type="imfile"File="/database/db2inst1/sqllib/db2dump/db2diag.log"Tag="db2diag:"StateFile="db2diag-state"Facility="local7"Severity="notice")# 定义DB2特定解析器
parser(name="db2diag_parser" type="pmdb2diag")# 应用解析器到DB2日志
if $syslogtag contains 'db2diag:' then {parser(parser="db2diag_parser")# 将解析后的结构化DB2日志写入专用文件action(type="omfile" file="/var/log/db2/diagnostics.log")
}
4.6 pmlastmsg: "最后一条消息重复n次"处理器

功能: 识别并处理重复消息,将连续重复的相同消息合并为单个带计数的消息。

示例: 如果原始日志中有多条相同的消息:

Disk space low on /dev/sda1
Disk space low on /dev/sda1
Disk space low on /dev/sda1

pmlastmsg会将其合并为:

Disk space low on /dev/sda1
last message repeated 2 times

适用场景:

  • 减少日志文件体积,避免重复消息占用存储空间
  • 提高日志可读性,避免被大量重复消息淹没
  • 适用于频繁生成相同错误或警告消息的系统

配置示例:

module(load="pmlastmsg")# 配置最后消息重复处理
parser(name="last_message_repeats" type="pmlastmsg")# 应用这个解析器到所有消息
action(type="omfile" file="/var/log/messages" parser="last_message_repeats")
4.7 pmnormalize: 日志消息标准化解析器

功能: 基于规则定义将各种格式的日志转换为标准化结构,类似于liblognorm库的功能。

适用场景:

  • 处理非标准或自定义日志格式
  • 将异构系统的日志统一为一致的格式
  • 从自由格式文本中提取结构化数据

配置示例:

module(load="pmnormalize")# 加载规则文件
parser(name="custom_parser"type="pmnormalize"rulebase="/etc/rsyslog.d/custom_rules.rb")# 应用解析器到特定日志源
if $fromhost-ip == '192.168.1.10' then {parser(parser="custom_parser")action(type="omfile" file="/var/log/normalized/app1.log")
}

规则文件示例 (custom_rules.rb):

# Apache访问日志规则
rule=:%client_ip:ipv4% %ident:word% %user:word% [%timestamp:date-rfc3339%] "%request:word% %url:word% HTTP/%http_version:float%" %status:number% %bytes:number% "%referrer:char-to:\"%"  "%user_agent:char-to:\"%"
4.8 pmnull: Null解析器模块

功能: 一个不执行任何解析的透传解析器,通常用于调试或特殊场景。

适用场景: 诊断消息流中的解析问题,绕过解析步骤直接处理原始消息,自定义处理链中的占位符。

配置示例:

module(load="pmnull")# 定义null解析器
parser(name="do_nothing" type="pmnull")# 对特定消息应用null解析器
if $msg contains "DONOTPARSE" then {parser(parser="do_nothing")action(type="omfile" file="/var/log/raw_messages.log")
}
5. 消息修改模块

Message Modification Modules 是用于更改正在处理的消息内容的模块。这些模块可以通过输出模块或解析器模块接口实现。从 rsyslog 核心的角度来看,它们实际上是输出或解析器模块,它们的特殊性在于其实现方式。

以下是各种消息修改模块的简要介绍:

  • mmaitag:基于 AI 的分类模块,用于智能标记和分类消息
  • mmanon:IP 地址匿名化模块,用于保护隐私并符合数据保护规定
  • mmaudit:Linux 审计日志解析器,专门用于处理 Linux 审计日志
  • mmcount:计数模块,用于消息统计和计数功能
  • mmdarwin:Darwin 连接器,提供与 Darwin 系统的集成
  • mmdblookup:MaxMind/GeoIP 数据库查询模块,支持地理位置信息查找
  • mmfields:字段提取模块,用于从消息中提取指定字段
  • mmjsonparse:JSON 结构化内容提取模块,用于解析 JSON 格式的日志
  • mmjsonrewrite:JSON 点号键重写器,用于重新组织 JSON 数据结构
  • mmjsontransform:JSON 点号键转换器,提供多种 JSON 数据转换模式
  • mmkubernetes:Kubernetes 元数据模块,集成 Kubernetes 集群信息
  • mmleefparse:LEEF 结构化内容提取模块,用于解析 LEEF 格式日志
  • mmnormalize:日志消息标准化模块,使消息格式一致化
  • mmpstrucdata:RFC5424 结构化数据解析模块,处理符合该标准的日志
  • mmrfc5424addhmac:为 RFC5424 消息添加 HMAC 认证码
  • mmrm1stspace:第一空格修改模块,处理特定格式问题
  • mmsequence:数字生成器和计数器模块,提供序列号功能
  • mmsnareparse:NXLog Snare Windows 安全解析器,专用于 Windows 安全日志
  • mmsnmptrapd:SNMP 陷阱消息修改模块,处理 SNMP 监控数据
  • mmtaghostname:主机名标记模块,添加主机标识信息
  • mmutf8fix:修复无效 UTF-8 序列的模块,确保字符编码正确

这些模块提供了丰富的功能,可以灵活地处理、转换和增强各种日志和消息格式。

http://www.dtcms.com/a/565713.html

相关文章:

  • 整体设计 全面梳理复盘 之17 三套表制表的支持和支撑以及编程基础 之2
  • 凯文·凯利《2049:未来10000天的可能》
  • 网站百度建设高端网站设计百家号
  • ctypes.pythonapi.PyThreadState_SetAsyncExc作用详解
  • pyside6常用控件: QPushButton()按钮切换、带图片的按钮
  • Python逻辑运算符
  • MinGW下载、安装和使用教程(附安装包,适合新手)
  • lol做任务领头像网站微商城网站建设平台
  • 百日挑战——单词篇(第十二天)
  • (单调队列、ST 表)洛谷 P2216 HAOI2007 理想的正方形 / P2219 HAOI2007 修筑绿化带
  • Spark RDD 编程从驱动程序到共享变量、Shuffle 与持久化
  • 网站 面包屑网站开发工作流审批流
  • 网站建设广金手指六六十四在线建站系统
  • 排序还有分页
  • electron对于图片/视频无法加载的问题
  • TDengine 字符串函数 CHAR 用户手册
  • 股票信息收集系统设计
  • 深圳网站建设 设计首选公司红色扁平化网站
  • 深度学习PINN!从入门到精通!
  • 电子商务网站建设内容新手开店适合开什么店
  • Java 后端面试干货:四大核心模块高频考点深度解析
  • 交换机路由器基础(三)--常见接口、线缆和器件
  • Qt笔记:QtAdvancedStylesheet使用时,关于url(icon:/primary/checklist_invert.svg)的疑惑
  • 亚远景-ISO/PAS 8800在软件定义汽车(SDV)时代的AI安全治理角色
  • 网站开发前端和后端技术简单的微信小程序项目
  • 企业电子商务网站的建设方式百度网站首页提交入口
  • Bayes/BO-CNN-BiLSTM、CNN-BiLSTM、BiLSTM贝叶斯优化三模型多变量回归预测Matlab
  • STM32中使用三极管驱动风扇
  • 深度解析阿里云通用算力型U1与U2i实例性能差异:架构、算力、场景选型全对比
  • 北斗形变监测传感器在水库安全中的应用及技术优势分析