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

2-2-18-16 QNX系统架构之自适应分区

阅读前言

本文以QNX系统官方的文档英文原版资料为参考,翻译和逐句校对后,对QNX操作系统的相关概念进行了深度整理,旨在帮助想要了解QNX的读者及开发者可以快速阅读,而不必查看晦涩难懂的英文原文,这些文章将会作为一个或多个系列进行发布,从遵从原文的翻译,到针对某些重要概念的穿插引入,以及再到各个重要专题的梳理,大致分为这三个层次部分,分不同的文章进行发布,依据这样的原则进行组织,读者可以更好的查找和理解。


1. 自适应分区

在许多计算机系统中,保护不同的应用程序或应用程序组之间彼此不受干扰是很重要的。你肯定不希望某个应用程序破坏其他应用程序或者妨碍它们运行(无论是有缺陷的还是恶意的)。

为了解决这个问题,有些系统会在一组应用程序周围设置被称为“分区(partitions)”的虚拟屏障,以确保每个分区都能被分配到一组经过规划的资源。首要考虑的资源是 CPU 时间,但任何共享资源,比如内存和文件空间(磁盘或闪存),也都可能会被纳入考量范围。

QNX Neutrino 的自适应分区仅支持 CPU 时间的分配。

通过使用多个分区,你可以避免出现单点故障。例如,避免某个失控的进程占据整个系统的资源;这样做之后,其他分区中的进程仍然能够获得分配给它们的那部分系统资源。

即便没有自适应分区,QNX Neutrino 的进程模型所提供的保护也远比某些其他操作系统要多,这些保护包括:

  • 进程间的全面内存保护;
  • 通过消息传递来提供统一且受控制的进程间通信(IPC);
  • 带有清晰“客户端-服务器模型”的优先级继承特性;
  • 硬实时确定性调度;
  • 针对设备、文件和内存的详细权限模型;
  • 利用 POSIX 标准的 setrlimit() 函数对内存、文件描述符、CPU 以及优先级进行限制,以此约束失控的进程。


通常情况下,其他系统中的资源分区的主要目的是将一台计算机划分成一组相互间尽可能少交互的小型计算机,但这种方法不太灵活。在 QNX Neutrino 中,自适应分区采用了一种更为灵活的理念。

我们的分区之所以是自适应的,原因如下:

  • 你可以在运行时更改配置;
  • 分区的行为会在运行时根据实际情况自动调整。例如:
    • 空闲时间会被重新分配给其他调度分区;
    • 文件系统可以通过一种能在不同时间分区之间临时移动线程的机制,向客户端收取时间费用。

1.1. 为什么要自适应?

为了在确保能防止过载的情况下提供实时性能,QNX Neutrino 引入了自适应分区功能。在软件动态部署很少或几乎没有的相对静态的系统中,刚性分区(静态分区)能够发挥最佳效果。而在动态系统中,静态分区可能效率低下。例如,分区之间对执行时间进行静态划分可能会浪费 CPU 时间并导致延迟:

  • 如果大多数分区处于空闲状态,而有一个分区非常繁忙,那么繁忙的分区不会获得任何额外的执行时间,而其他分区中的后台线程却在浪费 CPU 时间。
  • 如果为某个分区安排了中断,它必须等到该分区运行时才能处理。这可能会导致不可接受的延迟,尤其是在出现中断突发情况时。

自适应分区是一组为了共同或相关目标或活动而协同工作的线程集合。与静态分区一样,自适应分区也会被分配一个资源预算,以确保其能获得 CPU 资源的最小份额。但与静态分区不同的是,自适应分区具有以下特点:

  • 它并不局限于静态分区中的固定代码集;你可以根据需要动态地添加和配置自适应分区。
    在正常负载情况下,它的表现如同一个全局硬实时线程调度器,但即便在过载条件下,它仍然能够提供最小的中断延迟。
  • 当系统负载较低时,它能通过将某个分区未使用的预算分配给那些需要额外资源的分区,从而最大限度地利用 CPU 资源。

