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

操作系统 第2章节 进程,线程和作业

一:多道程序设计

1-多道程设计的目的

for:提高吞吐量(作业道数/处理时间),我们可以从提高资源的利用率出发

2-单道程序设计缺点:

设备的利用率低,内存的利用率低,处理机的利用率低

比如CPU去访问内存,CPU空转.内存等待CPU访问也是没有任何操作的.要是有多个东西要去访问不冲突的设备,单道就只有一个一个的等(明明可以直接同时访问的)

通过多道程序处理

中间的CPU等待访问设备A的时候,可以处理程序B,同时允许多个不冲突的设备同时访问

3-多道程序设计的道数的选择:

最好与系统资源数量相当.因为:如果过少,系统资源利用率低,如果过多,系统调度等等的开销过大

4-随着多道程序设计的思想到来,同时也带来了许多问题:

1:如果程序个数多于处理机数量,应该如何分配

2:存储资源的管理应该如何处理,比如:存储器地址的独立性or共享性?内存外存交换的分配和去配?相对地址和绝对地址的地址转换?

3:设备资源如果分配,比如:分配机制,IO控制等等

二:进程的引入

在多道程序系统中,一个程序是:推进,暂停,推进,暂停的

暂停:需要我们保存现场(PSW+PC,REG)然后跳转到目标位置

推进:恢复现场(REG,PSW+PC)然后跳转到目前的地址

1:进程的概念:

可参与并发执行的程序,进程是具有一定独立功能的程序关于一个数据集合的一次运行活动

(强调了并发和运行):注意哦,不是并行(微观也是同时,要求多CPU),是并发(宏观同时,微观交替)

2:进程状态和状态的转换

运行态:占用CPU中
就绪态:可以运行,等待CPU

等待态:等待某一个时间的发生

就绪->运行:获得CPU

运行->就绪:被剥夺CPU

运行->等待:申请资源,但是还没有送到

等待->就绪:得到资源

当然用户感受不到上面的转换过程

3:进程控制块

是程序的静态描述

有着:进程的

描述信息:

-:进程标识:pid

-:所属用户uid

进程的控制信息:

CPU,磁盘,网络流的使用情况

当前的进程状态

进程占有的资源信息:

在使用那些文件

在使用那些内存区域

在使用那些IO设备

处理机相关信息:PSW ,PC reg的值

4:进程的组成和上下文

组成:PCB+程序(代码+数据+堆栈)

进程上下文:

进程的物理实体和支持进程运行的物理条件是指进程上下文:

包括:PCB+程序,

环境系统:地址空间,系统栈,打开文件表,地址映射寄存器,通用寄存器,PSW+PC

上下文切换:

由一个进程的上下文切换到另外一个进程的上下文

系统开销:

运行操作系统完成系统管理工作所花费的时间和空间

5.进程的组织

链接形式

进程控制块(PCB)以队列形式组织,队列类型不限于单向或双向,也不一定遵循FIFO原则。

就绪队列:系统可包含一个或多个就绪队列

等待队列:每个等待事件对应一个独立的等待队列

运行指示字:每个处理机配备一个运行指示字

索引方式

执行指针:指向当前正在执行的进程块

就绪表指针:指向存储就绪态PCB的就绪索引表

阻塞表指针:指向存储阻塞态(等待)PCB的阻塞索引表

6:进程的类型与特征

分为系统进程,用户进程

系统进程:运行操作系统程序,完成系统管理功能.

系统启动后一直存在直到系统的关闭,执行一个无限的循环

管态,执行所有指令,优先级高于用户进程

用户进程:为用户服务,不一定用户自己写的

特征:

--:并发性:可以和其他进程一起推进

--:动态性:动态的产生,消亡,等待等等

--:独立性:单独的调度1单元

--:交往性:可以和其他进程交互

--异步性:可以格子独立,不可预知速度的推进

--:结构性:每个进程只有一个PCB

7:进程间相互联系和相互作用

联系:

相关进程:同一家族的进程,可以共享文件,需要相互同学,协调推进,(父进程可以监视子进程,子进程完成父进程提供的任务)

无关进程:没有逻辑关系,同时执行,但是有资源的竞争,互斥,死锁,饿死的问题

作用:

直接相互作用:发生在相关进程之间,有意识,无中间媒介

间接相互作用:发生在任何的进程之间,有媒介

8:进程的创建和撤销

创建的时候,需要分配内存+加载程序_入就绪队列

撤销的时候:需要去配资源,撤销PCB,通知父进程(有可能是正常的终止,指发生了地址越界偶然非法指令or 被kill)

(除了初始进程,其他的进程都是被父进程创建并形成家族的)

如果考虑创建和撤销这两个状态,正常的进程的状态转移图:

9:进程与程序的联系和差别:


差别

1-程序(代码段,数据结构集)是静态的,长期存放在磁盘的可执行文件,是一系列指令集合

2-进程是动态的,是程序的一次执行过程,有生命期

3-一个进程只能执行一个程序,一个程序可以被多个进程执行

联系:

进程包括一个程序,进程就是程序的几个运行

10.UNIX进程

PROC结构:保存的信息无论当进程在内存还是外存都是需要的

USER结构:内存中才是需要的,也可以和进程的程序一起移动到外存

-创建子进程

PID=fork()        //子进程是父进程的复制品,返回值是父进程为子进程的编号,子进程为0

-加载并执行新的程序

execl(prog,arg0,arg1......,)

后面的argx为参数,执行prog

-:撤销

exit(Status)  //Status为终止态, 然后唤醒父进程

-Abort终止进程

被终止子进程的父进程执行该指令.

可能因为:子进程使用资源过多or子进程任务超时or父进程退出OS,那么子进程也被禁止(但是在UNIX,子进程会以init为新的父进程)

当然也可以是kill来终止

pid=wait(&Status) //返回的是终止的子进程的PID,参数是子进程的终止状态

使用程序描述:

main()

    {

        int pid1,pid2,pid3,pid4,pid5,pid6,pid7,pid8;

        int  end_p1=end_p2=end_p3=end_p4=end_p5=…=end_p8=0;

        int pid, status;

        if((pid1=fork())= =0) execl("P1",0);

        wait(&status);

        if((pid2=fork())= =0) execl("P2",0);

        if((pid3=fork())= =0) execl("P3",0);

        if((pid4=fork())= =0) execl("P4",0);

        do{        //等待P2结束

              pid=wait(&status);

              if(pid= =pid2) end_p2=1;

              if(pid= =pid3) end_p3=1;

              if(pid= =pid4) end_p4=1;

        }while(end_p2= =0);

        

    if((pid5=fork())= =0) execl("P5",0);

    if((pid6=fork())= =0) execl("P6",0);

    do{        //等待P3和P6结束

            pid=wait(&status);

            if(pid= =pid3) end_p3=1;

            if(pid= =pid4) end_p4=1;

            if(pid= =pid5) end_p5=1;

            if(pid= =pid6) end_p6=1;

    }while(end_p3= =0||end_p6= =0);

    if((pid7=fork())= =0) execl("P7",0);

    do{        //等待P4,P5,P7结束

            pid=wait(&status);

            if(pid= =pid4) end_p4=1;

            if(pid= =pid5) end_p5=1;

            if(pid= =pid7) end_p7=1;

    }while(end_p4= =0||end_p5= =0||end_p7= =0);

     if((pid8=fork())= =0) execl("P8",0);

     wait(&status);

     exit(0);

}

11.vfork和fork

fork:复制地址空间(code,data,stack)和控制结构(proc,user)

特点:父进程和子进程都有独立的数据拷贝

问题:不加载新的程序:不能数据共享,不能描述有解缓冲区

     加载程序:复制可能没有意义,浪费空间

vfork:只复制了控制结构(proc+user),不复制地址空间

特点:

父进程和子进程共享地址空间

子进程可以使用execve改变其的虚拟地址空间

三:线程和轻进程

1.线程的引入:

为什么需要引入线程尼?

进程的切换需要上下文切换,但是内容太多了(PCB+程序+系统环境:地址空间,栈空间,文件表),开销太大了,而且一个进程可能也有很多个事情需要同时的去做,但是传统的进程不能够很好的去表达这些关系(没有良好的耦合关系),通讯也十分麻烦

所以就引入了线程,允许一个进程有多个线程,线程的上下文切换只涉及了reg和用户栈,而且线程之间的通讯也会更加的方便.

2.线程的概念:

概念:进程中的一个相对独立的执行流.

进程vs线程:

进程是资源的分配单位.

线程是执行的单位

多线程开发的优点:


-上下文切换快(地址空间不变)

-系统的开发小

-相关线程间的通讯容易(共享数据空间)

3.线程的结构:

下面是进程的:

下面是线程的:

4.线程控制块:

TCB:标志着线程存在的数据结构,其中包含了对线程管理所需要的全部信息

(包括了:线程标识,现场状态,调度参数,现场(通用寄存器,PC,SP),链接指针)

存放在对应的级别的空间:

用户线程:目态空间

核心线程:系统空间

5.线程的实现:

用户级线程ULT:

特点:

-基于library函数创建,系统不可见

-线程的创建,撤销,状态转换都发生在目态(TCB在用户空间)

-TCB在用户空间,一个进程一个系统栈

-进程的状态复杂

优点:

-不依赖操作系统,调度灵活

-同一进程中多线程切换快(不切换地址空间,共享数据空间)

缺点:

-同一个进程的线程不是真正的并行

-一个线程受阻,进程的其他线程阻塞

核心级线程KLT:

特点:

-基于系统调用实现

-创建,撤销和状态的转换由操作系统完成(TCB在系统空间)

-线程是CPU调度的基本单位,进程的状态没有意义

优点:

-同一个进程的多线程可以并行的执行

-一个现场进入核心等待,其他的进程可以执行(多CPU)

缺点:

-系统的开销大,同一个进程的多线程切换慢

-调度由系统实现,调度算法不够灵活

混合线程:

结构:

6.线程的应用:

-处理内在由多控制流,有合作,需要数据共享的背景

-多线程优于多进程(切换上下文数量级差100倍)

-提高处理机和设备的并行性

-多处理机环境适合多线程的运用

例子:

对于一个IDE,一个线程用于检查代码的语法逻辑,一个用于渲染代码不同意义的字体颜色,一个实现定时时钟的定时保存

再比如一个WEB server请求,直接pop up 一个线程让其去处理就好了

7.java线程:

四个状态:

New:新创建的线程

Runnable:可运行状态

Blocked:封锁状态

Dead:终止状态

JVM:

java虚拟机:处于java和操作系统之间,做到了java的良好的跨平台性质

java线程与操作系统线程之间的对应关系由JVM确定

四:作业

1.作业的概念:

用户要求计算机系统为其完成的计算任务集合

2.作业步:

作用处理过程中一个相对独立的步骤,一般一个作业步可由一个进程完成,某些作业步之间可以实现并行.

3.作业控制块:

表示作业存在的数据结构其中包含系统对作业管理所需要的全部信息:作业名称,作业状态,调度参数,资源需求,相关进程,作业长度,在输入井和输出井中的存放位置,记账信息

作业的分类:


批处理作业和交互式作业

-作业控制语言(JCL):描述批处理作业控制意图的语言

-作业说明书(JCL语句的序列):一般一个特殊符号起始

-作业控制程序:解释并处理作业说明书的程序

-作业控制进程:执行作业控制程序的进程

批处理作业:


-1:作业由假脱机输入程序输入到输入井

-2:经过OS的调度程序选中后进入内存

-3:同时由作业调度程序为其建立作业控制进程,执行作业控制程序

-4:作业控制进程解毒读作说明书的语句,并且根据作业步的要求建立对应的进程

交互式作业:

账户管理:

/etc/passwd文件(用户名,口令,用户根目录,同组用户,余额)

