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

【Linux我做主】深入探讨从冯诺依曼体系到进程

从冯诺依曼体系到进程

  • 从冯诺依曼体系到进程
  • github地址
  • 1. 前言
  • 2. 计算机硬件
    • 2.1 冯诺依曼体系结构
    • 2.2 冯诺依曼模型的三大要点
    • 2.3 从QQ聊天认识:冯诺依曼体系下数据是如何流动的?
      • 发送方数据流动
      • 接收方数据流动
  • 3. 计算机软件的根基——操作系统
    • 3.1 操作系统是什么?
    • 3.2 为什么需要操作系统?
    • 3.3 如何管理?
      • 概述
      • 核心方法一:结构化描述
      • 核心方法二:高效组织
      • 核心方法三:系统调用
    • 3.4 系统调用与库函数
  • 4. 由“先描述,再组织”初识进程
    • 进程概念初识
    • 进程概念深入
      • 认识进程
      • 操作系统的行为
      • 进程的完全定义
    • Linux下的进程
      • 描述进程-PCB
      • task_struct中的主要属性分类
    • Linux下查看进程
      • 通过命令查看
      • 通过系统目录查看
  • 结语

从冯诺依曼体系到进程

github地址

有梦想的电信狗

1. 前言

​ 计算机系统的运行离不开硬件与软件的密切配合,其中,冯 · 诺依曼体系结构为现代计算机硬件设计奠定了基础,而操作系统则是管理软硬件资源、为用户程序提供执行环境的核心软件。本文从冯诺依曼体系结构(计算机硬件组成)和操作系统(计算机不可或缺的软件)出发,由浅入深带各位初识进程


2. 计算机硬件

2.1 冯诺依曼体系结构

冯诺依曼体系结构由约翰·冯·诺依曼1945年提出,是现代计算机系统普遍采用的一种结构模型。该模型由五个核心部分构成:

  • 输入设备
  • 输出设备
  • 存储器(Memory):通常指内存(RAM),用于存储程序和数据
  • 中央处理器(CPU):包括运算器(ALU)与控制器(CU
  • 总线系统(Bus):连接各个部分的通信媒介

在这里插入图片描述

目前为止,我们所能认识到的计算机,都是由一个个的硬件组成的,这些硬件被分成了以下几个单元:

  • 外设
    • 输入单元(输入设备):键盘、鼠标、扫描仪、摄像头、话筒、磁盘网卡
    • 输出单元(输出设备):显示器、、磁盘网卡、播放器硬件等
      • 其中磁盘网卡既是输入设备,也是输出设备
  • 中央处理器(CPU)
    • 运算器:对我们的数据进行计算任务(算术运算,逻辑运算)
    • 控制器: 对我们的计算硬件流程进行一定的控制
  • 其中每一个硬件都是独立的个体,各个硬件单元必须用 " 线 " 链接起来,连接的线称为总线
    • 系统总线:运算器和存储器之间的线
    • IO总线:存储器和输入输出设备之间的线

关键特性

  • 存储器特指内存(RAM),是CPU与各外设之间交换数据的唯一媒介
  • 不考虑缓存情况,CPU能且只能对内存进行读写不能直接访问外设(输入或输出设备)
  • 所有外设的输入/输出,也都必须通过内存作为中转站,才能被CPU或其他设备读取或写入
  • 总结,所有设备都只能直接和内存交互

冯诺依曼体系中,最核心的思想是:程序和数据以相同方式存储于存储器中,并通过 CPU顺序读取执行。

在这里插入图片描述

关于存储器,我们需要认识到:

  • 存储是分级的

  • 从上到下

    • 成本价格越来越低
    • 存储容量越来越大
    • 访问速度越来越慢
    • 离CPU越来越远
  • 程序要运行,必须先加载到内存中,这是由冯诺依曼结构体系决定的。

  • 内存是硬件级别的缓存空间,具有核心地位

    • CPU计算好的数据,返回到内存中,本质就是一种缓存。进度条小程序的刷新,就是把内存中的数据(缓冲区内)刷新到输出设备显示器上。


2.2 冯诺依曼模型的三大要点

  1. 统一存储结构
    所有程序与数据都存储于内存,CPU通过地址访问它们。CPU不会直接访问外设,所有设备都必须先与内存交互。

  2. 顺序执行机制
    程序按照存储顺序执行,控制器通过**程序计数器(PC)**逐条指令读取。

  3. 程序可修改自身
    由于指令与数据形式一致,程序可以动态修改自身代码(现代常规软件开发中不推荐,但该特性为人工智能领域带来了可能性)。


不过,如果我们对冯诺依曼的理解倘若仅仅停留在概念上,是不够的。我们需要深入到对软件数据流理解上。下面我们以登上qq开始和某位朋友发消息为例来体现下冯诺依曼结构体系中数据的流向

2.3 从QQ聊天认识:冯诺依曼体系下数据是如何流动的?

假设你用QQ给朋友发消息,这个过程中背后的数据流大致如下:

发送方数据流动

  1. 输入设备触发操作
    • 用户点击鼠标(输入设备)选择文件,触发中断信号。
    • 控制器响应中断,通知操作系统调度QQ程序。
  2. 文件从磁盘加载到内存
    • **操作系统通过磁盘控制器(DMA)将文件数据从磁盘(外部存储器)直接读入内存(主存储器),**无需CPU逐字节处理。
  3. CPU处理数据
    • 运算器(ALU)对内存中的文件数据进行分块、加密和压缩。
    • 控制器协调网络协议栈(TCP/IP)封装数据包,添加协议头部信息(如IP地址、端口号)。
  4. 数据发送至网卡
    • 封装后的数据包**从内存通过DMA传输到网卡(输出设备)**的发送缓冲区。
    • 网卡将数据转换为电信号,经物理网络(如网线、WiFi)发送。

接收方数据流动

  1. 网卡接收数据
    • 网卡(输入设备)接收网络信号,将其转换为数字数据,并通过DMA直接写入内存的接收缓冲区,避免CPU参与原始数据搬运。
  2. CPU解析数据包
    • 控制器调度网络协议栈代码,运算器逐层解析数据包(如剥离TCP/IP头部),验证完整性。
    • 解析后的文件数据暂存于内存的用户空间缓冲区
  3. 数据写入磁盘
    • 操作系统调用**磁盘控制器(DMA),内存中的文件数据直接写入磁盘(外部存储器),**完成持久化存储。

关键硬件协作示意图

发送方:
磁盘 → DMA → 内存 → CPU处理 → 内存 → DMA → 网卡 → 网络接收方:
网络 → 网卡 → DMA → 内存 → CPU处理 → 内存 → DMA → 磁盘

总结:在冯诺依曼体系中,所有外设读写都要经过内存。无论你是点击、输入、还是传输文件,实际的数据传输路径永远遵循“外设 ↔ 内存 ↔ CPU”。


3. 计算机软件的根基——操作系统

操作系统Operating System,简称 OS)是介于硬件与应用程序之间的管理软件,本文针对以下三个问题展开讨论:

操作系统是什么?
为什么需要操作系统?
操作系统如何实现软硬件管理?

在这里插入图片描述


3.1 操作系统是什么?

  • 操作系统(Operating System,简称 OS), 是一组控制和管理计算机硬件与软件资源的程序集合.
  • 是用户与计算机硬件之间的桥梁。
  • 从组成角度,操作系统通常包含:
    • 内核(Kernel):处理硬件调度、进程管理、内存管理等核心任务。
    • 系统调用接口:为用户程序提供访问硬件的安全通道。
    • Shell等工具:如 bashzsh,用于人机交互。
    • 系统服务与库函数:如 glibclibc等,简化开发者使用系统调用的复杂性。

总结操作系统是一款进行管理的软件,这里的管理既包括硬件也包括软件。


3.2 为什么需要操作系统?

在没有操作系统的年代,每一个程序都必须直接控制硬件,开发难度极高,效率低下。操作系统的引入使得:

  • 用户不需要关心底层细节,只需操作人性化的界面或命令;
  • 多个程序可以共享硬件资源(如CPU、内存、磁盘);
  • 系统的安全性和稳定性得到保障;
  • 提供统一的开发接口,促进软件生态发展。

一句话总结:操作系统是“硬件资源管理者 + 用户程序服务者”。

综合以上,我们就可以很好的回答我们为什么要有操作系统了。

操作系统通过管理好底层的软硬件资源(手段),为用户提供一个良好(稳定、高效、安全)的执行环境(目的)


3.3 如何管理?

概述

  • 系统调用:用户访问操作系统的唯一入口(类似银行柜台)

  • 管理方法:通过"先描述,再组织"的方式

    • 先描述:用结构体(如C++中的类,C语言中的struct)描述资源

    • 再组织:用链表,队列,红黑树,等数据结构将资源组织起来,统一管理。

    • 组织起来后,对资源的管理,无非就是对这些数据结构的增删查改

  • 所有访问操作系统的行为,都只能通过系统调用来完成,这是因为在操作系统里面会有各种各样的数据,但是操作系统不相信任何用户。

    • 操作系统为了保证自己数据的安全,同时又为了保证给用户提供服务,操作系统以接口的方式为用户提供了调用的入口,方便用户来获取操作系统内部的数据。这些接口一般也是用C语言来实现的。
  • 再来谈谈如何管理,所谓管理,无非是:先描述,再组织

    • C++为例,C++是一门面向对象的语言,其中有类和STL
      • 通过类的成员方法和成员变量,我们可以描述一个对象
      • 通过STL中的各种容器(本质是数据结构),诸如vectorlist等,可以将对象组织起来
    • 有了描述组织这两步之后,我们就可以很方便的进行管理了。
      • 无论是添加一个对象,删除一个对象,还是对对象中的数据进行修改就都可以很方便的实现了。
    • 而操作系统也恰恰是这么做的,它通过struct结构体把所有的资源信息描述出来,再通过链表或其他更高效的数据结构来组织软硬件资源,通过对数据结构的管理,实现对计算机软硬件资源的管理。
    • 管理的本质,只需要对资源对应的数据进行管理,就能实现对资源的管理。操作系统通过驱动程序,获取到硬件的状态信息来管理硬件。
  • 在操作系统中,管理任何对象,最终都可转化为对某种数据结构的增删查改

