自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【操作系统导论】内存篇——页面置换

例如,给定一组进程,系统可以决定不运行部分进程,希望减少的进程工作集(它们活跃使用的页面)能放入内存,从而能够取得进展。当硬盘 I/O 完成时,OS 会更新页表,将此页标记为存在,更新 PTE 的 PFN 字段以记录新获取页的内存位置,并重试指令;如果页有效且存在于物理内存中,则硬件从 PTE 中获得 PFN,将其插入 TLB,并重试该指令,这次产生 TLB 命中。如果存在位为 0,则页不在内存中,而在硬盘上。最后,重试该指令,在 TLB 命中,得到最终的内存物理地址,并获取所需的数据或指令。

2023-12-19 11:28:41 1084

原创 【操作系统导论】内存篇——分页

一个地址空间中大约有一百万个虚拟页面,乘以页表项的大小,则一个页表大小为 4MB。假设有一个 8 位的虚拟地址空间,页帧大小为 16 字节,虚拟地址划分为 4 位的 VPN 和 4 位的 offset;对于典型的 4KB 大小的页来说,这种密集的数组访问会实现极好的 TLB 性能,每个页的访问只有一次「未命中」。包含了存在位(P),读/写位(R/W),用户/超级用户位(U/S),访问位(A),脏位(D);个「页表项」,假设每个 PTE 的大小为 4 字节,则页表的大小为 1KB,占 16 个页帧。

2023-12-14 20:10:37 1199

原创 【操作系统导论】内存篇——分段

最佳适应算法和最坏适应算法的开销较大。首次适应算法和邻近适应算法的开销较小;

2023-12-14 20:06:39 1174

原创 【操作系统导论】比例份额调度

彩票调度的基本思想:每隔一段时间,都会举行一次彩票抽奖,以确定接下来应该运行哪个进程;越是应该频繁运行的进程,越是应该拥有更多地赢得彩票的机会。关键在于如何按比例分配 CPU。利用了随机性(randomness),具有以下优势:随机方法很轻量,几乎不需要记录任何状态;随机方法很快,只要能很快地产生随机数,做出决策也就很快;随机方法常常可以避免奇怪的边角情况,较传统的算法可能在处理这些情况时遇到麻烦。

2023-12-12 21:34:15 1028

原创 【操作系统导论】多级反馈队列

1962 年,Corbato 首次提出了多级反馈队列(Multi-level Feedback Queue,MLFQ),并应用于兼容时分共享系统(CTSS)。Corbato 因在 CTSS 中的贡献和在 Multics 中的贡献,获得了 ACM 图灵奖(Turing Award)。MLFQ 的基本思路如下:MLFQ 中有许多独立的队列,每个队列具有不同的优先级(priority level);一个工作只能存在于一个队列中,并且 MLFQ 总是优先执行较高优先级的工作(即在较高级队列中的工作)。

2023-12-12 21:23:17 606

原创 八大排序算法【上】

它的工作原理是每次检查相邻两个元素,如果前面的元素与后面的元素满足给定的排序条件,就将相邻两个元素交换。当序列完全有序时,冒泡排序只需遍历一遍数组,不用执行任何交换操作,时间复杂度为 $ O(N)$;插入排序的思想:将当前元素与已经排好序的子数组中的元素逐个比较,找到合适的位置插入当前元素。当增量减小至 1 时,相当于进行一次普通的插入排序,此时数组已经被排好序了。最优时间复杂度为 $ O(N)$,最坏时间复杂度和平均时间复杂度都为。每次选择一个最大/最小的数,与当前位置的数进行交换。

2023-12-11 20:42:30 1292

原创 【操作系统导论】进程调度介绍

我们介绍了调度的基本思想,包括两种调度指标以及结合 I/O 的场景。通过运行最短的工作,从而优化周转时间;通过交替运行所有工作,从而优化响应时间;在 I/O 期间,通过“重叠”来更好地利用资源。但是,我们很难做到“鱼与熊掌兼得”,这是系统中常见的、固有的折中。并且,操作系统通常对每个作业的长度和知之甚少,SJF / STCF 调度程序好似难以实现?后面,我们将看到如何通过构建一个调度程序,利用最近的历史预测未来,从而解决这个问题。

2023-12-11 20:34:23 1097

原创 【设计模式】工厂模式总结

