自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 STL中的set和map

原文:http://blog.csdn.net/terence1212/article/details/52487656STL的set和map都是基于红黑树实现的,和stack和queue都是基于deque一样,它们仅仅是调用了RBTree提供的接口函数,然后进行外层封装即可。本篇博客理解起来比较...

2017-09-05 15:29:48 323 0

原创 webbench源码剖析

webbench是一种网站的压力测试工具,它是由Lionbridge公司开发,wenbench的标准测试可以向我们展示两项内容:每秒钟相应的请求数和每秒钟传输的数据量;。webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,Java,CGI)进 行测试的能力。还有就是他...

2017-09-04 21:04:34 250 0

转载 常见的文本压缩算法

1.目前主要的文本压缩算法 文本压缩是根据一定的方法对大量数据进行编码处理以达到信息压缩存储的过程,被压缩的数据应该能够通过解码恢复到以前的状态,而不会发生信息丢失的现象。2.文本压缩的分类 3.算法描述3.1.Huffman编码1.原理简介 huffman压缩是数据结构课程中的常见内容, 是...

2017-08-15 14:32:18 7811 0

转载 C语言实现C++的封装继承与多态

1、 概述 C语言是一种面向过程的程序设计语言,而C++是在C语言基础上衍生来了的面向对象的语言,实际上,很多C++实现的底层是用C语言实现的,如在Visual C++中的Interface其实就是struct,查找Interface的定义,你可以发现有这样的宏定义:#ifndef Inter...

2017-07-29 07:53:16 441 0

转载 学习字符串string类

学习C++ -> string类字符串一、string类字符串的介绍 在程序设计中, 字符串的使用十分频繁, C语言类型字符串(简称C-串)在使用与字符串的处理上较为复杂, C++为了在程序设计中更加方便的使用字符串特新增了一种string类型的字符串。  string类字符串为S...

2017-07-25 22:36:51 234 0

原创 面试题:C++实现一个不能被继承的类

