自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (3)
  • 收藏
  • 关注

原创 【shell脚本】对键盘输入数字运算

传入数字参数到脚本file,并计算出最大,最小,平均值。需要判断 传入的数字是否足够,否则输出警告信息。平均值保留两位小数。#!/bin/bashmax=$1min=$1sum=0if [ $# -le 0 ];then echo "input error"fia=($@)for i in ${a[@]}do if [ $max -lt $i ];then

2017-03-27 13:58:02 3376

原创 【shell脚本】如何用shell编写一个进度条

代码#!/bin/bashi=0str=""arr=("|" "/" "-" "\\")while [ $i -le 100 ]do let index=i%4 printf "[\e[31;42;1m%-100s\e[0m][%d%%][%c]\r" "$str" "$i" "${arr[${index}]}" sleep 0.1 let i++

2017-03-26 19:55:48 955

原创 【shell脚本】shell的符号

shell执行脚本1.方法一: chmod +x myshell.sh 2.方法二:/bin/bash myshell.sh 以第一种为例 本地变量本地变量的复制及查看 变量引用如果⼀个变量叫做VARNAME,用VARNAME可以表示它的值,在不引起歧义的情况下也可以用{VARNAME}可以表示它的值,在不引起歧义的情况下也可以 用VARNAME表示它的值。通过以下例子较这两种表示法的不

2017-03-25 20:55:59 662

原创 【计算机网络】I/O多路转接之epoll

什么是epoll epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll的相关系统调用

2017-03-25 19:57:18 586

原创 【计算机网络】I/O多路转接之poll

不同与select使用三个位图来表示三个fdset的方式,poll使用一个 pollfd的指针实现。 pollfd结构包含了要监视的event和发生的event,不再使用select“参数-值”传递的方式。同时,pollfd并没有最大数量限制(但是数量过大后性能也是会下降)。 和select函数一样poll返回后,需要轮询pollfd来获取就绪的描述符。 从上面看,select和poll都需

2017-03-18 16:55:27 585

原创 【算法】几种排序代码

#include<iostream>#include<cstdlib>using namespace std;int ThreeMid(int * arr,int left,int right){ int mid=left+((right-left)>>1); while (left<right) { if(arr[left]<arr[righ

2017-03-17 17:53:52 386

原创 【计算机网络】I/O多路转接之select

系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应FILE *结构的表示就是stdin、stdout、stde

2017-03-16 12:04:25 854

原创 【计算机网络】dup/dup2

对输入文件描述符进行重定向 dup#include<stdio.h>#include<unistd.h>#include<string.h>#include<stdlib.h>#include<fcntl.h>int main(){ int fd=open("./log",O_CREAT|O_RDWR,0644); if(fd<0) { perr

2017-03-15 20:06:36 899

原创 【面试题】剑指offer21

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,pop,push的时间复杂度都为O(1)#include<stack>#include<cassert>#include<iostream>using namespace std;template<typename T>class MyStack{public: MyStack()

2017-03-10 12:07:12 283

原创 【计算机网络】网络编程中为什么client不建议绑定

无连接的socket的客户端和服务端以及面向连接的socket的服务端通过调用bind函数来配置本地消息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。 有连接的socket客户端通过调用Connect函数在socket数据结构中保存本地和远端信息,无需调用bind(),因为这种情况下只需知道目的机器的IP地址,而客户通过哪个端口与服务

2017-03-10 10:34:49 495

原创 【计算机网络】端口号的分类

端口号的范围是从1~65535 端口的概念: 在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。 端口的分类: (1)公认端口(WellKnownPorts) 从0~1023,它们绑定于一些服务。通常这些

2017-03-10 10:07:48 748

原创 【面试题】剑指offer20

题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如: 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16 输出 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 代码#include<iostream>#include<cstdlib>using namespace std;void Pr

2017-03-09 20:51:32 226

原创 【面试题】剑指offer 19

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像 代码#include<iostream>#include<cstdlib>using namespace std;struct BinTreeNode{ int _value; BinTreeNode* _pLeft; BinTreeNode* _pRight; BinTreeNode(int x)

2017-03-09 19:12:52 252

原创 【面试题】剑指offer18

题目: 输入两颗二叉树A和B,判断B是不是A的子结构。#include<iostream>using namespace std;struct BinTreeNode { int _value; BinTreeNode* _pLeft; BinTreeNode* _pRight; BinTreeNode(int x) :_value(x)