你可以引入自适应分区功能,而无需更改(甚至无需重新编译)你的应用程序代码,不过你确实需要重新构建系统的操作系统镜像。

你最多可以设置 32 个分区。在 QNX Neutrino 操作系统中,被调度的是线程,而不是分区。

1.2. 自适应分区的好处

自适应分区为系统的设计、开发、运行和调试提供了许多好处。

1.2.1. 工程化产品性能

自适应分区让你能够对系统进行设计,以便优化其性能。

分区对资源进行划分,使得资源能够被一组程序所使用。一个分区代表着一部分资源,并且包含一些用于定义资源使用情况的规则。资源涵盖了基础对象,例如处理器周期、程序存储空间,也包括高级对象,比如缓冲区、页表或者文件描述符。

自适应分区确保系统中任何可用的空闲时间(即分区预算中该分区不需要的 CPU 时间)能够提供给其他分区使用。这使得系统能够应对在正常系统运行期间出现的突发处理需求。在采用循环线程调度器的情况下,存在一种 “不用则废” 的方式,即未使用的 CPU 时间会被用于运行那些未用完预算的分区中的空闲线程。

自适应分区的另一个重要特性是分区继承的概念。这一特性使得设计人员能够开发出运行时无需(或只需极少)预算的服务器进程。当服务器处理来自客户端的请求时,会向客户端分区收取相应的时间费用。如果没有这一特性,无论服务器使用资源的频率高低或用量多少,CPU 预算都会分配给它。这些特性带来的好处包括:

  • 你无需对系统过度设计,因此总体成本会降低。
  • 如果你添加一个应用程序,无需重新规划诸如文件系统或服务器等公共服务的预算。
  • 系统的运行速度会更快,并且对用户的响应也会更及时。
  • 系统能够保障重要任务所需的时间。
  • 你可以使用优先级来指定一个进程的紧急程度,并用分区的 CPU 预算来指定其重要性。

1.2.2. 处理设计复杂性

设计大规模分布式系统本身就是复杂的。典型的此类系统包含大量彼此独立开发的子系统、进程和线程。设计工作会分配给不同的团队,而这些团队有着不同的系统性能目标、不同的优先级确定方案以及不同的运行时优化方法。

若产品开发处于不同的地理位置和时区,这种复杂性还会进一步加剧。一旦所有这些各不相同的子系统被集成到一个通用的运行时环境中,系统的所有部分都需要在所有运行场景下提供足够的响应,例如:

  • 正常系统负载情况;
  • 高峰时段;
  • 故障状况。

鉴于开发路径是并行的,在产品集成时总会出现系统问题。通常情况下,一旦系统开始运行,那些会导致严重性能下降的不可预见的交互情况就会暴露出来。当出现这类情况时,通常很少有设计师或架构师能够在系统层面进行诊断并解决这些问题。解决方案往往需要大量的修改(通常是通过反复试验)才能奏效。这会延长系统集成的时间,进而影响产品上市时间。

这类性质的问题可能需要花费一周甚至更长时间来进行故障排查,还需要几周时间来调整整个系统的优先级、重新测试并完善。如果这些问题无法得到有效解决,产品的可扩展性就会受到限制。

这在很大程度上是因为没有有效的方法能在这些不同团队之间 “规划” CPU 的使用情况。线程优先级提供了一种确保关键任务运行的方式,但却无法为重要的非关键任务保证 CPU 时间,这些任务在正常运行时可能会缺乏资源。此外,建立线程优先级的通用方法很难在大型开发团队中进行扩展应用。

利用线程调度器的自适应分区功能使得架构师能够为应急目的(比如灾难恢复系统或现场调试外壳)保留一定的资源储备,并且可以为每个子系统定义高级别的 CPU 预算,允许开发团队在给定预算范围内实施他们自己的优先级方案和优化措施。这种方法能让设计团队独立地开发子系统,并简化集成工作。最终效果是能够缩短产品上市时间,并促进产品的扩展性。

