自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

贵在坚持,我相信只要我努力,未来肯定是美好的!

分享自己学习中对于知识点的累计和总结

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

原创 八大排序总结---- 数据结构 (图解法) 面试必会! ! !

八大排序总结目录:一.插入排序 (InsertSort)二.希尔排序 (ShellSort)三.选择排序 (SelectSort)四.堆排序 (HeapSort)五.冒泡排序 (BubbleSort)六.快速排序 (QuickSort)1.hoare法2.挖坑法3.前后指针法七.归并排序 (MergeSort)1.递归实现2.非递归实现八.计数排序 (CountSort)目录:一.插入排序 (InsertSort)二.希尔排序 (ShellSort)三.选择排序 (SelectSort.

2021-07-28 12:27:31 1656 15

原创 四种IO模型

五种IO模型目录:一.什么是IO ?二.阻塞IO三.非阻塞IO四.信号驱动IO五.异步IO目录:一.什么是IO ? 对于IO的简单理解,我们首先通过两个数据之间的交互过程来理解什么是IO? 向上面这样数据从对应的发送缓冲区发送到对应的接受缓冲区的过程就叫做IO操作,对应的五种IO也是对于这里的不同操作. 二.阻塞IO 优点: 流程最为简单~缺点: 效率较为低下 三.非阻塞IO 优点: 效率对于阻塞队列有所提高~缺点: 需要进行多次循环来实现.

2021-07-18 14:47:54 259 5

原创 DNS --域名系统

DNS目录:一.原理二.域名划分三.域名的解析流程四.面试题: 在浏览器输入网址后,回车后会发生什么?五.icmp协议六.NAT / NAPT七. VPN目录:一.原理二.域名划分三.域名的解析流程四.面试题: 在浏览器输入网址后,回车后会发生什么?五.icmp协议六.NAT / NAPT七. VPN...

2021-07-13 16:01:38 1071 15

原创 以太网协议 & ARP协议 & MTU

链路层相关理解目录:一.以太网协议 ethernet二.ARP协议三.MTU & MSS 详解1.原理2.影响(1)对TCP的影响(2)对UDP的影响目录:一.以太网协议 ethernet 48位源端/对端MAC地址: 用来识别指定的相邻设备 MAC地址: uint8_t mac[6] --网卡的物理硬件地址–出厂时已经被设定 16位数据类型: 用于数据分用时上层解析协议的选择 32位数据帧尾: 校验和进行差错校验 二.ARP协议

2021-07-12 18:40:32 506 6

原创 IP协议 & IP地址

IP目录:一.IP协议格式二.MTU & MSS1.udp传输2.tcp传输三.IP地址组成四.网段的划分1.子网掩码2.特殊的IP地址五.公网和私网目录:一.IP协议格式4位协议版本: 直接写4 , 用来表示ipv4协议版本 4位头部长度: 以4字节为单位 8位服务类型: 3位优先权弃用, 4位TOS, 1位固定位0 16位数据报长度: IP报文最大大小64k 16位分片标识: 标识分片属于具体的那个报文 3位.

2021-07-11 19:15:05 587 9

原创 传输层--可靠传输 & 面向字节流

可靠传输&面向字节流目录:一.可靠传输1.面向连接2.进行包序管理,实现有效传输3.确认应答机制4.超时重传机制5.协议字段的校验6.避免丢包1)滑动窗口机制(1)停等协议(2)回退n步协议(3)选择重传协议2)拥塞机制7.性能提升1)快速重传机制2)延迟应答机制3)捎带应答机制8.总结二.面向字节流目录:一.可靠传输1.面向连接2.进行包序管理,实现有效传输3.确认应答机制4.超时重传机制5.协议字段的校验6.避免丢包1)滑动窗口机制(1)停等协议(2)回退n步协议(3).

2021-07-11 12:16:46 244 5

原创 TCP的协议格式以及三次握手和四次挥手

TCP详解目录:一.TCP协议格式二.面向连接的三次握手/四次挥手1.三次握手2.四次挥手三.相关面试题理解1.为什么握手是3次,挥手是四次?2.TCP三次握手失败后会如何进行处理?3.TIME_WAIT的应用?4.一个主机上出现了大量的TIME_WAIT是什么原因?如何解决?5.一台主机上出现了大量的CLOSE_WAIT是什么原因?如何解决?目录:一.TCP协议格式 源端端口/对端端口: 用来标识和识别两端的 序号: 每一个发送的包都有着对应的序号,这样才会按顺序进行解析,区.

