- 博客(59)
- 收藏
- 关注
原创 线性代数考研笔记
1 3 2:逆序数为1 奇排列1 2 3:逆序数为0 偶排列将 1 3 2 只需将3 2交换1次就可以还原原排列,那么1 3 2可以直接判断是奇排列。
2025-01-03 19:12:09
760
原创 Linux:网络基础概念
其实在网络角度,OSI 定的协议 7 层模型其实非常完善,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中,最终落地的是 5 层协议。首先,即便是单机,你的计算机内部,其实都是存在协议的,比如:其他设备和内存通信,会有内存协议。任何通信特征的变化,一定会带来新的问题,有问题就得解决问题,所以需要新的协议咯。协议本质也是软件,在设计上为了更好的进行模块化,解耦合,也是被设计成为层状结构的。但是通过上面的简单例子,我们是能理解,分层可以实现解耦合,让软件维护的成本更低。
2024-08-20 23:22:54
546
原创 C++:IO流
在C语言中,如果想要将一个整形变量的数据转化为字符串格式,如何去做?1.使用itoa()函数2.使用sprintf()函数但是两个函数在转化时,都得。
2024-08-20 14:28:03
975
原创 C++:C++的类型转换
在C语言中,如果C。1.隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败2. 强制类型转化:需要用户自己处理3.没有关联类型是不支持转换的。
2024-08-16 14:04:00
439
原创 C++:特殊类设计
只声明不定义:不定义是因为该函数根本不会调用,定义了其实也没有什么意义,不写反而还简单,而且如果定义了就不会防止成员函数内部拷贝了。信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再。如果这个单例对象在多线程高并发环境下频繁使用,性能要求较高,那么显然使用饿汉模式来避。如果单例对象构造十分耗时或者占用很多资源,比如加载插件啊, 初始化网络连接啊,读取。文件啊等等,而有可能该对象程序运行时不会用到,那么也要在程序一开始就进行初始化,比如在某个服务器程序中,该服务器的配置。
2024-08-16 13:13:25
474
原创 C++:智能指针
指程序使用系统分配的资源,比方套接字、文件描述符、管道等没有使用对应的函数释放掉,导致系统资源的浪费,严重可导致系统效能减少,系统执行不稳定。存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对 该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现 内存泄漏会导致响应越来越慢,最终卡死。工程前期良好的设计规范,养成良好的编码规范,申请的内存空间记着匹配的去释放。,就说明自己是最后一个使用该资源的对象,
2024-08-14 14:44:24
662
原创 C++:异常
抛出异常对象后,会生成一个异常对象的拷贝,因为抛出的异常对象可能是一个临时对象,语言基本都是使用返回错误码的方式处理错误,部分情况下使用终止程序处理非常严重的。不能完全处理一个异常,在进行一些校正处理以后,希望再交给更外层的调用。实际中抛出和捕获的匹配原则有个例外,并不都是类型完全匹配,可以捕获任意类型的异常,问题是不知道异常错误是什么。在您想要处理问题的地方,通过异常处理程序捕获异常。如果有一个块抛出一个异常,捕获异常的方法会使用。常,否则当有异常没捕获,程序就会直接终止。块中的代码被称为保护代码。
2024-07-23 14:48:05
788
原创 C++:C++11
前面涉及C++11的知识点我们补充讲解过,现在这篇博客我们正式讲解C++11。我尽量活成我想成为的模样,而不是某些人口中的‘他’。我们每个人都在跟自己的业力对抗,都想努力变好,可是这个世界本身就是矛盾的。愿吾之愿力能护持汝生生世世,不被世俗沉沦,看破诸法实相。
2024-06-10 23:13:59
976
原创 Linux:多线程
如果计算密集型线程的数量比可用的处理器多,那么可能会有较大的性能损失,这里的性能损失指的是增加了额外的同步和调度开销,而可用的资源不变。编写多线程需要更全面更深入的考虑,在一个多线程程序里,因时间分配上的细微偏差或者因共享了不该共享的变量而造成不良影响的可能性是很大的,换句话说线程之间是缺乏保护的。线程是进程的执行分支,线程出异常,就类似进程出异常,进而触发信号机制,终止进程,进程终止,该进程内的所有线程也就随即退出。与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以。
2024-06-02 00:54:34
868
原创 C++:哈希
中插入,如果key不在哈希桶中,插入成功,返回V(),插入失败,说明key已经在哈希桶中,注意:unordered_map中key是不能重复的,因此count函数的返回值最大为1。注意:该函数中实际调用哈希桶的插入操作,用参数key与V()构造一个默认值往底层哈希桶。将key对应的value返回。
2024-05-20 16:00:26
977
原创 Linux:进程信号
在bash上执行命令kill -l便可看到系统定义的所有信号我们只研究前31个信号,后面31个是实时信号这里不做研究每个信号都有一个编号和一个宏定义名称,这些宏定义都可以在signal.h中找到,在man手册中还可以找到各种信号的详细信息这里具体介绍了信号在什么时候产生,处理的动作是什么信号概念的基本储备信号:Linux系统提供的一种,向指定进程发送特定事件的方式,做识别和处理。信号产生是异步的。信号处理常见方式1、忽略该信号2、执行信号的默认处理动作(终止自己、暂停、忽略.....)
2024-05-09 01:32:29
1140
1
原创 C++:二叉树进阶
从根开始比较,查找,比根大则往右边走查找,比根小则往左边走查找。、最多查找高度次,走到到空,还没找到,这个值不存在。合并起来,因此真正的删除过程。,或者是具有以下性质的二叉树。看起来有待删除节点有。
2024-04-24 18:10:00
392
原创 C++:多态
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。必须通过基类的指针或者引用调用虚函数。多态的概念:通俗来说,就是多种形态,修饰的类成员函数称为虚函数。
2024-04-18 12:52:16
286
原创 Linux进程间通信
写端函数write系统接口函数write()函数的fd参数:是文件描述符,可以是套接字、文件等。write()函数的buf参数:是一个指向要读取数据的缓冲区的指针。write()函数的count参数:是要读取的字节数。write()函数的返回值:如果成功,返回读取字符的长度(可能为0,表示读到文件的结尾)如果时报,则返回-1,并设置errno表示读取失败的原因读端函数read系统接口函数read()函数的fd参数:是文件描述符,可以是套接字、文件等。
2024-04-17 21:49:44
463
1
原创 C++:继承
人一到群体中,智商就严重降低,人们为了获得群体的认同,愿意抛弃独立性去换取那份让人倍感安全的归属感。如果基类没有默认的构造函数,则必须在派生类构造函数的初始化列表阶段显示调用。实际上面的表格我们进行一下总结会发现,基类的私有成员在子类都是不可见。成员在派生类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在派生类中能访问,就定义为protected。派生类的拷贝构造函数必须调用基类的拷贝构造完成基类的拷贝初始化。需要注意的是如果是成员函数的隐藏,只需要函数名相同就构成隐藏。
2024-04-14 01:57:38
840
原创 C++:模板进阶
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。
2024-04-12 23:56:07
478
原创 C++:stack类和queue类
1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作push_back。
2024-04-07 11:27:50
839
原创 C++:list类
的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。迭代到该位置,在这段位置上迭代需要线性的时间开销;通常在任意位置进行插入、移除元素的执行效率更好。最大的缺陷是不支持任意位置的随机访问,比如:要访问。还需要一些额外的空间,以保存每个节点的相关联信息。来说这可能是一个重要的因素)个元素,必须从已知的位置。与其他的序列式容器相比。与其他序列式容器相比,
2024-03-30 01:11:13
720
原创 Linux基础IO
1.如果不存在,就在当前路径下新建指定的文件2.默认打开文件的时候,就会先把目标文件清空所以可以用来新建文件,清空文件,本质就是文件操作不会清空文件,本质就是文件操作类似PCB的结构体。
2024-03-28 01:07:06
686
原创 C++:vector类
1. vector是表示可变大小数组的序列容器。2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3.本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。
2024-03-13 17:30:24
2178
2
原创 C++:string类
1.字符串是表示字符序列的类2.标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。3. string类是使用char(即作为它的字符类型,使用它的默认和分配器类型关于模板的更多信 息,请参阅basic_string)。4. string类是模板类的一个实例,它使用char来实例化模板类,并用char_traits和allocator作为的默认参数根于更多的模板信息请参考。5.
2024-02-22 23:56:11
953
原创 Linux进程概念
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系截至目前,我们所认识的计算机,都是有一个个的硬件组件组成输入单元:包括键盘, 鼠标,扫描仪, 写板等中央处理器(CPU):含有运算器和控制器等输出单元:显示器,打印机等
2024-02-06 17:08:50
395
原创 C/C++内存管理
内置类型 如何避免内存泄漏1. 工程前期良好的设计规范,养成良好的编码规范,申请的内存空间记着匹配的去释放。ps:这个理想状态。但是如果碰上异常时,就算注意释放了,还是可能会出问题。需要下一条智能指针来管理才有保证。2. 采用RAII思想或者智能指针来管理资源。3. 有些公司内部规范使用内部实现的私有内存管理库。这套库自带内存泄漏检测的功能选项。4. 出问题了使用内存泄漏工具检测。ps:不过很多工具都不够靠谱,或者收费昂贵。总结一下:内存泄漏非常常见,解决方案分为两种:1、事前预防型。如智
2024-02-03 00:24:03
2076
原创 C++:类和对象(上)
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2. 类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::类的访问限定符及封装访问限定符。
2024-01-27 21:00:36
1072
原创 C++:前言与入门
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。
2024-01-17 17:29:21
508
原创 数据结构与算法:排序
所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次。:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。之前,则称这种排序算法是稳定的;:数据元素全部放在内存中的排序。序保持不变,即在原序列中,之前,而在排序后的序列中,
2023-12-05 12:50:50
839
原创 数据结构与算法:二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点
2023-11-25 17:49:32
206
原创 数据结构与算法:栈和队列
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)队列也可以顺序表和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。D: 1,2,3依次进栈,接着3出栈,然后4进栈再出栈,最后2,1依次出栈。B: 1,2先进栈,2再出栈,3进栈再出栈,4进栈,最后4,1全部出栈。解:A: 1先进栈再出栈,接着2,3,4依次进栈,再依次出栈,4,3,2。一个栈的初始状态为空。
2023-11-14 22:49:54
86
原创 Linux基本指令
详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称。# cd ./../xxx 代表进入这个路径的上一个路径中的某一个文件夹xxx (# cd ../xxx)# cd ./xxx/xxx 代表进入当前路径中的某个文件夹中的某个文件夹(# cd xxx/xxx)xxx是某个文件,可以是文件名或者文件路径,stat查看某个文件的更具体的信息。xxx是文件名时,必须是当前路径下的,是路径时不受限制。man是Linus中的一个手册,可以查询指令,代码等。
2023-11-10 18:00:46
537
1
原创 C语言:贪吃蛇游戏精讲
Win32 APIWin32 APIWindows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application), 所以便称之为 Application Programming Interface,简称 API 函数。
2023-10-23 18:51:53
537
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人