需要在抽象工厂类中提前确定可能需要的产品种类,以满足不同型号的多种产品的需求;如果我们需要的产品种类并没有在抽象工厂类中提前确定,则需要修改抽象工厂类了,以及所有的工厂子类。简单工厂模式提供一个工厂类,根据传入的参数来创建不同类型的对象,而客户端代码无需了解对象的创建过程。工厂抽象类创建了多个类型的产品,当有需求时,可以创建相关产品子类和子工厂类来获取。定义一个创建对象的接口,让子类决定实例化哪个类,而对象的创建统一交由工厂去生产。抽象工厂模式允许你创建一系列相关的对象,而不指定具体的类。

2023-11-06 11:22:33 365

原创 【后端开发】手写一个简单的线程池

实际上是一个“同步队列”,允许多线程添加/取出任务,并保证线程安全。处理来自上层的任务请求,将它们加入到排队层中等待处理。从排队层中取出任务,多线程并发处理排队层中的任务。不想码字,想看的凑活着看吧!首先,我们来实现一个。

2023-11-03 20:44:01 390

原创 【设计模式】C++单例模式详解

以数据库连接池为例,假设一开始我们将其设计为一个单例类,而后我们发现,有些 SQL 语句的执行效率低下,长时间占用连接资源,因此我们希望再创建一个连接池实例,让它专门处理运行速度较慢的 SQL 语句,而此时,单例模式就对代码的拓展性产生了影响。由于单例类不需要显示地创建,也不需要依赖参数传递,在函数中直接调用就好,所以在阅读代码时,需要仔细阅读才能清楚哪些类依赖了单例类。在加载类时,对象实例就被创建并初始化,在程序结束时自动销毁,因此,它是线程安全的。因此,还是推荐使用“静态局部变量”的写法。

2023-11-01 14:36:46 1168

原创 【数据结构】动手实现一个简单的跳表!

/ 最大层数// 跳表节点int key;int value;// 用数组存放指针,表示最多可以有 MAX_LEVEL 层我们定义的是一个具有 key 和 value 的节点,相比单一的 value,更为贴切 K-V 存储系统。public:private:// 随机决定新节点的层数Node* head;int level;在上面的定义中,我们看到了 randomLevel的声明,现在试着来实现它。我们已经知道跳表是一种随机数据结构。

2023-10-14 20:28:55 74 1

原创 【数据结构】红黑树插入自平衡实现

新学期学业繁忙,以至于没什么时间没更新博客;今天整理了红黑树的相关知识,代码都是手写简化版,如果哪里有问题希望批评指正💗红黑树(Red Black Tree)是一种自平衡的二叉搜索树,它满足以下性质:红黑树的节点为红色或黑色;根节点和叶子节点都为黑色,且叶子节点为 NIL;如果一个节点为红色,则它的子节点都为黑色;从根节点到 NIL 节点的每条路径上的黑色节点数量相同。R-B 树不是绝对的平衡,而是*“相对的平衡”*,即:每条路径上的黑色节点数量相同。

2023-10-10 13:32:03 59

原创 【每日一题】力扣:打家劫舍 IV

沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。由于相邻的房屋装有相互连通的防盗系统,所以小偷。表示每间房屋存放的现金金额。定义为他在窃取过程中能从单间房屋中窃取的。,表示窃贼将会窃取的。

2023-09-19 18:52:57 141

原创 【每日一题】力扣:打家劫舍Ⅲ

之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。表示选中 o 节点时,以 o 节点的为根节点的二叉树上的最大权值和;max(左孩子选中, 左孩子不选中) + max(右孩子选中, 右孩子不选中)。表示不选中 o 节点时,以 o 节点的为根节点的二叉树上的最大权值和。小偷又发现了一个新的可行窃的地区。首先明确二叉树上的每个点有两种状态(选中和不选中)。o 的权值 + 左孩子不选中 + 右孩子不选中;,小偷能够盗取的最高金额。

2023-09-18 16:27:48 111

原创 【每日一题】力扣:打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,个房子时选/不选的问题,子问题:我们想要从前 i 个房子中得到最大金额和。给定一个代表每个房屋存放金额的非负整数数组,计算你。因为不能偷窃相邻的房子,所以当我们偷窃到第。个房子时的最大金额,或者我们选择不偷窃第。,一夜之内能够偷窃到的最高金额。个房子的金额,再加上到偷窃第。个房子,那么最大金额就是到第。个房子在得到最大金额和。个房子时,可以偷窃第。个房子时的最大金额。

2023-09-16 11:50:48 105

原创 【图的存储方式】邻接表、邻接矩阵、链式向前星

