自定义博客皮肤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)
  • 收藏
  • 关注

原创 C++ priority_queue

参考文章:https://blog.csdn.net/stone_fall/article/details/89010656https://blog.csdn.net/fengbingchun/article/details/70505628std::priority_queue:在优先队列中,优先级高的元素先出队列,并非按照先进先出的要求,类似一个堆(heap)。其模板声明带有三个参数,priority_queue<Type, Container, Functional>, 其中Type

2020-09-14 16:24:38 159

原创 简易的负载均衡服务器——springsnail

参考博客:https://blog.csdn.net/Q755100802/article/details/104559974Linux高性能服务器编程springsnail源码解析(c++负载均衡)一些准备工作都在第一篇博客中提到了先看main文件:char cfg_file[1024]; //配置文件memset( cfg_file, '\0', 100 );int option;//getopt函数用来分析命令行参数 while ( ( option = getopt(

2020-09-05 17:25:38 485

转载 socketpair的理解

参考博客链接:https://blog.51cto.com/liulixiaoyao/533469socketpair创建了一对无名的套接字描述符(只能在AF_UNIX域中使用),描述符存储于一个二元数组eg. s[2] 这对套接字可以进行双工通信,每一个描述符既可以读也可以写。这个在同一个进程中也可以进行通信,向s[0]中写入,就可以从s[1]中读取(只能从s[1]中读取),也可以在s[1]中写入,然后从s[0]中读取;但是,若没有在0端写入,而从1端读取,则1端的读取操作会阻塞,即使在1端写入,也

2020-08-22 16:43:56 612

转载 简介struct cmsghdr结构

在阅读《Linux高性能服务器编程》的时候,遇到了一些结构体不太记得住记录一下参考链接:https://blog.csdn.net/shisiye15/article/details/7762609我们需要注意以下几点:cmsg_len与CMSG_LEN()宏值所显示的长度相同。CMSG_SPACE()宏可以计算一个附属数据对象的所必需的空白。msg_controllen是CMSG_SPACE()长度之后,并且为每一个附属数据对象进行计算。控制信息头部本身由下面的C结构定义:struct c

2020-08-20 15:05:17 2235

转载 sock通信中msghdr的使用

struct msghdr的使用#include<sys/socket.h>struct msghdr { //消息的协议地址 协议地址和套接口信息 //在非连接的UDP中,发送者要指定对方地址端口,接受方用于的到数据来源,如果不需要的话可以设置为NULL //(在TCP或者连接的UDP中,一般设置为NULL) void* msg_name ; /* 地址的长度 */ socklen_t msg_namelen ; /* 多io缓

2020-08-20 11:49:49 2960

原创 拥塞控制算法

