ES数据处理方法
由于日志数据存在ES项目里,需要从ES中获取日志进行分析,使用SQL数据进行处理,如下:
select
traceid-- STRING COMMENT '流程id',
,appnum -- BIGINT COMMENT '迭代号',
,appversion --STRING COMMENT 'APP版本',
,appcode -- STRING COMMENT '应用编码',
,type -- STRING COMMENT '类型',
,spanid -- STRING COMMENT '模块id',
,apptype -- STRING COMMENT '应用类型详情见定义',
,eventtime -- DATETIME COMMENT '日期',
,name -- STRING COMMENT '名称',
,id -- STRING COMMENT 'id',
,theid -- STRING COMMENT 'theId'
,preid
-------------data----------------
,GET_JSON_OBJECT(data_tmp,'$.allInOne') AS allInOne
,GET_JSON_OBJECT(data_tmp,'$.class') AS class
,GET_JSON_OBJECT(data_tmp,'$.classCode') AS classCode
,GET_JSON_OBJECT(data_tmp,'$.deviceId') AS deviceId
,GET_JSON_OBJECT(data_tmp,'$.grade') AS grade
,GET_JSON_OBJECT(data_tmp,'$.gradeCode') AS gradeCode
,GET_JSON_OBJECT(data_tmp,'$.handleTime') AS handleTime
,GET_JSON_OBJECT(data_tmp,'$.heigth') AS heigth
,cast(ipint(GET_JSON_OBJECT(json_build,'$.ip')) as string) AS ipAddr
,GET_JSON_OBJECT(data_tmp,'$.isSuccess') AS isSuccess --isSuccess(1.是 0否)
,GET_JSON_OBJECT(data_tmp,'$.loginMode') AS loginMode -- 登陆模式 1 游客登陆 2 账户登陆
,GET_JSON_OBJECT(data_tmp,'$.loginType') AS loginType -- 登陆方式 1:在线登陆 2 离线登陆
,GET_JSON_OBJECT(data_tmp,'$.school') AS school
,GET_JSON_OBJECT(data_tmp,'$.schoolCode') AS schoolCode
,GET_JSON_OBJECT(data_tmp,'$.width') AS width
,GET_JSON_OBJECT(data_tmp,'$.subject') AS subject
,GET_JSON_OBJECT(data_tmp,'$.subjectCode') AS subjectCode
,GET_JSON_OBJECT(data_tmp,'$.classTime') AS classTime
,GET_JSON_OBJECT(data_tmp,'$.reason') AS reason
,GET_JSON_OBJECT(data_tmp,'$.operateVersion') AS operateVersion
----------新增---------
,CASE WHEN GET_JSON_OBJECT(data_tmp,'$.userId') is not NULL THEN GET_JSON_OBJECT(data_tmp,'$.userId')
WHEN GET_JSON_OBJECT(data_tmp,'$.teacherCode') is not null THEN GET_JSON_OBJECT(data_tmp,'$.teacherCode')
ELSE GET_JSON_OBJECT(data_tmp,'$.userId')
END AS userId
,GET_JSON_OBJECT(data_tmp,'$.userName') AS userName
,GET_JSON_OBJECT(data_tmp,'$.userType') AS userType
,GET_JSON_OBJECT(data_tmp,'$.account') AS account
,GET_JSON_OBJECT(data_tmp,'$.courseId') AS courseId
,GET_JSON_OBJECT(data_tmp,'$.pageName') AS pageName
,GET_JSON_OBJECT(data_tmp,'$.pageTitle') AS pageTitle
,CASE WHEN GET_JSON_OBJECT(data_tmp,'$.describe') is not NULL THEN GET_JSON_OBJECT(data_tmp,'$.describe')
WHEN GET_JSON_OBJECT(data_tmp,'$.eventDesc') is not NULL THEN GET_JSON_OBJECT(data_tmp,'$.eventDesc')
ELSE ''
END AS describes
,GET_JSON_OBJECT(data_tmp,'$.source') AS source
,GET_JSON_OBJECT(data_tmp,'$.topDistance') AS topDistance
,GET_JSON_OBJECT(data_tmp,'$.size') AS sizes
---------------json_build--------------------
,GET_JSON_OBJECT(json_build,'$.sysVersion') AS sysVersion
,GET_JSON_OBJECT(json_build,'$.cpuType') AS cpuType
,GET_JSON_OBJECT(json_build,'$.memory') AS memory
,GET_JSON_OBJECT(json_build,'$.netType') AS netType
,GET_JSON_OBJECT(json_build,'$.sysName') AS sysName
,GET_JSON_OBJECT(json_build,'$.deviceModel') AS deviceModel
,GET_JSON_OBJECT(json_build,'$.deviceNo') AS deviceNo
-------------------新增--------------------
,GET_JSON_OBJECT(json_build,'$.screenHeight') AS screenHeight
,GET_JSON_OBJECT(json_build,'$.screenWidth') AS screenWidth
,GET_JSON_OBJECT(json_build,'$.browserName') AS browserName
,GET_JSON_OBJECT(json_build,'$.browserVersion') AS browserVersion
,GET_JSON_OBJECT(json_build,'$.browserWidth') AS browserWidth
,GET_JSON_OBJECT(json_build,'$.browserHeight') AS browserHeight
,GET_JSON_OBJECT(json_build,'$.ip') AS ip
,GET_JSON_OBJECT(json_build,'$.remoteIp') AS remoteIp
,GET_JSON_OBJECT(data_tmp,'$.actionName') AS actionName
,GET_JSON_OBJECT(data_tmp,'$.finishStatus') AS finishStatus
,GET_JSON_OBJECT(data_tmp,'$.isFirst') AS isFirst
,GET_JSON_OBJECT(data_tmp,'$.bankType') AS bankType
,GET_JSON_OBJECT(data_tmp,'$.book') AS book
,GET_JSON_OBJECT(data_tmp,'$.mode') AS mode
,GET_JSON_OBJECT(data_tmp,'$.chapter') AS chapter
,GET_JSON_OBJECT(data_tmp,'$.result') AS result
,GET_JSON_OBJECT(data_tmp,'$.knowledgeCount') AS knowledgeCount
,GET_JSON_OBJECT(data_tmp,'$.questCount') AS questCount
,GET_JSON_OBJECT(data_tmp,'$.scoreType') AS scoreType
,GET_JSON_OBJECT(data_tmp,'$.scoreModule') AS scoreModule
,GET_JSON_OBJECT(data_tmp,'$.appName') AS appName
,GET_JSON_OBJECT(data_tmp,'$.voteNumber') AS voteNumber
,GET_JSON_OBJECT(data_tmp,'$.perVoteNubmer') AS perVoteNubmer
,GET_JSON_OBJECT(data_tmp,'$.type') AS attributeType
--- 新增 2022-12-09 ----
,GET_JSON_OBJECT(data_tmp,'$.loginTypeName') AS loginTypeName
,GET_JSON_OBJECT(data_tmp,'$.name') AS noteName
,GET_JSON_OBJECT(data_tmp,'$.notes') AS notes
,GET_JSON_OBJECT(data_tmp,'$.pageNum') AS pageNum
,GET_JSON_OBJECT(data_tmp,'$.color') AS color
,GET_JSON_OBJECT(data_tmp,'$.event') AS event
,GET_JSON_OBJECT(data_tmp,'$.date') AS switchDate
,GET_JSON_OBJECT(data_tmp,'$.input') AS inputValue
,GET_JSON_OBJECT(data_tmp,'$.title') AS title
,GET_JSON_OBJECT(data_tmp,'$.fileName') AS fileName --文件名
-- 1.文档:doc、docx、PDF
-- 2.音频:WAV、ape、AIFF、CD、AU、MP3、WMA、VQF、FLAC、MIDI、Ogg、U-Law、VOC、aac、RA/.RM/.RAM
-- 3.视频:avi、MOV/.QT、MKV、MP4、WMV、MPEG、BD、HDVD、RMVB、PROPER、R5、Watermarks、TS、DAT、SWF、ASF、3GP、FLV、HDRIP、IMAX
-- 4.课件:ppt、pptx、pps、ppsx、ppa、ppam、pot、potx、thmx
-- 5.图片:Webp、BMP、PCX、TIF、GIF、JPEG、TGA、EXIF、FPX、SVG、PSD、CDR、PCD、DXF、UFO、EPS、AI、PNG、HDRI、RAW、WMF、FLIC、EMF、ICO
-- 6.表格:xls、csv、CSS、XPS、xlsm、et、
-- 7.压缩包:RAR、ZIP、ARJ、Z、LZH、JAR
-- 8.其他
,GET_JSON_OBJECT(data_tmp,'$.fileId') AS fileId
,GET_JSON_OBJECT(data_tmp,'$.fileNames') AS fileNames
,GET_JSON_OBJECT(data_tmp,'$.beginDate') AS beginDate
,GET_JSON_OBJECT(data_tmp,'$.endDate') AS endDate
,GET_JSON_OBJECT(data_tmp,'$.questionId') AS questionId --题号
,GET_JSON_OBJECT(data_tmp,'$.packageName') AS packageName
,GET_JSON_OBJECT(data_tmp,'$.versionName') AS versionName
,GET_JSON_OBJECT(data_tmp,'$.versionCode') AS versionCode
,GET_JSON_OBJECT(data_tmp,'$.jobId') AS jobId
,GET_JSON_OBJECT(data_tmp,'$.answer') AS answer
,GET_JSON_OBJECT(data_tmp,'$.wrong') AS wrong
,GET_JSON_OBJECT(data_tmp,'$.correct') AS correct
,GET_JSON_OBJECT(data_tmp,'$.unanswered') AS unanswered
,GET_JSON_OBJECT(data_tmp,'$.finishNumber') AS finishNumber
,GET_JSON_OBJECT(data_tmp,'$.totalNumber') AS totalNumber
,GET_JSON_OBJECT(data_tmp,'$.word') AS word
,GET_JSON_OBJECT(data_tmp,'$.msg') AS msg
,GET_JSON_OBJECT(data_tmp,'$.count') AS impCount
,GET_JSON_OBJECT(json_build,'$.pageHeight') AS pageHeight --页面高度
,GET_JSON_OBJECT(data_tmp,'$.answers') AS answers --答题情况
--新增--
,GET_JSON_OBJECT(data_tmp,'$.num') AS num --题目数量
,GET_JSON_OBJECT(data_tmp,'$.op') AS op --随机选人 选项 op(清除(NULL)、A、B、C) op(不随机(0)、1、2、3)
,GET_JSON_OBJECT(data_tmp,'$.leaveTime') AS leaveTime --收卷倒计时
,GET_JSON_OBJECT(data_tmp,'$.examId') AS examId --考试id
,GET_JSON_OBJECT(data_tmp,'$.id') AS idCode --id,用英文逗号隔开,组code
,GET_JSON_OBJECT(data_tmp,'$.code') AS code --对调学生
,GET_JSON_OBJECT(data_tmp,'$.rol') AS rol --对调学生 位置rol
,GET_JSON_OBJECT(data_tmp,'$.col') AS col --对调学生 位置col
,GET_JSON_OBJECT(data_tmp,'$.stage') AS stage --学段
,GET_JSON_OBJECT(data_tmp,'$.version') AS versions --学段
-- ,GET_JSON_OBJECT(data_tmp,'$.type') AS 见 attributeType --类型 type(1.批注作答 2.画板作答)
-- ,GET_JSON_OBJECT(data_tmp,'$.actionName') AS actionName --活动名称
-- ,GET_JSON_OBJECT(data_tmp,'$.answer') AS answer --答案
--,GET_JSON_OBJECT(data_tmp,'$.color') AS color --颜色
-- ,GET_JSON_OBJECT(data_tmp,'$.finishNumber') AS finishNumber --找到的数量
--,GET_JSON_OBJECT(data_tmp,'$.totalNumber') AS totalNumber --总词数
-- ,GET_JSON_OBJECT(data_tmp,'$.word') AS word --未答数
-- `completionStatus` varchar(100) DEFAULT NULL COMMENT '完成情况',
-- ,GET_JSON_OBJECT(data_tmp,'$.event') AS event --收起/展开事件
--,GET_JSON_OBJECT(data_tmp,'$.fileId') AS fileId --云端文件ID
--,GET_JSON_OBJECT(data_tmp,'$.fileNames') AS fileNames --文件名列表
--,GET_JSON_OBJECT(data_tmp,'$.fileName') AS fileName --文件名
--,GET_JSON_OBJECT(data_tmp,'$.date') AS dates --日期筛选类型
--,GET_JSON_OBJECT(data_tmp,'$.result') AS isfinish --完成情况 result:true/false
-- ,GET_JSON_OBJECT(data_tmp,'$.input') AS inputValue --输入值
--,GET_JSON_OBJECT(data_tmp,'$.jobId') AS jobId --作业ID
--,GET_JSON_OBJECT(data_tmp,'$.name') AS name --名称
--,GET_JSON_OBJECT(data_tmp,'$.questionId') AS questionId --题目ID
--`jobType` varchar(50) DEFAULT NULL COMMENT '作业类型',
--`noteName` varchar(50) DEFAULT NULL COMMENT '笔记本名称',
--`signName` varchar(100) DEFAULT NULL COMMENT '标签名',
--`switchDate` datetime DEFAULT NULL COMMENT '日期切换日期值',
--`thickNess` varchar(10) DEFAULT NULL COMMENT '粗细值',
--`timeSlot` varchar(10) DEFAULT NULL COMMENT '时间段',
--`toolName` varchar(50) DEFAULT NULL COMMENT '工具名称',
--`wrongBookName` varchar(50) DEFAULT NULL COMMENT '错题本名称',
-- ,GET_JSON_OBJECT(json_build,'$.loginTypeName') AS appcode
-- ,GET_JSON_OBJECT(json_build,'$.appVersion') AS appVersion
,createtime --创建时间
from (
select theid,
id,
name,
eventtime,
apptype,
regexp_replace(regexp_replace(regexp_replace(build,'^\\[',''),'\\]$',''),'},\\{','}|{') AS json_build,
spanid,
type,
appcode,
regexp_replace(regexp_replace(regexp_replace(data,'^\\[',''),'\\]$',''),'},\\{','}|{') AS json_data,
appversion,
appnum,
preid,
traceid,
createtime
from dw_es_action_log_inc_new
WHERE
-- DATETRUNC(eventtime,'hh') >= DATETRUNC(dateadd(TO_DATE('${cyctime}','yyyymmddhhmiss'), -1, 'hh'),'hh') or
DATETRUNC(createtime,'DD') >= DATETRUNC(TO_DATE('${bizdate}','yyyymmdd'),'DD') --测试使用
) a0
lateral view explode(split(json_data,'\\|')) b AS data_tmp;
从中可以发现,针对很多不同格式的 数据,可以进行这种分解处理。
select bh,bjmc,nj,xxbm,xxmc,xnid,xn,xnmc,xd,rnk from (SELECT bh,bjmc,nj,xxbm,xxmc,xnid,xn,xnmc,xd, Row_Number() OVER (partition by bh,xxbm ORDER BY nj desc) rnk
FROM dw_class where zt='1' and bjlxm = '1' and xnid <> '' ) aa where rnk='1'
同时可以使用Row_Number,进行数据处理,获取最大年级数据。
相关文章:
ES数据处理方法
由于日志数据存在ES项目里,需要从ES中获取日志进行分析,使用SQL数据进行处理,如下: select traceid-- STRING COMMENT 流程id, ,appnum -- BIGINT COMMENT 迭代号, ,appversion --STRING COMMENT APP版本, ,appc…...
STM32实现软件IIC协议操作OLED显示屏(2)
时间记录:2024/1/27 一、OLED相关介绍 (1)显示分辨率128*64点阵 (2)IIC作为从机的地址0x78 (3)操作步骤:主机先发送IIC起始信号S,然后发送OLED的地址0x78,然…...
【linux】远程桌面连接到Debian
远程桌面连接到Debian系统,可以使用以下几种工具: 1. VNC (Virtual Network Computing) VNC(Virtual Network Computing)是一种流行的远程桌面解决方案,它使用RFB(Remote Framebuffer Protocol࿰…...
python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-菜单管理实现
锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…...
JS之隐式转换与布尔判定
大家思考一下 [ ] [ ] ? 答案是空字符串 为什么呢? 当做加法运算的时候,发现左右两端存在非原始类型,也就是引用类型对象,就会对对象做隐式类型转换 如何执行的?或者说怎么查找的? 第一步&…...
ubuntu20根目录扩容
ubuntu根目录/ 或者 /home文件夹有时出现空间满了的情况,可以用gparted工具进行空间的重新分配。 首先,如果你是双系统,需要从windows系统下磁盘压缩分配一部分未使用的空间给ubuntu,注意压缩的空间要邻接ubuntu所在盘的位置。 …...
(四)DQL数据查询语言
基础语法 SELECT {*,列名,函数} FROM 表名 [WHERE 条件]; 说明: -SELECT检索关键字 *匹配所有列 , 匹配指定列 -FROM 所提供的数据源(表,视图,另一个查询机制反馈的结果) -WHERE 条件(控制查询的区…...
网络安全03---Nginx 解析漏洞复现
目录 一、准备环境 二、实验开始 2.1上传压缩包并解压 2.2进入目录,开始制作镜像 2.3可能会受之前环境影响,删除即可 编辑 2.4制作成功结果 2.5我们的环境一个nginx一个php 2.6访问漏洞 2.7漏洞触发结果 2.8上传代码不存在漏洞 2.9补充&#…...
第十四届蓝桥杯C组题目 三国游戏
4965. 三国游戏 - AcWing题库 小蓝正在玩一款游戏。 游戏中魏蜀吴三个国家各自拥有一定数量的士兵 X,Y,Z(一开始可以认为都为 00)。 游戏有 n 个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第 i个事件发生时会分…...
【LeetCode-435】无重叠区间(贪心)
题目链接 题目简介 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 1: 输入: [ [1,2], [2,3], [3,4…...
写读后感的时候,可以适当地引用书中的内容吗?
写读后感时,适当地引用书中的内容是可以的,这样可以更好地支持你的观点和感受,增强文章的可信度和说服力。 引用书中的内容可以帮助读者更好地理解你所讨论的主题和人物,同时也可以展示你对原著的深入理解和阅读能力。但是&#…...
RockChip DRM Display Driver
资料来源: 《Rockchip_DRM_Display_Driver_Development_Guide_V1.0.pdf》 《Rockchip_Developer_Guide_DRM_Display_Driver_CN.pdf》 一:DRM概述 DRM(Direct Rendering Manager)直接渲染管理,buffer分配,帧缓冲。对应userspace库位libdrm,libdrm库提供了一系列友好的…...
【数据库】GaussDB数据类型和简单DDL概述
GaussDB是一款华为公司开发的关系型数据库管理系统(RDBMS),提供了多种数据类型用于存储和处理不同类型的数据。以下是GaussDB常见的数据类型: 1、GaussDB常见的数据类型 1.1、数值型(Numeric Types)&…...
malloc/free和new/delete相关问题:
面试题: 1、两种方式的区别: (1)malloc需要强制类型转换,new不需要 (2)malloc需要计算空间大小,new不需要 例如:创建5个int类型的空间 int*p(int *)malloc(sizeof(i…...
设计一套扑克牌
约束和假设 这是一幅用于类似扑克和二十一点等游戏的通用扑克牌吗? 我们可以假设这副牌有52张(2-10,杰克,女王,国王,埃斯)和4种花色吗? 我们可以假设输入是有效的,还是需…...
ubuntu20.04 外接hdmi没有声音
pulseaudio -k 请尝试执行该命令...
Mybatis 拦截器注册方式
在MyBatis中注册拦截器可以通过以下三种方式: 1. XML配置文件方式 在Mybatis的核心配置文件(mybatis-config.xml)中的标签下定义拦截器,并指定实现类。 <configuration><!-- ...其他配置... --><plugins><…...
[嵌入式软件][启蒙篇][仿真平台] STM32F103实现SPI控制OLED屏幕
上一篇: [嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集 [嵌入式软件][启蒙篇][仿真平台]STM32F103实现定时器 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现IIC控制OLED屏幕 文章目…...
个体诊所电子处方系统设计,社区门诊处方开单管理系统软件教程
个体诊所电子处方系统设计,社区门诊处方开单管理系统软件教程 一、前言 以下软件程序操作教程以 佳易王诊所电子处方管理系统软件V17.3为例说明 如图,在基本信息设置里,可以设置处方配方模板,这样在开电子处方的时候可以一键导入…...
数据结构(1)--> 顺序表
定义: 顺序表存储定义: 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构,顺序表功能的实现借助于数组,通过对数组进行封装,从而实现增删查改的功能,严格意义上来说(数组无法实现…...
大语言模型,视觉模型,全模态模型,语音模型和向量模型的区别和使用
1. 大语言模型(Large Language Model, LLM)定义:以文本为输入,生成文本的模型。特点:输入输出都是自然语言(或包含少量结构化的 prompt)。擅长对话、写作、推理、代码生成等任务。在 LangChain …...
OpenClaw+GLM-4.7-Flash开发提效:日志分析+异常告警自动化
OpenClawGLM-4.7-Flash开发提效:日志分析异常告警自动化 1. 为什么需要自动化日志监控 作为开发者,我每天要面对服务器、应用和中间件产生的海量日志。曾经为了排查一个线上问题,我需要手动grep几十MB的日志文件,眼睛盯着屏幕找异…...
nli-distilroberta-base轻量化效果实测:在嵌入式设备上的推理性能与精度
nli-distilroberta-base轻量化效果实测:在嵌入式设备上的推理性能与精度 1. 开篇:当大模型遇上小设备 在树莓派上跑BERT?半年前这还是个笑话。但当我第一次在Jetson Nano上成功运行量化后的nli-distilroberta-base模型时,这个4核…...
AI做表工具三强对决:Excel-Agent、ChatExcel、Excel 原生 Agent,谁才是职场数据处理真王者?
当 AI 遇上 Excel,传统制表、数据清洗、复杂分析的低效困局被彻底打破。当前市场上,Excel-Agent、ChatExcel、Excel 原生 Agent 模式 是 AI 表格领域的三大主流选择,但三者在技术逻辑、使用体验、数据安全、实战效能上差异显著。作为专为 Exc…...
从规格书到点亮屏幕:RK3568+GM8775C双通道LVDS调试全流程解析
RK3568GM8775C双通道LVDS屏幕调试实战:从参数解析到设备树配置 第一次拿到一块非标准LVDS屏幕时,我盯着规格书里密密麻麻的表格和数据完全无从下手。作为硬件工程师,我们常常需要面对各种定制化显示屏的驱动问题。本文将带你深入理解如何从屏…...
Z-Image-GGUF在软件测试中的应用:自动化生成测试用例示意图
Z-Image-GGUF在软件测试中的应用:自动化生成测试用例示意图 你是不是也遇到过这样的场景?写测试用例文档时,为了描述一个复杂的用户操作流程,绞尽脑汁写了半天文字,结果评审时,开发同事还是没完全看懂&…...
终极指南:使用Refine和Ant Design快速构建专业列表页面
终极指南:使用Refine和Ant Design快速构建专业列表页面 【免费下载链接】refine 一个用于构建内部工具、管理面板、仪表盘和B2B应用程序的React框架,具有无与伦比的灵活性。 项目地址: https://gitcode.com/GitHub_Trending/re/refine Refine是一…...
别再直接升glibc 2.25了!CentOS7下从2.17平滑升级到2.31的保姆级排雷手册
CentOS7下glibc升级避坑实战:从2.17到2.31的安全跃迁指南 当你在CentOS7服务器上部署最新中间件时,那个熟悉的报错信息又出现了——"GLIBC_2.25 not found"。作为运维老兵,我太了解这种被glibc版本束缚的无力感。但别急着执行yum u…...
【LE Audio】PACS精讲[2]: 服务层核心逻辑,玩转音频能力发布与交互
在上一篇的内容里【LE Audio】PACS精讲[1]: 吃透基础规则,解锁音频能力发布核心逻辑,我们吃透了PACS的基础规则,从一致性要求、协议兼容、GATT交互约定到术语体系,搭建起了PACS的知识地基。而PACS的服务层,正是这些基础规则落地的核心载体,是蓝牙音频设备作为服务器对外发…...
蓝桥杯备赛避坑指南:PWM互补输出和死区设置里那些容易忽略的细节
蓝桥杯嵌入式实战:PWM互补输出与死区设置的七个致命误区 在蓝桥杯嵌入式赛道的竞赛环境中,PWM互补输出功能几乎是每年必考的核心考点。但令人惊讶的是,超过60%的参赛选手会在死区设置和互补通道配置环节出现严重错误——轻则导致波形异常影响…...
