26考研 | 王道 | 计网 | 网络层 | 第一部分 | IP相关
王道计网 | 网络层 | 第一部分 |...
26考研 | 王道 | HTTP和TCP的数据传输过程(易错点)
HTTP和TCP的数据传输过程(易错点) 特性 HTTP/1.0 HTTP/1.1 (默认) 连接模式 默认非持久连接。每个请求/响应对都需要建立和关闭一个独立的 TCP 连接。 默认持久连接。一个 TCP 连接可以处理多个请求。 性能影响 连接建立和关闭的“三次握手、四次挥手”开销大,严重影响性能,尤其是加载包含多个资源的网页时。 大幅减少延迟和开销。复用连接避免了反复建立连接的成本,是性能优化的基础。 明确关闭 如果需要保持连接,必须使用 Connection: keep-alive 头部。 如果需要关闭连接,必须使用 Connection: close 头部。 特性 HTTP/1.0 HTTP/1.1 默认连接方式 非持久连接。每个请求后连接关闭。 持久连接。连接默认保持打开以供重用。 流水线支持 不支持。必须收到上一个响应,才能发下一个请求。 在协议标准中支持流水线(RFC 2616定义)。允许在未收到响应时发送后续请求。 现实应用情况 无流水线。要模拟持久连接需用非标准头...
26考研 | 王道 | 数据结构 | 408数据结构算法题笔记
408数据结构算法题笔记1.顺序表1.快排部分 1.快排代码 2.快排的划分思想空间:O(1) 时间:O(n) 划分实战 其实就是把数组分成两半,那就直接找第n/2小的元素就好了 3.快排实战 2.归并排序归并排序的合并两个数组 2.链表 1.按位序查找 123456789//这样找中间结点更好记一点 如果是1 2 3 4 5,那么l就是3,如果是1 2 3 4 5 6,那l就是4l = head;r = head;//1.找中间节点while (r->next && r->next->next){ l = l->next; r = r->next->next;} 也可以用两个指针,让第一个指针先移动K步 先获得长度,然后长的减去短的,让长的先移动这个长度,然后一起往后移动 2.双指针...
26考研 | 王道 | 数据结构 | 卡特兰数在数据结构中的应用
卡特兰数在数据结构中的应用
26考研 | 计算机组成原理 | 关于五段式指令流水线译码阶段取操作数可以去主存中拿吗
关于五段式指令流水线译码阶段取操作数可以去主存中拿吗1.可以从主存拿吗答:在标准的五段流水线中,“译码/读寄存器”阶段的操作数来源特指从寄存器文件(Register File)中读取。 它不会从主存中取操作数。 下面是详细的解释: 译码阶段(ID)的主要任务 译码阶段通常完成以下两件核心工作: 指令译码: 解析指令的操作码,确定指令的类型(是加法、加载还是存储等)和所需的操作数。 读寄存器: 根据指令中指定的寄存器地址(例如 add R4, R5, R3中的 R5 和 R3),从寄存器文件中读出这两个寄存器的当前值。 所以,图片中表格将这一阶段标注为“译码/读寄存器”是非常准确的,明确了操作数的来源是寄存器。 操作数的不同来源 一条指令的操作数可以来自三个地方,对应不同的流水线阶段: 操作数来源 对应的流水线阶段 指令示例 解释 寄存器 译码阶段 add R1, R2, R3 操作数 R2 和 R3 的值在 ID 阶段从寄存器文件读出。 立即数 译码阶段 addi R1, R2, #10 操作数一个是寄存器...
26考研 | 计算机组成原理 | 单周期CPU和多周期CPU的总线结构的适用情况
单周期CPU和多周期CPU的总线结构的适用情况在一条指令的执行过程中,单周期CPU的每个控制信号保持不变,每个部件只能使用一次。多周期CPU的控制信号可能发生改变,同一个部件可以使用多次 关于这句话的具体解释 特性 单周期CPU 多周期CPU 指令执行方式 所有操作在一个长时钟周期内完成 指令被分解为多个阶段,每个阶段占用一个较短的时钟周期 控制信号 恒定不变:周期开始时生成,整个周期内保持稳定 动态变化:每个周期(阶段)根据当前步骤重新生成一组信号 部件使用 一次使用:每个功能部件(如ALU、存储器)在一个指令周期内通常只工作一次 多次复用:同一部件(如ALU)可在不同阶段被同一条或不同指令多次使用 指令间关系 串行执行:下一条指令必须等当前指令完全执行完毕后才开始 串行执行:下一条指令仍需等待当前指令的所有步骤完成后方可开始 使用什么总线结构 不能使用单总线结构,只能使用多总线或者专用数据通路结构 单、多、专用都可以 ...
26考研 | 计算机组成原理 | 计算机组成原理关于指令流水线数据冒险解决方案的困惑以及梳理
计算机组成原理关于指令流水线数据冒险解决方案的困惑以及梳理笔者是在做这道题的时候产生的困惑以及解决 附上答案 1.阻塞方式把I3指令的ID阶段阻塞到时钟6去执行。因为ID阶段是读寄存器的,必须要在I2的WB阶段结束之后,也就是时钟6,一共阻塞3个时钟 2.数据通路方式解决这个问题我的困惑: 假如A与B指令有数据冲突,数据通路的方式解决的话,那是不是只要在A执行阶段我把结果算出来之后,存到A指令执行阶段的锁存器,然后B指令的执行阶段就可以拿走直接用?还是说B指令的译码阶段取操作数这个操作要等到A指令的EX阶段执行完以后,然后数据通路把A指令的EX段锁存器的内容给到B指令,B指令才去进行EX阶段? 答案是在A指令的执行(EX)阶段结束后,结果被存入EX/MEM流水线锁存器。随后,在B指令的EX阶段开始时,转发逻辑可以直接从这个锁存器中取出数据供B指令使用。 简单来说就是:B指令的译码解决还是会拿到错误的值,但是数据通路会在B指令进去EX阶段之前把错误的值用正确的值给覆盖掉。而其实ID阶段拿到错误的值也没事,毕竟也没执行。 转发机制(Data...
操作系统 | 进程的内存映像
操作系统 | 进程的内存映像 不同于存放在硬盘上的可执行程序文件,当一个程序调入内存运行时,就构成了进程的内存映像。一个进程的内存映像一般有几个要素: 代码段:即程序的二进制代码,代码段是只读的,可以被多个进程共享。 数据段:即程序运行时加工处理的对象,包括全局变量和静态变量。 进程控制块(PCB):存放在系统区。操作系统通过PCB来控制和管理进程。 堆:用来存放动态分配的变量。通过调用malloc...
I/O系统 - scanf执行过程
I/O系统 - scanf执行过程源自26考研王道基础课及强化课(含笔者自己总结部分) 在讨论之前,先补充两个概念:内核缓冲区(就是处于内核空间的缓冲区)和与之对应的用户缓冲区。 在scanf函数执行的第一阶段,就申请了用户缓冲区buf,由于buf位于用户空间中,而接下来需要在内核空间中运行,这两个空间是相互独立的。内核空间用来存放操作系统的代码和数据,是供所有进程共享的。 系统调用函数运行在内核态,因此要先把I/O端口中的数据复制到内核空间中,在系统调用返回前,再将数据从内核空间复制到用户空间。 程序调用“scanf("%c",&d)”时,尝试用键盘输入对变量d进行赋值。scanf()会关联一个用户缓冲区buf,这个缓冲区是C语言函数库在用户空间中管理的。 scanf()的第一阶段的工作是在C语言函数库中完成的: 1.检查与scanf函数关联的用户缓冲区buf,若缓冲区中已有数据,则直接读取。若缓冲区为空,则触发系统调用read,以从内核缓冲区中读取数据。 2.执行系统调用read,read...
硬盘制为启动盘的过程 && 操作系统的引导过程
硬盘制为启动盘的过程 && 操作系统的引导过程1.硬盘制为启动盘的过程大致流程: 0.简略版1.磁盘的物理格式化 用于划分磁道和扇区,为存储数据准备物理空间 2.磁盘分区 将整个硬盘划分为多个独立的逻辑区域(如C盘、D盘),便于数据管理。此过程会创建主引导记录(MBR),其中包含了分区信息。 3.磁盘的逻辑格式化 在每个分区内创建文件系统(如NTFS、FAT32、EXT4),初始化引导块、超级块、根目录等管理结构。这样,操作系统才能识别和读写该分区。 4.安装操作系统 将操作系统(如Windows、Linux)的核心文件复制到活动分区(通常是C盘)。 安装引导程序(如Windows的Boot...