2017-03-08 21:02:19 275

原创 【面试题】剑指offer 17

题目: 输入两个递增的链表,合并两个链表,并返回合并后的头结点#include<iostream>using namespace std;struct ListNode{ int _value; ListNode* pNext;};class MyList{public: MyList() :pHead(NULL) {} ~M

2017-03-07 17:32:16 340

原创 【面试题】剑指offer 16

题目: 定义一个链表的头结点,反向输出链表#include<iostream>using namespace std;struct ListNode{ int _value; ListNode* _pNext;};class List{public: List() :head(NULL) {} ~List() {

2017-03-07 16:43:31 323

原创 【面试题】剑指offer 15

题目: 输入一个链表,输出该链表的倒数第k个节点。#include<iostream>#include<cstdlib>using namespace std;struct ListNode{ ListNode* pNext; int _value;};class List{public: List() :pHead(NULL)

2017-03-06 20:03:22 313

原创 【计算机网络】TCP三次握手四次挥手

TCP三次握手建立连接第一次握手A 的TCP 向B 发出连接请求报文段,其首部中的同步位SYN = 1,并选择序号seq = x,表明传送数据时的第一个数据字节的序号是x。第二次握手B 的 TCP 收到连接请求报文段后,如同意,则发回确认。.B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x + 1,自己选择的序号 seq =

2017-03-06 18:08:50 1076 3

原创 【计算机网络】TCP报文首部中URG和PSH

URG: 紧急URG,当URG=1时,表明紧急指针字段有效。它告诉系统此报文中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消程序的运行。因此用户从键盘发出中断命令(Ctrl+C)。如果不使用紧急数据,那么这两个字符会被存储在接受TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才

2017-03-06 17:13:47 810

原创 【计算机网络】TCP报文首部中URG和PSH

URG: 紧急URG,当URG=1时,表明紧急指针字段有效。它告诉系统此报文中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消程序的运行。因此用户从键盘发出中断命令(Ctrl+C)。如果不使用紧急数据,那么这两个字符会被存储在接受TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才

2017-03-06 17:09:58 402

原创 【计算机网络】TCP报文首部中URG和PSH

URG: 紧急URG,当URG=1时,表明紧急指针字段有效。它告诉系统此报文中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消程序的运行。因此用户从键盘发出中断命令(Ctrl+C)。如果不使用紧急数据,那么这两个字符会被存储在接受TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才

2017-03-06 17:08:33 519

原创 【计算机网络】TCP超时重传时间的选择

由于TCP下层是互联网环境,发送的报文会经过一个高速率的局域网,也可能经过多个低速率的网络,并且每个IP报文所选择的路由器还可能不同,那么问题就来了。如果把超时重传的时间设置得太短,就会引起很多报文产生不必要的重传,但如果把超时重传的时间设的太长就会影响传输速率。 TCP采用的超时重传RTO RTO=RTTs+4xRTTD RTT为报文段的往返时间,RTTs是加权往返时间

2017-03-06 16:50:01 4822

原创 【面试题】剑指offer14