1.2.3. 提供安全性

许多系统都容易受到拒绝服务(DOS)攻击。例如,恶意用户可能会向系统发送大量需要由某个进程处理的请求。遭受攻击时,这个进程会使 CPU 过载,进而导致系统的其余部分实际上无法获得足够的资源(被“饿死”)。

一些系统试图通过实现一个监控进程来解决这个问题,该监控进程会检测 CPU 的利用率,并且当它认为某个进程占用了过多 CPU 资源时就会采取纠正措施。这种方法存在若干缺陷,包括:

  • 响应时间通常较慢。
  • 这种方法在需要进行合法处理时会限制 CPU 的使用率。
  • 它并非万无一失或绝对可靠;它依赖于恰当的线程优先级来确保监控进程能获得足够的 CPU 时间。

自适应分区可以通过为系统的各种功能分配独立的预算来解决这个问题。这能确保系统始终有为重要任务预留的一定 CPU 处理能力。线程可以自行改变其优先级,这可能会成为一个安全漏洞,不过你可以配置线程调度器,防止在分区中运行的代码自行更改其预算。

由于自适应分区能够将任何未使用的 CPU 时间分配给有需求的分区,所以在的合法情况下(确实需要增加处理能力),自适应分区不会不必要地限制控制平面(control-plane)的活动。

1.2.4. 调试

自适应分区甚至能够让嵌入式系统的调试工作变得更加轻松,无论是在开发阶段还是部署阶段,它通过为系统提供一扇 “应急门” 来实现这一点。

只需创建一个可以在其中运行诊断工具的分区就行;如果不需要使用这个分区,线程调度器会将该分区的预算分配给其他分区。这样一来,你就能在不影响系统性能的情况下访问系统了。如需更多信息,请参阅《自适应分区用户指南》的 “测试与调试” 章节。

1.3. 自适应分区线程调度器

线程调度器是一种可选的调度器,它能确保将 CPU 吞吐量的最小百分比分配给线程组、进程或应用程序。分配给一个分区的 CPU 时间百分比被称作预算。

线程调度器是基于 QNX Neutrino 核心架构设计的,其主要目的是解决嵌入式系统设计中的以下这些问题:

  • 在系统过载时,保证指定的 CPU 时间最小份额;
  • 防止不重要或不可信的应用程序独占系统资源。

如需更多信息,请参阅《自适应分区用户指南》。

相关文章:

2-2-18-16 QNX系统架构之自适应分区

阅读前言 本文以QNX系统官方的文档英文原版资料为参考,翻译和逐句校对后,对QNX操作系统的相关概念进行了深度整理,旨在帮助想要了解QNX的读者及开发者可以快速阅读,而不必查看晦涩难懂的英文原文,这些文章将会作为一个…...

【Python网络爬虫笔记】11- Xpath精准定位元素

目录 一、Xpath 在 Python 网络爬虫中的作用(一)精准定位元素(二)应对动态网页(三)数据结构化提取 二、Xpath 的常用方法(一)节点选取(二)谓词筛选&#xff0…...

Rustdesk 安装客户端以及自己搭建服务器跑通参考资料

Rustdesk 安装客户端以及自己搭建服务器跑通参考资料 下载客户端: rustdesk客户端-github下载地址 windows正常安装就行了,ubuntu安装参考下面: ubuntu安装rustdesk客户端 在centos中利用docker安装rustdesk-server,先进行cento…...

源码编译jdk7 超详细教程 openjdk7

关于源代码 当前的openJDK的源代码已经被发布到了github上了,所以我们可以直接从github上下载到。 OpenJDK7u源码托管地址:https://github.com/openjdk/jdk7u 带后缀U的地址,或者发行的jdk包,表示当前版本下的持续跟新版。而他…...

如何实现日期选择窗口

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了TimePicker Widget相关的内容,本章回中将介绍DatePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的DatePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为日期,它…...

Spring Security 6 系列之一 - 开篇入门

