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

[操作系统] 深入理解约翰·冯·诺伊曼体系

约翰·冯诺依曼(John von Neumann,1903年12月28日—1957年2月8日),原名诺伊曼·亚诺什·拉约什(Neumann János Lajos),出生于匈牙利的美国籍犹太人数学家,20世纪最重要的数学家之一,在现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“计算机之父”和“博弈论之父”。设计了世界上第一台通用计算机:电子数字积分计算机(The Electronic Numerical Integrator and Computer)——简称“埃尼阿克”。受“图灵机”的影响提出冯诺依曼体系结构。

冯诺依曼体系(Von Neumann Architecture)是现代计算机设计的基石。无论是笔记本电脑、手机还是服务器,大多数计算机都遵循这一体系结构。本文将从冯诺依曼体系的基本概念出发,结合实际案例,深入剖析它在实际数据流中的应用。


什么是冯诺依曼体系?

冯诺依曼体系的核心思想是将存储器作为中央组件,所有数据的输入、输出、处理都围绕存储器进行。本质就是将数据进行拷贝,从一个节点拷贝到另一个节点然后进行处理,而拷贝的输入输出设备之间的拷贝效率会影响这个计算机的运行效率,所以说实际上计算机的性能就是各个节点之间的输入输出效率。而IO(input,output)需要站在内存(存储器)的角度进行理解,下文会做出解答。

冯诺依曼体系组成部分

  • 输入单元(输入设备):如键盘、鼠标、触摸屏等,将数据传入存储器。
  • 中央处理器(CPU):包括运算器控制器,用于从内存中读取数据和指令并执行。
  • 存储单元(存储器):即内存,用于存储当前正在处理的数据和指令。
  • 输出单元(输出设备):如显示器、打印机等,用于从存储器中读取数据并展示或输出。

内存是中心枢纽

在冯诺依曼体系中,内存是整个计算机体系结构的核心组件,所有计算和数据交互都以内存为中心:

  • CPU只能直接访问内存:冯诺依曼体系的一个基本原则是,CPU只能对内存进行读写,无法直接访问输入输出设备。这使得内存成为数据处理的中转站。
  • 输入设备和输出设备无法直接通信:所有输入数据(例如键盘输入)必须先写入内存,然后由CPU读取并处理;同样,所有输出数据(例如屏幕显示)也必须先写入内存,再由输出设备读取。
为什么内存是中心?
  1. 统一管理:通过内存,所有设备都可以遵循统一的读写规则,不需要设备之间直接交互的复杂逻辑。
  2. 存储指令与数据:内存既存储程序指令,也存储需要处理的数据。CPU可以从内存中同时读取指令和数据进行操作,这种统一的存储模型极大简化了硬件设计。

CPU与内存的关系

CPU只能直接访问内存,无法直接与外设通信。执行指令时,CPU需要从内存中取出指令(Fetch)、解码(Decode)、执行(Execute),这就是所谓的指令周期。

外设与内存的关系

外设(输入和输出设备)不能直接与CPU通信,只能通过内存中转。比如,键盘输入的数据会先存储到内存中,CPU随后读取内存处理这些数据。


为什么不直接CPU相通输入输出设备?

硬盘、内存和CPU的IO效率如下图类比所示,逐个递增。

我们在使用计算机的时候,软件存放于磁盘中,当我们要使用该软件的时候软件就会加载到内存中,然后再与CPU交互,得到的信息通过输出设备(显示屏)刷新显示信息。既然CPU效率更高,我们为什么不直接将输入输出设备与CPU相通呢?

直接让CPU与输入输出设备(I/O设备)通信在理论上是可行的,但实际上会引发诸多问题,从设计复杂性、性能效率到可扩展性等方面都会遇到重大挑战。以下是为什么在冯诺依曼体系中,CPU不能直接与输入输出设备通信,而是通过内存中转的核心原因:

设备种类多样性,接口复杂化