总结核心方法

核心方法一:结构化描述

操作系统首先用“结构体(struct)”来描述各种硬件或软件资源:

  • 进程用task_struct描述;
  • 文件用file结构体表示;
  • 设备用device结构体封装。

核心方法二:高效组织

  • 多个对象用“链表、红黑树、哈希表”等结构进行组织;
  • 操作系统通过这些结构维护系统状态、调度顺序、访问权限等。

核心方法三:系统调用

  • 用户程序无法直接访问内核空间;
  • 通过系统调用(如fork()read()write())进入内核,完成实际资源操作。

3.4 系统调用与库函数

库函数和系统调用是上下级关系,库函数内封装了系统调用。操作系统不相信任何人,系统调用是操作系统对暴露的接口,供给开发使用

操作系统是硬件的管理者,想要访问硬件,必须经过操作系统也就是系统调用

  • 系统调用:操作系统向上层程序暴露的接口,功能基础且对安全性要求高,例如 read()write()fork() 等;
  • 库函数:开发者可在系统调用之上进行封装,形成更易用的 API,例如标准 C 库中的 fopen()printf(),以降低调用难度,促进二次开发。

4. 由“先描述,再组织”初识进程

进程也是操作系统内的资源,同样遵从“先描述,再组织”的设计理念

进程概念初识

CPU只能从内存中读数据。电脑开机的过程,实际就是把操作系统加载到内存中的过程。

先说定义,大多数教材中给出的进程的定义如下:

  • 一个已经加载到内存的程序,叫做进程。有时也把进程称作一个任务task

  • 正在运行的程序,程序的一个执行实例,叫做进程
    在这里插入图片描述

  • 如上就是正在运行的一个进程

  • 使用ps ajx | grep myprocess查看刚刚已经执行的进程。其中

    • ps ajx列出系统所有的进程
    • ps ajx | grep myprocess将所有进程通过管道输入,过滤myprocess进程

进程概念深入

认识进程

显而易见

一个操作系统,不仅仅只能运行一个进程,是可以同时运行多个进程的!!!

因此操作系统必须将这多个进程管理起来。如何管理呢?先描述,再组织

首先,操作系统需要先认识进程!

思考?我们人是怎样认识一个事物或者对象的?

人是通过描述事物的属性来辨识事物的,也就是做面向对象的过程。当相关的属性足够多时,这一堆属性的集合,就是目标对象。人就是这么认识事物的。

那么操作系统认识进程,也需要足够多的进程的属性。由于操作系统是用C语言写的,因此操作系统必然采用struct来描述进程。

操作系统的行为

描述进程,要包含进程的属性的集合。结论如下

  • 任何一个进程,在加载到内存的时候,形成真正的进程时,操作系统要先创建描述进程属性的struct对象

  • 这个对象被称为——PCBprocess ctrl blcok进程控制块,是进程的属性的集合。

  • PCBstruct对象包含描述进程的所有属性,操作系统通过PCB进程控制块来辨识进程

基于以上内容,我们可以得出操作系统内核观点下的进程的概念

  1. 单独加载到内存的可执行程序不叫进程,单独PCB也不叫进程
  2. 描述进程的PCB结构体对象 和 加载到内存中的程序的代码和数据 合起来 才叫进程
  3. PCB由操作系统内部自己维护的,代码和数据是开发者自己写的。
  4. 加载进程时,不止是把 codedata加载到内存,操作系统还根据操作系统内的 描述进程的进程控制块为当前进程创建PCB,把该进程的相关属性填充好,初始化,形成一个PCB,该结构体是操作系统自己形成的
  5. 操作系统管理进程,只需要对一个个的PCB对象做管理,就能管理好进程。对进程的管理,本质是对内核PCB数据结构对象的管理

进程的完全定义

  • 进程的完全定义 = 内核PCB数据结构对象 + 自己的代码和数据是担当分配系统资源(CPU时间,内存)的实体

    • 内核PCB数据结构对象 包含描述这个进程的所有属性值
    • 自己的代码和数据,就是自己在磁盘中形成的可执行程序
  • 有了PCB结构体对象,操作系统内管理进程就变成了管理PCB结构体对象。操作系统内是用链表来组织PCB的,因此实现对进程的管理本质是对链表的增删查改

