自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 信号的捕捉时间与捕捉细节

信号何时被处理,用户态与内核态,再谈进城地址空间,倒8,sigaction函数,信号捕捉的细节,pedn何时清零,处理信号时,又传入相同信号会被继续处理吗,可重入函数,SIGCHLD,基于信号实现对子进程的waitpid

2024-12-21 12:02:18 1019

原创 [Linux] 信号保存与处理

信号的保存,pend表,hand表,block表,sigsset_t类型,三张表的内核实现,硬件中断,软中断

2024-12-21 00:15:48 1080

原创 [Linux] 进程信号概念 | 信号产生

信号的概念,信号的产生方式,键盘产生、指令产生、软件产生、异常产生、指令产生、对比Term与Core,同步与异步

2024-12-19 23:30:00 923 1

原创 匿名管道实现进程间通信 | 进程池

进程间通信的目的,IPC、匿名管道的概念、具体使用和实现、手写进程池

2024-12-12 19:39:48 772 9

原创 命名管道 | 共享内存

命名管道的创建和使用,基于命名管道的两个进程通信代码实现共享内存的概念和相关函数借口使用,基于共享内存的通信代码实现,基于命名管道保护共享内存的代码实现

2024-12-12 19:36:36 1021 9

原创 【Linux】软硬连接 | 静动态库

软链接、硬链接、静态库、动态库、的概念以及用法,并且自己写了个库进行静动态库的封装和链接测试

2024-12-06 19:15:22 929

原创 ELF详解 | 链接动态库时的虚拟物理地址映射

ELF的内容,ELF header ,Program Header,SectionHeaderTable,section四个组成部分动态库加载到程序时的虚拟地址是如何产生的,GOT的使用,可执行程序的加载

2024-12-06 19:12:06 1083

原创 【Linux】磁盘 | 文件系统 | inode

磁盘的物理结构、磁盘如何存储读写数据,CHS和LAB寻址,文件系统分区分组,inode结构体,inode Table,Data block,inode bitmap ,block bitmap,路径缓存,dentry。inode与文件名的映射,inode与block的映射,

2024-11-28 13:19:01 1239

原创 【Linux】linux下一切皆文件 | 重定向 | 缓冲区与缓冲区

讲解了为什么说Linux下一切皆文件、vfs(虚拟文件系统),重定向的概念、方法,手动closedup2函数,fsync函数,文件级缓冲区的概念、语言级缓冲区的概念

2024-11-28 13:18:46 1023

原创 【Linux】详解shell代码实现(上)

手写shell,内建命令实现cd,export,env,如何获取用户输入的指令,如何打印命令行提示符,如何创建argv、argc,env,创建命令行参数,如何依靠进程替换执行命令

2024-11-22 20:37:34 938 1

原创 【Linux】文件IO的系统接口 | 文件标识符

Linux的系统文件接口,文件标识符fd,open、close、write、read函数的使用,c语言系统接口封装的意义,先描述再组织

2024-11-22 20:37:17 878

原创 [Linux] 进程等待 | 进程替换

进程等待,进程替换,wait函数,waitpid函数,非阻塞轮询,execl,execlp,execle,execv,execvpe,execvp,exec系列函数六个,系统接口execve

2024-11-09 12:00:00 1163 3

原创 [Linux] 进程控制之创建和终止

退出码,错误码,exit,_exit,进程的创建,进程的终止,fork的使用,fork创建失败,子进程在fork时的拷贝,写时拷贝,errno,perror,strerror

2024-11-06 02:00:00 622 1

原创 [Linux] 进程地址空间

虚拟地址和物理地址转换,页表,MMU,内存管理单元,地址空间的划分,虚拟地址空间的管理,设置页表的意义,缺页中断,页表中的标志位

2024-11-03 17:53:55 969 15

原创 【Linux】命令行参数 | 环境变量

环境变量的查看,修改,删除,增加,本地变量的设置,本地变量和环境变量的区别与转化main函数的三个参数,argc,argv,env.

2024-11-03 00:15:00 861 2

原创 【Linux】进程状态及其转换

进程状态,运行状态,阻塞状态,睡眠状态,僵尸状态,挂起状态,进程状态切换,前台进程后台进程,并发和并行,暂停状态,T状态,t状态,Z状态,孤儿状态,

