2025-08-28-zabbix5.0创建监控项通过脚本简单实现监控oracle11g的磁盘组和表空间的使用量


title: zabbix5.0创建监控项通过脚本简单实现监控oracle11g的磁盘组和表空间的使用量
authors: Loong
date: 2025-08-28


使用SQLPLUS配合crontab任务

用来执行sql获取信息的脚本

/home/oracle/zabbix_oracle_check.sh

#!/bin/bash
#用于zabbix agent被动模式的 非入侵性的检测
#由oracle用户crontab进行巡检 结果存入/tmp下临时文件
#zabbix 脚本去读临时文件
source $HOME/.bash_profile# 查询语句
#设置sqlplus 
#SET PAGESIZE 9999  设置页大小远大于结果行数(如 9999),这样只输出一次列头和分割线.
#SET FEEDBACK OFF:不显示 6 rows selected. 这类信息。
#SET LINESIZE 9999 设置每行字符数 避免输出中过多的换行
set_sqlplus="
SET PAGESIZE 9999 
SET FEEDBACK OFF
SET LINESIZE 9999
"DB_STATUS_QUERY="${set_sqlplus}
select instance_name,a.status,b.open_mode,a.inst_id from gv\$instance a,gv\$database b where a.inst_id=b.inst_id;"TABLESPACE_QUERY="${set_sqlplus}
select * from dba_tablespace_usage_metrics order by used_percent;"asm_diskgroup_query="${set_sqlplus}
select group_number,name,total_mb,free_mb,((total_mb-free_mb)/total_mb*100) USED_PERCENT from v\$asm_diskgroup;"# 执行数据库状态检查查询并保存结果到临时文件
DB_STATUS_RESULT_FILE=$(mktemp)
echo "${DB_STATUS_QUERY}" | sqlplus -s / as sysdba > "${DB_STATUS_RESULT_FILE}"
if [ $? -ne 0 ]; thenecho "数据库状态检查查询失败"exit 1
fi# 执行表空间状态检查查询并保存结果���临时文件
TABLESPACE_RESULT_FILE=$(mktemp)
echo "${TABLESPACE_QUERY}" | sqlplus -s / as sysdba > "${TABLESPACE_RESULT_FILE}"
if [ $? -ne 0 ]; thenecho "表空间状态检查查询失败"exit 1
fi# 执行asm磁盘组状态检查查询并保存结果到临时文件
asm_diskgroup_RESULT_FILE=$(mktemp)
echo "${asm_diskgroup_query}" | sqlplus -s / as sysdba > "${asm_diskgroup_RESULT_FILE}"
if [ $? -ne 0 ]; thenecho "asm磁盘组状态检查查询失败"exit 1
fi#处理sed -e '/----/d' -e '/^$/d' -e '/rows selected/d' 删除分割线、空行、影响行数(SET FEEDBACK OFF其实已经具备这个功能了)
sed -i -e '/----/d' -e '/^$/d' -e '/rows selected/d' ${DB_STATUS_RESULT_FILE}
sed -i -e '/----/d' -e '/^$/d' -e '/rows selected/d' ${TABLESPACE_RESULT_FILE}
sed -i -e '/----/d' -e '/^$/d' -e '/rows selected/d' ${asm_diskgroup_RESULT_FILE}mkdir /tmp/zabbix_oracle_info 2>/dev/null
#处理文本 将多余的空格和制表符替换成一个制表符 
awk '{$1=$1}1' OFS='\t' ${TABLESPACE_RESULT_FILE} > /tmp/zabbix_oracle_info/tablespace_result
awk '{$1=$1}1' OFS='\t' ${asm_diskgroup_RESULT_FILE} > /tmp/zabbix_oracle_info/asm_diskgroup_result
awk '{$1=$1}1' OFS='\t' ${DB_STATUS_RESULT_FILE} > /tmp/zabbix_oracle_info/db_status_result# 清理临时文件
rm "${DB_STATUS_RESULT_FILE}"
rm "${TABLESPACE_RESULT_FILE}"
rm "${asm_diskgroup_RESULT_FILE}"