现代计算机中有大量不同种类的I/O设备,例如键盘、鼠标、显示器、硬盘、打印机、网络适配器等,这些设备具有各自的通信协议、数据格式和操作方式:

  • 通信协议差异:每种设备的通信方式(串行、并行等)和速率差别很大。
  • 数据格式差异:设备处理的数据类型不同(键盘是按键事件,硬盘是块数据,网络是分组数据)。
  • 如果CPU需要直接与每种设备通信,CPU必须内置支持所有这些协议和格式的逻辑。这不仅会大幅增加CPU的复杂性,还会导致硬件接口的维护和升级困难。

解决方案:通过内存间接通信

  • 引入内存后,设备之间通过统一的数据格式存储到内存中,CPU只需要按照内存中的数据结构处理即可,无需关心设备本身的差异。
  • 外设驱动程序(由操作系统提供)负责将不同设备的数据格式转换为CPU可以理解的格式。

速度差异:CPU和I/O设备工作速度不匹配

CPU的速度远远高于大多数I/O设备,例如:

  • CPU的指令执行速度可以达到每秒数十亿次,而硬盘读写速度可能只有数百MB/s,打印机的输出速度甚至更慢。
  • 如果CPU直接等待设备完成数据传输,CPU大部分时间将被闲置,浪费了巨大的性能。

这就是木桶效应。

解决方案:通过内存和缓冲机制解耦

  • 输入设备可以将数据缓存在内存中,CPU按需读取并处理,而不需要实时等待设备完成操作。
  • 输出设备可以从内存中按需读取数据,CPU在完成数据准备后即可转移到其他任务上,提高了系统的整体效率。

举例:以打印机为例:

  1. 直接通信的挑战
    • 如果CPU需要直接将打印内容发送到打印机,则需要等待打印机完成每一行打印。
    • 打印机速度慢,CPU大部分时间会被浪费在等待中。
  2. 通过内存和缓冲解决
    • CPU将需要打印的内容写入内存缓冲区,然后通知打印机。
    • 打印机从缓冲区读取数据并逐步打印,而CPU可以继续执行其他任务。

多任务环境下的资源共享

现代计算机通常运行多个任务,这些任务可能需要同时访问不同的设备。如果CPU直接与设备通信,会导致:

  • 资源冲突:多个任务竞争同一设备可能导致数据错乱或死锁。
  • 缺乏灵活性:任务间无法有效协调设备的使用。

解决方案:通过内存和操作系统管理I/O

  • 内存作为设备与任务之间的中转站,任务将数据写入内存或从内存读取数据,而设备也只与内存交互,避免了任务直接争夺设备资源。
  • 操作系统负责调度设备的访问权限,确保任务之间的协调和安全。

硬件设计复杂性

如果CPU直接与每种I/O设备通信,会导致以下硬件设计上的问题:

  • 多种接口的兼容性问题:CPU必须支持所有设备的物理接口和协议,导致CPU硬件复杂度急剧增加。
  • 难以扩展:引入新设备时,必须修改CPU设计以支持新设备的协议或接口,这会大幅增加设计成本。

解决方案:模块化设计

  • 将I/O设备与CPU解耦,通过内存和I/O控制器(如键盘控制器、磁盘控制器、网卡等)进行通信。
  • CPU通过内存访问统一的设备接口,硬件设计更加模块化,设备的扩展也更加容易。

软件与硬件分离的灵活性

如果CPU直接与设备通信,很多操作都需要通过硬件实现,缺乏灵活性。

  • 硬件实现的功能固定,无法随着需求的变化而灵活调整。
  • 调试和更新硬件协议非常困难。

解决方案:软件驱动程序和内存结合

  • 通过操作系统提供的驱动程序,I/O设备的复杂操作被抽象成统一的接口,CPU只需与内存交互即可。
  • 驱动程序可以通过更新来支持新功能,而无需修改硬件。

数据流动的一致性和清晰性

冯诺依曼体系规定,所有数据必须通过内存中转。这种设计的好处是:

  • 数据流动的统一性:无论是CPU之间的交互,还是设备与CPU之间的交互,所有数据都通过内存传递,数据流动过程清晰可控。
  • 操作的标准化:CPU只需要支持对内存的读写,而不需要知道数据的来源(输入设备)或去向(输出设备),简化了数据处理逻辑。

