自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ArchyLi

介绍C++数据结构Linux基础知识

  • 博客(17)
  • 收藏
  • 关注

原创 poll()的实现与详解

poll不同于select使用三个位图表示fdset的方式,poll使用一个pollfd的指针来实现。因为select的实现和poll的实现非常类似,知识描述fd集合的方式有所不同,poll使用的是pollfd而不是select中的fd_set结构,其他类似,所以poll的实现相比于select实现简单。首先我们看下Linux下的poll()是如何描述的一、poll()函数

2017-07-31 23:19:11 4138 4

原创 select服务器的实现

一、五种I/O模型Linux下共有五种I/O模型阻塞I/O非阻塞I/O多路复用I/O(select和poll)信号驱动I/O(SIGLO)异步I/O说明:前四种都是同步,只有最后一种才是异步I/O(1)阻塞I/O进程会一直阻塞,直到数据拷贝完成。应用程序调用IO函数,导致应用程序阻塞,等待数据准备好。如果数据没有准备好,程序则阻塞等待。若果数据准备好了,从内核空间拷贝到用户

2017-07-30 10:54:11 1100

原创 【剑指Offer】3:二维数组中的查找

题目:一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高。bool Find(int* array, int rows, int columns, int data){ bool flag = false; if (array != NULL&&rows > 0 && columns > 0) { int row

2017-07-29 22:33:58 381

原创 关于const知识点总结

1、基本描述定义变量的限定符,表示变量值不可改变const int a = 1024;a = 1024;//错误,不能向const对象写值注意:const对象必须初始化。由于const创建后不可更改,所以必须初始化。(定义一个不可修改的默认值完全无意义)const int i = get_size();//正确const int j = 1024;//正确const int k;

2017-07-29 20:29:30 875 1

原创 arp协议

一、ARP协议简介ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。  源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,因此在通讯前必须获得目的主机的硬件地址,ARP协议就起这个作用。二、工作过程ARP协议只

2017-07-23 23:14:05 1900

原创 CRC效验算法

1.CRC简介CRC即循环冗余效验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。2.从奇偶效验说起所谓通讯过程的校验是指在通讯数据后加上一些附加信息,通过这些附加信息来判断接收到的数据是

2017-07-23 21:49:13 1471

原创 TCP定时器相关总结

TCP 是提供可靠的传输层,它使用的方法之一就是确认从另一端收到的数据。但是数据和确认都可能会丢失。TCP 通过在发送时设置一个定时器来解决这个问题。如果当定时器溢出时还没收到确认,它就会重传该数据。关键在于超时和重传策略,即怎样决定超时的时间间隔和如何确定重传的频率。对于每个连接,TCP 管理着四个不同的定时器:重传定时器、坚持定时器、保活定时器 以及 2MSL 定时器。TCP使用四

2017-07-22 22:04:10 465

原创 关于阶乘的面试题总结

阶乘方面的题一直是我最近不太明白的点,因此我便总结了几个关于阶乘方面的面试题供探讨。面试题:一、给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。二、求N!的二进制表示中最低位1的位置。对于第一道题,一般人的思路会是想着求完N!之后再来看,此时就要考虑是不是溢出的问题,但是我们换一个思路想一想,想一下有什么数字相乘可以等

2017-07-22 21:24:07 1107

原创 【每日一题】元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。

题目:元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。这道题我们可以创建两个栈(感觉有点类似两个栈实现一个队列),需要几个数字放在前面即把S1的栈顶元素取几个放在S2里面即可。出栈时候先判断S2是否为空,不为空则从S2栈顶元素逐个取出,再从S1中

2017-07-22 18:29:20 7801

原创 【每日一题】查找一个字符串中第一个只出现两次的字符。要求时间复杂度为O(N),空间复杂度为O(1)

题目:将"talk is cheap show me the code"替换。查找一个字符串中第一个只出现两次的字符。如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)本题我们很容易想到两次遍历,及外面一个大循环里面一个小循环直接遍历,可是题目要求时间复杂度为O(N),空间复杂度为O(1)。因此我们采用如下的方法解决。创

2017-07-22 16:04:34 1412 1

原创 【每日一题】实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)

这道题有两种实现方式方法一:用两个栈来实现两个栈实现的主要思路是,一个栈存放数据,一个栈存放最小值。压栈操作:(1)我们先向S1压栈一个数据(2)再向S1压入第二个数据,如果此时栈S2为空,并且把需要压栈的元素data和S2的栈顶元素进行比较,如果此时需要压栈的元素小于等于S2栈顶元素,把元素也压入栈2,否则不用管出栈操作:判断S1栈顶元素与S2栈顶元素是否相等,相

2017-07-22 14:45:03 3348

原创 两个队列实现一个栈

栈:先进后出队列:后进先出方法一:如何用两个队列实现一个栈呢?我们可以把一个队列里面的内容放入第二个队列里面,此时要剩余一个,这剩下的一个可以直接出栈,再把队列2里面的元素放回队列1, 重复即可达到栈的要求#include#include using namespace std;template class Cstack{public: Cstack(void)

2017-07-22 13:09:06 573

原创 【每日一题】替换字符串中的空格为$$$。要求时间复杂度为O(N)

题目:替换字符串中的空格为$$$。要求时间复杂度为O(N)例如:将"talk is cheap show me the code"替换。为"talk$$$is$$$cheap$$$show$$$me$$$the$$$code"。这道题类似和剑指offer一书中面试题4:替换空格思路是一样的。题目要求时间复杂度为O(N),而我们一般从前向后的思路时间复杂度为O(n^2),所以

2017-07-21 17:12:48 563

原创 两个栈实现一个队列

栈:先进后出的一种数据结构。队列:先进先出的一种数据结构。此时如果我们先有一个栈是不够的,我们只能把先入栈的元素后出来,后面入栈的元素先出来。这是我们便想如何才能实现一个先进先出的结构呢。看下图:我们先把元素倒入S1栈中,在把S1栈中的元素逐个压栈到S2里面,再从S2出栈,即可达到先入栈的元素先出。此时我们可以有一个小优化,最后一个元素X1可不入S2减少一次压栈的操作。

2017-07-21 16:58:47 468

原创 深入TCP(一)--TCP报文段首部分析

TCP是网络中的重点中的重点,网络也叫做IP/TCP协议,因此也能看出TCP的重要性。因此我便想按照三部分来叙述TCP的相关知识。一、TCP报文格式TCP协议主要分为两部分(1)分段头:TCP为了实现端到端可靠传输所加上的控制信息(2)数据:指由高层即应用层而来的数据。二、TCP报文格式分析2.1首部字段源和目的端口:占16比特。用于多路复用/多路分解来自或

2017-07-20 20:33:08 4187

原创 常见的网络端口号及其分类

一、端口号的概念在网络技术中,端口一般有两个意思,一个是物理端口,一个是逻辑意义上的端口。 物理端一般有ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。 逻辑上的端口有TCP/IP协议中的端口,端口号的范围从0到65535,每个端口号又有不同的含义,有HTTP中的80端口等。(1)端口号的理解我们知道一个IP对应一台物理主

2017-07-20 19:16:27 3668

转载 NAT基本原理及应用

1 概述1.1 简介1.1.1 名词解释公有IP地址:也叫全局地址,是指合法的IP地址,它是由NIC(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻 址的地址。私有IP地址:也叫内部地址,属于非注册地址,专门为组织机构内部使用。因特网分配编号委员会(IANA)保留了3块IP地址做为私有IP地址:10.0.0.0 ——— 1

2017-07-19 16:03:19 437

空空如也

空空如也

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

TA关注的人

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