操作:
创建:由用户提供,or系统建立

撤销:删除用户目录机器对应的文件,在passwd中删除对应的entry

注册:

login:用户名

password:***

使用...

注销:

显式注销:logoff or 隐式注销(无操作)

作业

总结:作业进入内存后变为进程进行执行,一个作业一般有多个进程,一个进程一般又会划分为一个偶or多个线程进行执行(如果不支持的话就会单线程执行)

相关文章:

操作系统 第2章节 进程,线程和作业

一:多道程序设计 1-多道程设计的目的 for:提高吞吐量(作业道数/处理时间),我们可以从提高资源的利用率出发 2-单道程序设计缺点: 设备的利用率低,内存的利用率低,处理机的利用率低 比如CPU去访问内存,CPU空转.内存等待CPU访问也是没有任何操作的.要是有多个东西要去访问不冲…...

数字化转型-4A架构之数据架构

系列文章 数字化转型-4A架构(业务架构、应用架构、数据架构、技术架构) 数字化转型-4A架构之业务架构 数字化转型-4A架构之应用架构 数据架构 Data Architecture(DA) 1. 定义 数据架构,是组织管理数据资产的科学之…...

Java中的反射

目录 什么是反射 反射的核心作用 反射的核心类 反射的基本使用 获取Class对象 创建对象 操作字段(Field) 调用方法(Method) 反射的应用场景 反射的优缺点 优点 缺点 示例:完整反射操作 总结 什么是反射 …...

LINUX CFS算法解析

文章目录 1. Linux调度器的发展历程2. CFS设计思想3. CFS核心数据结构3.1 调度实体(sched_entity)3.2 CFS运行队列(cfs_rq)3.3 任务结构体中的调度相关字段 4. 优先级与权重4.1 优先级范围4.2 权重映射表 (prio_to_weight[])优先级计算4.3.1. static_prio (静态优先级)4.3.2. n…...

内网渗透——红日靶场三

目录 一、前期准备 二、外网探测 1.使用nmap进行扫描 2.网站信息收集 3.漏洞复现(CVE-2021-23132) 4.disable_function绕过 5.反弹shell(也,并不是) 6.SSH登录 7.权限提升(脏牛漏洞) 8.信息收集 9.上线msf 三…...

The 2024 ICPC Kunming Invitational Contest G. Be Positive

https://codeforces.com/gym/105386/problem/G 题目&#xff1a; 结论&#xff1a; 从0开始每四个相邻数的异或值为0 代码&#xff1a; #include<bits/stdc.h> using namespace std; #define int long long void solve() {int n;cin >> n;if(n1||n%40){cout &…...

CommunityToolkit.Mvvm详解

属性可视化 给一个属性添加ObservableProperty就可以可视化了 [ObservableProperty] private string currentNameInfo;[ObservableProperty] private string currentClassInfo;[ObservableProperty] private string currentPhoneInfo;xaml中只需要绑定大写的属性就可以了 &l…...

密码学--AES

一、实验目的 1、完成AES算法中1轮加密和解密操作 2、掌握AES的4个基本处理步骤 3、理解对称加密算法的“对称”思想 二、实验内容 1、题目内容描述 &#xff08;1&#xff09;利用C语言实现字节代换和逆向字节代换&#xff0c;字节查S盒代换 &#xff08;2&#xff09;利…...

操作系统的初步了解

目录 引言&#xff1a;什么是操作系统&#xff1f; 一、设计操作系统的目的 二、操作系统是做什么的&#xff1a; 操作系统主要有四大核心任务&#xff1a; 1. 管理硬件 2. 运行软件 3. 存储数据 4. 提供用户界面 如何理解操作系统的管理呢&#xff1f; 1. 什么是操作…...

边缘计算:技术概念与应用详解

引言 随着物联网&#xff08;IoT&#xff09;、5G 和人工智能&#xff08;AI&#xff09;的快速发展&#xff0c;传统的云计算架构在处理海量数据和实时计算需求时逐渐显现出瓶颈。边缘计算&#xff08;Edge Computing&#xff09;作为一种新兴的计算范式&#xff0c;通过将计…...