2021-07-10 16:34:25 223 5

原创 UDP的协议格式及特性

UDP目录一.协议格式二.UDP协议特性1.无连接2.不可靠3.面向数据报三.影响1.不保证会安全到达2.不保证有序到达3.UDP报文有最大长度限制4.UDP实现是整条交付的:接收方的缓冲区必须足够大才可以进行一次取出数据. 目录一.协议格式 源端端口/对端端口: 这里是用来描述和识别通讯两端进程的 总长度: UDP报文的总大小最大是64k,不能超过,用来描述发送字节的长度 校验和: 利用二进制反码求和运算来证明发送数据的准确性,确定发送数据的一致性 .

2021-07-10 13:29:51 809 1

原创 HTTPS

HTTPS协议详解目录一.什么是HTTPS协议?二.实现安全传输的条件1.身份验证(防止伪装)1)介绍CA证书2)如何查找CA证书2.数据加密(防止监听)1)对称加密2)非对称加密3)混合加密三.HTTPS协议的加密流程目录一.什么是HTTPS协议?HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP.

2021-07-06 15:13:33 264 1

原创 从零开始理解HTTP协议,看完绝对能让你理解 !

HTTP协议解析目录:一.认识HTTP1.HTTP理解2.引入二.HTTP的格式三.首行--http1.请求行(1)请求方法(2)URI(3)URL1> 协议名称2>用户名:密码3>域名4>端口5>资源路径6>查询字符串7>标识(4)协议版本2.响应行(1)协议版本(2)响应状态码(3)状态码描述四.头部--http五.空行--http六.正文--http七.HTTP的优点&缺点八.搭建一个http服务器目录:一.认识HTTP1.HTTP理解 .

2021-06-08 17:21:00 591 7

原创 tcp通信

tcp通信详解目录:一.tcp概念二.通信流程&原理三.接口理解1.创建套接字 socket2.绑定地址 bind3.开始监听 listen4.客户端发送连接请求 connect5.服务端获取新建连接 accept6.收发数据 send&recv7.关闭套接字 close四.代码封装tcp结构体目录:一.tcp概念 tcp也是一种通讯协议, 也是实现客户端和服务端通信的一种协议,只不过这个协议对于安全性的要求高. 二.通信流程&原理三.接口理解1.创建套接字.

2021-06-04 20:55:04 686 2

原创 为啥要发生字节序转换 ? ? ?

提问: 如果我们把二进制位0000 0001的小端字节序数据发送过去会不会变成1000 0000的数据? 很显然为了防止出现这种情况,所以我们这里要引入字节序转换这个概念. 原理接口认识 这就是在实现网络数据传输之前必须要的字节序转换的过程,上面是一些常用的接口,大家自行使用. ...

2021-06-04 00:21:47 737 2

原创 udp通信

udp通信详解目录:目录:

2021-06-03 23:25:13 643 4

原创 socket (套接字)

socket编程目录:一.socket概念二.udp协议三.tcp协议四.网络通信流程目录:一.socket概念 套接字(socket):就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象.两个网络各自通信连接中的端点是应用程序与网络协议根进行交互的。 二.udp协议 UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。.

2021-06-02 20:55:25 234 3

原创 如何用vscode远程连接利用腾讯云服务器搭建的linux操作环境?

vscode->linux目录:一.打开腾讯云服务器二.打开vscode三.配置服务四.连接目录:一.打开腾讯云服务器 1.找到对应的公网地址 二.打开vscode 2.下载对应的插件 三.配置服务 1.在左边有个远程资源连接器(小电视的图标)2.设置成可见的SSH3.点击右上边的齿轮设置4.出现右边的界面点第一个就可以了5.然后再根据我标明的信息输入对应的数据和ip地址保存即可 四.连接 点击右键,上面的连接 在对应的位置输入.

2021-05-30 14:20:17 2958 5

原创 什么是位图?

