- 博客(83)
- 收藏
- 关注
原创 Linux《库的制作与原理》
本文介绍了Linux系统中库的制作与加载过程,包括静态库和动态库的生成、使用及区别。主要内容包括: 库的概念与分类:库是二进制可复用代码,分为静态库(.a)和动态库(.so)。 静态库制作:使用ar工具将.o文件打包,通过gcc的-l和-L选项链接使用。 动态库制作:使用gcc的-fPIC和-shared选项生成,需要设置环境变量或配置文件让系统能找到库。 ELF文件格式:详细解析了可执行文件、目标文件和库的ELF格式结构。 程序加载过程:从磁盘加载到内存,建立虚拟地址空间映射的完整流程。 动态链接原理:通
2025-07-06 02:18:16
1321
45
原创 Linux《文件系统》
本文深入探讨了文件系统在磁盘中的存储机制。首先从磁盘硬件结构入手,介绍了机械硬盘和固态硬盘的区别,详细讲解了磁盘的物理结构(盘片、磁道、扇区)和两种寻址方式(CHS和LBA)。然后引入文件系统概念,重点解析了Linux的ext2文件系统,包括分区管理、块组结构、inode和数据块存储机制,以及目录存储方式。文章还阐述了dentry树如何优化路径解析过程,解释了分区挂载的作用。最后对比分析了软链接(快捷方式)和硬链接(inode别名)的不同特性,并指出操作系统对目录硬链接的限制。
2025-06-01 19:46:24
2463
62
原创 Linux《基础IO》
本文介绍了Linux基础IO相关内容,包括文件描述符、重定向原理和缓冲区机制。首先回顾了C语言文件操作接口,引入Linux系统调用open、read、write等函数。重点讲解了文件描述符本质是数组下标,以及通过dup2实现重定向的原理。文章还演示了如何为自制shell添加重定向功能,并深入分析了"Linux下一切皆文件"的设计思想。最后探讨了内核缓冲区和语言层缓冲区的区别,并实现了一个简单的类libc库。通过这些内容,读者可以理解Linux文件操作的系统实现机制。
2025-05-26 19:50:36
2351
50
原创 Linux《自主Shell命令行解释器》
在上一篇中,我们学习了进程退出、进程等待和进程替换等概念。基于这些知识,本文将进一步探讨如何实现一个简单的Shell命令行解释器。通过构建Shell,我们可以更深入地理解操作系统如何执行用户输入的指令。本文将引导你逐步实现这一功能,帮助你更好地掌握操作系统的核心机制。让我们一起开始学习,共同进步!
2025-05-19 23:27:56
2087
45
原创 Linux《进程控制》
1.进程创建在之前的Linux《进程概念》当中我们已经了解了进程基本的概念,那么接下来在本篇当中我们将开始进程控制的学习;在本篇当中我们先会对之前的学习的创建子进程的系统调用fork再进行补充了解,并且再之后会重点的学习进程的终止、进程等待以及进程的替换。学习完这些知识之后再下一篇章当中就可以试着自己实现Shell,通过本篇的学习将会让你对进程有更深的理解,一起加油吧!!!1.进程创建。
2025-05-10 00:43:48
1936
46
原创 Linux《进程概念(下)》
在之前我们已经了解了进程基本的概念、知道了如何去创建子进程;还了解了进程状态、进程切换、进程O(1)调度算法等,那么接下来在本篇当中我们就来学习环境变量和程序地址空间的相关知识,相信通过本篇的学习你会有很大的所获,一起加油吧!
2025-05-03 20:47:33
2943
55
原创 Linux《进程概念(中)》
当中我们已经了解了进程的基本概念以及如何去创建对应的子进程,那么接下来在本篇当中我们就继续来进程的学习,在本篇当中我们要学习到进程的状态、进程的优先级、进程切换、Linux真实的调度算法——O(1)调度算法。
2025-04-29 14:51:21
1959
41
原创 递归、搜索和回溯算法《递归》
在之前的优选算法当中我们已经学习了一些基本的算法,那么接下来我们就要来学习算法当中的一大重要章节——递归、搜索和回溯算法,其实也就是大家常常听到的dfs、bfs;其实本质就是递归,在学习搜索、回溯等算法的过程当中我们会先来了解算法的一些名词,之后再通过算法题来明白算法具体是如何使用的,最后在通过几道练习题来巩固算法。在本篇当中我们就来复习之前在C语言当中就学习到的递归,并且本次学习递归会和之前初次学习的角度不同,相信通过本篇的学习会让你不再惧怕递归,一起加油吧!
2025-04-28 16:22:09
1278
30
原创 Linux《进程概念(上)》
在之前的Linux学习当中我们已经了解了基本的Linux指令以及基础的开发工具的使用,那么接下来我们就要开始Linux当中一个非常重要的部分的学习——进程,在此进程是我们之后Linux学习的基础,并且通过进程的学习会让我们了解更多的操作系统的相关知识以及基本的底层原理,那么接下来就开始本篇的学习吧!
2025-03-30 21:46:46
3177
68
原创 Linux《基础开发工具(下)》
在之前的Linux《基础开发工具》上和中当中我们已经了解了一些的Linux当中的基础开发工具,接下来在本篇当中我们将继续来了解两个基本的开发工具git和gbd,信息通过本篇的学习让你了解和这两个工具的基本使用方法,接下来就开始本篇的学习吧!1.1 版本控制器的作用。
2025-03-24 20:59:38
2056
53
原创 C++《红黑树》
在之前的篇章当中我们已经了解了基于二叉搜索树的AVL树,那么接下来在本篇当中将继续来学习另一种基于二叉搜索树的树状结构——红黑树,在此和之前学习AVL树类似还是通过先了解红黑树是什么以及红黑树的结构特点,接下来在试着实现红黑树的结构以及实现红黑树插入新节点、进行节点查询的功能,相信通过本篇的学习能让你了解红黑树,一起加油把!!!
2025-03-18 23:30:13
2291
45
原创 Linux《进度条》
在之前的Linux基础开发工具当中我们已经了解了vim、gcc、makefile等基本的开发工具,那么有了这些开发工具我们就可以来实现我们Linux旅程当中的第一个程序——进度条。相信通过该项目的实现能让你对vim等开发工具更加的熟悉。
2025-03-16 21:22:43
1747
51
原创 Linux《基础开发工具(中)》
在之前的Linux《基础开发工具(上)》当中已经了解了Linux当中到的两大基础的开发工具yum与vim;了解了在Linux当中如何进行软件的下载以及实现的基本原理、知道了编辑器vim的基本使用方式,那么接下来在本篇当中将接下去继续来了解另外的两大基础的开发工具gcc/g++和自动化构建make/makefile,相信通过本篇的学习会使得你会有大的收获,一起加油吧!
2025-03-10 22:06:31
1659
59
原创 Linux《基础开发工具(上)》
在之前的篇章当中我们已经了解了Linux当中基本的指令以及相关的知识,那么接下来在本篇当中就开始学基本的开发工具,在此我们一共要了解6大开发工具,在此将这些工具的学习分为上中下篇,在本篇当中我们首先要来学习的是yun以及vim,一起加油吧!
2025-03-01 22:11:06
2255
61
原创 Linux《权限》
当中我们已经初步了解了Linux中的基本指令,并且在学习指令的过程中还学习了许多的Linux的基础知识,那么在本篇中将了解Linux内权限相关的知识,会学习Linux内权限的基本概念,之后还会了解如何修改文件的权限信息等操作;最后还要来了解关于权限的三个重要问题。接下来就开始本篇的学习吧!
2025-02-20 16:49:10
1641
61
原创 优选算法《位运算》
在本篇当中我们将会复习之前在C语言阶段学习的各种位运算,并且在复习当中将再补充一些在算法题当中没有进行总结的位运算的使用方法,再总结完常见的位运算使用方法之和接下来还是和之前的算法篇章一样通过几道算法题来对这些位运算的方法技巧进行巩固。在解决算法题过程中还是通过题目解析、算法原理讲解、代码实现三步来解决。相信通过本篇的学习能让你对位运算有更深的理解,一起加油吧!!!
2025-02-15 17:18:26
1920
62
原创 优选算法《前缀和》
在之前的篇章当中我们已经了解了双指针、滑动窗口、二分查找算法,那么接下来在本篇当中我们将继续进行算法的学习,在本篇当中我们学习的算法是前缀和算法。在此会先了解前缀和算法是什么,之后再了解前缀和算法的适用场景,再依次了解一维前缀和和二维前缀和,最后再了解完算法原理之后,还是和之前一样通过题目解析、算法原理讲解、代码实现的三步来完成代码习题。
2025-02-05 16:10:05
1616
72
原创 Linux《基础指令》
在之前的Linux《Linux简介与环境的搭建》当中我们已经初步了解了Linux的由来和如何搭建Linux环境,那么接下来在本篇当中我们就要来学习Linux的基础指令。在此我们的学习是包括两个部分,即指令和关于Linux的基础知识。相信通过本篇的学习能让你了解Linux的更多知识,一起加油吧!
2025-01-30 23:05:04
7314
58
原创 C++《AVL树》
在之前的学习当中我们已经了解了二叉搜索树,并且我们知道二叉搜索树的查找效率是无法满足我们的要求,当二叉树为左或者右斜树查找的效率就很低下了,那么这本篇当中我们就要来学习对二叉搜索树进行优化的二叉树——AVL树。在此会先来了解AVL树是什么,之后再学习AVL树的结构特点,最后会试着来实现AVL树的结构。在AVL树当中各种旋转是较难理解的,需要我们静下心来理解,一起加油吧!!!
2025-01-21 21:29:10
1902
58
原创 优选算法《二分查找》
在之前的学习当中我们已经初步了解过了二分查找的整体逻辑以及二分查找,接下来我们在本篇当中将系统的来学习二分查找的使用方式以及在什么情况下可以使用二分查找。在之前的学习当中我们了解到的二分查找是要求在有序的数组当中当数组元素有序时才能使用,但是其实这只是二分查找最朴素的使用场景,接下来我们将学习更多的二分查找的使用场景。相信通过被本章的学习之后你会有所收获,一起加油吧!!!
2025-01-18 22:34:58
1875
49
原创 Linux《Linux简介与环境的搭建》
在学习了C++或者是C语言的基础知识之后就可以开始Linux的学习了,现在Linux无论是在服务器领域还是在桌面领域都被广泛的使用,所以Linxu也是我们学习编程的重要环节,在此接下来我们将会花大量的时间在Linxu的学习上。那么接下来我们就开始Linux第一个篇章的学习,在此我们将会了解到Linux的发展史以及Linux的优势,最后还会讲解如何搭建Linux的环境,一起加油吧!
2025-01-17 23:53:38
2492
41
原创 优选算法《滑动窗口》
你这时可能会疑惑这个算法在之前怎么完全没有听说过,没有关系接下来在本篇当中就将带你一步步的了解滑动窗口的算法原理以及在什么情况下适合使用滑动窗口来解决问题,并且还会通过几道算法题的讲解让你进一步的理解滑动窗口。那么接下来就开始本篇的学习吧!,相信通过那几道算法题的讲解你已经知道该如何灵活的使用双指针了吧,那么接下来我们就接着来学习下一个优选算法——在优选算法的第一章当中我们了解了。
2024-12-30 20:43:04
4860
80
原创 优选算法《双指针》
在这些算法中我们先来了解的是一些非常经典且较为常用的算法,在此也就是优选出来的算法,接下来在每一篇章中我们都会来学习一种优选算法,并且在了解了算法原理之后接下来会通过几道算法题来巩固相应的算法原理。在每道算法题的讲解中都会通过。三步来带你完全吃透每道算法题,相信通过这一系列算法专题的学习,你的算法以及代码能力会有质的飞跃。接下来就开始本篇双指针专题算法的学习吧!在学习了C/C++的基础知识之后接下来我们就可以来系统的学习相关的算法了,这在之后的。
2024-12-16 22:53:59
3347
85
原创 C++《set与map》
在之前我们已经学习了解了C++STL当中的string和vector等容器,现在我们已经懂得了这些容器提供的接口该如何使用,并且了解了这些容器的底层结构。接下来我们在本篇当中将继续学习STL内的容器set与map,在此这两个容器与我们之前学习的容器提供的成员函数以及底层结构有较大的差异。接下来就开始本篇的学习吧!
2024-12-02 22:32:06
3494
106
原创 C++《二叉搜索树》
在初阶数据结构中我学习了树基础的概念以及了解了顺序结构的二叉树——堆和链式结构二叉树该如何实现,那么接下来我们将进一步的学习二叉树,在此会先后学习到二叉搜索树、AVL树、红黑树;通过这些的学习将让我们更易于理解后面set、map、哈希等的使用以及对底层结构的了解。在此先本篇中我们将了解二次搜索树的概念以及实现二叉搜索树插入、删除等的操作,在了解了这些之后相信在下一篇的set和map的学习你将轻松许多,接下来就开始本篇的学习吧!!!
2024-11-25 21:31:43
3395
92
原创 C++《模板进阶》
在之前的C++《模板初阶》当中我们初步了解了在C++当中模板的作用,并且了解了模板类和模板函数的定义和实例化时的使用方式,那么接下来在本篇我将进一步的学习模板的相关概念,例如特化,非类型模板参数等,相信通过本篇的学习你将对模板有更深的理解,要求加油吧!
2024-11-23 17:32:30
4643
79
原创 C++《多态》
在上一篇的C++《继承》当中我们了解了C++当中面向对象的一大特性继承,在类和对象章节我们了解了面向对象的特性封装,那么接下来我们在本篇就来了解面向对象的最后一个特性——多态,在此我们会了解到多态的概念以及要实现多态的必要条件是什么,最后我们会了解到多态的原理。相信通过本篇的学习会让你深入了解多态,接下来就开始本篇的学习吧!
2024-11-18 22:29:16
2702
94
原创 C++《继承》
在之前学习学习C++类和对象时我们就初步了解到了C++当中有三大特性,分别是封装、继承、多态,通过之前的学习我们已经了解了C++的封装特性,那么接下来我们将继续学习另外的两大特性,在此将分为两个章节来分别讲解继承和多态。本篇就先来学习继承的相关概念和性质,一起加油吧!
2024-11-14 20:48:50
2035
102
原创 C++《stack与queue》
在之前的章节我们学习了C++当中string、vector和list三种容器并且试着模拟实现这三种容器,那么接下来在本篇当中我们将STL当中的stack和queue,并且在学习stack和queue的使用之后和之前一样还会试着模拟实现stck和queue。在此我们还要了解到stack和queue是一种容器适配器,那么在这之前就要了解容器适配器是什么。最后我们还要了解一种双端队列的容器,并且分析其与vector和list的区别,那么接下来就开始本篇的学习吧!
2024-11-12 00:49:26
1800
86
原创 C++《list的模拟实现》
在上一篇C++《list》专题当中我们了解了STL当中list类当中的各个成员函数该如何使用,接下来在本篇当中我们将试着模拟实现list,在本篇当中我们将通过模拟实现list过程中深入理解list迭代器和之前学习的vector和string迭代器的不同,接下来就开始本篇的·学习吧!
2024-11-05 22:13:46
3390
110
原创 C++《list》
在本篇当中我们将学习STL中的list,在此list就是我们之前在数据结构学习过的链表,在本篇中我们要来了解list当中的成员函数该如何使用,由于list各个函数的接口和之前学习过的vector类型,因此在学习list的使用就较为轻松。在lis篇章中我们要重点了解的是在下一个篇章当中的list模拟实现中的迭代器实现,由于list底层的物理空间不一定是连续的,因此list迭代器的实现相比之前学习过的容器就复杂多了,在下一篇中将带来细致的讲解。在此之前我们先来了解list该如何使用吧!
2024-10-31 23:25:45
1780
89
原创 C++《vector的模拟实现》
在了解了什么是迭代器失效之后接下来就可以来分析为什么以上的代码存在迭代器失效的问题了在插入前当内存空间不足时也就是_finish = _endofstorage时就需要先进行扩容,那么在调用reserve之后_start就指向新的内存空间,但问题是此时指针pos还指向原来的内存空间,但是原内存空间内的数据已经被释放,此时pos指针就变为空指针,所以之后的将要插入位置之后的数据都往后移动一位时就会造成程序奔溃。
2024-10-27 21:03:35
3636
94
原创 C++《vector》
在之前C++《string》当中我们学习了string的各个接口的使用以及在string模拟实现当中试着实现了string当中日常我们会较为频繁使用到的接口,通过模拟实现我们对string的底层有了更深层次的理解。接下来在本篇当中我们将进行进行STL的学习,在本篇我们要学习的容器是vector也就是之前在数据结构学习过的顺序表,在学习vector过程中由于STL的接口大部分都是相识的因此在学习完string后学习vector将会轻松许多。接下来就开始本篇的学习吧!
2024-10-23 15:06:53
1753
87
原创 C++《string的模拟实现》
通过学习string内的各个函数后我们可以发现在解决一些要使用到字符串的环境下有了string内的这些函数操作能大大简化,在此当中最主要的是在进行插入、删除等操作时我们不用再显示的去对字符串的内存空间进行调整。那么在之前我们只是了解了string的该如何使用,接下来在本篇当中我们将试着模拟实现string,我们在学习了string的使用之后要模拟实现是为了能从更底层来了解string的各个功能时如何实现的,这会让加深对string的了解。接下来就开始本篇的学习吧!
2024-10-15 23:31:14
2725
90
原创 C++《string》
在之前的C语言学习当中我们已经了解了一系列的字符以及字符串函数,虽然这些函数也能实现对字符串进行求长度、拷贝、追加等操作,但是C语言当中的这些函数是与字符串分离的,并且最主要的是在使用这些函数时原字符串的底层空间是需要我们自己来管理的,这就很繁琐,稍不小心就会造成越界等问题。因此为了解决C语言中str系列函数的不足,在此我们就要来学习C++中提供的string类,string是用来管理字符串的类,能实现多种对字符串的操作并且在使用时不用我们显示的去扩容。接下来就开始本篇的学习吧!
2024-10-03 21:52:51
2027
104
原创 STL简介
在了解了C++中的类和对象以及内存管理基本的知识后接下来我们将进入STL的学习,在此我们在本篇会先了解STL的由来以及大致了解STL的组成,接下来在之后的篇章中我将依次来学string、vector等,学习完STL之后相信你会进一步了解C++的魅力所在。接下来就开始STL初步的了解吧!
2024-09-21 23:44:18
1538
56
原创 C++模板初阶
在之前的代码实现当中当我们要让一个函数能处理不同类型的数据时就只能使用函数重载,并且在此数据的类型还必须是我们重载的函数内拥有的,否则就无法实现。在之前实现顺序表、链表等数据结构时我们使用的是typedef来重命名数据结构内的数据类型,这种方式其实是存在缺陷的,例如这种方法就无法让我们同时实例化出两个内部数据类型不相同的顺序表。那么为了解决以上这些问题在本篇当中我们就将初步学习了解模板的概念和使用,在此包括函数模板和类模板,通过使用模板我们以上的这些问题将迎刃而解,接下来解开始本篇的学习吧!
2024-09-20 23:36:08
1226
82
原创 C/C++内存管理
在之前的C语言的动态内存管理篇章中我们了解了C语言当中的相关内存函数malloc、calloc、realloc,了解了这些函数的使用方法以及各个内存函数之间的区别。在本篇中我们将继续来学习内存管理,并且还将了解两个C++中新的内存管理方式——使用new和delete操作符进行内存管理,接下来就开始本篇的学习吧!
2024-09-15 23:56:37
1753
84
原创 C++《类和对象》(下)
在之前类和对象(中)我们学习了类当中的6大默认成员函数,我们了解了6大成员函数的结构特征和特点以及在不同情况各个成员函数是如何调用的,那么接下来我们在本篇当中将继续学习之前在学习构造函数中未了解的初始化列表,并且另外还要学习类和对象当中支持的支持的一些功能:类型转换、友元、static成员和函数、内部类和匿名对象。接下来开始本篇的学习吧!
2024-09-14 23:58:42
1536
41
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人