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

iOS 逆向学习 - iOS Security Features:硬件与软件多重防护体系

iOS 逆向学习 - iOS Security Features:硬件与软件多重防护体系

  • iOS 安全特性全面解析:构筑多层次防御体系
    • 一、iOS 的硬件安全特性
      • 1. Secure Enclave(安全隔区)
      • 2. Hardware Root of Trust(硬件信任根)
      • 3. Device Encryption(设备加密)
    • 二、iOS 的软件安全特性
      • 4. App Sandbox(应用沙盒)
      • 5. Developer Certificates(开发者证书)
      • 6. Secure Boot Chain(安全启动链)
      • 7. Patch Management(补丁管理)
    • 三、iOS 的权限安全特性
      • 8. Privacy Features(隐私特性)
      • 9. Tracking Prevention(追踪预防)
    • 四、iOS 的网络安全特性
      • 10. Secure Communication(安全通信)
      • 11. Wi-Fi Security Features(Wi-Fi 安全特性)及 General Exploit Mitigations(攻击缓解机制)
    • 五、iOS 的应用与系统安全
      • 12. App Store Review Process(App Store 审核流程)
      • 13. Jailbreaking Mitigations(越狱缓解措施)
    • 六、总结

iOS 安全特性全面解析:构筑多层次防御体系

Apple 在 iOS 中集成了多层次的安全机制,从硬件层到软件层,再到网络安全与隐私保护,全面保障了用户的数据安全。本文将详细介绍 iOS 的安全特性,了解Apple如何保护用户免受各种攻击。

全面了解 iOS 系统的安全架构是迈入逆向开发领域的重要基石。iOS 作为移动操作系统的典范,通过硬件与软件的深度结合,构筑了一套完整的多层次安全体系,从硬件到软件、从权限管理到网络通信,层层强化数据保护。本文将结合相关技术特性进行详细解析,以期为开发者与研究者提供参考。
在这里插入图片描述


一、iOS 的硬件安全特性

iOS 的硬件安全特性从底层构建出系统的“信任根”,并通过独立的硬件模块和加密机制保障数据的安全性。

1. Secure Enclave(安全隔区)

Secure Enclave 是 iOS 设备中用于保护敏感数据的独立协处理器。其核心特点包括:

  • 独立运行环境:与主 CPU 完全隔离,独享独立的内存与处理能力。
  • 硬件级密钥管理:存储敏感信息(如指纹数据、Face ID 数据及加密密钥),系统和应用无法直接访问。
  • 多场景应用:支持 Apple Pay、iMessage 加密、Face ID 和 Touch ID 等功能。

Secure Enclave 的存在确保了敏感数据的存储与操作始终在受控的硬件环境中完成,大幅降低被攻击的风险。
在这里插入图片描述

2. Hardware Root of Trust(硬件信任根)

硬件信任根是 iOS 安全架构的基础,其核心机制是设备内的唯一硬件密钥(UID 和 GID),具有以下特点:

  • 设备唯一性:每个设备都有独特的 UID 和 GID,用于加密本地数据。
  • 无法提取性:这些密钥被存储在设备的硬件中,无法被直接访问或提取。
  • 安全启动支持:通过验证系统镜像的数字签名,保证启动链中的每一阶段代码都未被篡改。

硬件信任根通过底层的硬件支持,确保设备能够信任其运行的软件环境。
在这里插入图片描述

3. Device Encryption(设备加密)

iOS 的全盘加密机制使得设备存储的数据即便被物理获取,也难以被破解:

  • 基于硬件的文件加密:每个文件都有独立的加密密钥,文件密钥通过 UID 加密存储在硬件中。
  • 与用户密码结合:设备数据加密还依赖用户密码,提升破解难度。
  • 实时加密保护:锁屏时设备进入加密状态,未解锁时任何访问都被拒绝。

这种硬件与软件结合的加密方式,使得未经授权的数据访问几乎不可能实现。
在这里插入图片描述


二、iOS 的软件安全特性

iOS 在软件层面通过沙盒机制、签名验证和补丁管理等技术,进一步强化了设备的整体安全性。

4. App Sandbox(应用沙盒)

