- 博客(48)
- 收藏
- 关注
原创 Linux--进程(一篇博客让你理解操作系统的底层)
内存(Memory) 是计算机中最重要的部件之一,它是程序与CPU进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行的,因此内存对计算机的影响非常大,内存又被称为主存,其作用是存放CPU中的运算数据, 以及与硬盘等外部存储设备交换的数据。只要计算机在运行中, CPU就会把需要运算的数据调到主存中进行运算, 当运算完成后CPU再将结果传送出来, 主存的运行也决定了计算机的稳定运行我们的CPU掉电易失数据,但是我们的内存就不会这样,只要数据放在了内存里面,掉电也不会丢失数据。
2023-05-20 20:11:04
4617
57
原创 深入理解C&C++内存管理
本篇博客涉及C&C++的内存管理,涉及malloc,calloc等C语言动态内存开辟内容的复习以及C++新增的new和delete操作符的深入分析,浅谈了内存池和堆之间的关系,希望对大家有帮助~
2023-04-12 19:22:57
1009
42
原创 C++类和对象(中)
本篇博客涉及类的6个默认成员函数的相关知识,重点介绍了构造函数,析构函数,拷贝构造,运算符重载这几个方面,在运算符重载中重点分析了赋值重载的一些特殊要求和使用场景,希望对大家有所帮助~
2023-03-11 15:44:01
956
27
原创 三分钟学会用Vim
vim最小集vim是一款多模式的编辑器—各种模式—每种模式的用法有差别—每种模式之间可以互相切换但是我们最常用的就是3~5个模式vim就是一个单纯的编辑器注意事项:1.如果你知道自己目前所处的是什么模式,直接无脑ESC2.退出的时候,一般先保存后退出3.vim操作,不要用鼠标。
2023-02-17 14:03:23
8156
140
原创 C++入门:初识类和对象
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它,大家可思考下为什么?auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。
2023-02-14 20:05:30
7743
174
原创 从底层入手搞定C++引用和内联函数
我们这篇博客主要涉及C++语言中的引用和内联函数,深入分析引用和内联函数中的很多细节问题,同时从底层汇编入手来分析引用和内联函数的底层原理,希望对大家有所帮助~
2023-02-02 21:09:19
7227
195
原创 拓扑排序 (算法思想+图解+模板+练习题)
如果是一个有向无环图,那么一定有一个点的入度为0,如果找不到一个入度为0的点,这个图一定是带环的。将队列里的点依次出队列,然后找出所有出队列这个点发出的边,删除边,同时边的另一侧的点的入度 -1。对于有向图每个结点都有入度和出度,入度就是指向该结点的边数,出度就是该结点指向其他结点的边数。一个有向图,如果图中有入度为 0 的点,就把这个点删掉,同时也删掉这个点所连的边。然后D的入度为0,我们同样操作,最后图被删除干净,证明可以拓扑排序。总结一下拓扑排序就是只有从前指向后的边,没有从后指向前的边。
2023-01-13 19:13:41
33579
163
原创 C++入门----缺省参数和函数重载
我们这篇博客涉及C++入门相关知识,包括关键字,命名空间,标准输入输出,缺省参数和函数重载,不仅讲了如何去使用,同时还从多个角度来分析实现这些功能的原理,希望可以帮助到大家!
2023-01-11 21:14:05
8181
26
原创 shell原理及Linux权限
1.目录的可执行权限是表示你可否在目录下执行命令。2.如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)3.而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。目录的w权限决定!
2023-01-10 18:00:03
13221
196
原创 数据结构---各类排序算法详解
本篇博客针对排序的算法首先分为四大类:插入排序,选择排序,交换排序,归并排序,对每一类排序的思想都进行了说明,同时每一类排序下又细化出很多排序,如直接插入排序,希尔排序,快速排序等等,这些算法都有动图演示和画图思路详解,还附有每种算法的源代码实现,最重要的知识点快速排序的非递归实现和归并排序的非递归实现放在最后面详细讲解,有了前面各种算法思想的铺垫对于后面实现非递归也有一定的帮助,希望可以帮助到大家~ 接下来会持续跟新博客,分享自己的心得,欢迎大家交流~
2022-12-16 17:52:16
1907
31
原创 万字详解数据结构——树
本篇博客涵盖了树的基本概念,二叉树的初阶知识,包括完全二叉树,满二叉树,二叉树的实现,二叉树的四种遍历,二叉树的顺序实现和二叉树的链式实现,同时还有堆的相关知识,大小堆的实现,向上调整,向下调整,topK问题等等,希望对大家有所帮助,欢迎大家交流~
2022-11-28 11:01:53
1485
27
原创 从零开始学习Linux(1)
之前的数据结构模块和算法模块会继续给大家更新,同时接下来会给大家分享Linux的学习笔记,希望对大家有所帮助~操作系统是一款进行软硬件管理的软件。今天涉及到Linux操作系统的一些基本知识和少数基本操作,明天将会继续更新关于Linux的相关操作,如果有难点会画图帮助大家理解,希望对大家有所帮助,我们明天见~
2022-11-18 19:01:27
1314
4
原创 蓝桥杯必备算法分享——差分算法
差分的概念是相对与前缀和说明的。今天分享了差分算法,这个算法可以和之前的前缀和算法比较着学习,这两个算法的关系很紧密,理解了其中一个另外一个也很容易理解,作用就是给所选区间中的每个数加上C,提高时间效率,使时间复杂度达到O(n),希望对大家有帮助,我们明天见~
2022-11-15 22:02:35
1920
2
原创 前缀和算法
需要注意的是下标要从1开始,之前我们的数列数组大多都是从下标0开始,但是这里需要从1开始,理由下面会阐述。我们先从数学的角度来说,一维可以理解为一条线,而二维就是一个平面,一位前缀和是在一个线段上所有的点的和,二维前缀和就是在某个特定平面内所有点的和,现在我用图来帮助大家理解:二维前缀和要注意容斥原理,一定要小心别多减去某区域的和。今天给大家分享了前缀和的一维和二维情况,同时对于不好理解的地方也进行了画图讲解,希望可以对大家有所帮助,如果有什么地方存在错误欢迎大家指正,我们明天见~
2022-11-10 17:04:41
1581
14
原创 秒懂二分算法
我们今天进入到二分算法,之前总结了快速排序和归并排序的模板,没有细分其中数据到底是什么类型,今天的二分算法我们根据数据的类型分为两个模板(整数二分,浮点数二分),每个模板都有自己适应的情况,大家可以根据题目的不同选择不同的模板进行套用。
2022-11-07 15:47:07
958
原创 七大排序算法——归并排序
上一篇博客我分享了快速排序算法的思路和源代码,同时留了一个问题,快速排序的时间复杂度是多少?现在公布答案:快排的时间复杂度是O(n).今天我给大家分享的是七大排序算法中的第二种——归并排序。这篇博客涉及归并排序,归并排序总体分为三步:1.确定分界点2.递归排序左右区间3.双路归并 合二为一。
2022-11-05 18:33:50
974
1
原创 七大排序算法——快速排序
现在我们开始进入算法模块,在分享数据结构的知识的同时开始分享编程的算法,欢迎大家交流,有不对的地方欢迎大家斧正,也希望大家集思广益,拓展思维。快排总结:1.确定数组q,确定左端点l,确定右端点r。2.确定划分边界x3.按照划分的边界x将数组分成=x的两个区间。4.分别递归处理两个区间。快排定下划分边界x后就从左右端点位置开始向中间走,两个区间中不满足就停下,同时停下了就交换数据然后继续向下走,直到两个下标相等了或者左边区间的下标大于右边区间的下标了就停止,也就完成了快排。
2022-11-04 21:16:13
1817
25
原创 分分钟让你学会栈和队列
我们之前学习了线性表中的顺序表和链表,链表具体学习了单链表和带头双向循环列表,链表如果细分的话可以分为8种,我们就不一一赘述,今天我们要学习的是线性表中另外两种数据结构——栈和队列,这两个数据结构很有特点,每一个都有自己独特的属性,但是两者也可以互相实现,即可以用队列实现栈,用栈实现队列,我们就进入今天的学习分享。栈的概念:栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。
2022-10-31 15:10:35
1134
5
原创 LeetCode——带环链表(快慢指针法)
本篇博客针对LeetCode的两个链表带环问题讲了快慢指针的应用,然后为有些特殊的题目提供了思路,欢迎大家私信,后面会持续更新,我们明天见~
2022-10-26 21:14:42
663
7
原创 三分钟带你手撕带头双向循环链表
我们从进入数据结构模块开始,首先学习了顺序表,顺序表其实就是数组,它需要一组连续的物理空间来存储数据,所以它的缺点很明确,但是优点就是查找起来很方便,可以根据下标直接访问,然后我们学习了单链表,单链表就弥补了顺序表必须是连续物理空间的缺点,它的特点是不需要连续的空间,每个结点通过指针来连接,但是它的缺点也很明显就是查找起来很麻烦,如果想要在指定位置插入数据,或者头插等功能不容易找到对应的位置,往往需要设置一个或多个指针来达到目的,所以我们今天来讲一下双向链表。
2022-10-26 09:05:46
1213
38
原创 三分钟让你掌握数据结构——单链表
上一篇博客讲了什么是顺序表,顺序表的增删改查等基本操作功能,但是顺序表有以下缺点:1.中间/头部的插入删除,时间复杂度为O(N)2. 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。3. 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间如何解决这些缺点呢?我们就要讲到链表了。
2022-10-22 15:12:44
867
4
原创 三分钟学会数据结构顺序表
本篇博客涉及顺序表的定义,顺序表的静态实现和动态实现,还有顺序表增删改查等基本操作的实现,让你三分钟掌握数据结构——顺序表
2022-10-19 20:34:37
1962
25
原创 Leetcode——消失的数字 (三种解法)
本篇博客是小猿刷Leetcode刷题——消失的数字的三种方法,希望可以给大家提供一些思路,会持续更新自己学习的笔记和刷题的解法等,我么明天见~
2022-10-13 21:57:52
1598
14
原创 数据结构——三分钟让你学会计算时间复杂度
本篇博客将涉及数据结构中时间复杂度的相关知识,包括什么是时间复杂度,时间复杂度的计算,时间复杂度的对比等,也正式意味着开始进入数据结构板块的学习。算法效率分析有两种:一种是时间效率,一种是空间效率。时间效率被称为时间复杂度,空间效率就是空间复杂度,时间复杂度主要衡量一个算法的运行速度,而空间复杂度主要衡量一个算法所需的额外空间。三分钟让你学会计算时间复杂度!!!
2022-10-13 14:30:54
3122
11
原创 文件操作(下)
我们之前学的文件的顺序读取,我们只能从文件的第一个数据开始读取,然后按照顺序一个一个读下去,但是我们如果想直接从一个位置开始读取就办不到,这里我们就要考虑文件的随机读取。
2022-10-12 17:02:52
747
26
原创 通讯录——文件读写版本
通讯录的最终版本(包含文件读写)也分享了,写到这里通讯录的三个版本也就都结束了,后一个版本都是在前一个版本的基础上改进的,逐步让功能完善,成为可以真正满足需求的通讯录,再大的程序我们都可以大而化小,分而治之,逐步实现它的一个一个功能,希望我的博客对大家有所帮助,我们明天见~
2022-10-09 19:23:01
1154
6
原创 memcpy函数和memmove函数
memcpy函数也就是内存拷贝函数,memcpy函数有三个形式参数,因为是内存函数,所以对于传入形参的数据的类型不做任何限制,所以形式参数指针设置为void*,第一个参数是目的地址,第二个是原地址,第三个是拷贝多少个字节。
2022-10-08 16:34:37
1143
2
原创 文件操作(上)
我们在编写程序时肯定会遇到要将数据写入一个文件保存或者导入一个文件数据的情况,这个时候我们就要掌握文件的相关操作才可以达到目的,本篇博客就将针对文件的一些操作进行讲解,希望对大家有所帮助。
2022-10-07 21:26:18
965
17
原创 动态版本通讯录的设计
动态版本的通讯录实现,涉及到realloc,calloc,free函数的使用,最终实现一个更加符合实际,可以随着联系人的增加而自动扩容的通讯录,是之前静态版本通讯录的进化版本!
2022-10-05 18:57:03
953
5
原创 通讯录实现
本篇博客所实现的是通讯录第一个版本——静态版本,内存大小一旦确定不能灵活的更改它的大小,可以简单实现通讯录的基本功能。我们将通讯录的程序按功能分别写在一个工程的三个文件中,使得程序结构更加清楚,下面就分别讲这三个文件是如何相互作用实现通讯录的。但是局限性也很明显,就是不能容易的改变通讯录的大小,这就涉及到动态内存管理,随后我将会继续更新以动态内存的方式创建通讯录。
2022-10-03 14:50:27
980
2
网上鲜花预约系统 Android studio开发
2023-06-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