之所以想写这一系列,是因为之前工作过程中使用Spring Security,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级为6.3.0,关键是其风…...

Spring Cloud概述

1. 认识微服务 1.1 单体架构 很多创业公司早期或者传统企业会把业务的所有功能实现都打包在⼀个项⽬, 这就是单体架构. 业务的所有功能实现都打包在⼀个war包或者Jar包中, 这种⽅式就称为单体架构. 举个例子: 电商系统包括: ⽤⼾管理, 商品管理, 订单管理, ⽀付管理, 库存…...

mvc如何给action传递参数

步骤(常规方法) 新建一个控制器--LarsController.cs using Microsoft.AspNetCore.Mvc; namespace Blog.Controller; public class LarsController:Controller -----继承 {public IActionResult Index(){return View();} }获取id // program.cs中默认值是idpublic IAction…...

【银河麒麟高级服务器操作系统】有关dd及cp测试差异的现象分析详解

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn dd现象 使用银河麒麟高级服务器操作系统执行两次…...

视频智能分析平台LiteAIServer未戴安全帽检测算法助力矿山安全:精准监督矿工佩戴安全帽情况

矿山作业环境复杂多变,安全隐患层出不穷。其中,矿工未佩戴安全帽这一行为,看似微不足道,实则潜藏着巨大的安全风险。一旦发生事故,未佩戴安全帽的矿工将极易受到重创,甚至危及生命。因此,确保每…...

整数的四舍五入----->记录每一点进步

我们知道整数类型的变量对小数部分都不感冒,只要是小数都会舍去,都让他舍去了我们还讲个P,所以接下来就是告诉你怎么不让他全都舍去。 先来试想一下如果这个数字是3.4,存到整数型变量里面是不是直接变成了3,那么我要是…...

Linux栈帧

