自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

敲代码嘞~的博客

每天敲一敲,延年又益寿

  • 博客(81)
  • 收藏
  • 关注

原创 Linux 多线程

将物理内存的页框(struct page)和文件(struct file)关联起来,这个页框就是文件缓冲区。连续的代码地址构成的代码块。IMPORTANT]主线程应该最后退出。理由是要和子进程一样,退出信息要被父进程接收。保证主线程最后退出:用pthread_join函数来进行保证,如果主线程先完成部分代码,会等待新线程。IMPORTANT]信号量:是一个计数器,是资源的预订机制。预定:在外部可以不判断资源是否满足,就可以直到内部资源的情况!

2024-08-24 00:44:02 1052

原创 C++进阶(14)类型转换、IO流

适用于类型相似的内置类型(整型、浮点数、字符型)之间进行类型转化。比如:整型和字符型之间,整型和浮点数之间。输入输出是有缓冲区的概念的,根据Linux中学的一切皆文件,大概的也能明白(因为文件里面有缓冲区)。C++不仅仅兼容C的类型转换,还有一些自定义类型之间的转换。当两个类型不是严格的相同的时候,就会有类型转换的问题。进行文件操作的时候只需要包含fstream即可。适用于整型和指针之间,指针和指针之间。自定义类型 -> 自定义类型。内置类型 -> 自定义类型。自定义类型 -> 内置类型。

2024-08-20 22:21:04 557

原创 C++进阶(13)特殊类设计

如果一个类不能被继承的化,可以用final关键字进行修饰这个类;也可以将该类的构造函数进行私有化,在派生类构造中,钓不到基类的构造,间接的禁止该类被继承。如果想要用户只能在堆上创建类的话,那就不能让用户直接访问到构造函数和赋值拷贝,因为这种默认的方式都是在栈上创建类对象的。类的拷贝只会在两个场景中出现:一个是构造的时候—拷贝构造,另一个则是赋值的时候。因为只能在栈上创建,所以只需要将new和delete。不管将来用不用,程序启动时就创建一个唯一的实例对象。延迟加载,当需要用到时,才创建对象。

2024-08-20 01:11:13 395

原创 Linux 信号

进程不退出,进程要切换,所以要把cpu寄存器里面的上下文数据要被保存,过了一段时间后,该进程的上下文要恢复到cpu中,然后又报错,陷入死循环。// 下述的例子中,描述了问题*a = 10;std::cout

2024-08-17 00:01:26 843

原创 Linux SystemV(共享内存(*)、消息队列、信号量)

IPC信号量和共享内存,消息队列一样,也必须先让不同的进程看到同一个“计数器”!--- 保护临界资源安全的前提是信号量是安全的。--- 资源被访问,就是通过代码访问(朴素)代码 = 访问共享资源的代码(临界资源) + 不访问共享资源的代码(非临界资源)。--- 如果某场电影没有票了,就意味着,信号量为0,不能被申请。共享内存是所有进程IPC速度最快的,因为共享内存大大减少了数据的拷贝次数!多元信号量:网吧中的电脑,对于电脑,有很多台,其信号量大于2。一个进程,向另一个进程发送有类型的数据块的方式。

2024-08-14 01:02:15 865

原创 Linux 进程间通信之管道

管道文件:管道文件是一种特殊的文件,它存在于内存中,而不是磁盘上。它允许一个进程的输出直接作为另一个进程的输入,从而实现进程间的数据交换和协同工作。

2024-08-12 21:43:28 1033

原创 Linux 文件系统、动静态库

本质就是把.o文件打包。

2024-08-08 23:55:12 1300

原创 Linux 文件、重定向、缓冲区

欢迎大家指教!!!

2024-08-08 00:57:08 652

原创 Linux 进程优先级、程序地址空间、进程控制

进程获取某种资源(cpu)的先后顺序。task_struct 进程控制块 -> int prio;Linux中优先级数字越小,优先级越高。优先级是能执行,表示执行的顺序;而权限是能不能执行的问题。

