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

Windows 10 ARM工控主板CAN总线实时性能测试

        在常规的Windows系统中支持CAN总线应用,需要外接CAN总线适配器,通常为USBCAN模块或PCI接口CAN卡。实时性本身是CAN总线的显著特性之一,但由于Windows并非实时操作系统,应用程序容易受到系统CPU负载影响,导致调度周期不确实,这就限制了CAN总线在Windows系统中的应用。

        英创公司推出的名片尺寸Windows工控主板ESM8400,其核心是基于NXPiMX8MP 4ARM64 MPU,安装Windows 10 IoT企业版操作系统,Windows 10 IoT企业版就是完整版本的Windows 10,而且支持软实时特性。ESM8400自带两路CAN总线接口,结合Windows 10 IoT企业版的软实时特性,可以实现可靠的10ms(甚至更小)循环周期调度,这使得ESM8400可作为软实时IPC直接应用于对控制周期有严格时序要求的控制回路中,以触发状态机的行为,然后通过CAN总线调度较小的硬实时控制单元。

        本文将介绍基于安装Windows 10 IoT企业版的ESM8400 CAN总线实时应用的测试目标、测试方法,以及对测试数据进行统计与分析。对于开发实时应用程序的具体编程细节将在单独的一篇文档中进行说明。

1. 测试目标

        模拟工业自动化现场实际应用,在ESM8400应用程序中生成10ms的固定循环周期,在每个循环周期内调用CAN接口以250kBits/s波特率连续发送6帧数据。最终统计分析两个时间指标:

        1、10ms循环周期在各种软件配置、以及各种CPU负载情况下的实际最大时间是多少。

        2、在各种工况下连续发送6CAN数据的耗时情况,并统计最长耗时。

2.  测试方法

2.1 硬件环境

        ESM8400评估底板直接支持1CAN总线接口,通过PCAN模块(USBCAN)连接到计算机。测试时需要注意短接评估底板上的CAN总线匹配电阻跳线器。

2.2 PCAN-View

        PCAN-View是PCAN模块对应的Windows应用程序,PCAN-View可以记录接收的CAN数据,同时可记录每帧数据的时间戳,时间戳精度为0.1ms。时间戳由PCAN模块自身标记,不会受测试计算机软件系统调度问题所影响。所以利用接收到的CAN数据时间戳,可以对各项时间指标进行精确的统计。

 

2.3 测试程序

        ESM8400上运行的测试程序利用Windows系统的高精度定时器QPC实现10ms的循环定时,每个循环周期内连续发送6CAN数据,测试发送12WCAN数据(2W个循环)后程序退出。下面是测试程序的主要代码,关于ESM8400 CAN接口在Windows中的使用细节,将在另一编文档中进行说明。

    CFlexCAN        can;

    flexcan_frame_t frame;

    volatile        BOOLEAN txComplete = TRUE;

    LARGE_INTEGER   frequency;

    LARGE_INTEGER   end, last;

   

// 设置本进程优先级

    // SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);

// 将本进程设置为仅在CPU3, CPU4上运行

    // SetProcessAffinityMask(GetCurrentProcess(), (1 << 3) | (1 << 2));

// 打开ESM8400 CAN1,波特率设置为250kBit/s

    can.Open(1, 250000);

// 获取QPC的频率

    result = QueryPerformanceFrequency(&frequency);