中断机制的优化

直接通信的另一个问题是,CPU需要轮询(Polling)设备的状态,判断设备是否需要服务。这种方式效率低下,因为CPU需要花费大量时间等待设备准备好。

  • 通过内存配合中断机制
    • I/O设备将数据写入内存后,可以发送中断信号通知CPU。
    • CPU被中断后,读取内存中的数据进行处理。
    • 中断机制避免了CPU轮询设备状态的低效操作,使得CPU可以将资源集中于其他任务。

总结:CPU为何不直接与I/O设备通信?

冯诺依曼体系设计让内存成为数据交互的中枢,其原因包括:

  1. 统一接口:通过内存,CPU只需要支持一种通信模式,避免处理多种设备协议。
  2. 解耦速度差异:缓冲机制减少了CPU因设备慢速而浪费的时间。
  3. 简化硬件设计:设备扩展时无需修改CPU设计,支持更多设备更加灵活。
  4. 提高资源管理效率:操作系统通过内存实现设备共享和调度,提高系统的整体性能。
  5. 降低复杂性:让I/O设备的复杂性由内存和操作系统管理,而不是直接暴露给CPU。

通过这种设计,计算机实现了高效率、模块化、易扩展的系统架构,这也是冯诺依曼体系的伟大之处。

并且如果使用CPU的话,不仅仅效率逐渐增加,价格也逐渐增加,越靠近CPU价格越高,如果程序过大直接加载到CPU的设计会非常昂贵,通过内存的设计,使得计算机成为高性价比的机器,使计算机走进千家万户。

实际案例:登录QQ并与朋友聊天的数据流

为了更好地理解冯诺依曼体系,我们以一个实际应用为例,分析数据在体系中的流动过程。

场景一:登录QQ并发送聊天消息

1. 用户输入账号和密码
  • 用户通过键盘输入账号和密码。
    • 键盘作为输入设备,将数据通过输入单元传递给内存。
    • 数据被写入到内存的指定区域,等待CPU处理。
2. CPU处理登录信息
  • CPU从内存中读取账号和密码,执行一系列指令来验证登录。
    • 登录验证逻辑由程序提供的指令控制,CPU按照指令顺序从内存中取指令并执行。
    • 验证过程可能涉及:
      • 加密密码(如MD5/SHA哈希)。
      • 比较用户输入的账号与数据库记录。
      • 验证结果会写回内存。
3. 登录成功,加载聊天界面
  • 当验证成功后,系统会加载聊天窗口的界面数据。
    • CPU从内存中读取聊天界面模板和用户信息,并生成实际显示的内容。
    • 显示器作为输出设备,从内存读取生成的界面数据,并展示给用户。
4. 发送聊天消息
  • 用户在聊天窗口输入文字消息。
    • 键盘输入数据进入内存。
    • CPU读取输入的文字,并调用网络模块指令,将消息发送到服务器。
    • 发送消息的实际数据通过网络接口卡(网卡)写入内存后,由网络协议栈处理并发送。
5. 对方接收消息
  • 对方的计算机通过网络接收到消息。
    • 数据先写入对方计算机的内存。
    • CPU读取内存中的消息,按照指令将消息处理后传递给输出设备(如屏幕)显示。

场景二:在QQ上发送文件

发送文件的过程与发送消息类似,但涉及数据量更大,流动过程如下:

1. 用户选择文件
  • 用户通过操作系统的文件管理器选择文件。
    • 文件的元信息(如路径、大小等)通过输入设备(如鼠标)写入内存。
    • CPU读取内存中的文件信息,并调用程序指令(如打开文件)获取文件内容。
2. 文件内容加载到内存
  • 操作系统从硬盘中读取文件数据,写入内存。
    • 文件数据分块读取,操作系统通过文件系统管理硬件与内存的交互。
    • CPU控制整个过程,确保数据块正确加载。