2024-08-04 22:00:03 1039

原创 C++进阶(12)智能指针

智能指针在构造的时候开辟空间,当智能指针生命周期结束则会自动调用析构函数释放空间。解决问题:对于new开辟的时候出现异常,导致之前开辟的空间没有手动释放,内存泄露。头文件:智能指针有三种:auto_ptrunique_ptrshared_ptr。

2024-07-31 19:26:35 1056

原创 C++进阶(11)异常

异常:是指程序在运行的过程中发生的一些异常事件,如,除零溢出、数组下标越界、所要读取的文件不存在、空指针、内存不足、访问非法内存等。在实际开发中,异常是一个类。

2024-07-31 01:24:49 715

原创 C++进阶(10)线程库

线程库第二种 --- join:第三种 --- detach:三、互斥量(锁)引入前:引入后:四、lock_guard&&unique_lock1、lock_guard2、unique_lock五、原子操作谢谢大家!!!

2024-07-30 18:17:16 737

原创 C++进阶(9)C++11

如果你没有实现移动赋值重载,且没有实现析构函数、拷贝构造,拷贝复制重载中的任意一个,那么编译器会默认生成一个默认的移动赋值重载。如果你没有实现移动构造函数,且没有实现析构函数、拷贝构造,拷贝复制重载中的任意一个,那么编译器会默认生成一个默认的移动构造。只有右值引用本身处理成左值,才能实现移动构造和移动复制,转移资源。模板的可变参数应该是在编译的时候进行解析的,而不是在运行时进行解析。容器中emplace系列的参数都是传的参数包。右值包括:匿名对象,字面常量,临时对象。深拷贝的类才有转移资源的移动系列函数。

2024-07-27 22:34:09 942

原创 Linux 冯诺依曼体系、操作系统、进程概念、进程状态、进程切换

我们自己写的代码形成可执行程序 == 系统命令 == 可执行文件、在Linux运行的大部分执行操作,本质上都是运行进程!:学生可以通过一张表来进行记录,这张表上写了学生的各种信息 ---链表(对应存储的数据结构)对软硬件资源进行管理(手段),为用户提供一个良好(稳定、安全、高效)的运行环境(目的)广义的概念:操作系统的内核+操作系统的外壳周边程序(给用户提供使用系统的方式)。2)外设(输入输出)的数据,不直接给cpu,而是先放入内存中。,包括进程的所有属性和一个内存指针(指向对应的代码和属性)。

2024-07-26 22:58:24 697

原创 C/C++进阶 (8)哈希表(STL)

个人主页:专题分栏:本文着重于模拟实现哈希表,并非是哈希表的使用。实现的哈希表的底层用的是线性探测法,并非是哈希桶。

2024-07-24 10:18:54 1369 1

原创 C/C++ 进阶(7)模拟实现map/set

map和set都是关联性容器,底层都是用红黑树写的。存的Key值都是唯一的,不重复。map存的是键值对(Key—Value)。set存的是键值(Key)。

2024-07-12 11:41:46 398

原创 Linux 环境基础开发工具使用

可以理解成windows上的安装程序。(在Linux上安装软件,通常上是下载到程序的源代码,然后进行编译得到可执行程序。为了方便,会将一些软件提前进行编译好,然后做成一个软件包放在服务器上,通过软件包管理器直接获得这个软件包,直接安装)yum是一个软件下载管理的客户端。(类似于小米应用商城、华为应用商城...)

2024-07-07 23:10:08 814

原创 C/C++ 进阶(6)红黑树

红黑树虽然不要求是平衡的,但是该树的最长路径不超过最短路径的二倍。4、对于每个结点,从该结点到其所有后代叶结点的简单路径上,均 包含相同数目的黑色结点。插入一个新节点之后,会遇到几种情况,需要我们自己对红黑树进行调整,来保证其性质的正确。如果为黑色的话,性质4可能会不满足,相较于性质3来说,调整起来会比较麻烦。5、每个叶子节点(这里的叶子节点指的是null节点)的颜色都是黑色的。3、如果一个节点的颜色是红色,则该节点的左右孩子节点都是黑色。1、每个节点的颜色不是红色就是黑色。2、根节点的颜色是黑色。