理解位图目录:一.位图引入1.位图概念2.位图的实现原理(1)构建方式(2)存储方式3.代码实现4.应用场景目录:一.位图引入 面试题【腾讯】 : 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 可能我们大多数人了解到的位图都是看到了腾讯的这个面试题理解到的,下面我就读于位图进行详细的讲解.1.位图概念 位图就是一种直接定址的哈希,它的效率很高,只用O(1)就可以查到对应位置是0还是12.位图的实现原理(.

2021-05-28 15:41:55 1100 3

原创 开散列的实现--哈希冲突

哈希冲突-开散列目录:一.开散列概念二.开散列原理三.哈希迭代器实现四.功能接口实现1.构造函数2.iterator begin()3.iterator end()4.insert5.Capacity6.Find7.Erase五.模拟实现Map六.模拟实现Set目录:一.开散列概念二.开散列原理三.哈希迭代器实现四.功能接口实现1.构造函数2.iterator begin()3.iterator end()4.insert5.Capacity6.Find7.Erase五.模拟实现.

2021-05-27 18:51:07 335 8

原创 线性探测-闭散列

线性探测的实现目录:一.线性探测的概念二.线性探测原理三.功能性接口1.构造2.insert3.Capacity4.Swap5.find6.erase目录:一.线性探测的概念 我们在这里讲到的线性探测是解决哈希冲突中闭散列的一种方式 闭散列:也叫开放定址法,当发生哈希冲突时,如果哈希表未被装满,说明在哈希表中必然还有空位置,那么可以把key存放到冲突位置中的“下一个” 空位置中去。~线性探测:从发生冲突的位置开始,依次向后探测,直到寻找到下一个空位置为止。二.线性探测原理

2021-05-27 14:01:45 2107 5

原创 红黑树底层迭代器的实现

红黑树实现迭代器目录:一. 封装迭代器二.红黑树部分改变三.map的实现四.set的实现目录: 这篇博客是对于红黑树内部迭代器实现, 点击红黑树的具体代码 .一. 封装迭代器 对于红黑树迭代器的实现,我们就是要利用二叉树的指向来依次的遍历对应的节点来实现红黑树的迭代器,所存在的_header节点就是方便迭代器的实现 template<class V>struct RBTreeIterator{ //泛型创建对应的结构 typede

2021-05-26 23:42:05 331 1

原创 红黑树来实现map&set

红黑树实现map&set目录:目录:

2021-05-25 21:12:22 129

原创 教你轻松理解红黑树的实现及原理

轻松理解红黑树目录:一.红黑树的原理&性质二.红黑树的结构&节点封装1.结构理解2.节点封装三.红黑树的插入操作1.判断是否存在根节点2.将对应的节点挂到树上3.判断是否存在红色连续节点(1) 单链存在红色连续(2) 存在黑色uncle节点的红色连续(3) 左子树 和 左子树的右子树存在红色连续(4) 存在红色uncle节点的红色连续四.左旋&右旋1.左旋操作2.右旋操作五.获取_header对应的最左最右节点1.获取最左节点2.获取最右节点六.中序遍历打印值七.判断是否是红黑树.

2021-05-25 18:37:11 564 8

原创 AVL树-平衡二叉树

AVL树目录:一.概念&原理二.平衡因子三.定义四.AVL树的旋转1.新节点插入到较高左子树的左边-左左:右单旋2.新节点插入到较高右子树的右边-右右:左单旋3.新节点插入到较高左子树的右边-左右:先左单旋再右单旋4.新节点插入到较高右子树的左边-右左:先右单旋再左单旋五.概念总结六.验证AVL树目录:一.概念&原理在之前我们理解到了二叉搜索树,可是我们发现如果数据有序或者接近有序的时候,二叉搜索树会退化成单支树 AVL树就是平衡二叉树,只不过在二叉搜索树的基础上加了一个平

2021-05-16 17:49:10 199 6

原创 map & multimap 关联性容器-C++

map & multimap目录:一.map模板二.Member functions三.Capacity四.Element access五.Modifiers六.Operations七.iterator八.multimap目录:一.map模板map<char, int> m1;二.Member functionsstruct classcomp{ //改变默认的排序方式的函数 bool operator()(const char& lhs, const ch

2021-05-13 16:12:09 171 1

原创 set & multiset关联式容器 -C++

set & multiset目录:一.关联式容器二.键值对三.set1.set概念2.构造函数3.capacity4.Modifiers5.Operations6.iterator四.multiset五.原理总结目录:一.关联式容器 在我们接触过的STL容器中像:vector list deque 这种的统称为序列式容器,底层为线性序列的数据结构^ 关联式容器也用来存放数据,不过不同的是里面储存的是<key,value>结构的键值对,数据检索时的效率更高..

2021-05-13 14:58:41 166 12

原创 二叉搜索树--C++

搜索二叉树目录:一.概念二.接口声明三.接口实现&原理1.构造内部类2.查找函数3.拷贝函数4.插入函数5.删除函数6.析构函数7.利用中序遍历的方式进行打印四.性能分析目录:一.概念二叉搜索树又称为二叉排序树,或者是一个空树,必须满足以下特点:满足条件: 1.如果其中的左子树不为空,则左子树上所有的节点的值小于根节点的值 ^ 2.如果其中的右子树不为空,则右子树上所有的节点的值大于根节点的值 ^ 3.每个数据都是单一存在,不会重复 二.接口声明//1.

2021-05-11 15:12:35 1543 7

原创 继承和多态的相关面试题总结

继承&多态/面试题目录:一.继承相关面试题1.什么是菱形继承?菱形继承有什么问题?2.什么是菱形虚拟继承?如何解决数据冗余和二义性?3.继承和组合的区别?分别在什么时候应用?二.多态相关面试题1.什么是多态?2.什么是重载 / 重写(覆盖) / 重定义(隐藏) ?3.多态的实现原理?4.inline可以是虚函数吗?5.静态成员可以是虚函数吗?6.构造函数可以是虚函数吗?7.析构函数可以是虚函数吗?什么场景下是?8.对象访问普通函数快还是虚函数快?9.虚函数表在什么时候生成?存在于哪里?10.虚继承.

2021-05-10 15:03:28 317 1

原创 什么是网络?

网络认识目录:一.网络认识二.IP地址三.端口四.协议1.协议概念2.OSI七层模型 & TCP/IP五层模型五.网络字节序1.种类2.对网络通信的影响1)影响:2)解决办法:3)查看主机是哪种字节序目录:一.网络认识网络就是将几部计算机的主机或网络打印机之类的接口通过网络线或者无线网络技术来实现数据的传输.网络覆盖的范围分为: 局域网.城域网.广域网二.IP地址IP地址是每一台主机的唯一标识,例如:192.168.1.1在网络通信的每一条数据都会含有两个信息=源端IP地.

