ONVIF与GB/T28181协议栈同天发版:v2重构、C版首发与设备侧收官

在windows安装程序时出现 系统无法打开指定的设备或文件的解决方案 本文主要介绍了在windows安装程序时出现 系统无法打开指定的设备或文件的解决方案,希望能对使用windows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 阅读详情

做视频接入的同行看到“五个协议库同天发版”这条消息,应该能明白这背后的分量。ONVIF 和 GB/T 28181 这两条线,基本覆盖了安防设备接入的绝大多数场景:海外设备和泛 IP 设备走 ONVIF,国内项目对接平台走国标。之前 onvif-go 一直在小步迭代,这次直接跨到 v2;国标设备侧从功能验证阶段走到收官;而 onvif-c 的首次发布,意味着嵌入式设备也有了可裁剪的协议栈。一次把这几件事同时落定,不是临时起意,是规划了大半年的结果。

这篇文章不打算写发行公告,我想聊的是这几条协议库究竟解决了什么问题、v2 到底动了哪些核心逻辑、国标设备侧所谓“收官”的边界在哪、以及 C 版为什么还要单独做一版。如果你也在做视频云平台、设备接入网关,或者自己维护过协议层代码,这篇应该能帮你省一些自己踩坑的时间。

1. 五条协议线同天锁版,本质上是一次“兼容矩阵”收口

先说清楚这次发版的五个对象,不然容易以为是三个。对外看是 onvif-go、onvif-c 和国标设备侧,实际这次一起锁版本的是五条线:

协议库 语言 版本 角色定位
onvif-go Go v2.0.0 ONVIF 客户端协议栈,服务端场景为主,支撑高并发取流网关
onvif-c C v1.0.0 ONVIF 客户端最小实现,面向嵌入式设备和轻量接入端
gb28181-device Go v1.0.0 国标设备侧协议栈,设备主动注册到平台场景,本次收官
gb28181-platform Go v1.2.0 国标平台侧信令对接模块,本次小版本增强
xutils Go/C 共用 v1.1.0 XML 解析、时间格式化、编解码、摘要计算等公共基础库

最后这个 xutils 经常被忽略,但它恰恰是同天发版的关键。因为 Go 和 C 两套协议栈在底层用的字段定义、XML 结构映射、时间戳换算逻辑必须保持一致,否则同样的设备用不同语言实现会解析出不同的结果。所以这次锁版,与其说是“五个库同时发布”,不如说是把整个兼容矩阵钉死在一个时间点上。

1.1 为什么 ONVIF 和 GB/T 28181 都要同时维护

很多刚入行的朋友会问:安防接入不是有国标就够了?国内项目确实以 GB/T 28181 为主,但有两个现实:一是大量存量设备是海外品牌或者只实现了 ONVIF 的 Profile S,国标能力缺失;二是国标信令的很多环节(比如 SIP 鉴权、媒体 SDP 协商)本质上是通用协议能力,ONVIF 的 RTSP 会话管理经验和国标媒体收流逻辑能互相复用。

我们把 ONVIF 和国标拆成独立协议栈而不是揉在一起,是为了让上层业务可以按需组合。比如一个视频接入网关,向下对接设备时可能同时需要 ONVIF 发现设备、RTSP 拉流、国标注册上报,向上对接平台时只需要国标信令。协议栈保持正交,才能避免“改一个协议引入另一个协议的问题”。

1.2 设备侧与平台侧为什么必须分成两套

国标设备侧和平台侧拆开,很多人一开始不理解,觉得 SIP 信令不就是收收发发,为什么分别维护。实际差别非常大。设备侧核心是主动注册、保持长连接、响应平台的点播和控制指令;平台侧核心是接受大量设备注册、管理设备状态、发起点播和云台控制。两边的状态机方向相反,超时语义也相反——设备侧要处理“平台失联怎么办”,平台侧要处理“设备批量掉线怎么收敛”,硬合在一起,状态机容易乱。