2024-06-11 23:01:43 1028

原创 C/C++ 进阶(5)二叉平衡搜索树(AVL树)

以当前节点为根节点的子树的高度发生了变化,则以当前节点为其中的一个节点的子树的高度也同样发生了变化,所以需要进行调整。右单旋的变换:sublr 变成 parent 的左子树,将parent 变成 subl 的右子树。二叉平衡搜索树,在对节点的结构进行定义的时候多添加了一个平衡因子的变量(bf),注意新的节点插入在 b 子树的左子树和右子树的时候,平衡因子的变化。注意新的节点插入在 c 子树的左子树和右子树的时候,平衡因子的变化。:在进行旋转的时候,对于每个节点的指针变化,要特别的细心。

2024-06-04 22:08:19 598

原创 C/C++ 进阶(4)二叉搜索树

首先我们先找到要删除节点的右子树中的最小值,然后和要删除的节点进行值替换,最后我们要删除掉替换后的节点。判断要删除的节点是其父节点的左孩子还是右孩子。如果要删除 14 这个节点,我们需要让 14 的父节点的对应指针指向 14 的左子树。如果要删除 7 这个叶子节点,我们需要让 7 的父节点的右孩子指向nullptr。总结:先替换,然后删除替换后的节点(判断替换后的节点的类型,然后用对应的删除方法)如果要删除 10 这个节点,我们需要让 10 的父节点指向 10 的右子树。总结:让要删除节点的父节点的。

2024-05-30 11:26:09 985

原创 C++ 进阶(3)虚函数表解析

在这个虚函数表中,主要有一个类的虚函数的地址。当我们用基类指针操作派生类的时候,其指明了实际应该调用的函数。

2024-05-22 16:53:46 467

原创 C/C++ 进阶(2)多态

1、必须通过基类的指针或者引用调用虚函数。2、被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。public:// 用virtual修饰的函数cout

2024-05-21 22:14:47 723 2

原创 C/C++ 进阶(1)继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。对于不同的类,可能会有相同的属性,如果在每一个类中都存一份相同的属性,可能会属性冗余。这样我们就可以把相同的属性拿出来,单独设置成一个类,然后成为父类(基类)这个表格挺重要的!!!

2024-05-18 22:28:36 734

原创 C/C++ 入门(12)模板进阶

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生。2. 增强了代码的灵活性。

2024-05-14 00:30:32 840

原创 C/C++ 入门(11)stack、queue(STL)

适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。stack、queue、priority_queue底层都是容器适配器。deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。deque通过多个数组实现的。

2024-05-13 14:59:42 847

原创 Linux 权限

就是通过一定的条件拦住一部分人,给另一部分人权力,来访问某种资源。sudo:super user do(干超级用户干的事)说白了就是一个提权功能,让一个非root用户拥有root用户的操作权限。

2024-05-11 22:01:34 746 1

原创 C/C++ 入门(10)list类(STL)

欢迎来指教!

2024-05-08 20:07:15 973

原创 C/C++ 入门(9)编译链接

缺省参数只写在函数声明的时候。

2024-04-29 17:48:35 298

原创 C/C++ 入门(8)vector类(STL)

问题是关键呦

2024-04-25 15:40:53 418 2

原创 C/C++ 入门(7)string类(STL)

1、string是表示字符串的字符串类2、该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。

2024-04-22 09:49:58 1188

原创 C/C++ C/C++ 入门(6)模板初阶

在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码,对于字符类型也是如此。是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。1、一个非模板函数可以和一个同名的模板函数同时存在,而且该函数模板还可以被实例化为这个非模板函数。类模板名字不是真正的类,而实例化的结果才是真正的类。

2024-04-15 17:24:16 1119

原创 C/C++ 入门(5)内存管理