2021-05-09 18:30:50 1599 8

原创 多态

C++ 多态目录:一.多态概念二.多态的定义/实现1.多态的构成条件2.虚函数的重写1)构成2)函数重写的两个例外:(1)协变(2)析构函数的重写3)C++11 final / override(1)final:修饰虚函数,表示该虚函数不能被继承(2)override:检查派生类中是否重写基类的某个虚函数,没有重写则会报错4)重载/覆盖/隐藏的对比三.抽象类1)概念2)通过代码理解四.多态的原理目录:一.多态概念多态其实我们可以理解为: 人们去动物园买票的时候,大家买的都是票,但是每个人的价格是不

2021-05-08 23:59:00 165 4

原创 继承

C++ 继承目录:一.继承概念二.继承定义1. 定义2.基类成员可访问方式三.基类和派生类对象赋值转换1.子类可以给父类直接赋值2.基类对象不能赋值给派生类3.基类的指针可以通过强制类型转换给派生类的指针四.继承的作用域1.在继承体系中基类和派生类都有着独立的作用域2.隐藏(重定义)3.如果是函数成员的隐藏,只需要函数名相同就可以构成隐藏五.派生类的默认成员函数1.构造函数2.拷贝构造函数3.operator=4.析构函数六.继承和有元七.继承和静态成员八.菱形继承/菱形虚拟继承1.概念2.数据冗余/二义.

2021-05-07 17:59:57 675 10

原创 利用Vector实现优先级队列