题目: 调整数组数据使奇数全部在偶数前面 解法一:void oddnumberfront1(int *arr,int length){ if (arr==NULL||length==0) { return; } int* first; int* last; first=arr; last=arr+length-1;

2017-03-06 16:16:24 400

原创 【计算机网络】代理服务器的分类

代理服务器: 代理服务器(Proxy Server)是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到防火墙的作用。代理服务器大多被用来连接INTERNET(国际互联网)和Local Area Network(局域网)。 分类: HTTP代理 www对于每一个上网的人都再熟悉不过了,www连接请求就是采用的http协议,所以我们在浏览网页,下载数据(也可采

2017-03-04 15:32:06 1371

原创 【计算机网络】CRC校验

CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 方法: 循环冗余检验的原理在数据链路层传送的帧中,广泛使用了循环冗余检验CRC 的检错技术。在发送端,先把数据划分为组(即:一帧)。

2017-03-04 15:21:19 6565 1

原创 【Linux】gdb下调试多线程

一、gdb的简单使用方法,在编译方式后加上-g选项,即在debug运行,然后可以调试生成的可运行文件,例如“`这是Makefile里的内容,操作语句如上 二、gdb下的断点的添加及断点的删除,以及其他操作 加断点的方法大致有一下几类 1、b 行号 在某一行添加断点 2、b 函数名,在某一个函数名处加断点 3、删除断点,先用info b 查看断点编号,在

2017-03-04 15:00:41 992 1

原创 【面试题】剑指offer 13

在O(1)时间删除链表节点listnode.h#include#includeusing namespace std;struct ListNode{ int _value; ListNode* pNext;};class List{public: List() :pHead(NULL) {} ~List() { delete pHead; pHead=

2017-03-03 16:35:41 271

原创 【面试题】剑指offer 12

输入n,打印1到最大的n位数//#include//#include//using namespace std;////void Print1ToMaxOfNDigits(int n)////{//// int num=1;//// int i=0;//// while (i++<n)//// num*=10;//// for(i=1;i<num;i++)//// {//

2017-03-03 16:32:04 400

原创 【面试题】剑指offer11

实现函数Power(double base,int exponent),求base的exponent次方

2017-03-02 17:49:18 311

原创 【面试题】剑指offer10

输入一个数字,输出这个数的二进制中1的个数#include#includeusing namespace std;//int numberof1(int n)//{// int count=0;// unsigned int flag=1;// while (flag)// {// if(n&flag)// count++;// flag=flag<<1;//

2017-03-02 17:44:24 222

原创 【面试题】剑指offer 9

输入n,输出斐波那契数列的第n个数的值f(n)=0 n=0        1 n=1         f(n-1)+f(n-2) n>1代码#include#include using namespace std;long long Fibonacci(unsigned int n){ if(n<=0) return 0; if(n==1) return 1

2017-03-02 17:41:40 246

原创 【面试题】剑指offer 8

统计数组中各个数字出现的次数#include using namespace std;void SortAge(int ages[],int length){ if (ages==NULL||length<=0) return; const int oldestage=99; int timesages[oldestage+1]={0}; for (int i=0;i<le

2017-03-01 19:48:00 187

原创 【面试题】剑指offer 7

两个栈实现一个队列,并实现头删和尾删首先分析下当只需要尾插入时,只需要将数插入stack1,当需要头删时,需要将stack1中的数全部push到stack2中,然后在对stack2进行pop即可代码Myqueue.h#include#includeusing namespace std;templateclass MyQueue{public: MyQue

2017-03-01 18:14:36 289

原创 【面试题】剑指offer 6

输入前序遍历和中序遍历结果,重建二叉树BinTree.h//#include//#include//#include//#include //using namespace std;//struct BinTreeNode{// int _value;// BinTreeNode* _left;// BinTreeNode* _right;//};//BinTreeNo

2017-03-01 17:13:52 224

原创 【面试题】剑指offer 5

输入一个链表的头结点,从尾到头打印链表#include#includeusing namespace std;class ListNode{public: ListNode(const int & x) :_value(x) ,_next(NULL) {} int _value; ListNode* _next;};class List{public: Lis

2017-03-01 17:09:55 235

原创 【面试题】剑指offer 4

实现一个函数将字符串中的空格替换为20%#include#include#includevoid myblank(char * str,int length){ if(str==NULL||length<=0) return; int orlength=0; //int orlength=0; int numblank=0; //int numblank=0; int

2017-03-01 17:07:06 338

原创 【面试题】剑指offer 3

运行下面代码,结果?#include#include//#includeint main(){ char str1[]="hello world"; char str2[]="hello world"; char* str3="hello world"; char* str4="hello world"; if(str1==str2) { printf("str1 an

2017-03-01 17:04:17 566

原创 【面试题】剑指offer 2

题目:在一个二维数组中,每一行从左往右,每一列从上到下都是递增的,给任意值在数组只能查找该数#include#include#includeint getsize(int data[]){ return sizeof(data);}bool Find(int* matrix,int rows,int cols,int num){ bool found=false; if(m

2017-03-01 16:54:55 321

原创 【面试题】剑指offer 1

赋值运算符函数#include#include#include#includeclass Mystring{public: Mystring() {} Mystring(char* pData) { if (pData==NULL) { pData=new char[1]; pData[0]='\0'; } else { int leng

2017-03-01 16:52:01 503 3

vim Winmanager插件

vim Winmanager插件

2016-12-30

vim tree插件

vim tree插件

2016-12-30

taglist插件

vim taglist插件

2016-12-30

空空如也

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

TA关注的人

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