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

如何在LVGL之外的线程更新UI内容

前言

  作为一个刚开始学习LVGL和嵌入式开发的新手,学会绘制一个界面之后,遇到了一个问题:在LVGL线程之外的线程,更新UI内容时,会导致程序崩溃。

1、问题分析

首先,需要了解LVGL的基本工作原理。LVGL(Light and Versatile Graphics Library)是一个用于嵌入式系统的开源图形库,主要用于创建用户界面。它通常运行在单线程环境中,所有的UI操作(如创建控件、更新显示等)都在主线程中完成。这是因为LVGL本身并不是线程安全的,直接在其他线程中操作UI可能会导致竞态条件或数据不一致的问题。

接下来,需要理解为什么要在其他线程更新UI。在实际应用中,可能会有一些耗时操作,比如网络请求、数据处理或硬件交互,这些操作如果放在主线程中执行,会导致界面卡顿,影响用户体验。因此,将这些操作放在后台线程中执行,完成后再更新UI,是一种常见的做法。

现在的问题是,如何在非LVGL线程(即后台线程)中安全地更新UI。我的初步思路是,需要某种机制将后台线程中的数据或状态传递到主线程,由主线程负责实际的UI更新。这通常涉及到线程间的通信或同步机制,比如消息队列、信号量、互斥锁等。

需要了解LVGL的主循环机制。LVGL通常在一个主循环中处理任务,例如通过调用`lv_timer_handler()`来执行定时器任务和UI刷新。这个主循环通常运行在主线程中。因此,任何对UI的修改都需要在这个主线程中进行,以确保线程安全。

2、解决思路

那么,何将后台线程的更新请求传递到主线程呢?可能的解决方案包括:

2.1.使用消息队列

后台线程将更新UI的请求放入一个消息队列中,主线程在每次循环中检查队列并处理这些请求。

2.2 使用回调函数

在后台线程中完成处理后,通过某种方式触发主线程中的回调函数来更新UI。

2.3 使用互斥锁(Mutex)

在访问共享的UI资源时,使用互斥锁来确保同一时间只有一个线程操作UI。

3、步骤分析

接下来,需要考虑这些方法的可行性和具体实现细节。

3.1 使用消息队列的步骤

1. 创建一个线程安全的消息队列,用于存储UI更新请求。

2. 后台线程在需要更新UI时,将请求(例如,更新某个标签的文本)放入队列。

3. 主线程在每次执行`lv_timer_handler()`之前或之后,从队列中取出请求并执行相应的UI操作。

**注意事项**:

- 需要确保消息队列的线程安全性,避免数据竞争。

- 消息的结构需要包含足够的信息来描述如何更新UI(例如,控件指针、新值等)。

- 需要考虑内存管理,避免在传递指针时出现悬垂指针或内存泄漏。

3.2 使用互斥锁的步骤

1. 在访问LVGL的API时,使用互斥锁来保护关键区域。

2. 后台线程在更新UI前获取锁,执行操作后释放锁。

3. 主线程同样在操作UI时获取锁,确保互斥访问

**注意事项**:

- LVGL本身可能并不是线程安全的,即使使用互斥锁,某些内部状态可能仍然存在竞态条件。

- 频繁的锁操作可能会影响性能,尤其是在高频率更新时。

- 需要仔细设计锁的范围,避免死锁。

3.3 使用回调函数的步骤

1. 主线程注册一个回调函数,用于处理特定的UI更新。

2. 后台线程在需要更新UI时,触发这个回调函数。

3. 回调函数在主线程的上下文中执行,确保安全地操作UI。

**注意事项**:

- 需要确保回调函数在主线程中被正确调用,可能需要借助操作系统的事件或消息机制。

- 需要处理回调函数的参数传递和生命周期管理。

4、可行性分析

现在,我需要进一步验证这些方法的可行性,并考虑实际实现中的细节问题。

例如,使用消息队列的方法,在FreeRTOS中,可以使用`xQueueSend()`和`xQueueReceive()`函数来实现线程间的消息传递。消息队列中的每个消息可以包含控件指针、操作类型(如设置文本、改变颜色等)以及相应的参数。主线程在每次循环中处理队列中的所有消息,执行对应的UI操作。