优先级队列template<class T,class Container=vector<T>>class PriorityQueue{private: vector<T> v;public: void shiftUp(int child){ int parent = (child - 1) / 2; //进行调整 while (child > 0){ if (v[parent] < v[child]){ .

2021-05-07 12:57:04 831 2

原创 通过List和Vector来实现栈和队列

栈/队列目录:一.实现栈(stack)1.Vector实现栈2.List实现栈二.实现队列(queue)1.List实现队列目录:一.实现栈(stack)1.Vector实现栈实现还是比较简单的,我们直接通过调用对应的迭代器来进行操作就可以了.class Stack1{ public: void push(const T& val){ _st.push_back(val); //直接调用vector的尾插操作 } void pop(){ _st.pop_.

2021-05-06 22:32:04 738 1

原创 Vector和List的差别

Vector/List目录:一.底层结构二.随机访问三.插入/删除四.空间利用率五.迭代器六.迭代器失效七.使用场景目录:一.底层结构Vector :是一段连续的空间,是一个 动态的顺序表List :是带有头结点的 双向循环链表二.随机访问Vector :支持随机访问,在访问某个元素的时候,元素的效率为 O(1)List :不支持随机访问,访问某个元素的效率是 O(n)三.插入/删除Vector :1.任意位置插入和删除效率比较低,需要搬移元素,时间复杂度为 .

2021-05-06 14:54:36 106

原创 Vector类相关OJ题目的理解

Vector类OJ题目目录:一.连续子数组的最大和二.电话号码的字母组合三.找出数组中出现次数超过一半的数字四.只出现一次的数iii五.目录:一.连续子数组的最大和框架:1.因为要求一个数组中的最大数值,我们想将每个数利用sum进行相加起来2.然后当sum的值res的时候,就进行交换就行了class Solution {public: int FindGreatestSumOfSubArray(vector<int> array) { //定义整型的vector容器

2021-05-06 13:14:26 208

原创 String类的相关OJ题目的理解

String类OJ题目目录:一.找出字符串中第一个只出现一次的字符二.两个字符串进行相乘三.翻转字符串中的单词四.翻转字符串的部分区间五.验证字符串是否回文六.字符串最后一个单词的长度七.找出字符串中只出现一次的字符八.翻转字符串九.字符串相加十.字符串转成整型数字目录:一.找出字符串中第一个只出现一次的字符框架:1.先定义一个字符串2.每个字符进行输入的时候进行+1操作3.在将最终只出现一次的字符进行输出int main(){ string s; //定义字符串 while (cin

2021-05-05 13:39:23 126 1

原创 单例模式--线程安全

单例模式目录:一.概念二.应用场景三.分类1.饿汉模式2.懒汉模式目录:一.概念单例模式属于创建型模式----一种非常典型的设计模式二.应用场景 1.一个类只能实例化一个对象 (单一的访问方式) 2.一份资源只能被加载一次 (类似于计数器,只可加载一次)三.分类(我们这里只对于懒汉模式和饿汉模式进行理解,后期理解到后面三个再对于单例模式补充)1.饿汉模式2.懒汉模式...

2021-04-28 17:31:50 142 1

原创 stack的接口使用

stack接口使用目录:1.构造栈2.empty3.size4.top5.push6.pop目录:1.构造栈stack<int> st;stack<char> st2;2.empty----判断栈是否为空 while (!st.empty()){ //循环判断栈是否为空 cout << st.top() << " "; st.pop(); }3.size----查看栈中有多少个数据 cout << st.

2021-04-25 17:28:33 282

原创 怎样在list中实现迭代器的使用

list中使用迭代器目录:一.原因二.封装list迭代器三.函数内部对于迭代器的使用目录:一.原因因为list是一个双向带头循环链表,我们之前用的迭代器在这里是无法实现的,所以我们就要对这里的迭代器进行自定义的封装,才能达到对于迭代器的使用二.封装list迭代器template<class T>struct ListIterator{ ListIterator(ListNode<T>* node) //迭代器构造函数 :_node(node) {} //获.

2021-04-25 17:02:51 464

原创 实现一个简单地list类

实现简单的list原理:代码实现:原理:list的储存原理其实就是储存在一个双向带头循环链表,我们只要根据这个进行实现就可以了.代码实现:对于简单的list的实现=构造函数+析构函数+输入函数#include<string> using namespace std;template <class T> struct ListNode{ //这里是类的私有类的体现,我们简化类的private进行了封装 T _data; //存放的数据 ListNod.

2021-04-25 16:38:17 252

原创 list接口的详细使用及讲解

list接口介绍/使用目录:一.Member functions(函数创建)1.普通创建2.数字方式创建3.利用迭代器将string类初始化到list中4.普通数组传入list中5.vector类传入list中二.Iterators(迭代器的使用)1.正向迭代器2.只读迭代器3.反向迭代器4.范围for三.Modifiers(功能)四.Capacity(容量的查看)五.Operations1.splice2.remove3.unique4.sort5.merge目录:一.Member function.

2021-04-25 15:44:39 646

原创 线程池

线程池目录:一.概念二.原理三.优势四.如何实现工作线程对不同的任务进行不同的处理?五.框架理解六.代码实现目录:一.概念二.原理三.优势线程池中的线程创建之后就不销毁,而是循环取出任务进行处理----1. 避免了频繁进行线程的创建与销毁带来的时间成本 ----2. 线程池中的线程,缓冲区有最大数量限制,避免了峰值压力的风险 四.如何实现工作线程对不同的任务进行不同的处理?答:----1.线程入口函数中,分辨任务类型,调用不同的处理接口----2.其他线程在通过任务队

2021-04-23 18:33:55 69

空空如也

空空如也

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

TA关注的人

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