脚本权限

chown oracle:oinstall /home/oracle/zabbix_oracle_check.sh 
chown +x /home/oracle/zabbix_oracle_check.sh 

定时任务

su - oracle
crontab -e
#每1分钟获取一次信息
* * * * * /home/oracle/zabbix_oracle_check.sh

测试结果

[oracle@oadb1 ~]$ ls /tmp/zabbix_oracle_info/
asm_diskgroup_result db_status_result      tablespace_result[oracle@oadb1 ~]$ cat /tmp/zabbix_oracle_info/tablespace_result 
TABLESPACE_NAME                USED_SPACE TABLESPACE_SIZE USED_PERCENT
USERS                                 168         4194302   .004005434
UNDOTBS1                            11728         4194302   .279617443
UNDOTBS2                            11744         4194302   .279998913
TEMP                                18816         4194302   .448608612
ECOLOGY                            563512        20971510   2.68703589
SYSAUX                             304856         4194302    7.2683369
ECOLOGY1                           355184         4194302    8.4682505
SYSTEM                           19499480        20971510   92.9808106

配置zabbix agent用户参数信息获取

测试命令提取

[oracle@oadb1 ~]$ cat /tmp/zabbix_oracle_info/tablespace_result | grep -iw system
SYSTEM                           19499480        20971510   92.9808106
[oracle@oadb1 ~]$ cat /tmp/zabbix_oracle_info/tablespace_result | grep -iw system | tail -1 | awk "{print \$NF}"
92.9808106

配置监控项用户参数

vim /etc/zabbix/zabbix_agentd.d/oracle.conf
#监控项
UserParameter=oracle.tbs.percent[*], grep -iw "$1" /tmp/zabbix_oracle_info/tablespace_result | tail -1 | awk "{print \$NF}"
UserParameter=oracle.asm.percent[*], grep -iw "$1" /tmp/zabbix_oracle_info/asm_diskgroup_result | tail -1 | awk "{print \$NF}"

需要重启zabbix-agent服务

systemctl restart zabbix-agent

在zabbix server上测试

#zabbix_get -s 客户端ip -k "oracle.tbs.percent[表空间名]"[lex@zabbix-server ~]$ zabbix_get -s 10.1.240.21 -k "oracle.tbs.percent[system]"
92.9906144#zabbix_get -s 客户端ip -k "oracle.asm.percent[磁盘组名]"
zabbix_get -s 10.1.240.21 -k "oracle.asm.percent[arc]"

zabbix web界面配置监控项及触发器

主机-创建监控项

名称 Oracle tablespace [system] used in %
键值 oracle.tbs.percent[system]
信息类型 浮点数 
单位 %
更新间隔1分钟名称 Oracle asm diskgroup [arc] used in %
键值 oracle.asm.percent[arc]
信息类型 浮点数 
单位 %
更新间隔1分钟

添加触发器

主机-宏
{$ORACLE.ASM.DISKGROUP.AVERAGE}  80
{$ORACLE.ASM.DISKGROUP.HIGH}  90{$ORACLE.TBS.AVERAGE} 90
{$ORACLE.TBS.HIGH} 95创建4个触发器
#表空间system大于一般严重的值80%
名称 Oracle tablespace [system] usage >{$ORACLE.TBS.AVERAGE}%
严重性 一般严重
表达式 {Ecology_DB1:oracle.tbs.percent[system].last()}>{$ORACLE.TBS.AVERAGE}
#表空间system大于严重的值90%
名称 Oracle tablespace [system] usage >{$ORACLE.TBS.HIGH}%
严重性 严重
表达式 {Ecology_DB1:oracle.tbs.percent[system].last()}>{$ORACLE.TBS.HIGH}
#磁盘组arc大于一般严重的值90%
Oracle asm diskgroup [arc] usage >{$ORACLE.ASM.DISKGROUP.AVERAGE}%
一般严重
{Ecology_DB1:oracle.asm.percent[arc].last()}>{$ORACLE.ASM.DISKGROUP.AVERAGE}
#磁盘组arc大于一般严重的值95%
Oracle asm diskgroup [arc] usage >{$ORACLE.ASM.DISKGROUP.HIGH}%
严重
{Ecology_DB1:oracle.asm.percent[arc].last()}>{$ORACLE.ASM.DISKGROUP.HIGH}