特别是这次的 gb28181-device,从 0.9.x 到 1.0.0,把设备侧该有的功能全部补齐了:注册、心跳、目录查询、实时点播、录像回放、云台控制、报警上报、校时。这八项走完,设备侧才敢说收官。

2. onvif-go 从 v1 到 v2:核心不是加功能,是重新整理“连接的生命周期”

onvif-go 在 v1 阶段最大的问题不是功能缺,而是会话管理太粗糙。早期版本一个 Client 对应一个 SOAP 端点,底层 HTTP 连接用完就丢,RTSP 会话和 ONVIF 会话各管各的,导致一个典型问题:设备端 ONVIF 会话已经超时,但上层还以为设备在线,取流时拿到的 StreamUri 是失效的。v2 这一版,本质上是在给连接还债。

2.1 拿到配置后的第一件事:探活而不是取流

v1 时代很多接入流程是:发现设备 -> 拉 Profile -> 调 GetStreamUri -> 推 RTSP。看起来没问题,但老设备经常给你返回一个已经失效的 RTSP 地址。v2 强制要求先探活再取流,用 GetSystemDateAndTime 做一次轻量请求,既能校验鉴权是否还有效,也能拿到设备时间用于后续时间戳对齐。

这个探活动作花销很小,一个 SOAP 请求几毫秒,但能把“设备假在线”的比例明显压下去。我们自己压测过,接入一万路设备,增加了探活之后,首次取流失败率从 3% 降到 0.5% 以下。代价可以忽略,收益非常值。

2.2 断连检测从“等到出错”变成“主动发现”

ONVIF 协议本身没有标准的 keepalive 定义,很多设备是看 SOAP 会话超时时间,通常 5 到 10 分钟没有交互就断开。v1 的问题在于只靠 RTSP 的 OPTIONS 保活,RTSP 链路和 ONVIF 会话是两条独立的通道,容易出现“RTSP 活着但 ONVIF 会话已经过期”的状态。

v2 的会话管理器加了一个双定时器机制:RTSP 通道按 30 秒间隔保活,ONVIF 会话按设备返回的 SessionTimeout 动态调整探活周期。如果 ONVIF 探活连续两次失败,直接把整个设备标记为“会话失效”,触发上层重新发现和注册。

这里要注意,不同厂商的 SessionTimeout 格式不统一,有的返回秒数,有的返回 ISO8601 时长字符串,v2 在 xutils 里统一做了归一化处理。这个细节如果处理不好,会出现某些设备频繁断连,排查起来非常费劲。

2.3 并发模型从全局锁改成会话级锁

v1 的 Client 是全局一把锁,一个设备的所有请求串行执行。单路接入看不出来,但一个网关同时接入上千路摄像头时,单设备信令延迟会累积,导致设备端认为网关无响应。v2 把锁粒度下降,每个会话独立加锁,同时引入了连接池复用底层的 HTTP 连接。

具体表现就是,同一个设备的 GetProfiles 和 GetStreamUri 可以并行发,不同设备之间的请求完全不受影响。我们在 8 核 16G 的机器上用 v2 跑了 5000 路设备的并发发现和取流,CPU 占用比 v1 降了 40%,平均信令响应时间从 120ms 降到 45ms 左右。这个提升对大规模接入场景是决定性的。

2.4 v2 的兼容策略:老接口保留,新接口上位

协议库最怕升级后调用方全部要改,一改就容易出线上问题。这次 onvif-go 的做法是新代码走新接口,老接口标记 deprecated 但保留一个版本的完整实现,同时提供了一个 migrate 工具,扫描代码库自动替换被废弃的枚举和结构体字段名。实际迁移成本,按我们团队的经验,一个中等规模的接入项目,半天到一天能完成。

如果你也在维护类似的协议库,升级时候千万别学某些开源项目直接把接口删干净,调用方会炸的。至少给一个版本的过渡窗口,社区口碑就是这么攒下来的。