// 计算10毫秒对应的QPC计数,减去1是为了补偿可能的调度延迟

    LARGE_INTEGER interval = { frequency.QuadPart / 100 - 1 };

    QueryPerformanceCounter(&last);

    end = last;

    while(1){

        // 等待直到达到或超过预定的10毫秒间隔

        do {

            QueryPerformanceCounter(&end);

        } while ((end.QuadPart - last.QuadPart) < interval.QuadPart);

        // 更新上一次循环结束的时间

        last = end;

// 连续发送6CAN数据,每帧的CAN ID16

        for (int i = 1; i < 7; i++) {

            frame.mfs_1.id = i;

            can.Write(&frame);

            while (!can.txComplete) {};

            can.txComplete = FALSE;

            frame.mfp.mfp_w.dataWord1++;

// 此处可进行其它操作,注意代码执行时间不要超过循环定时

// 每个循环发送6帧,发送超过12W(2W个循环)后退出程序

        if (frame.mfp.mfp_w.dataWord1 > 120010)

            break;

    }

3.  进行测试

3.1 测试项目

        将测试程序分别设置为NormalRealtime优先级类,在CPU空闲和CPU负载75%的情况下,测试程序运行于Windows 10标准模式和软实时环境进行了6个项目的对比测试。

测试项目

CPU负载

Windows 10 系统模式

进程优先级类

1

空闲

标准模式

Normal

2

75%

标准模式

Normal

3

75%

标准模式

RealTime

4

空闲

软实时模式,

3个标准CPU + 1个实时CPU

RealTime

5

75%

软实时模式,

3个标准CPU + 1个实时CPU

RealTime

6

75%

软实时模式,

2个标准CPU + 2个实时CPU

RealTime

对于测试项目的进一步说明:

        1、ESM8400的处理器i.MX8MP4CPU核心,在Windows标准模式下,测试程序由系统自动调度在某个CPU上运行。在3+1软实时模式下,应用程序通过SetProcessAffinityMask函数设置当前进程在CPU4(实时核心)上运行,在2+2软实时模式下,通过SetProcessAffinityMask函数设置当前进程在CPU3CPU4上运行。

        2、测试程序进程优先级类由SetPriorityClass系统API配置为NORMAL_PRIORITY_CLASSREALTIME_PRIORITY_CLASS

        3、测试时利用CPU Stress程序为系统增加75%的高优先级 (HIGH_PRIORITY_CLASS)负载。

        4、在启用的Windows 10 软实时的情况下,可以看到在CPU Stress中增加的75%负载,Windows系统分别施加到了CPU1~CPU3上,不占用CPU4资源,这就是Windows IoT企业版的软实时特性之一——CPU隔离技术的体现。(下图中为1个实时核心 + 3个标准核心)

3.2 数据统计与分析

        每个测试项目执行2W次循序,得到12W帧、带精度为0.1ms时间戳的CAN数据,将6个测试超过72W帧数据导入Excel

 

        如前面的测试程序所示,每个循环发送的第1CAN数据的ID1,最后第6CAN ID6,这里利用每一个ID1CAN帧时间戳、统计10ms循环的实际最大时间,利用ID16CAN帧时间戳计算连续发送6CAN数据的实际耗时。统计结果如下:

1. 各工况下CAN数据发送的耗时情况

        CAN总线在250kBit/s波特率下,理论上每秒最多能传输约2300CAN标准帧,传输6个标准帧的最短时间理论上需要约2.6ms。分别统计发送6帧数据耗时在3ms内、3ms~6ms之间、6ms~9ms之间以及耗时超过9ms的次数。

  

从上面的统计结果可以看到:

  • Win10标准模式下,如果不对应用进程优先级作任何设置,即使CPU空闲,也有一次发送时间超过9ms,当CPU负载增加时,CAN的发送时间变得很不确实,接近1000次发送时间超过9ms
  • Win10标准模式下,无论CPU负载如何,发送耗时都小于等于6ms。唯一在CPU负载75%时,有一次耗时处于6ms~9ms之间,根据原始数据查得这次耗时为6.1ms
  • 在分配2个实时核心的情况下,发送实时性要好于1个实时核心。这是因为测试程序实际上有两个线程:一个主循环线程;一个完成端口线程,用于为发送结果提供异步通知。
  • Windows标准模式下,将应用程序设置为实时进程,得到了最好的实时性能,这将在稍后的测试总结中进一步说明。

2. 最大时间统计

        通过统计发送6帧数据的最长耗时,以及统计10ms周期的实际最大时间更能直观的反应系统在各个工况下的性能表现,和可预测性。

4.  测试总结

        在Windows标准模式下,如果不对应用进程优先级做特别设置,程序的调度响应时间将很不确定,在本次测试中,原本10ms的循环定时周期实际上最长测得为160ms

        在Windows标准模式下,提高进程优先级可显著提高响应的实时性,但需要注意的是在标准模式下, Windows线程可以被调度到任意CPU上,Windows的音频驱动、SysMainDPS等后台服务可能会在某一时间对关键应用程序造成影响,这会增加系统的不可预测性。

        在ESM8400上启用Windows的软实时特性,对多核CPU进行隔离应用,将关键应用进程固定在实时CPU上运行,能得到可预测的实时性能,具备在对控制周期有严格时序要求的使用场景中应用的能力。

相关文章:

Windows 10 ARM工控主板CAN总线实时性能测试

在常规的Windows系统中支持CAN总线应用&#xff0c;需要外接CAN总线适配器&#xff0c;通常为USB转CAN模块或PCI接口CAN卡。实时性本身是CAN总线的显著特性之一&#xff0c;但由于Windows并非实时操作系统&#xff0c;应用程序容易受到系统CPU负载影响&#xff0c;导致调度周期…...

深入理解无锁队列与C++原子操作

文章目录 深入理解无锁队列与C原子操作引言原子操作基础什么是原子操作&#xff1f;内存顺序&#xff08;Memory Order&#xff09; 无锁队列实现环形缓冲区队列&#xff08;单生产者/单消费者&#xff09;链表式无锁队列&#xff08;多生产者/多消费者&#xff09; 关键问题与…...

OpenGL: QOpenGLShaderProgram

一、QOpenGLShaderProgram 编译过程的封装 1、bool addShaderFromSourceCode(QGLShader::ShaderType type, const char * source); 2、bool addShaderFromSourceFile(QGLShader::ShaderType type, const QString & fileName); 3、virtual bool link(); 4、bool bind(); 5、…...

【网络编程】之数据链路层

【网络编程】之数据链路层 数据链路层基本介绍基本功能常见协议 以太网什么是以太网以太网协议帧格式数据链路层的以太网帧报文如何封装/解封装以及分用以太网通信原理传统的以太网与集线器现代以太网与交换机碰撞域的概念 Mac地址基本概念为什么要使用Mac地址而不是使用IP地址…...

HTTP 和 TCP/IP-傻傻分不清

HTTP 和 TCP/IP 是计算机网络中不同层次的协议&#xff0c;它们的核心区别在于功能和所属的网络层次。以下是详细对比&#xff1a; 1. 所属网络层次 TCP/IP 定位&#xff1a;TCP/IP 是一个协议族&#xff08;包含多个协议&#xff09;&#xff0c;涵盖网络通信的传输层和网络层…...

【SQL】SQL约束

&#x1f384;约束 &#x1f4e2;作用:是用于限制存储再表中的数据。可以再创建表/修改表时添加约束。 &#x1f4e2;目的:保证数据库中数据的正确、有效性和完整性。 &#x1f4e2;对于一个字段可以同时添加多个约束。 &#x1f384;常用约束: 约束分类 约束 描述关键字非…...

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑧】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase08 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月17日 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-008测试用例 用例ID测试场景验证要点参考条款预期结果TC…...

解决vue-awesome-swiper 4.x + swiper 5.x 分页pagination配置不生效问题

这次给的需求需要实现几个轮播图&#xff0c;我打算用swiper来做。刚开始我参照同事之前实现的swiper&#xff0c;复制到我的新页面中&#xff0c;是可用的。但是这次的需求需要有底下的分页pagination&#xff0c;而且因为版本比较老&#xff0c;比较难找到配置项。这里说一下…...

Spring Boot 开发入门

文章来源&#xff1a;开发您的第一个 Spring Boot 应用程序 (Developing Your First Spring Boot Application) _ Spring Boot3.4.0中文文档(官方文档中文翻译)|Spring 教程 —— CADN开发者文档中心 本节介绍如何开发一个小型的 “Hello World&#xff01;” Web 应用程序&…...

MATLAB算法实战应用案例精讲-【数模应用】空间插值(附MATLAB、R语言和python代码实现)

目录 前言 算法原理 什么是插值? 为什么要插值? 常见插值方法 插值方法选择 GIS中常用的空间分析方法 一、空间插值 二、缓冲区分析 三、空间统计 四、领域分析 五、网络分析 六、多标准决策 插值分析 插值应用示例 空间插值的类型 不同工具箱中的空间插值工…...

碰一碰发视频@技术原理与实现开发步骤

碰一碰发视频系统&#xff1a;技术原理与实现方案解析 引言 近年来&#xff0c;随着移动支付和近场通信技术&#xff08;NFC&#xff09;的普及&#xff0c;“碰一碰”功能逐渐成为商家与用户交互的新入口。通过“碰一碰加盟”模式&#xff0c;企业可以快速赋能线下商户&…...

14.学成在线开发小结

1.统计两张表的数据&#xff0c;表1和表2是一对多的关系&#xff0c;如果既要统计表1又要统计表2的数据&#xff0c;要分开进行统计&#xff0c;否则表1一条数据在表2中可能有多条数据对应&#xff0c;导致表1的数据被多次统计。 2.nacos配置文件的数据读取不到可能原因有&…...

图像处理之CSC

CSC 是 Color Space Conversion&#xff08;色彩空间转换&#xff09;的缩写&#xff0c;它涉及图像处理中的亮度、饱和度、对比度和色度等参数的调整。这些参数是图像处理中的核心概念&#xff0c;通常用于描述和操作图像的颜色信息。 以下是亮度、饱和度、对比度和色度与 CS…...

数据结构:顺序表(Sequence List)及其实现

什么是顺序表&#xff1f; 顺序表是一种最简单的数据结构&#xff0c;它就像一排连续的小房子&#xff0c;每个房子里都住着一个数据元素。这些房子是按顺序排列的&#xff0c;每个房子都有一个门牌号&#xff08;下标&#xff09;&#xff0c;我们可以通过门牌号快速找到对应…...

微信云开发小程序音频播放踩坑记录 - 从熄屏播放到iOS静音

在开发小程序冥想功能时,我们遇到了几个棘手的问题:用户反馈手机熄屏后音频停止、iOS设备播放没声音、冥想音频没有访问计数和CDN缓存优化等。本文将分享这些问题的解决过程和实践经验。 微信小程序简称&#xff1a;Moodo 微信小程序全程&#xff1a;AIMoodo心情日记系统 简…...

Python基础

https://www.w3schools.com/https://docs.python.org/3/ Python 介绍 Python是跨平台的&#xff0c;它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序&#xff0c;放到Linux上也是能够运行的。 要开始学习Python编程&#xff0c;首先就得把Python安装…...

基于Go语言 XTA AI聊天界面实现

项目开源地址: XTA-AI-SDK 人工智能技术的迅速发展&#xff0c;AI聊天应用变得越来越流行。本文将介绍如何使用Go语言和LCL库&#xff08; Lazarus Component Library&#xff09;创建一个功能丰富的AI聊天界面。项目主要包含以下模块&#xff1a; 项目背景 本项目旨在为开发…...

线上项目报错OOM常见原因、排查方式、解决方案

概述 OutOfMemoryError&#xff08;OOM&#xff09;是 Java 应用程序中常见的问题&#xff0c;通常是由于应用程序占用的内存超过了 JVM 分配的最大内存限制。在 Spring Boot 项目中&#xff0c;OOM 问题可能由多种原因引起。 1. OOM 的常见原因 OOM 通常由以下几种情况引起&…...

AI大模型零基础学习(6):多模态大模型实战——让AI看懂世界

从“文字交互”到“全感官认知”的维度突破 一、多模态大模型&#xff1a;AI的“五感觉醒” 1.1 基础概念重塑 单模态局限&#xff1a;传统大模型仅处理文本&#xff08;如ChatGPT&#xff09; 多模态进化&#xff1a; 输入&#xff1a;支持文本、图像、音频、视频、3D模型 …...

基于Spring Boot+Vue的宠物服务管理系统(源码+文档)

项目简介 宠物服务管理系统实现了以下功能&#xff1a; 基于Spring BootVue的宠物服务管理系统的主要使用者分为用户管理模块&#xff0c;由于系统运行在互联网络中&#xff0c;一些游客或者病毒恶意进行注册&#xff0c;产生大量的垃圾用户信息&#xff0c;管理员可以对这些…...

简要分析LeetCode树经典题目(Java)

目录 开场白 实战环节 准备工作 遍历问题 LeetCode144. 二叉树的前序遍历 方法一 方法二 LeetCode94. 二叉树的中序遍历 LeetCode145. 二叉树的后序遍历 方法一 方法二 LeetCode102. 二叉树的层序遍历 LeetCode103. 二叉树的锯齿形层序遍历 LeetCode107. 二叉树的…...

vue3开发打年兽功能

1.效果 WeChat_20250217192041 2.代码 2.1 index.vue <template><div class"pages"><TopNavigationYleftTitle"打年兽"ruleIconColor"#fff"backgroundImage""svgIpcn"backIcon4"gradientBackgroundColor&q…...

动手学Agent——Day2

文章目录 一、用 Llama-index 创建 Agent1. 测试模型2. 自定义一个接口类3. 使用 ReActAgent & FunctionTool 构建 Agent 二、数据库对话 Agent1. SQLite 数据库1.1 创建数据库 & 连接1.2 创建、插入、查询、更新、删除数据1.3 关闭连接建立数据库 2. ollama3. 配置对话…...

如何在 GitHub 中创建一个空目录 ?

GitHub 是开发人员必不可少的工具&#xff0c;它提供了存储、共享和协作代码的平台。一个常见的问题是如何在 GitHub 存储库中创建一个空目录或文件夹。GitHub 不支持直接创建空目录。但是&#xff0c;有一种解决方法是使用一个虚拟文件&#xff0c;通常是一个 .gitkeep 文件。…...

3. 导入官方dashboard

官方dashboard&#xff1a;https://grafana.com/grafana/dashboards 1. 点击仪表板 - 新建 - 导入 注&#xff1a;有网络的情况想可以使用ID&#xff0c;无网络情况下使用仪表板josn文件 2. 在官方dashboard网页上选择符合你现在数据源的dashboard - 点击进入 3. 下拉网页选…...

前端知识速记--HTML篇:HTML5的新特性

前端知识速记–HTML篇&#xff1a;HTML5的新特性 一、语义化标签 HTML5引入了许多新的语义化标签&#xff0c;如 <header>、<footer>、<article>、<section> 等。这些标签不仅提高了网页的可读性和结构性&#xff0c;还有助于SEO&#xff08;搜索引擎…...

【数据分享】1929-2024年全球站点的逐年降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2024年全球气象站…...

鸿蒙面试题

1.0penHarmony的系统架构是怎样的? 2.电话服务的框架? 3.OpenHarmony与HarmonyOS有啥区别?...

pdf-extract-kit paddle paddleocr pdf2markdown.py(效果不佳)

GitHub - opendatalab/PDF-Extract-Kit: A Comprehensive Toolkit for High-Quality PDF Content Extraction https://github.com/opendatalab/PDF-Extract-Kit pdf2markdown.py 运行遇到的问题&#xff1a; 错误&#xff1a; -------------------------------------- C Tra…...

基于STM32、HAL库、RX8025T(I2C接口)驱动程序设计

一、简介: RX8025T 是一款低功耗、高精度的实时时钟芯片,具有以下特性: I2C 接口通信 内置 32.768 kHz 晶振 提供秒、分、时、日、月、年等时间信息 支持温度补偿,提高时间精度 低功耗设计,适合电池供电的应用 二、I2C初始化: #include "stm32l4xx_hal.h&…...

基于Ubuntu+vLLM+NVIDIA T4高效部署DeepSeek大模型实战指南

一、 前言&#xff1a;拥抱vLLM与T4显卡的强强联合 在探索人工智能的道路上&#xff0c;如何高效地部署和运行大型语言模型&#xff08;LLMs&#xff09;一直是一个核心挑战。尤其是当我们面对资源有限的环境时&#xff0c;这个问题变得更加突出。原始的DeepSeek-R1-32B模型虽…...

【Go语言快速上手】第二部分:Go语言进阶之并发编程

文章目录 一、并发编程1. goroutine&#xff1a;创建和调度 goroutine2. channel&#xff1a;无缓冲 channel、有缓冲 channel、select 语句2.1 无缓冲 channel2.2 有缓冲 channel2.3 select 语句 3. sync 包&#xff1a;Mutex、RWMutex、WaitGroup 等同步原语3.1 Mutex&#x…...

《机器学习数学基础》补充资料:四元数、点积和叉积

《机器学习数学基础》第1章1.4节介绍了内积、点积的有关概念&#xff0c;特别辨析了内积空间、欧几里得空间&#xff1b;第4章4.1.1节介绍了叉积的有关概念&#xff1b;4.1.2节介绍了张量积&#xff08;也称外积&#xff09;的概念。 以上这些内容&#xff0c;在不同资料中&…...

蓝桥杯篇---IAP15F2K61S2矩阵键盘

文章目录 前言简介矩阵键盘的工作原理1.行扫描2.检测列状态3.按键识别 硬件连接1.行线2.列线 矩阵键盘使用步骤1.初始化IO口2.扫描键盘3.消抖处理4.按键识别 示例代码&#xff1a;4x4矩阵键盘扫描示例代码&#xff1a;优化后的矩阵键盘扫描注意事项1.消抖处理2.扫描频率3.IO口配…...

通过小型语言模型尽可能简单地解释 Transformer

介绍 在过去的几年里&#xff0c;我阅读了无数关于 Transformer 网络的文章&#xff0c;观看了许多视频。其中大部分都非常好&#xff0c;但我很难理解 Transformer 架构&#xff0c;而其背后的主要直觉&#xff08;上下文敏感嵌入&#xff09;则更容易掌握。在做演讲时&#…...

GcExcel

GcExcel 简述:GcExcel Java 是一款基于 Java 平台,支持批量创建、编辑、打印、导入/导出Excel文件的服务端表格组件,能够高性能处理和高度兼容 Excel。功能特性(图1)文档查询(图2)...

封装红黑树实现map和set

" 喜欢了你十年&#xff0c;却用整个四月&#xff0c;编织了一个不爱你的谎言。 " 目录 1 源码及其框架分析 2 模拟实现map和set 2.1 实现出复用红黑树的框架 2.2 支持iterator迭代器的实现 2.2.1 代码实现和--这两个运算符 2.3 map支持[ ] Hello&#xff0c;大家…...

Redis进阶使用

在日常工作中&#xff0c;使用Redis有什么需要注意的&#xff1f; 设置合适的过期时间。尽量避免大key问题&#xff0c;避免用字符串存储过大的数据&#xff1b;避免集合的数据量太大&#xff0c;要定期清除。 常用的数据结构有哪些&#xff1f;用在什么地方&#xff1f; 按…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第四节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;Read DTC Information0x19服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年2月13日 关键词&#xff1a;UDS诊断协议、0x19服务、DTC信息读取、ISO 14229-1:2023、ECU测试 一、服务功能…...

使用Node.js进行串口通信

目录 一、 安装 serialport 库二.、实现方法1.打开串口并配置参数2. 向串口传递信息3. 接收串口信息4. 处理错误5. 关闭串口6. 使用解析器7. 获取串口列表 三、 完整示例代码 一、 安装 serialport 库 首先&#xff0c;需要安装 serialport 库。可以通过 npm 安装&#xff1a;…...

vue3+elementplus新建项目

更新node.js和npm node.js官网更新指南 可以根据自己的操作系统进行选择 我的电脑操作系统是mac os所以我的步骤如下 # Download and install nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash# in lieu of restarting the shell \. &…...

【网络安全 | 漏洞挖掘】跨子域账户合并导致的账户劫持与删除

未经许可,不得转载。 文章目录 概述正文漏洞成因概述 在对目标系统进行安全测试时,发现其运行着两个独立的域名——一个用于司机用户,一个用于开发者/企业用户。表面上看,这两个域名各自独立管理账户,但测试表明它们在处理电子邮件变更时存在严重的逻辑漏洞。该漏洞允许攻…...

VLSM基础知识

VLSM&#xff08;Variable Length Subnet Mask&#xff0c;变长子网掩码&#xff09;是一种更灵活的子网划分技术&#xff0c;允许在同一网络中使用不同长度的子网掩码&#xff0c;以满足不同子网对主机数量的需求&#xff0c;最大化IP地址利用率。 一、基础概念 传统子网划分…...

小小小病毒(3)(~_~|)

一分耕耘一分收获 声明&#xff1a; 仅供损害电脑&#xff0c;不得用于非法。损坏电脑&#xff0c;作者一律不负责。此作为作者原创&#xff0c;转载请经过同意。 欢迎来到小小小病毒&#xff08;3&#xff09; 感谢大家的支持 还是那句话&#xff1a;上代码&#xff01; …...

WebRTC与EasyRTC:开启智能硬件音视频通讯的全新旅程

在当今数字化时代&#xff0c;音视频通讯技术正以前所未有的速度革新着我们的生活与工作方式。WebRTC与EasyRTC作为这一领域的佼佼者&#xff0c;正携手为智能硬件的音视频通讯注入强大动力&#xff0c;开启全新的篇章。 一、WebRTC与智能硬件融合的崭新趋势 WebRTC技术&…...

Lua 数据库访问

Lua 数据库访问 引言 Lua 是一种轻量级的编程语言,因其简洁性和高效性,常被用于游戏开发、嵌入系统和应用程序开发。在许多情况下,数据库访问是应用程序的核心功能之一。本文将深入探讨在 Lua 中如何进行数据库访问,包括连接数据库、执行查询、处理结果以及异常处理等。 …...

rtsp rtmp 跟 http 区别

SDP 一SDP介绍 1. SDP的核心功能 会话描述&#xff1a;定义会话的名称、创建者、时间范围、连接地址等全局信息。媒体协商&#xff1a;明确媒体流的类型&#xff08;如音频、视频&#xff09;、传输协议&#xff08;如RTP/UDP&#xff09;、编码格式&#xff08;如H.264、Op…...

蓝桥杯篇---IAP15F2K61S2串口

文章目录 前言简介串口通信的基本参数1.波特率2.数据位3.停止位4.校验位 串口相关寄存器1.SCON2.SBUF3.PCON4.TMOD5.TH1/TL1 串口使用步骤1.配置波特率2.配置串口模式3.使能串口中断4.发送数据5.接收数据6.处理中断 示例代码&#xff1a;串口发送与接收示例代码&#xff1a;串口…...

Linux 远程文件复制传输-----scp/rsync/sftp

scp&#xff08;Secure Copy Protocol&#xff09;是基于 SSH 的安全文件传输工具&#xff0c;可用于在本地和远程计算机之间复制文件或目录。 1. scp&#xff08;基于 SSH 复制文件&#xff09; a. 复制文件到远程 从本地复制到远程 scp localfile.txt userremote_host:/remo…...

企业文件安全:零信任架构下的文件访问控制

在企业数字化转型的进程中&#xff0c;传统的文件访问控制模型已难以满足日益复杂的网络安全需求。零信任架构作为一种新兴的安全理念&#xff0c;为企业的文件安全访问提供了全新的解决方案。 一、传统文件访问控制的局限性 传统的文件访问控制主要基于网络边界&#xff0c;…...