- 博客(9)
- 资源 (1)
- 收藏
- 关注
转载 TCP拥塞控制和流量控制
一:流量控制什么是流量控制,流量控制的目的?如果发送者发送数据过快,接受者来不及接收,那么就会有分组丢失。为了避免分组丢失,控制发送者的发送速度,使得接受者来得及接收,这就是流量控制。流量控制根本目的是为了防止分组丢失,他是构成TCP可靠性的一方面。如何实现流量控制?由滑动窗口协议(连续ARQ协议)实现。滑动窗口协议既保证了分组无差错、有序接收,也实现了流量控制。 主要的方式就是接受方返回...
2019-10-07 17:53:42
313
原创 select、poll和epoll的区别
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。一、selectselect仅仅知道I/O事件发生的最大文件描述符,但并不知道是哪几个1)时间复杂度:O(n)2)优点:跨平台支持,几乎支持所有平台3)缺点:单个进程支持连接的fd有数量限制,默认值为...
2019-09-08 21:24:27
123
转载 C++堆排序
堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数...
2019-08-26 16:51:23
694
原创 C++基础知识
基础语法部分external的使用extern:声明使得变量为程序所知顶层const和底层const构造函数和析构函数继承和多态
2019-08-26 10:59:05
2269
原创 C++ 多线程(互斥量、死锁、条件变量)
文章目录四、数据竞争与互斥对象1.使用互斥锁防止多线程竞争同一资源2. 受保护的代码抛出异常时的处理五、死锁四、数据竞争与互斥对象1.使用互斥锁防止多线程竞争同一资源<mutex>:声明与互斥量相关的类,包括:std:mutex系列类,std:lock_guard,std:unique_lock以及其他的类型和函数互斥锁mutex保护了临界区,任何一个时刻只能有一个线程在此m...
2019-07-17 11:56:44
931
原创 C++ 多线程 (线程的基本概念及创建)
文章目录一、线程的基本概念1.join和detach2.主线程main函数抛出异常时,新线程的代码保护3.get_id()获取线程id和系统可运行的线程数指示器二、线程创建的3种方式1.使用函数指针创建进程2.使用函数对象创建进程3. 使用lambda函数创建进程三、线程的参数传递1.值传递和引用传递2.线程之间的参数移动以及线程的移动一、线程的基本概念C++11中与多线程相关的头文件:&...
2019-07-15 16:21:19
851
原创 C++异常处理
一、C++异常处理基本语法1.C++通过throw语句和try...catch语句实现对异常的处理throw 表达式;该语句抛出一个异常。异常是一个表达式,类型可以是基本类型,也可以是类。2.try...catch语句的语法如下:try { 执行语句组(包含throw语句)}catch(异常类型) { 异常处理代码}...catch(...) {...
2019-07-14 22:03:26
367
原创 HTTP协议+非对称加密
文章目录一、基本概念二、HTTP协议的过程1. URL详解三、HTTP请求1. 请求方式2. GET和POST详解3. GET和POST的区别四、HTTP响应1. 状态码五、HTTP与HTTPS的区别一、基本概念HTTP,全称为HyperText Transfer Protocol,即超文本传输协议。是互联网中应用最广泛的一种网络协议,所有的文件都必须遵守这个标准。所在协议层:应用层HTT...
2019-07-12 19:07:37
986
原创 数据结构
1.C++ 中vector和数组的区别内存中的位置不同C++中数组为内置的数据类型,存放在栈中,其内存的分配和释放完全由系统自动完成;而vector存放在堆中,由STL库中程序负责内存的分配和释放。大小能否变化:虽然数组也可以不指定长度,但是长度一旦指定就固定不变;而vector可以通过插入删除等操作改变长度的大小,当vector中空间不足时,会在原来的基础上两倍申请内存进行扩容。...
2019-07-10 11:38:57
311
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人