Linux下的进程

以上PCB是进程的设计理念,不同的操作系统对PCB的实现不完全相同,我们来看Linux下具体是如何实现的。

描述进程-PCB

进程所有的属性信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合

一般称之为PCB(process control block)Linux操作系统下的具体的PCB是: task_struct

  • Linux中描述进程的结构体叫做task_struct
  • task_structLinux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息,这个装载的过程就是task_struct的实例化
  • task_struct是一种自定义数据类型Linux内核中,最基本的组织task_struct的方式,是采用双向链表组织的。
    • 但每个PCB不只是双向链表内的一个结点
      • PCB结点可能同时也属于某个二叉树或者队列中的结点

task_struct中的主要属性分类

  • 标示符: 描述本进程的唯一标示符,用来区别其他进程,这个标识符就是进程的PID
  • 状态: 任务状态,退出代码,退出信号等。
  • 优先级: 相对于其他进程的优先级。CPU要调度多个进程,就注定了多个进程要竞争CPU,因此需要设定进程的调度优先级
  • 程序计数器(PC指针): 保存程序中即将被执行的下一条指令的地址和当前正在运行的指令的地址。
  • 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针,方便CPU找到开发者程序的代码和数据
  • 上下文数据: 进程执行时处理器的寄存器中的数据。
  • I/O状态信息: 包括显示的 I/O 请求,分配给进程的 I/O 设备和被进程使用的文件列表。
  • 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
  • 其他信息等

Linux下查看进程

通过命令查看

命令1

命令ps

功能:查看系统下的进程

常用选项ajx,用于查看系统下的所有进程

在这里插入图片描述

在这里插入图片描述

  • ps也是一个可执行程序,因此ps运行起来是一个进程,grep过滤时,会过滤出所有含有ps的所有内容
    • 这里ps ajxgrep ps都含有ps,因此都会高亮显示。
    • 常用用法 ps ajx | head -1 && ps ajx | grep processName
      • head -1 用于显示第一行,显示进程表头信息,
      • ps ajx | grep processName用于指定过滤进程precessName

在这里插入图片描述

  • 可以看到显示多了进程的表头信息

命令2

命令top

功能:查看系统CPU资源使用状态

常用选项:无

在这里插入图片描述

  • 最左侧的PID就是进程的编号,由此达到查看进程的目的。

通过系统目录查看

进程的信息还可以通过/proc系统文件夹查看

每一个进程在系统运行期间,关掉后再重启,系统为进程重新分配的PID大部分情况是不一样的

  • ls /proc查看系统内所有的进程。

在这里插入图片描述

  • /proc目录是一个特殊的系统目录
    • 关机时,目录内的所有数据都会消失
    • 开机时,操作系统会创建该目录、及其文件和所有数据
  • /proc目录是系统将内存中的数据,通过可视化的方式,以目录的形式向我们呈现
  • 该目录动态地包含系统内所有的进程,目录名大部分是数字名,代表进程的PID

查看当前进程的目录

在这里插入图片描述

  • 通过当前进程的PID查看当前目录的内容:ls /proc/ 161157 -l,其中目录内有两个关键信息:

    • cwdcurrent working directory,表示当前进程的工作目录。
    • exe:指向当前可执行程序的存储路径
  • 思考?

    • C语言使用fopen("log.txt", "w")创建文件时,没有指定文件在哪里创建,为什么会在当前目录下创建文件?
    • 为什么touch test.c这个命令,一旦运行起来变成进程,我们并没有指定路径,却会自动在当前目录下创建文件?
  • 这是因为

    • 在特定目录下运行的进程,进程运行时所在的目录,就是当前进程对应的当前目录
    • 进程启动时,记录下了启动时自己所处的目录,这个目录就是之后进程的工作目录cwd
  • 进程在启动后,有了自己的工作目录cwd。调用fopentouch时,用户传入的路径是"log.txt"在系统层面,会默认把cwd路径拼接到"log.txt"前面。即cwd/"log.txt"cwd就叫当前路径

  • 最终也就在当前目录下创建了文件

结语


​ 通过本文的探讨,我们从冯诺依曼体系结构出发,深入理解了计算机硬件的核心组成与数据流动的本质。无论是键盘输入、屏幕显示,还是网络通信与文件传输,所有操作都严格遵循“外设 ↔ 内存 ↔ CPU”的协作逻辑。这一设计不仅奠定了现代计算机的基石,更揭示了内存作为数据中转枢纽的核心地位

​ 在此基础上,我们认识到操作系统是连接硬件与软件的桥梁。它通过==“先描述,再组织”==的哲学,以数据结构(如 task_struct)描述资源属性,并通过系统调用与高效算法实现资源管理。这种设计思想在进程管理中体现得尤为明显:进程作为程序执行的实例,其本质是内核数据结构(PCB)与代码数据的结合体,操作系统通过管理PCB的链表或树结构,完成对进程的调度、隔离与资源分配。