3. 文件传输到网络设备
  • CPU将内存中的文件数据传递给网络设备(如网卡),通过网络协议发送到服务器或对方计算机。
    • 文件数据经过分片和打包(如TCP/IP协议处理),数据块通过网卡输出。
4. 对方接收并保存文件
  • 文件数据通过网络传输到对方计算机。
    • 数据写入对方内存,CPU控制文件的重组和存储。
    • 最终文件保存到硬盘中,等待用户查看。

冯诺依曼体系在现代计算机中的意义

尽管冯诺依曼体系自提出以来已经经历了几十年的发展,但其核心思想依然是现代计算机的基础。以下是其实际意义:

1. 统一的存储模型

数据与指令的统一存储简化了计算机的设计,使得程序可以动态加载和修改。

2. 模块化设计

冯诺依曼体系的模块化思路(输入、处理、存储、输出)奠定了现代计算机的设计规范,便于扩展和维护。

3. 软硬件分离

CPU仅通过内存与外设通信,实现了硬件与软件的分离,操作系统和应用程序可以独立开发。

4. 将价格打下来!

不需要昂贵的更大规格的CPU即可实现高性能,使计算机走进千家万户。


总结

冯诺依曼体系的核心是通过存储器将输入、处理和输出串联起来,形成数据的统一流动模式。在现代计算机中,这一架构通过操作系统的调度和优化,以及硬件设备的协同工作,推动了复杂功能的实现。无论是简单的聊天消息还是大文件的传输,数据流的本质仍然符合冯诺依曼的设计思想——所有设备都通过存储器间接与CPU交互,统一管理数据流动

从历史到现在,冯诺依曼体系始终是计算机技术发展的基石,它的影响无处不在,也是我们理解现代计算机的基础。以上就是关于操作系统入门学习中对冯诺依曼体系的讲解。

相关文章:

[操作系统] 深入理解约翰·冯·诺伊曼体系

约翰冯诺依曼(John von Neumann,1903年12月28日—1957年2月8日),原名诺伊曼亚诺什拉约什(Neumann Jnos Lajos),出生于匈牙利的美国籍犹太人数学家,20世纪最重要的数学家之一&#xf…...

计算机网络(五)运输层

5.1、运输层概述 概念 进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时…...

网络分析仪测试S参数

S参数的测试 一:S参数的定义 S参数(Scattering Parameters,散射参数)是一个表征器件在射频信号激励下的电气行为的工具,它以输入信号、输出信号为元素的矩阵来表现DUT的“传输”和“散射”效应,输入、输出…...

什么是数据仓库?

什么是数据仓库? 数据仓库(Data Warehouse,简称DW)是一种面向分析和决策的数据存储系统,它将企业中分散的、异构的数据按照一定的主题和模型进行集成和存储,为数据分析、报表生成以及商业智能(…...

.NET8.0多线程编码结合异步编码示例

1、创建一个.NET8.0控制台项目来演示多线程的应用 2、快速创建一个线程 3、多次运行程序,可以得到输出结果 这就是多线程的特点 - 当多个线程并行执行时,它们的具体执行顺序是不确定的,除非我们使用同步机制(如 lock、信号量等&am…...

使用 Charles 调试 Flutter 应用中的 Dio 网络请求

为了成功使用 Charles 抓取并调试 Flutter 应用程序通过 Dio 发起的网络请求,需遵循特定配置步骤来确保应用程序能够识别 Charles 的 SSL 证书,并正确设置代理服务器。 配置 Charles 以支持 HTTPS 请求捕获 Charles 默认会拦截 HTTP 流量;…...

老centos7 升级docker.io为docker-ce 脚本

旧的centos7 之前安装的是docker.io 由于一些原因,像docker compose 等版本变化,以及docker.io源受限等,我们要更新到docker-ce 并使用国内阿里云的源怎么处理?下面直接上脚本,upgrade-docker.sh #!/bin/bashset -e# 创建临时目录 TEMP_DIR"./tmp" mkdir -p "…...

Go Ebiten小游戏开发:贪吃蛇

贪吃蛇是一款经典的小游戏,玩法简单却充满乐趣。本文将介绍如何使用 Go 语言和 Ebiten 游戏引擎开发一个简单的贪吃蛇游戏。通过这个项目,你可以学习到游戏开发的基本流程、Ebiten 的使用方法以及如何用 Go 实现游戏逻辑。 项目简介 贪吃蛇的核心玩法是…...

c语言----------内存管理

内存管理 目录 一。作用域1.1 局部变量1.2 静态(static)局部变量1.3 全局变量1.4 静态(static)全局变量1.5 extern全局变量声明1.6 全局函数和静态函数1.7 总结 二。内存布局2.1 内存分区2.2 存储类型总结2.3内存操作函数1) memset()2) memcpy()3) memmove()4) memcmp() 2.4 堆…...