App Sandbox 是 iOS 的核心安全机制之一,通过严格的访问控制实现以下功能:

  • 进程隔离:每个应用运行在独立的沙盒环境中,无法直接访问其他应用或系统资源。
  • 数据保护:应用只能访问自身的数据目录,敏感文件如 Keychain 受到额外保护。
  • 权限限制:系统资源(如摄像头、麦克风)需要通过明确的用户授权才能使用。

通过沙盒隔离机制,iOS 有效防止了恶意软件对系统和其他应用的攻击。
在这里插入图片描述

5. Developer Certificates(开发者证书)

开发者证书是 iOS 应用生态的信任基石,它确保只有经过认证的开发者才能创建和分发应用:

  • 应用签名机制:所有 iOS 应用都必须使用 Apple 分发的开发者证书签名,确保其来源可信。
  • 发布渠道限制
    • App Store 分发应用需要经过严格的审核流程。
    • 企业签名仅适用于内部分发,但滥用可能导致证书被吊销。

这种签名机制使得恶意软件难以在 iOS 平台上传播,维护了生态系统的安全性。
在这里插入图片描述

6. Secure Boot Chain(安全启动链)

Secure Boot Chain 是 iOS 系统的分层启动验证机制:

  • 从硬件到内核的逐层验证:每个启动阶段都验证下一阶段代码的数字签名。
  • 防篡改:未经 Apple 签名的代码无法加载,阻止了恶意固件或系统的注入。

安全启动链确保设备始终运行受信任的操作系统和固件。
在这里插入图片描述

7. Patch Management(补丁管理)

及时修复漏洞是防止已知攻击的重要方式,iOS 的补丁管理具有以下特点:

  • 快速响应机制:Apple 定期发布更新修复漏洞,重大安全问题通常在数日内解决。
  • 自动推送更新:用户设备会收到更新推送,降低更新门槛。
  • 向后支持:Apple 对老旧设备也提供安全更新,增强设备的生命周期安全性。

保持设备系统的最新状态是防止潜在威胁的重要保障。
在这里插入图片描述


三、iOS 的权限安全特性

权限管理在 iOS 系统中扮演着保护用户隐私的关键角色,苹果通过机制设计与透明化的交互大幅降低了隐私泄露的可能性。

8. Privacy Features(隐私特性)

iOS 对用户隐私的保护体现在多个方面:

  • 权限提示:应用访问敏感资源(如位置、摄像头)时会弹窗请求用户授权。
  • 数据使用透明化:用户可以在设置中查看应用的权限使用记录。
  • 细粒度权限管理:例如,照片权限可以限制为“仅访问选定照片”。

通过增强透明度与控制权,iOS 提供了业界领先的隐私保护。
在这里插入图片描述

9. Tracking Prevention(追踪预防)

为防止用户数据被滥用,苹果推出了多种追踪预防机制:

  • App Tracking Transparency (ATT):应用需征得用户许可才能跨应用追踪活动。
  • 广告标识符限制:用户可以禁用 IDFA,从而减少个性化广告投放。
  • Safari 智能反追踪:通过阻止第三方追踪器,保护用户在网络中的隐私。

这种全方位的追踪防护在保护隐私的同时,也对广告行业带来了深远影响。
在这里插入图片描述


四、iOS 的网络安全特性

网络通信是现代应用的核心功能之一,iOS 在这方面提供了高标准的安全保护。

10. Secure Communication(安全通信)

iOS 系统通过多种加密与验证机制保障网络通信的安全性:

  • 强制 TLS:iOS 要求应用使用 HTTPS,以确保数据在传输过程中的加密性。
  • 数据完整性保护:内置支持 Certificate Pinning,防止中间人攻击。
  • 加密 API:开发者可通过系统提供的加密接口保护敏感通信数据。

无论是应用开发者还是终端用户,都能从这一安全体系中获益。
在这里插入图片描述

11. Wi-Fi Security Features(Wi-Fi 安全特性)及 General Exploit Mitigations(攻击缓解机制)

  • Wi-Fi 安全机制:设备会自动检测恶意 Wi-Fi 网络,警告用户潜在风险。
  • 攻击缓解
    • 地址空间布局随机化 (ASLR):通过动态随机分配内存地址,防止缓冲区溢出攻击。
    • 内核保护:限制应用对内核的访问,降低特权升级的可能性。

