5 Y-ANG

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 2w+

了解Gtest中的事件机制

引入事件机制 举例:我们使用gtest框架测试STL中的map这个数据结构时,我们假设只测find(),size()这两个函数,如果不使用事件机制,则测试的TEST()部分如下: 我们可以看到,在每一个TEST内部都创建了一个map结构,并进行了插入操作,这样就做了很多重复的事情。其实gtest提供了三种事件机制,就是提供一个机会,使得在测试之前/之后能够准备/清理一些数据。(联系一下C++里的构

2017-08-05 10:46:10

22题:栈的压入、弹出顺序

题目描述输入两个整数序列,第一个序列表示栈的压入序列,请判断第二个序列是否是栈的弹出序列。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。‘思路分析首先考虑这个问题肯定是需要一个辅助栈,方便后边讲思路,我们将压入序列称为pushV,弹出序列称为popV,按照pushV将

2017-06-29 12:28:20

进程间通信:消息队列&信号量&共享内存

进程间通信之管道,点击这里: http://blog.csdn.net/qq_33951180/article/details/68959819消息队列:消息队列是一种进程间发送二进制数据块的机制,每个数据块都有特定的类型,接受者进程可以有不同的类型值。信号量:共享内存:

2017-06-21 10:24:08

二叉树的镜像

题目描述完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树结点定义如下:struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};

2017-06-19 14:50:23

Shell---循环结构

Shell下的循环结构是类C的,同样也有for循环、while循环,此外,Shell也有until循环。for循环for循环的基本语法for variable in {list}do statement1 statement2 ...donefor循环的语法意思与C语言一样,即执行循环体的次数由list决定。list在这里是一个列表,可以是一系列的数字或字符串,元素之

2017-06-12 14:43:41

信号

信号的基本理解什么是信号 提到信号,大部分人的第一反应都是红绿灯,没错,这是日常生活中的一种信号,它给了人们提示,当各种颜色的灯亮起时我们应该做什么样的处理动作。不过我们今天说的信号时Linux下的信号(signal),我们回想一种场景,当我们在Linux下打开一个终端,假设现在正有一个进程在运行,它的工作就是不断循环输出“hello”,此时,当我们按下Ctrl-c时,这个进程就会被终止掉。在此

2017-06-07 20:09:39

多线程实现生产者与消费者模式

生产者-消费者模式的简介:在实际的软件开发过程中,我们将产生数据的模块称为生产者,处理数据的模块成为消费者。但仅有这两者还不够成为一个生产者-消费者模式,还需要有一个缓冲区(一段内存区域)作为中介,生产者产生的数据放入缓冲区,消费者从缓冲区读取数据并处理。(注:上述所说的模块是广义的,可以是类,函数,线程,进程等)我们可以将这二者之间的关系图表示出来:总结:我们用3-2-1的方法来简单描述一个生产者

2017-06-01 10:08:07

线程的同步与互斥:条件变量&信号量

条件变量与互斥锁一样,都是一种数据变量,这两者通常搭配起来使用。条件变量的作用:实现线程的同步与互斥:接口:

2017-05-31 21:40:45

线程的同步与互斥:互斥锁

什么是线程的同步与互斥?同步:假设现有线程A和线程B,线程A需要往缓冲区写数据,线程B需要从缓冲区读数据,但他们之间存在一种制约关系,即当线程A写的时候,B不能来拿数据;B在拿数据的时候A不能往缓冲区写,也就是说,只有当A写完数据(或B取走数据),B才能来读数据(或A才能往里写数据)。这种关系就是一种线程的同步关系。互斥:对于线程A和线程B来讲,在同一时刻,只允许一个线程对临界资源进行操作,即当

2017-05-29 11:13:07

重建二叉树

题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如图所示的二叉树并输出它的头结点。 分析及实现:思路分析 根据二叉树前序遍历的特点(根-左-右),每次读取的第一个值一定是根节点,这样我们可以在中序遍历的序列中找到

2017-05-28 10:24:26

旋转数组的最小数字