在一个sql select中作多个sum并分组

有表如下; 单独的对某一个列作sum并分组,结果如下; 对于表的第7、8行,num1都有值,num2都是null,对num2列作sum、按id分组,结果在id为4的行会显示一个null; 同时对2个列作sum&#x…...

如何修复Android上未安装的应用程序

在Android设备上安装应用程序通常是一个简单的过程。然而,“ Android上未安装应用程序”是一种常见的智能手机错误消息,由于一个或多个原因而经常遇到。发现由于即将出现故障而无法充分利用手机,这当然会非常令人沮丧,但幸运的是&…...

#CSS混合模式:解决渐变背景下的文字可见性问题

在现代网页设计中,渐变背景的使用越来越普遍。然而,当我们在渐变背景上放置文字时,常常会遇到一个问题:文字在某些背景颜色下可能变得难以阅读。今天,我们将探讨一个优雅的解决方案:使用CSS混合模式。 问题…...

微信小程序原生与 H5 交互方式

在微信小程序中,原生与 H5 页面(即 WebView 页面)之间的交互通常有以下几种方式: 1. 使用 postMessage 进行通信 微信小程序的 WebView 页面和原生小程序页面可以通过 postMessage 来进行数据传递。 WebView 页面向原生小程序发…...

kotlin中的flow使用,Flow跟生命周期结合

kotlin的Flow可以连续异步发出多个数据。 1. 普通flow,冷流类似于一个函数,当开始收集时才开始运行 val coldStream flow {for (i in 1..5) {delay(100L)emit(i)}} val collect1 buildString {coldStream.collect { append(it).append(", ") } }.remo…...

讲一下ZooKeeper的持久化机制?

大家好,我是锋哥。今天分享关于【讲一下ZooKeeper的持久化机制?】面试题。希望对大家有帮助; 讲一下ZooKeeper的持久化机制? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ZooKeeper 是一个开源的分布式协调服务&…...

mybatis里面实现动态升降序

问题 最近有一个需求&#xff0c;需要前端告诉后端按照某个字段进行排序。这里主要侧重mybatis的xml实现&#xff0c;其他Spring集成就忽略了。 mapper xml实现 <if test"sortField ! null and sortField ! ">ORDER BY<choose><when test"sor…...

探索网络安全:浅析文件上传漏洞

前言 在数字化时代&#xff0c;网络安全已成为我们每个人都需要关注的重要议题。无论是个人隐私保护&#xff0c;还是企业数据安全&#xff0c;网络威胁无处不在。了解网络安全的基本知识和防护措施&#xff0c;对我们每个人来说都至关重要。 网络安全 网络安全并非只是对网…...

【C++】B2112 石头剪子布

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述游戏规则&#xff1a;输入格式&#xff1a;输出格式&#xff1a;输入输出样例&#xff1a;解题分析与实现 &#x1f4af;我的做法实现逻辑优点与不足 &#x1f4af…...

java根据模板导出word,并在word中插入echarts相关统计图片以及表格

引入依赖创建word模板创建ftl模板文件保存的ftl可能会出现占位符分割的问题&#xff0c;需要处理将ftl文件中的图片的Base64删除&#xff0c;并使用占位符代替插入表格&#xff0c;并指定表格的位置在图片下方 Echarts转图片根据模板生成word文档DocUtil导出word文档 生成的wor…...