另一个例子,使用互斥锁的方法,在FreeRTOS中,可以使用`xSemaphoreCreateMutex()`创建一个互斥锁。在后台线程中,操作UI前先获取锁,操作完成后释放锁。主线程在调用LVGL的API时也需要获取相同的锁。但需要注意,如果LVGL的主循环本身涉及到多个步骤,可能需要在整个处理过程中保持锁,这可能影响其他线程的响应性。

此外,我还需要考虑LVGL的官方建议最佳实践。根据LVGL的文档,官方推荐在主线程中处理所有的UI操作,避免在多线程中直接调用LVGL的API。因此,使用消息队列将UI更新请求传递到主线程,可能是更符合LVGL设计理念的做法

5、解决方案

5.1 创建线程安全的消息队列

  • 使用RTOS提供的消息队列(如FreeRTOS的QueueHandle_t

  • 定义消息结构体,包含UI更新所需的信息

  • typedef struct {lv_obj_t* target;    // 目标控件void* data;          // 数据指针void (*update_func)(lv_obj_t*, void*); // 更新函数
    } UI_Update_Message;QueueHandle_t ui_update_queue = xQueueCreate(10, sizeof(UI_Update_Message));

    5.2 实现消息处理函数

  • 在主线程的LVGL循环中处理消息
  • void process_ui_messages(void) {UI_Update_Message msg;while(xQueueReceive(ui_update_queue, &msg, 0) == pdTRUE) {if(msg.target && msg.update_func) {msg.update_func(msg.target, msg.data);}// 释放动态分配的数据(如果需要则不释放)if(msg.data) {free(msg.data);}}
    }// 在LVGL主循环中调用
    while(1) {lv_timer_handler();process_ui_messages();vTaskDelay(pdMS_TO_TICKS(5));
    }

    5.3 后台线程发送更新请求

  • // 通用更新函数模板
    void safe_ui_update(lv_obj_t* target, void (*func)(lv_obj_t*, void*),void* data, size_t data_size) {UI_Update_Message msg = {.target = target,.update_func = func,.data = NULL};if(data && data_size > 0) {msg.data = pvPortMalloc(data_size);if(msg.data) memcpy(msg.data, data, data_size);}xQueueSend(ui_update_queue, &msg, portMAX_DELAY);
    }// 具体实现示例:更新标签文本
    void update_label_text(lv_obj_t* label, const char* text) {safe_ui_update(label, (void (*)(lv_obj_t*, void*))lv_label_set_text, (void*)text, strlen(text)+1);
    }// 后台线程中调用
    void sensor_thread(void* arg) {while(1) {float temp = read_temperature();char buffer[20];snprintf(buffer, sizeof(buffer), "Temp: %.1f℃", temp);update_label_text(ui.temp_label, buffer);vTaskDelay(pdMS_TO_TICKS(1000));}
    }

    5.4 高级功能扩展 (待开发)

    • 优先级消息处理

    • 批量更新优化

    • 异步回调支持

    • 内存管理

    • 性能优化

      • 批量处理UI更新请求

      • 使用双缓冲技术

      • 限制更新频率(如最大60FPS)

    • 错误处理

      • 添加队列满时的处理策略

      • 实现超时机制

      • 添加内存分配失败的回退方案

        

6、总结

这种设计模式的优势:

  1. 完全解耦业务逻辑和UI渲染

  2. 确保LVGL在单线程环境下运行

实际项目中需要根据具体需求调整:

  • 对于高实时性系统:缩短队列处理周期

  • 对于内存受限系统:使用静态内存分配

  • 对于复杂UI:添加批量更新优化

  • 对于安全关键系统:添加校验和验证机制

总的来说,能够导致LVGL卡死现象,主要原因就是在LVGL的线程外更新了LVGL对象导致的,内容如有不对之处,欢迎各位指点修改!

ps:参考并复制粘贴了DEEPSEEK的回答。

相关文章:

如何在LVGL之外的线程更新UI内容

前言 作为一个刚开始学习LVGL和嵌入式开发的新手,学会绘制一个界面之后,遇到了一个问题:在LVGL线程之外的线程,更新UI内容时,会导致程序崩溃。 1、问题分析 首先,需要了解LVGL的基本工作原理。LVGL&#…...

实景VR展厅制作流程与众趣科技实景VR展厅应用

实景VR展厅制作是一种利用虚拟现实技术将现实世界中的展览空间数字化并在线上重现的技术。 这种技术通过三维重建和扫描等手段,将线下展馆的场景、展品和信息以三维形式搬到云端数字空间,从而实现更加直观、立体的展示效果。在制作过程中,首…...

Regmap子系统之六轴传感器驱动-编写icm20607.c驱动

(一)在驱动中要操作很多芯片相关的寄存器,所以需要先新建一个icm20607.h的头文件,用来定义相关寄存器值。 #ifndef ICM20607_H #define ICM20607_H /*************************************************************** 文件名 : i…...

计算机网络-HTTP与HTTPS

文章目录 计算机网络网络模型网络OSITCP/IP 应用层常用协议HTTP报文HTTP状态码HTTP请求类型HTTP握手过程HTTP连接HTTP断点续传HTTPSHTTPS握手过程 计算机网络 网络模型 为了解决多种设备能够通过网络相互通信,解决网络互联兼容性问题。 网络模型是计算机网络中用于…...

Text2SQL在Spark NLP中的实现与应用:将自然语言问题转换为SQL查询的技术解析

概述 SQL 仍然是当前行业中最受欢迎的技能之一 免责声明:Spark NLP 中的 Text2SQL 注释器在 v3.x(2021 年 3 月)中已被弃用,不再使用。如果您想测试该模块,请使用 Spark NLP for Healthcare 的早期版本。 自新千年伊…...

Ubuntu20.04下使用dpkg方式安装WPS后,将WPS改为中文界面方法

Ubuntu20.04下使用dpkg方式安装WPS后,将WPS改为中文界面方法 说明方法 说明 Ubuntu20.04下使用dpkg方式安装WPS后,打开WPS后,发现界面是英文的,如有需要可以按照下面的方法将其改为中文界面。 方法 cd /opt/kingsoft/wps-offic…...

OpenCV CUDA 模块中的矩阵算术运算-----在频域(复数频谱)中执行逐元素乘法并缩放的函数mulAndScaleSpectrums()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 mulAndScaleSpectrums()是OpenCV CUDA模块中用于在频域(复数频谱)中执行逐元素乘法并缩放 的函数。 这个函数主要用于在…...

批量剪辑 + 矩阵分发 + 数字人分身源码搭建全技术解析,支持OEM

在互联网内容生态蓬勃发展的当下,企业与创作者对内容生产与传播效率的要求日益增长。批量剪辑、矩阵分发和数字人分身技术的融合,成为提升内容创作与运营效能的关键方案。从源码层面实现三者的搭建与整合,需要深入理解各功能技术原理&#xf…...

Spring Boot 与 RabbitMQ 的深度集成实践(三)

高级特性实现 消息持久化 在实际的生产环境中,消息的可靠性是至关重要的。消息持久化是确保 RabbitMQ 在发生故障或重启后,消息不会丢失的关键机制。它涉及到消息、队列和交换机的持久化配置。 首先,配置队列持久化。在创建队列时&#xf…...

部署java项目

1.编写shell脚本部署服务 restart.sh #!/bin/bash # # start the user program # echo "-------------------- start jk service --------------------" LOG_DIR"/home/joy/usr/app/ers-log" LOG_FILE"$LOG_DIR/log_$(date "%Y%m%d").txt&…...

中国城市间交通驾车距离矩阵(2024)

中国城市间交通驾车距离矩阵(2024) 1852 数据简介 中国城市中心的交通驾车距离,该数据为通过审图号GS(2024)0650的中国城市地图得其城市中心距离,再通过高德地图api计算得出其交通驾车最短距离矩阵,单位为KM,方便大家研究使用。…...

物联网数据湖架构

物联网海量数据湖分析架构(推荐实践) ┌──────────────┐ │ IoT设备端 │ └──────┬───────┘│(MQTT/HTTP)▼ ┌──────────────┐ │ EMQX等 │ 可选(也可…...

Python将Excel单元格某一范围生成—截图(进阶版—带样式+批量+多级表头)

目录 专栏导读1、库的介绍2、库的安装3、核心代码4、通用版——带样式5、进阶版(可筛选+自动截图)多级表头版总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该…...

使用Python将 Excel 中的图表、形状和其他元素导出为图片

目录 为什么将 Excel 中的图表、形状和其他元素导出为图片? 工具与设置 Python 将 Excel 图表导出为图片 将图表导出为图片 将图表工作表导出为图片 Python 将 Excel 中的形状和其他元素导出为图片 微软 Excel 是一个功能强大的数据分析和可视化工具&#xff…...

从编程助手到AI工程师:Trae插件Builder模式实战Excel合并工具开发

Trae插件下载链接:https://www.trae.com.cn/plugin 引言:AI编程工具的新纪元 在软件开发领域,AI辅助编程正在经历一场革命性的变革。Trae插件(原MarsCode编程助手)最新推出的Builder模式,标志着AI编程工具…...

AI大模型从0到1记录学习numpy pandas day25

第 3 章 Pandas 3.1 什么是Pandas Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)…...

【云实验】Excel文件转存到RDS数据库

实验名称:Excel文件转存到RDS数据库 说明:把Excel的数据通过数据管理服务DMS(Data Management Service)导入到RDS MySQL数据库中。 流程:创建一个RDS for MySQL的实例,再创建数据库和账号,通过D…...

用Python实现数据库数据自动化导出PDF报告:从MySQL到个性化文档的全流程实践

本文将介绍如何使用Python构建一个自动化工具,实现从MySQL数据库提取员工数据,并为每位员工生成包含定制化表格的PDF报告。通过该方案,可显著提升数据导出效率,避免手动操作误差,同时支持灵活的格式定制。 需求&#…...

深入理解 ZAB:ZooKeeper 原子广播协议的工作原理

目录 ZAB 协议:ZooKeeper 如何做到高可用和强一致?🔒ZAB 协议的核心目标 🎯ZAB 协议的关键概念 💡ZAB 协议的运行阶段 🎬阶段一:Leader 选举 (Leader Election) 🗳️阶段二&#xff…...

Javascript本地存储的方式有哪些?区别及应用场景?(含Deep Seek讲解)

JavaScript本地存储方式的区别与适用场景 1. Cookie 特点: Cookie是一种较早的本地存储技术,主要通过HTTP协议在客户端和服务器之间传递数据。它的大小通常被限制为4KB以内,并且每次HTTP请求都会携带Cookie信息。缺点: 数据量有限制(最多4K…...

二元Logistic回归

二元Logistic回归 在机器学习领域,二元Logistic回归是一种非常经典的分类模型,广泛用于解决具有两类标签的分类问题。Logistic回归通过逻辑函数(Sigmoid函数)将预测结果映射到概率值,并进行分类。 一、Logistic回归 …...

Android framework 问题记录

一、休眠唤醒,很快熄屏 1.1 问题描述 机器休眠唤醒后,没有按照约定的熄屏timeout 进行熄屏,很快就熄屏(约2s~3s左右) 1.2 原因分析: 抓取相关log,打印休眠背光 相关调用栈 //具体打印调用栈…...

企业网站架构部署与优化 --web技术与nginx网站环境部署

一、Web 基础 本节将介绍Web 基础知识,包括域名的概念、DNS 原理、静态网页和动态网页的 相关知识。 1、域名和DNS 1.1、域名的概念 网络是基于TCP/IP 协议进行通信和连接的,每一台主机都有一个唯一的标识(固定的IP 地址),用以区别在网络上成千上万个用户和计算机。…...

Scala与Spark:原理、实践与技术全景详解

Scala与Spark:原理、实践与技术全景详解 一、引言 在大数据与分布式计算领域,Apache Spark 已成为事实标准的计算引擎,而 Scala 作为其主要开发语言,也逐渐成为数据工程师和后端开发者的必备技能。本文将系统梳理 Scala 语言基础…...

【聚类】层次聚类

层次聚类 文章目录 层次聚类1. 算法介绍2. 公式及原理3. 伪代码 1. 算法介绍 背景与目标 层次聚类(Hierarchical Clustering)是一类无需事先指定簇数的聚类方法,通过构造一棵“树状图”(dendrogram)来呈现数据的多层次…...

Windows环境安装LibreOffice实现word转pdf

前言:最近在工作中遇到了一个需求要实现word转pdf,本来我在上一个公司使用aspose.words工具使用的得心应手,都已经把功能点实现了,两句代码轻轻松松,但是被告知不能用商业版的东西,公司要求只能用开源的&am…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit (3)

1.问题描述: 通过CardRecognition识别身份证拍照拿到的照片地址,使用该方法获取不到图片文件,请问如何解决? 解决方案: //卡证识别实现页,文件名为CardDemoPage,需被引入至入口页 import { …...

【聚类】K-means++

K-means 文章目录 K-means1. 算法介绍2. 公式及原理3. 伪代码 1. 算法介绍 背景与目标 k-means 是 David Arthur 和 Sergei Vassilvitskii 于2007年提出的改进 k-means 初始化方法,其核心目标是: 在保证聚类质量的前提下,通过更合理地选择初始…...

Java实现PDF加水印功能:技术解析与实践指南

Java实现PDF加水印功能:技术解析与实践指南 在当今数字化办公环境中,PDF文件因其跨平台兼容性和格式稳定性而被广泛应用。然而,为了保护文档的版权、标记文档状态(如“草稿”“机密”等)或增加文档的可追溯性&#xf…...

【C#】用 DevExpress 创建带“下拉子表”的参数表格视图

展示如何用 DevExpress 创建带“下拉子表”的参数表格视图。主表为 参数行 ParamRow,子表为 子项 ChildParam。 一、创建模型类 public class ParamRow {public string Pn { get; set; }public string DisplayName { get; set; }public string Value { get; set; }…...

Go语言八股文之Mysql优化

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

学习记录:DAY29

项目开发日志:技术实践与成长之路 前言 回顾这几天的状态,热情总是比我想象中更快被消耗完。比起茫然徘徊的小丑,我更希望自己是对着风车冲锋的疯子。 今天继续深入项目的实际业务。 状态好点的时候,再看自己EMO时写的东西&…...

LLaMA-Factory:了解webUI参数

Finetuning method参数 full(全量微调) 更新模型全部参数,完全适配新任务 效果最好,但资源消耗最大适用于计算资源充足的场景存在过拟合的风险,需要大量数据支持 freeze(冻结微调) 固定底层参…...

【实战】GPT-SoVITS+内网穿透:3分钟搭建可公网访问的语音克隆系统

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

HTML向四周扩散背景

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>扩散背景效果</title><style>body {…...

React 个人笔记 Hooks编程

作用 配合函数式编程&#xff0c;保证在不产生类的时候完成一个整体的组件 常用组件 useStateuseContextuseReduceruseEffectuseMemouseCallback 前三个值为自变量 后三者为因变量 前三者相当于其他编程函数的变量声明&#xff0c;而后三者相当于对变量进行了(if now ! pr…...

CSS- 4.6 radiu、shadow、animation动画

本系列可作为前端学习系列的笔记&#xff0c;代码的运行环境是在HBuilder中&#xff0c;小编会将代码复制下来&#xff0c;大家复制下来就可以练习了&#xff0c;方便大家学习。 HTML系列文章 已经收录在前端专栏&#xff0c;有需要的宝宝们可以点击前端专栏查看&#xff01; 点…...

ngx_http_scgi_module 技术指南

一、快速上手示例 http {# 定义 SCGI 参数&#xff08;标准 CGI 环境变量&#xff09;include /etc/nginx/scgi_params;server {listen 80;location /app/ {# 将请求转发到本地 9000 端口的 SCGI 服务器scgi_pass localhost:9000;# 只转发非空的 HTTPS 参数scgi…...

NFT市场开发技术全解析:从架构设计到实现

NFT&#xff08;非同质化代币&#xff09;市场已成为区块链领域的热门应用场景&#xff0c;涵盖艺术品、游戏资产、虚拟地产等多个领域。本文将从技术栈选择、核心功能实现、开发流程、挑战与优化等方面&#xff0c;系统梳理NFT市场的开发要点&#xff0c;并结合实际案例与代码…...

第六十一篇 Java反射解析:用咖啡调配理解动态编程的艺术

引言&#xff1a;一杯咖啡引发的技术思考 在星巴克的收银台前&#xff0c;我们总能看到店员熟练地根据顾客需求调配不同口味的咖啡&#xff1a;美式、拿铁、卡布奇诺… 这让我联想到编程世界中的对象创建。如果每新增一种咖啡就要修改收银系统&#xff0c;这样的设计显然不够优…...

【android bluetooth 协议分析 01】【HCI 层介绍 7】【ReadLocalName命令介绍】

1. HCI_Read_Local_Name Read Local Name 是 HCI&#xff08;Host Controller Interface&#xff09;命令之一&#xff0c;属于 BR/EDR 控制器的 HCI Command 类别&#xff0c;其主要功能是 读取本地设备&#xff08;Controller&#xff09;的人类可读名称&#xff08;Local N…...

window xampp apache使用腾讯云ssl证书配置https

下载腾讯云ssl证书&#xff1a; 编辑Apache根目录下 conf/httpd.conf 文件&#xff1a; #LoadModule ssl_module modules/mod_ssl.so和#Include conf/extra/httpd-ssl.conf&#xff0c;去掉前面的#号注释。 编辑Apache根目录下 conf/httpd-ssl.conf 文件&#xff1a; <Vi…...

企业开发工具git的使用:从入门到高效团队协作

前言&#xff1a;本文介绍了Git的安装、本地仓库的创建与配置&#xff0c;以及工作区、暂存区和版本库的区分。详细讲解了版本回退、撤销修改等操作&#xff0c;并深入探讨了分支管理&#xff0c;包括分支的创建、切换、合并、删除及冲突解决。此外&#xff0c;还介绍了远程操作…...

【git config --global alias | Git分支操作效率提升实践指南】

git config --global alias | Git分支操作效率提升实践指南 背景与痛点分析 在现代软件开发团队中&#xff0c;Git分支管理是日常工作的重要组成部分。特别是在规范的开发流程中&#xff0c;我们经常会遇到类似 feature/user-management、bugfix/login-issue 或 per/cny/dev …...

VR 互动实训与展示,借科技开启沉浸式体验新篇​

对于企业而言&#xff0c;产品设计与展示是极为关键的环节&#xff0c;这直接关系到能否成功吸引客户&#xff0c;以及精准获取市场反馈。在当下科技飞速发展的时代&#xff0c;VR 互动实训为这一至关重要的环节注入了全新活力&#xff0c;带来了前所未有的体验。以某智能家居企…...

一文了解VR拍摄制作

虚拟现实&#xff08;VR&#xff09;技术通过计算机技术模拟环境&#xff0c;使用户能够身临其境地沉浸在虚拟世界中进行交互体验。 在VR拍摄中&#xff0c;主要利用这一技术来创建360度全景视频或图片&#xff0c;让观众能够全方位地感受拍摄场景。这种拍摄方式不仅改变了我们…...

【内测征集】LarkVR 播控系统上新:VR 应用一站式专业播控与管理工具

Paraverse平行云自主研发的LarkXR实时云渲染平台&#xff0c;作为行业领先的企业级云渲染解决方案&#xff0c;在国际市场占据重要地位。公司自2016年创立以来&#xff0c;始终引领3D/XR云化技术的创新发展&#xff0c;目前已在全球范围内为超过10,000名开发者和1,000家企业客户…...

Windows逆向工程提升之二进制分析工具:HEX查看与对比技术

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 十六进制查看工具 应用于逆向工程的知识点 ​编辑 二进制对比工具 应用于逆向工程的知识点 十六进制查看工具 十六进制查看器是逆向工程的基础工具&#xff0c;它可以以十六进制格式…...

电脑A和电脑B都无法ping通电脑C网络,电脑C可以ping通电脑A和B,使用新系统测试正常,排除硬件问题。

主要硬件&#xff1a;研华AIMB-705主板、i5-6500 C机在防火墙高级设置里启用以下两项规则后&#xff0c;A/B机可正常访问C机网络。&#xff08;直接关闭防火墙也可解决此问题&#xff09; 文件和打印机共享 (回显请求 - ICMPv4-In) 核心网络诊断 - ICMP 回显请求 (ICMPv4-In)…...

【VMware】虚拟机运行 Linux Ubuntu、MAC 安装和配置

文章目录 一、VMware Workstation Pro 下载二、VMware Workstation Pro 安装三、Ubuntu Linux虚拟机镜像下载安装与配置 1、Ubuntu系统镜像下载 2、创建虚拟机&#xff08;VMware&#xff09;及硬件配置 3、编辑虚拟机设置 4、安装Ubuntu系统及系统…...