题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小数组。例如数组{3,4,5,1,2}是数组{1,2,3,4,5}的旋转数组,该数组的最小值为1。思路解析:O(N)的算法 这种算法的思想就是遍历这个数组,由于这个数组是两部分有序的数组,因此遍历这个数组时当后一个数字小于前一个数字时,则后一个(即较小)一定为整个数组中最

2017-05-25 15:51:19

cut & sort & uniq 工具合集

cut命令主要接受三个定位方法:-b , -c , -fsort工具的常用选项:-u,-r,-o,-n,-k,-t,-funiq命令常用选项:-d,-u,-c

2017-05-04 13:35:26

awk工具

awkawk是一种文本分析工具,相对于grep的查找,sed的编辑。awk和sed都可以处理文本,awk比sed的强大之处在于处理列也是比较细致的,它可以对行(记录)、列(域)进行分析。awk默认的行分隔符是换行,列分隔符是Tab或者连续的空格(列分隔符分开的每个部分称为一个域)。awk命令行的基本形式: awk option ‘script’ file1 file2 … awk option

2017-05-02 09:22:50

sed工具

sed的基本格式: sed option ‘command’ file1 file2 … sed option -f scriptfile file1 file2 …sed的命令格式:sed /pattern/action pattern即正则表达式,action即编辑动作 sed默认是以Basic模式进行编辑的,在使用下列五个字符的特殊意

2017-04-28 07:45:31

基于HTTP协议实现的小型web服务器

我们先了解一下这个项目最终能达到的一个目标,然后以这个来进行项目的分析: 1、实现最基本的HTTP/1.0版本的web服务器,客户端能够使用GET、POST方法请求资源 2、服务器将客户请求的资源以html页面的形似呈现,并能够进行差错处理(如:客户请求的资源不存在时,服务器能够返回一个404的页面) 3、服务器能进行简单的cgi运行。比如当客户在表单中输入数据后,服务器能够将运行结果返回个

2017-04-28 07:37:28

HTTP长连接和短连接

HTTP是工作在应用层的文本传输协议,它在底层的实现是基于TCP协议的,今天说的HTTP的长连接和短连接实质上是TCP的长连接和短连接。TCP的长连接和短连接:TCP的连接在客户端和服务器端之间进行数据传输时,首先需要在client和server之间建立一条通信链路,如果client和server之间不需要再传输数据或者不再需要这条链路时,就可以释放连接。

2017-04-04 16:54:44

匿名管道和命名管道

进程间通信(IPC)每个进程有各自不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到。所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间中拷贝到缓冲区,进程2再从缓冲区把数据读走。内核提供的这种机制就是进程间通信。 通信需要媒介,两个进程间通信的媒介就是内存。通信的原理就是让两个或多个进程能够看到同一块共同的资源,这块资源一般都是由内存提供。匿名管道(

2017-04-03 15:02:38

I/O多路复用之select

I/O多路复用:I/O多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备就绪后,它就通知该进程的应用程序,应用程序就可以马上完成响应的I/O操作,而不需要等待系统完成I/O操作,这样大大提高了效率。I/O多路复用实质上是实现了单线程来处理并发请求。 系统为我们提供了多个函数来实现多路复用输入/输出模型,例如:select,poll,epoll,这里我们先讲select模型。一、select

2017-03-30 16:39:49

socket编程之实现一个简单的TCP通信

一、理解socket1、socket即为套接字,在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一的标识网络通讯中的一个进程,“IP地址+TCP或UDP端口号”就为socket。 2、在TCP协议中,建立连接的两个进程(客户端和服务器)各自有一个socket来标识,则这两个socket组成的socket pair就唯一标识一个连接。 3、socket本身就有“插座”的意思,因此用来形容

2017-03-29 18:33:01

Shell 字符串截取方法

一、运算符截取 假设现在有字符串var=http://www.mmm.cn/123.html# 和 ## 号截取字符串(删左边留右边)# :${var#*string}解释:从左边开始,删除第一个string以及左边的所有字符。var为变量名,#表示截取的运算符。## :${var##*string}解释:从左边开始,删除最后一个string

2017-03-29 09:20:51

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!