C++进阶--红黑树的实现

文章目录 红黑树的实现红黑树的概念红黑树的规则红黑树的效率 红黑树的实现红黑树的结构红黑树的插入变色单旋&#xff08;变色&#xff09;双旋&#xff08;变色&#xff09; 红黑树的查找红黑树的验证 总结&#xff1a;结语 很高兴和大家见面&#xff0c;给生活加点impetus&a…...

[C++类和对象]类和对象的引入

面向过程和面向对象 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用来逐步解决问题 C是基于面向对象的,关注的是对象,将一件事情分成不同的对象,靠对象之间完成交互 类的引入 C语言结构体中只能定义变量,在C中,结构体不仅仅可以定义变量,而且可以定义函…...

YOLOv12云端GPU谷歌免费版训练模型

1.效果 2.打开 https://colab.research.google.com/?utm_sourcescs-index 3.上传代码 4.解压 !unzip /content/yolov12-main.zip -d /content/yolov12-main 5.进入yolov12-main目录 %cd /content/yolov12-main/yolov12-main 6.安装依赖库 !pip install -r requirements.…...

课程审核流程揭秘:确保内容合规与用户体验

业务流程 为什么课程审核通过才可以发布呢&#xff1f; 这样做为了防止课程信息有违规情况&#xff0c;课程信息不完善对网站用户体验也不好&#xff0c;课程审核不仅起到监督作用&#xff0c;也是 帮助教学机构规范使用平台的手段。 如果流程复杂用工作流 说明如下&#xff…...

【LangChain高级系列】LangGraph第一课

前言 我们今天直接通过一个langgraph的基础案例&#xff0c;来深入探索langgraph的核心概念和工作原理。 基本认识 LangGraph是一个用于构建具有LLMs的有状态、多角色应用程序的库&#xff0c;用于创建代理和多代理工作流。与其他LLM框架相比&#xff0c;它提供了以下核心优…...

ATH12K 驱动框架

ATH12K 驱动框架 ath12k驱动框架及模块交互逻辑详解1. 总体架构2. 关键数据结构2.1 核心数据结构2.2 虚拟接口数据结构3. 硬件抽象层(HAL)4. 无线管理接口(WMI)5. 主机目标通信(HTC)6. 数据路径(DP)6.1 发送路径(TX)6.2 接收路径(RX)7. 多链路操作(MLO)8. 初始化和工作流程8.1 …...

CMA认证对象?CMA评审依据,CMA认证好处

CMA认证对象 CMA&#xff08;中国计量认证&#xff0c;China Metrology Accreditation&#xff09;的认证对象主要是第三方检测机构和实验室&#xff0c;包括&#xff1a; 独立检测机构&#xff1a;如环境监测站、产品质量检验所、食品药品检测机构等。 企业内部实验室&#…...

依赖关系-根据依赖关系求候选码

关系模式R&#xff08;U, F&#xff09;, U{}&#xff0c;F是R的函数依赖集&#xff0c;可以将属性分为4类&#xff1a; L: 仅出现在依赖集F左侧的属性 R: 仅出现在依赖集F右侧的属性 LR: 在依赖集F左右侧都出现的属性 NLR: 在依赖集F左右侧都未出现的属性 结论1: 若X是L类…...

解决应用程序在JAR包中运行时无法读取类路径下文件的问题

问题情景 java应用程序在IDE运行正常&#xff0c;打成jar包后执行却发生异常&#xff1a; java.io.FileNotFoundException: class path resource [cert/sync_signer_pri_test.key] cannot be resolved to absolute file path because it does not reside in the file system:…...

第十六届蓝桥杯B组第二题

当时在考场的时候这一道题目 无论我是使用JAVA的大数&#xff08;BIGTHGER&#xff09;还是赛后 使用PY 都是没有运行出来 今天也是突发奇想在B站上面搜一搜 看了才知道这也是需要一定的数学思维 通过转换 设X来把运算式精简化 避免运行超时 下面则是代码 public class lanba…...