可以想到的一点是,每个端点的编号是默认从 0 开始的连续整数;如果我们想要让每个端点拥有它自己的专属且独特的编号,可以用哈希表来实现;同理,如果想要让每个端点拥有它自己的专属且独特的编号,可以用哈希表来实现,这里略过,参考邻接表的实现。链式向前星的思想是:使用链表来存储每个顶点的邻接边,以便有效地表示稀疏图。对于无向图来说,我们只需要同时存两条有向边,即令。的空间复杂度,如果是点与点之间的连边数远小于。对于邻接表的存储方法来说,有无重边是不影响的!只需要记录点 u 的所有出边上的终点即可;

2023-09-15 21:57:32 156

原创 【C++容器篇】泛型编程,类模板,函数模板,模板特化知识点总结

泛型编程的核心思想是将代码与特定数据类型解耦,使得代码能够适用于多种数据类型,从而实现更高程度的抽象。而这种思想在C++中通过模板技术得以实现,其中包括了函数模板和类模板。使用模板,我们可以编写一次代码,然后在需要的地方根据实际数据类型进行实例化,从而获得专门针对特定数据类型优化的代码。在本文中,我总结了C++中函数模板和类模板的使用方法,以及如何通过模板特化实现对特定数据类型的定制化处理。通过阅读本文,您一定能够对泛型编程有个不错的了解。函数模板。

2023-09-14 21:57:06 171

原创 【每日一题】力扣:最大二叉树

给定一个不含重复元素的整数数组 nums,以此数组直接递归构建的最大二叉树。输入一行多个数字代表数组 nums。数字与数字之间用空格隔开。输出一行字符代表二叉树的构造结果(前序遍历),具体请参考样例。码了很久,却发现该题目只需要用数组来模拟二叉树的遍历即可。返回有给定数组 nums 构建的最大二叉树。nums 中的所有整数互不相同。

2023-09-13 22:21:51 152

原创 【每日一题】力扣:课程表Ⅳ

你总共需要上numCourses门课,课程编号依次为0到。你会得到一个数组,其中表示如果你想选bi课程,你必须先选ai课程。先决条件也可以是的。如果课程 a 是课程 b 的先决条件,课程 b 是课程 c 的先决条件,那么课程 a 就是课程 c 的先决条件。你也得到一个数组queries,其中。对于第j个查询,您应该回答课程uj是否是课程vj的先决条件。返回一个布尔数组answer,其中answer[j]是第j个查询的答案。

2023-09-12 18:20:37 124

原创 【力扣 热题 100】有效的括号【栈】

给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。

2023-09-12 14:57:31 31

原创 【每日一题】力扣:课程表Ⅲ【值得一看】

这里有 n 门不同的在线课程,按从 1 到 n 编号。给你一个数组 courses ,其中 courses[i] = [durationi, lastDayi] 表示第 i 门课将会 持续 上 durationi 天课,并且必须在不晚于 lastDayi 的时候完成。你的学期从第 1 天开始。且不能同时修读两门及两门以上的课程。返回你最多可以修读的课程数目。

2023-09-11 20:27:06 132

原创 【每日一题】力扣:课程表Ⅱ

