- 博客(57)
- 收藏
- 关注
原创 【Linux———线程精讲】
本篇博客主要关于Linux中有关线程的知识,包括线程的介绍,线程的操作,锁及锁的操作,条件变量及其操作,以及最后编写了一个日志类和线程池,内容很多请耐心观看!我们之前可能了解过线程就是一种轻量化的进程,是在进程内部执行的一种执行流,在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。
2025-03-19 18:29:19
621
原创 【Linux———生产消费模型】
本片博客介绍了Linux中一个十分重要的知识——生产消费模型,除此之外,你还能了解到信号量,虚假换醒,内容很多,请耐心观看!生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过这个容器来通讯,所以生产者生产完数据之后不用等待消费者处理,直接将生产的数据放到这个容器当中,消费者也不用找生产者要数据,而是直接从这个容器里取数据,这个容器就相当于一个缓冲区,平衡了生产者和消费者的处理能力,这个容器实际上就是用来给生产者和消费者解耦的。
2025-03-19 18:18:18
658
原创 【C++11———线程】
本篇博客主要介绍了,C++11中有关线程的知识,主要包括线程库thread,锁mutex,条件变量condition_variable,以及原子库atomic,请耐心观看!........................................................你能不能再编一个理由,等我回家,等我回家,等我回家————《等我回家》
2025-03-19 17:00:27
853
原创 【C++———智能指针】
本片博客主要介绍了什么是智能指针,RAII的思想,以及C++中重要的3种智能指针,请耐心观看!....................................................是不是习惯了能换一点缘分,让沉默的秒针,代替我的疑问————《天份》
2025-03-19 16:55:05
593
原创 【C++———IO流】
本篇博客主要介绍了C++中的输入输出流,主要包括<iostream>,<fstream>,<sstream>,三种流,涉及他们的用法以及注意事项,请耐心关键看!
2025-03-19 16:46:41
807
原创 【C++———类的新功能以及特殊类的设计】
本文主要讲述C++11中引入的类的一些新功能,以及一些特殊的类该如何设计,还有一个非常重要的设计模式——单例模式,请耐心观看!如何设计一个类,使其只能创建一个对象,实际上,通过单例模式我们就能实现。单例模式是一种设计模式(Design Pattern),设计模式就是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式的目的就是为了可重用代码、让代码更容易被他人理解、保证代码可靠性程序的重用性。
2025-03-19 16:42:39
991
原创 【C++———异常】
本篇文章着重讲解C++异常处理的方式,三个关键字,tyr,catch,throw,并且介绍异常的用法和自定体系的异常以及智能指针在异常处理中的使用场景.其中,会复习C语言异常处理的方式,还请耐心观看!实际中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了。
2025-03-19 16:36:43
959
原创 【Linux———信号精讲】
本篇博客主要介绍了,Linux中有关信号的知识,包括信号是什么,如何产生的,有什么作用,请耐心观看!执行该信号的默认处理动作。提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕捉(Catch)一个信号。忽略该信号。根据信号在内核中的表示方法,每个信号的未决标志只有一个比特位,非0即1,如果不记录该信号产生了多少次,那么阻塞标志也只有一个比特位。因此,未决和阻塞标志可以用相同的数据类型sigset_t来存储。
2025-03-05 20:05:48
711
原创 【Linux———进程间的通信】
本篇博客的主要内容主要介绍了进程之间是如何进行通信的,了解进程间的通信对操作系统的学习相当重要,请耐心观看!提示:以下是本篇文章正文内容,下面案例可供参考进程间通信简称IPC(Interprocess communication),进程间通信就是在不同进程之间传播或交换信息。管道是Unix中最古老的进程间通信的形式,我们把从一个进程连接到另一个进程的数据流称为一个“管道”,在Linux中主要包括匿名管道和命名管道。在linux命令中,| 就是管道,可以将输出的信息读取给后面的命令处理。
2025-03-01 16:43:25
763
原创 【动静态库的原理及其使用】
本篇博客介绍了动静态库,讲述它们的区别与联系,以及如何打包和使用动静态库,请耐心观看!...................................................................................................昨天已是过去,明天更多回忆。
2025-02-24 18:45:56
567
原创 【Linux———基础IO】
更改重新更改命令读取/输入以及输出的方式、方向。Linux重定向有三种类型,分别是标准输入重定向、标准输出重定向、标准错误输出重定向,而体现到命令中也有三种形式分别是输出重定向——“ > ”,输入重定向——“ < ”,追加重定向——“ >> ”。输出重定向:输入重定向:理解文件系统,首先我们必须将磁盘想象成一个线性的存储介质,想想磁带,当磁带被卷起来时,其就像磁盘一样是圆形的,将线卷起来就类似于磁盘,但当我们把磁带拉直后,其就是线性的。
2024-12-10 10:41:52
953
原创 【Linux——实现一个简易shell】
到这里我们就完了一个简易shell的实现,其中我们我们使用了,进程替换,字符分割,重定向,以及文件的打开及关闭,甚至包括dup2函数,等等知识,本篇博客到这里也就结束了,希望对你有所帮助!......................................................................是否沉默就是你的回答,我们都别挣扎,去爱他————《爱我还是他》
2024-11-30 15:49:47
1232
原创 【Linux———进程精讲】
本篇博客主要是对进程概念进行讲解,其中还涉及了环境变量,进程地址空间等内容,请耐心观看。这些状态通常由操作系统的调度程序和内核来管理和维护。进程在不同状态之间转换的过程由操作系统的调度算法控制,以实现对进程的合理调度和资源管理。前面我们已经对父子进程进行了概述,接下来我们总结一下父子进程的关系:父进程:在Linux中,父进程是生成其他进程的进程。通常情况下,init进程(PID为1)是所有其他进程的祖先,它负责系统的初始化和进程的管理。子进程:在Linux中,子进程是由父进程生成的进程。当一个进程调用。
2024-11-15 12:19:14
1029
原创 【初识操作系统——OS(Operator System)】
本篇博客介绍了什么是操作系统,以及操作系统在我们的计算机中扮演了什么角色,还有操作系统的本质,请耐心观看!任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。它是计算机系统中负责管理硬件和软件资源的基础软件层。它作为用户和计算机硬件之间的接口,为用户和应用程序提供了一个方便、有效、统一的运行环境,常见的操作系统有:ios,windows.......内核(进程管理,内存管理,文件管理,驱动管理)其他程序(例如函数库,shell程序等等)与硬件进行交互,管理所有的软硬件资源。
2024-11-04 08:19:35
2638
原创 【冯 • 诺依曼体系结构】
本文详细介绍了冯•诺依曼体系结构的原理,阐述了内存作为缓冲区如何提高系统效率,通过局部性原理解释了内存预加载数据的意义,并以QQ聊天为例展示了数据在冯•诺依曼架构中的流动过程。同时,讨论了程序加载到内存的必要性和相关输入输出设备的角色。
2024-11-04 08:11:55
1247
原创 【Linux———实现简易进度条】
本篇博客介绍了,如何在Linux下运行一个进度条小程序,以及该如何对一个进度条小程序进行美化,还包括行缓冲区的概念,以及 ” \r“ 的用法,请耐心观看!
2024-11-02 13:57:45
727
原创 【初识Linux———Linux_is_not_unix】
本篇对Linux的一些基本指令,一些基础工具,以及一些基本的环境配置进行了讲解,这里建议在开始学习之前,先去了解一下Linux的发展史。
2024-10-30 13:12:47
1134
原创 【 C++———包装器】
C++ 包装器是一种用于给其他编程接口提供更一致或更合适的接口的技术。它可以包装任何类型的可调用实体,如普通函数,函数对象,lambda表达式、类的成员函数等。C++ 包装器有多种类型,如bind, mem_fn, reference_wrapper, function等。包装器的本质是一种类模板,它可以提高模板的效率,简化代码,增强可读性和可维护性。下面介绍C++中的两种包装器:function包装器和bind包装器。function是一种函数包装器,也叫做适配器。
2024-10-25 11:47:46
983
原创 【C++———lambda表达式】
本篇讲述了C++中一个重要的语法lamda表达式,该语法在python,java当中也存在它不仅可以提高代码可读性还可以简化代码的编写,还请耐心观看本篇博客。实际上说,lambda表达式是一个匿名函数,也就是当使用lambda表达式可以让代码变得简洁,并且可以提高代码的可读性。//名字//价格int _num;//数量假设我们现在要对若干商品分别按照价格和数量进行升序、降序排序。
2024-10-24 13:14:50
1314
原创 【C++———可变参数模板】
本篇博客讲述了C++11中的一个重要的语法,也就是可变参数模板,他大大提高了传参的可玩性,和便捷性,请耐心观看。可变参数模板是C++11新增的最强大的特性之一,它对参数高度泛化,能够让我们创建可以接受可变参数的函数模板和类模板,这里主要针对函数模板的可变参数。在C++11之前,类模板和函数模板中只能包含固定数量的模板参数,可变模板参数无疑是一个巨大的改进,但由于可变参数模板比较抽象,因此使用起来需要一定的技巧。
2024-10-23 14:35:27
1171
原创 【C++———右值引用和移动语义】
本篇介绍了C++11中所引入的新语法,及右值引用,和两个新的成员函数,移动构造和移动赋值,通过本篇你会学到它们的用法及作用。本篇博客到这里就结束了,这里对于完美转发的部分,并没有对其追根溯源,因为其底层实现逻辑十分复杂,我们只需掌握其用法即可。.....................................................................................................我走的很慢和离开你时一样————《迟迟》
2024-10-17 15:40:23
695
原创 【C++11入门基础】
看到这个标题我们可能会有疑问,C++就C++,为什么还有C++11呢?后面的11代表什么呢?原来C++作为一门被普遍使用的语言,也是需要进行迭代更新的,就好像我们使用的某个品牌的手机会迭代很多代一样,C++这门语言也是会进行迭代更新,进而使其功能更加完善,更能满足需求。在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。
2024-10-16 12:11:09
925
原创 【数据结构中的哈希】
哈希思想,作为计算机科学中的一项基石技术,以其卓越的性能优化能力,成为了连接数据海洋与精准查询的桥梁。对于搜索问题和排序问题,哈希思想都发挥着重大的作用,本篇博客将带你对哈希思想有一个清晰的认识。顺序结构以及平衡树中,元素关键码(关键码_百度百科 (baidu.com))与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较(比如顺序表中的下标,红黑树中的Key,链表中的节点值)。
2024-09-27 17:18:44
851
1
原创 【C++———内存管理】
本篇是关于C++中的内存管理,可以帮助我们学习管理程序所内存资源,请耐心观看。针对于自定义类型new和malloc有什么区别呢?class Apublic::_a(a)cout
2024-04-28 16:38:16
1059
原创 【C++———模板】
本片内容主要是C++中模板的有关知识,主要讲述了模板及其实用和注意事项,请耐心观看。相必我们大家都听说过泛型编程这个概念:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。简单的说就是编写一种可以在多种数据类型上都能用的代码。比如说,你写一次代码,就可以在很多不同的数据类型上使用,而不需要为每种数据类型都重新写一遍相同逻辑的代码。它能让编程变得更简单、更灵活。
2024-04-27 15:17:34
809
原创 【C++———继承和多态】
继承和多态是C++这门面向对象语言十分重要的语法,它们对于提高C++代码的简洁性和可复用行有着重要的作用,同时继承和多态也符合我们现实生活中的绝大多数场景。下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。在上面所举的例子中,Person被称作基类(父类),Student被称作派生类(子类),继承方式主要有3种分别是公有继承(public),保护继承(protected),私有继承(private),上面所采用的是公有继承,3者的区别见下面的模块。
2024-04-25 17:53:27
1241
原创 【C++中的STL】
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考网上有句话说:“不懂STL,不要说你会C++”。STL是C++中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。
2024-03-26 17:14:03
7954
1
原创 【C++———实现日期类】
本篇是日期类的编写,望多多指正。在学习完类和对象之后,可以试着编写一个日期类进行练习,使得该类能够加减天数,计算两个日期之间相差的天数,还可以比较两个类之间的大小。.......................................................................................................你过得好吗?会想起我吗?————《你过得好吗》
2024-03-17 16:06:19
362
原创 【C++———类和对象】
本篇介绍了C++中类和对象相关的知识,欢迎指正!我们知道在之前学习C语言时,学习到了一个非常重要的知识——结构体,其实结构体已经可以表示一个对象了,比如我们用它来表示人,只需要知道人的各个属性即可正常表示int height;//身高int weight;//体重char name;//姓名int age;//年龄char sex;//性别int main()return 0;而在C++中,结构体内不仅可以声明变量,也可以定义函数。
2024-03-16 12:31:19
888
原创 【初识C++】
本篇介绍了C++中的一些基础语法,欢迎指正!定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。下面举个例子:这里首先打印一下中rand的值,以便后续观察。这里分别打印,全局中的变量rand,和命名空间A中的rand,发现值并不相同,甚至二者的地址也不相同,说明两者并不位于同一块空间。上面的实例提到了域作用符“: :”,那么什么是域作用符呢?
2024-03-08 15:05:08
720
原创 【数据结构中的排序】
本篇介绍了数据结构中排序的相关知识,欢迎观看和指正。1.概念:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。2.稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。3.分类内部排序:数据元素全部放在内存中的排序。
2024-03-03 13:58:59
907
1
原创 【数据结构中的两种优先遍历——BFS,DFS】
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2024-01-25 20:18:44
240
原创 【数据结构中的树】
我们普遍认为的树,是一种植物,有各种种类和形状,而数据结构中的树则指的是一种数据存储方式他表现出来就类似于一种树状图,树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。下面是其特点:1.有一个特殊的结点,称为根结点,根节点没有前驱结点2.除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1
2023-12-25 15:23:19
950
原创 【数据结构中的线性表】
在编写本篇博客时,学校正要进行期末考试,花费的时间比较长,内容很多,还望耐心看完!线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
2023-12-06 17:12:26
872
原创 【初识数据结构】
本篇介绍了,数据结构的概念,同时介绍了,时间复杂度和空间复杂度的相关知识。数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。我自己的理解就是数据结构是一种思想,她能够帮助我们处理各种数据,我们可以通过各种计算机语言来实现他。算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
2023-11-21 13:23:40
82
原创 【C语言程序的环境和预处理】
在ANSI C的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境,它用于实际执行代码。首先我们要清楚,一个代码写完以后是怎么成为一个可执行程序的。以下是翻译环境中对(test.c)的大致处理情况实际上,源代码在被编译器单独编译处理完之后,会首先生成对应的目标文件,(test.obj)组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。
2023-11-12 13:59:53
119
原创 【C语言中的文件操作】
介绍有关C语言中文件操作的相关知识。存放在磁盘上的文件是文件,存放在内存中的文件程序运行结束时,会被操作系统回收。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。本章讨论的是数据文件。
2023-11-09 15:20:35
103
原创 【C语言动态内存管理】
在开始正式学习之前,我们首先要搞清楚,动态内存管理是什么?简单来说就是,能够实现对内存的动态管理,包括,自由的开辟内存,扩大空间,自由的回收内存,节省空间。就比如我们上一篇博客中的通讯录的实现,那里通讯录的大小在我们最初设计时就被固定仅存放为100个联系人的信息的空间了,为了能够自由方便的管理空间,比如当空间被放满了,能够自动向内存申请空间,还有当空间充足时回收多余的空间,这些功能的实现都需要用到动态内存管理相关的知识。接下来,进入正题吧!//在栈空间上开辟四个字节。
2023-11-03 23:26:19
107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人