龙虎榜——20250509

上证指数今天缩量&#xff0c;整体跌多涨少&#xff0c;走势处于日线短期的高位~ 深证指数今天缩量小级别震荡&#xff0c;大盘股表现更好~ 2025年5月9日龙虎榜行业方向分析 一、核心行业方向 军工航天 • 代表个股&#xff1a;航天南湖、天箭科技、襄阳轴承。 • 驱动逻辑…...

node提示node:events:495 throw er解决方法

前言 之前开发的时候喜欢使用高版本&#xff0c;追求新的东西&#xff0c;然后回头运行一下之前的项目提示如下 项目技术栈&#xff1a;node egg 报错 node:events:495 throw er; // Unhandled error event ^ Error: ENOENT: no such file or directory, scandir F:\my\gi…...

OrangePi Zero 3学习笔记(Android篇)4 - eudev编译(获取libudev.so)

目录 1. Ubuntu中编译 2. NDK环境配置 3. 编译 4. 安装 这部分主要是为了得到libudev&#xff08;因为原来的libudev已经不更新了&#xff09;&#xff0c;eudev的下载地址如下&#xff1a; https://github.com/gentoo/eudev 相应的代码最好是在Ubuntu中先编译通过&#…...

[AI ][Dify] Dify Tool 插件调试流程详解

在使用 Dify 进行插件开发时,调试是必不可少的环节。Dify 提供了远程服务调试的能力,让开发者可以快速验证插件功能和交互逻辑。本文将详细介绍如何配置环境变量进行插件调试,并成功在插件市场中加载调试状态的插件。 一、调试环境配置 在 Dify 的插件调试过程中,我们需要…...

learning ray之ray强化学习/超参调优和数据处理

之前我们掌握了Ray Core的基本编程&#xff0c;我们已经学会了如何使用Ray API。现在&#xff0c;让我们将这些知识应用到一个更实际的场景中——构建一个强化学习项目&#xff0c;并且利用Ray来加速它。 我们的目标是&#xff0c;通过Ray的任务和Actor&#xff0c;将一个简单…...

gpu硬件,gpu驱动,cuda,CUDA Toolkit,cudatoolkit,cudnn,nvcc概念解析

组件角色依赖关系GPU硬件无CUDA编程模型/平台需NVIDIA GPU和驱动CUDA Toolkit开发工具包&#xff08;含NVCC、库等&#xff09;需匹配GPU驱动和CUDA版本cuDNN深度学习加速库需CUDA ToolkitNVCCCUDA代码编译器包含在CUDA Toolkit中 GPU硬件&#xff1a; 硬件层面的图形处理器&…...

【C/C++】范围for循环

&#x1f4d8; C 范围 for 循环详解&#xff08;Range-based for loop&#xff09; 一、什么是范围 for 循环&#xff1f; 范围 for 循环&#xff08;Range-based for loop&#xff09; 是 C11 引入的一种简化容器/数组遍历的方式。它通过自动调用容器的 begin() 和 end() 方法…...

嵌入式开发学习(第二阶段 C语言基础)

C语言&#xff1a;第4天笔记 内容提要 流程控制 C语句数据的输入与输出 流程控制 C语句 定义 C程序是以函数为基础单位的。一个函数的执行部分是由若干条语句构成的。C语言都是用来完成一定操作的任务。C语句必须依赖于函数存在。 C程序结构 C语句分类 1.控制语句 作…...

大物重修之浅显知识点

第一章 质点运动学 例1 知识点公式如下&#xff1a; 例2 例3 例4 例5 例6 第四章 刚体的转动 例1 例2 例3 例4 例5 例6 第五章 简谐振动 例1 例2 例3 第六章 机械波 第八章 热力学基础 第九章 静电场 第十一章 恒定磁场…...

随笔-近况