3. 国标设备侧“收官”:补完的是报警、回放和校时这几个硬骨头

国标设备侧早期版本只覆盖了“注册 + 心跳 + 实时点播”,那只能算打通了主链路,离生产可用差得远。这次 1.0.0 把设备侧最后几块补上了,才算有底气说收官。

3.1 实时点播的完整信令链,比大多数人想的要复杂

一次实时点播,表面上是平台发 INVITE,设备回 200 OK 带 SDP,然后推 RTP 流。实际上这条链路里的坑非常多。首当其冲是 SDP 里的 SSRC,国标规范要求媒体流的 SSRC 和设备编码有映射关系,不同平台约定不同,设备侧必须做成可配置。

其次,设备侧收到 INVITE 后,是先回 200 OK 再等 ACK 才开始推流,还是 200 OK 之后立刻推流?按规范流程必须等 ACK。但实测不少平台在收到 200 OK 后没有发 ACK 就等着收流,设备侧如果严格等 ACK,画面就起不来。所以我在设备侧留了一个开关:默认等 ACK,遇到特定平台可以配置为不等 ACK 直接推流。协议栈做得再标准,也要给现场留后门,这是做接入层的常识。

3.2 录像回放的时间参数处理是重灾区

录像回放本质上也是在 INVITE 的 SDP 里带起始时间和结束时间,但很多设备的实现不按 RFC 来。有的用 YYYY-MM-DDTHH:mm:ss,有的用秒级时间戳,还有的传的是本地时间而不是 UTC。国标设备侧这一版在 xutils 里统一做了时间解析,并且强制按平台侧下发的时区偏移来换算,避免出现“平台要 9 点到 10 点的录像,设备推的是 1 点到 2 点的流”这种诡异问题。

如果你自己在写国标设备接入,我建议在解析时间参数时不要信设备的系统时区,直接以平台下发的 SIP 头里的时间为准,能少吵很多架。

3.3 报警上报和校时,看着简单实则容易漏

报警上报用 MESSAGE 请求携带 XML 体,很多设备侧实现只上报了通道号和报警类型,但是没带报警时间,平台那边直接显示 1970 年。这次收官版本把报警时间戳改成可选填充,如果设备未提供,就取设备侧当前时间,并且遵循国标格式。

校时则是另一个被忽视的功能。平台会定期给设备下发校时请求,设备侧需要解析并更新本地时钟。如果设备侧忽略这个请求,设备录像的时间戳会越偏越多,最终导致录像检索完全对不上。1.0.0 里把校时逻辑放到了独立的 timekeeper 模块,并且启动时强制同步一次,之后每 24 小时再校准一次。

3.4 “收官”不代表停止,只是功能边界清晰了

把“收官”理解成“以后不维护”就错了。这次 1.0.0 的意思是:GB/T 28181 设备侧该有的能力,功能上已经全了,接下来主要是针对不同平台对接时出现的兼容性修补和性能优化,不会再往协议栈里塞新功能。这样定义版本边界,下游依赖方才能安心升级,不必担心每发一版就要重新做一轮适配。

4. onvif-c 首发:为什么有了 Go 版还要再写一个 C 版

这个问题被问得最多。Go 版在服务端场景跑得很好,但嵌入式设备跑不了 Go runtime,一个最小 Go 程序带 GC 和调度器,内存占用轻松上 10MB,对于内存捉襟见肘的 IPC 和边缘盒子来说太奢侈了。onvif-c 就是为这类场景准备的:目标平台最小内存 2MB,无操作系统的裸机环境也能编译。

4.1 设计取舍:宁可功能少,不可内存炸

onvif-c 的首发版本只实现了 ONVIF 的核心链路:设备发现、能力获取、Profile 获取、StreamUri 获取、RTSP 会话建立。云台控制、视频分析这类高级功能全部砍掉,后续通过扩展模块补。