Linux网络知识——路由表

路由表 1 定义与作用 Linux路由表是一个内核数据结构&#xff0c;用于描述Linux主机与其他网络设备之间的路径&#xff0c;以及如何将数据包从源地址路由到目标地址。路由表的主要作用是指导数据包在网络中的传输路径&#xff0c;确保数据包能够准确、高效地到达目标地址。 …...

ImageSharp图形库学习

一、引言 在当今数字化时代&#xff0c;无论是 Web 应用、桌面程序&#xff0c;还是移动应用&#xff0c;图像处理都扮演着至关重要的角色。从电商平台展示商品图片&#xff0c;到社交媒体分享照片&#xff0c;再到各种软件的图标设计&#xff0c;图像处理无处不在。博主们在内…...

Android string.xml中特殊字符转义

项目中要在string.xml 中显示特殊符号 空格&#xff1a; &#xff08;普通的英文半角空格但不换行&#xff09; 窄空格&#xff1a;  &#xff08;中文全角空格 &#xff08;一个中文宽度&#xff09;&#xff09; &#xff08;半个中文宽度&#xff0c;但两个空格比一个中文…...

Rust 游戏开发框架指南

Rust 游戏开发框架指南 主流游戏引擎 1. Bevy 最受欢迎的 Rust 游戏引擎之一&#xff0c;基于 ECS&#xff08;实体组件系统&#xff09;架构。 特点&#xff1a; &#x1f680; 高性能 ECS 系统&#x1f4e6; 热重载支持&#x1f3a8; 现代渲染器&#x1f50a; 内置音频系…...

SpringBoot3+Vue3开发台球计时系统

项目介绍 台球计时系统可以帮助我们自动计算开台时间&#xff08;从开始到结束的时间段&#xff09;、自动计算开台费用、结账后生成订单记录进行留存、也可以导出订单记录。 主要功能包含&#xff1a;球桌管理、开台、结账、查看占用明细、查看球台订单、订单管理、查看订单…...

基于springboot的租房网站系统

作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 项目包含&#xff1a; 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…...

静态综合路由实验

实验拓扑 实验要求 1.除R5的环回地址外&#xff0c;整个其他所有网段基于192.168.1.0/24进行合理的IP地址划分 2.R1-R4每个路由器存在两个环回接口&#xff0c;用于模拟pc网段&#xff1b;地址也在192.168.1.0/24这个网络范围内 3.R1-R4上不能直接编写到达5.5.5.0/24的静态路由…...

国产编辑器EverEdit - 扩展脚本:新建同类型文件(避免编程学习者反复新建保存练习文件)

1 扩展脚本&#xff1a;在当前文件目录下新建同类型文件 1.1 应用场景 用户在进行编程语言学习时&#xff0c;比如&#xff1a;Python&#xff0c;经常做完一个小练习后&#xff0c;又需要新建一个文件&#xff0c;在新建文件的时候&#xff0c;不但要选择文件类型&#xff0c…...

Ubuntu Server 24.04 配置静态IP

Ubuntu Server 24.04 配置静态IP 提示&#xff1a;基于Ubuntu Server 24.04进行配置 文章目录 Ubuntu Server 24.04 配置静态IP一、查看网卡信息二、修改网卡信息三、使网卡配置生效四、测试 一、查看网卡信息 使用命令 ip a lo 为本地回环地址 ens33 真实网卡地址 shanfengubu…...

​​​​​​​​​​​​​​★3.3 事件处理

★3.3.1 ※MouseArea Item <-- MouseArea 属性 acceptedButtons : Qt::MouseButtons containsMouse : bool 【书】只读属性。表明当前鼠标光标是否在MouseArea上&#xff0c;默认只有鼠标的一个按钮处于按下状态时才可以被检测到。 containsPress : bool curs…...

linux系统监视(centos 7)