好久没写了&#xff0c;手都生了。 我写的东西可以分为两类&#xff1a;技术和随笔。当然技术没有我自己创新的&#xff0c;都是些在解决问题过程中查询了很多资料&#xff0c;经过验证后&#xff0c;可以在项目上使用的。但是自从 deepseek 出现后&#xff0c;问题一下子简单…...

赤色世界 陈默传 第一章 另一个陈默

赤色世界 陈默传 第一章 另一个陈默 陈默在一片纯白的空间中缓缓睁开眼睛。没有声音&#xff0c;没有光影的变化&#xff0c;只有无尽的空白包围着他&#xff0c;仿佛整个世界被擦去了所有的色彩和形状。他站在那里&#xff0c;赤脚踩在这片空无一物的地面上&#xff0c;却能感…...

isp流程介绍(yuv格式阶段)

一、前言介绍 前面两章里面&#xff0c;已经分别讲解了在Raw和Rgb域里面&#xff0c;ISP的相关算法流程&#xff0c;从前面文章里面可以看到&#xff0c;在Raw和Rgb域里面&#xff0c;很多ISP算法操作&#xff0c;更像是属于sensor矫正或者说sensor标定操作。本质上来说&#x…...

关于大数据的基础知识(一)——定义特征结构要素

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于大数据的基础知识&#xff08;一&a…...

C++(1):整数常量

目录 一、进制表示 二、后缀指定类型 三、示例与注意 四、总结表 一、进制表示 十进制&#xff08;Decimal&#xff09; 格式&#xff1a;无前缀&#xff0c;由数字 0-9 组成。 示例&#xff1a;123、42。 注意&#xff1a;不能以 0 开头&#xff08;否则会被视为八进制&a…...

C# NX二次开发:宏录制实战讲解(第一讲)

今天要讲的是关于NX软件录制宏操作的一些案例。 下面讲如何在NX软件中复制Part体的录制宏。 NXOpen.Session theSession NXOpen.Session.GetSession(); NXOpen.Part workPart theSession.Parts.Work; NXOpen.Part displayPart theSession.Parts.Display; NXOpe…...

C++:书架

【描述】 John最近买了一个书架用来存放奶牛养殖书籍&#xff0c;但书架很快被存满了&#xff0c;只剩最顶层有空余。 John共有N头奶牛(1 ≤ N ≤ 20,000)&#xff0c;每头奶牛有自己的高度Hi(1 ≤ Hi ≤ 10,000)&#xff0c;N头奶牛的总高度为S。书架高度为B(1 ≤ B ≤ S <…...

34.笔记1

今天&#xff0c;我们回顾回顾曾经的知识。 1.二分 还记得当初的二分吗&#xff1f; 1.一开始的二分 就像下面这个故事&#xff1a; 有一只老鼠&#xff0c;躲在10个大瓷瓶后面。你的任务就是抓住这只老鼠&#xff0c;但在抓的过程会导致你选择的大瓷瓶成为分子碎片。 如…...

智慧工会服务平台建设方案Word(23页)

1. 引言 随着信息技术的快速发展&#xff0c;传统工会服务模式面临挑战&#xff0c;智慧工会服务平台应运而生。该平台旨在通过数字化手段&#xff0c;整合工会资源&#xff0c;优化服务流程&#xff0c;提高工作效率&#xff0c;为会员提供更加便捷、高效、个性化的服务体验。…...

常见降维算法分析

一、常见的降维算法 LDA线性判别PCA主成分分析t-sne降维 二、降维算法原理 2.1 LDA 线性判别 原理 &#xff1a;LDA&#xff08;Linear Discriminant Analysis&#xff09;线性判别分析是一种有监督的降维方法。它的目标是找到一个投影方向&#xff0c;使得不同类别的数据在…...

洛谷 P1179【NOIP 2010 普及组】数字统计 —— 逐位计算

题面:P1179 [NOIP 2010 普及组] 数字统计 - 洛谷 一&#xff1a;题目解释&#xff1a; 需要求一区间内数字 2 的出现次数。注意22则记为 2 次&#xff0c;其它没别的... 二&#xff1a;思路、 思想可以考虑动态规划需要计算在每一位上数字 2 的出现次数&#xff0c;然后将这些…...