内存策略上,整个库不在堆上做高频分配,所有请求响应的缓冲区由调用方预分配,库内部只维护一个固定大小的会话池。这样把内存峰值控制住,也避免了反复 malloc/free 造成的内存碎片。如果你要在 RTOS 上跑,这个设计几乎是必须的。

4.2 回调机制替代 Go 的接口抽象

C 语言没有 Go 的接口机制,事件通知全部通过回调函数指针完成。调用方注册一个 onvif_event_handler 结构体,里面放设备发现、状态变化、流地址就绪这几个回调点。代码结构大致是:

onvif_ctx *ctx = onvif_new(NULL);
onvif_event_handler evt = {0};
evt.on_device_found = device_found_cb;
evt.on_session_lost = session_lost_cb;
evt.on_stream_ready = stream_ready_cb;
onvif_bind_handler(ctx, &evt);
onvif_start(ctx);

回调的线程模型由调用方自己决定。我们默认所有回调在独立线程触发,但提供编译选项把回调并入调用线程,方便资源受限的平台做单线程处理。

4.3 字节序和位数问题在 C 版里躲不掉

Go 版因为有 runtime 兜底,很多底层细节被语言屏蔽了。C 版必须自己处理。最典型的问题是小端机器上处理 RTSP/RTP 消息时,一些字段需要手动转换字节序。我们写了一套 hton 适配宏,统一处理好网络序和主机序的转换,并在 CI 里加了 armv7、arm64、x86 三个交叉编译目标,有任何字节序问题会在编译期暴露。

另一个容易出问题的地方是时间格式化。ONVIF 的鉴权头要求时间用 UTC 格式,但嵌入式设备往往没有完整时区数据库,库内部直接用时间戳加固定偏移来计算,避免依赖 glibc 的时区解析逻辑。

4.4 Go 版和 C 版怎么选,我的建议

维度 onvif-go onvif-c
运行环境 Linux 服务器、容器 嵌入式 Linux、RTOS、裸机
内存占用 10MB 起步 可控制在 500KB 以内
部署方式 二进制直接跑 静态编译进固件
适用规模 千路以上接入网关 单设备或边缘小盒子
功能完整性 全功能 核心链路优先

一个团队如果两个场景都涉及,建议把公共的协议交互流程抽象成文档和测试用例,两边共用同一份测试设备列表。我们就是拿同一个真机摄像头同时跑 Go 和 C 两套库的联测,保证两边行为一致。

5. 同天发版的工程落地:版本矩阵、联合测试和发布检查

同天发版最怕的是发布完了发现某个库的依赖指向了一个不存在的版本。我们这次提前三周锁定了五条线的版本矩阵,所有跨库依赖只允许引用矩阵内版本,不允许引用 latest。

5.1 版本锁定的具体做法

Go 这边用 go.mod 的 replace 指令锁定内部依赖:

module github.com/example/device-gateway

require (
    github.com/example/onvif-go v2.0.0
    github.com/example/gb28181 v1.0.0
    github.com/example/xutils v1.1.0
)

C 版通过 pkg-config 文件约定版本,同时 CI 里检查交叉编译产物的符号表,确保没有依赖到宿主机的 glibc 特有符号。这一步很重要,不然本地编过,拷到嵌入式板子上直接段错误。

5.2 联合测试矩阵怎么搭

我们搭了一个 docker-compose 环境,里面有模拟平台端和模拟设备端两个角色,分别加载不同的协议库组成测试矩阵:

  • 模拟平台端(加载 gb28181-platform)对真实设备(加载 gb28181-device)发起注册、点播、回放、云台控制
  • 模拟设备端(加载 onvif-go)对真实平台(加载 gb28181-platform)做国标注册后,再通过 ONVIF 拉取摄像头流
  • 真机列表固定为海康、大华、宇视和两台杂牌摄像头,每次发版前全量跑一遍

这个矩阵跑通,基本能覆盖 95% 的对接场景。剩下的 5% 是网络环境差异,只能在客户现场解决。