​ 对于我们而言,理解进程的底层逻辑(如通过 /proc 目录查看进程信息、通过 ps 命令分析运行状态)是优化程序性能、排查问题的重要基础。而这一切的背后,始终贯穿着操作系统的核心使命——以安全、高效的方式,为程序提供执行环境。


以上就是本文的所有内容了,如果觉得文章写的不错,还请留下免费的赞和收藏,也欢迎各位大佬在评论区交流

分享到此结束啦
一键三连,好运连连!

相关文章:

【Linux我做主】深入探讨从冯诺依曼体系到进程

从冯诺依曼体系到进程 从冯诺依曼体系到进程github地址1. 前言2. 计算机硬件2.1 冯诺依曼体系结构2.2 冯诺依曼模型的三大要点2.3 从QQ聊天认识:冯诺依曼体系下数据是如何流动的?发送方数据流动接收方数据流动 3. 计算机软件的根基——操作系统3.1 操作系…...

idea更换jdk版本操作

有时候我们有更换jdk版本的问题,自己电脑可能有多个版本,下面来介绍修改jdk版本修改修改什么地方 1 2 3 4 5 6 再修改pom即可,还有环境变量即可,希望有帮到大家!...

npm install下载插件无法更新package.json和package-lock.json文件的解决办法

经过多番查证,使用npm config ls查看相关配置等方式,最后发现全局的.npmrc文件的配置多写了globaltrue,去掉就好了 如果参数很多,不知道是哪个参数引起的,先只保留registryhttp://xxx/,试试下载&#xff0…...

机器学习实操 第二部分 神经网路和深度学习 第13章 使用TensorFlow加载和预处理数据

机器学习实操 第二部分 神经网路和深度学习 第13章 使用TensorFlow加载和预处理数据 内容概要 第13章深入探讨了如何使用TensorFlow加载和预处理数据。本章首先介绍了tf.data API,它能够高效地加载和预处理大规模数据集,支持并行文件读取、数据打乱、批…...

WebSoket的简单使用

一、WebSocket简介 1.1、双向通信/全双工 客户端和服务器之间同时双向传输,全双工通信允许客户端和服务器随时互相发送消息,不需等一方发送请求后另一方才进行响应。 适用要低延迟/实时交互的场景,如在线游戏、即时通讯、股票行情等。 1.2…...

01_线性表

一、线性表的顺序存储 逻辑上相邻的数据元素,物理次序也相邻。占用连续存储空间,用“数组”实现,知道初始位置就可推出其他位置。 00_宏定义 // 函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #defin…...

STL详解 - map和set