一个子类继承一个父类,子类的构造函数和析构函数会自动调用父类的构造函数, 先要求设计不能继承的类,即不允许子类的构造函数调用父类的构造函数和析构函数,方法如下:1.直接的方法:将父类的构造函数和析构函数设置为private成员函数 私有成员只能被自身的类访问class A { public:...

2017-07-15 20:51:48 372 0

原创 obj : error LNK2019: 无法解析的外部符号 "public: __thiscall B::B(void)" (??0B@@QAE@XZ),该符

今天在写类的简单实现时突然遇见这样的问题,最后发现是因为自己忘记实现构造函数的析构函数class B:public A { public: B(); ~B(); };出现该错误:obj : error LNK2019: 无法解析的外部符号 “public: __thiscall B...

2017-07-15 20:23:22 2000 1

原创 shell脚本实现彩色进度条的编写

我们在之前写过c/c++实现的进度条,原理相同,这里主要着重于彩色进度条的实现这里只是一个带颜色的进度条,主要是让我们知道颜色如歌设置 代码:#!/bin/bash function bar(){ str='' i=0 j=0 arr=('|' '...

2017-07-06 15:11:53 327 0

转载 shell中的eval以及与 反引号``、$()的区别

本文转载自:shell中的eval shell 中的 eval 功能说明:重新运算求出参数的内容。语  法:eval [参数]补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。参  数:参数不限数目,彼此之间用分号分开。1.eval命令将会首先扫描命令行进行所有的替换,然后再...

2017-07-03 17:54:05 581 0

原创 poll服务器---多路连接之 poll

1.poll与select不同在于描述符存储方式不同和参数类型不同 结构体数组的管理:当每次有需要关心的描述符时,将其放入结构体中,每次有无效的描述符后,将其描述符置-1,下次poll函数会忽略它。当有新的描述符加入时,从头遍历结构体,将为-1的元素设为要关心的描述符事件状态。切记:当新的描述符加...

2017-07-01 19:12:57 183 0

原创 epoll服务器---I/O多路转接之epoll

1、基本知识  epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关心的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需...

2017-06-30 16:46:17 188 0

原创 select服务器---I/O多路连接之select

现如今,提高网络服务器的性能,提高I/O的性能,我们知道I/O系统其实做了两件事,一是等待数据就绪,二是数据的搬移;尤其是远距离网络传输“等”状态尤其明显,所以提高I/O性能本质是减少等的比重,其越趋近于0,效率就越高;I/O模型中提供一种多路复用模型,一次等待多个文件描述符,只要存在就绪文件,就...

2017-06-29 22:17:56 203 0

原创 socketpair和dup---高级I/O

一、我们在学习进程间通信的时候学习过匿名管道pipe,匿名管道的特点: 只能用于单向通信 只能用于有血缘关系的两个进程,通常是父子进程 生命周期随进程 面向字节流 具有同步机制 我们现在学习一种新的管道socketpair,可以用于双向通信,也是用于父子进程,代码实现与匿名管道类似#include...

2017-06-25 20:28:04 301 0

原创 udp套接字及应用层udp超时重传

编写udp服务器1.注意要点: udp是无连接,不稳定,面向数据报的一种传输层协议; 既然他不可靠为什么还要用呢?其一:当应用程序使用广播或多播时只能使用UDP协议; 其二:由于他是无连接的,所以速度快 如果一方的数据报丢失,那另一方将无限等待,解决办法是设置一个超时重传机制; 建立UDP套接口时...

2017-06-25 19:00:52 5561 0

原创 进程池与线程池---实现服务器

1.池的概念 由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。池是一组资源的集合,这组资源在服务器启动之初就完全被创建并初始化,这称为静态资源分配。当服务器进入正式运行阶段,即开始处理客户请求的时候...

2017-06-24 21:06:22 1079 0

原创 bind error : Cannot assign requested address,该如何处理

bind error : Cannot assign requested address 代码:#include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<stdlib....

2017-06-24 08:07:41 8701 1

原创 tcp_socket绑定(bind)失败---Address already is use原因

我们前面介绍了三种tcp_server编写多进程多线程服务器编写,在测试这三个servet我们遇到一个问题,就是当我们绑定一个端口号后,ctrl-z结束掉server服务器,此时再次绑定该端口号会出现这样的出错提示:显示端口号正在被使用,可是我们已经关闭了服务器了,为什么不能使用呢?但过一端时间之...

2017-06-24 07:39:58 14502 2

原创 多进程多线程服务器(tcp_server)编写

编写客户/服务器1.编写单进程客户/服务器(Version1) 代码清单: tcp_servet #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<stdlib...

2017-06-23 23:21:25 492 0

原创 TCP三次握手和四次挥手

TCP是面向来连接的协议,运输连接有三个阶段:建立连接(三次握手)、数据传送、释放连接(四次挥手);一、TCP的连接建立1.如图:建立链接(三次握手)具体步骤:(假设A是客户,B是服务器) A主动打开链接,B被动打开链接,此时两端的TCP处于CLOSED状态; B的TCP服务进程先创建传输控制块T...

2017-06-20 10:38:41 206 0

原创 URG和PSH区别以及TCP协议定时器

一、URG&PSH的区别 TCP的报头信息有六个控制位,说明本段文的性质;分别为紧急URG、确认ACK、推送ACK、复位RST、同步SYN、终止FIN;今天我们来主要来介绍介绍PSH和URG的区分;1.URG是什么? URG表示紧急指针,与紧急指针字段搭配使用,当URG = 1时,表示...

2017-06-20 08:23:14 288 0

原创 位图一

面试题:给40亿个不重复的无符号整数,没排过序。给定一个无符号整数,如何快速判断一个数是否在这40亿个数中 分析: 40亿个数,4 000 000 000相当于4G个数,每个数4个字节,总共16G 采用遍历的方法,运行内存为4G,数据不能全部加载到内存,所以这个方法不行; 采用哈希的方法,虽然...

2017-06-18 17:56:08 158 0

原创 传输层概述以及传输层端口

一、运输层协议概述两个主机进行通信实际上就是两个主机中的应用进程互相通信,应用进程之间的通信又称为端到端的通信。“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。运输层向高层用户屏蔽了下面网络核...

2017-06-14 22:33:24 6285 0

原创 传输层概述以及传输层端口

一、运输层协议概述两个主机进行通信实际上就是两个主机中的应用进程互相通信,应用进程之间的通信又称为端到端的通信。“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。运输层向高层用户屏蔽了下面网络核...

2017-06-14 22:29:02 306 0

原创 NAT技术与代理服务器

一、NAT技术 1.在了解NAT技术之前,我们首先来了解一下什么是专用互联网? 专用网互联网简称专用网,是由专用IP地址构成的互联网或本地网络;2.什么是专用IP地址? 由于IP类型IPv4提供的IP地址已经不够现如今网络主机的需求,为了缓解这用问题,我们在一个机构内部进行通信时,采用专用地...

2017-06-13 22:34:33 182 0

原创 ARP协议

1.什么是ARP协议ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议。某节点的IP地址的ARP请求被广播到网络上后,这个节点会收到确认其物理地址(MAC地址)的应答,这样的数据包才能被传送出去。RARP(逆向ARP)经常在无盘工作站...

2017-06-12 16:00:47 240 0

原创 CRC循环冗余检验算法

1.为什么要有CRC循环冗余检验算法 数据在网络的传输过程中,都是以二进制数据传输,即不是0,就是1;数据传输过程中,因为各种可能的原因导致数据0变为1,1变为0。为了保证传输数据的可靠性,在计算机网络传输时,必须采用各种差错检测措施; CRC是我们运用在数据链路层的差错检验算法;2.CRC循...

2017-06-12 14:38:18 1118 0

原创 守护进程Daemon---fork两次

1.什么是守护进程? 守护进程也叫精灵进程,是在后台运行的一种特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件; 在 linux系统启动时会有很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互,除守护进程外其他进程都是在用户登录或运行程序时创建,在系统...

2017-06-08 15:30:24 273 0

原创 linux下定时任务的方法crontab

crond是什么? 使用crond(cron监控程序)来定期运行一些任务比如备份日志、数据库、 把日志发送到自己邮箱等等操作都可以又定期运行程序来完成。 crond是个脚本每次Linux启动的时候都自动起到该脚本该脚本是 /etc/rc.d/init.d下面的每次系统启动的时候就自动...

2017-06-07 18:46:56 145 0

原创 gdb调试多进程和多线程

一、gdb调试多进程 多线程代码 2.默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on...

2017-06-07 10:22:33 339 0

原创 B树的创建

1.B树的概念一棵M阶的(M>2) 的平衡二叉树,是一棵平衡的M路平衡搜索树,可以是空树或者满足一下性质: 根节点至少有两个孩子; 原因:因为根节点至少有一个关键字,有两个指针域; 每个非根节点至少有M/2-1(上取整)个关键字,至多有M-1个关键字,并且以升序排列; 每个非根节点至少有M...

2017-06-01 20:27:46 3307 0

原创 约瑟夫环的普通解法及优化

约瑟夫环问题的普通解法很简单,就是不断遍历循环链表,删除节点,假如有n个人,等到第m个人报数时杀掉这个人,即删除这个节点,直到只剩下一个人。struct Node { Node(int data) :_data(data) ,_pNext(NULL) ...

2017-05-25 22:56:27 459 0

原创 汉罗塔问题(修改版)---递归和栈实现

汉罗塔问题是一个非常经典的算法,我们首先来研究一下修改的汉罗塔(简化步骤),在后面我们将来讲述经典的汉罗塔问题。题目: 修改后的汉罗塔的规则:现在限制不能从最左侧的塔直接移动到最右侧,必需要经过中间;同时从最右侧移动到最左测试,同样必需经过中间;要求移动N层塔时,打印最优移动1、用递归函数实现(...

2017-05-25 15:03:41 877 0

原创 二叉搜索树---红黑树节点插入

1.红黑树的概念:红黑树是一棵二叉搜索树,它在每个节点上增加一个存储位来表示节点的颜色,可以是red或black,通过对任何一条从根节点到叶子节点上的间单路径来约束,红黑树保证最长路径不超过最短路径的两倍,因而近视平衡。2.红黑树的性质 性质1,每个节点不是黑色就是红色 性质2,根节点是黑色的; ...

2017-05-24 22:38:38 201 0

原创 二叉搜索树---AVL树删除节点

前面我们写了AVL树的创建AVL树插入节点,即节点的插入,下面我们介绍AVL树节点的删除,与前面调整的 方法相同,在树不平衡时,对树进行调整,具体步骤如下:1. - 判断树是否为NULL,若为NULL,直接返回false; - 判断树是否只有一个节点,且该节点为要删除的节点,直接删除,_p...

2017-05-23 07:29:49 551 0

原创 队列的常见面试题总结

1.实现猫狗队列#include<string> #include<queue>//宠物类 class Pet { public: Pet(string type) :_type(type) {} string GetPetType()...

2017-05-22 15:30:31 486 0

原创 二叉树搜索树---AVL树插入节点

1.AVL树的概念: AVL树或则是空树,或是具有下列性质的二叉搜索树 它的左右子树都是AVL树; 左子树和右子树的高度之差简称(平衡因子)的绝对值不超过1; 2.AVL树的实现原理 与二叉搜索树的节点插入方法相同,具体步骤如下: 当树不平衡时,我们需要做出旋转调整,有四种调整...

2017-05-22 14:59:58 357 0

原创 栈的面试题总结

1.不用辅助空间实现栈的逆序(利用函数的递归) 例如栈中元素1 2 3 4,逆序后栈中元素为4 3 2 1int GetLastNumOfStack(stack<int>& s)// 得到栈顶的元素 { int result = s.top();//取栈顶元素 ...

2017-05-16 07:31:35 186 0

原创 Huffman树的创建

运用了小堆堆的基本操作#include<stdio.h> #include<iostream> using namespace std;#include"heap.cpp"//引用堆的创建文件template<class T> struct ...

2017-05-12 12:48:36 456 0

原创 线索化二叉树的创建及遍历

#include<stdio.h> #include<iostream> using namespace std;enum thread { LINK, THREAD, }; template<class T> struct BinaryTree...

2017-05-12 12:43:03 192 0

原创 堆的基本操作

堆的创建及插入删除堆顶元素等基本操作 用模板参数来调整大小堆 #include<stdio.h> #include<vector> #include<assert.h> #include<iostream> using namespace std; ...

2017-05-12 12:38:30 173 0

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