自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(665)
  • 收藏
  • 关注

原创 子空间投影,投影矩阵,最小二乘法

当 A 列向量线性相关时,我们不能使用投影矩阵公式,如何做投影?对 A 列变换高斯消元找到一组基向量,记基向量构成的矩阵A’在子空间S上的投影是S中离b 最近的向量p。给出了 b 在 C(A) 上的投影。当 Ax = b 无解时,我们称。最小二乘法的一个重要应用就是。通过 一的内容 我们知道,不是方阵,则我们不能拆开。的列向量线性无关,证毕。

2025-07-27 16:39:18 604

原创 如何理解泊松分布

有时候我们会用用泊松分布近似二项分布,一般在 试验次数n 很大,成功概率 p 很小,且 λ = np 为有限值时,二项分布可以用泊松分布来近似,经过前面的推导,不难明白其中缘由。前面我们选取的是第一天的数据,我们现在选取第二天的数据,有14头鲸鱼,12个时间段有些不够用,于是我们划分成24个时间段。我们取显著性水平为 5%,那么从图中可以得知,鲸鱼数目在[5, 15]都是正常范围,我们的样本都在正常范围内。注意到每天探测到的鲸鱼不会是同时发生的,而是分散在一天的不同时间段。代表任意时间段内鲸鱼出现的概率。

2025-07-25 23:19:14 921

原创 IO补充.

根据 408 计组内容,对 《计算机组成与设计:硬件/软件接口》关于CPU部分的补充。大黑书这部分完全没有涉及。

2025-07-23 21:58:40 695

原创 总线补充.

根据 408 计组内容,对 《计算机组成与设计:硬件/软件接口》关于总线部分的补充。大黑书这部分完全没有涉及。总线简图如上图,4根信号线组成“一根”总线,所有硬件部件都可以通过这根总线传递数据,可并行发送4bit数据。同一时刻只能有一个部件发送数据,但是可有多个部件接受数据。总线是一组能为多个部件分时共享的公共信息传送线路。为什么要用总线?早期计算机外部设备少时大多采用分散连接方式,不易实现随时增减外部设备。为了更好地解决I/O设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接。

2025-07-23 21:52:12 1006

原创 CPU补充

根据 408 计组内容,对 《计算机组成与设计:硬件/软件接口》关于CPU部分的补充。大黑书的 CPU 部分侧重流水线控制和流水线冒险,408计组CPU部分则更侧重硬布线设计,东西还是蛮多的。中央处理器(Central Processing Unit,CPU),是整个计算机的核心。CPU会按照指令的要求,控制计算机的各部件协调工作,并且还要对信息处理过程中出现的异常情况进行处理。CPU上电复位后,就进入了“取指、译码、执行指令”的永久工作循环,CPU的具体功能程序控制控制程序的执行顺序。

2025-07-23 21:43:45 791

原创 列空间与零空间,秩—零化度定理

根据A* 的定义,因为 r(A) < n - 1,所以A的所有n - 1阶子式均为0,所以 A* = 0。**秩–零化度定理(Rank–Nullity Theorem):**对于任意n*n矩阵 A,有。并且由于 r(I) = r(A),我们会发现 r(F) = n - r(A)矩阵A 的列向量的张成,即 矩阵A 的。A A* = |A|I,故 A* 可逆,r(A*) = n。也是满秩的,即 r(A*) = n。的秩为1,即 r(A*) = 1。是零矩阵,即 r(A*) = 0。显然,零向量一定属于零空间。

2025-07-20 23:15:11 900

原创 运算方法和运算器补充

根据 408 计组内容,对 《计算机组成与设计:硬件/软件接口》关于运算方法和运算器部分的补充。大黑书关于这部分欠缺的挺多的。

2025-07-05 22:23:55 395

原创 计算机内部数据表示补充

根据 408 计组内容,对 《计算机组成与设计:硬件/软件接口》关于数据表示部分的补充。虽然大黑书少了一些概念,不过是最简单的一集,简略过一下。

2025-07-02 23:02:25 450

原创 计算机系统概述补充

根据 408 计组内容,对 《计算机组成与设计:硬件/软件接口》关于计算机系统概述部分的补充。主要就是个别零散的概念,性能指标那块跟大黑书一样。计算机系统由软件与硬件组成。软件系统软件:为管理整个计算机系统所编制的程序操作系统 数据库管理系统 网络系统标准程序库 语言处理程序 服务程序应用软件:为实现用户应用所编制的各种程序科学计算 数据处理过程控制 事务管理硬件主机:外设:软件运行于硬件之上,计算机系统性能的好坏,取决于硬件和软件功能的总和。练习B。