一.系统监视 1.安装iostat&#xff0c;sar&#xff0c;sysstat&#xff08;默认没有&#xff0c;安装过可以跳跃&#xff09; iostat 和 sar&#xff1a; 同样&#xff0c;iostat 和 sar 是 sysstat 软件包的一部分。使用以下命令安装&#xff1a;sudo yum install sysstat解释…...

Java面试总结(1)

问题1 自我介绍&#xff1a; 面试官您好&#xff0c;我叫xxx&#xff0c;是来自xxxx大学软件工程专业的一名应届生&#xff0c;我这次想应聘的是java开发实习生&#xff0c;在校期间&#xff0c;我热爱编程&#xff0c;能够使用java&#xff0c;C,python的编程语言&#xff0c…...

晨辉面试抽签和评分管理系统之六:面试答题倒计时

晨辉面试抽签和评分管理系统&#xff08;下载地址:www.chenhuisoft.cn&#xff09;是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…...

关于H5复制ios没有效果

问题场景&#xff1a;今天遇到这样一个问题&#xff0c;需要从后端接口获取到的值进行复制&#xff0c;且不能提现调用获取值&#xff0c;因为是一个数据列表&#xff0c;每个列表元素需要当场点击调用接口获取值进行复制&#xff0c;本来以为很简单的一个需求&#xff0c;当做…...

Windows 蓝牙驱动开发-安装蓝牙设备

蓝牙配置文件驱动程序有两种安装类型&#xff1a; 客户端安装&#xff0c;在此类安装中&#xff0c;远程设备播发其服务&#xff0c;并且计算机与之连接。 示例包括&#xff1a;鼠标、键盘和打印机&#xff1b;服务器端安装&#xff0c;在此类安装中&#xff0c;计算机播发服务…...

你喜欢用什么编辑器?

电脑工作者和程序员所使用的文本编辑器通常需要具备高效率、易用性以及对代码友好等特点&#xff0c;包括语法高亮、自动完成、多文件同时编辑、查找替换、版本控制集成等功能。以下是几个广受开发者欢迎且实用性较强的文本编辑器&#xff1a; Visual Studio Code&#xff08;V…...

32_Redis分片集群原理

1.Redis集群分片 1.1 Redis集群分片介绍 Redis集群没有使用一致性hash,而是引入了哈希槽的概念。Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽。 用于将密钥映射到散列插槽的基本算法如下: HASH_SLOT = CRC16(key) mod 16384 集群的每…...

小米vela系统(基于开源nuttx内核)——openvela开源项目

前言 在 2024 年 12 月 27 日的小米「人车家全生态」合作伙伴大会上&#xff0c;小米宣布全面开源 Vela 操作系统。同时&#xff0c;OpenVela 项目正式上线 GitHub 和 Gitee&#xff0c;采用的是比较宽松的 Apache 2.0 协议&#xff0c;这意味着全球的开发者都可以参与到 Vela…...

【STM32-学习笔记-7-】USART串口通信

文章目录 USART串口通信Ⅰ、硬件电路Ⅱ、常见的电平标准Ⅲ、串口参数及时序Ⅳ、STM32的USART简介数据帧起始位侦测数据采样波特率发生器 Ⅴ、USART函数介绍Ⅵ、USART_InitTypeDef结构体参数1、USART_BaudRate2、USART_WordLength3、USART_StopBits4、USART_Parity5、USART_Mode…...

实现类似Excel的筛选

以下是在 DataGridView 中实现类似 Excel 下拉筛选功能的解决方案&#xff1a; 解决思路 为 DataGridView 的列添加 DataGridViewComboBoxColumn 类型的列&#xff0c;用于显示下拉筛选列表。为 DataGridView 的 ColumnHeaderMouseClick 事件添加处理程序&#xff0c;当用户点…...

【Rust】结构体定义域实例化

目录 思维导图 1. 结构体的定义与实例化 1.1 结构体的基本概念 1.2 定义结构体 1.3 创建结构体实例 1.4 结构体的定义与实例化示例 2. 访问与修改结构体字段 2.1 访问字段 2.2 修改字段 3. 结构体实例的构造函数 3.1 构造函数的定义 3.2 使用字段初始化简写 4. 结…...

