自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP 与 UDP

TCPTCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。TCP数据报结构序列号Seq(Sequence Number):占 32 位,用来标识从 计算机A 发送到 计算机B 的数据包的序号,发送的数据是被拆成多个数据包发送,序列号对每个数据包进行编号,接收方根据...

2019-10-09 20:39:28 241

转载 OSI网络七层模型 与 TCP/IP模型

OSI网络七层模型 | TCP/IP模型OSI 是 Open System Interconnection 的缩写,译为“开放式系统互联”。OSI模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。OSI 只是存在于概念和理论上的一种模型,它的缺点是分层太多,增加了网络工作的复杂性,所以没有大规模应用。后来人们对 OSI 进行了简化,合...

2019-10-08 21:42:17 268

转载 C/C++ Socket编程(七)

UDP 和 TCPTCP 是面向连接的传输协议,建立连接时要经过三次握手,断开连接时要经过四次握手,中间传输数据时也要回复 ACK 包确认,多种机制保证了数据能够正确到达,不会丢失或出错。UDP 是非连接的传输协议,没有建立连接和断开连接的过程,它只是简单地把数据丢到网络中,也不需要 ACK 包确认。UDP 传输数据就好像我们邮寄包裹,邮寄前需要填好寄件人和收件人地址,之后送到快递公司即可,...

2019-09-30 11:00:13 300

转载 C/C++ Socket编程(六)

网络数据的大小端问题不同 CPU 中,4 字节整数 1 在内存空间的存储方式是不同的。4 字节整数 1 可用 2 进制表示如下:00000000 00000000 00000000 00000001有些 CPU 以上面的顺序存储到内存,另外一些 CPU 则以倒序存储,如下所示:00000001 00000000 00000000 00000000若不考虑这些就收发数据会发生问题,因为保存...

2019-09-30 10:45:39 262

转载 C/C++ Socket编程(五)

shutdown():优雅地断开TCP连接调用 close()/closesocket() 函数意味着完全断开连接,即不能发送数据也不能接收数据,这种“生硬”的方式有时候会显得不太“优雅”。上图演示了两台正在进行双向通信的主机。主机A发送完数据后,单方面调用 close()/closesocket() 断开连接,之后主机A、B都不能再接受对方传输的数据。实际上,是完全无法调用与数据收发有关的...

2019-09-30 10:25:38 1045

转载 C/C++ Socket编程(四)

Socket编程实现回声客户端所谓“回声”,是指客户端向服务器发送一条数据,服务器再将数据原样返回给客户端。下面实现 Windows 下的回声程序,Linux 下稍作修改即可。server.cpp#include <stdio.h>#include <winsock2.h>#pragma comment (lib, "ws2_32.lib") //加载 ws2...

2019-09-30 10:08:12 339

转载 C/C++ Socket编程(三)基本函数

socket():创建套接字不管是 Windows 还是 Linux,都使用 socket() 函数来创建套接字。socket() 在两个平台下的参数是相同的,不同的是返回值。Linux 中的一切都是文件,每个文件都有一个整数类型的文件描述符;socket 也是一个文件,也有文件描述符。使用 socket() 函数创建套接字以后,返回值就是一个 int 类型的文件描述符。Windows 会区...

2019-09-29 22:11:25 1015

转载 C/C++ Socket编程(二)

Linux下的socket演示程序server.cpp 是服务器端代码,client.cpp 是客户端代码,要实现的功能是:客户端从服务器读取一个字符串并打印出来。服务器端代码 server.cpp:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd....

2019-09-29 20:41:52 662

转载 C/C++ Socket编程(一)

UNIX/Linux 中的 socket在 UNIX/Linux 系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作,UNIX/Linux 中的一切皆文件!为了表示和区分已经打开的文件,UNIX/Linux 会给每个文件分配一个 ID,这个 ID 就是一个整数,被称为文件描述符(File Descriptor)。例如:...

2019-09-29 20:32:40 973

原创 位运算

&(按位与)一个数&1结果为该数二进制表示中的最末位,可用于判断该数奇偶,0为偶数,1为奇数。|(按位或)^(按位异或)相同为0,不同为1优先级:& > ^ > |~(按位取反)<<(按位左移)a << b(a * 2^b):a转成二进制后左移b位,右边用0填充a << 1 比 a * 2 效率更高...

2019-09-29 16:13:01 127

原创 窗口内最大最小值更新结构及其应用

窗口内最大值或最小值的更新结构(单调双向队列)借助一个双端队列,保存窗口内的数的在数组中的下标。当窗口新增一个数,若 队列为空 或 该数大于等于队尾表示的数,则队尾弹出,继续进行判断;若该数小于队尾表示的数,将该数的下标从队尾进队。当窗口减少一个数,判断队头是否过期,过期则队头出队。窗口内最大值即为队头表示的数。1.假如一个子数组达标(max - min <= num...

2019-09-27 16:27:10 158

原创 单调栈结构及其应用

单调栈解决一个数组中,对于每个数,求左边离它最近的比它大(小)的数,右边离它最近的比它大(小)的数,时间复杂度O(N)实现。准备一个栈,栈底到栈顶是从大到小的(保存的是数据的下标)。每来一个数 num,若 栈空 或 num < 栈顶top,num入栈,继续判断下一个数。若num = top,将 num 与 top 压在同一层。若num > top,则 top 出栈,同时 t...

2019-09-27 15:57:38 173

原创 常见排序算法(C++实现)

排序的稳定性排序后原本相同的值相对次序的保持不变。稳定:冒泡排序,插入排序,归并排序,桶排序不稳定:选择排序,快速排序(有稳定的版本),堆排序,希尔排序冒泡排序平均时间复杂度:O(N^2)额外空间复杂度O(1)稳定void bubbleSort(vector<int> &vec){ if (vec.size() < 2) return; fo...

2019-09-27 14:29:44 189

空空如也

空空如也

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

TA关注的人

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