-
【Linux】五种IO模型 + 非阻塞IO
这篇文章我们来讲讲Linux五种IO模型 + 非阻塞IO: 五种IO模型 非阻塞IO fcntl 非阻塞轮询模版 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 🌄其他专栏:C++学习笔记,C语言入门基础,python入门基础,C++刷题专栏 这里写目录标题 一,五种IO模型 二,非阻塞IO 1. fcntl 2. 非阻塞轮询模版 一,五种IO模型 IO = 等 + 拷贝 I/O 效率是 “减少等待” 和 “优化拷贝” 共同决定的。但在硬件相同,拷贝次数相同的场景下,减少等待时间是提高IO效率的关键。 阻塞IO:数据到来前,进程一直在read等,直到数据到来 非阻塞IO:如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULDBLOCK 错误码 非阻塞 IO 往往需要程序员循环的方式反复尝试读写文件描述符, 这个过程称为轮询. 这对 CPU 来说是较大的浪费, 一般只有特定场景下才使用. 信号驱动 IO:内核将数据准备好的时候, 使用 SIGIO 信号通知应用程序进行 IO操作。(属于同步IO,因为拷贝是自己完成的) IO 多路转接:同时等待多个文件描述符的就绪状态。 异步 IO:由内核在数据拷贝完成时, 通知应用程序(异步IO不参与 等 + 拷贝的任意一个过程) 同步 vs 异步: 同步IO:参与等 or 拷贝中任意一个阶段(调用方需要主动等待结果就绪,或要亲自处理结果)。同步通信:参与调用 or 等待返回结果任意一个阶段,调用返回,结果跟着返回。 异步:不参与任意一个阶段(调用方无需等待结果,由 “第三方”等待结果并处理,处理完后再通知调用方“完成了”)。 二,非阻塞IO 1. fcntl 一个文件描述符,默认都是阻塞 IO。fcntl允许我们设置文件描述符的标记位,让我们可以把文件描述符设置成非阻塞IO cmd:命令,它决定了 fcntl 函数要执行的操作类型。不同的 cmd 对应不同的功能,也对应不同的返回值例如(主要用到的): F_GETFL:获取文件的状态标……
SE_Wang 2025-11-14
24 0 0 -
如何判断鹅颈麦是否需要48V幻象电源?
判断鹅颈麦是否需要 48V 幻象电源,核心是区分麦克风类型(电容式 vs 动圈式)—— 电容麦几乎都需要 48V 幻象电源,动圈麦无需额外供电。以下是 5 种实操判断方法,从直观到精准,适配学校运维场景(设备标识、说明书、实操测试均覆盖): 一、最直观:看设备标识(无需拆机 / 测试) 1. 麦克风本体 / 底座标识 仔细观察鹅颈麦的话筒杆、底座或接口处,若有以下字样,必须使用 48V 幻象电源: “48V”“Phantom Power”“P48”(国际通用标识) “电容麦”“Condenser Mic”(电容麦的核心标识,电容麦依赖幻象电源供电) 若标识为 “Dynamic Mic”(动圈麦),则无需 48V 电源,直接连接即可收音(音量可能较弱,需调大增益)。 2. 连接线 / 接口标识 若鹅颈麦的连接线是 XLR 卡侬公头(3 针),且无电池仓,大概率是电容麦,需要 48V; 部分简易鹅颈麦是 3.5mm 插头 + 电池仓(底座装 AA/AAA 电池),则无需 48V(电池供电)。 二、查说明书 / 型号参数(精准无误差) 1. 直接查设备说明书 学校采购的鹅颈麦(如舒尔、铁三角、麦乐迪等品牌),说明书会明确标注 “供电方式”: 标注 “48V Phantom Power Required”(需 48V 幻象电源); 标注 “Battery Powered”(电池供电)或 “No External Power Needed”(无需外接电源),则不用 48V。 2. 型号查询(无说明书时) 记录鹅颈麦的型号(如 “铁三角 AT8667”“舒尔 MX412D/C”),通过品牌官网或电商平台搜索型号参数,查看 “供电要求”: 示例:铁三角 AT8667(电容式)标注 “48V 幻象电源(2mA)”;舒尔 MX412D/C(动圈式)标注 “无需供电”。 三、实操测试(最快验证,无需额外工具) 核心逻辑:电容麦无 48V 时完全无声 / 极小声,动圈麦无电也能出微弱声 测试步骤(学校常见设备:卡侬线 + 调音台 / 中控 / 电脑音频接口) 断开幻象电源:确保调音台、中控或……
SE-YangYao 2025-11-14
36 0 0 -
电脑硬件故障检测指南
计算机由硬件与软件构成,当硬件出现故障时,需通过检测手段逐一排查,以确定具体是哪个硬件部件出现问题。 1、 排查硬件故障的常用方法 2、 根据蓝屏提示定位问题原因 3、 若电脑频繁出现蓝屏,可查看屏幕上显示的错误信息,通常会提示导致崩溃的驱动程序或错误类型,有助于快速定位问题。建议根据这些信息进行搜索。目前大多数Windows系统的蓝屏问题多由硬件故障引起,其中内存故障尤为常见,应重点排查相关硬件状态。 4、 当蓝屏提示由NV4_disp.dll驱动引发时,可通过搜索引擎查询得知该文件属于NVIDIA显卡驱动。此时可尝试更新显卡驱动以解决问题。若更新后故障依旧频繁出现,极有可能是显卡硬件本身已损坏,需进一步检测或更换设备以确保系统稳定运行。 5、 检测硬盘健康状况 6、 硬盘内置了S.M.A.R.T.(自我监测、分析与报告技术)功能,可自动检测运行状态并在故障发生前发出预警,帮助用户提前采取措施。尽管该技术并非百分之百可靠,有时硬盘仍可能在S.M.A.R.T.显示正常的情况下突然损坏,但总体而言,它在预判潜在问题方面仍具有较高的实用价值,能有效提升数据安全防护能力。 7、 若出现各类SMART错误提示,表明硬盘可能出现故障。可使用CrystalDiskInfo等SMART检测工具,查看硬盘报告的健康状态信息,及时了解硬盘运行情况,预防数据丢失风险。 8、 测内存 9、 内存故障可能引发多种异常,如数据读写错误,导致程序崩溃、系统蓝屏或文件系统损坏,严重影响计算机的稳定运行。 10、 要检测内存是否正常运行,建议使用Windows自带的内存诊断功能。在开始菜单中搜索Windows内存诊断,启动后工具会向内存的各个区域写入数据并读取验证,通过这种方式全面检查内存的稳定性与可靠性,确保所有内存单元均能正常工作,及时发现潜在问题。 11、 电脑温度检测 12、 你的电脑是否发烫?过热可能导致蓝屏、系统……
SE_Tianle 2025-11-14
141 0 0 -
网络安全基础知识,如何正确学习,才能学好网络安全,渗透和加固?
01 ip地址 1.1 ip 地址的作用?ip 地址分类? ip 地址的作用: 用来标识一个节点的网络地址。 ip 地址分类: A 类 1-126 B 类 128-191 C 类 192-223 D 类 224-239(科研) E 类 240-254(组播) 1.2. 子网掩码的作用?默认 A B C 类子网掩码? 子网掩码的作用: 用来标识 ip 地址的网络位和主机位。 A 类:255.0.0.0 B 类:255.255.0.0 C 类:255.255.255.0 1.3. 网关的作用? 网关的作用:从一个网络到另一个网络的关口。 1.4. 公有地址与私有地址的作用以及范围? 公有地址的作用: 公有地址也可以称为公网地址,通过他可以直接访问因特网,他是广域网范畴内的。 私有地址的作用: 私有地址也可以称为专网地址,专门为组织机构内部使用,他是局域网范畴内的,出了所在局域网是无法 访问因特网的。 私有地址的范围: A:类 10.0.0.1-10.255.255.254 B:类 172.16.0.1-172.31.255.254 C:类 192.168.0.1-192.168.255.254 1.5 查看 Windows 主机 IP 地址的?如何用命令查看 windows 主机 MAC 地址? 在 windows 中查看 ip: 右击网络图标-属性-更改适配器设置-双击本地连接-单击“详细信息”或者 开始-命令提示符-运行 ipconfig 在 linux 中查看 ip:直接运行 ifconfig 查看 mac 地址:开始-命令提示符-运行 ipconfig/all。 02 网络单位 2.1. 计算机网络的功能? 网络的功能:数据通信 资源共享 增加可靠性 提高系统处理能力 2.2. 计算机存储单位的换算? 计算机存储可以用位和字节计量 8 位 1 字节 1024 字节 1KB 1024KB 1MB 1024MB 1GB 1024GB 1TB 03 网络模型 3.1OSI 参考模型一共有七层从下至上分别为? 物理层-数据链路层-网络层-传输层-会话层-表示层-应用层 每一层的意义: 物理层:建立,维护,断开物理连接,定义了接口及介质,实现了比特流的传输。 数据链路层:建立逻辑链接,进行硬件地址寻址,差错校验等功能,通过 ……
SE_YJ 2025-11-14
64 0 0 -
【Linux系列】掌控 Linux 的脉搏:深入理解进程控制
前言 我们之前就学习了如何去创建一个进程,这也是我们控制进程的一部分,本章节我们就接着创建进程来讲讲如何终止进程以及我们怎么处理僵尸进程等问题,我们一起来看看吧。 一、进程创建 进程创建就是 fork 函数的使用,我们在前面章节就已经了解且讲解过了,所以此处就不过多赘述了。 二、进程终止 2.1、进程退出场景 代码运行完毕,结果正确。 代码运行完毕,结果不正确。 代码异常终止。 我们的子进程也是进程,由父进程创建,我们的父进程创建子进程的目的肯定是为了达成某种目的的。所以我们的父进程就应该知道子进程的运行结果来判断子进程是怎么终止的。所以我们的进程终止就是要给父进程一个交代。 2.2、进程常见退出方法 我们的退出方法有很多。 首先就是我们的 main 函数结束,就表示进程的结束,其他的函数结束只表示自己的函数调用完成。 其次我们可以调用我们的 exit 接口。 (1)退出码 我们的 main 函数作为我们的程序的入口,它所返回的 0 或者非 0 肯定就是代表我们程序的执行情况的。由于我们的程序运行结束时有三种场景,而我们的返回值通常就是表达了我们的前两种情况,只有我们的 main 函数运行完毕并且结果正确,才会返回我们的 0,如果我们的结果不对,但是运行完毕就会返回我们的非零。 既然是非零了,那我们就能给不同的数字赋予不同的含义去返回。 我们去创建一个进程,可能是有返回的内容,比如 printf 给我们看到结果,但是我们也有进程是方面都不展示的,我们怎么知道它的返回值呢?我们的子进程的返回值其实是返回给我们的父进程的,如果我们要去查看我们的进程的返回数字,就只要输入 echo $? 就可以查出。 我们运行了一个进程,它正常的退出了,所以返回值是 0。 所以说我们的子进程退出了,我们的父进程 bash 想要知道我们的子进程的执行情况,就要获得我们子进程所对……
SE_Wang 2025-11-13
12 0 0 -
鹅颈麦连接卡侬线无法控制收音解决方法
鹅颈麦连接卡侬线后无法控制收音,主要有以下原因: 1. 供电问题(最常见) 电容式鹅颈麦必须使用 48V 幻象电源才能工作,否则无声音或音量极低 部分鹅颈麦(如麦乐迪 ML 3500)需要底座电池供电 2. 连接与设置问题 卡侬线接触不良(未插紧或接口损坏) 音频设备设置错误(如电脑直接使用 MIC 接口而非 LINE-IN) 录音软件或系统设置中麦克风被静音或音量调至最低 声卡驱动过时或不兼容 解决步骤 1. 检查并启用供电 电容式鹅颈麦(99% 会议用鹅颈麦都是此类): 确认音频接口 / 调音台的幻象电源 (48V) 已开启(通常有 LED 指示灯) 开启方法:在调音台 / 音频接口上找到对应通道的 "48V" 按钮并按下,指示灯亮表示已启用 注意: 连接或断开麦克风前必须先关闭幻象电源,避免损坏设备 电池供电型鹅颈麦: 检查底座是否安装电池且电量充足 确保话筒已插紧到底座并处于开启状态 2. 检查连接与线缆 确认卡侬线两端完全插入,公头 (针状) 与母头 (孔状) 正确匹配 轻轻晃动线缆,观察是否有声音变化(判断是否接触不良) 更换一根确认完好的卡侬线测试,排除线缆损坏可能 确保卡侬线为平衡式(XLR 公对 XLR 母),非平衡线会导致信号弱或杂音 3. 调整音频设备设置 连接电脑时: 若使用 "卡侬→3.5mm" 转接头连接电脑: 不要使用电脑的 MIC 接口,改插 LINE-IN 接口可解决音量控制问题 在系统声音设置中:右键点击音量图标→选择 "声音"→"录制" 选项卡→找到您的麦克风→点击 "属性"→"级别" 选项卡→调整音量滑块和麦克风加强 (0-30dB) 使用调音台 / 音频接口时: 确认麦克风连接到正确的 XLR 输入通道(非 TRS 线路输入) 检查该通道的音量推子 / 旋钮是否已调高(非静音状态) 部分设备可能需要在菜单中手动选择输入源为 "麦克风" 4. 软件设置检查 在录音 / 通话软件(如 Zoom、Teams 等)中单独检查麦……
SE-YangYao 2025-11-13
17 0 0 -
网络通信与总线通信有什么区别?
01 MAC 地址:网络世界里的“身份证” 一、MAC地址到底是个啥? MAC,全称是 Media Access Control Address,中文叫“媒体访问控制地址”,也有人管它叫物理地址、硬件地址。 它其实就是你网卡(或者无线网卡)自带的一段全球唯一的编号,格式是这样的: A4-5E-60-2B-3F-1C(Windows 显示) a4:5e:60:2b:3f:1c(Linux 显示) 一个设备只要连网,它身上就一定有MAC地址! 划重点: ✅ 全球唯一性:MAC是厂商在出厂前烧录进去的,像身份证一样不能重复(理论上)。 ✅ 局域网通信靠它定位:不管是你刷网页还是打游戏,只要在一个局域网内通信(比如和网关说话),靠的就是MAC地址来找人。 二、MAC地址是怎么用起来的? 举个场景你就明白了: 你在浏览器输入一个网址,最终你的电脑要先找到局域网里的网关(一般是路由器)才能出去上网。 可问题来了,你只知道网关的IP地址,那它的MAC地址你怎么知道? 这时候就得靠我们的“网络侦探”——ARP协议登场了。 ARP流程简单回顾: 你电脑发出“广播”(ARP请求):谁是192.168.1.1啊?快告诉我你的MAC! 路由器收到后回应:我!我是192.168.1.1,我的MAC是xx-xx-xx-xx-xx-xx 你电脑记住了这个MAC地址,之后就不再问,直接找MAC发数据了。 三、MAC地址实战操作 怎么查看自己电脑的MAC地址? Windows: ipconfig /all 找“物理地址”一栏,就是你网卡的MAC地址。 Linux: ifconfig 或者 ip link 抓包分析中的MAC地址 用 Wireshark 抓包时你会看到类似这样的信息: Source: A4:5E:60:2B:3F:1C Destination: 00:1D:7E:4C:5F:20 Source 就是发送方的 MAC。 Destination 就是接收方的 MAC。 你能看懂这两行,排错能力直接升级一档。 四、常见的 MAC 地址相关问题 MAC 地址会不会冲突? 理论上不会,但在实际工作中,如果你用了虚拟机、手动改了MAC、或者公司用某种软件克隆网……
SE_YJ 2025-11-13
72 0 0 -
OSPF邻居建立失败如何排查?
OSPF邻居建立失败可以尝试从如下几个方面进行排查: 1、检查OSPF接口是否已加入安全区域: //若设备是安全设备才需要检查,如防火墙 在设备上执行命令 display zone [ zone-name ],查看当前安全区域的配置信息。 如果OSPF接口还未加入安全区域,请修改配置,确保已创建安全区域并将OSPF接口加入其中。 2、检查安全策略是否已允许OSPF协议报文通过: //若设备是安全设备才需要检查,如防火墙 在设备上执行命令 display security-policy rule all,查看安全策略规则的配置信息。 如果没有安全策略设置允许OSPF协议的报文通过,请修改配置,确保已创建安全策略且允许OSPF协议报文通过。 检查邻居两端的接口物理和协议状态是否UP,状态是否稳定: 3、检查接口是否有丢包,两边互ping大包是否能通。 如果物理接口不Up或不稳定(有振荡现象),请排查物理链路和链路层协议,确保物理和协议状态都是Up,且接口无错误计数。 可以通过ping测试,长ping测试是否存在丢包现象,ping大包(1500字节以上)测试是否存在大包不通的现象。 4、检查链路两端OSPF进程的Router ID是否一致: 分别在链路两端的设备上执行命令 display ospf [ process-id ] brief,查看OSPF进程的Router ID。 Router ID要保证全网唯一,否则会导致邻居不能正常建立、路由信息不正确的问题。 如果链路两端OSPF进程的Router ID一致,请在系统视图下执行命令 ospf [ process-id ] router-id router-id,修改OSPF进程的Router ID以保证不冲突。 修改OSPF进程的Router ID之后,必须在用户视图下执行命令 reset ospf [ process-id ] process,新配置的Router ID才会生效。 5、检查链路两端OSPF区域ID是否一致: 分别在链路两端的设备上执行命令 display ospf [ process-id ] brief,查看OSPF的区域ID。 如果链路两端的OSPF区域ID不一致,请在OSP……
SE_Tianle 2025-11-13
37 0 0 -
Linux 权限管理进阶:从 umask 到粘滞位的深度解析
前言: 在 Linux 系统中,权限管理是保障资源安全、控制用户访问的核心机制。从新文件创建时的默认权限分配(umask),到文件类型识别(file)、权限分配(sudo),再到目录权限的特殊逻辑(粘滞位),每一个环节都暗藏系统设计的精妙。本文将沿着这条逻辑链,逐一拆解这些知识点,帮你构建完整的 Linux 权限认知体系。 一. 核心前置问题铺垫(面试高频) 在本篇博客起始呢,我们先来看看下面这三个问题,都是面试经常问到的,这些问题在我们的文章中后续都会得到解答。 –在这里我们先对第一个问题进行一个回答,这个我们在上篇博客中就有解答过,这里就直接展示了 其它两个的答案先放着,后面再详细解释: 二. umask:新文件权限的 “隐形调控者” 2.1 功能与原理 umask(文件权限掩码)的核心作用是调整新创建文件 / 目录的默认权限。Linux 系统对新文件和目录有 “初始最大权限”: 新文件默认最大权限为0666(即rw-rw-rw-,可读、可写); 新目录默认最大权限为0777(即rwxrwxrwx,可读、可写、可执行)。 umask可以查看当前默认权限掩码,主要看后三位。 注意:实际创建的资源权限并非直接使用这个 “最大值”,而是要经过umask的一些运算(绝对不是简单的减法,后面的图片演示里有具体运算过程)。公式为:实际权限 = 最大初始权限 & ~umask(~表示按位取反,&表示按位与,注意都是八进制转成二进制后运算)。 2.2 格式与实际案例 格式:umask 权限值 说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002(后面的演示图里暂时用的超级用户,代码尽量会开始使用普通用户演示,但是如果大家会配置sudo权限的话,尽量全部使用普通用户比较好,不会也没事,以后会讲到的) 实际案例: # root查看umask以及创建文件和目录的默认权限……
SE_Wang 2025-11-12
16 0 0 -
电脑主机各部件故障分别会导致什么问题
电脑主机核心部件(CPU、主板、内存、硬盘、电源等)各司其职,任一部件故障都会引发特定问题。结合学校机房、教室多媒体的教学场景(高批量、高使用频率、需保障教学连续性),以下按 “部件分类 + 故障现象 + 场景影响 + 关联根源” 的逻辑,整理标准化对应表,方便快速定位故障部件。 一、核心运算与控制部件(CPU / 主板 / BIOS) 1. CPU(中央处理器:核心运算核心) 核心功能 典型故障现象 学校场景影响 关联故障点 数据运算、指令执行 1. 开机无反应(风扇不转 / 转一下就停,电源灯亮但无画面); 2. 开机蓝屏(错误代码:0x0000007E 0x0000009C); 3. 运行卡顿(日常操作 / 教学软件如 CAD、编程软件极度缓慢,CPU 占用率长期 100% 但无高负载程序); 4. 自动关机 / 重启(高负载时触发过热保护,机身 CPU 位置烫手); 5. 无法启动多线程软件(如虚拟机、批量处理工具) 1. 教室多媒体电脑开机无反应,直接中断教学; 2. 机房编程课、虚拟机实验课无法正常运行,学生作业卡顿返工; 3. 考试时自动关机导致答题数据丢失 1. CPU 散热故障(风扇不转、硅脂干涸、鳍片堵塞); 2. CPU 针脚氧化 / 弯曲(拆机后重新安装不当); 3. CPU 超频 / 电压异常(学生私自超频); 4. CPU 硬件老化 / 损坏(长期高负载使用) 2. 主板(连接所有部件的 “桥梁”) 核心功能 典型故障现象 学校场景影响 关联故障点 部件供电、数据传输 1. 开机无反应(电源灯不亮,风扇、硬盘均无动静); 2. 开机反复重启(无画面,仅风扇转几秒后停,循环往复); 3. 部分部件不识别(如不识别硬盘、显卡、USB 设备,设备管理器中对应硬件缺失); 4. USB 接口失效(教室多媒体电脑 U 盘无法读取、鼠标键盘没反应); 5. 蓝屏 / 死机(无固定触发条件,随机出现,错误代码多样); 6. 时钟不准……
SE-YangYao 2025-11-12
9 0 0