进阶:通过自动发现,对多个表空间或磁盘组进行监控

获取信息脚本末尾增加额外的处理脚本

#处理文本 将多余的空格和制表符替换成一个制表符 
awk '{$1=$1}1' OFS='\t' tablespace_result > tablespace_result.tsv
awk '{$1=$1}1' OFS='\t' asm_diskgroup_result > asm_diskgroup_result.tsv
awk '{$1=$1}1' OFS='\t' db_status_result > db_status_result.tsv
#生成到同名文件的话
cat tablespace_result | awk  '{$1=$1}1' OFS='\t' > tablespace_result
cat asm_diskgroup_result | awk  '{$1=$1}1' OFS='\t' > asm_diskgroup_result
cat db_status_result | awk  '{$1=$1}1' OFS='\t' > db_status_result

awk 命令来将这些文件中所有连续的空白字符(空格和制表符)分隔的字段,规范化为 单个制表符(Tab)分隔 的标准 TSV 格式。

awk 的默认行为是将连续的空白作为分隔符,并重新以单个空格输出字段。但我们可以通过设置输出字段分隔符 OFS 为制表符 \t,来实现 TSV 格式。

命令解释:

  • {$1=$1}:这是一个技巧,强制 awk 重新构建整行(触发字段重赋值)。
  • 1:是 awk 的“真值”,表示对每行执行默认操作(打印)。
  • OFS='\t':设置输出字段分隔符为制表符。

按列名去获取值而不是位置

