C++
文章平均质量分 91
C++ 相关
Ornamrr
09.31
展开
-
【IM】长连接网关设计探索(一)
DNS劫持是一种网络攻击,通过篡改DNS(Domain Name System)解析结果,将合法的域名解析到错误的IP地址上,从而将用户的请求重定向到恶意网站或者错误的服务器上。服务器认证: HTTPDNS服务器可以使用SSL证书进行身份认证,客户端在与服务器建立连接时验证证书的有效性,确保连接到的是合法的HTTPDNS服务器,防止中间人攻击。显然,在如今的互联网场景下,C10K已经不是所追求的目标,C100K,C1000K是更加现实的需求,但是,C10K问题的提出确实大大推进了服务器设计的发展进程。原创 2024-02-02 20:46:03 · 1141 阅读 · 0 评论 -
【C++】I/O多路转接详解(一)
在实际的应用场景之中,等待消耗的时间通常是远远高于拷贝的时间的,想要提高IO的效率,很显然,我们需要减少IO过程中等待的比例,换句话说,一个高效的IO,在整个运作周期内,等的比重是很小的,更多的是在进行拷贝。这样的表述是不准确的,原因在于epoll_event结构体作为一个输入输出参数,由用户手动创建,因此不可能优化到零拷贝,大概率是将用户数据拷贝到mmap映射区域,与内核数据关联。可以发现,fd_set是一个结构体,里面有一个 固定大小的 位图, select使用位图种对应的位来表示要监视的文件描述符。原创 2024-01-30 00:19:41 · 1035 阅读 · 0 评论 -
【C++】一题掌握空指针
一道经典的面试题原创 2024-01-29 00:50:57 · 399 阅读 · 0 评论 -
【C++】C++基础
C++语法拾遗原创 2022-05-31 23:50:49 · 7725 阅读 · 7 评论 -
【C++】智能指针详解
今天我们来讲一下c++11中的智能指针。原创 2022-05-04 19:15:37 · 9991 阅读 · 1 评论 -
【C++】异常
C++异常原创 2022-05-02 17:08:06 · 1653 阅读 · 0 评论 -
【C++】单例模式
单例模式 之 饿汉模式与懒汉模式原创 2022-04-28 09:42:35 · 690 阅读 · 0 评论 -
【C++】C++11中的实用语法(一)
c++11 右值引用与移动语义 ,lambda ,包装器。。。。原创 2022-04-14 16:56:01 · 560 阅读 · 1 评论 -
【C++】手把手教你实现自己的set 和map
map and set , AVLTree, RBTree 的讲解原创 2022-03-25 20:33:24 · 1607 阅读 · 1 评论 -
【C++】手把手教你实现自己的unordered_map 和unordered_set
哈希原创 2022-03-15 13:07:44 · 3181 阅读 · 3 评论 -
【C++】单调队列 详解
今天我们来讲一下单调队列与栈。这两种数据结构虽然没有在c++的stl中有直接的实现,但是在做题过程中,很容易有单调队列(栈)的使用,尤其是在一些比较难的题目中。目录单调队列1.1 单调队列介绍1.2 单调队列的应用1.2.1 滑动窗口最大值1.2.1.1 题目描述1.2.1.2 结题思路方法一(优先队列)方法二 (单调队列)1.3 单调队列的模拟实现1.4 其他例题单调队列1.1 单调队列介绍单调队列 是 队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只有队尾可以进行入队原创 2022-02-11 20:13:04 · 9597 阅读 · 7 评论 -
【C++】二叉搜索树
今天我们来讲一种特殊的二叉树,二叉搜索树。学好二叉搜索树,有助于我们之后对map和set的理解与掌握。目录二叉搜索树概念二叉搜索树操作1. 查找2. 插入3. 删除二叉搜索树实现二叉搜索树应用二叉搜索树性能分析二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树二叉搜索树操作对于二叉搜索树的大部分操作,我们原创 2022-02-04 15:25:50 · 984 阅读 · 0 评论 -
【C++】深入理解 多态
在上一篇文章,我们了解了继承,今天我们来了解一下多态。目录多态的概念多态的定义及实现1. 多态的构成条件2.虚函数3.虚函数的重写4. 虚函数重写的两个例外5.override 和 final6.重载,重写,隐藏的对比抽象类1. 概念2. 接口继承与实现继承多态的原理1. 虚函数表2. 多态的原理3.动态绑定与静态绑定多态的概念多态指 当完成某行为的时候,不同的对象去完成会产生不同的状态。举个例子:景区买票,普通人买票 为全价买票;学生买票 为半价买票;军人买票为优先买票。多态的定义及实现1原创 2022-01-25 21:54:43 · 892 阅读 · 1 评论 -
【C++】深入理解继承
C++的继承细节原创 2022-01-23 16:13:15 · 596 阅读 · 4 评论 -
【C++】手把手教你写出自己的Stack和Queue类
在上一篇文章中,我介绍了如何模拟实现 list容器,今天我们来实现 栈(Stack)和队列(Queue)。我将 栈 与队列放置在一起的原因是 这两种数据结构 是十分相似的,将他们放在一起可以相互比较,对照,让我们的学习更加简单。在开始模拟实现之前,我需要先引入一些新的知识,比如说 优先级队列,容器适配器,deque等,这些对我们的最终效果与还原程度 至关重要,请同学们耐心阅读。目录stack的介绍与使用queue的介绍与使用优先级队列容器适配器deque的简单介绍stack与queue模拟实现sta原创 2022-01-09 16:31:14 · 2150 阅读 · 4 评论 -
【C++】手把手教你写出自己的list类
讲完vector的相关知识,今天我们来看一下list。目录list的介绍list的模拟实现list的构造构造函数的使用构造函数的模拟实现迭代器迭代器的使用迭代器的模拟实现拷贝构造拷贝构造的使用拷贝构造的模拟实现赋值insertearsepop_back 与 pop_frontclear析构函数list的介绍c++中的list 实际上是 带头结点的循环双向链表的结构。list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中原创 2022-01-06 23:13:26 · 2005 阅读 · 0 评论 -
【C++】手把手教你写出自己的vector类
vector的模拟实现原创 2021-12-11 13:43:00 · 3464 阅读 · 0 评论 -
【C++】深入理解vector类(一)
欢迎来到c++基础系列。在之前的博客我们介绍了c++的string 类 ,并且对string 进行了部分模拟实现。链接如下:【C++】深入理解String类(一)【C++】手把手教你写出你自己的String类今天我们来讲解c++ 的vector 类。目录vector 介绍vector 使用vector 介绍vector 是序列容器,表示可以更改大小的数组vector 使用...原创 2021-12-07 11:00:33 · 748 阅读 · 0 评论 -
【C++】手把手教你写出你自己的String类
在之前的 【C++】深入理解String类(一)里,我们讲解了string类的相关知识与其中部分库函数的使用方法。这次我们要根据string的用法,模仿实现写一个string类。注:我们模拟实现这个类,不是为了完美复制源码,而是熟悉string框架,加深对string的理解,我会用我们已经学习过的有限知识,来简单还原string....原创 2021-11-29 00:04:07 · 5194 阅读 · 2 评论 -
单链表的c++和c语言的写法(一)
单链表的c++和c语言的写法(一)使用c++语法写一个单链表。首先定义一个类,取名为LinkNode。#include<iostream>using namespace std;typedef struct SListNode//结构体{ int data; SListNode* next;}SN,SListNode;class LinkNode{public: void SListNodeInit(); //初始化函数 void SListNodePrint原创 2021-03-28 00:53:56 · 486 阅读 · 2 评论 -
c++ 运算符的重载
1.1对运算符重载的方法运算符的重载方法是定义一个重载运算符的函数,运算符的重载实质上是函数的重载1.2重载运算符的规则c++只允许用户对已有的c++运算符进行重载c++的绝大部分运算符允许被重载不允许重载的运算符只有五个:. (成员访问运算符)*(成员指针访问运算符)::(域运算符)sizeof(长度运算符)?:(条件运算符)重载不能改变运算符运算对象(操作数)的个数重载不能改变运算符的优先级别重载不能改变运算符的结合性重载的运算符,其参数至少应有一个类对象(或类对象原创 2021-05-31 23:34:30 · 361 阅读 · 3 评论 -
c++学习笔记——类的继承
c++类的继承1.1继承与派生派生类是基类的具体化,而基类是派生类的抽象一个派生类只从一个基类中派生,称为单继承一个派生类有多个基类,称为多重继承1.2派生类的声明方式固定格式:class 派生类名:[继承方式] 基类名{派生类新增的成员}1.3派生类成员的访问方式构造一个派生类包括以下三个工作:1.从基类中接受成员。派生类不加选择的继承基类的全部成员(不包括构造函数与析构函数)。表面上父类中的私有成员无法访问,是因为父类中的私有成员被编译器隐藏,因此只是访问不到,但确原创 2021-05-10 22:46:36 · 247 阅读 · 0 评论 -
c++ 怎样使用类与对象
类对象作类成员应用背景:有时候定义类成员时,可能需要某成员为一个类,方便进行使用在这里我们以person类为例子,它包含两个类对象,姓名与手机,其中手机包括两个属性:品牌和价格。为了体现明确的逻辑包含关系,我们将手机定义为类对象。#include<iostream>#include<string>using namespace std;//类对象作为类成员//手机类class Phone{public: Phone(string pName,int pp)原创 2021-04-05 11:45:07 · 1239 阅读 · 0 评论 -
【C++】10分钟掌握 C++内存管理
目录内存分布C++内存管理方式new 与delete的使用new/delete 和 malloc/free 的差别new和delete的底层原理常见面试题内存分布在我们讲解c++是如何对内存进行管理的,我们先得了解c++中的内存分布:与C语言类似,C++的内存方式如下:这里我就不对各个区域的具体功能做具体的讲解但这里有一点需要我们注意:理论上,后动态开辟的内存的地址比先开辟的大,但是也不一定。因为有可能下一次申请的空间是别人释放回来的。这里为了巩固一下对于内存分布的理解,举一个例题:--原创 2021-11-15 09:40:14 · 204 阅读 · 0 评论 -
【c++栈的应用】表达式的求值
今天我们来利用栈来实现一下表达式的求值。之前我也写过关于栈的基本功能的内容,链接如下:数据结构之栈与队列(一)原创 2021-07-11 12:06:16 · 2910 阅读 · 0 评论 -
【C++】深入理解String类(一)
今天我们来讲解一下c++中常用的string类,了解其使用,并且对它进行模拟实现。目录标准库中的string类什么是String类(了解即可)string类的常用接口string类对象的常见构造string类对象常用容器操作字符串的遍历1. **使用 size()**2. **使用auto ch**3. **使用迭代器**计算空间相关1. **size() 和 length()**3. **resize() 和 reserve()**增删查改相关1. operator+=2. append3. push_原创 2021-11-18 15:59:02 · 1271 阅读 · 0 评论