自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 stack的模拟实现

Stack的模拟实现栈的特性:后进先出接口一般有:push(); pop();size();empty();top();#pragma once#include <assert.h>//const size_t N = 10;//#define NUM 20template<class T>class Stack{public: Stack()

2017-09-15 16:45:28 306

原创 布隆过滤器

11、布隆过滤器–>(时间复杂度为: O(1) )存在误判(不同的字符串可能转化为相同的整形)–>可以应用于任何数据类型(位图的扩展)实现布隆过滤器需要位图和哈希函数 布隆过滤器:1、数据存在(不一定准确)-->可能因为冲突导致(可通过把地址存入磁盘解决)2、数据不存在(一定准确)布隆过滤器的目的是为了节约空间,所以确定站位个数也不能过多,但当位数少时冲突率就会增高(悖论)布隆过滤器可以设

2017-08-24 20:23:55 276

原创 软连接 与 硬链接

1>首先什么是链接? 链接操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的 访问权限 ,以控制对信息的共享和安全性的问题。 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名。而且,即使我们删除这个链接,也不会破坏原来的目录。2>硬链接 硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引

2017-08-23 19:41:14 608

原创 单例模式之 --饿汉模式与懒汉模式

一、饿汉模式与懒汉模式http://mp.weixin.qq.com/s?__biz=MjM5MjI2MzkyNw==&mid=2652124208&idx=1&sn=3cd17cb1b3b6ad03d933b7625c8a7e8d&chksm=bd486fa88a3fe6be014711cd9cf28f1868f5db17047398df24b83801e9753c33af8f352f7980&m

2017-08-23 17:43:07 311

原创 位图的简单实现(bitMap)

一、位图的基本概念位图法(bitmap) 作用: 判断某个数据存在不存在 适用范围:大规模数据,数据状态又不多 什么是位图: http://baike.sogou.com/v72576997.htm?fromTitle=位图法所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。 例如,

2017-08-23 10:37:58 862

转载 memcopy与memmove的区别

Memcopy和memmove函数在linux下看了一下两个函数的源码。 两个函数都在头文件string.h中定义,函数原型为:void * __cdecl memcpy ( void * dst,const void * src,size_t count);void * __cdecl memmove ( void * dst,const void * src,size_t count);实现代

2017-08-17 17:46:58 207

原创 日常笔记整理

1、#pragma的作用是什么:设置编译器的2、p++ 是先自增p(++p),在进行解引用,他等价于 (p++) :因为后缀++和–操作符的优先级比前缀一目操作的优先级高, 若要自增p所指向的值:(*p)++;如果副作用的顺序无关紧要,也可以使用++*p;3、int**a[3][4] 该式表示的是指向指针的指针数组,每个元素存放的是二级指针,每个指针在32位执行系统下占4个字节的内

2017-08-13 21:00:47 189

原创 静态变量与全局变量的区别

全局变量与静态变量static 声明的变量在C语言中有两方面的特征:1.变量被放在程序的全局存储区中,这样在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。2.变量用static告知编译器,自己仅在变量的作用范围内可见。这一点是它与全局变量的区别。 Tips:A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;B.若全局变量仅由单

2017-08-12 18:38:18 5361 1

转载 Linux文件与目录的三种时间状态(mtime,atime,ctime)区别

mtime(modify time):最后一次修改文件或目录的时间ctime(change time) :最后一次改变文件或目录(改变的是原数据即:属性)的时间 如:记录该文件的inode节点被修改的时间。touch命令除了-d和-t选项外都会改变该时间。而且chmod,chown等命令也能改变该值。atime(access time)::最后一次访问文件或目录的时间 对于文件: 当修改m

2017-08-12 16:56:36 584

原创 字符串替换 eg: str1="123%s456%s" str2={'a','b','c','d'}(将str1中的%s替换成str2中的字符)替换结果返回为:123a456bcd

//字符串替换 //eg: str1=”123%s456%s” str2={‘a’,’b’,’c’,’d’}(将str1中的%s替换成str2中的字符)替换结果返回为:123a456bcd代码块#pragma once#include<iostream>using namespace std;#include<assert.h>#include<string>void ReplaceC

