自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IP协议以及ICMP、Ping

一、IP协议IP协议是TCP/IP协议的动力,它为·上层协议提供不可靠、无状态、无链接的服务。无状态是指通信双方传输数据状态的不同步,因此所有的IP数据报的发送、传输和接受都是相互独立的、没有上下文关系。这意味着它无法处理乱序和重复的IP数据报。但无状态的优点也很明显:简单、高效,我们无需为保持通信而分配一些内核资源,传输数据时也不用携带状态信息。不可靠体现在IP协议不能保证数据准确的...

2018-08-24 11:39:13 15221 1

原创 Top/k值查找重复数据

问题描述:/*    请写代码,创建一个vector<int> vec,随机100个整数    ,整数的取值范围是[1, 1000000],以系统时间作为种子,    请快速统计该组数据当中,有哪些数字重复了,统计重复的次数,    打印出来,打印格式        数字  =》 重复的次数    数字  =》 重复的次数    数字  =》 重复的次数    ...

2018-08-09 17:08:49 392

原创 Top/k之最大/最小问题

海量数据中找最大值/最小值问题解题思路:通过优先级队列(小跟堆)的队头是最小的来与vec中的数据比较来找最小的n个数。 int _tmain(int argc, _TCHAR* argv[]) { /* 请定义一个vector<int> vec; 以系统时间为种子, 随机产生1-1000000之间的整数100000个,添加到vector 当中, 请找出v...

2018-08-09 15:34:14 184

原创 socket编程函数

2018-08-08 10:24:06 212

原创 TCP超时重传、拥塞控制

TCP超时重传是指:TCP服务必须重传在超时时间内未收到确认的报文段。TCP模块为每个TCP报文段都维护一个定时器,该定时器在第一次被发送时启动,如果超时时间内未收到对方的应答,TCP模块将重新发送并重置定时器。在我的centos7上它做少重传次数为3;最多为15拥塞控制的最终受控量是发送窗口的大小(一次所发送数据量的大小),它的值不能太大(网络拥塞),也不能太小(...

2018-08-06 20:52:12 1469

原创 tcp Timewait、处理半打开链接以及心跳检测

TIME_WAIT一般是发生在服务期端的,因为客户端的端口再次链接时会重新分配,当然你也可以指定客户端的端口,只是一般不这么做。我试过用bind去绑定客户端,但下次链接时端口还是会发生改变。TIME_WAIT如何改变?改动内核參数/proc/sys/net/ipv4/tcp_tw/recycle来高速回收被关闭的socket,从而是tcp连接根本不进入time_wait状态,进而同意应...

2018-08-05 17:32:37 518

原创 空格替换问题

一、问题描述把空格替换成字符串例如:we are happy;替换成:we20%are20%dhappy.这是剑指offer上的解法,比我想的用另一块空间去拷贝的想法更好。 代码如下:#include<iostream>#include<vector>using namespace std;void str_copy(char *st...

2018-08-04 20:54:10 165

原创 Tcp、udp协议

一、Tcp协议TCP协议(控制传输协议)是为应用层提供可靠的、面向连接的和基于流式的服务。可靠:TCP协议使用超时重传、数据确认等方式来确保数据包被正确地发送至目的端。面向连接:使用TCP协议协议的双方必须要建立tcp连接,并在内核中为该链接维持创造一些必要的数据结构,比如连接的状态、读写缓冲区以及诸多定时器等,当双方通信结束时,双方必须关闭链接以释放这些内核数据。流式的:基于流式...

2018-07-27 17:33:42 135

原创 四层网络协议之DNS

一、四层网络协议我平时所输入的www.baidu.com都只是域名,而不是ip,而DNS服务器会帮我们把域名转化为IP地址。DNS(Domain Name Service)域名服务,协议提供及其域名到IP地址的转换。DNS的端口是80Linux下访问DNS服务:使用命令host 二、基于DNS的简单实现  ...

2018-07-26 17:33:51 1406

原创 四层网络协议解析之ARP协议

 现在主流的协议是TCP/IP协议族,自底向上分别是数据链路层、网络层、传输层和应用层。每层都有各自的功能,上层协议使用下层协议提供的服务。数据链路层主要实现了网卡接口的网络驱动程序。两个常用的协议是ARP(地址解析协议)和RARP(逆地址解析)。32位IP-》48位Mac地址。ARP协议能实现任意网络地址到任意整个转换过程是一台主机先向目标主机发送包含IP地址信息的广播数据包,即...

2018-07-26 16:49:25 481

原创 c++STL的一点点分享(一)

如果有什么不对的地方,请各位大佬及时提出。1、vector(向量容器)底层实现:vector底层是一个以2倍方式增长的动态开辟的一维数组,它的初始大小是零,所以当你第一次插入的时候,它的变化是从0-》1,然后是从2-4-8-16。。。由于它的开辟效率不高,所以库里提供了reserve()方法和resize()方法。提供的方法:push_back();尾插,pop_bac...

2018-07-25 19:53:51 181

原创 通过tcpdump的使用来了解tcp三次握手及四次挥手

一、tcpdump关于tcpdump的安装这里就不介绍了,网上很多。先介绍一下tcpdump的使用方法。二、tcpdump的使用服务器代码:#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<sys/socket.h>#include<arpa/inet.h>...

2018-07-10 17:39:19 442

原创 如何使用github

一.关于gitGit 是目前世界上最先进的分布式版本控制系统(没有之一)。 Git 的特点:简单来说就是:高端大气上档次! 二、关于Git bash 的使用首先你需要先在网上下载gitbash,gitbash的使用和linux很像(至少我认为是这样),诸如ls,cd,rm,vim等这些名的使用一模一样。然后正题来了,等你下载完成以后,你需要把你的bash和你的github账号下的仓库关联起来。使用...

2018-06-12 22:21:56 192

原创 栈和链栈的实现及其相关操作详解

一、概述队列简称队(先进先出),是一种只允许在表的一端进行插入操作,在另一端进行删除操作的线性表。允许插入的一端被称为队尾,队尾元素由rear指出,允许删除的一端被称为队首,由front指出。我们得struct需要三个数据成员:data(数组) 、队首指针(front)、队尾指针(rear)。代码实现:

2018-05-13 14:26:50 298

原创 简单论述之单例模式分析

问题:1.什么是单例模式?单例模式是软件设计模式中的一种,它的核心结构只包含一个被称为单例的特殊类,通过单例模式保证系统中一个类只有一个实例。对于系统中的许多类来说,只能有一个实例。比如:Windows系统资源管理器(如果不对对象唯一化,将会弹出多个窗口)(1)窗口内容完全不一致 =》 内存资源浪费(2)窗口内容不一致  =》 意味着在某一时刻,系统有多种状态 =》与实际不符

2018-05-13 14:14:00 219

原创 理解编译、运行与链接

一、概述计算机系统三大部分:CPU 、内存、I/O。通常我们所写的程序都会加载到虚拟内存中,虚拟内存的大小是与CPU的位数有关,一般我们所用的计算机都是X86体系32位的linux操作系统,所以虚拟内存的大小是2^32 = 4G。我们一般把程序运行所需要的虚拟内存称为虚拟地址空间,它的大小也是4G,它又被分为用户空间(大小时3G)和内核空间(1G),那么它的构成是什么样的呢?

2017-10-11 13:55:21 361

原创 不带头结点的链表操作及其逆置

一、概述前面我们已经完成了带头结点的链表,今天我们来完成一下不带头结点的链表。事实上不带头结点的链表玉带头结点的链表差别在哪呢?(1)带头结点的单链表更容易操作,因为不带头结点的单链表在第一个节点的操作与其他节点不一样,在初始化的时候就必须把第一个结点创建出来,然后将它的next置空而不带头结点的单链表则直接置空即可。(2)不带头结点的单链表,初始化时一定要返回指向头结点的地址,所以要

2017-09-27 18:20:08 2545 1

原创 八大排序之冒泡排序及其优化

一、概述冒泡排序作为我们接触的第一个排序算法,相信大部分人都非常熟悉。       冒泡排序算法的运作如下:(从后往前)           比较相邻的元素。如果第一个比第二个大,就交换他们两个。           对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。             针对所有的元素重复以上的步骤,

2017-09-16 12:51:52 287

原创 循环链表的操作详解

一、概述循环链表:循环链表是另一种形式的链式存贮结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。从上图看出循环链表有两个成员:data 和 next由此可创建循环链表和它的一些基本操作如下:注明:它的操作其实与单链的操作差不多,只要注意判断标志即可。#pragma once//循环链表,尾节点的next指向头typedef struct C

2017-09-13 12:10:48 4555 1

原创 关于双向链表的操作详解

一、概述    双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。它其实就是单链表的基础上加入了前驱指针,能够很方便的访问它的前一个数据节点。从图中可以看出我们的struct需要3个成员:data、prio  、next;我们再加入一些链表的基本操

2017-09-13 10:28:50 1211

原创 用链表实现冒泡排序!

一、问题描述存储数据不仅数组可以,链表也行。那么如何用链表实现冒泡排序呢?我们需要把数据存储在链表中,然后调用排序函数就可以了。但必须要注意链表与数组的不同点,链表没有下标,要想访问数据域必须通过节点来访问。二、代码实现#include#includetypedef int ElemType;typedef struct Node{ ElemType pData

2017-09-07 17:26:53 5059 4

原创 如何用链表实现A U B,和 A n B呢?

一、问题描述假设有集合A = {1,2,3,4,5,  6,7, 8 ,9,10  },   集合B = {6,7,8,9,10,11,12,13,14,15},那么如何去求A  U   B,和 A n  B呢。如果这是一道数学题,相信每个人都可以很快的给出答案,但是当A集合有一千个数据呢,这时候就需要我们花费大量的时间去完成它。如何用代码去实现它呢,首先,得思考用什么方式去存储集合A

2017-08-24 18:39:01 614

原创 hello world

#includeint main(){    printf("hello world");   return 0;}

2017-08-21 13:25:49 104

空空如也

空空如也

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

TA关注的人

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