$ sh get_column_value.sh /tmp/zabbix_oracle_info/tablespace_result TABLESPACE_NAME SYSTEM USED_PERCENT
93.1655565
$ cat get_column_value.sh
#!/bin/bash# 检查参数
if [ $# -ne 4 ]; thenecho "用法: $0 <文件路径> <列名1> <匹配值> <列名2>"echo "例如: $0 /tmp/zabbix_oracle_info/tablespace_result TABLESPACE_NAME SYSTEM USED_PERCENT"exit 1
fiCOL1="$2"
VALUE="$3"
COL2="$4"
FILE="$1"# 检查文件是否存在
if [ ! -f "$FILE" ]; thenecho "错误: 文件 $FILE 不存在"exit 1
fi# 使用 awk 提取
awk -F'\t' -v c1="$COL1" -v val="$VALUE" -v c2="$COL2" '
BEGIN {found = 0
}
NR == 1 {# 查找列索引for (i = 1; i <= NF; i++) {if ($i == c1) idx1 = iif ($i == c2) idx2 = i}if (!idx1) {print "错误: 未找到列 \"" c1 "\"" > "/dev/stderr"exit 1}if (!idx2) {print "错误: 未找到列 \"" c2 "\"" > "/dev/stderr"exit 1}next
}
{if ($idx1 == val) {print $idx2found = 1exit}
}
END {if (!found && val != "") {print ""  # 未找到匹配项,输出空}
}
' "$FILE"

按照列名依次获取值生成zabbix自动发现所需的json

sh zabbix_oracle_discovery.sh tablespace_result  TABLESPACE_NAME
{"data": [{"{#TABLESPACE_NAME}": "USERS"},{"{#TABLESPACE_NAME}": "TEMP"},{"{#TABLESPACE_NAME}": "UNDOTBS2"},{"{#TABLESPACE_NAME}": "UNDOTBS1"},{"{#TABLESPACE_NAME}": "ECOLOGY"},{"{#TABLESPACE_NAME}": "SYSAUX"},{"{#TABLESPACE_NAME}": "ECOLOGY1"},{"{#TABLESPACE_NAME}": "SYSTEM"}]
}
cat zabbix_oracle_discovery.sh
#!/bin/bashINPUT_FILE="$1"
COLUMN_NAME="$2"if [ $# -lt 2 ]; thenecho "用法: $0 <文件名> <列名>"exit 1
fiif [ ! -f "$INPUT_FILE" ]; thenecho "错误: 文件 $INPUT_FILE 不存在" >&2# 输出合法空 JSONecho '{"data": []}'exit 1
fiawk -v col_name="$COLUMN_NAME" '
BEGIN {FS = "[ \t]+"found_col = 0item_count = 0print "{"print "    \"data\": ["
}
NR == 1 {# 查找目标列for (i = 1; i <= NF; i++) {gsub(/^[ \t]+|[ \t]+$/, "", $i)if ($i == col_name) {target_col = ifound_col = 1}}if (!found_col) {# 列未找到,输出空数组并结束print "    ]"print "}"exit 0}next
}
{if (!found_col) nextvalue = $target_colgsub(/^[ \t]+|[ \t]+$/, "", value)if (value != "" && value != "N/A" && value != "NULL") {if (item_count > 0) {printf ",\n"}printf "        {\"{#%s}\": \"%s\"}", toupper(col_name), valueitem_count++}
}
END {if (found_col) {# 正常结束if (item_count == 0) {# 没有数据行print ""}print ""print "    ]"print "}"}# 如果 !found_col,已在 NR==1 处理
}
' "$INPUT_FILE"

chmod +x /etc/zabbix/zabbix_agentd.d/*.sh

[root@localhost zabbix_agentd.d]# cat oracle.conf 
# 自动发现表空间和asm磁盘组
UserParameter=oracle.tbs.discovery,/etc/zabbix/zabbix_agentd.d/zabbix_oracle_discovery.sh /tmp/zabbix_oracle_info/tablespace_result TABLESPACE_NAME
UserParameter=oracle.asm.discovery,/etc/zabbix/zabbix_agentd.d/zabbix_oracle_discovery.sh /tmp/zabbix_oracle_info/asm_diskgroup_result NAME#UserParameter=oracle.tbs.percent[*], grep -iw "$1" /tmp/zabbix_oracle_info/tablespace_result | tail -1 | awk "{print \$NF}"
#UserParameter=oracle.asm.percent[*], grep -iw "$1" /tmp/zabbix_oracle_info/asm_diskgroup_result | tail -1 | awk "{print \$NF}"
UserParameter=oracle.tbs.percent[*], /etc/zabbix/zabbix_agentd.d/get_column_value.sh /tmp/zabbix_oracle_info/tablespace_result TABLESPACE_NAME "$1" USED_PERCENT
UserParameter=oracle.asm.percent[*], /etc/zabbix/zabbix_agentd.d/get_column_value.sh /tmp/zabbix_oracle_info/asm_diskgroup_result NAME "$1" USED_PERCENT

Zabbix Web 前端配置

新建模板

My Template Oracle asm and tablespace usage

在模板中添加宏

{$ORACLE.ASM.DISKGROUP.AVERAGE}  80
{$ORACLE.ASM.DISKGROUP.HIGH}  90
{$ORACLE.TBS.AVERAGE} 90
{$ORACLE.TBS.HIGH} 95

在模板中创建 自动发现规则(Discovery Rule)

  • 进入:配置 → 主机 → 你的 Oracle 主机 → 自动发现
  • 点击 创建发现规则
  • 下面以配置表空间的自动发现规则为例,配置如下:
字段
名称Oracle Tablespace Discovery
类型Zabbix agent
键值oracle.tbs.discovery
更新间隔1h(或 30m,不需要太频繁)

✅ 保存


创建 发现规则下的监控项原型(Item Prototype)

点击你刚创建的发现规则 → 监控项原型创建监控项原型

字段
名称Oracle Tablespace {#TABLESPACE_NAME} Used %
类型Zabbix agent
键值oracle.tbs.percent[{#TABLESPACE_NAME}]
类型信息Numeric (float) ✅ 必须是 float
单位%
更新间隔1m
应用集Oracle Tablespace(可创建新应用集)

✅ 保存


(可选)创建 触发器原型(Trigger Prototype)

点击 触发器原型创建触发器原型

字段
名称Oracle Tablespace {#TABLESPACE} usage > 90%
表达式{HOSTNAME:oracle.tbs.percent[{#TABLESPACE}].last()} > 90
严重性High

✅ 保存


附:完整模板

My Template Oracle asm and tablespace usage.xml

<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export><version>5.0</version><date>2025-08-29T07:33:05Z</date><groups><group><name>Templates/Databases</name></group></groups><templates><template><template>My Template Oracle asm and tablespace usage</template><name>My Template Oracle asm and tablespace usage</name><description>自定义模板 需要配合agent执行脚本</description><groups><group><name>Templates/Databases</name></group></groups><discovery_rules><discovery_rule><name>auto-discovery asm-diskgroup</name><key>oracle.asm.discovery</key><delay>30m</delay><item_prototypes><item_prototype><name>Oracle ASM diskgroup {#NAME} Used %</name><key>oracle.asm.percent[{#NAME}]</key><value_type>FLOAT</value_type><trigger_prototypes><trigger_prototype><expression>{last()}&gt;{$ORACLE.ASM.DISKGROUP.AVERAGE}</expression><name>Oracle asm diskgroup [{#NAME}] usage &gt;{$ORACLE.ASM.DISKGROUP.AVERAGE}%</name><priority>AVERAGE</priority></trigger_prototype><trigger_prototype><expression>{last()}&gt;{$ORACLE.ASM.DISKGROUP.HIGH}</expression><name>Oracle asm diskgroup [{#NAME}] usage &gt;{$ORACLE.ASM.DISKGROUP.HIGH}%</name><priority>HIGH</priority></trigger_prototype></trigger_prototypes></item_prototype></item_prototypes></discovery_rule><discovery_rule><name>auto-discovery tablespace</name><key>oracle.tbs.discovery</key><delay>30m</delay><item_prototypes><item_prototype><name>Oracle Tablespace {#TABLESPACE_NAME} Used %</name><key>oracle.tbs.percent[{#TABLESPACE_NAME}]</key><value_type>FLOAT</value_type><trigger_prototypes><trigger_prototype><expression>{last()}&gt;{$ORACLE.TBS.AVERAGE}</expression><name>Oracle tablespace [{#TABLESPACE_NAME}] usage &gt;{$ORACLE.TBS.AVERAGE}%</name><priority>AVERAGE</priority></trigger_prototype><trigger_prototype><expression>{last()}&gt;{$ORACLE.TBS.HIGH}</expression><name>Oracle tablespace [{#TABLESPACE_NAME}] usage &gt;{$ORACLE.TBS.HIGH}%</name><priority>HIGH</priority></trigger_prototype></trigger_prototypes></item_prototype></item_prototypes></discovery_rule></discovery_rules><macros><macro><macro>{$ORACLE.ASM.DISKGROUP.AVERAGE}</macro><value>80</value></macro><macro><macro>{$ORACLE.ASM.DISKGROUP.HIGH}</macro><value>90</value></macro><macro><macro>{$ORACLE.TBS.AVERAGE}</macro><value>90</value></macro><macro><macro>{$ORACLE.TBS.HIGH}</macro><value>95</value></macro></macros></template></templates>
</zabbix_export>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97790.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL-Redo Log(重做日志)

MySQL 的 Redo Log&#xff08;重做日志&#xff09;是 InnoDB 存储引擎的核心组件之一&#xff0c;是保证数据库持久性&#xff08;Durability&#xff09; 和崩溃恢复&#xff08;Crash Recovery&#xff09; 的关键机制。1. 什么是 Redo Log&#xff1f;它的核心作用是什么&…

嵌入式linux相机(2)

本人从0开始学习linux&#xff0c;使用的是韦东山的教程&#xff0c;在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。本人将前几章的内容大致学完之后&#xff0c;考虑到后续驱动方面得更多的开始实操&#xff0c;后续的内容将以韦东山教程Linux项目的内容…

云计算学习100天-第34天 -zabbix监控2

SourceURL:file:///home/student/Documents/zabbix.doczabbix服务器配置1. 拷贝zabbix软件包到pubserver#在此之前先从真机拷贝安装包[rootserver1 ~]# scp /linux-soft/s2/zzg/zabbix_soft/*.rpm 192.168.88.5:/root/#然后拷贝到pubserver[rootzabbixserver ~]# scp /linux-so…

猫头虎AI分享:无需OCR,基于ColQwen2、Qwen2.5和Weaviate对PDF进行多模态RAG的解决方案

无需OCR&#xff0c;基于ColQwen2、Qwen2.5和Weaviate对PDF进行多模态RAG的解决方案 关键词&#xff1a;多模态RAG、ColQwen2、Qwen2.5-VL、Weaviate 向量数据库、PDF 检索问答、无需 OCR、ColBERT 多向量、跨模态检索、MaxSim 相似度、知识库构建、AI 文档处理、视觉语言模型、…

HTML第三课:特殊元素

HTML第三课&#xff1a;特殊元素特殊元素代码展示特殊元素 不在行级元素和块级元素概念里面的元素无法控制没有宽高的元素 代码展示 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewpo…

蓝桥杯算法之基础知识(5)

目录 Ⅰ.in方法的使用 Ⅱ.字典的使用 Ⅲ.1MB 、KB、 B、 b(即bit)的转换&#xff08;必学&#xff09; Ⅳ.闰年or平年 Ⅴ.count和counter方法 1. count() 方法的使用场景 2. Counter 类的介绍 3. count() 与 Counter 的区别 4. Counter 的高级应用 5.Counter的另一种使用 Ⅵ.ma…

lesson52:CSS进阶指南:雪碧图与边框技术的创新应用

目录 一、CSS雪碧图&#xff1a;从性能优化到交互革命 1.1 技术原理与现代价值 1.2 2025年实现工具与自动化流程 1.2.1 构建工具集成方案 1.2.2 在线生成工具推荐 1.3 高级应用案例与代码实现 1.3.1 多状态按钮系统 1.3.2 响应式雪碧图实现 1.4 最佳实践与性能优化 二…

案例——从零开始搭建 ASP.NET Core 健康检查实例

1. 项目创建与基础设置 创建新项目 首先&#xff0c;创建一个新的 ASP.NET Core Web API 项目&#xff1a; dotnet new webapi -n HealthCheckDemo cd HealthCheckDemo添加必要的 NuGet 包 添加健康检查相关的 NuGet 包&#xff1a; dotnet add package Microsoft.AspNetCore.D…

【Java生产级避坑指南】8. Tomcat线程池下的内存地雷:ThreadLocal泄漏检测与实战解决

摘要:某金融交易系统(Spring Boot 2.7 + Tomcat 9)在线上运行时出现严重内存泄漏:堆内存(4GB)72小时内耗尽并触发OOM,日均200万请求场景下,Full GC频率从正常1次/天飙升至6次/小时。排查发现,根源是ThreadLocal未清理——Tomcat线程池复用线程时,UserInfo等大对象被T…

云端职达:你的AI求职专属猎头,颠覆传统招聘模式

在求职的“金三银四”或“金九银十”&#xff0c;每一分每一秒都弥足珍贵。面对浩如烟海的招聘信息&#xff0c;你是否还在花费大量时间一条条筛选、重复投递简历&#xff0c;最终却常常石沉大海&#xff1f;传统求职方式的低效和“已读不回”的窘境&#xff0c;让许多求职者感…

Parasoft C/C++test如何实现开发环境内嵌的安全检测

Parasoft 作为嵌入式质量与安全领域的全球领先供应商&#xff0c;其 C/Ctest 平台依托 IDE 级原生集成、实时合规检测引擎与缺陷闭环治理框架&#xff0c;将传统静态应用安全测试由项目末期集中执行前移至编码阶段&#xff0c;显著降低缺陷修复成本并缩短认证周期&#xff0c;为…

leetcode-每日一题-人员站位的方案数-C语言

3025. 人员站位的方案数 I 输入&#xff1a; 2 < n < 50 points[i].length 2 0 < points[i][0], points[i][1] < 50 points[i] 点对两两不同。 // 按x降序&#xff0c;按y升序 int cmp(const void *a, const void *b) {int *p *(int **)a;int *q *(int **)b;if(…

ClickHouse中的ON CLUSTER关键字

目录 ClickHouse中的ON CLUSTER关键字 前置基础 ClickHouse 中的 MergeTree 与 ReplicatedMergeTree ON CLUSTER 查询在集群上的正确用法(为什么 查询/写入数据 不用 ON CLUSTER) 与不使用 ON CLUSTER 的区别 注意事项与坑 常用配套命令 ClickHouse中的ON CLUSTER关键字 前置…

Python绘图动态可视化:实时音频流

在数据可视化中&#xff0c;动画是一种非常有效的方式&#xff0c;可以帮助我们更好地理解数据的变化和动态过程。Python 的 matplotlib.animation 模块提供了强大的功能来创建动画。本文将介绍如何使用 matplotlib.animation 创建简单的动画&#xff0c;并展示一个更复杂的实时…

【Vue2 ✨】Vue2 入门之旅(七):事件处理

在前几篇文章中&#xff0c;我们学习了指令与过滤器。本篇将介绍 事件处理&#xff0c;重点包括 v-on、事件修饰符以及键盘事件。 目录 事件绑定 v-on事件修饰符键盘事件小结 事件绑定 v-on Vue 使用 v-on&#xff08;缩写 &#xff09;来监听事件。 <div id"app&qu…

高效数据传输的秘密武器:Protobuf

当涉及到网络通信和数据存储时&#xff0c;数据序列化一直都是一个重要的话题&#xff1b;特别是现在很多公司都在推行微服务&#xff0c;数据序列化更是重中之重&#xff0c;通常会选择使用 JSON 作为数据交换格式&#xff0c;且 JSON 已经成为业界的主流。但是 Google 这么大…

腾讯混元翻译大模型Hunyuan-MT-7B:重塑跨语言沟通的技术革命

腾讯混元翻译大模型Hunyuan-MT-7B&#xff1a;重塑跨语言沟通的技术革命 腾讯混元Hunyuan-MT-7B大模型的发布标志着机器翻译领域进入全新时代&#xff0c;本文将深入解析这一突破性技术如何实现30种语言翻译冠军的卓越表现 一、Hunyuan-MT-7B核心架构解析 1.1 基于Transformer的…

End-To-End 之于推荐-kuaishou OneRec2 笔记

End_To_End 之于推荐onerec里&#xff0c;快手利用大模型做了推荐架构的革命&#xff0c;几个月后&#xff0c;v2之于v1是一些技术细节进行了进一步迭代&#xff0c;主要是以下两个方面&#xff1a; 1. 架构层面的突破&#xff1a;Lazy Decoder-Only 背景问题&#xff1a;V1 的…

【LeetCode】3670. 没有公共位的整数最大乘积 (SOSDP)

3670. 没有公共位的整数最大乘积 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; SOSDP 本题我们显然不能枚举每一个数对&#xff0c;n 的复杂度显然超时&#xff0c;所以考虑优化 我们考虑一个二进制数 mask&#xff0c;因为我们必须要选没有任…

Sping Web MVC入门

1.什么是Sping Web MVC1.1MVC定义2.什么是Spring MVC