new的原理:1、调用operator new函数申请空间。2、在申请的空间上执行构造函数,完成对象的构造。delete的原理:1、在空间上执行析构函数,完成对象中资源的清理工作。2、调用operator delete函数释放空间。new T[N]的原理:1、 调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申请。2、 在申请的空间上执行N次构造函数。delete[]的原理。

2024-04-12 18:54:38 648

原创 C/C++ 入门(4)类和对象(下)

在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。2、多个参数的类,如果构造的时候,仅需要一个参数进行构造的话,如果没有explicit修饰的话,具有类型转换。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加。如果一个类定义在另一个类的内部,这个内部类就叫做内部类。友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。

2024-04-11 11:47:57 1107

原创 类和对象总结

成员函数存储在代码段中,而不是对象中。内联函数在编译阶段就会在调用的地方进行展开(没有函数的地址),如果把声明定义分离,则无法链接或者是找不到链接(有符号表,但是对应的符号没有地址,无法解析)。

2024-04-08 21:04:47 258

原创 Linux 常用指令及其理论知识

写代码:1.nano 源文件 2.CTRL + X 3. y 4. enter 5. gcc 源文件 6../a.out。指令出现疯狂打印的情况:CTRL + C(终止异常的命令)指令的本质就是程序——指令、程序、可执行程序都是一回事。echo:将后面的字符串输出到显示器上​​​​​​​。安装和卸载——是把可执行程序拷贝/删除到系统路径下。rmdir [-p][dirName] 删除目录。Linux中同一个目录下不允许有同名文件。文件 = 文件属性 + 文件内容。rm:删除文件或目录。

2024-04-06 17:30:41 1439 1

原创 莫队算法,

莫队算法就是一个离线的,通常针对于区间询问的一种算法。

2024-04-04 15:45:08 205

原创 C/C++ C++入门(2)类和对象(上)

/ class 和 struct 是定义类的关键字、A1,A2是类的名字、{}里面的是类的主体// 注意:最后的分号不要忘记!!!class A1{// 属性(成员变量) —— 默认的属性的权限是privite// 方法(成员函数)struct A2{// 属性 —— 默认的属性的权限是public// 方法如果成员函数在类中定义,编译器可能会将其当成内联函数处理。public:public:// 学生的属性是 名字和年龄int _age;

2024-03-23 16:47:59 861

原创 C/C++ C++ 入门(3)类和对象(中)

欢迎各位来指教!

2024-03-05 17:19:58 1194 1

原创 C/C++ 交换排序

冒泡排序,快排模板

2024-02-20 11:54:31 273 1

原创 C/C++ h0138. 疯牛

通过题目看,这就是一个二分+贪心的题目。通过二分来找相邻两头牛间的距离,然后每二分一次,就判断一次摊位是否能放得下c头牛。

2024-02-02 08:28:41 517

KTV点歌程序-大一C语言课设

大一c语言课设源代码,用链表写的,可以借鉴。 通过这次C语言课设,学生们可以巩固以前所学的知识,同时学到很多在书本上所没有学到过的知识。课设使学生懂得了理论与实际相结合是很重要的,只有把所学的理论知识与实际相结合起来,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。在设计的过程中,学生们会遇到各种各样的问题,同时也会发现自己的不足之处,对以前所学的知识理解得不够深刻,掌握得不够牢固。通过课设,学生们的自信心得到提高,他们也会写程序的乐趣和思维。还有和同学分工合作的经验,深刻体会到代码风格和可读性对于读懂别人的代码的重要性。 而且写课设一般都需要答辩,答辩时一定要控制好自己的语速和仪态,进行毕业论文答辩的同学一般都是首次。无数事实证明,他们论文答辩时,说话速度往往越来越快,以致毕业答辩委员会成员听不清楚,影响了毕业答辩成绩。故毕业答辩学生一定要注意在论文答辩过程中的语流速度,要有急有缓,有轻有重,不能像连珠炮似地轰向听众。在答辩时,学生要注意仪态与风度。 最后,祝愿大家都有一个好的编程能力和编程的思维。与诸共勉!

2023-09-12

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

TA关注的人

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