自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux进程终止

进程终止操作系统做了什么、进程终止的方式、进程常见退出方法。

2023-06-06 16:49:57 148

原创 进程地址空间

虚拟地址空间,为什么要有虚拟地址空间?保护物理地址、内存管理模块和进程管理模块解耦合、进程独立性。什么叫挂起?fork创建子进程,操作系统都做了些什么?fork之前的代码子进程其实是有的,那为什么不从最开始的位置开始执行,而是从fork之后位置开始执行?进程的上下文数据。

2023-02-27 19:58:05 116

原创 Linux进程概念

进程的概念、查看进程的方式、bash也是一个进程、fork的返回值、fork做了什么;进程的状态:新建、运行、阻塞、挂起、退出;R、S、D、T、Z、X状态、孤儿进程;进程优先级的原因、查看方法、改变方法;竞争性、独立性、并行、并发、抢占与出让、、切换的概念。

2023-02-26 19:50:07 83

原创 初识C++模板

模板分为函数模板和类模板。函数模板实际调用函数的地址并不同,调用的不是模板,调用的是模板实例化生成的代码。模板没有减少函数。模板的实例化分为显示实例化和隐式实例化。如果类模板的声明和定义分离,就要写成如下,要指定类名、类型,还要加上模板参数。类模板声明和定义要放在同一个文件中

2023-02-17 16:45:00 71

原创 C++内存管理

new和delete对内置类型与malloc和free没区别,都不会初始化。不过可以让new初始化。malloc需要检查是否为空,malloc失败返回nullptr;new失败了会抛异常。new和delete匹配使用,new[]和delete[]匹配使用。对自定义类型,new开了空间还会调用构造函数初始化;delete先调用析构函数,再释放指向的空间。operator new和operator delete是库里面实现的两个函数,只是名字特殊而已,其里的函数内容本质上是对malloc和free的封装。

2023-02-15 16:57:10 51

原创 C++入门——从C过渡到C++

C++入门知识:命名空间、输入和输出、缺省参数、函数重载、引用、内联函数。

2023-02-15 09:04:12 75

原创 Linux调试器——gdb的使用

要使用gdb调试,要使用gcc/g++ -g选项。gdb的使用:quit、l1、r、b 13、b file:Swap、info b、d 3、disable/enable breakpoint 2、n、s、bt、p i、display i、undisplay 3、until xx、finish、c、set var n=xxx

2023-01-17 14:20:23 118

原创 vim的基本概念和操作

vim编辑器常用的模式4种:命令模式(默认用vim打开文件处于此模式,例如输入命令:vim test.c)、插入模式(此模式下编辑内容)、底行模式(控制光标、复制、粘贴、保存退出、撤销等辅助功能)、替换模式(替换字符)、视图模式(此模式下用来注释和取消注释)。

2023-01-17 10:40:13 396

原创 快速排序的三种版本及优化

快排三种版本:Hoare、挖坑法、双指针法;左边做key,右边先走。单趟排序的意义:分割出了左右区间、.key已经落到了正确的位置。快排两种优化:小区间用直接插入代替,减少递归调用、三数取中,防止顺序或逆序情况。

2022-12-29 09:47:56 313

原创 插入排序和希尔排序

插入排序的思想:已经有一个有序的序列,把新的值插入进去,依旧要保持有序,那么就要找对应的位置。先写单趟,再写全趟。希尔排序的思想:第一步:预排序(分组排序) 第二步:插入排序gap>1是预排序,gap==1是插入排序,gap越大,大的数可以更快的到后面,小的可以更快的到前面,越不接近有序(升序);gap越小,数据跳动越慢,越接近有序。希尔排序的时间复杂度O(N^1.3)

2022-12-22 16:27:48 73

原创 Linux权限理解

Linux上面的用户分类和切换、ll指令查看文件属性、文件的后缀、更改文件和目录的权限、起始权限、默认权限、共享目录删除文件、粘滞位

2022-12-09 16:19:04 95

原创 Linux常用热键和指令

热键:Alt+Enter/Tab/Ctrl+c/Ctrl+d/上下键/Ctrl+r指令:adduser/passwd/userdel -r/mkdir/ls/ls -l/ls -l -a/cd/cd ~/cd–/pwd/touch/whoami/tree/yum list | grep sl/yum install -y tree/nano/cat/gcc/stat/mkdir -p/rmdir/rm/rm -r/rm -rf/man/等等等等

2022-12-08 09:29:38 219

原创 数组建堆实现的优选及应用

向上调整建堆的时间复杂度是O(N*logN),对比向下调整建堆的时间复杂度是O(N),向下调整建堆显然更优。升序建大堆,降序建小堆。假设排升序,具体操作为:先建大堆,把最大的数和最尾的数换位置,把最后一个不看成堆里的,堆顶向下调整,选出次大的,重复如此。对于Top-K问题,最佳的方式就是用堆来解决,基本思路如下:(1)用数据集合中前K个元素来建堆((2)用剩余的N-K个元素依次与堆顶元素来比较,不满足则替换堆顶元素。

2022-11-25 11:09:13 227

原创 堆的概念及用C语言的实现

当堆Push数据(堆尾插数据)时,为了维持堆,需要和父节点比较,大小顺序不一致就需要调整,调整一次后还要再跟父节点比较,顺序不一致继续调,此过程封装一个Adjustup函数。 当堆Pop数据(出堆顶数据)时,为了不影响树的结构,此时引入一个方法:将堆顶和堆底数据互换,删除堆底数据,但此时堆顶的数据是维持不了堆的,需要调整至下一层,也有可能这一层也维持不了堆,还需要继续向下调整,直至最底。调整的过程封装一个Adjustdown函数。

2022-11-22 16:55:26 459

原创 设计循环队列

为了能区分循环队列的空与满,必须在循环队列中多开一个空间,且这个空间不放数据。多开一个空间后, front==rear表示空;未满时,rear指向尾数据的下一个(即尾插时先放数据,再rear++);当rear的下一个==front则表示满。

2022-11-17 13:40:35 162 1

原创 C语言实现栈和队列

栈的实现一般可以用数组或链表实现,但由于连续出栈时数组比链表更快,数组更优,因此选择以数组实现。队列的实现一般可以用数组或链表实现,但由于连续出数据时链表比数组更快(直接输入对头数据,新对头指向原对头的next),链表更优,因此选择以链表实现。

2022-11-16 20:10:22 536

原创 回文链表介绍及判断

回文链表介绍及判断

2022-11-09 15:14:57 256 2

原创 环形链表及其求法

带环链表求环的入口点法一:一个指针从相遇点开始走,一个指针从链表头开始走,他们会在环的入口处相遇。法二:设相遇点的下一个点为newHead,把相遇点和下一个点断开,让相遇点指向NULL,newHead作为新链表的头,此时就被转化为相交链表的问题。

2022-11-01 14:35:47 128

空空如也

空空如也

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

TA关注的人

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