首先是慢开始算法:这里是每一个确认都会增加,所以CWND窗口是成指数型增长:比如一开始发1MSS,收到1MSS,CWND调整为2MSS。发2MSS,收到1MSS,D+=1MSS,即3MSS,又收到后边的1MSS,CWND+=1MSS,即4MSS。1、2、4。。。。。当到达ssthresh转为拥塞避免算法:①第一种实现方式和慢开始的计算公式一样,不过是计算时机不同,在一个RTT内只计算一次,无论收到多少个确认,所以是线性增长。(也就是把全部CWND中的发送完,而且收到全部确认的情况下,只加1M

2020-08-08 11:44:11 714

原创 class为什么要4字节对齐?

讲的特别好首先要确认读过上边的文章在评论区有这样的问题:在结构体中如果定义了数组的话是怎么进行内存对齐的呢?比如定义了一个char a[7]这样一个不能被4整除大小的数组,如何和其他变量进行字节对齐呢?这个问题特别值得思考。//sizeof 的结果是7class A{ private: char i[7];};//sizeof 的结果是12.class B{private: char i[7]; int j;};为什么呢?其实只要理解“数据总线32位意味着

2020-08-06 11:25:54 316

原创 TCP状态转换图

相信大家这张图也很熟悉了这里也是记录一下自己的理解:在客户端处于FIN_WAIT_1时,正常情况是等待接收服务端发送的ACK报文,进入FIN_WAIT_2状态,接着等待接收服务器发送的FIN报文,之后客户端发送ACK报文,转向TIME_WAIT状态。有两个例外:①收到FIN报文,没有收到ACK,也就是说客户端在发送FIN报文后,还未收到服务器的ACK报文就已经收到了FIN报文,相当于双方同时关闭,进入CLOSING状态,此时只要收到对方的ACK报文,即可转入TIME_WAIT状态。②收到FIN.

2020-08-05 21:27:47 206

原创 tcpdump -x命令

这个是DNS查询问题的格式。(这个格式占了8个字节,我感觉就是第一行那些十六进制数了,虽然我看不懂,orz)这段话是在阅读《高性能服务器编程》的时候看到的自己尝试了一下这里我想讨论一下十六进制的串是怎么对应的。首先右边有一些ASCII码的对照,有一段刚好是baidu.com,清晰明了。ASCII码是7位或者8位,这里是八位,看最后一行6f6d,一位十六进制是4位,所以两个十六进制是8位,6f是o,6d是m,其他同理。利用计算器,可以方便地知道0035是53,也就是DNS的端口,8ea5是36

2020-08-02 11:50:07 2034 5

原创 i = ++i + ++i

闲来有些蛋疼,喜欢搞这些有的没的i = 2;i = i++ + ++i;结果输出6,从左到右算,i++之后i为3,后边++i之后,i为4但i++取的是旧值2,所以2+4= 6i = ++i + i++;结果为7,这就很容易困惑,其实只要记得++i的时候,i取得是最新的值,所以++i之后,i为3,后边i++之后i为4,但取旧值3,前边的++i取新值4,所以结果3+4 = 7这么说你可能不信,接着看i = ++i + ++i;结果为8,两个都是++i,都取新值,所以4+4 = 8魔鬼继续i

2020-07-17 14:51:06 939 3

原创 试证明:当用n比特进行分组的编码时,若接收窗口等于1(即只能按序接收分组),那么如果要求连续ARQ协议能正常运行时,发送窗口大小是多少?

首先可以看下别的大佬给出的答案。下边是原文链接。https://blog.csdn.net/gdc6916/article/details/93654939我并不想讨论他是不是以结论证明结论,但他这个确实方便记忆。下边看严谨的证明,书上的,我只是帮忙讲解一下。首先注意的是Wt和Wr,分别代表发送窗口的最大值和接收窗口的最大值。题干中已经说明Wr值为1。下边看①②③,图中的①②③(窗口区间,也就是整一小段)代表了发送窗口的所在位置,根据图片可以看出,三个窗口的长度都是6,符合≤2³-1①的.

2020-07-17 11:28:30 8188 26

原创 KMP 模式匹配算法

本文章包含朴素的模式匹配算法KMP模式匹配算法和改进的模式匹配算法完整代码,请直接食用。有空再来讲解原理。#include <iostream>#include <cstring>using namespace std;void get_next(char *T, int *next, int &cnt);void get_nextVal(char...

2019-11-19 16:23:08 126 3

原创 链表的插入排序算法(完整代码以及讲解)

先贴代码再讲解。(c++代码,但和c没什么差不多)#include <iostream>#include <malloc.h>#include <stdio.h>using namespace std;typedef struct LNode{ int data; struct LNode *next;}LNode, *Link;u...

2019-11-16 10:12:32 3173 2

原创 单链表的初始化、查找、插入、删除、和整表删除

嘿嘿,这么快就写第二篇了。首先是一些定义和头文件。#include <iostream>#include "stdio.h"using namespace std;#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 2typedef int ElemType;typedef...

2019-11-12 17:23:58 468

原创 数据结构之顺序线性表操作(C++实现-C风格写法) 完整代码

稍微bb几句,最近想好好学习,所以把游戏都卸载了,下面开始正题哈哈。一、线性表的创建和一些基本的操作下边是一些预先的定义#define OK 1 // 定义返回状态#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 // 定义线性表的最大长度。typedef int Status;typedef int E...

2019-11-12 08:50:10 477

空空如也

空空如也

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

TA关注的人

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