这些网络安全特性大幅减少了设备被远程攻击的风险。
在这里插入图片描述


五、iOS 的应用与系统安全

通过完善的生态设计,iOS 在应用与系统层面构建了稳固的安全体系。
在这里插入图片描述

12. App Store Review Process(App Store 审核流程)

所有通过 App Store 分发的应用都需经过以下安全审核:

  • 恶意代码检查:确保应用无恶意行为或后门。
  • 隐私合规性验证:检查应用对用户数据的收集与使用是否符合规定。
  • 持续监管:即使应用上线后,Apple 也会定期进行复查。

严格的审核流程使 App Store 成为一个高度受信任的应用市场。
在这里插入图片描述

13. Jailbreaking Mitigations(越狱缓解措施)

越狱破坏了 iOS 的安全架构,为此 Apple 采取了以下缓解措施:

  • 频繁更新漏洞:快速修补漏洞,防止越狱工具利用。
  • 检测机制:部分系统功能会限制越狱设备的使用。
  • 限制运行环境:许多主流应用(如银行应用)拒绝在越狱设备上运行。

通过持续的技术对抗,Apple 有效降低了越狱对设备安全的威胁。
在这里插入图片描述


六、总结

iOS 的安全体系通过硬件信任根、软件隔离机制、权限保护与网络加密等技术的有机结合,构建了一个多层次的防护架构。在这一体系下,开发者不仅需要理解这些特性背后的设计逻辑,还需要在实际开发中严格遵循其安全规范,从而为用户提供更加安全可靠的应用体验。

对于初学者而言,这些安全特性不仅是逆向研究的学习重点,也是理解移动安全领域的关键入口。

相关文章:

iOS 逆向学习 - iOS Security Features:硬件与软件多重防护体系

iOS 逆向学习 - iOS Security Features:硬件与软件多重防护体系 iOS 安全特性全面解析:构筑多层次防御体系一、iOS 的硬件安全特性1. Secure Enclave(安全隔区)2. Hardware Root of Trust(硬件信任根)3. De…...

纯前端实现将pdf转为图片(插件pdfjs)

需求来源 预览简历功能在移动端,由于用了一层iframe把这个功能嵌套在了app端,再用一个iframe来预览,只有ios能看到,安卓就不支持,查了很多资料和插件,原理基本上都是用iframe实现的。最终转换思路&#xf…...

stm32HAL库使LED闪烁

PC13引脚为开漏接法 生成代码时设置为out put open drain gpio out put level 设置为high 1表示熄灭 我们将pa9引脚连接为推挽接法 生成代码时设置为 out put push pull Gpio out put level 设置为low 0 表示熄灭 代码使其亮起再延时0.5秒再熄灭再延时0.5秒...

《数据结构》期末考试测试题【中】

《数据结构》期末考试测试题【中】 21.循环队列队空的判断条件为?22. 单链表的存储密度比1?23.单链表的那些操作的效率受链表长度的影响?24.顺序表中某元素的地址为?25.m叉树第K层的结点数为?26. 在双向循环链表某节点…...

【Vue3项目实战系列一】—— 全局样式处理,导入view-ui-plus组件库,定制个性主题

😉 你好呀,我是爱编程的Sherry,很高兴在这里遇见你!我是一名拥有十多年开发经验的前端工程师。这一路走来,面对困难时也曾感到迷茫,凭借不懈的努力和坚持,重新找到了前进的方向。我的人生格言是…...

ChatGPT 主流模型GPT-4/GPT-4o mini的参数规模是多大?

微软论文又把 OpenAI 的机密泄露了??在论文中明晃晃写着: o1-preview 约 300B;o1-mini 约 100BGPT-4o 约 200B;GPT-4o-mini 约 8BClaude 3.5 Sonnet 2024-10-22 版本约 175B微软自己的 Phi-3-7B,这个不用约…...

初学stm32 --- RTC实时时钟

