C++
文章平均质量分 94
蓝乐
这个作者很懒,什么都没留下…
展开
-
【Linux】自主WEB服务器实现
启动服务器后,访问页面:GET方法提交数据及构建响应:POST方法提交数据点击提交数据后构建响应:差错处理:服务器处理数据异常时:http协议被广泛使用,从移动端,pc端浏览器,http协议无疑是打开互联网应用窗口的重要协议,http在网络应用层中的地位不可撼动,是能准确区分前后台的重要协议。本次对http协议的理论学习,认识理解并运用CGI模式处理请求,在完成项目的过程中也遇到过许许多多,大大小小的bug,通过不断的调试最终获得较为不错的结果。原创 2024-02-21 02:21:04 · 942 阅读 · 0 评论 -
【Linux】线程池实现
线程池是一种线程使用模式。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。在线程取任务的接口设计时,我因为这里需要访问任务队列这个临界区给这个过程加上了锁,但是实际上在调用这个接口的时候其实线程就已经申请加了锁,而且两次申请的为同一把锁,就导致出现了线程在已经持有一把锁的情况下又去申请这把锁,从而产生了死锁。我们在初始化线程池的这部分代码,需要创建若干线程来完成其所需要执行的任务,这些线程的例程函数形式为。结果如上,左侧为线程池中的线程每隔一秒取出任务并执行,右侧为线程池的情况。原创 2024-01-14 15:28:42 · 848 阅读 · 0 评论 -
【C++】从零实现一个高并发内存池
从零实现一个高并发内存池🎄项目介绍◎项目的内容介绍◎要求的知识储备◎内存池的介绍🎄项目介绍◎项目的内容介绍◎要求的知识储备◎内存池的介绍原创 2022-04-27 19:26:41 · 3563 阅读 · 21 评论 -
【C++】红黑树详解并封装实现map和set
红黑树详解原创 2022-03-18 13:45:16 · 2682 阅读 · 22 评论 -
【C++】AVL树的实现--详细解析旋转细节
我们之前所学习的二叉搜索树由于可能出现单边树的极端情况,导致效率为O(N)。因此,本文将介绍AVL树即平衡搜索二叉树,将可以有效的避免单边树的情况。AVL树的实现AVL树的概念AVL树的定义AVL树结点定义AVL树的概念AVL树是以发现其的两位俄罗斯数学家G.M.Adelson-Velskii和E.M.Landis的首字母命名的。其实现方法为:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。.原创 2022-03-10 23:18:53 · 1581 阅读 · 17 评论 -
【C++】map和set
本文将衔接二叉搜索树,介绍C++中的两个容器set和map。在进入本文之前,建议先回顾之前关于二叉搜索树的介绍:二叉搜索树详解set 和 mapset介绍概念set的使用set的构造set的迭代器set的容量set的修改set的使用举例map介绍概念set的使用set的迭代器set的容量与元素访问--重点介绍[]的重载下标访问符[]的详细介绍set介绍概念·set就是Key模型的二叉搜索树,对于set而言,其key值是每个结点的唯一标识,也就是说set中的元素不允许重复。·虽然set只存放ke原创 2022-03-08 13:08:46 · 1216 阅读 · 14 评论 -
【C++】二叉搜索树解析
二叉搜索树概念概念原创 2022-03-02 16:28:14 · 989 阅读 · 12 评论 -
【C++】多态详解
多态概念定义和实现多态的构成条件虚函数及其重写虚函数重写条件的两个例外C++11关键字override与final重载、重定义(隐藏)、重写(覆盖)的对比抽象类概念接口继承与实现继承原理虚函数表底层原理静态绑定和动态绑定小结单继承和多继承关系中的虚函数表单继承中的虚函数表多继承中的虚函数表概念多态,即多种形态,也就是说,不同的对象在完成某个行为时会产生不同的状态。举个例子,在以前买票时,普通人正常买票,学生半价买票,军人优先买票。定义和实现多态的构成条件多态是在不同继承关系的类对象,去调用同一原创 2022-02-27 00:47:00 · 942 阅读 · 15 评论 -
【C++】继承详解
继承继承的概念及定义概念定义基类和派生类基类和派生类对象的赋值类型转换继承中的作用域本文将介绍C++面向对象中三大特性之一的继承,并详细介绍多继承引发的菱形继承及其解决方法。继承的概念及定义概念就像现实世界中子辈继承父辈遗产一样,面向对象的语言一样有继承,这是面向对象程序设计使代码可以复用的最重要的手段。举个例子,老师和学生都是人,都有人的属性,有姓名,年龄,性别等等公共属性,而如果设计这些对象时在类中都定义相关变量,就会造成数据冗余。所以我们可以将这些共同属性统一为一个类Person,再让St原创 2022-02-24 22:52:51 · 1460 阅读 · 10 评论 -
【C++】栈和队列(stack&queue)
栈和队列一.stack的介绍和使用(1)概念·stack是一种后进先出的容器结构,准确来说stack并不是容器,而是一种容器适配器(对特定类封装作为其底层的容器)。...原创 2021-12-01 21:37:33 · 3040 阅读 · 5 评论 -
【C++】栈的应用:逆波兰式的实现
逆波兰表达式一.定义二.逆波兰式的意义三.逆波兰式的实现1.方法(1)中缀表达式转化为后缀表达式(2)由后缀表达式计算结果2.代码实现一.定义逆波兰式,又称后缀表达式,指的是操作符在其所控制的操作数后面的表达式。举个例子,1 + 2 * 3 - 4这个表达式是我们熟悉的中缀表达式,那么其所对应的后缀表达式为:1 2 3 * + 4 -。再来个复杂的例子:1 * (2 + 3) / 5 - 4 / 2其对应的后缀表达式为:1 2 3 + * 5 / 4 2 / -(其中括号由于只是提升表达式优先级的作原创 2021-11-24 23:14:36 · 3292 阅读 · 5 评论 -
【C++】list
list一.概念二.list常见接口1.构造与析构2.迭代器iterator一.概念list:可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。底层是双向链表结构。list可以在任意位置进行插入、移除元素,执行效率比array,vector,deque的序列式容器更高。list不支持任意位置的随机访问,这是因为list的底层空间不连续。C++11中引入了forward_list,即单链表,但实际情况下这种结构并不常用。二.list常见接口1.构造与析构原创 2021-11-14 17:41:47 · 929 阅读 · 4 评论 -
【C++】vector
vector一.概念二.vector的常见接口1.构造与析构2.vector迭代器3.容量与大小4.vector增删查改三.迭代器失效一.概念vector:大小可变数组的序列容器。和数组一样,连续存储空间存储元素。使用动态分配数组存储元素;增容时,并不会每次都重新分配大小,而是分配一些额外的空间以适应可能的增长。vector占用了更多的存储空间,为了获得管理存储空间的能力,并且以一种有效的方式动态增长。与其它动态序列容器相比(deques, lists and forward_lists),原创 2021-11-11 14:46:35 · 1757 阅读 · 8 评论 -
【C++】string类
string类一.概念一.概念原创 2021-11-03 23:01:44 · 144 阅读 · 1 评论 -
【C++】初识模板
模板1.泛型编程2.函数模板(1)概念(2)函数模板的格式(3)函数模板的原理(4)函数模板的实例化隐式实例化显式实例化(5)模板参数的匹配原则3.类模板(1)类模板的定义格式(2)类模板的实例化1.泛型编程我们已经知道C++可以支持函数重载,也就是说拿Swap函数举例的话,我们可以实现多种类型的交换函数:void Swap(int& x, int& y){ int tmp = x; x = y; y = tmp;}void Swap(char& x, char&原创 2021-10-27 10:38:58 · 156 阅读 · 4 评论 -
C&C++内存管理
C/C++内存管理一.C/C++内存分配二.C语言动态内存管理方式三.C++内存管理方式1.new/delete处理内置类型2.new/delete处理自定义类型四.operator new与operator delete函数1.概念2.operator new 和operator delete的类专属重载五.new和delete的实现原理1.内置类型2.自定义类型六.定位new表达式(placement-new)总结1.malloc/free与new/delete的区别2.内存泄露一.C/C++内存分配原创 2021-10-23 22:49:01 · 184 阅读 · 6 评论 -
【C++】类和对象补充
类和对象(下)一. 再看构造函数1.函数体内赋初值2.初始化列表几点注意3.explicit关键字二.static成员1.概念2.特性三.友元1.友元函数2.友元类四.内部类一. 再看构造函数我们之前已经了解了构造函数的基本内容,那么这里我们将深入认识构造函数。1.函数体内赋初值class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; //可以进行原创 2021-10-20 21:05:40 · 260 阅读 · 6 评论 -
【C++】进一步认识类与对象
上一篇文章我们已经了解了类的默认成员函数中的三个,包括构造函数,析构函数以及拷贝构造函数,那么本篇文章将介绍剩余的三个默认成员函数,即赋值操作符重载函数,取地址操作符重载函数及const取地址操作符重载函数。类与对象(中)赋值操作符重载函数1.运算符重载2.赋值运算符重载3.默认的赋值操作符重载函数4.赋值重载函数与拷贝构造函数的对比日期类的实现赋值操作符重载函数1.运算符重载C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返原创 2021-10-16 08:51:07 · 195 阅读 · 6 评论 -
【C++】再识类和对象
类和对象(中)类的6个默认成员函数构造函数1.概念类的6个默认成员函数一个类中如果什么成员都没有,那么这个类称为空类。空类中是什么都没有吗?其实不然,任何一个类,再我们不写的情况下,都会自动生成下面6个默认成员函数:本篇文章将对这几个默认成员函数进行简单介绍。构造函数1.概念我们先来看一下下面这个日期类:class Date{public: void SetDate(int year = 0, int month = 1, int day = 1) { _year = year;原创 2021-10-12 15:30:37 · 264 阅读 · 4 评论 -
【C++】初识类和对象
类和对象(上)一.初步认识面向过程和面向对象二.类的引入三.类的定义四.类的访问限定符及封装1.访问限定符2.封装五.类的作用域六.类的实例化七.类对象模型1.计算类对象的大小2.类对象的存储方式八.this指针1.this指针的引出2.this指针的特性一.初步认识面向过程和面向对象面向过程,关注的是怎么去做,比如在外卖系统中,强调点餐,做餐,送餐等一系列动作的方法,反映到语言中是函数方法的实现;而面向对象,更关注的是谁去做,比如在外卖系统中,强调的是商家,买家和送货员之间的交互,反映到语言中则是对象原创 2021-10-09 19:54:11 · 596 阅读 · 5 评论 -
【C++】C++入门
书接上回,在介绍了函数重载后,我们将继续学习包括引用和函数内联等C++入门知识。C++入门一.函数重载的补充extern "C"二.引用1.引用的概念2.引用的特性一.函数重载的补充extern “C”extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。//引入extern "C" 是告诉编译器其修饰下的函数的命名修饰规则按照C语言下的命名规则进行//即此时的函数Add在转化到符号表原创 2021-10-05 18:57:11 · 348 阅读 · 6 评论 -
【C++】初识C++
初识C++一.C++关键字二.命名空间1.命名空间定义2.命名空间的使用三.C++的输入输出四.缺省参数1.缺省参数的概念2.缺省参数的分类全缺省参数半缺省参数五.函数重载学习完C语言后,便开始认识C++了。C++是在C语言的基础上发展出来的,因此C语言中的所有内容均可在C++上运行。同时C++也进行了许多优化,实现了很多C语言无法实现的功能,下面让我们来慢慢认识C++这一门编程语言。一.C++关键字首先是C++的关键字,C++总计63个关键字,其中包含C语言的32个关键字。对于C++的关键字,我们并原创 2021-09-26 10:31:08 · 338 阅读 · 8 评论