2024-10-24 21:56:21 852 1

原创 【Linux】进程调度 | 进程切换上下文数据

进程优先级的查看修改,linux的O(1)调度算法,进程切换,PCB的双链表结构,思维导图,offset宏

2024-10-24 21:52:55 1080 8

原创 【Linux】进程概念 & PCB结构体 & fork创建子进程

进程概念就是数据和代码+task_struct(内核数据结构)ps的使用,查看进程信息proc文件存储进程信息fork创建子进程,通过fork返回值分别控制父子进程fork有两个返回值的原因和实现

2024-10-20 17:00:49 1188 13

原创 【Linux】冯诺依曼体系结构 & OS的概念

冯诺依曼体系结构讲解,操作系统概念即功能,对硬件先描述,再组织,对用户封装提供接口功能

2024-10-20 01:08:27 1033 4

原创 Linux下的调试器 : gdb指令详解

gdb调试用的指令详解,打断点、去断点、逐过程、逐语句、查看变量、跳转等等

2024-05-26 20:37:02 966 6

原创 Linux项目自动化构建工具-make/Makefile

讲解了make、makefile的作用,PHONY的使用以及原理,make报错的修复

2024-05-25 12:30:39 1025 19

原创 Linux编译器-gcc/g++使用

今天学习了gcc的预编译、编译、汇编、链接四个功能,还补充了编译器自举和静态库、动态库的概念、如何下载以及使用静态库的知识

2024-05-24 15:40:12 686 6

原创 Linux编辑器-vim使用

我们今天学习了vim的使用方法、vim的三种模式以及对应的命令,最后学习了vim环境的搭建,改造出了C++IDE

2024-05-23 21:16:11 1711 21

原创 Linux 软件包管理器 yum的下载、功能介绍及使用

我们讲解了Linux下的三种软件安装方式,Linux的生态、yum的list、intstall、remove三板斧,以及yum的概念、修改和还原

2024-05-20 20:32:27 3852 1

原创 如何理解和修改LInux的权限

如何理解和修改LInux的权限,粘滞位,chmod、chgrp、chown、umask

2024-05-19 12:39:36 1124

原创 Linux基础指令讲解(date,cal,find,grep,zip,unzip,tar,uname)

Linux基础指令讲解(date,cal,find,grep,zip,unzip,tar,uname,tab,crtl+c,ctrl+d,关机)

2024-05-18 14:54:06 986

原创 linux基础指令讲解(rmdir、rm、man、cp、mv、cat、more、less、head、tail)

linux基础指令:rmdir、rm、man、cp、mv、cat、more、less、head、tail的讲解

2024-05-16 21:42:32 1116 1

原创 linux基础指令讲解(ls、pwd、cd、touch、mkdir)

现在我们也是正式迈入linux的大门了,今天算是浅浅的学习了五个指令(ls、pwd、cd、touch、mkdir)

2024-05-15 20:43:53 1126 2

原创 C++11的更新介绍(lamada、包装器)

然而,这里的函数、仿函数、lambda的返回值和参数类型相同,可以认为三者极其相似,有没有办法让函数模板把他们识别为一种类型,从而只需要实例化一份呢。此时a,b具有常性,如果要去掉他们的常性就要加上mutable,此时lambda获得ab的方式是传值,所以不会影响到父作用域的ab。请注意,这里我们所传的不是对象,而是类,但是lambda返回值本身就是对象,所以直接传lambda肯定是不可以的。该仿函数无法直接调用,如果想要调用,可借助auto将其赋值给一个变量,lambda返回的仿函数对象,

2024-04-13 11:50:27 1116 7

原创 C++11的更新介绍(新的类功能、可变参数模板)

C++11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板。下面就是一个基本可变参数的函数模板// Args是一个模板参数包,args是一个函数形参参数包// 声明一个参数包Args...args,这个参数包中可以包含0到任意个模板参数。{}上面的参数args前面有省略号,所以它就是一个可变模版参数,我们把带省略号的参数称为“参数包”,它里面包含了0到N(N>=0)个模版参数。

2024-04-13 11:17:17 941 5

原创 C++11的更新介绍(初始化、声明、右值引用)