2025-06-30 23:48:49 754

原创 初等变换矩阵与LU分解

比如我们要将第1列的k倍加到第3列(第3行的k倍加到第1行),那么就有如下表示,我们记为。已知列向量左乘矩阵就是矩阵列向量的线性组合,行向量右乘矩阵,就是行向量的线性组合。都是单位下三角矩阵,对应一次加法操作(加某行倍数到下方某行)。对于行/列交换矩阵,其逆矩阵就是其自身,因为交换两次相当于没交换。比如我们要将 第二列/行 倍乘k倍,那么就有如下表示,我们记为。矩阵乘法可以看作对一个矩阵的列/行空间施加同样的线性变换。比如我们要交换 1、2列/行,那么就有如下表示,我们记为。对于行/列倍加矩阵,显然有。

2025-06-30 00:51:14 1102

原创 AVL树的简洁写法

大二学数据结构的时候写的AVL代码稀烂,回过头来重制一下,在不使用父指针的情况下以较为简洁的代码实现AVL。AVL树详解[C++]AVL 树是一种平衡二叉搜索树,由两位俄罗斯的数学家 G.M.Adelson-Velskii 和 E.M.Landis 在1962年发明,并以他们名字的首字母命名。// 左右儿子Key key;// 关键字u32 h = 1;// 高度// 子树大小Node(Key k): key(k) {} // 构造函数// 树高return t?t->h : 0;

2025-06-29 23:39:47 952

原创 指令系统补充

根据 408 计组内容,对 《计算机组成与设计:硬件/软件接口》关于指令系统部分的补充计算机是按照程序员事先编制好的程序进行工作的。程序会被“翻译”(编译、汇编或解释)成一系列相应的指令,这些指令告诉计算机如何执行特定的任务。指令是计算机硬件能够理解和执行的基本命令。这些命令包括算术运算、逻辑运算、数据传送、跳转等操作。每条指令必须显式或隐式地提供以下信息:执行的操作操作数的来源操作结果的存放处下一条指令的地址一台计算机中所有指令的集合称为该计算机的指令集,也称为指令系统。

2025-06-27 12:09:01 727

原创 Abel 变换,离散型分部积分

为了让结果尽可能大,我们要让减去的部分尽可能的小,也就是说我们要选前k - 1 小的 A(i),即 前k - 1 小的前缀和。注意到 f(i + 1) - f(i) 可能的取值只有1 / 0,并且只会在每组的分段点处取一次1,一共会取k - 1次。r]的和我们记为 t(i),cost[l…r] 的和我们记为 B(i)于是我们先把 kA(n) 累加到答案中,然后对前缀和数组去除A(n)后,减去前k - 1小A(i)那么 第 i 个子数组的收益为:t(i) * B(i) + k * i * B(i)

2025-06-20 18:02:39 682

原创 MIT 6.S081 2020 Lab11 networking 个人全流程

在本实验中,你将为 xv6 编写一个网络接口卡(NIC)的设备驱动程序。你将使用一个名为E1000的网络设备来处理网络通信。对于 xv6(以及你编写的驱动程序)来说,E1000 看起来就像是一块连接到真实以太网局域网(LAN)的真实硬件。实际上,你的驱动程序将与由 QEMU 提供的 E1000 模拟设备通信,该设备连接到同样由 QEMU 模拟的局域网中。在这个模拟的 LAN 中,xv6(作为“客户机”)的 IP 地址是10.0.2.15。

2025-06-19 14:22:15 778

原创 MIT 6.S081 2020 Lab10 mmap 个人全流程

