- 博客(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
原创 【面试题】剑指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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人