目录 RTC简介 常用的RTC方案 STM32 F1 RTC框图介绍 后备寄存器和RTC寄存器特性(F1) F1 RTC相关寄存器介绍 RCC_APB1ENR寄存器​编辑 PWR_CR寄存器 RCC_BDCR寄存器 RTC_CRL寄存器 RTC_CRH寄存器 RTC_PRLH寄存器 RTC_PRLL寄存器 RTC_CNTH寄存器 …...

Qt之屏幕录制设计(十六)

Qt开发 系列文章 - screencap(十六) 目录 前言 一、实现原理 二、实现方式 1.创建录屏窗口 2.录屏窗口类定义 3.自建容器对象定义 4.用户使用 5.效果演示 总结 前言 利用Qt实现屏幕录制设计,可以通过使用Qt自带的类QScreen、QPixma…...

25年1月更新。Windows 上搭建 Python 开发环境:Python + PyCharm 安装全攻略(文中有安装包不用官网下载)

引言 随着 Python 在数据科学、Web 开发、自动化脚本等多个领域的广泛应用,越来越多的开发者选择它作为首选编程语言。而 PyCharm 作为一个功能强大的集成开发环境(IDE),为 Python 开发者提供了极大的便利。本文将详细介绍如何在 …...

CTF杂项——[LitCTF 2024]涐贪恋和伱、甾―⑺dé毎兮毎秒

得到一张图片 有两种方式可以得到flag 第一种:LSB 第二种:zsteg...

从零开始手写缓存之如何实现固定缓存大小