现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] = [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示:[0,1]。返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回 任意一种 就可以了。如果不可能完成所有课程,返回 一个空数组。

2023-09-10 13:26:19 151

原创 【每日一题】力扣:课程表【拓扑排序】

你这个学期必须选修numCourses门课程,记为0到。在选修某些课程之前需要一些先修课程。先修课程按数组给出,其中,表示如果要学习课程ai则先学习课程bi。[0, 1]01请你判断是否可能完成所有课程的学习?如果可以,返回true;否则,返回false。

2023-09-09 22:54:32 49

原创 【操作系统导论】虚拟化机制:受限制直接执行(LDE)

在使用计算机或笔记本时,我们会同时运行多种程序,如浏览器、音乐播放器、微信,等等。实际上,一个正常的系统可能同时会有上百个程序同时在运行;而我们知道计算机的CPU是有限的,这看起来却好似有无数个CPU在工作,究竟是怎么做到的呢?这其实是操作系统的虚拟化技术(CPU时分共享技术),通过让一个进程只运行一个时间片,然后切换其他进程,从而达到提供多个虚拟CPU的假象。而要实现CPU的虚拟化,操作系统就需要使用一些低层的机制和高级的调度策略。受限制直接执行(LDE机制)。

2023-09-09 18:39:49 288

原创 【操作系统导论】在python3环境下运行process-run.py

这个名为的程序允许你查看进程状态在CPU上运行时如何变化。如本章所述,进程可以处于几种不同的状态:运行状态 - 进程当前正在使用CPU就绪状态 - 进程可能正在使用CPU,但(遗憾的是)有其他进程等待状态 - 进程正在等待I/O操作完成状态 - 进程执行完成在这份作业中,我们将看到这些进程状态在程序运行时如何变化,从而更好地了解这些工作原理。

2023-09-08 16:52:00 472

原创 【每日一题】力扣:修车的最少时间

博客主页:Skylar Lin望本文能够给您带来一定的帮助,如果有错误的地方敬请斧正!新人博主🧑,希望多多支持🍺,还有好多库存和大家分享🎁。转载需注明出处和原作🌹。给你一个整数数组 ranks ,表示一些机械工的 能力值。ranksi 是第 i 位机械工的能力值。能力值为 r 的机械工可以在 r * n2 分钟内修好 n 辆车。同时给你一个整数 cars ,表示总共需要修理的汽车数目。请你返回修理所有汽车 最少 需要多少时间。所有机械工可以同时修理汽车。

2023-09-07 13:47:03 212

原创 【C++容器篇】关联容器知识点总结【超详细】

要求容器中的元素是唯一的,即不允许有重复的元素存在。当你尝试插入一个已经存在的元素时,插入操作不会生效,容器的大小也不会发生改变。:移动构造函数,将一个 set 集合的内容移动到新的 set 集合中,原先的 set 集合变为空,避免了深层拷贝。即使元素已经存在,你仍然可以插入相同的元素,容器会维护多个相同的键值。:返回一个范围,其中的元素与给定值相等,即返回一个 pair,包含。中的元素是按照键值进行有序存储的,并且每个键都是唯一的。,交换后的两个容器会互相交换它们的元素,且仍然保持有序。

2023-09-06 18:26:42 146 1

原创 【每日一题】力扣:最深叶节点的最近公共祖先

博客主页:Skylar Lin望本文能够给您带来一定的帮助,如果有错误的地方敬请斧正!新人博主🧑,希望多多支持🍺,还有好多库存和大家分享🎁。转载需注明出处和原作🌹。给你一个有根节点 root 的二叉树,返回它 最深的叶节点的最近公共祖先。叶节点 是二叉树中没有子节点的节点树的根节点的 深度 为 0,如果某一节点的深度为 d,那它的子节点的深度就是 d+1。

2023-09-06 18:14:19 51 1

原创 【C++11新特性】详解右值引用、移动构造、完美转发

右值引用”(Rvalue Reference)是 C++11 重要的新特性之一,搭配着 “移动构造” 和 “完美转发”,它们在C++的内存管理和函数调用方面发挥重要作用。在本文中,我总结了关于右值引用、移动构造和完美转发的一些常见用法,希望对大家有所帮助。

2023-09-05 13:00:29 162 1

原创 【每日一题】力扣:从两个数组里生成最小数字

博客主页:Skylar Lin望本文能够给您带来一定的帮助,如果有错误的地方敬请斧正!新人博主🧑,希望多多支持🍺,还有好多库存和大家分享🎁。转载需注明出处和原作🌹。给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 ,每个数组中的元素 互不相同 ,请你返回 最小 的数字,两个数组都 至少 包含这个数字的某个数位。示例 1:输入:nums1 = [4,1,3], nums2 = [5,7]输出:15。

2023-09-05 11:16:01 83

原创 【每日一题】力扣:序列化和反序列化二叉搜索树【值得一看】

博客主页:Skylar Lin望本文能够给您带来一定的帮助,如果有错误的地方敬请斧正!新人博主🧑,希望多多支持🍺,还有好多库存和大家分享🎁。转载需注明出处和原作🌹。序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。设计一个算法来序列化和反序列化 二叉搜索树。对序列化/反序列化算法的工作方式没有限制。您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。

2023-09-04 22:27:56 119 1

原创 【每日一题】力扣:消灭怪物的最大数量

博客主页:Skylar Lin望本文能够给您带来一定的帮助,如果有错误的地方敬请斧正!新人博主🧑,希望多多支持🍺,还有好多库存和大家分享🎁。转载需注明出处和原作🌹。你正在玩一款电子游戏,在游戏中你需要保护城市免受怪物侵袭。给你一个 下标从 0 开始 且长度为n的整数数组dist,其中dist[i]是第i个怪物与城市的 初始距离(单位:米)。怪物以 恒定 的速度走向城市。给你一个长度为n的整数数组speed表示每个怪物的速度,其中speed[i]是第i个怪物的速度(单位:米/分)。

2023-09-03 13:32:07 65

原创 【力扣 热题 100】三数之和【双指针】

望本文能够给您带来一定的帮助,如果有错误的地方敬请斧正!新人博主🧑,希望多多支持🍺,还有好多库存和大家分享🎁。跳出三重循环的框架,找到数值间的大小关系。答案中不可以包含重复的三元组。博客主页:Skylar Lin。,二重循环往后枚举一位后会有。,方便后面组成相同的三元组。转载需注明出处和原作🌹。,判断是否存在三元组。属于暴力法,部分测试用例。保持第二重循环不变,而将。

2023-09-01 14:37:38 41 1

原创 苦逼计算机类大学生的编程笔记

常言道,“ 鲲之大,一锅炖不下 ”;笔记之多,一文也写不尽。且先说一说我记笔记的心酸历程。相信很多小伙伴在刚开始学习编程的时候,都碰到过大大小小很多坑。像 Lin 的话,就在记编程笔记上踩过不少坑。在刚上大一那会儿,我还比较懵懂🤡,当时一口气就买了一叠“ 漂亮 ”的笔记本,打算像高三一样,记上满满当当的优美的笔记。因为我本人有点儿强迫症,在记笔记这件事儿上,只要笔记里哪部分写得不好看了,我都会发自心底地“ 厌恶 ”我的笔记;哪曾想,编程笔记上一堆代码,手写起来根本没法看,于是用小本本记笔记就哒咩了。

2023-08-25 16:33:17 51 1

原创 【C++基础知识】“常量指针”和“指针常量”

和常量引用一样,指向常量的指针仅仅要求不能通过该指针改变其对象的值,而没有规定那个对象不能通过其他途径改变。顶层 const 表示指针本身是一个常量,底层 const 表示指针指向的对象是一个常量。指针常量本身为常量,不能改变指向。更广泛的,顶层 const 可以表示任意对象是常量,这一点对于任意数据类型都适用。即一个指针指向一个常量对象的地址;指向常量的指针不能用于改变其对象的值。其一是允许“常量指针”指向一个非常量对象,另外一个是“常量引用”。的情况,则不能改变指向也不能改变指向的对象的值。

2023-08-25 10:59:32 35 1

原创 正确解决finalshell连接虚拟机报错:java.net.ConnectException: Connection refused: connect

从大二上学期就下载了 finalshell,不过当时一直连接不上 virtualbox 的虚拟机,网上找了好几篇文章,都没有解决,因为其中有的文章解决的是连接超时的问题,有的现在看来可能是版本的问题,药不对症,就没能解决。当时学习、工作比较忙碌,所以就一拖再拖,现在好好总结一下解决方法。

2023-08-23 14:56:09 6160 13

原创 【力扣 热题 100】轮转数组【原地算法】

给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。先将 nums 数组后 k 位放入 temp 数组中;再将 nums 数组移动 k 位;最后将 temp 数组中前 k 位的值赋给 nums 数组。注意:要考虑 k 大于数组长度的情况,即可通过k = k % n;解决。

2023-08-22 19:12:41 44 1

原创 【力扣 热题 100】最大子数组和【DP】

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。

2023-08-22 18:45:04 31 1

原创 【力扣 热题 100】二叉树的所有路径【深搜】

望本文能够给您带来一定的帮助,新人博主🧑,希望多多支持🍺,还有好多库存和大家分享🎁。转载需注明出处和原作🌹。给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。

2023-08-22 15:33:02 26 1

原创 【力扣 热题 100】螺旋矩阵【矩阵】

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]

2023-08-21 14:35:13 48 1

process-run.py及readme下载

操作系统导论作业1:作业1:运行process-run.py 附自己翻译的readme文档

2023-09-08

【STL源代码】C++标准库STL源代码下载

【STL源代码】中包含了许多常用的数据结构(如vector、list、map等)和算法(如排序、查找、遍历等)。通过阅读代码可以仔细研究这些数据结构和算法的实现,了解它们的内部工作原理和使用方式。

2023-09-05

【人机交互期末作品】健康类APP设计模型

该模型为健康饮食、健康运动类型的APP交互设计RP模型,该模型包括5个主要界面: (1)首页(2)发现(3)计划(4)聊天(5)我的 该模型设计的功能包括: (1)用户健康数据、饮食习惯、体育爱好等信息,并为其分析制定饮食、运动健康计划; (2)提供线上一对一的专业指导或医学咨询,帮助用户在工作生活之余收获身体健康; (3)提供社区分享、聊天功能,可以轻松社交、放松娱乐,打卡计划。 该模型仅供同学们参考和学习,不要直接用去当大作业。

2023-09-03

空空如也

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

TA关注的人

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