传统 I/O 读写方式开销过大传统的文件 I/O 需要在 用户空间 和 内核空间 之间多次拷贝数据。大文件处理时,内存的开销比较大。映射文件到内存将文件的内容直接映射到进程的虚拟地址空间,使得访问文件就像访问普通内存一样高效:替代readwrite等系统调用;节省一次内核空间和用户空间的拷贝(零拷贝适合处理大文件或频繁访问的文件数据。实现进程间共享内存(IPC)使用MAP_SHARED标志,多个进程可以映射同一个文件区域,从而共享这段内存,实现快速通信。延迟加载/按需加。

2025-06-18 22:42:54 693

原创 MIT 6.S081 2020 Lab9 File Systems 个人全流程

xv6文件系统提供类似于Unix的文件、目录和路径名,并将其数据存储在virtio磁盘上以便持久化。文件系统需要磁盘上的数据结构来表示目录和文件名称树,记录保存每个文件内容的块的标识,以及记录磁盘的哪些区域是空闲的。文件系统必须支持崩溃恢复(crash recovery)。也就是说,如果发生崩溃(例如,电源故障),文件系统必须在重新启动后仍能正常工作。风险在于崩溃可能会中断一系列更新,并使磁盘上的数据结构不一致(例如,一个块在某个文件中使用但同时仍被标记为空闲)。

2025-06-17 22:54:17 1045

原创 MIT 6.S081 2020 Lab8 locks 个人全流程

在本实验中,你将学习如何重新设计代码以提高并行性。在多核计算机上,并行性差的一个常见表现是高锁竞争。为了减少竞争、提升并行性,通常需要同时修改数据结构和加锁策略。你将在本实验中对 xv6 的内存分配器和块缓存进行相关改进。记得切换分支到 lock。

2025-06-16 21:33:00 730

原创 存储器补充

根据 408 计组内容,对 《计算机组成与设计:硬件/软件接口》关于存储器部分的补充现代计算机以存储器为中心,它是计算机中存放指令和数据的主要部件。存储器的容量越大,能存储的信息越多,提高存储系统的访问速度,是提高计算机处理信息速度的重要措施。因此,开发具有大容量、高速度和低成本的存储系统是计算机技术发展的关键目标之一。主存储器,属于主机部分。比如手机参数的运行内存,如12GB。辅助存储器,它属于外部设备。比如手机参数的机身内存,如1TB。

2025-06-16 14:56:40 819

原创 MIT 6.S081 2020 Lab7 Multithreading 个人全流程

本实验将使你熟悉多线程编程。你将实现一个用户级线程库中的线程切换,使用多个线程加速程序运行,并实现一个屏障(Barrier)机制。

2025-06-06 18:36:02 742

原创 MIT 6.S081 2020 Lab6 Copy-on-Write Fork for xv6 个人全流程

可以阅读下 《xv6 book》 的第五章中断和设备驱动。问题在 xv6 中,fork()系统调用会将父进程的整个用户空间内存复制到子进程中。**如果父进程占用的内存较大,复制过程会非常耗时。更糟糕的是,这种复制往往是浪费的。**例如,在子进程中调用fork()后紧接着执行exec(),会导致子进程丢弃复制来的内存,很可能其中大部分根本没有被使用。另一方面,如果父子进程都使用了某个页面,并且有一个或两个要写这个页面,那就确实需要进行复制。解决方案**写时复制(COW)**的fork()

2025-05-31 23:52:44 1178

原创 MIT 6.S081 2020Lab5 lazy page allocation 个人全流程

可以阅读下4.6页面错误异常像应用程序申请内存,内核分配和映射这些内存其实是很耗费时间的。比如,一个 GB 的内存包含 262,144 个 4096 字节的页;即便每次分配的开销很小,这么多次操作累积起来仍然非常耗时。此外,一些程序会分配比实际使用更多的内存(例如,为了实现稀疏数组),或者会提前分配内存但迟迟不使用。为加快sbrk()sbrk()不再立即分配物理内存,而是仅记录下哪些用户地址被分配了,并在用户页表中将这些地址标记为无效。当进程首次尝试访问这些**“懒惰分配”**的页面时,

2025-05-25 13:50:29 1219

原创 线性基详解,线性代数的简单应用,原理分析,题目练习

3b1b线性代数基础如果对线性空间有一定理解,那么完全有能力独立发明线性基异或和设S为 一无符号整数集合(下同),其异或和为x1xorx2xorxnxi∈Sx1​xorx2​xor...xn​xi​∈S张成设T⊆ST⊆S,所有这样子集的异或和所组成的集合,称为集合S的张成,记作span(S)。即,在S中选出任意多个数,其异或和所有可能的结果组成的集合。线性相关对于一个集合, 如果存在xi∈S。

2025-05-20 23:52:39 768

原创 区间带边权并查集,XY4060泄露的测试点

目录一、题目1、题目描述2、输入输出2.1输入2.2输出3、原题链接二、解题报告1、思路分析2、复杂度3、代码详解码蹄集关于带边权并查集:并查集,扩展域并查集,带边权并查集详解,OJ练习,详细代码-CSDN博客sum(a[l, r]) = x 转化为 S[r] - S[l - 1] = x其中S[i] = sum(a[1...i]),规定 S[0] = 0考虑 带边权并查集维护 信息f[i] 为 i 的父节点,d[i] 为 S[i] - S[f[i]]对于find(x) 操作,如果 f[x] = x,那么直

2025-05-18 21:50:20 481

原创 MIT 6.S081 2020 Lab4 traps 个人全流程

做之前可以看看,了解XV6 下的陷入机制这个实验旨在探索系统调用如何实现了trap,会先做一个有关栈的练习,然后实现用户级陷入处理。: 涉及用户态 / 内核态切换的汇编代码。: 处理中断的所有代码。记得切换到 traps 分支。完整代码见:https://github.com/58164/MIT6.S081/tree/traps。

2025-05-18 14:58:44 735

原创 MIT 6.S081 2020 Lab3 page tables 个人全流程

好难哇www

2025-05-11 23:02:16 1199

原创 可撤销并查集,原理分析,题目练习

可撤销并查集代码相对简单,但是使用场景往往比较复杂,经常用于处理离线查询,比较经典的应用是结合线段树分治维护动态连通性问题。在一些较为综合的图论问题中也经常出现。并查集,扩展域并查集,带边权并查集详解,OJ练习,详细代码// 节点数int f[N];// 父节点int siz[N];// 集合size// 操作记录栈。

2025-05-09 00:09:12 1254 1

原创 MIT 6.S081 2020 Lab2 system calls 个人全流程

警钟长鸣:记得切换分支先完整代码见:https://github.com/58164/MIT6.S081/tree/syscall这个任务要求你添加一个tracing 系统调用,来帮你在后续lab中进行debug。它接收一个int 类型的参数 mask,每一位都代表一个系统调用, 1 代表追踪,0则反之。在 kernel/syscall.h中我们可以看到每一个二进制位对应的系统调用pid 系统调用名 返回值trace 系统调用可以跟踪调用它的进程以及它后续fork的子进程。

2025-05-04 16:36:29 646

原创 MIT 6.S081 2020 Lab1 Xv6 and Unix utilities 流程(未实现Optional challenge exercises)

练练手

2025-04-15 00:31:59 1055

原创 01分数规划,二分法,题目练习

那么 sum(t - w * m) >= 0,我们如何得到sum(w) >= W下最大的sum(t - w * m)?那么二分最大比率 m,有 sum(l) / sum(h) <= m,即 sum(l - m * h) <= 0。我们对于 节点i,j,以 l(i, j) - m * h(i, j) 为边权求最小生成树即可。l(i, j) 为 节点 i 和 j 之间的欧氏距离,h(i, j) 为二者高度差。sum(t) / sum(w) >= m,m 为二分最大值。考虑从推荐人向被推荐人连有向边。

2025-03-20 22:26:20 707

原创 康托展开,逆康托展开,原理分析,题目练习

对于 lemher[n - 1],它的贡献是 lemher[n - 1] * 0!对于 lemher[n - 2],它的贡献是 lemher[n - 2] * 1!n 个元素构成的排列的排名为 所有排列按字典序升序下的排名,比如 “1234” 的排名就是 1。一个直接的方法是,预处理阶乘,然后权值树状数组初始化所有数字权值为1,然后顺序根据排名填写。康托展开是指一种将自然数展开为数列的方法,类似于试填法 / 数位dp,从而求出排列的排名。加1 是因为我们试填算的是字典序严格小于该排列的排列数。

2025-03-08 00:12:39 732

原创 高斯消元法,加法,异或,同余方程组,原理分析,题目详解

高斯消元法是线代中非常基础的知识,在数据量较小的时候,可以用来求解 加法/异或/同余方程组,矩阵求逆。

2025-03-02 01:07:07 912

原创 lab4 CSAPP:Cachelab

最简单的一集实验室分为两个部分。在A部分中,实现一个缓存模拟器。在B部分中,编写一个矩阵针对高速缓存性能优化的转置功能。感觉是比较经典的问题,之前在体系结构的课程中接触过,终于能通过lab实操一下了。实验目录的 traces 子目录包含参考跟踪文件的集合,将用于评估A部分中编写的缓存模拟器的正确性。跟踪文件是由 Linux 称为valgrind的程序产生的。先安装valgrind比如 我们用valgrind 捕获 ls -l 的内存访问操作-地址-大小 三元组格式I 表示指令读取L 表示数据读取。

2025-02-20 21:03:20 1268

原创 lab3 CSAPP:AttackLab

cookie.txt 一个8位16进制数,作为攻击的特殊标志符farm.c 在ROP攻击中作为gadgets的产生源ctarget 代码注入攻击的目标文件rtarget ROP攻击的目标文件hex2raw 将16进制数转化为攻击字符,因为有些字符在屏幕上面无法输入,所以输入该字符的16进制数,自动转化为该字符ROP是什么缓冲区溢出攻击可以采用栈随机化、栈破坏检测(金丝雀)、限制可执行代码区域这三种机制来限制(详见csapp 3.10.4)为了对抗这些机制,又出现了ROP攻击技术。

2025-02-17 17:23:15 1057

原创 lab2 CSAPP:BombLab

这个实验要能看懂些汇编,然后会用一些gdb的基本操作。打开bomb.c可以看到我们实际上就是要找到那6个字符串,错误的话就会爆炸。

2025-02-12 18:02:55 1151

原创 lab1 CSAPP:datalab

非常简单的一个lab,位运算好的话一会就写完了。

2025-02-12 17:59:24 246

原创 四、容斥原理与鸽巢原理,《组合数学(第4版)》卢开澄 卢华明

回顾一下加法法则:事件 A 有 m 种产生方式,事件 B 有 n 种产生方式,则事件 A 或 B 之一有 m + n 种产生方式。但是如果 |A| = m,|B| = n,A∩B∅A∩B∅,则|A ∪ B| = m + n。在算竞中,经常遇到复杂的计数问题,多种情况不能直接加法法则相加,如何做到计数不重不漏?很多时候都要用到容斥原理的思想。容斥的计数思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来;然后再把计数时重复计算的数目排斥出去。

2025-02-05 01:48:13 809

原创 三、递推关系与母函数,《组合数学(第4版)》卢开澄 卢华明

母函数是:计数工具不考虑收敛性不考虑实际上的数值形式幂级数(Formal power series)对于序列C_0, C_1, C_2, … 构造一函数G(x)=C0+C1x+C2x2+...G(x) = C_0 + C_1x + C_2x^2 + ...G(x)=C0​+C1​x+C2​x2+...例如 (1+x)n(1 + x)^n(1+x)n 称为序列 C(n, 0), C(n, 1), …, C(n, n) 的母函数,序列的长度可能是有限的,也可能是无限的。母函数和计数法则:母函数:为什么母

2025-02-03 16:07:23 1013

原创 可持久化线段树,原理分析,题目详解

可持久化线段树学习起来难度并不大,如果学过可持久化Trie,了解怎样复用旧版本的信息,只通过少量空间维护信息的修改,其实很容易理解可持久化线段树的原理。对于普通线段树,我们可能是维护序列,维护权值,但是可持久化之后,其实我们掌握的信息更多了,可以解决很多看起来只能暴力解决的问题。

2025-01-25 04:23:58 1167

原创 二、排列与组合,《组合数学(第4版)》卢开澄 卢华明

n - 1}的 (n - 1)!相当于把 r 个小球放入n 个区域,那么相当于在n + r - 1 个位置中挑出 r 个位置放隔板,故 C(n + r - 1, r):从 n 个中取 r 个的排列的典型例子是从n个不同的球中,取出 r 个,放入 r 个不同的盒子里,每盒1个。杨辉三角每个数等于上面两个数之和:C(n, r) = C(n - 1, r) + C(n - 1, r - 1)等式右侧:(0, 0) 至 (n - r - 1, r) 和 (0, 0) 至 (n - r, r - 1)

2025-01-24 18:33:00 764

原创 3b1b线性代数基础

3b1b之前没认真看,闲了整理整理。这里给一个非严格的叉积定义,在二维平面中,我们称 向量v 和 向量w 构成平行四边形的有向面积为向量v 和向量w 的叉积。正负通过右手定则判断,右手四指从v 弯向 w,大拇指朝外,则为正,否则为负。仍以二维平面为例,计算方式如下:将v 作为 二维矩阵第一列,w 作为第二列,行列式的值就是叉积结果。事实上,叉积是通过两个三维向量生成一个新的三维向量。计算方式如下:得到的新的三维向量的长度为v 和 w 围成的平行四边形的面积。

2025-01-23 17:40:24 1805

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除