自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 多路转接——对比select、poll、epoll

select 1 select函数#include <sys/time.h>#include <sys/types.h>#include <unistd.h>int select(int nfds, //关心的文件描述符的最大值+1 fd_set *readfds, ...

2018-07-31 17:16:51 242

原创 浅析五种IO模型

1 理解IO IO是数据的输入输出,在网络中其实就是对于socket的读取和发送。在一次IO过程中,数据首先是发送到对端的接受缓冲区里,然后操作系统在从缓冲区中拿走数据。但是并不是我们调用recv接口,操作系统就可以直接从缓冲区里面拿数据的,而是需要缓冲区里面有数据才可以,所以这就需要我们等待数据就绪。 IO整个的过程归纳起来,分为两步:1 等待数据就绪, 2 数据搬迁。 等待数据就绪中其实...

2018-07-27 09:04:35 384

原创 数据链路层——最大传输单元MTU

1 数据链路层的以太网帧结构 以太网帧结构由四个字段组成,各字段含义为: 目的地址:该地址指的是MAC地址,指该数据要发送至哪里 源地址:MAC地址,填本地MAC地址,指该数据从哪里来 类型:值该数据要交给上层(网络层)的那个协议(IP协议,ARP协议…) 数据:要传输的数据,不过该数据有长度的要求,是在46–1500字节之间,该长度称为最大传输单元即MTU 若...

2018-07-23 23:17:11 15593 2

原创 网络层——IP协议(IP协议报头&IP报文的分片与组装)

1 IP协议报头 各字段解释: 版本号:占4位,指IP协议的版本,有IPv4和IPv6两种,对于IPv4协议该字段就是4 首部长度:占4位,指IP协议的报头长度,范围在20-60字节 区分服务:占8位,只有在使用区分服务时该字段才有作用,一般情况下不使用该字段 长度:占16位,指IP协议的总长度:报头长度+数据长度 根据IP报头来看,长度占16位,长度应该在65...

2018-07-22 15:14:27 4101

原创 虚基表和虚表

1 虚基表 (1)菱形继承 在菱形继承中,类D有两个_a,一个是B类从A类继承而来的,一个是C类从A类继承而来的 在对D类赋值时必须指定是对那个_a赋值,否则会出现数据不明确的问题。 所以菱形继承会造成数据的二义性。//菱形继承class A{public: int _a;};class B:public A{public: int _b;}...

2018-07-21 10:53:02 3596

原创 多态

1 多态 多态是指多种形态,就是说对于一个函数可以实现多种功能; 看一个实例:虽然调用的是同一个函数,但是却出现了两个不同的结果class Base{public: virtual void f1() { cout << "Base::f1()" << endl; }};class Derived...

2018-07-20 10:26:55 319

原创 重载 & 重定义(隐藏)&重写(覆盖)

1 重载 重载是指:同名函数,不同参数的函数之间,互相称为重载函数 构成重载的条件: (1)在同一作用域中; (2)两个函数的函数名相同; (3)两个函数的参数不同; (3)两个函数的返回值可以相同也可以不相同。//两个f1()函数互相重载class Base{public: void f1(int i) { cout << "...

2018-07-19 17:29:17 303

原创 继承(隐藏 & 派生类的六个默认成员函数)

1 隐藏(重定义) 隐藏是指:在基类和派生类中有同名的成员变量或成员函数,那么派生类的成员变量、成员函数就将基类的隐藏(重定义)了。 如何调用隐藏的成员函数(或使用隐藏的成员变量)? 指定作用域 2 派生类的六个默认成员函数 在默认情况下,派生类的默认成员函数由基类的成员函数合成(具体实现见下面的代码) (1)构造函数 子类的构造函数,继承了父类的构造函数,需要先调用父类...

2018-07-17 16:11:24 645

原创 初识继承(继承方式 + “切片”)

1 继承概念 对于继承,我们可以形象的理解为是一种父子的关系,子类继承父类(就像是孩子继承了父亲的某些特征),是C++的一种特性。 通过继承可以提高程序的可复用性。 被继承的类我们称之为父类(基类),继承的类称为子类(派生类)。 在C++中既可以单继承,即每次只继承一个类(可以多次继承);也可以多继承,即每次可继承多个类。如何理解可复用性? (1)定义了一个函数,每次需要借助该函数的...

2018-07-16 16:29:18 362

原创 C++动态内存管理

1 内存分配方式 (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的 整个运行期间都存在。例如全局变量,static 变量。 (2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函 数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集 中,效率很高,但是分配的内存容量有限。 (3) 从堆上分配,亦称动态内存分配。程序在...

2018-07-14 16:29:46 301

原创 传输层——详解UDP和TCP的区别

首先我们看一下UDP和TCP的特点: UDP:无连接 、不可靠、面向数据报、没有发送缓冲区 TCP:面向连接、可靠、面向字节流、有发送缓冲区1 无连接和面向连接 UDP:“无连接” 在网络中使用UDP协议时,只需要提供对端的IP地址和端口号PORT就可以与对端进行通信,并不需要和对端建立连接 TCP:“面向连接”“三次握手、四次挥手” 在网络中使用TCP协议时,不仅需要对端的IP地...

2018-07-10 16:56:09 2935 1

原创 传输层——TCP协议如何保证可靠性并提高效率的?

TCP保证可靠性:(1)校验和(2)面向连接(3)序号和确认序号(4)确认应答机制 (5)超时重传机制(6)流量控制 (7)拥塞避免TCP提高效率:(1)滑动窗口(2)快重传 (3)延迟应答(4)捎带应答TCP保证数据传输可靠性1. TCP面向连接——“三次握手、四次挥手”TCP在建立连接时需要“三次握手”建立连接,“四次挥手”断开连接首先看一下“三次握手、四次挥手”的过程以及客户端和服务器的状态...

2018-07-09 17:52:41 3882

原创 传输层——TCP协议

1 TCP协议报头源端口号、目的端口号:标识数据从哪里来,要发送到哪里去4位首部长度:TCP报头长度,用于分离报头信息和有效载荷。                      4个比特位最大值为15,以四字节为单位(15*4 = 60),TCP报头长度20-60字节6位保留位:现在还没有具体用处,方便以后去扩展16位窗口大小:进行流量控制16位紧急指针:标识那部分数据是紧急数据。优先处理数据的偏移量...

2018-07-07 23:44:34 1084

原创 C++六个默认成员函数

二、六个默认成员函数1.构造函数(1)构造函数的函数名与类名相同;(2)构造函数无返回值;(3)对象构造时系统自动调用相应的构造函数;(4)构造函数可以重载;(5)构造函数可以在类内/类外定义;(6)无参的构造函数和全缺的构造函数只能有一个。//构造函数#include <iostream>#include <stdlib.h>using namespace std;...

2018-07-06 17:05:36 259

原创 传输层——UDP协议

1 UDP协议报头源端口号、目的端口号:表示是谁发来的报文,要将该报文传送给上层(应用层)的谁16位UDP长度:该长度包括UDP 报头在内的整个报文的长度                         长度共16位,最大长度为65536,即64K,若超过该长度,需要在应用层对报文手动分包,并在接收方手动拼装16校验和:对报头信息的简单校验,并不保证UDP协议的可靠性,如果校验和出错,直接将报文丢...

2018-07-05 16:08:26 322

空空如也

空空如也

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

TA关注的人

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