我们今天学习了初始化、声明以及右值引用三个点,大概是学完了一半,剩下的就下次再讲啦。🥰创作不易,你的支持对我最大的鼓励🥰🪐🪐。

2024-04-12 07:48:34 1220 35

原创 [C++]哈希应用之位图&布隆过滤器

我们之前学习了哈希表,哈希表通过映射关系,实现了O(1)的复杂度来查找数据,哈希在实践中是一个非常重要的思想,今天要学习的就是哈希思想的两大应用:位图与布隆过滤器。

2024-04-09 19:12:35 1258 22

原创 【C++进阶】用哈希实现unordered_set和unordered_map的模拟

之前我们学完红黑树后对他进行了改造,使之成为map和set的底层容器,今天我们则要把哈希表进行修改并以此为基础实现。

2024-04-08 21:32:30 857 8

原创 【C++进阶】哈希表(哈希函数、哈希冲突、开散列、闭散列)

首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表(又称哈希桶)中。比如中的场景,现在需要插入元素44,先通过哈希函数计算哈希地址,hashAddr为4,因此44理论上应该插在该位置,但是该位置已经放了值为4的元素,即发生哈希冲突。那如何寻找下一个空位置呢?当负载因子越大,哈希冲突的概率就越大,同时发生哈希踩踏的概率也越大,对于开放定址法,应该控制负载因子小于0.7,超过0.7则扩容。

2024-04-08 02:17:23 1327 23

原创 【C++进阶】【STL】set和map的讲解及模拟实现

1.了解了关联性容器和键值对的概念2.了解了以红黑树为基础的四大容器的作用3.重写了红黑树4.模拟了map和set,并分析了种种设置的原因赠人一赞,日行一善。

2024-04-05 15:38:22 1293 4

原创 【C++进阶】带你手撕红黑树(红与黑的爱恨厮杀)

我们可以认为事先建造好一颗纯黑节点的满二叉树,再在两个黑节点之间插入红节点,则理论最长路径就是一黑一红交替,不超过最短路径的二倍。,不得不惊叹于他那近乎绝对的平衡,然而也惋惜于插入删除效率的低下,今天要讲的红黑树则是以相对的平衡换来了插入删除效率的大幅提高,可谓是各有千秋。4. 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。5. 每个叶子结点都是黑色的(此处的叶子结点指的是空结点)3. 如果一个节点是红色的,则它的两个孩子结点是黑色的。2. 检测其是否满足红黑树的性质。

2024-04-04 13:40:47 717 4

原创 【C++进阶】AVL树(来自二叉搜索树的复仇)

假如以pParent为根的子树不平衡,即pParent的平衡因子为2或者-2,分以下情况考虑1. pParent的平衡因子为2,说明pParent的右子树高,设pParent的右子树的根为pSubR 当pSubR的平衡因子为1时,执行左单旋当pSubR的平衡因子为-1时,执行右左双旋2. pParent的平衡因子为-2,说明pParent的左子树高,设pParent的左子树的根为pSubL 当pSubL的平衡因子为-1是,执行右单旋 当pSubL的平衡因子为1时,执行左右双旋旋转完成后,

2024-04-03 18:16:15 1053 3

原创 【C++进阶】二叉搜索树(来自二叉树的复仇)

今天我们学习了二叉树里的扛把子——二叉搜索树,细致地模拟了他的接口的实现(递归与迭代),接着讲解了他的应用——K模型和KV模型,最后把KV写了一遍。

2024-04-01 16:27:54 1143 3

原创 【C++进阶】多态,带你领悟虚函数和虚函数表

通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态我们今天把多态摸了个底朝天,从概念到实现再到原理过了一遍,建议去练练题目巩固巩固多态的概念2. 多态的定义及实现3. 抽象类4. 多态的原理5. 单继承和多继承关系中的虚函数表6. 继承和多态常见的面试问题。

2024-03-30 15:00:06 936 6

原创 C++进阶,手把手带你学继承

1. 很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。2. 多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。10.笔试面试题学完了继承来试试这几道面试题吧。1.什么是菱形继承?菱形继承的问题是什么?2.什么是菱形虚拟继承?如何解决数据冗余和二义性的3.继承和组合的区别?什么时候用继承?什么时候用组合。

2024-03-30 10:05:27 932 23

空空如也

空空如也

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

TA关注的人

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