目录 一、关联式容器概述 二、键值对 三、树形结构的关联式容器 (一)set 1. set的介绍 2. set的使用 (1)模板参数列表 (2)构造函数 (3)迭代器函数 (4&#xff…...

SpringBoot 集成滑块验证码AJ-Captcha行为验证码 Redis分布式 接口限流 防爬虫

介绍 滑块验证码比传统的字符验证码更加直观和用户友好,能够很好防止爬虫获取数据。 AJ-Captcha行为验证码,包含滑动拼图、文字点选两种方式,UI支持弹出和嵌入两种方式。后端提供Java实现,前端提供了php、angular、html、vue、u…...

高并发PHP部署演进:从虚拟机到K8S的DevOps实践优化

一、虚拟机环境下的部署演进 1. 低并发场景&#xff08;QPS<10&#xff09;的简单模式 # 典型部署脚本示例 ssh userproduction "cd /var/www && git pull origin master" 技术痛点&#xff1a; 文件替换期间导致Nginx返回502错误&#xff08;统计显示…...

vue引入物理引擎matter.js

vue引入物理引擎matter.js 在 Vue 项目中集成 Matter.js 物理引擎的步骤如下: 1. 安装 Matter.js npm install matter-js # 或 yarn add matter-js2. 创建 Vue 组件 <template><div ref="physicsContainer" class="physics-container"><…...

【实战项目】简易版的 QQ 音乐:一

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;能自我实现简易版的 QQ 音乐。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! > 专栏选自&#xff1a…...

部署Superset BI(三)连接HANA数据库

metabase和redash都不支持HANA数据库&#xff0c;选择superset就是看重这一点&#xff0c;开始尝试连接HANA数据库。 按Superset的技术文档&#xff1a;pip install hdbcli sqlalchemy-hana or pip install apache-superset[hana] --进入容器 rootNocobase:/usr/superset/supe…...

快速学会Linux的WEB服务

一.用户常用关于WEB的信息 什么是WWW www是world wide web的缩写&#xff0c;及万维网&#xff0c;也就是全球信息广播的意思 通常说的上网就是使用www来查询用户所需要的信息。 www可以结合文字、图形、影像以及声音等多媒体&#xff0c;超链接的方式将信息以Internet传递到世…...

如何搭建spark yarn模式集群的集群

以下是搭建 Spark YARN 模式集群的一般步骤&#xff1a; 准备工作 确保集群中各节点已安装并配置好 Java 环境&#xff0c;且版本符合 Spark 要求。规划好集群中节点的角色&#xff0c;如 Master 节点、Worker 节点等&#xff0c;并确保各节点之间网络畅通&#xff0c;能相互…...

端口安全基本配置

1.top图 2.交换机配置 交换机swa <SWA> system-view [SWA] vlan batch 10 20[SWA] interface GigabitEthernet0/0/1 [SWA-GigabitEthernet0/0/1] port link-type trunk [SWA-GigabitEthernet0/0/1] port trunk allow-pass vlan 10[SWA] interface GigabitEthernet0/0/2 …...

【JsonCpp、Muduo、C++11】JsonCpp库、Muduo库、C++11异步操作

JsonCpp库、Muduo库、C11异步操作 1. JsonCpp库1.1 Json数据格式1.2 JsonCpp介绍1.3 JsonCpp使用 2. Muduo库2.1 Muduo库常见接口介绍2.1.1 TcpServer类基础介绍2.1.2 EventLoop类基础介绍2.1.3 TcpConnection类基础介绍2.1.4 Buffer类基础介绍2.1.5 TcpClient类基础介绍 2.2 M…...

【自然语言处理与大模型】LlamaIndex的词嵌入模型和向量数据库

&#xff08;1&#xff09;嵌入模型的定义和作用 嵌入模型&#xff08;Embedding Model&#xff09;的本质在于将高维的、稀疏的数据转换为低维的、密集的向量表示&#xff0c;使得这些向量能够在数学空间中表达原始数据的语义信息。作用如下&#xff1a; 降维表示&#xff1a;…...

SLAM算法工程师面经大全:2025年面试真题解析与实战指南

SLAM算法工程师面经大全&#xff1a;2025年面试真题解析与实战指南 一、SLAM技术概述与核心原理 1&#xff0e;SLAM基础理论框架 SLAM算法的核心在于同步定位与建图&#xff0c;这一过程涉及传感器数据融合、运动建模与优化方法。在传感器数据融合方面&#xff0c;不同类型的…...

虚拟现实视频播放器 2.6.1 | 支持多种VR格式,提供沉浸式观看体验的媒体播放器

虚拟现实媒体播放器是一款专为在智能手机上播放VR&#xff08;虚拟现实&#xff09;照片和视频而设计的应用程序。它支持多种格式的影像内容&#xff0c;包括360和180等距矩形柱面、标准镜头和鱼眼镜头拍摄的照片和视频&#xff0c;并且兼容3D立体并排、上/下以及收缩媒体格式。…...

从黔西游船侧翻事件看极端天气预警的科技防线——疾风气象大模型如何实现精准防御?

近日,贵州省黔西市一起载人游船侧翻事故令人痛心。调查显示,事发时当地突遇强风暴雨,水面突发巨浪导致船只失控。这一事件再次凸显:在极端天气频发的时代,传统“经验式防灾”已不足够,唯有依靠智能化的气象预警技术,才能筑牢安全底线。 极端天气预警的痛点:为什么传统方…...

颠覆监测体验!WM102无线温湿度记录仪开启智能物联新时代

当温湿度失控成为企业隐形成本杀手&#xff0c;您是否还在用传统设备疲于应对&#xff1f;一款集智能、精准、全能于一身的神器横空出世——WM102无线温湿度记录仪&#xff0c;用硬核科技重新定义环境监测&#xff01; ▌5大场景痛点 一招破解 无论是医药冷库里的疫苗守护战&am…...

Linux云服务器配置git开发环境

文章目录 1. 安装 git2. git clone3. git add .4. git commit -m 提交记录5. git push&#x1f351; 异常原因&#x1f351; 解决办法 6. git pull7. git log8. git rm9. git mv10. git status 1. 安装 git sudo yum install git -y2. git clone 此命令的作用是从远程仓库把代…...

山东大学软件学院项目实训-基于大模型的模拟面试系统-个人主页头像上传

采用图床的方案&#xff0c;存储用户头像。 实现步骤 引入OSS依赖 在我们的SpringBoot项目中引入OSS依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version> &l…...

AI智能体|扣子(Coze)实战【天气查询插件开发教程】

大家好&#xff0c;我是偶然&#xff0c;AI洞察&#xff0c;AI智能体&#xff0c;AI实战案例分享 今天教大家用 Coze 开发一个天气插件&#xff0c;本来我是想教大家怎么用 AI 写代码节点实现节点功能的&#xff0c;但是我感觉太复杂了。 起码来说&#xff0c;我还没做到用特别…...

VBA ListBox/ComboBox 响应鼠标滚轮操作

一般情况下&#xff0c;在Excel的vba窗口中&#xff0c;我们是无法使用鼠标滚轮控制例如 ListBox 和 ComboBox 控件的。我们只能通过鼠标点击的方式来逐个选择选项。 我们都知道&#xff0c;通过鼠标滚轮快速的上下滚动候选项&#xff0c;以快速的定位选择选项&#xff0c;这是…...

Linux 更改内存交换 swap 为 zram 压缩,减小磁盘写入

1、查看当前 swap 的方式 swapon --show 我这里是默认的 swap 文件&#xff0c;大小为 2G。 2、安装 zram Ubuntu 下&#xff1a; sudo apt install zram-tools安装后默认会启动&#xff1a; 3、关闭默认的 swap 文件 sudo swapoff /swapfile 其次是关闭 /etc/fstab 中的 …...

TypeScript简介

&#x1f31f; TypeScript入门 TypeScript 是 JavaScript 的超集&#xff0c;由微软开发并维护&#xff0c;通过静态类型检查和现代语言特性&#xff0c;让大型应用开发变得更加可靠和高效。 // 一个简单的 TypeScript 示例 interface User {name: string;age: number;greet():…...

Facebook如何运用AI实现元宇宙的无限可能?

引言 元宇宙&#xff08;Metaverse&#xff09;是一个虚拟的、由多个 3D 虚拟世界组成的网络&#xff0c;用户可以在其中进行互动、游戏、工作和社交。Facebook 作为全球最大的社交媒体平台之一&#xff0c;对元宇宙的构建和实现有着深远的影响。通过运用人工智能&#xff08;…...

【大语言模型ChatGPT+Python】近红外光谱数据分析及机器学习与深度学习建模(近红外光谱数据分析、定性/定量分析模型代码自动生成等)

近红外光谱数据分析是一种重要的分析技术&#xff0c;广泛应用于化学、食品、制药、农业、环境科学等领域。以下是关于近红外光谱数据分析的详细介绍&#xff1a; 一、基本原理 近红外光谱的范围 近红外光谱是指波长范围在780 - 2500纳米的电磁辐射。在这个波段&#xff0c;分子…...

ArcGIS Pro图斑属性自动联动更新-在线卫星底图图斑采集

今天介绍一下在ArcGIS Pro图斑属性自动联动更新 主要介绍内容&#xff1a; 1、ArcGIS Pro数据设计中属性规则的设置&#xff0c;实现图斑属性的自动更新与联动更新。 2、介绍ArcGIS Pro不能新建要素类图层的原因 3、包括新建字段等内容 4、deepseek查询arcade计算图斑面积语…...

OpenHarmony GPIO应用开发-LED

学习于&#xff1a; https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/driver/driver-platform-gpio-develop.md https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/driver/driver-platform-gpio-des.md 通过OpenHarmony官方文档指导可获知&#xff1a;芯片厂…...

C语言结构体内存对齐使用场景

#pragma pack(push, 1) 和 #pragma pack(pop) 的使用场景&#xff08;C语言&#xff09; 这两个预处理指令用于控制结构体成员的内存对齐方式&#xff0c;主要在以下场景中使用&#xff1a; 主要使用场景 网络通信协议处理 当需要精确控制结构体布局以匹配网络协议格式时 确…...

极速轻量,Rust 网络开发新选择:Hyperlane 框架深度解析

极速轻量&#xff0c;Rust 网络开发新选择&#xff1a;Hyperlane 框架深度解析 在高性能网络服务开发领域&#xff0c;Rust 凭借其内存安全与高效并发的特性备受青睐。今天&#xff0c;我们迎来一款专为现代 Web 服务打造的明星框架——Hyperlane&#xff0c;它以“轻量高效、…...

从零开始学习人工智能(Python高级教程)Day6-Python3 正则表达式

一、Python3 正则表达式 正则表达式是一个特殊的字符序列&#xff0c;它能帮助你方便的检查一个字符串是否与某种模式匹配。 在 Python 中&#xff0c;使用 re 模块来处理正则表达式。 re 模块提供了一组函数&#xff0c;允许你在字符串中进行模式匹配、搜索和替换操作。 r…...

UKCC(原OUCC)真题讲解(一)

题目链接&#xff1a;PRACTICE - 2025 Coding Challenge - UK Bebras 1.GreenStar 方法&#xff1a;使用模块 参考答案&#xff1a; 【知识点】 这里的长度100&#xff0c;是指中心到角的距离。 2.Draw a Square 参考答案&#xff1a; 【知识点】 在正多边形的图案中&#…...

Linux——特殊权限管理

Linux中的特殊权限&#xff08;setuid、setgid、sticky bit&#xff09;扩展了基本的文件权限机制&#xff0c;提供了更精细的控制。以下是详细说明&#xff1a; 1. SetUID&#xff08;SUID&#xff09; 作用&#xff1a;允许用户以文件所有者的权限执行文件。 例如&#xff1a…...

Ubuntu18.04搭建samda服务器

一.什么是Samba服务器&#xff1f; Samba服务器是一种基于开源协议实现的网络共享服务软件&#xff0c;主要用于在不同操作系统&#xff08;如Windows、Linux、Unix&#xff09;之间实现文件和打印机共享功能。其核心目标是解决跨平台资源共享的兼容性问题&#xff0c;尤其是在…...

vue3搭建后台管理系统

找menu菜单 上部用height设置高度和背景颜色 需要自己改左侧栏的边线 将el-menu的border设置为0,然后上方设置border-right设置边框 设置右边 创建data.vue input组件 导入icon图标 引入import 一个template 设置个card el-card 定义card 加el-button查询 el-table表单 …...

[学习]RTKLib详解:pntpos.c与postpos.c

文章目录 RTKLib详解&#xff1a;pntpos.c与postpos.cPart A: pntpos.c一、概述二、整体工作流程三、主要函数说明1. pntpos()2. satposs()3. estpos()4. rescode()5. prange()6. ionocorr()7. tropcorr()8. valsol()9. raim_fde()10. estvel() 四、函数调用关系图&#xff08;…...

64.微服务保姆教程 (七) RocketMQ--分布式消息中间件

RocketMQ–分布式消息中间件 一、MQ 1、什么是MQ MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队…...

邀约媒体,邀请到场 多少钱?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体胡老师。 在策划线下活动时&#xff0c;媒体邀约是提升品牌曝光度和影响力的重要环节。不同类型和规模的媒体邀约&#xff0c;其预算需求也各不相同。以下为各类媒体邀约的费用概览及影响因素&#…...

Android数据库全栈开发实战:Room+SQLCipher+Hilt企业级应用构建

简介 在移动应用开发中,数据库作为数据存储的核心组件,其安全性和性能对企业级应用至关重要。本文将从零开始,全面讲解Android数据库开发的最新技术,包括Room框架的深度使用、SQLCipher加密数据库的实现、Hilt依赖注入的集成以及前后端数据同步的完整方案。通过一个加密任…...

Kafka与RocketMQ在事务消息实现上的区别是什么?

一、Kafka事务消息核心实现&#xff08;基于2.8版本&#xff09; // KafkaProducer.java public synchronized Future<RecordMetadata> send(ProducerRecord<K, V> record) {// 事务消息校验&#xff08;第256行&#xff09;if (transactionManager ! null &&…...

Maven 依赖发布与仓库治理

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

hybird接口配置

【sw1】 [sw1]vlan batch 10 20 [sw1]int g 0/0/3 [sw1-GigabitEthernet0/0/1]port hybrid tagged vlan 10 20 [sw1-GigabitEthernet0/0/1]int g 0/0/1 [sw1-GigabitEthernet0/0/2]port hybrid pvid vlan 10 [sw1-GigabitEthernet0/0/2]port hybrid untagged vlan 10 20 …...

AI视频智能分析网关打造社区/工厂/校园/仓库智慧消防实现精准化安全管控

一、背景 随着社区、商业场所对消防安全要求日益提升&#xff0c;传统消防系统已难以满足智能化、精细化管理需求。智能分析网关融合物联网与人工智能技术&#xff0c;具备强大的数据处理与分析能力&#xff0c;可全面升级消防系统。将其融入消防系统各层级&#xff0c;搭建智…...

Web3 应用中常见的数据安全风险及防护措施

随着 Web3 技术的蓬勃发展&#xff0c;我们见证了一个全新的互联网时代的到来。Web3 应用以其去中心化、用户控制数据和透明性的特点&#xff0c;为用户提供了前所未有的体验。然而&#xff0c;这些应用在提供便利的同时&#xff0c;也带来了一系列数据安全风险。本文将探讨 We…...

免费视频压缩软件

一、本地软件&#xff08;支持离线使用&#xff09; 1. HandBrake 平台&#xff1a;Windows / macOS / Linux 特点&#xff1a;开源免费&#xff0c;支持多种格式转换&#xff0c;提供丰富的预设选项&#xff08;如“Fast 1080p”快速压缩&#xff09;&#xff0c;可自定义分…...

Java实用注解篇: @JSONField

前言 在 Java 开发中&#xff0c;进行对象与 JSON 的相互转换是一项常见操作&#xff0c;尤其在前后端分离的架构中显得尤为重要。Fastjson 作为阿里巴巴开源的 JSON 处理框架&#xff0c;因其高性能和强大功能而被广泛使用。JSONField 是 Fastjson 提供的一个注解&#xff0c;…...

浔川AI 第二次内测报告

浔川AI 第二次内测报告 执行社团&#xff1a;浔川社团官方联合会、总社团联合会 同意执行社团&#xff1a;总社团联合会 合作社团&#xff1a;暮烟社团官方联合会 合作分社团&#xff1a;浔川AI分社团、浔川AI分部 被执行内测程序&#xff1a;浔川AI 内测第二代 被执行内…...