cache 发展之路 1、HashMap或者ConcurrentHashMap public class CustomerService {private HashMap<String,String> hashMap new HashMap<>();private CustomerMapper customerMapper;public String getCustomer(String name){String customer hashMap.get(nam…...

Kubernetes——part4-1 Kubernetes集群 服务暴露 Nginx Ingress Controller

Kubernetes集群 服务暴露 Nginx Ingress Controller 一、ingress控制器 1.1 ingress控制器作用 &#xff08;类似于slb&#xff0c;做代理服务&#xff09; ingress controller可以为kubernetes 集群外用户访问Kubernetes集群内部pod提供代理服务。 提供全局访问代理访问流程…...

前端小案例——520表白信封

前言&#xff1a;我们在学习完了HTML和CSS之后&#xff0c;就会想着使用这两个东西去做一些小案例&#xff0c;不过又没有什么好的案例让我们去练手&#xff0c;本篇文章就提供里一个案例——520表白信封 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主…...

《机器学习》——线性回归模型

文章目录 线性回归模型简介一元线性回归模型多元线性回归模型误差项分析一元线性模型实例完整代码 多元线性模型实例完整代码 线性回归模型简介 线性回归是利用数理统计中回归分析&#xff0c;来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 相关关系&…...

测试用例颗粒度说明

当我们在编写测试用例时&#xff0c;总是会遇到一个问题&#xff1a;如何确定测试用例的颗粒度&#xff1f;测试用例过于粗糙&#xff0c;可能无法全面覆盖系统的细节&#xff1b;而颗粒度过细&#xff0c;又会导致测试重复、冗余。掌握合适的颗粒度&#xff0c;不仅可以提高测…...

Kali 离线安装 ipmitool 笔记

在Kali Linux上离线安装 ipmitool 的步骤如下&#xff1a; 一、获取 ipmitool 的安装包和依赖 由于是离线安装&#xff0c;您需要先在一台可以联网的机器上下载 ipmitool 及其所有依赖包。 方法一&#xff1a;使用 apt 下载包 在联网的机器上&#xff0c;运行以下命令以准备…...

基于word2vec的文本大数据分析

基于word2vec的文本大数据分析 效果: 一、简介 Word2Vec是一种词向量表示方法,是在自然语言处理领域(NLP)的神经网络模型,是一种无监督学习,包含两种模型架构:CBOW模型与Skip-Gram模型。 常用于:相似度计算、词类聚类、文本分类、句子和文档表示、搜索引擎优化、情…...

BGP基础配置实验

一、实验拓补 二、实验要求及分析 实验要求&#xff1a; 1&#xff0c;R1为AS 100区域&#xff1b;R2、R3、R4为AS 200区域且属于OSPF协议&#xff1b;R5为AS 300区域&#xff1b; 2&#xff0c;每个设备上都有环回&#xff0c;且通过环回可以使设备互通&#xff1b; 实验分…...

Maven核心与单元测试

目录 一. Maven概述二. IDEA集成Maven2.1 创建Maven项目2.2 Maven坐标2.3 导入Maven项目 三. 依赖管理四. Maven的生命周期五. 单元测试5.1 快速入门5.2 断言5.3 常见注解5.4 依赖范围 六. Maven常见问题 \quad 一. Maven概述 \quad \quad 二. IDEA集成Maven \quad 2.1 创建Mav…...

Go语言的 的继承(Inheritance)基础知识

Go语言的继承&#xff08;Inheritance&#xff09;基础知识 引言 在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;继承是一个重要的概念&#xff0c;它允许一个类&#xff08;子类&#xff09;继承另一个类&#xff08;父类&#xff09;的属性和方法。这种机制在许…...

常见的框架漏洞复现

1.Thinkphp Thinkphp5x远程命令执行及getshell 搭建靶场 cd vulhub/thinkphp/5-rce docker-compose up -d 首页 漏洞根本源于 thinkphp/library/think/Request.php 中method方法可以进行变量覆盖&#xff0c;通过覆盖类的核心属性filter导致rce&#xff0c;其攻击点较为多&…...

SLA 简介

SLA 是 Service Level Agreement&#xff08;服务级别协议&#xff09; 的缩写&#xff0c;广泛应用于企业服务管理、IT服务、云计算等领域。以下是对 SLA 的详细解释&#xff1a; SLA 的定义 服务级别协议&#xff08;SLA&#xff09;是服务提供方&#xff08;Service Provid…...

基于动力学的MPC控制器设计盲点解析

文章目录 Apollo MPC控制器的设计架构误差模型和离散化预测模型推导目标函数和约束设计优化求解优化OSQP求解器参考文献 Apollo MPC控制器的设计架构 误差模型和离散化 状态变量和控制变量 1、Apollo MPC控制器中状态变量主要有如下6个 matrix_state_ Matrix::Zero(basic_stat…...

leetcode 面试经典 150 题:轮转数组

链接轮转数组题序号189题型数组解法1. 额外数组法&#xff0c;2. 原数组翻转法&#xff08;三次翻转法&#xff09;难度中等熟练度✅✅✅✅ 题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,…...

Elasticsearch:探索 Elastic 向量数据库的深度应用

Elasticsearch&#xff1a;探索 Elastic 向量数据库的深度应用 一、Elasticsearch 向量数据库简介 1. Elasticsearch 向量数据库的概念 Elasticsearch 本身是一个基于 Lucene 的搜索引擎&#xff0c;提供了全文搜索和分析的功能。随着技术的发展&#xff0c;Elasticsearch 也…...

From matplotl1b.path 1mport failed to import ImportError:numpy.core.multiarray

问题&#xff1a;From matplotl1b.path 1mport failed to import ImportError:numpy.core.multiarray 安装labelme的时候说numpy与环境不兼容&#xff0c;调不了labelme 解决1&#xff1a;安装虚拟环境 &#xff08;这里安装labelmede 虚拟环境&#xff09; #查看python版本 …...

Docker- Unable to find image “hello-world“locally

Docker- Unable to find image “hello-world“locally 文章目录 Docker- Unable to find image “hello-world“locally问题描述一. 切换镜像1. 编辑镜像源2. 切换镜像内容 二、 检查设置1、 重启dockers2、 检查配置是否生效3. Docker镜像源检查4. Dokcer执行测试 三、自定义…...

linux定时执行脚本的方法

使用 cron 服务(推荐) 简介: Cron 是一个基于时间的任务调度程序,它允许用户在指定的时间间隔自动运行命令或脚本。它使用crontab(cron table 的缩写)文件来存储定时任务的配置信息。操作步骤: 编辑用户的 crontab 文件:在终端中输入crontab -e命令。这将打开一个文本编…...

Docker 中启动 Nacos

要在 Docker 中启动 Nacos&#xff0c;你可以使用以下步骤来启动 Nacos 服务。我已经有了 swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nacos/nacos-server:v2.4.2.1 这个镜像。 1. 创建并启动 MySQL 容器&#xff08;Nacos 依赖 MySQL&#xff09; Nacos 默认使用 …...

【计算机网络】课程 实验三 跨交换机实现 VLAN 间路由

实验 3 跨交换机实现 VLAN 间路由 一、实验目的 1&#xff0e;理解跨交换机之间VLAN的特点。 2&#xff0e;掌握如何在交换机上划分基于端口的VLAN&#xff0c;给VLAN内添加端口。 3&#xff0e;利用三层交换机跨交换机实现 VLAN 间路由。 二、实验分析与设计 【背景描述…...

【74CH192D+4511减法30进制2022年7月7日】

缘由30秒定时器错误帮我看看-大数据-CSDN问答 电路图用到S1倒计时信号控制&#xff0c;S2置数30。从演示可以看到置数&#xff0c;开始&#xff0c;暂停&#xff0c;继续&#xff0c;等于0时清零&#xff0c;并且灯亮&#xff0c;最后断开信号输入完成所有功能。看题主有自己动…...

基于ESP32的桌面小屏幕实战[5]:PCB下单

1. 焊接调试前准备 PCB下单 点击“PCB下单” 检查一下DRC 确认无错误之后&#xff0c;确认下单 然后就会跳转到下面的网页 基本上保持默认选项即可。可以看到“焊盘喷镀”有3个选项。 在选择表面处理工艺时&#xff0c;应综合考虑产品的具体需求、环保法规以及成本等因素。例…...

孤独症儿童寄宿:温馨寄宿,陪伴成长

在社会的各个角落&#xff0c;有一群特殊的孩子&#xff0c;他们生活在自己的世界里&#xff0c;对外界的感知和反应与众不同。他们&#xff0c;就是孤独症&#xff08;自闭症&#xff09;儿童。孤独症&#xff0c;这个看似遥远的名词&#xff0c;却真实地影响着无数家庭&#…...

云备份项目--服务端编写

文章目录 7. 数据管理模块7.1 如何设计7.2 完整的类 8. 热点管理8.1 如何设计8.2 完整的类 9. 业务处理模块9.1 如何设计9.2 完整的类9.3 测试9.3.1 测试展示功能 完整的代码–gitee链接 7. 数据管理模块 TODO: 读写锁&#xff1f;普通锁&#xff1f; 7.1 如何设计 需要管理…...

CSS——2.书写格式一

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写中&#xff1a;--><!--1.css 由属性名:属性值构成--><!--style"color: red;font-size: 20px;&quo…...

【保姆级】sql注入之堆叠注入

一、堆叠注入的原理 mysql数据库sql语句的默认结束符是以";"号结尾&#xff0c;在执行多条sql语句时就要使用结束符隔 开,而堆叠注入其实就是通过结束符来执行多条sql语句 比如我们在mysql的命令行界面执行一条查询语句,这时语句的结尾必须加上分号结束 select * fr…...

大模型推理加速调研(框架、方法)

大模型推理加速调研&#xff08;框架、方法&#xff09; 大模型推理框架调研总结推理框架TensorRT-LLMllama.cppmnn-llmfastllmmlc-llm 环境搭建&部署推理环境llama.cppfastllmmnn-llmvllm vllm_openai_completions.pylmdeployTensorRT-LLM 大模型加速技术总结模型压缩量化…...

js -音频变音(听不出说话的人是谁)

学习参考来源&#xff1a; https://zhuanlan.zhihu.com/p/634848804 https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Audio_API 实际效果&#xff1a; http://www.qingkong.zone/laboratory?typeaudio-confusion 前言 本文内容可结合上面学习参考来源&#xff0c;结合…...

3D Object Detection和6D Pose Estimation有什么异同?

知乎讨论&#xff1a; (99 封私信 / 95 条消息) 3D Object Detection和6D Pose Estimation有什么异同&#xff1f; - 知乎 GPT回答&#xff1a; 3D Object Detection 和 6D Pose Estimation 都是计算机视觉领域的重要任务&#xff0c;广泛应用于机器人、自动驾驶和增强现实…...

NRF24L01模块STM32通信-通信初始化

目录 前言 一、IO口初始化 二、模拟SPI的基础代码 1.一些代码的宏定义 2.起始信号 3.CS,SCK,MOSI操作 4.MISO,IRQ操作 三.中间层代码 1.字节的输入和读取 2.写操作 3.读操作 四.应用层代码 1.24L01的检测 2.在main函数进行简单验证 3.24L01宏定义的代码 总结 前…...

vue Element Ui Upload 上传 点击一个按钮,选择多个文件后直接上传,使用防抖解决多次上传的问题。

问题&#xff1a; 在使用Element Ui Upload 上传文件时&#xff0c;选择多个文件上传时&#xff0c;on-change事件会一个一个返回上传的文件&#xff0c;导致前端不知道什么时候可以拿到全部上传的文件&#xff0c;再一起调后台接口。 解决方法&#xff1a; 上传文件后&…...

算法题(26):最后一个单词的长度

审题&#xff1a; 需要我们返回最后一个单词的长度&#xff0c;并且字符串内只有空格来分割单词 思路&#xff1a; 找到最后一个单词的方法就是从后开始遍历找到第一个非空格的元素&#xff0c;称为pos&#xff08;第一个出现单词的位置&#xff09; 然后再从pos位置开始反向寻…...

Ungoogled Chromium127 编译指南 MacOS 篇(二)- 项目要求

1. 引言 在开始编译 Ungoogled Chromium 之前&#xff0c;我们需要确保系统满足所有必要的硬件和软件要求。由于浏览器编译是一个资源密集型的任务&#xff0c;合适的硬件配置和完整的软件环境至关重要。本文将详细介绍编译 Ungoogled Chromium 所需的各项要求。 2. 硬件要求…...

nginx配置-其他配置

nginx配置-其他配置 server_tokens server_tokens server_token on/off 是 Nginx 配置文件中的一个指令&#xff0c;用于控制 Nginx 服务器在响应 HTTP 请求时是否显示服务器的版本信息。 默认情况下&#xff0c;Nginx 会在响应头中包含服务器的版本号&#xff0c;例如 Serve…...

Springboot使用RabbitMQ实现关闭超时订单的一个简单示例

1.maven中引入rabbitmq的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 2.application.yml中进行rabbitmq相关配置&#xff1a; # rabbit…...

QT-------------对话框和多窗口程序设计

一、标准对话框 1. QFileDialog 对话框 功能&#xff1a;提供文件选择对话框&#xff0c;方便用户选择文件或目录。 #include <QApplication> #include <QFileDialog> #include <QMessageBox>int main(int argc, char *argv[]) {QApplication app(argc, a…...

信息科技伦理与道德2:研究方法

1 问题描述 1.1 讨论&#xff1f; 请挑一项信息技术&#xff0c;谈一谈为什么认为他是道德的/不道德的&#xff0c;或者根据使用场景才能判断是否道德。判断的依据是什么&#xff08;自身的道德准则&#xff09;&#xff1f;为什么你觉得你的道德准则是合理的&#xff0c;其他…...

Linux(Centos 7.6)命令详解:ls

1.命令作用 列出目录内容(list directory contents) 2.命令语法 Usage: ls [OPTION]... [FILE]... 3.参数详解 OPTION: -l&#xff0c;long list 使用长列表格式-a&#xff0c;all 不忽略.开头的条目&#xff08;打印所有条目&#xff0c;包括.开头的隐藏条目&#xff09…...

深入理解 WebSocket:实时通信的基础

随着互联网技术的不断发展&#xff0c;实时通信逐渐成为现代应用程序中不可或缺的一部分。无论是即时通讯应用、在线游戏、社交平台还是股票交易系统&#xff0c;都需要能够在客户端与服务器之间快速、高效地传输数据。传统的 HTTP 协议虽然简单且广泛应用&#xff0c;但它并不…...

【网络协议】开放式最短路径优先协议OSPF详解(一)

OSPF 是为取代 RIP 而开发的一种无类别的链路状态路由协议&#xff0c;它通过使用区域划分以实现更好的可扩展性。 文章目录 链路状态路由协议OSPF 的工作原理OSPF 数据包类型Dijkstra算法、管理距离与度量值OSPF的管理距离OSPF的度量值 链路状态路由协议的优势拓扑结构路由器O…...