5.3 发版检查清单里最容易被忽略的几项

  • 检查 SOAP 请求里的时间戳是否用了 UTC 而不是本地时间,很多设备鉴权失败就是这一个原因
  • 检查国标设备侧的心跳周期是否可配置,有的平台要求 30 秒,有的要求 120 秒,写死 60 秒会挨骂
  • 检查日志是否含设备 IP、序列号、通道号,默认脱敏,否则客户对接群里会被刷屏
  • 检查交叉编译产物大小,onvif-c 的静态库超过 1MB 就要警惕是不是引入了不必要的依赖

6. 实战踩坑:这轮发版里最难缠的三个问题

6.1 ONVIF 保活成功但 RTSP 会话已经失效

现象是设备列表里显示在线,但点击取流一直黑屏。排查发现,v1 只做了 ONVIF 探活,设备返回正常,但 RTSP 会话因为长时间没有发 OPTIONS 已经被设备断开。v2 增加双通道定时器后,这个问题基本消失。

6.2 国标设备反复注册,平台显示抖动

一开始是连续三次心跳超时就把设备标记离线,结果网络一抖动,设备就掉线重注册,平台侧看到的注册日志刷屏。后来改成“心跳超时 + 主动 MESSAGE 探测一次,仍失败才标记离线”。代价是离线判定慢了一个心跳周期,但稳定性好很多。

6.3 C 库在 32 位小端平台的时间溢出

onvif-c 里有一处时间戳计算用了 int 而不是 int64,在 32 位平台超过 2038 年问题还没到,但设备时间设置为 2025 年时就已经出现计算溢出的苗头。排查后统一改用 int64_t,并在 CI 的 armv7 交叉编译目标上加了时间边界测试。

7. 一点个人体会

这几年做协议库最大的感受就是:文档和示例代码往往比实现本身更重要。协议库是给其他工程师用的,对方看不懂怎么接,功能再全也是白搭。这次发版我们同步补了三个不同场景的 demos:网关接入、设备侧注册、嵌入式移植,每个 demo 都是一条能直接跑通的路径,而不是零碎的 API 展示。

最后分享一个小技巧:在 CI 里每天跑一遍“模拟 5000 设备并发注册”的压测,比任何单元测试都能更快暴露协议栈的并发问题。跑一个月,你会对协议库的质量有完全不同的信心。

绕过App某加密企业版加固Frida检测 可以发现dlsym函数加载了两次pthread_create,可以认为这两个进程(或某一个进程)是和Frida的检测有关的,于是为了绕过检测,我们可以让它加载一个虚假的pthread_create函数,得到一个空结果绕过检测。成功绕过了libnllvm1717052779924.so的检测,又到了libface_nllvm.so的检测,使用同样的方法去绕过libface_nllvm.so的检测,代码我这里就不上了,大家可以自己修改以下。dlsym()函数的作用是在已经加载的动态链接库中查找指定符号的地址。 阅读详情

相关推荐

无线自组织网络基础知识

参考书籍:《无线自组织网络路由协议及应用》 目录第一章 绪论1.1 无线自组织网络概述1.1.1 无线自组织网络的定义及分类1.1.2无线自组织网络的主要特点1.1.3无线自组织网络的应用与发展1.无线自组织网络的应用2.无线自组织网络的起源和发展1.2典型的无线自组织网络1.2.1移动Ad Hoc网络1、移动Ad Hoc网络的定义2.移动AdHoc网络的特点3.移动Ad Hoc网络的应用1.2....

逸凌Time 2万+

MySQL 5.7 SYS系统SCHEMA

MySQL5.7 SYS系统模式详解

四爷 6434

告别Qt Creator!VSCode + QMake + MinGW:从零搭建高效Qt开发环境

本文详细介绍了如何使用VSCode替代Qt Creator搭建高效的Qt开发环境,涵盖VSCode配置、QMake与MinGW集成、智能提示优化及构建调试技巧。通过实战案例展示如何提升开发效率30%以上,特别适合中大型Qt项目开发。

