计算机操作系统(七)详细讲解进程的组成与特性,状态与转换
计算机操作系统(七)进程的组成与特性,状态与转换
- 前言
- 一、进程的组成
- 1. 什么是“进程”?
- 2. 进程的三个核心组成部分
- 2.1 PCB(进程控制块)—— 进程的“身份证+户口本”
- 2.2 程序段—— 进程的“任务清单”
- 2.3 数据段—— 进程的“材料箱”
- 总结
- 二、进程的特征
- 1. 动态性
- 2. 并发性
- 3. 独立性
- 4. 异步性
- 5. 结构性
- 总结:
- 三、进程的状态
- 1. 创建态
- 2. 就绪态
- 3. 运行态
- 4. 阻塞态
- 5. 终止态
- 6.状态转换图:
- 总结
- 四、进程的转换
- 1.创建态 → 就绪态
- 2. 就绪态 → 运行态
- 3. 运行态 → 就绪态
- 4. 运行态 → 阻塞态
- 5. 阻塞态 → 就绪态
- 6. 运行态 → 终止态
- 7. 为什么就绪态不能直接到阻塞态?
- 状态转换图:
- 五、进程的组织--链接方式和索引
- 1.PCB的“组织方式”:
- 1.1 链表链接:给PCB“分组排队
- 1. 执行态PCB:(唯一)
- 2. 就绪队列:
- 3. 阻塞队列:
- 2. 索引方式:给PCB“建花名册”,快速查找
- 1. 索引表是什么?
- 2. **为什么需要索引?**
- 3. 两种方式如何配合?
前言
- 前面的博客中,我们探讨了计算机操作系统的基本概念。
- 本节将深入解析进程的组成、特性,以及状态与转换机制。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的操作系统博客专栏
https://blog.csdn.net/2402_83322742/category_12916780.html?spm=1001.2014.3001.5482
一、进程的组成
1. 什么是“进程”?
-
先打个比方:你打开电脑上的“计算器”程序,这个程序开始运行的过程,就是一个 “进程”。
-
进程就像一个“正在干活的工人”,而它的组成部分,就是这个工人干活时需要的“工具包”“任务清单”和“材料”。
2. 进程的三个核心组成部分
2.1 PCB(进程控制块)—— 进程的“身份证+户口本”
-
是什么?
PCB是操作系统给每个进程单独创建的一个“小档案”,里面记录了这个进程的所有关键信息,比如:- 进程的“名字”(PID)、当前状态(是在运行、暂停还是排队等着?)
- 它的“优先级”(比如重要的进程优先干活)
- 它占用了哪些“资源”(比如用了多少内存、有没有占用打印机)
- 下一步该执行哪行代码(类似书签,记录进度)。
-
作用:
操作系统全靠这个“档案”来管理所有进程,比如决定先让哪个进程运行、怎么暂停/恢复进程。 -
类比: 就像老师手里的“学生档案”,记录了每个学生的学号、成绩、座位号,老师靠档案管理学生。
2.2 程序段—— 进程的“任务清单”
-
是什么?
程序段就是这个进程要执行的“代码”,也就是程序的逻辑步骤。
比如计算器程序的程序段,里面写着“如何计算加法”“如何显示数字”等具体的指令。 -
作用:
告诉计算机“该做什么”,是进程的“灵魂”。不管进程运行多少次,程序段的内容都是固定的(比如计算器的加法逻辑不会自己变)。
类比: 就像工人手里的“操作手册”,上面写着“第一步拧螺丝,第二步插电线”等具体步骤。
2.3 数据段—— 进程的“材料箱”
-
是什么?
数据段是进程运行时用到的“临时数据”,比如:- 计算器输入的数字(比如你输入的“1+2”)
- 程序运行中的中间结果(比如计算到一半的数值)
- 临时存储的用户设置(比如计算器的“主题颜色”)。
-
作用:
程序段执行时需要“数据”才能干活,数据段就是存放这些数据的地方。不同进程的数据段是隔离的(比如计算器和微信的数据不会混在一起)。
类比: 就像工人干活时用的“材料箱”,里面装着螺丝、电线、零件等,用完就清空(进程结束后数据段就没了)。
总结
- 当你打开“计算器”程序时,操作系统会创建一个 进程。
- 同时生成一个 PCB(记录这个进程的“身份信息”)。
- 把计算器的“程序代码”(程序段)加载到内存,告诉计算机“按这个逻辑干活”。
- 开辟一块内存空间作为 数据段,用来存放你输入的数字、计算结果等临时数据。
- 操作系统通过PCB管理这个进程,比如你最小化计算器时,PCB会记录它的“暂停状态”,等你恢复时继续运行。
二、进程的特征
1. 动态性
-
是什么?
进程不是“死的”,而是一个“动态变化的过程”。- 它会“出生”:比如你打开一个软件(程序运行,创建进程)。
- 会“干活”:在内存里执行代码、处理数据。
- 会“死亡”:关闭软件时,进程结束,资源被回收。
- 状态会变:比如从“运行中”变成“暂停”(你最小化窗口时),再变回“运行”。
-
和程序的区别:
程序是硬盘里的“静态文件”(比如微信安装包),而进程是程序“运行起来的实例”(打开的微信窗口就是一个进程)。
类比: 程序像“剧本”(静态不变),进程像“演员演剧本”(动态表演,有开始和结束)。
2. 并发性
-
是什么?
多个进程可以“同时存在”于内存中,一起运行(虽然CPU同一时间只能执行一个,但操作系统让它们“轮流快速切换”,看起来像同时进行)。
比如你一边用微信聊天(微信进程),一边用浏览器看网页(浏览器进程),一边听音乐(音乐进程),它们同时在内存里“活着”,只是CPU在它们之间快速切换执行。 -
作用:
让电脑能“一心多用”,提高效率。
类比: 就像老师同时管多个学生:一会儿给A讲题,一会儿给B批改作业,一会儿让C自己做题。虽然同一时间只处理一个,但快速切换,看起来像同时在做。
3. 独立性
-
是什么?
每个进程都是“独立的个体”,有自己的“私人资源”,互不干扰。- 资源隔离:比如微信进程的内存数据、打开的文件,计算器进程绝对碰不到(操作系统保证它们互相隔离)。
- 地位平等:每个进程都是操作系统分配资源的“基本单位”(比如分配内存、网络权限,都是以进程为单位)。
-
好处:
一个进程崩溃(比如微信卡死),不会影响其他进程(浏览器还能正常用)。
类比: 每个进程像“独立的房间”,房间里的东西(数据、资源)只有自己能用,别人进不来,也不会被别人的房间影响。
4. 异步性
-
是什么?
进程按自己的“节奏”运行,操作系统不确定它们的执行顺序,但最终结果正确。- 比如你同时下载文件(下载进程)和写文档(文档进程):
- 下载可能时快时慢(取决于网络),文档编辑也随时可能暂停/继续。
- 操作系统会根据规则(比如优先级)调度它们,但具体先执行谁、执行多久,进程自己不知道(“异步”就是“不同步”,没有严格的顺序)。
- 比如你同时下载文件(下载进程)和写文档(文档进程):
-
为什么没问题?
操作系统通过PCB记录每个进程的“进度”(比如执行到哪行代码),随时能暂停和恢复,保证最终结果正确。
类比: 像排队买奶茶,每个人点单、制作的速度不同(有人点复杂的奶茶慢,有人点简单的快),店员按规则(比如先来后到)处理,虽然顺序不确定,但最后每个人都能拿到自己的奶茶。
5. 结构性
-
是什么?
每个进程都必须“标配”三个部分:- PCB(进程控制块):相当于进程的“身份证”,记录它的所有信息(状态、资源、进度等),没有PCB的话,操作系统根本不知道这个进程存在。
- 程序段:进程要执行的代码(做事的逻辑)。
- 数据段:进程运行时用的临时数据(比如你输入的内容、中间结果)。
-
重点:PCB是进程存在的“唯一标志”!
只要操作系统里有一个进程,就一定有对应的PCB;反之,没有PCB的东西,就不是进程(比如普通的文件、数据)。
类比: 每个进程像一个“完整的人”,必须有“身份证(PCB)”+“大脑(程序段,指挥做事)”+“身体(数据段,存储临时信息)”,缺一不可。
总结:
- 动态性:进程是“活着的、会变的”,有出生、运行、死亡的过程。
- 并发性:多个进程能“同时存在”,一起在电脑里干活(轮流执行)。
- 独立性:每个进程有自己的“私人资源”,互不干扰、互不侵犯。
- 异步性:进程按自己的节奏运行,顺序不确定,但结果正确。
- 结构性:每个进程都必须有“PCB+程序段+数据段”三件套,PCB是它的“身份象征”。
三、进程的状态
1. 创建态
-
发生了什么?
当你打开一个程序(比如微信),操作系统开始“生”这个进程,分两步:
① 初始化PCB:给进程办“临时身份证”(记录PID、初始状态等基本信息),就像老师给新学生登记学号、座位号。
② 分配资源:给进程分“课桌”(内存空间)、“课本”(程序段代码)、“草稿纸”(数据段临时存储区),但还没让它“正式上课”(占用CPU)。 -
状态特点:
进程刚“诞生”,还没准备好运行,就像学生刚进教室,书包还没放好,老师还没让他开始做题。
2. 就绪态
-
发生了什么?
进程已经“万事俱备”:PCB办好,资源(内存、文件等)都拿到了,只差CPU“点名”让它运行。
就像学生坐在座位上,课本、笔都摆好了,举手等着老师说:“你来回答问题”(分配CPU时间片)。 -
关键:为什么不直接运行?
因为CPU同一时间只能“辅导”一个学生(执行一个进程),其他准备好的进程只能在“就绪队列”里排队,等CPU轮到自己。
3. 运行态
-
发生了什么?
CPU选中了这个进程,开始执行它的程序段代码,处理数据段里的数据。
就像老师叫到某个学生的名字,让他上台做题,此时这个学生“独占”老师的注意力(单核CPU下,同一时间只有一个进程在运行)。 -
两种情况会“下讲台”:
① 时间片用完:老师说“你先下去,下一个同学来”(CPU分配的时间到了,进程回到就绪态排队)。
② 主动“请假”:比如进程需要等用户点击按钮(进入阻塞态)。
4. 阻塞态
-
为什么会阻塞?
进程运行时遇到“等事件”的情况,比如:- 等用户输入(比如你在微信里还没打字,进程没法继续发消息)。
- 等文件读取(比如打开一个大文件,还没读完数据)。
- 等网络响应(比如网页还没加载完)。
这时进程“卡住了”,无法继续执行,只能“暂停”,把CPU让给其他就绪态的进程。
-
状态特点:
进程就像学生做题时发现“没草稿纸了”,举手跟老师说:“我等你拿纸来,现在先不做了”,然后放下笔,坐在座位上干等(不占用CPU,但保留PCB和资源)。
注意:阻塞态和就绪态的区别:就绪态是“能干活但没轮到”,阻塞态是“想干活但干不了,得等事件发生”。
5. 终止态
-
为什么会终止?
两种情况:
① 正常结束:进程完成任务(比如你关闭计算器,程序正常退出)。
② 异常终止:进程出错崩溃(比如微信突然卡死,操作系统强制结束它)。 -
操作系统在终止态做什么?
最重要的事:回收资源!- 归还内存(把“课桌”让给其他进程)。
- 关闭打开的文件(把“课本”放回书架)。
- 删除PCB(注销“学生档案”,操作系统不再知道这个进程存在)。
如果不回收,就像学生放学不收拾书包,占着课桌不放,时间长了教室会堆满垃圾(内存泄漏、资源浪费)。
6.状态转换图:
创建态 → 就绪态(准备好,等CPU)
就绪态 → 运行态(CPU选中,开始干活)
运行态 → 就绪态(时间片用完,回去排队)
运行态 → 阻塞态(等事件,被迫暂停)
阻塞态 → 就绪态(事件发生了,比如用户输入了,重新排队等CPU)
运行态/阻塞态 → 终止态(干活结束或出错,放学回家)
总结
- 创建态:进程刚“出生”,正在办身份证、分资源,还没准备好上课。
- 就绪态:进程万事俱备,在“就绪队列”里举手等CPU点名。
- 运行态:进程正在CPU上执行,就像学生在老师面前做题。
- 阻塞态:进程遇到“等事件”卡住了,暂时放下活,等事件好了再继续。
- 终止态:进程下课放学,操作系统回收它的所有资源,从此消失。
四、进程的转换
1.创建态 → 就绪态
- 条件:系统完成创建进程的所有准备(初始化PCB、分好资源)。
- 类比:你走进奶茶店,店员登记完你的信息(创建态),给你号码牌(10号),你去等待区坐着(就绪态)。
2. 就绪态 → 运行态
- 条件:CPU“调度”选中这个进程(店员喊:“10号顾客来点单!”)。
- 关键:就绪态是“排队等CPU”,运行态是“正在用CPU”,必须通过“调度”才能转换(就像必须等店员喊号才能去点单)。
3. 运行态 → 就绪态
- 两种情况:
① 时间片用完:CPU分配给进程的“时间配额”到了(比如店员说:“你先讲到这里,下一位!”),进程回到就绪队列重新排队。
② 主动让步:比如高优先级进程来了,当前进程被迫暂停(比如突然来了VIP顾客,店员让你稍等,先服务VIP)。 - 类比:你点单时,店员说:“你前面还有更急的顾客,先去后面重新排队吧!”你回到等待区(就绪态)。
4. 运行态 → 阻塞态
- 条件:进程需要“等待某个事件”(比如等用户输入、等文件读取、等网络响应)。
- 类比:你点单时发现“忘记带钱包”,只能对店员说:“我等回家拿钱包再来,现在先不买了”,然后站到旁边(阻塞态,不占用店员时间)。
5. 阻塞态 → 就绪态
- 条件:等待的事件发生了(比如你拿到钱包、文件读完了、网络通了)。
- 类比:你拿到钱包回来,店员给你新的号码牌(15号),你回到等待区重新排队(就绪态)。
- 注意:不能直接从阻塞态回到运行态!必须先到就绪态排队,等CPU再次调度(就像你拿完钱包回来,不能直接插队,必须重新排队等喊号)。
6. 运行态 → 终止态
- 两种情况:
① 正常结束:进程跑完所有代码(你点完单、付完款、拿到奶茶,离开店铺)。
② 异常终止:进程遇到错误无法修复(比如点单时系统崩溃,店员说:“今天没法帮你点了,下次再来”)。 - 关键:一旦进入终止态,进程“彻底消失”,资源被回收(你的排队记录被删除,座位被其他顾客占用)。
7. 为什么就绪态不能直接到阻塞态?
- 因为阻塞态的前提是“进程正在运行时遇到了等待事件”,就绪态的进程还没拿到CPU(没开始点单),根本没机会“卡住”。
- 类比:你在等待区排队(就绪态),还没轮到你点单,怎么会中途因为“没带钱包”卡住呢?只有轮到你点单(运行态)时,才可能遇到问题进入阻塞态。
状态转换图:
创建态 → 就绪态(办手续完毕,开始排队)
就绪态 → 运行态(被店员喊号,开始点单)
运行态 → 就绪态(时间到/让步,回去重新排队)
运行态 → 阻塞态(等事件,暂停点单,站到旁边)
阻塞态 → 就绪态(事件完成,重新拿号排队)
运行态 → 终止态(点单结束/出错,离开店铺)
五、进程的组织–链接方式和索引
- 每个进程都有一个PCB(进程控制块,相当于“学生档案”),当电脑运行很多进程时,操作系统需要把这些“档案”有条理地管起来,不然就会乱成一锅粥。
- 主要有两种“管理方法”:链表链接(按状态分组排队)和索引表查找(快速定位某个档案)。
1.PCB的“组织方式”:
1.1 链表链接:给PCB“分组排队
就像学校把学生按“状态”分成“上课组”“排队组”“等待组”,每个组用“链表”串起来,方便按组管理:
1. 执行态PCB:(唯一)
- 特点:同一时间只有一个进程在运行(单核CPU下),操作系统用一个“指针”直接指向这个PCB(比如老师手里的“当前答题学生”牌子)。
- 类比:全班只有一个学生在黑板上做题,老师一眼就能看到他,不需要排队。
2. 就绪队列:
- 结构:所有就绪态的PCB用“指针”连成一个“链表”(每个PCB里有一个“下一个就绪PCB”的地址)。
- 作用:操作系统要选下一个运行的进程时,直接从这个队列里按规则(比如优先级)挑一个,就像老师从“排队名单”里喊下一个学生。
- 类比:等待区的学生每人手里拿一张纸条,上面写着“下一个学生的学号”,连成一条“排队链”,老师按顺序喊人。
3. 阻塞队列:
- 特点:阻塞原因不同(比如等磁盘、等网络),会分成多个阻塞队列。
- 比如“等待磁盘读取”的PCB组成一个队列,“等待用户输入”的组成另一个队列。
- 结构:每个PCB里有一个“阻塞队列指针”,指向同类型阻塞队列的下一个PCB。
- 类比:等待取快递的学生,按“快递类型”分组(比如等课本的一队,等零食的一队),每队用链表连起来,方便快递到了之后统一通知。
2. 索引方式:给PCB“建花名册”,快速查找
光有排队的链表还不够,操作系统需要快速找到某个特定的PCB(比如通过进程ID找对应的档案),这时候就需要“索引表”:
1. 索引表是什么?
- 相当于一个“花名册”,按进程ID(PID,类似学号)排序,每个条目记录“PID”和“对应PCB的地址”。
- 类比:老师手里的班级花名册,按学号排好,每个学号对应一个学生的座位号,老师喊“学号3号”,马上就能找到对应的学生。
2. 为什么需要索引?
- 链表适合“按组管理”(比如就绪队列按顺序调度),但如果要找“某个特定PID的进程”,链表需要从头开始一个个找,很慢。
- 索引表就像“字典”,可以通过PID直接“查字典”找到PCB的位置,速度飞快(比如查学号3号,直接翻到花名册第3页)。
3. 两种方式如何配合?
举个例子:你打开了微信(进程A,PID=100)、浏览器(进程B,PID=200)、音乐播放器(进程C,PID=300)
-
链表分组:
- 假设当前微信在运行(执行态),浏览器和音乐播放器在就绪队列里排队(链表:B→C)。
- 如果浏览器需要等网络加载网页(进入阻塞态),会被移到“等待网络”的阻塞队列,链表变成:C(就绪),B(阻塞-网络队列)。
-
索引表查找:
- 操作系统维护一个索引表,条目是:
- PID=100 → PCB_A的地址(微信)
- PID=200 → PCB_B的地址(浏览器)
- PID=300 → PCB_C的地址(音乐播放器)
- 当你想终止浏览器进程时,通过PID=200直接在索引表找到PCB_B,不管它在哪个队列,都能快速定位并操作。
- 操作系统维护一个索引表,条目是:
以上就是对本次关于操作系统博客内容的总结,后续我们将深入探讨操作系统更多知识。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的操作系统博客专栏
https://blog.csdn.net/2402_83322742/category_12916780.html?spm=1001.2014.3001.5482
非常感谢您的阅读,喜欢的话记得三连哦 |
相关文章:
计算机操作系统(七)详细讲解进程的组成与特性,状态与转换
计算机操作系统(七)进程的组成与特性,状态与转换 前言一、进程的组成1. 什么是“进程”?2. 进程的三个核心组成部分2.1 PCB(进程控制块)—— 进程的“身份证户口本”2.2 程序段—— 进程的“任务清单”2.3 …...
【2025.5.12】视觉语言模型 (更好、更快、更强)
【2025.5.12】Vision Language Models (Better, Faster, Stronger): https://huggingface.co/blog/vlms-2025 【2024.4.11】Vision Language Models Explained【先了解视觉语言模型是什么】: https://huggingface.co/blog/vlms nanoVLM: https://github.…...
数据清洗ETL
ETL介绍 “ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL一词较常用在数据仓库,…...
STM32 实时时钟(RTC)详解
一、RTC 简介 RTC(Real Time Clock)即实时时钟,本质上是一个 32 位的秒级计数器: 最大计数值为 4294967295 秒,约合 136 年: 复制编辑 4294967295 / 60 / 60 / 24 / 365 ≈ 136 年 RTC 初始化时&#x…...
Java中的异常机制
目录 Error(错误) Exception(异常) 受检异常(Checked Exception) 非受检异常(Unchecked Exception) 图示总结: 异常处理机制 try-catch-finally throws关键字 图…...
计算机网络:怎么理解调制解调器的数字调制技术?
数字调制技术详解 数字调制技术是将数字比特流转换为适合在物理信道(如电缆、光纤、无线信道)传输的模拟信号的核心技术。通过改变载波(通常是正弦波)的幅度、频率或相位(或组合),将二进制数据映射到模拟波形上。其目标是高效利用频谱资源、提升抗干扰能力,并适应不同…...
【MySQL】自适应哈希详解:作用、配置以及如何查看
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
【sql】按照数据的日期/天 ,对入库数据做数量分类
我今天写SQL,发现我的时间的写法是“年-月-日 时:分:秒 ”, 我想要按照“年-月-日”分类,看看我每一天的入库数据量是多少,然后做出一个报表出来。 sql对时间的处理: SELECT DATE(update_time) AS date_only,COUNT(*…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-A. PostgreSQL常用函数速查表
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 PostgreSQL常用函数速查表:从数据清洗到分析的全场景工具集引言一、字符串处理函数1.1 基础操作函数1.2 模式匹配函数(正则表达式) 二、数…...
【软件测试】:推荐一些接口与自动化测试学习练习网站(API测试与自动化学习全攻略)
一、API测试练习平台 Postman Learning Center (https://learning.postman.com/) 特点:Postman官方学习中心,提供API测试完整教程(含视频、文档、沙盒环境) 练习场景:请求构造、环境变量、自动…...
iOS Safari调试教程
iOS Safari调试 本教程将指导您如何使用WebDebugX调试iOS设备上的Safari浏览器。通过本教程,您将学习如何连接iOS设备、调试Safari中的网页、分析性能问题以及解决常见的调试挑战。 准备工作 在开始调试iOS Safari之前,请确保您已经: 安装…...
Java 大视界——Java 大数据在智慧交通智能停车诱导系统中的数据融合与实时更新
面对城市停车资源错配导致的30%以上交通拥堵问题,本文以某新一线城市智慧交通项目为蓝本,深度解析Java大数据技术如何实现多源停车数据融合、动态路径规划与诱导策略优化。通过构建“感知-计算-决策”全链路系统,实现车位状态更新延迟<200…...
KUKA库卡焊接机器人智能气阀
在工业焊接的大舞台上,成本把控与环保考量愈发重要。KUKA 库卡焊接机器人智能气阀,作为前沿科技结晶,成为实现库卡焊接机器人节气的关键 “利器”,助力企业在降本增效与绿色发展之路上大步迈进。 智能气阀融合先进传感与智能调…...
react中安装依赖时的问题 【集合】
目录 依赖升级/更新 1、 npm install --save-dev 与 npm install 的区别 1. 安装位置(依赖类型) 2. package.json 中的区别 3. 示例 4. 何时使用哪种方式 2、npm install 和 yarn add 有什么不一样吗 命令语法: …...
【网络实验】-BGP-EBGP的基本配置
实验拓扑 实验要求: 使用两种方式建立不同AS号的BGP邻居,不同AS号路由器之间建立的邻居称为EBGP邻居 实验目的: 熟悉使用物理口和环回口建立邻居的方式 IP地址规划: 路由器接口IP地址AR1G0/0/012.1.1.1/24AR1Loopback 01.1.1…...
【嵌入式开发-按键扫描】
嵌入式开发-按键扫描 ■ 1. 按键■ 按键队列发送后在读取队列处理■ 定时器30ms扫描一次,并通过MsgAdd(msg); 发送出去。 ■ 2. 触摸屏处理■■ ■ 1. 按键 ■ 按键队列发送后在读取队列处理 // key queue #define KEY_QUEUE_MAX 5typedef enum {KEY_TYPE_IR 0,K…...
NineData 社区版 V4.1.0 正式发布,新增 4 条迁移链路,本地化数据管理能力再升级
NineData 社区版 V4.1.0 正式更新发布。本次通过新增 4 条迁移链路扩展、国产数据库深度适配、敏感数据保护增强等升级,进一步巩固了其作为高效、安全、易用的数据管理工具的定位。无论是开发测试、数据迁移,还是多环境的数据管理,NineData…...
TypeScript装饰器:从入门到精通
TypeScript装饰器:从入门到精通 什么是装饰器? 装饰器(Decorator)是TypeScript中一个非常酷的特性,它允许我们在不修改原有代码的情况下,给类、方法、属性等添加额外的功能。想象一下装饰器就像给你的代码…...
R语言学习--Day02--实战经验反馈
最近在做需要用R语言做数据清洗的项目,在网上看再多的技巧与语法,都不如在项目中实战学习的快,下面是我通过实战得来的经验。 判断Rstudio是否卡死 很多时候,我们在运行R语言代码时,即使只是运行框选的几行代码&#…...
《AI驱动的智能推荐系统:原理、应用与未来》
一、引言 在当今信息爆炸的时代,用户面临着海量的信息选择,从购物平台上的商品推荐到流媒体服务中的影视推荐,智能推荐系统已经成为我们日常生活中不可或缺的一部分。AI驱动的智能推荐系统通过分析用户的行为和偏好,为用户提供个性…...
AR禁毒:科技赋能,筑牢防毒新防线
过去,传统禁毒宣传教育方式对普及禁毒知识、提高禁毒意识意义重大。但随着时代和社会环境变化,其困境逐渐显现。传统宣传方式单一,主要依靠讲座、发传单、办展览。讲座形式枯燥,对青少年吸引力不足;发传单易被丢弃&…...
Ubuntu摄像头打开失败
如果遇见上面Ubuntu连接摄像头但无法打开如以上 先安装cheese apt install cheese 打开终端控制台,输入以下命令 ls /dev/video* 出现以上有设备的情况,我们采用以下解决 : 1、点击虚拟机->点击设置 2、 进入设置界面点击USB控制器&a…...
Ascend的aclgraph(七)AclConcreteGraph:capture_begin
1 回顾 在上一章Ascend的aclgraph(六)AclConcreteGraph中提到了capture_begin和capture_end两个函数,这2个函数是pybind形式,调用到torch_npu中去执行。 大概流程图如下: def __enter__(self):# Free as much memory as we can…...
JT/T 808 各版本协议字段级别对比与解析适配建议
文章目录 一、概述二、字段级对比表(以核心消息为例)三、版本文档结构差异分析四、Java 协议解析适配建议4.1、协议版本识别策略:4.2、可扩展消息体结构设计:4.3、字段兼容处理建议:4.4、推荐使用解析库或框架…...
Kafka 消费者组进度监控方法解析
#作者:张桐瑞 文章目录 前言一、使用 Kafka 自带命令行工具 kafka-consumer-groups 脚本二、使用 Kafka Java Consumer API 编程三、使用 Kafka 自带的 JMX 监控指标 前言 在 Kafka 消息队列系统中,对于 Kafka 消费者而言,监控其消费进度&a…...
国产大模型 “五强争霸”,决战 AGI
中国 AI 大模型市场正经历一场史无前例的洗牌!曾经 “百模混战” 的局面已落幕,字节、阿里、阶跃星辰、智谱和 DeepSeek 五大巨头强势崛起,形成 “基模五强” 新格局。这场竞争不仅是技术实力的较量,更是资源、人才与生态的全面博…...
lesson01-PyTorch初见(理论+代码实战)
一、初识PyTorch 二、同类框架 PyTorchVSTensorFlow 三、参数 对比 四、PyTorch生态 四、常用的网络层 五、代码分析 import torch from torch import autogradx torch.tensor(1.) a torch.tensor(1., requires_gradTrue) b torch.tensor(2., requires_gradTrue) c tor…...
几种运放典型应用电路
运算放大器简称:OP、OPA、OPAMP、运放。 一、电压跟随器 电压跟随器顾名思义运放的输入端电压与运放的输出电压相等 这个电路一般应用目的是增加电压驱动能力: 比如说有个3V电源,借一个负载,随着负载电流变大,3V就会变小说明3V电源带负载能力小,驱动能力弱,这个时候…...
Mybatis——动态sql
<if> 实现方式 动态标签 <if> 条件判断,进行sql语句拼接 成立则拼接 <where> 进行条件子句拼接,防止and重复 if案例 crtl alt L 格式化 <foreach>——用于批量操作(删除) <include>...
技术社区集锦
推荐地址 社区汇总地址 https://juejin.cn/post/7468935497799286834 社区 项目ValueValueGitHubgithub.com-----Giteegitee.com-----StackOverflowstackoverflow.com全球知名的技术问答网站博客园www.cnblogs.com开发者的知识分享社区稀土掘金juejin.cn技术内容分享与交流平…...
【Elasticsearch】DSL 篇
Elasticsearch 之 DSL 篇 介绍 Elasticsearch 提供了基于 JSON 的 DSL 语句来定义查询条件,其 JavaAPI 就是在组织 DSL 条件。 先学习 DSL 的查询语法,然后再基于 DSL 来对照学习 JavaAPI,就会事半功倍 json 格式,好理解&#…...
常见 RPC 协议类别对比
RPC(Remote Procedure Call,远程过程调用)协议是分布式系统中实现跨进程通信的核心机制之一。它允许客户端像调用本地函数一样调用远端服务器上的函数。 根据通信方式、数据编码方式和平台兼容性不同,常见的 RPC 协议分为以下几类…...
React系列——nvm、node、npm、yarn(MAC)
nvm,node,npm之间的区别 1、nvm:nodejs版本管理工具。nvm 可以管理很多 node 版本和 npm 版本。 2、nodejs:在项目开发时的所需要的代码库 3、npm:nodejs包管理工具。nvm、nodejs、npm的关系 nvm 管理 nodejs 和 npm…...
LeetCode 热题 100 230. 二叉搜索树中第 K 小的元素
LeetCode 热题 100 | 230. 二叉搜索树中第 K 小的元素 大家好,今天我们来解决一道经典的二叉搜索树问题——二叉搜索树中第 K 小的元素。这道题在 LeetCode 上被标记为中等难度,要求查找二叉搜索树中的第 K 小的元素。 问题描述 给定一个二叉搜索树的根…...
vscode - 笔记
1 IDE就用vscode,安装Remote-SSH插件通过SSH访问树莓派里的文件夹 写在开始:阿尔法Linux开发板学习开始 - 银色的音色 - 博客园 2 VSCode之Linux C/C开发和调试 VSCode之Linux C/C开发和调试 CMake代码编译 json配置_哔哩哔哩_bilibili 3 VS Code 凭…...
使用VSCode编辑Markdown+PlantUml
vscode :https://code.visualstudio.com/ 什么是markdown: Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。 Markdown 编写的文档可以导出 HTML 、Word、图像、PDF、Epub 等多种格式的文档。 在vscode上安装MarkDown相关…...
关于 Golang GC 机制的一些细节:什么是根对象?GC 机制的触发时机?
文章目录 关于 Golang GC 机制的一些细节:什么是根对象?GC 机制的触发时机?简要回顾 Golang GC 三色标记法的工作流程什么是根对象?GC 的触发时机? 关于 Golang GC 机制的一些细节:什么是根对象?…...
内存虚拟盘(RAMDisk)是什么?
内存虚拟盘(RAMDisk)是一种通过软件将计算机的部分物理内存(RAM)模拟为硬盘驱动器的技术,利用内存的高速读写特性显著提升数据访问效率。以下从原理、优势、实现方式及应用场景等方面详细解析: 1. 技术原…...
深入浅出入侵检测系统(IDS)的工作原理与应用场景
网络安全界的“火眼金睛”:入侵检测系统IDS 一、IDS简介:网络安全界的“火眼金睛” 在计算机安全领域,有一个“火眼金睛”的角色,它能在网络世界中识破各种“妖魔鬼怪”的伪装,及时发出警报,保护我们的数…...
AISBench benchmark评测工具实操-精度评测场景-采用命令行指定模型和数据集的方式
一、环境信息 1.1.硬件设备 昇腾Atlas800 I A2:910A 01:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d801 (rev 20) 1.2.软件信息 1.2.1模型: DeepSeek-R1-Distill-Qwen-1.5B 1.2.2.物理机系统: NAME="EulerOS" VERSION="2.0 …...
HTTP GET报文解读
考虑当浏览器发送一个HTTP GET报文时,通过Wireshark 俘获到下列ASCII字符串: GET /cs453/index.html HTTP/1.1 Host: gaia.cs.umass.edu User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) Acc…...
南审计院考研分享会 经验总结
汪学长 – 中科大 计科专硕 初试准备 数学先做真题,模拟题刷的越多分越高;408真题最重要,模拟题辅助;英语只做真题;政治9月份开始背 代码能力在低年级培养的重要性和路径 考研不选择机构原因 因为机构里面学习的框…...
Android多媒体——媒体解码流程分析(十四)
NuPlayer 的解码模块相对比较简单,统一使用了一个基类 NuPlayerDecoderBase 管理,该类中包含了一个 MediaCodec 的对象,实际解码工作全靠 MediaCodec。 一、解码器创建 解码器创建的入口在 NuPlayer 的 NuPlayer::instantiateDecoder() 函数调用时。NuPlayer 在执行 start(…...
学习threejs,使用Physijs物理引擎,通过控制重力,实现多米诺骨牌效果
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️Physijs 物理引擎1.1.1 ☘️…...
自由学习记录(60)
Lecture 16 Ray Tracing 4_哔哩哔哩_bilibili 老师说的“高频采样”问题是什么? 现在考虑一个特殊情况: ❗ 一个像素内,图像信号变化很剧烈(高频): 比如: 细网格纹理 马赛克背景 很高频的…...
Gartner《分布式和微服务架构中数据架构》学习心得
一、简介 随着信息技术的不断发展,软件架构也在持续演变以适应不断变化的业务需求。从传统的单体架构向分布式和微服务架构转变,给数据的管理带来了新的挑战和机遇。《Working With Data in Distributed and Microservices Architectures》研究针对在分布式和微服务架构中处…...
谷歌web第三方登录
1.在谷歌控制台创建客户端信息 https://console.cloud.google.com/auth/clients 注:在重定向的url中一定要是https开头的。 创建完成之后主要获取三个信息 clientID、secret、redirctUrl 2.配置pom <dependency><groupId>com.google.auth</group…...
ConfigMap 和 Secret 是否支持热更新
在 Kubernetes 中,ConfigMap 和 Secret 是否支持热更新取决于它们的使用方式和应用程序的行为。以下是详细分析: 1. ConfigMap 的热更新 场景 1:通过 Volume 挂载到 Pod 支持热更新: 如果 Pod 通过 volume 挂载 ConfigMap&#…...
时序数据库IoTDB分布式系统监控基础概述
在分布式系统环境中,系统性能调优与瓶颈定位一直是工程实践与架构设计中的关键挑战。面对诸如系统性能无法提升、查询延迟增加等问题,需要一套有效的监控体系来洞察系统的内部状态与运行情况。 可观测性概念 随着分布式架构的普及,可观测性…...
【乱码】前端js流式输出因为Uint8Array字节不完整导致乱码问题
【乱码】流式输出因为Uint8Array字节不完整导致乱码问题 function push() {reader.read().then(({ done, value }) > {if (done) { 问题代码 var a new Uint8Array([115,44,32,115,101,114,105,102,34,62,230]) var b new Uint8Array([156,136,60,47,115,112,97,110,62…...