互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-1

互联网大厂Java求职面试&#xff1a;基于RAG的智能问答系统设计与实现-1 场景背景 在某互联网大厂的技术面试中&#xff0c;技术总监张总正在面试一位名为郑薪苦的求职者。郑薪苦虽然对技术充满热情&#xff0c;但回答问题时总是带着幽默感&#xff0c;有时甚至让人哭笑不得。…...

学习黑客5 分钟读懂什么是 CVE?

5 分钟读懂什么是 CVE&#xff1f; ⏱️&#x1f510; 目标读者&#xff1a; 安全小白 风格&#xff1a; ***式清晰、循序渐进 篇幅&#xff1a; 5 分钟速读 &#x1f4d6; 目录 &#x1f680; 什么是 CVE&#xff1f;&#x1f914; 为什么要关注 CVE&#xff1f;&#x1f50d…...

SAM详解3.1(关于2和3的习题)

SAM SAMluogu5341SP8222SAM 推销一波前面的文章: SAM详解1 SAM详解2(初级应用) SAM详解3(SAM与AC自动机的相似性,SAM处理字符串匹配) luogu5341 题目链接 精简题意:给你一个字符串和 k k k,求 出现了 k k k 次的子串的长度 的出现次数 的最大值。 我们可以用 S…...

Java中医门诊系统源码 中医诊所系统源码

Java中医门诊系统源码 中医诊所系统源码 一、患者信息录入在中医问诊系统中&#xff0c;患者信息录入是第一步。系统会要求患者填写一些基本信息&#xff0c;如姓名、年龄、性别、职业等&#xff0c;以及一些关于健康状况的详细描述。这些信息将被系统自动保存&#xff0c;并用…...

Edwards爱德华STP泵软件用于操作和监控涡轮分子泵

Edwards爱德华STP泵软件用于操作和监控涡轮分子泵...

RabittMQ-高级特性2-应用问题

文章目录 前言延迟队列介绍ttl死信队列存在问题延迟队列插件安装延迟插件使用事务消息分发概念介绍限流非公平分发&#xff08;负载均衡&#xff09; 限流负载均衡RabbitMQ应用问题-幂等性保障顺序性保障介绍1顺序性保障介绍2消息积压总结 前言 延迟队列介绍 延迟队列(Delaye…...

deep seek简介和解析

deepseek大合集&#xff0c;百度链接:https://pan.baidu.com/s/10EqPTg0dTat1UT6I-OlFtg?pwdw896 提取码:w896 一篇文章带你全面了解deep seek 目录 一、deep seek是什么 DeepSeek-R1开源推理模型&#xff0c;具有以下特点&#xff1a; 技术优势&#xff1a; 市场定位&…...

Webug4.0靶场通关笔记24- 第29关Webshell爆破

目录 一、Webshell爆破原理分析 二、第29关webshell爆破渗透实战 1.环境搭建 2.打开靶场 3.暴力破解 &#xff08;1&#xff09;bp开启抓包模式 &#xff08;2&#xff09;输入密码12并抓包 &#xff08;3&#xff09;配置position &#xff08;4&#xff09;配置payl…...

Linux系统入门第十一章 --Shell编程之函数与数组

一、Shell函数 1、函数的用法 Shell函数可用于存放一系列的指令。在Shell脚本执行的过程中&#xff0c;函数被置于内存中&#xff0c;每次调用函数时不需要从硬盘读取&#xff0c;因此运行的速度比较快。在Shell编程中函数并非是必须的元素&#xff0c;但使用函数可以对程序进…...

【文件系统—散列结构文件】

文章目录 一、实验目的实验内容设计思路 三、实验代码实现四、总结 一、实验目的 理解linux文件系统的内部技术&#xff0c;掌握linux与文件有关的系统调用命令&#xff0c;并在此基础上建立面向随机检索的散列结构文件&#xff1b;## 二、实验内容与设计思想 实验内容 1.设…...