weixin_30466039的博客 242

macOS Mysql5.7升级Mysql8(解决mysql.infoschema不存在的问题)

首先提醒大家,拷贝data文件夹有风险!数据无价,建议还是dump数据再restore! 旧版本是5.7,到官网 https://dev.mysql.com/downloads/ 下载8的dmg包,安装(在版本8的安装过程中需要设置root账户的密码,注意记录好!)。 以dmg包方式安装的mysql,根目录在/usr/local下面,可以看到一个“mysql”的替身,指向实际的mysql安装目...

UVB-76电台 6906

RTC时钟芯片替换代码移植-IIC通信

1、问题 RTC时钟芯片由爱普生RX-8010SJ更换成大普INS5710A,两者都是IIC通信,更换大普芯片后时钟不走、以及报掉电错误。仿真分析原因是CPU和RTC芯片收发数据延时不够导致,根据爱普生芯片手册,8010收发数据不采取延时,但大普芯片采用同样方式读取不行(需要加延时) 2、RX-8010SJ手册说明(以读取数据为例) (1)寄存器读操作时序图 指定地址读操作: 1)CPU 发送开始条件[S] 2)CPU 传输RX-8010SJ 的从地址,用R/W 位设定写模式 3)检测从RX-8010

weixin_42851683的博客 2065

【教程4>第6章>第15节】 基于I+jQ复数信号的LS信道估计和均衡实现1——matlab仿真分析,QPSK为例

在基于QPSK调制的通信系统中,LS信道估计和均衡是用于补偿信道失真、提高信号传输质量的重要技术。以下将详细介绍基于I+jQ复数信号的 LS 信道估计和均衡的实现原理与过程。可以看到,通过线性插值之后,QPSK信号的星座图可以模糊的看到四个星座点(图2),通过非线性插值之后,可以清晰的看到QPSK的四个星座点(图3)。可以看到,信道均衡显著提高了通信系统的可靠性和有效性。

FPGA/MATLAB学习教程/源码/项目合作开发 657

SQL Server中如何识别、查找未使用的索引(unused indexes)

  在SQL Server中,索引是优化SQL性能的一大法宝。但是由于各种原因,索引会被当做“银弹”滥用,一方面有些开发人员(甚至是部分数据库管理员)有一些陋习,不管三七二十一,总是根据所谓的"感觉"或“经验”先增加一些索引,而不管这些索引是否未被使用或是否合理。另外一方面在数据库的生命周期中,需求总是在变化,业务也在变化,有些当初创建的有效索引可能已经变成了unused index了。变成了数据...

weixin_34032792的博客 665

基于DO-178C/331的飞控软件研发环境的研究

本研究提出了一套基于DO-178C/331标准的飞控系统软件开发和验证框架。通过优化模型库的设计、代码生成配置和测试验证流程,显著提升了飞控系统软件的开发效率和安全性。未来的研究可以进一步扩展模型库的功能,以适应更复杂的飞控系统需求。

qq_41854911的博客 561

mysql5.7 Performance Schema 一

25.1 性能模式快速入门 25.1 性能模式快速入门 本节简要介绍 Performance Schema,并通过示例说明如何使用它。有关其他示例,请参阅第 25.19 节,“使用性能模式诊断问题”。 性能模式默认启用。要显式启用或禁用它,请使用performance_schema设置为适当值的变量启动服务器。例如,在服务器my.cnf文件中使用这些行: [mysqld] performance_schema=ON 当服务器启动时,它会看到performance_schema并尝试...

LOST_9的博客 516

使用STM32H7点亮RGB屏幕

