自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

转载 文件系统浅谈

sysfs与proc文件系统是内核自动生成的文件系统。分为两类:一类文件系统有大小,称为基于存储设备的文件系统。一类文件系统根本无法查看大小,称为基于逻辑的虚拟文件系统。tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M。tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的tmpfs文件系统会完全驻留在内存RAM中,读写几乎可以是瞬间的。同时它也有一个缺点tmpfs数据在重新启动之后不会保留,这点与内存的数据特性是一致的。

2023-08-21 17:56:55 240

翻译 详解grub(三)

有关内核映像和根分区的注意事项:在具有不支持访问的 BIOS 的旧计算机上 除了前 1024 个柱面之外,您还可以设置一个包含内核映像的引导分区,而 根本身位于其他地方。如果你想要新的 条目要放在其他人之上,使用较低的数字,如果您希望将其放置在其他人下方,请使用较高的数字 数字。下,包括 menu.lst 文件,该文件在引导期间读取,哪些内容以 GRUB 的形式显示给用户 菜单。默认情况下,MBR 代码查找标记为活动的分区,一旦找到这样的分区,它就会加载其 将扇区引导到内存中并将控制权传递给它。

2023-08-21 11:41:12 218

转载 详解grub(二)

diskboo.img的作用是读取core.img中剩余的部分到内存中,并将控制权交给kernel.img,由于此时还不识别文件系统,所以将core.img的全部位置以block列表的方式编码,使得diskboot.img能够找到剩余的内容。stage文件也分布在两个地方:/usr/share/grub/RELEASE目录下和/boot/grub目录下,/boot/grub目录下的stage文件是安装grub时从/usr/share/grub/RELEASE目录下拷贝过来的。“符号,它任何时候都保留本意。

2023-08-19 17:15:44 1420

原创 STL源码学习之序列式容器(sequence containers)

vector是动态空间,随着元素的加入,他的内部机制会自行扩充元素以容纳新元素。因此,vector的运用对于内存的合理利用和灵活性有很大的帮助,我们再也不必因为害怕空间不足而一开始就要求一个大块头array了,我们可以安心使用vector,吃多少用多少。//底层容器public://以下完全利用Sequence c的操作,完成stack的操作。

2023-08-19 13:46:47 111

原创 STL源码学习之迭代器

_type_traits: 负责萃取型别的特性,即判断这个型别是否具有 non-trivial 默认的构造函数、是否具备 non-trivial 拷贝构造函数、 non-trivial 赋值操作符、 non-trivial dtor(析构),如果不含有这些函数,那么在对这个类型进行构造、析构、拷贝、赋值等操作时,就可以采用最有效率的、直接针对内存的操作,如malloc()、memcpy()等等,从而获得最高的效率。通过traits,算法可以原汁原味的将迭代器的属性萃取出来,帮助算法正确高效的运行。

2023-08-18 19:31:13 86

原创 详解grub(一)

系统启动引导管理器,是在计算机启动后运行的第一个程序,他是用来负责加载、传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出,系统引导的其它部份,比如系统的初始化及启动过程则完全由内核来控制完成;在X86架构的机器中,Linux、BSD或其它Unix类的操作系统中GRUB、LILO是大家最为常用,应该说是主流;Windows也有类似的工具NTLOADER;

2023-08-18 18:07:45 1021

原创 STL源码学习之空间配置器(allocator)

当需要分配一个small chunk,但在small bins中找不到合适的chunk,如果last remainder chunk的大小大于所需要的small chunk大小,last remainder chunk被分裂成两个chunk,其中一个chunk返回给用户,另一个chunk变成新的last remainder chunk。当申请大内存时,使用mmap函数申请内存;,malloc 会遍历 fast bins 中的 chunk,将相邻的空闲 chunk 进行合并,并将合并后的 chunk 加入。

2023-08-17 20:00:41 67

原创 链表初识

链表一、创建链表首先定义一个结构体node存储数据和指向下一个链表的指针next定义清空的函数,先定义一个指针,让它指向head通过current_node不断指向后一个节点来遍历整个链表定义deleted来保存当前的节点,之后让current_node指向后一个节点最后释放deleted_node指向的内存空间typedef struct Node{ int data; struct Node *next;}Node, *LinkedList;void clear(

2021-07-22 12:31:42 64

原创 数据结构之线性表

线性表基础一、线性表的构造首先定义一个结构体 Vector , size表示最大储存容量,length表示当前储存的个数定义一个int类型的指针,作为用来储存元素的数组。接下来就是初始化函数init,借助malloc,让data指向一段连续size个int的空间下一步就是在函数结束前释放占用的内存空间#include <stdlib.h>typedef struct Vector { int size,length; int *data;} Vector;

2021-07-21 10:28:16 96

原创 实现sqrt与pow函数

实现sqrt与pow函数double my_sqrt(double n){ //0.1 当传入的数值小于1 , 传入的区间没有所求的答案 double head = 0,tail = n+1.0,mid; //设置误差区间 #define error 1e-7 while(tail - head >error){ mid = (head + tail)/2.0; if(mid * mid < n)head = mid;

2021-07-19 14:58:43 81

原创 素数筛简介

素数筛素数筛的基本思想:标记一个范围内的数字是否为合数,没有标记的为素数算法的空间复杂度为O(N),时间复杂度为O(N * loglogN)总体的思想是用素数去标记掉不是素数的数字,例如我知道了 i 是素数,那么2 * i、3 * i、4 * i…就都不是素数一、原始筛法暴力枚举,代码简单,但时间复杂度高,运算较大的数字有明显卡顿感。思路: 列举2 ~ sqrt(n)的所有数字,用n去除以,若都不能被整除,n就是质数int is_prime1(int n){ for(int

2021-07-19 14:53:49 72

实现sqrt函数与pow函数.md

如何在标准库下实现pow与aqrt函数

2021-07-18

空空如也

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

TA关注的人

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