2017-08-11 18:43:20 824

原创 将N个字符的数组,循环右移K位。时间复杂度O(N)。

将N个字符的数组,循环右移K位。时间复杂度O(N) eg:str[]=”abcde123”,右移3位 1、旋转abcde->edcba 2、旋转123->321 3、整体旋转edcba321->123abcde代码块实现void Reverse(char* str, int left,int right){ while (left < right) {

2017-08-11 09:51:20 1196

原创 由前序遍历和中序遍历重构二叉树

由前序遍历和中序遍历重建二叉树前序序列(根-左-右):1 2 3 4 5 6中序序列(左-根-右):3 2 4 1 6 51、由前序遍历可知根节点为第一个元素1,在中序遍历序列中找到1对应位置,则1的左边就是左子树3 2 4,右边就是右子树6 5; 2、在找到前序遍历序列中从第二个位置开始往后找相同数目的节点为左子树2 3 4,剩余的就是右子树序列6 5; 3、根据前序遍历规则可知,左子树序

2017-07-31 23:42:20 271

转载 C语言中位操作用法

一、前言在对单处机进行编程的过程中,对位的操作是经常遇到的。C51对位的操控能力是非常强大的。从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点。这也是在各个领域中都可以看到C的重要原因。在这一节中将详细讲解C51中的位操作及其应用。二、位运算符C提供了几种位操作符,如下表所示:三、位操作运算 1.“按位与”运算符(&) 参加运算的两个数据,按二进位进行“与”运算。

2017-07-30 22:08:05 1289

转载 让C程序更有效的十种方法

任何代码的美丽不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存)。设计的代码比实际执行更难 。因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中。本文向你介绍规范你的C代码的10种方法。1.避免不必要的函数调用考虑下面的2个函数:void str_print( char *str ) { int i; for ( i =

2017-07-30 21:57:16 135

转载 C语言测试题注意事项

int x=35; char str[10]; //问:strlen(str)和sizeof(str)的值分别是多少? // strlen(str) 值不确定,strlen根据’/0’确定字符串是否结束。 // sizeof(str)=10 sizeof一个数组为数组长度 strcpy(str,”www.it315.org”/共13个字母/); //问:此时x和strlen(str)

2017-07-30 21:42:43 396

转载 BSS段、数据段、代码段、堆与栈

BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment)通常是指用来存放程序

2017-07-30 21:37:25 146

原创 C语言中使用静态函数的好处

静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。C语言中static

2017-07-30 18:03:25 2332

原创 元素出栈、入栈顺序的合法性

元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。这道题目考察的就是栈的先进后出(FILO),当第一个值压入栈后,它就会比它后压入的值晚出栈,好比1.2.3.4.5是入栈序列,4.5.3.2.1是出栈序列,为什么说他是正确的呢?因为当4出栈时,栈内已经压入1.2.3

2017-07-23 20:46:10 291

原创 正则表达式

一、正则表达式-教程正则表达式(Regular Expression)是一种文本模式,包括普通字符(eg:a/A-z/Z,0-9)和特殊字符(称为“元字符”) 1. 正则表达式使用单个字符串来描述、匹配一系列某个句法规则的字符串。 2. 正则表达式是繁琐的,但是是他又很强大,学会之后很大程度上提高了你的效率。 3. 许多程序的设计都支持正则表达式(eg:C语言 ,C++,HTML等等)实例二、

2017-07-03 22:29:29 156

转载 Linux中shell文件操作大全

1.创建文件夹#!/bin/shmkdir -m 777 "%%1"2.创建文件#!/bin/shtouch "%%1"3.删除文件#!/bin/shrm -if "%%1"4.删除文件夹#!/bin/shrm -rf "%%1"5.删除一个目录下所有的文件夹#!/bin/bashdirec="%%1" #$(pwd)fo

2017-06-30 16:54:41 164

原创 Linux 下用脚shell脚本实现进度条的编写

一、进度条实现的代码块 1 #!/bin/bash 2 3 i=0 4 bar='' 5 lable=('|' '/' '-' '\\') 6 index=0 7 while [ $i -le 100 ] 8 do 9 printf "[%-100s][%d%%][%c] \r" "$bar" "$i" "${lable[$index]}"

2017-06-30 16:39:24 250

原创 Linux 下的 eval

一、eval command-line其中command-line:表示在终端上输入的一条普通的命令行。然而当在他的前面加上 eval 时,eval会对后面的comLine进行两遍扫描,如果在第一遍扫描后comLine是一个普通命令,则执行此命令,如果comdLine中含有变量的间接引用,则需保证间接引用的语义如://eg1:shell脚本pipe="|"eval ls -al $pipe w

2017-06-27 17:10:35 351

原创 Linux脚本下倒引号(`)与$()

一、倒引号(`)在Linux的作用倒引号(`)在Linux中就是将倒引号内的Linux命令先执行,然后将执行结果赋予变量。二、$()的作用$()和 ` `:在 bash shell 中,$( ) 与` ` (倒引号) 都是用来做命令替换用(commandsubstitution)的。例如 version=$(uname -r)和version=uname -r都可以是version得到内核的版本

2017-06-26 22:56:29 1185

原创 TCP服务器的单进程实现

一、tcp_server(TCP服务器)//tcp_server.c代码 1 #include<stdio.h> 2 #include<sys/types.h> 3 #include<sys/socket.h> 4 #include<string.h> 5 #inc

2017-06-25 16:39:45 523

转载 TCP/IP协议

TCP协议[传输控制协议]开放分类:互联网通信技术 TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族中,TCP层是位于IP层之上,应用层之下的中间层。

2017-06-25 12:44:48 367

原创 进程间通信之--命名管道

命名管道(FIFO)1、 什么是命名管道?命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和之前所讲的没有名字的管道(匿名管道)类似。 2 、创建命名管道我们可以使用两下函数之一来创建一个命名管道,他们的原型如下:#include <sys/types.h> #include <sys/stat.h> int mkfifo(const c

2017-06-24 18:11:36 138

原创 进程间通信之--匿名管道

一、为什么进程间通信需要管道两个进程之间的通信,每个进程各有不同的地址空间,每个地址空间的数据信息是独立的,任何一个进程的全局变量在另一个进程中都看不到。例如:父进程中有一个变量 a = 0;在子进程中改变 a 的值是不会影响在父进程中的 a 的值,因为虽然子进程所有的数据信息都是拷贝(写时拷贝)自父进程,两个进程有各自不同的地址空间。 eg:代码验证: //mypipe.c 1 #includ

2017-06-24 17:58:29 188

原创 常见路由表生成算法调研

一、相关概念路由:(名词)数据包从源地址到目的地址所需要经过的路径,由一系列节点组成。路由(动词)某个路由节点为数据报选择投递方向的选路过程。 路由节点:一个具有路由功能的主机或者路由器,维护一张路由表,通过查询路由表来决定向那个节点发送数据包。路由表:由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接收和发送,其中最后一个是缺省路由条目。 路由条目:路由表中的每一行,每个条目主要

2017-06-22 22:02:20 237

原创 I/O多路转接之--select

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

2017-06-22 20:02:15 261

原创 dup/dup2/dup3(输入文件描述符重定向)

一、dup 系列函数的功能对输入文件描述符重定向。 dup参数越多,功能越齐全,要求也越细。二、dup的基本结构 三、dup的代码实现Makefile文件: 1 dup : dup.c 2 gcc -o $@ $^ 3 .PHONY:clea

2017-06-21 21:51:34 1088

原创 socketpair(双向通信)--高级IO

一、五种IO模型1、 阻塞I/O(eg:钓鱼者(王一)只钓鱼,不和任何人说话,也不干任何其他的事)2、非阻塞I/O (eg:钓鱼者(王二)一边钓鱼,一边问王一到底钓了多少鱼,但是王一并没有回答他,但他还是会一边钓他的鱼一边重复的问王一)3、 信号驱动I/O(SIGIO)(eg:钓鱼者(王三)他在自己的鱼竿上绑了一个铃铛(相当于一个信号),然后去旁边看手机去了,当铃铛响后,它会把鱼钓上来)4、 I/O

2017-06-21 17:55:26 551

原创 TCP的三次握手&&四次挥手

TCP段格式: TCP((Transmission Control Protocol)传输控制协议,是一个面向连接的协议。在运用此协议进行数据传输前都会进行连接的建立工作(三次握手);当数据传输完毕,连接的双方都会通知对方要释放此连接(四次挥手)。认识TCP标志位tcp标志位有6种标示:SYN(synchronous建立联机)ACK(acknowledgement 确认)PSH(push传送

2017-06-19 23:27:37 127

原创 TCP的四种定时器

TCP的四种定时器TCP在建立连接后会启动四个定时器:重传计时器:Retransmission Timer 坚持计时器:Persistent Timer 保活计时器:Keeplive Timer 时间等待计时器:Time_Wait Timer1、重传计时器为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传计时器,可能发生两种情况

2017-06-19 21:51:14 446

原创 TCP首部的URG和PSH

1、URG推送位紧急数据的起始点=序号; 紧急数据的终止点=序号+紧急指针;(综上,(URG)紧急指针就是记录紧急数据的字节数,紧急指针永远为正数)1)在紧急数据后面的数据为普通数据,需要按序缓存 2)窗口为0也可以发送紧急数据 3)紧急数据都处理完成后,tcp就告诉进程恢复到正常操作 例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消程序的运行。因此用户从键

2017-06-19 17:43:44 193

原创 端口号

一、常用端口及其分类电脑在Internet上相互通信需要使用TCP/IP协议,根据TCP/IP协议规定,电脑有256×256(65536)个端口,这些端口可分为TCP端口和UDP端口两种。如果按照端口号划分,它们又可以分为以下两大类: 1. 统保留端口(从0到1023) 这些端口不允许你使用,它们都有确切的定义,对应着因特网上常见的一些服务,每一个打开的此类端口,都代表一个系统服务,例如80端口

2017-06-19 17:18:43 362

原创 arp协议与rarp协议

说起arp,那么什么是arp呢?arp协议是什么呢?以及如果编写arp脚本抓取对应主机mac地址?这都是我以下需要讲的:1.什么是ARP协议ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。 但这个目标

2017-06-19 16:56:56 2097

原创 CRC校验

这个词语在操作系统&&组成原理一、CRC基本认识1、CRC的概念:循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码10

2017-06-18 20:55:25 200

原创 NAT技术与代理服务器调研

一、首先看看什么是NAT技术以及什么时候会涉及到它?1、所谓NAT技术就是网络地址转换。 2、那么它用在什么地方呢? 在专用网内部的一些主机本来已经分配到了本地IP地址,但是现在又想和因特网上的主机通信。那么应当采用什么措施呢? 最简单的办法就是设法再申请一些全球IP地址,但这在很多情况下是行不同的,因为全球的IPv4的地址已经所剩不多了,目前使用最多的方法就是采用网络地址转换。但是这种

2017-06-18 20:28:01 194

原创 进程组、作业、会话

一、进程组二、作业三、会话四、进程组与作业的区别如果作业内部某个进程有创建了子进程,则该子进程属于进程组,不属于作业。父进程退出作业也退出五、相关命令ps axj | grep -E ‘test|sleep’//显示会话/作业型如: [1] PID //1代表作业号 PID:是最后一个进程号jobs :查看作业fg 4 或%4: 把4号作业提到前台bg 2 :使2号作业在后台运行c

2017-06-14 17:44:06 136

原创 守护进程的模拟实现(daemon)

一、什么是守护进程守护进程也称为精灵进程(Daemon),是运行在后台的一种特殊进程。他独立与控制终端并且周期性的执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的 比如:Internet服务器 inetd,Web服务器httpd等同时守护进程完成许多系统任务。比如:作业规划进程crond等。 Linux系统启动时会启动很多系统服务进

2017-06-14 17:16:18 376

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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