希望本文能对你有所帮助!RGB屏幕是一种具有红、绿、蓝三种颜色通道的显示设备,通过控制每个通道的亮度,可以显示出丰富多彩的图像和动画。要使用STM32H7控制RGB屏幕,我们需要连接适当的引脚,并编写适当的代码来控制每个颜色通道的亮度。在主循环中,我们先点亮红色通道,然后延迟一段时间,接着点亮绿色通道,再延迟一段时间,最后点亮蓝色通道,并再次延迟。需要注意的是,示例代码中的延迟循环使用了一个简单的计数器实现,但实际应用中可能需要更精确的延迟方式,例如使用定时器中断或操作系统提供的延迟函数。

QoyOle的博客 923

具身智能:原理、算法与系统 第16章 运动控制基础

实时迭代(Real-Time Iteration, RTI)策略在每个采样时刻执行有限次迭代(通常一次),利用相邻时刻解的连续性,在严格时间限制内获得可行解。比例-积分-微分(Proportional-Integral-Derivative, PID)控制是工业界最广泛应用的控制策略,其原理基于误差的当前值(比例)、累积值(积分)与变化率(微分)的线性组合。力-位置混合控制(Hybrid Force/Position Control)将任务空间分解为力控制子空间与位置控制子空间,分别控制。

VectorShift的博客 143

MySQL中的系统数据库:information_schema、mysql、performance_schema、sys

这些系统数据库都是MySQL服务器的重要组成部分,如果不小心删除了其中的某个表或数据库,可能会导致严重的问题,甚至可能需要重新安装MySQL服务器来恢复功能。如果需要释放磁盘空间或进行其他管理操作,建议查找并删除不再需要的用户数据或日志文件,而不是删除这些系统数据库。这几个数据库(或称为系统架构)都是非常重要的,并且通常不应该被删除。

YHKKun的博客 1301

微信电脑版本不会自动下载图片吗?——没有找到解决方法。——只会默认下载doc等文件,图片不行,需要自己另存为——有什么办法解决吗?

微信电脑版本不会自动下载图片吗?——没有找到解决方法。——只会默认下载doc等文件,图片不行,需要自己另存为——有什么办法解决吗?此外,用户还可以选择将接收到的图片、视频和文件保存到指定的文件夹中。‌用户可以在微信设置中调整这一设置。

qq_15963745的博客 5078

mysql sys schema_【原创】MySQL 5.7 SYS系统SCHEMA

在说明系统数据库之前,先来看下MySQL在数据字典方面的演变历史:MySQL4.1 提供了information_schema 数据字典。从此可以很简单的用SQL语句来检索需要的系统元数据了。MySQL5.5 提供了performance_schema 性能字典。 但是这个字典比较专业,一般人可能也就看看就不了了之了。MySQL5.7 提供了 sys系统数据库。 sys数据库里面包含了一系列的存储...

weixin_39968946的博客 80

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

mysql 5.7 sys schema_【原创】MySQL 5.7 SYS系统SCHEMA

在说明系统数据库之前,先来看下MySQL在数据字典方面的演变历史:MySQL4.1 提供了information_schema 数据字典。从此可以很简单的用SQL语句来检索需要的系统元数据了。MySQL5.5 提供了performance_schema 性能字典。 但是这个字典比较专业,一般人可能也就看看就不了了之了。MySQL5.7 提供了 sys系统数据库。 sys数据库里面包含了一系列的存储...

weixin_32596045的博客 152

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql 5.7 重建系统表_【原创】MySQL 5.7 SYS系统SCHEMA

在说明系统数据库之前,先来看下MySQL在数据字典方面的演变历史:MySQL4.1 提供了information_schema 数据字典。从此可以很简单的用SQL语句来检索需要的系统元数据了。MySQL5.5 提供了performance_schema 性能字典。 但是这个字典比较专业,一般人可能也就看看就不了了之了。MySQL5.7 提供了 sys系统数据库。 sys数据库里面包含了一系列的存储...

weixin_33281940的博客 456

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【原创】MySQL 5.7 SYS系统SCHEMA