VB.NET 正则表达式完全指南

VB.NET 正则表达式完全指南 VB.NET通过 System.Text.RegularExpressions 命名空间提供正则表达式支持。本指南将详细介绍VB.NET中正则表达式的使用方法、性能优化和最佳实践。 1. 基础知识 1.1 导入命名空间 Imports System.Text.RegularExpressions1.2 基本使用 Public C…...

ASP.NET Core - 配置系统之自定义配置提供程序

ASP.NET Core - 配置系统之自定义配置提供程序 4. 自定义配置提供程序IConfigurationSourceIConfigurationProvider 4. 自定义配置提供程序 在 .NET Core 配置系统中封装一个配置提供程序关键在于提供相应的 IconfigurationSource 实现和 IConfigurationProvider 接口实现&…...

大语言模型的稀疏性:提升效率与性能的新方向

大语言模型的稀疏性&#xff1a;提升效率与性能的新方向 大语言模型&#xff08;LLM, Large Language Model&#xff09;随着参数规模的不断扩大&#xff0c;其性能得到了显著提升&#xff0c;但也带来了巨大的计算和存储开销。稀疏性&#xff08;Sparsity&#xff09;作为一种…...

迅为RK3568开发板篇OpenHarmony配置HDF驱动控制LED-新增 topeet子系统-编写 bundle.json文件

bundle.json 文件内容如下所示&#xff1a; 下面是对各个字段的解释&#xff1a; 1. name: "ohos/demos" - 这是组件或项目的名称&#xff0c;这里表示它属于 OHOS&#xff08;OpenHarmony OS&#xff09;生态系统下的一个名为"demos"的组件。 2. descri…...

vulnhub靶场【IA系列】之Tornado

前言 靶机&#xff1a;IA-Tornado&#xff0c;IP地址为192.168.10.11 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.2 都采用虚拟机&#xff0c;网卡为桥接模式 本文所用靶场、kali镜像以及相关工具&#xff0c;我放置在网盘中&#xff0c;可以复制后面链接查看 htt…...

GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求

背景 GB 44495-2024《汽车整车信息安全技术要求》中关于V2X&#xff08;车与外界通信&#xff09;的部分&#xff0c;主要关注于通信安全要求&#xff0c;旨在确保车辆在与外部设备进行数据交互时的信息安全。其测试大致可分为消息层&#xff08;数据无异常&#xff09;、应用…...

基于mediapipe的手势游戏控制

基于mediapipe的手势游戏控制 ​ 玩游戏&#xff0c;那不是有手就行!!! mediapipe介绍 ​ Mediapipe是Google在2019年开发并提出的一款开源的跨平台多媒体处理框架&#xff0c;用于构建基于机器学习的应用程序&#xff0c;特别是涉及到计算机视觉、音频处理、姿势估计等领域。…...

K8S 节点选择器

今天我们来实验 pod 调度的 nodeName 与 nodeSelector。官网描述如下&#xff1a; 假设有如下三个节点的 K8S 集群&#xff1a; k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、镜像准备 1.1、镜像拉取 docker pull tomcat:8.5-jre8…...

IEC103 转 ModbusTCP 网关

一、产品概述 IEC103 转 ModbusTCP 网关型号 SG-TCP-IEC103 &#xff0c;是三格电子推出的工业级网关&#xff08;以下简 称网关&#xff09;&#xff0c;主要用于 IEC103 数据采集、 DLT645-1997/2007 数据采集&#xff0c; IEC103 支持遥测和遥 信&#xff0c;可接…...

docker swarm 部署问题 和 指定节点部署服务

问题原因&#xff1a; docker swarm 部署遇到的问题&#xff0c; 先前docker compose部署&#xff0c;分别创建了 cloud 网络&#xff1b; 昨进行swarm 集群部署&#xff1b;只是删了57 机器cloud 网络&#xff1b;在创建swarm集群后创建cloud 58机器 没有删除先前的cloud 网络…...