相关寄存器&指令 寄存器 rax(accumulator):return value rbx(base) rcx(count):4st argument rdx(data):3st argument rsi(sour…...

【代码随想录day59】【C++复健】 47. 参加科学大会(dijkstra(堆优化版)精讲 );94. 城市间货物运输 I

前几天有些事情耽搁了,不过好在图论我完全不会,所以偷看代码思路也没有任何的心理负担,做起来反而相对独立思考更快一点点。 47. 参加科学大会(dijkstra(堆优化版)精讲 ) 本来一开始以为这个堆…...

【网络安全】WIFI WPA/WPA2协议:深入解析与实践

WIFI WPA/WPA2协议:深入解析与实践 1. WPA/WPA2 协议 1.1 监听 Wi-Fi 流量 解析 WPA/WPA2 的第一步是监听 Wi-Fi 流量,捕获设备与接入点之间的 4 次握手数据。然而,设备通常不会频繁连接或重新连接,为了加速过程,攻…...

穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集

题目&#xff1a; 两个方法本质就是决策树的画法不同 方法一解析&#xff1a; 代码&#xff1a; class Solution {private List<List<Integer>> ret;//返回结果private List<Integer> path;//记录路径&#xff0c;注意返回现场public List<List<Int…...

试题转excel;word转excel;大风车excel

一、问题描述 一名教师朋友&#xff0c;偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运&#xff0c;几百道题几乎需要一个下午的时间 关键这些事&#xff0c;枯燥无聊费眼睛&#xff0c;实在是看起来就很蠢的工作 就想着做一个工具&#xff0c;可以自动处理…...

Unity NTPComponent应用, 实现一个无后端高效获取网络时间的组件

无后端高效获取网络时间的组件 废话不多说&#xff0c;直接上源码m_NowSerivceTime 一个基于你发行游戏地区的时间偏移&#xff0c; 比如北京时区就是 8, 巴西就是-3&#xff0c;美国就是-5using Newtonsoft.Json; 如果这里报错&#xff0c; 就说明项目没有 NewtonsoftJson插件…...

复合机器人为生产提供精准的建议和决策支持

在现代化生产的浪潮中&#xff0c;智能复合机器人以其卓越的性能和高度智能化特点&#xff0c;正成为保障生产安全与可靠性的重要力量。 智能复合机器人具备精确的感知、判断和决策能力&#xff0c;能够在复杂的生产环境中自主导航、精确操作&#xff0c;避免了人为因素可能导致…...

springboot/ssm二手儿童绘本交易系统Java代码编写web项目闲置书籍源码

springboot/ssm二手儿童绘本交易系统Java代码编写web项目闲置书籍源码 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java package com.controller;import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.Map;import javax.s…...

30. Three.js案例-绘制并渲染圆弧

30. Three.js案例-绘制并渲染圆弧 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它利用 WebGL 技术在浏览器中渲染 3D 图形。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象&#xff…...

类和对象(2)

大家好&#xff0c;今天我们继续来学习类和对象的知识&#xff0c;那么今天我们来看看类的概念和类的定义相关的知识&#xff0c;那么话不多说&#xff0c;我们直接开始。 2.类定义和使用 面向对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机&#xff0c;但是…...

240004基于ssm+maven+mysql+Java的房屋租赁系统的设计与实现

基于ssmmavenmysql的房屋租赁系统的设计与实现 1.项目描述2.运行环境3.项目截图4.源码获取 1.项目描述 该项目在原有的基础上进行了优化&#xff0c;包括新增了注册功能&#xff0c;房屋模糊查询功能&#xff0c;管理员和用户信息管理等功能&#xff0c;以及对网站界面进行了优…...

HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别

在为您的应用程序选择通信协议时&#xff0c;有很多不同的选择。 本文将了解四种流行的解决方案&#xff1a;HTTP、WebSocket、gRPC 和 WebRTC。 我们将通过深入学习其背后原理、最佳用途及其优缺点来探索每个协议。 通信方式在不断改进&#xff1a;变得更快、更方便、更可靠&…...

FlowNex 中的两相建模基础知识

通过 FlowNex 中的两相建模解开高效流体动力学的秘密&#xff0c;彻底改变制造业。 挑战 两相流是指两个不同相&#xff08;通常是液体和气体&#xff09;同时流动&#xff0c;它们具有不同的特性和行为。在制造业中&#xff0c;了解两相流对于优化热交换器、化学反应器和流体…...

Mysql笔记

windows安装记录Windows中Mysql安装-CSDN博客 用到的库 通过网盘分享的文件&#xff1a;atguigudb.sql 链接: https://pan.baidu.com/s/1YfC20c2vK9odn-XRJJwUJw 提取码: utk7 --来自百度网盘超级会员v5的分享 Mysql4中表关联关系 1.1对1,比较少用,因为完全可以一张表,当有…...

docker拉取rabbitmq镜像安装延迟队列插件

我这里使用的是rabbitmq:3.12.0-management版本作为示例 1.拉取rabbitmq镜像 docker pull rabbitmq:3.12.0-management 2.启动rabbitmq docker run -d --namerabbitmq --restartalways -p 5672:5672 -p 15672:15672 rabbitmq:3.12.0-management 在咱们拉取时如果出现连接超时可…...

创建一个谷歌插件项目dome上线流程+源码

创建一个简单的 Chrome 扩展程序&#xff0c;其主要功能是 JSON 格式化。用户可以通过点击扩展图标打开一个弹出窗口&#xff0c;在弹出窗口中输入或粘贴 JSON 数据&#xff0c;然后点击格式化按钮来格式化 JSON 数据 谷歌插件&#xff08;即 Chrome 扩展程序&#xff09;主要设…...

举例说明如何在linux下检测摄像头设备具备的功能

假设摄像头设备文件为/dev/video1 &#xff0c;下面是一个专门用于检测 /dev/video1 设备能力的简化程序。这个程序将打印出设备的所有能力、格式和其他相关信息&#xff0c;以帮助你了解设备支持的功能。 检测 /dev/video1 设备能力的程序 #include <fcntl.h> #includ…...

win10配置子系统Ubuntu子系统(无需通过Windows应用市场)实际操作记录

win10配置子系统Ubuntu子系统&#xff08;无需通过Windows应用市场&#xff09;实际操作记录 参考教程 : win10配置子系统Ubuntu子系统&#xff08;无需通过Windows应用市场&#xff09; - 一佳一 - 博客园 开启虚拟机服务的 以管理员方式运行PowerShell运行命令。 &#xf…...

东北大学《2024年839自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《东北大学839自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题...

5G中的ATG Band

Air to Ground Networks for NR是R18 NR引入的。ATG很多部分和NTN类似中的内容类似。比较明显不同的是&#xff0c;NTN的RF内容有TS 38.101-5单独去讲&#xff0c;而ATG则会和地面网络共用某些band&#xff0c;这部分在38.101-1中有描述。 所以会存在ATG与地面网络之间的相邻信…...

nginx负载均衡配置

目录 一、简介 二、nginx下载 二、nginx配置 四、注意点 (1)/api与/api/的区别 (2)http://gatewayserver与http://gatewayserver/的区别 一、简介 Nginx&#xff08;发音为 "engine-x"&#xff09;是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMA…...

【教学类-83-02】20241214立体书三角嘴2.0——青蛙(扁菱形嘴)

背景需求&#xff1a; 制作小鸡立体贺卡三角嘴&#xff0c;它的嘴是正菱形&#xff08;四条边长度相等&#xff0c;类似正方形&#xff09; 【教学类-83-01】20241215立体书三角嘴1.0——小鸡&#xff08;正菱形嘴&#xff09;-CSDN博客文章浏览阅读744次&#xff0c;点赞22次…...

vscode设置终端代理

转载请标明出处&#xff1a;小帆的帆的博客 设置终端代理 修改项目的.vscode/settings.json {"terminal.integrated.env.windows": {"http_proxy": "http://127.0.0.1:7890","https_proxy": "http://127.0.0.1:7890"}, }…...

【C++】函数计算题解论

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;思路解析3.1 函数的递归定义3.2 边界条件控制3.3 记忆化搜索 &#x1f4af;C实现代码&#x1f4af;添加解释&#x1f4af;小结 &#x1f4af;前言 在…...

Redis篇-21--运维篇3-集群(分片,水平扩展,高可用,集群配置案例,扩展哨兵案例)

1、概述 Redis集群&#xff08;Cluster&#xff09;通过分片&#xff08;sharding&#xff09;实现了水平扩展&#xff0c;允许数据分布在多个节点上&#xff0c;从而提升性能和存储容量。 在Redis集群中&#xff0c;数据被分割成16384个哈希槽&#xff08;hash slots&#x…...

Unity3d场景童话梦幻卡通Q版城镇建筑植物山石3D模型游戏美术素材

注明&#xff1a;网络素材&#xff0c;仅供学习使用&#xff01; https://download.csdn.net/download/elineSea/90017291...

深入理解addEventListener中的第二个参数:listener

起因 首先&#xff0c;之前留给我们的一点东西&#xff0c;js的深入内容关键在addEventListener&#xff0c;这个函数中的参数&#xff0c;它们三个参数&#xff0c;分别为type、listener、options&#xff0c;当然在这里还有一些小的问题&#xff0c;比如mdn文档中它介绍到了另…...

数据库镜像(Database Mirroring):高可用性与灾难恢复技术

一、引言 在现代信息系统中&#xff0c;数据的可用性和完整性至关重要&#xff0c;尤其是对金融、电商、医疗等高并发和高可靠性要求的行业。数据库镜像&#xff08;Database Mirroring&#xff09; 作为一种高可用性与灾难恢复技术&#xff0c;通过将主数据库的数据实时复制到…...

【Qt】按钮类控件:QPushButton、QRadioButton、QCheckBox、ToolButton

目录 QPushButton 例子&#xff1a; QRadioButton 例子&#xff1a; 按钮的常见信号函数 单选按钮分组 例子&#xff1a; QCheckButton 例子&#xff1a; QToolButton QWidget的常见属性及其功能对于它的派生类控件都是有效的(也就是Qt中的各种控件)&#xff0c;包括…...

day-21 内核链表以及栈

1.昨日作业 1.删除指定节点 找到删除就完事了&#xff0c;双向可以停在删除处。 /***************************** 功能&#xff1a;删除指定结点&#xff08;通过姓名&#xff09;* 参数&#xff1a;phead&#xff1b;oldname; * 返回&#xff1a;成功0&#xff0c;失-1&…...

深度与视差的关系及其转换

深度与视差的关系及其转换 在计算机视觉和立体视觉中&#xff0c;深度和视差是两个重要的概念。理解这两者之间的关系对于实现立体图像处理、三维重建以及深度估计至关重要。在这篇博客中&#xff0c;我们将深入探讨深度和视差的概念&#xff0c;并介绍它们之间的转换关系。 …...

Unity全局光照详解

之前就学过但是太久没用又忘了&#xff0c;因此用最简洁易懂的语言做个记录。 全局光照分为两个系统&#xff0c;分别是实时光照和混合光照。&#xff08;点击window/Rendering/Lighing打开此面板&#xff09; 其中全局光照对于我来说都是新技术了&#xff0c;上一次学…...

外观模式的理解和实践

外观模式&#xff08;Facade Pattern&#xff09;是一种常用的软件设计模式&#xff0c;它提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口。该模式定义了一个高层的接口&#xff0c;使得子系统更容易使用。简单来说&#xff0c;外观模式就是通过引入一个外观角色…...

【前端知识】Javascript进阶-类和继承

文章目录 概述一、类&#xff08;Class&#xff09;二、继承&#xff08;Inheritance&#xff09; 三、继承的实现方式作用一、类和作用二、继承和作用 概述 当然可以&#xff0c;以下是对JavaScript中类和继承的详细介绍&#xff1a; 一、类&#xff08;Class&#xff09; 定…...

Kylin麒麟操作系统 | Nginx服务部署

目录 一、理论储备1. Nginx概述2. Nginx与Apache的区别3. Nginx的服务配置 二、任务实施任务1 Nginx的编译安装1. Server配置2. 客户端测试 任务2 Nginx反向代理1. Server1配置2. Server2配置3. 客户端测试 一、理论储备 1. Nginx概述 Nginx是一个轻量级的web服务器&#xff…...

51单片机--- 串口控制仿真

51单片机--- 串口控制仿真 实验目标:51单片机接收串口数据,根据数据点亮LED。 实验步骤: 在Proteus里画出原理图 在Keil里用C语言编写程序 在Proteus中导入HEX文件,启动仿真 实验协议: 波特率115200 数据位:8位,停止位:1位,校验位:无。 命令格式: 一条命令为…...

<数据集>输电线塔杂物识别数据集<目标检测>

数据集下载链接 &#xff1c;数据集&#xff1e;输电线塔杂物识别数据集&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90141102数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1099张 标注数量(xml文件个数)&#xff1a;1099 …...

HarmonyOS学习 --- Mac电脑获取手机UDID

一&#xff0c;手机打开开发者选项 1&#xff0c;打开“设置 > 关于本机”&#xff0c;连续点击7次版本号&#xff0c;打开开发者选项。 2&#xff0c;打开“USB调试”。 二&#xff0c;配置环境变量 获取OpenHarmony SDK 安装路径 /Users/admin/Library/OpenHarmony/Sdk/10…...

OpenIPC开源FPV之Adaptive-Link地面站代码解析

OpenIPC开源FPV之Adaptive-Link地面站代码解析 1. 源由2. 框架代码3. 软件配置3.1 默认配置3.2 加载配置3.3 更新配置 4. 通信例程4.1 TCP报文解析4.2 UDP报文发送 5. 特殊指令5.1 request_keyframe5.2 drop_gop5.3 resume_adaptive5.4 pause_adaptive 6. 总结7. 参考资料 1. 源…...