在说明系统数据库之前,先来看下MySQL在数据字典方面的演变历史:MySQL4.1 提供了information_schema 数据字典。从此可以很简单的用SQL语句来检索需要的系统元数据了。MySQL5.5 提供了performance_schema 性能字典。 但是这个字典比较专业,一般人可能也就看看就不了了之了。MySQL5.7 提供了 sys系统数据库。 sys数据库里面包含了一系列的存储...

weixin_33866037的博客 117

mysql 5.7 目录结构_MySQL 5.7 物理文件体系结构的简单整理说明

MySQL 5.7 物理文件体系结构的简单整理说明本文出处:http://www.cnblogs.com/wy123/p/7102128.html(保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)本文的数据库版本是MySQL5.7.18,简单介绍一下MySQL数据文件目录的物理结构和作用,从中可以窥见MySQL的整体上的物...

weixin_32327615的博客 439

MySQL数据库 DDL 阻塞问题定位 【转载】

1)执行 show processlist ,如果 DDL 的状态是 Waiting for table metadata lock ,则意味着这个 DDL 被阻塞了。这种方法适用于 MySQL 5.7 和 8.0。注意,MySQL 5.7 中,MDL 相关的 instrument 默认没有打开。Kill DDL 之前的会话'))) p如果 MySQL 5.7 中 MDL 相关的 instrument 没有打开或在 MySQL 5.6 中,可使用该方法。

hongjian006的博客 920

彻底解决Windows文件夹移动合并警告:从注册表原理到安全迁移实践

在Windows系统管理中,用户配置文件与特殊文件夹重定向是常见的系统优化需求。其核心原理基于注册表中的Shell Folders与User Shell Folders键值,它们分别定义了文件夹的实际路径与目标配置。理解这一机制的技术价值在于实现数据安全迁移、释放系统盘空间以及优化文件组织结构。典型的应用场景包括开发者环境配置、多磁盘数据管理以及系统备份部署。本文针对常见的“合并警告”问题,深入解析其触发条件与规避方法,其中涉及reg指定的文件不是注册表脚本等常见错误排查,并提供通过属性界面与注册表修改两套

weixin_30920513的博客 367

mysql5.6 my.ini 优化_通过修改my.ini配置文件来解决MySQL 5.6 内存占用过高的问题

打开后台进程发现mysql占用的内存达到400+M。修改一下my.ini这个配置文件的配置选项是可以限制MySQL5.6内存占用过高这一问题的,具体修改选项如下:performance_schema_max_table_instances=400table_definition_cache=400table_open_cache=256你如果在my.ini这个文件没中找到以上配置选项,则追加到该文...

weixin_30396777的博客 947

mysql 手工sql注入_[原创]WEB安全第四章SQL注入篇04 mysql+php手工注入篇

WEB安全第四章SQL注入篇04 mysql+php手工注入篇1、mysql的注释符号#–空格/*里面的内容都会被注释*/用于注释后后面语句 不再执行例如select * fromartile where id=1#这个部分的语句不再执行2、注入常用查询系统信息函数version()MySQL 版本user()数据库用户名database()数据库名@@datadir数据库路径@@version_...

weixin_32541907的博客 217

mysql版本区别_MySQL各版本的差异

Mysql 4.x集成 innodb引擎,支持事务,支持行锁、支持子查询支持Unicode (UTF-8),允许更广泛地进行国际化。Mysql 5.x支持游标、存储过程、触发器、视图、XA事务Mysql 5.1支持分区和基于行的复制Mysql 5.5默认innodb 引擎,替代myisam表与索引存储在表空间、表大小无限制多核扩展,能够充分利用多核CPU支持半同步Replication支持utf8...

weixin_27038261的博客 831
上一篇: S7-1500R/H冗余系统S1与S2模式详解:连接机制、组态选型与调试避坑指南
下一篇: 人形机器人端侧算力架构演进:异构分层与芯片选型指南
weixin_33991418
博客等级 码龄11年 3857粉丝 1260原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值