Linux冯诺依曼体系与计算机系统架构认知(8)
文章目录
- 前言
- 一、冯诺依曼体系
- 冯•诺依曼体系结构推导
- 内存提高冯•诺依曼体系结构效率的方法
- 你用QQ和朋友聊天时数据的流动过程
- 与冯•诺依曼体系结构相关的一些知识
- 二、计算机层次结构分析
- 操作系统(Operator System)
- 驱动层的作用与意义
- 系统调用接口(system call)
- 用户操作接口
- 三、操作系统管理
- 管理者决策被管理者
- 如何得到被管理者数据
- 库函数与系统调用的关系
- 总结
前言
冯诺依曼体系是现代计算机设计的基石,其统一存储和顺序执行理念推动了计算机的发展。结合操作系统、驱动层和系统调用的优化设计,计算机实现了高效的软硬件协作。
其实我这个Linux专栏,表面上只是讲了操作系统,其实未来我还会穿插 计算机网络、数据结构与算法、数据库原理等“四大件内容”
计算机的一切都是如此脉络交织,美妙无比,事实上,在我学习Linux的途中,很多知识点会有一种豁然开朗的感觉,有时候也很幸运自己选了一个对我来说这么完美的专业,我爱她,倾注了我巨大的热情,也希望她能不辜负我,hhhhh
一、冯诺依曼体系
我们今天所有的计算机都离不开 冯诺依曼 体系,这位伟大的计算机科学家早在二十世纪四十年代就提出了这种结构,即计算机应由五部分组成:输入设备、存储器、运算器、控制器、输出设备
冯•诺依曼体系结构推导
计算机的作用就是为了解决人的问题,而要解决问题,首先需要将数据或是问题输入到计算机当中,所以计算机必须要有输入设备。计算机解决完问题后还需要将计算结果输出显示出来,所以计算机必须要有输出设备。计算机通过输入设备得到数据,数据在计算机当中进行一系列的算术运算和逻辑运算后,通过输出设备进行输出,于是就得到了以下流程图。
但是计算机当中只有算术运算功能和逻辑运算功能是不够的,还需要有控制功能,控制何时从输入设备获取数据,何时输出数据到输出设备等。对应到C语言当中,算术运算就完成一系列的加减乘除,而逻辑运算就对应于一系列的逻辑与逻辑或等,控制功能就对应于C语言当中的判断、循环以及各个函数之间的跳转等等。
而我们后人就将这个具有算术运算功能、逻辑运算功能以及控制功能的这个模块称为中央处理器,简称CPU
但是输入设备和输出设备相对于中央处理器来说是非常慢的,于是在当前这个体系整体呈现出来的就是,输入设备和输出设备很慢,而CPU很快,根据木桶原理,那么最终整个体系所呈现出来的速度将会是很慢的
木桶效应:一个水桶所能承接水量的上限并不取决于桶壁上最长的那块木板,恰恰是取决于最短的那块
所以当前这个体系结构显然是不合适的,于是我们就不让输入设备和输出设备直接与CPU进行交互,而在这中间加入了内存。
内存有个特点就是,比输入设备和输出设备要快很多,但是比CPU又要慢。现在内存就处于慢设备和快设备之间,是一个不快也不慢的设备,能够在该体系结构当中就起到一个缓冲的作用。
现在该体系的运行流程就是:用户输入的数据先放到内存当中,CPU读取数据的时候就直接从内存当中读取,CPU处理完数据后又写回内存当中,然后内存再将数据输出到输出设备当中,最后由输出设备进行输出显示。
于是就形成了最终的冯诺依曼体系结构
注意: 这里存储器只是内存,不包括外存。
内存提高冯•诺依曼体系结构效率的方法
在这里在这里在这里大多数人有一个疑惑就是,先将输入设备的数据交给内存,再由内存将数据交给CPU,这个过程真的比CPU直接从输入设备获取数据更快吗?
说明这个问题之前,我们首先需要知道:内存具有数据存储的能力。虽然内存的大小只有4G/8G,但是既然内存有大小,那么它就有预装数据的能力,而这就是提高该体系结构效率的秘诀。
这里不得不说到的就是局部性原理:根据统计学原理,当一个数据正在被访问时,那么下一次有很大可能会访问其周围的数据。所以当CPU需要获取某一行数据时,内存可以将该行数据之后的数据一同加载进来,而CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存当中获取数据。
输出数据的时候也一样,CPU处理完数据后直接将数据放到内存当中,当输出设备需要时再在内存当中获取即可,这也就有了我们平常所说的缓冲区的概念。例如,缓冲区满了才将数据打印到屏幕上,使用fflush函数将缓冲区当中的数据直接输出之类的,都是将内存当中的数据直接拿到输出设备当中进行显示输出。
也就是说,内存的核心作用在于:
- 【利用内存作为缓冲】:通过预先将大量数据加载到内存中,减少CPU直接等待输入输出设备的时间。内存的读取和写入速度远高于外设,能够更快地向CPU提供所需数据。加快数据传递速度,为CPU提供高效支持。
- 【分离操作,提升并行性】:CPU从内存中读取数据与外部设备向内存导入数据这两个过程可以同时进行。这种并行处理方式避免了串行执行所带来的效率低下。实现数据流动的并行化,大幅提升整体效率。
你用QQ和朋友聊天时数据的流动过程
要使用QQ,首先需要联网,而你和你的朋友的电脑都是冯诺依曼体系结构,在你向朋友发送消息这个过程中,你的电脑当中的键盘充当输入设备、显示器和网卡充当输出设备,你朋友的电脑当中的网卡充当输入设备、显示器充当输出设备。
刚开始你在键盘当中输入消息,键盘将消息加载到内存,此时你的显示器就可以从内存获取消息进而显示在你自己的显示器上,此时你就能在你自己的电脑上看到你所发的消息了。
在键盘将消息加载到内存后,CPU从内存获取到消息后对消息进行各种封装,然后再将其写回内存,此时你的网卡就可以从内存获取已经封装好的消息,然后在网络当中经过一系列处理(这里忽略网络处理细节),之后你朋友的网卡从网络当中获取到你所发的消息后,将该消息加载到内存当中,你朋友的CPU再从内存当中获取消息并对消息进行解包操作,然后将解包好的消息写回内存,最后你朋友的显示器从内存当中获取消息并显示在他的电脑上。
与冯•诺依曼体系结构相关的一些知识
根据冯诺依曼体系结构图,我们可以知道,站在硬件角度或是数据层面上,CPU只和内存打交道,外设也只和内存打交道。到这里我们也可以说明一个问题:为什么程序运行之前必须先加载到内存?
因为可执行程序(文件)是在硬盘(外设)上的,而CPU只能从内存当中获取数据,所以必须先将硬盘上的数据加载到内存,也就是必须先将程序加载到内存。
常见的输入设备和输出设备(拓展):
- 输入设备:键盘、鼠标、网卡、硬盘、话筒、摄像头、扫描仪等。
- 输出设备:显示器、音响、网卡、硬盘、打印机等。
注意: 同种设备在不同场景下可能属于输入设备,也可能属于输入设备。
在物理层面上,各个硬件单元之间是通过总线连接的,外设与内存之间的总线叫做IO总线,内存与CPU之间的总线叫做系统总线。
总结一下:
- 计算机只能识别二进制,用户和计算机不能直接打交道,必须需要通过输入输出设备进行交流。关于设备,有纯的输入或输出,也有兼容输入输出设备。
- 中央处理器(CPU):含有运算器和控制器等。
- 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取简单来说,所有设备都只能直接和内存打交道。
二、计算机层次结构分析
操作系统(Operator System)
操作系统是一款管理计算机软硬件资源的软件,它向上为应用程序提供稳定的服务接口,向下为硬件提供统一的管理和调度,创造稳定可靠的运行环境。
每个硬件设备都有其特定的功能,并能够在冯诺依曼体系下高效运行。然而,仅具备硬件功能还远远不够,因为硬件的操作需要明确的调控和协调。也就是说,何时执行何种功能,必须通过一个统一的管理者来安排,这正是操作系统和程序设计的重要作用。
驱动层的作用与意义
上层的任何操作最终都会反馈到底层硬件,操作系统接收上层请求后,会调用相关的底层硬件。然而,由于硬件特性不同,可能会导致需要修改硬件或操作系统以适配新设备。为了解决这种问题,在软件和硬件之间引入了一层驱动层。
驱动层是一种专门的软件,每种硬件都有对应的驱动层。它的主要作用不是直接管理软硬件资源,而是为操作系统提供统一的通信接口,让操作系统能够通过标准化的方法访问和控制硬件设备。例如,操作系统可以通过驱动层读取硬件信息或发送控制指令,而不需要关心硬件的具体实现细节。
不论硬件如何变化,只要硬件厂商提供了合适的驱动程序,操作系统就能够正常管理和使用该硬件。
系统调用接口(system call)
底层硬件的管理者是操作系统,任何涉及到访问硬盘的行为,必须通过操作系统进行访问。操作系统里面本身是对软硬件资源进行操作,所以操作系统内部会包含所有的软硬件资源。
所以有一个问题,如果出现用户想要访问某种软硬件资源数据,可不可以直接访问操作系统特定的数据呢?
答案是不行,操作系统内部资源是十分重要的,不允许其他用户直接进行访问,避免用户造成内部资源的损坏。然而,用户仍然需要通过操作系统向底层硬件提出请求并执行操作。
为此,操作系统设计者使用 C语言 编写了一系列内部函数接口,这些接口为用户程序提供了访问系统资源的标准服务。这些接口被称为 系统调用(System Call)。
用户操作接口
由于系统调用本身的使用难度较高,普通用户直接使用系统调用可能面临复杂的操作流程和较高的技术门槛。因此,程序员通常会基于系统调用设计上层的软件或接口,通过封装特定的功能和逻辑,提供更简单、易用的服务。
三、操作系统管理
管理者决策被管理者
我们可以举个例子方便理解:评选奖学金:
将评选奖学金的工作人员看成管理者,而参与评选的学生看成被管理者。
如果管理者需要对于被管理者需要进行决策,决定奖学金分配。根据我们日常流程可以知道,管理者和被管理者间是不需要见面,管理者会根据被管理者数据进行相关决策。
这也说明管理的本质是通过对于数据进行管理,从而达到对于人的管理。
如何得到被管理者数据
管理者是负责对被管理者数据进行决策,而被管理者数据是需要通过执行者去执行收集数据。由于人数过多,精力有限,不可能一一去问,所以我们可以使用EXCEL表格进行管理,但是庞大的数据量也是十分的棘手。
管理者是老练的程序员,想到可以将自己手上的活交给编译器去做,那么将学生信息封装到结构体中,在每个结构体内部添加结构体指针用于连接其他包含学生信息的结构体,形成链表。
管理者只需要对链表进行管理,对于学生信息数据进行增删查改转变为了对链表的增删查改。相对于Excel表可以根据链表的特点添加一些方便的接口,比如找到这一堆学生中数学成绩最好的学生。
在计算机体系结构里,我们的OS就相当于管理者,我们的软硬件资源就相当于被管理者,而我们的驱动程序就相当于是执行者。
库函数与系统调用的关系
【场景】:假如有A和B两个校长,A校长有一个学生数学特别厉害,但是B校长没有,于是B校长就想跟A校长商量借这个同学来打比赛,但是B校长肯定不能直接去找这个学生,因为这个学生是A校长的人,他得负责,所以他必须要通过A校长的同意才行。
库函数必须通过系统调用接口才能与操作系统进行交互,从而访问底层资源。因此,库函数与系统调用呈现出上下层关系,可以理解为:
-
系统调用是基础层
系统调用是操作系统提供的接口,直接与操作系统内核交互,用于访问硬件资源或执行关键的系统操作(如文件管理、进程控制等)。 -
库函数是封装层
库函数建立在系统调用之上,进行二次开发,通过封装复杂的系统调用逻辑,为开发者提供更加简单、统一的操作接口。例如:printf() 是C标准库函数,但它最终调用了系统调用 write() 来实现数据输出。
总结一下: 管理者管理被管理者,实际上是先将被管理者的各种信息进行描述,然后再将多个被管理者的描述信息根据某种数据结构组织起来,最后管理者管理被管理者实际上就是对数据结构的管理。
先描述,再组织,这是一个很重要的思想,往后我会在教学中不断提起的!!!
总结
往下只会越来越难哦,哎,这Linux!!!
相关文章:
Linux冯诺依曼体系与计算机系统架构认知(8)
文章目录 前言一、冯诺依曼体系冯•诺依曼体系结构推导内存提高冯•诺依曼体系结构效率的方法你用QQ和朋友聊天时数据的流动过程与冯•诺依曼体系结构相关的一些知识 二、计算机层次结构分析操作系统(Operator System)驱动层的作用与意义系统调用接口(system call)用户操作接口…...
23.linux下电脑健康检查
电脑健康检查 硬盘 工具 sudo apt-get install smartmontools检查命令 sudo smartctl -a /dev/sdb1输出结果 # smartctl 7.2 2020-12-30 r5155 [x86_64-linux-6.8.0-52-generic] (local build) # Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools…...
使用HAI来打通DeepSeek的任督二脉
一、什么是HAI HAI是一款专注于AI与科学计算领域的云服务产品,旨在为开发者、企业及科研人员提供高效、易用的算力支持与全栈解决方案。主要使用场景为: AI作画,AI对话/写作、AI开发/测试。 二、开通HAI 选择CPU算力 16核32GB,这…...
.NET 10 新的 JsonIgnoreCondition
Intro 之前提了一个 api 建议为 JsonIgnore 添加两个扩展,WhenReading 和 WhenWriting,主要的一个用例是 WhenReading 我们的 Api Response 里有一个字段非常的大,不需要在 response 里包含,但是从 json 里反序列化时时需要地所以不能简单地直接忽略,在使用 Newtonsoft.J…...
数据结构——哈夫曼编码、哈夫曼树
1 哈夫曼树、哈夫曼编码 定义 哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为 0 层,叶结点到根结点的路径长度为叶结点的层数&…...
MySQL 调优:查询慢除了索引还能因为什么?
文章目录 情况一:连接数过小情况二:Buffer Pool 太小 MySQL 查询慢除了索引还能因为什么?MySQL 查询慢,我们一般也会想到是因为索引,但除了索引还有哪些原因会导致数据库查询变慢呢? 以下以 MySQL 中一条 S…...
数据库锁机制
一、数据库锁的分类 数据库锁机制根据不同的维度可分为多种类型: 按锁的粒度划分: 行级锁(Row-Level Lock):锁定单行数据,粒度最细,并发度高,如InnoDB引擎的行锁。表级锁(Table-Level Lock):锁定整张表,并发度低,如MyISAM引擎的表锁。页级锁(Page-Level Lock):…...
计算机二级web易错点(6)-选择题
在软件或系统的三层架构中,三层分别为表示层、逻辑层(业务逻辑层)和数据访问层。表示层主要负责与用户交互,展示数据和接收用户输入;逻辑层处于中间位置,负责处理业务逻辑,对表示层传来的请求进…...
深入理解 lt; 和 gt;:HTML 实体转义的核心指南!!!
🛡️ 深入理解 < 和 >:HTML 实体转义的核心指南 🛡️ 在编程和文档编写中,< 和 > 符号无处不在,但它们也是引发语法错误、安全漏洞和渲染混乱的头号元凶!🔥 本文将聚焦 <&#…...
windows环境下NER Python项目环境配置(内含真的从头安的perl配置)
注意 本文是基于完整项目的环境配置,即本身可运行项目你拿来用 其中有一些其他问题,知道的忽略即可 导入pycharm基本包怎么下就不说了(这个都问?给你一拳o(`ω*)o) 看perl跳转第5条 1.predict报错多个设备…...
Redis + 布隆过滤器解决缓存穿透问题
Redis 布隆过滤器解决缓存穿透问题 1. Redis 布隆过滤器解决缓存穿透问题 📌 什么是缓存穿透? 缓存穿透指的是查询的数据既不在缓存,也不在数据库,导致每次查询都直接访问数据库,增加数据库压力。 例如࿱…...
2025年3月 CCF GESP C++ 二级 真题解析
1. 单选题(每题2分,共30分) 第1题 试题:2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊人,入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是( )。 A. 《哪吒2》是一…...
回顾Python基础语法,辨析和C++等的不同~
由于很多院校的计科尤其软工专业在本科期间会设置大量有关不同编程语言的语法基础课,虽然整体来看大同小异,但还是有些细节在不同语言有所差异:比如分号在C和Java必须加,Python和JavaScript则不必,而在Matlab中加入则不…...
ubuntu设置开机自动运行应用
系统版本:Ubuntu 24.04.1 LTS桌面版 按招网上的资料显示,当前版本主要的实现方式有以下两种, 方式1:通过图形界面的【启动应用程序】设置开机自启动;方式2:配置为服务实现开机自启动。 但是在我的电脑上方…...
2024年MathorCup数学建模D题量子计算在矿山设备配置及运营中的建模应用解题文档与程序
2024年第十四届MathorCup高校数学建模挑战赛 D题 量子计算在矿山设备配置及运营中的建模应用 原题再现: 随着智能技术的发展,智慧矿山的概念越来越受到重视。越来越多的设备供应商正在向智慧矿山整体解决方案供应商转型,是否具备提供整体解…...
MCU vs SoC
MCU(Microcontroller Unit,单片机)和SoC(System on Chip,片上系统)是两种不同的芯片类型,尽管它们都实现了高度集成,但在设计目标、功能复杂性和应用场景上存在显著差异。以下是两者…...
我的uniapp自定义模板
uniapp自定义模板 如有纰漏请谅解,以官方文档为准后面这段时间我会学习小程序开发的知识,会持续更新可以查看我的github,后续我会上传我的uniapp相关练习代码有兴趣的话可以浏览我的个人网站,我会在上面持续更新内容,…...
JVM 类加载器之间的层次关系,以及类加载的委托机制
JVM 类加载器之间存在一种层次关系,通常被称为双亲委派模型 (Parent Delegation Model)。这种层次关系和委托机制是 Java 类加载机制的核心,对于保证 Java 程序的安全性和避免类冲突至关重要。 1. 类加载器的层次关系: JVM 中的类加载器(Cl…...
吞吐与时延的博弈,超发与冗余的交换
做传输协议加速,大家默认激进超发原则,却认为冗余双发不道德,其实这两个是一回事,它们本质上是一种 “矩” 内的交换,就像力和力臂交换但乘积不变一样,成本是固定的。 人们更能原谅激进超发是因为人们对吞…...
Jackson使用ObjectNode对象实现JSON对象数据(一):增、删、改、查
Jackson 是一款高性能的 Java JSON 处理库,广泛应用于 Java 对象的序列化(转为JSON)与反序列化(JSON转为对象)。作为 Spring MVC 默认的JSON解析器,其核心优势包括高性能、灵活性和丰富的功能支持。 Jackson 库中 ObjectNode 是操作 JSON 对象的核心类,…...
【递归、搜索和回溯算法】专题三 :穷举VS暴搜VS深搜VS回溯VS剪枝
回溯算法 回溯算法是一种经典的递归算法,通常用于解决组合问题、排列问题和搜索问题等。 基本思想:从一个初始状态开始,按照一定的规则向前搜索,当搜索到某个状态无法前进时,回退到钱一个状态,再按照其他的…...
Ubuntu如何部署AI-Sphere-Butler(metahuman-stream)
环境: Ubuntu 20.04、22.04 Python3.10 Pytorch 1.12 CUDA 11.3 问题描述: Ubuntu如何部署AI-Sphere-Butler(metahuman-stream(LiveTalking)) 解决方案: 一、部署 本次部署以云服务器&a…...
基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手
基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手 一、准备工作:组装你的"数码工具箱" 1. 安装基础工具(Python环境) 操作步骤: 访问Python官网下载安装包安装时务必勾选Add Python to…...
SpringBoot分布式定时任务实战:告别重复执行的烦恼
场景再现:你刚部署完基于SpringBoot的集群服务,凌晨3点突然收到监控告警——优惠券发放量超出预算两倍!检查日志发现,两个节点同时执行了定时任务。这种分布式环境下的定时任务难题,该如何彻底解决? 本文将…...
第十二章 | Solidity 智能合约前后端集成实战
📚 第十二章 | Solidity 智能合约前后端集成实战 ——链上合约 前端钱包 用户交互,打造完整 DApp! 这章我们正式进入 DApp 全栈开发领域! 用 Ethers.js React/Vue 完成前端和合约交互完整的「前端发起交易 → 钱包签名 → 链上…...
sqlite3数据库(文件)损坏恢复方法
问题描述 实时控制系统在运行过程中,我使用DB Browser for SQLite工具写sqlite数据库操作,工具异常退出,再次使用此工具打开数据文件时,数据文件打不开,报错:invalid rootpage,如何处理? 解决…...
正则艺术:深入探讨高级语法——零宽断言与反向引用实战
正则艺术:深入探讨高级语法——零宽断言与反向引用实战 在 Python 这门语言中,正则表达式无疑是一把神奇的钥匙。它不仅能够轻松实现字符串匹配、替换和拆分,更在数据清洗、日志分析、爬虫开发等场景中大放异彩。作为一名拥有多年实战与教学经验的 Python 程序专家,今天我…...
python——UI自动化(1) selenium之介绍和环境配置
一、selenium介绍 selenium是一个第三方库,python有很多库; 1、什么是ui自动化? 通过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。 2、ui自动化的优点? (1)解决重复性的功能测…...
专题|Python贝叶斯网络BN动态推理因果建模:MLE/Bayes、有向无环图DAG可视化分析呼吸疾病、汽车效能数据2实例合集
原文链接:https://tecdat.cn/?p41199 作为数据科学家,我们始终在探索能够有效处理复杂系统不确定性的建模工具。本专题合集系统性地解构了贝叶斯网络(BN)这一概率图模型在当代数据分析中的创新应用,通过开源工具bnlea…...
MQ,RabbitMQ,MQ的好处,RabbitMQ的原理和核心组件,工作模式
1.MQ MQ全称 Message Queue(消息队列),是在消息的传输过程中 保存消息的容器。它是应用程序和应用程序之间的通信方法 1.1 为什么使用MQ 在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理࿰…...
STM32__红外避障模块的使用
目录 一、红外避障模块 概述 二、直接读取OUT引脚电平 三、使用中断方式触发 一、红外避障模块 概述 引脚解释: VCC接3.3V 或 5.0VGND接开发板的GNDOUT数字量输出(0或1); 低电平时表示前方有障碍 ; 通过可调电阻调整检测距离 产品特点: …...
第三天 开始Unity Shader的学习之旅之第二天的补充
Unity Shader的学习笔记 第三天 开始Unity Shader的学习之旅之第二天的补充 文章目录 Unity Shader的学习笔记前言一、Unity 提供的内置文件和变量1. 内置的包含文件2. UnityCG.cginc中的常用结构体 二、Unity 提供的Cg/HLSL语义1. 从应用阶段传递模型数据给顶点着色器时Unity…...
文献分享: ColXTR——将ColBERTv2的优化引入ColXTR
1. ColXTR \textbf{1. ColXTR} 1. ColXTR原理 1.1. ColBERTv2 \textbf{1.1. ColBERTv2} 1.1. ColBERTv2概述 1.1.1. \textbf{1.1.1. } 1.1.1. 训练优化 1️⃣难负样本生成 初筛:基于 BM-25 \text{BM-25} BM-25找到可能的负样本重排:使用 KL \text{KL} KL…...
【第21节】windows sdk编程:网络编程基础
目录 引言:网络编程基础 一、socket介绍(套接字) 1.1 Berkeley Socket套接字 1.2 WinSocket套接字 1.3 WSAtartup函数 1.4 socket函数 1.5 字节序转换 1.6 绑定套接字 1.7 监听 1.8 连接 1.9 接收数据 1.10 发送数据 1.11 关闭套接字 二、UDP连接流程…...
《深度剖析:BERT与GPT——自然语言处理架构的璀璨双星》
在自然语言处理(NLP)的广袤星空中,BERT(Bidirectional Encoder Representations from Transformers)与GPT(Generative Pretrained Transformer)系列模型宛如两颗最为耀眼的星辰,引领…...
景联文科技:以高质量数据标注推动人工智能领域创新与发展
在当今这个由数据驱动的时代,高质量的数据标注对于推动机器学习、自然语言处理(NLP)、计算机视觉等领域的发展具有不可替代的重要性。数据标注过程涉及对原始数据进行加工,通过标注特定对象的特征来生成能够被机器学习模型识别和使…...
LeetCode 30 —— 30.串联所有单词的子串
题目: 给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。 示例 1ÿ…...
【redis】主从复制:单点问题、配置详解、特点详解
文章目录 单点问题什么是主从复制主从模式能解决的问题并发量有限可用性问题 配置建立复制通过配置文件来指定端口配置主从查看集群结构 断开复制 特点安全性只读传输延迟 单点问题 分布式系统中,涉及到一个非常关键的问题:单点问题 某个服务器程序&…...
VSCode创建VUE项目(四)增加用户Session管理
将用户信息存储或者更新到Session sessionStorage.setItem("userID",loginform.value.username); sessionStorage.setItem(loginTime, Date.now()); 获取Session信息 const storedUserInfo sessionStorage.getItem(userID); const loginTime sessionStorage.get…...
Spring Boot(十六):拦截器Interceptor
拦截器的简介 拦截器(Interceptor)是Spring框架中的概念,它同样适用于Spring Boot,因为Spring Boot是基于Spring框架的。拦截器是一种AOP(面向切面编程)的轻量级实现方式,它允许我…...
考研复习之队列
循环队列 队列为满的条件 队列为满的条件需要特殊处理,因为当队列满时,队尾指针的下一个位置应该是队头指针。但是,我们不能直接比较 rear 1 和 front 是否相等,因为 rear 1 可能会超出数组索引的范围。因此,我们需…...
sql-labs
p1 sql注入的目的是为了破坏sql语句结构,有三种参数类型,字符型(就是一个字符1或者a之类的),字符串(“hellow之类的”)型,数值型,前两个有闭合,注释符号有# …...
Java 集合框架:从数据结构到性能优化,全面解析集合类
Java 集合框架(Java Collections Framework,JCF)是 Java 语言中用于存储、操作和管理数据的标准库。它提供了一组通用的接口、类和方法,使开发者能够高效地操作不同类型的数据集合。 本文将结合 Java 集合框架类图,介…...
vulkanscenegraph显示倾斜模型(5.4)-相机操纵器
前言 在VSG(Vulkan Scene Graph)中,系统支持用户通过鼠标或触摸输入与三维场景进行交互,从而动态控制相机的位置和姿态,实现与三维场景的交互。VSG提供了多种相机操纵器,其中Trackball是一种常见的相机操作…...
两个还算好用的ppt转word和PDF转word的python脚本
PPT转word: import re from pptx import Presentation from docx import Document from docx.shared import Inches from io import BytesIO from PIL import Imagedef clean_text(text):# 使用正则表达式删除控制字符和NULL字节return re.sub(r[\x00-\x1F\x7F], ,…...
用PostgreSQL玩转俄罗斯方块:当SQL成为游戏引擎
当DBA开始摸鱼2025年某深夜,一位不愿透露姓名的DBA为了在监控大屏上隐藏游戏行为,竟用SQL实现了俄罗斯方块!从此,SELECT成了方向键,UPDATE成了旋转指令,DELETE成了消除大招。本文将揭秘这个疯狂项目的技术内…...
基于WebAssembly的浏览器密码套件
目录 一、前言二、WebAssembly与浏览器密码套件2.1 WebAssembly技术概述2.2 浏览器密码套件的需求三、系统设计思路与架构3.1 核心模块3.2 系统整体架构图四、核心数学公式与算法证明4.1 AES-GCM加解密公式4.2 SHA-256哈希函数五、异步任务调度与GPU加速设计5.1 异步任务调度5.…...
手撕算法之`vector` 扩容、`string` 分割、链表翻转
手写常见操作:vector 扩容、string 分割、链表翻转 (一)vector扩容 在 C++ 中,vector 的扩容机制是动态数组实现的核心特性,直接关系到性能和内存使用效率。以下是深入剖析: 1. 扩容触发条件 vector<int> v; v.push_back(1); // 当 size() == capacity() 时触发…...
tauri2程序单例模式实现,二次点击桌面图标显示之前最小化的程序并聚焦
官方有这个单例的插件可以直接使用:单例 | Tauri,使用单实例插件确保 Tauri 应用程序在同一时间只运行单个实例。插件已经安装并初始化,应该可以立即正常运行。尽管如此,我们也可以使用 init() 方法来增强它的功能。插件的 init()…...
【AI学习笔记】Coze平台实现将Excel文档批量导入数据库全过程
背景前摇&原视频教程: 最近看到很多同学都在用Coze平台操作数据,我也想了解一下工作流的搭建和数据处理过程,但是一下子又看不懂太复杂的逻辑,于是上B站搜索相关的基础教程。 Coze官方教程: 之前有看过Coze平台…...