硬盘制为启动盘的过程 && 操作系统的引导过程
硬盘制为启动盘的过程 && 操作系统的引导过程1.硬盘制为启动盘的过程大致流程: 0.简略版1.磁盘的物理格式化 用于划分磁道和扇区,为存储数据准备物理空间 2.磁盘分区 将整个硬盘划分为多个独立的逻辑区域(如C盘、D盘),便于数据管理。此过程会创建主引导记录(MBR),其中包含了分区信息。 3.磁盘的逻辑格式化 在每个分区内创建文件系统(如NTFS、FAT32、EXT4),初始化引导块、超级块、根目录等管理结构。这样,操作系统才能识别和读写该分区。 4.安装操作系统 将操作系统(如Windows、Linux)的核心文件复制到活动分区(通常是C盘)。 安装引导程序(如Windows的Boot...
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...
Day136 | 灵神 | 回溯算法 | 子集型 串联字符串的最大长度
Day136 | 灵神 | 回溯算法 | 子集型 串联字符串的最大长度1239.串联字符串的最大长度1239. 串联字符串的最大长度 - 力扣(LeetCode) 笔者这道题写的感觉很麻烦,大家可以去看看官方题解 思路: 用选或不选这个思路,会让思路变得非常简单。具体来说就是看选不选当前的字符串,选的话长度加上当前字符串,不选的话就递归下一个字符串选或不选 难点在于 我们决定要选当前字符串的情况下,我们能不能选当前字符串,即看这个字符串和已经选了的有没有重复,除此之外还要看组内有没有重复的 用下面这个函数来检查能不能选当前字符串 遍历字符串,如果在之前选的里面没出现过,对应字符++,如果有字符出现过,那代表我们都将不能选这个字符串,所以直接break for循环结束后,有两种情况,第一种就是i==s.size()这说明我们这个字符串可以选,因为遍历到了最后都没有重复(注意,之后恢复...
Day135 | 灵神 | 回溯算法 | 子集型 烹饪料理
Day135 | 灵神 | 回溯算法 | 子集型 烹饪料理LCP 51.烹饪料理LCP 51. 烹饪料理 - 力扣(LeetCode) 思路: 思路比较好想 笔者用的是选或不选的思路,即看第 i种选或不选,如果食材足够就选(choicei进行判断),如果食材不足就不选,直接去看i+1选或不选 选的话就把食材饱腹感美味度给修改了,不选的话就直接递归就行 完整代码: 1234567891011121314151617181920212223242526272829303132333435363738394041424344class Solution {public: int res=-1; //还够不够选第i种 bool choicei(vector<int>& materials, vector<vector<int>>& cookbooks,int i) { for(int j=0;j<materials.size();j++) ...
Day134 | 灵神 | 回溯算法 | 子集型 字母大小写全排列
Day134 | 灵神 | 回溯算法 | 子集型 字母大小写全排列784.字母大小写全排列784. 字母大小写全排列 - 力扣(LeetCode) 思路: 这道题用选或不选的思路来解答。选或不选说的不是选或不选s字符串中的某个字符,而是选或不选改变s字符串中字符的大小写 如果是数字的话就不用说了,我们直接输入到path就行 如果是字母的话,那就有两种情况 1.选择不改变其大小写直接输入到path,这种就是原来什么样子现在还什么样 2.选择改变其大小写直接输入到path,这种就是改变了大小写以后放进去的 需要注意的点:对于同一个结点有多个状态,比如这道题,在选择字母a之后,字母a还有两个状态一个改变大小写一个不改变。如果是这种情况的话就要把两个状态都给列出来,即小写a输入path后递归一遍,大写a输入path后再递归一遍 完整代码: 1234567891011121314151617181920212223242526272829303132333435363738class Solution {public: vector<string> res; ...
Day133 | 灵神 | 回溯算法 | 子集型 二叉树的所有路径
Day133 | 灵神 | 回溯算法 | 子集型 二叉树的所有路径257.二叉树的所有路径257. 二叉树的所有路径 - 力扣(LeetCode) 思路: 这道题思路比较简单,直接写就行 完整代码: 1234567891011121314151617181920212223class Solution {public: vector<string> res; void dfs(TreeNode *t,string path) { if(t==nullptr) return ; path += to_string(t->val); if(t->left==nullptr&&t->right==nullptr) { res.push_back(path); return ; } path += "->"; ...
深度学习与神经网络 | 邱锡鹏 | 第六章学习笔记 循环神经网络
6.循环神经网络6.1 给神经网络增加记忆能力 6.2 循环神经网络 6.3 应用到机器学习 s是单个词的意思,b是一个词的开始,e是一个词的结束 没有结果产生的部分就是编码部分,有结果产生的部分就是解码部分 这是之前说的自回归模型 6.4 参数学习 会让第t个时刻的时候收不到关于第k个时刻的损失对地t个时刻的影响 原因就是梯度爆炸或者梯度消失 6.5 如何解决长程依赖问题让上图的伽马=1即可,但是这个条件很强,很难达到 6.6 GRU 和 LSTM ft是遗忘门,说的是我们这次应该忘记多少信息 6.7 深层循环神经网络就是多叠了几层 6.8 应用 6.9 扩展到图结构
深度学习与神经网络 | 邱锡鹏 | 第五章学习笔记 卷积神经网络
五、卷积神经网络 我们希望有一个新的网络可以提取局部不变性 5.1 卷积 前两个输入都不卷,从第三个开始卷,因为滤波器的长度是3 每次选定三个数卷,比如前三个,1,1,2 2* (-1) + 1*0+1*1= -1 然后根据公式就是如上计算,就是滤波器的第三个对应当前选定的三个值的第一个,第二个对第二个,第一个对第三个,其实就是倒着来的,后面的也都是如此 然后可以看到,输入有7个,输出有5个,滤波器大小是3,那么关系就是7-3+1=5 也就是n-k+1=5 零填充很常用,因为这个可以让输入和输出长度相同 比如图中输入是7,滤波器是3,输出本来应该是5,现在零填空P=1,那就是补了两个零,表面上输入好像成9了,这么一算,输出就是7,但实际上输入还是原来的7,因为那两个0是补进去的 其实P=(k-1)/2,也就是输入会补k-1个0 5-3+1=3,依旧满足上面那个规则 5.2...
深度学习与神经网络 | 邱锡鹏 | 第七章学习笔记 网络优化与正则化
7.网络优化与正则化 7.1神经网络优化的特点 所以找个平坦最小值就好了,不一定需要全局最小值 7.2 优化算法改进 7.3 动态学习率 总体趋势还是减少的。时不时变大是为了找到更好的局部最优 7.4 梯度方向优化 效果比随机梯度要好 7.5 参数初始化 上图通常用在循环网络中 7.6 数据预处理 问题就是会对参数初始化产生一定的影响,也会对优化产生一定的影响 标准差为0的数据没啥意义,直接就扔了 7.7 逐层规范化 7.8 超参数优化 7.9 正则化 7.10 暂退法可以提高网络的泛化能力 7.11 l1和l2正则化 7.12 数据增强可以增强模型泛化能力
Day132 | 灵神 | 回溯算法 | 子集型 分割回文子串
Day132 | 灵神 | 回溯算法 | 子集型 分割回文子串131.分割回文子串131. 分割回文串 - 力扣(LeetCode) 思路: 其实就和子集一样的,每次加入一个字符然后判断是不是回文串,是的话加入答案集合不是的话就不加入答案 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完整代码: 123456789101112131415161718192021222324252627282930313233343536class Solution {public: vector<vector<string>> res; bool is(string s,int begin,int end) { for(int i=begin,j=end;i<j;i++,j--) { if(s[i]!=s[j]) return false; ...