- 博客(16)
- 资源 (7)
- 收藏
- 关注
原创 Linux故障处理最佳实践
引言业务中断了!老板咆哮,主管抓狂,而你就是那个要去处理故障、恢复业务的不幸的人。你独自一人在阴暗的隔间里。北边是老板的办公室,西边是Team Leader的办公室,南面是茶水间,在那你能泡上一杯热咖啡。问题没有一点进展,你郁闷地盯着显示器。这时,电话再次响起,你不用接听也已知道又是一通抱怨用户连接不上服务器的电话,因为就在半小时内,已经有四通电话催问你进展了。
2012-03-11 17:44:35
786
原创 自助Linux之问题诊断工具strace
引言“Oops,系统挂死了..."“Oops,程序崩溃了..."“Oops,命令执行报错..." 对于维护人员来说,这样的悲剧每天都在上演。理想情况下,系统或应用程序的错误日志提供了足够全面的信息,通过查看相关日志,维护人员就能很快地定位出问题发生的原因。但现实情况,许多错误日志打印模凌两可,更多地描述了出错时的现象(比如"could not open fi
2012-03-11 17:41:14
620
原创 回顾2011——一个程序员工作半年后的自白
2011年就要过去了,这一年,我从学校毕业,走上工作岗位,成为了一名程序员。在w公司工作的半年时间里,参与过项目开发,经历了岗位调动(由开发转为维护)。经过这段时间的工作,逐渐地对w公司开发人员和维护人员的工作和生活状况有了认识,相比刚走出校园的自己,心态也发生了一些变化。在此记录下2011年我工作后经历的点滴,与大家分享。 开发:狂奔的蜗牛进入w公司后,第一个参与
2012-01-10 23:18:03
997
原创 No!No!No! It's not fashion!
还记得搞怪的hold住姐Miss Lin么,对于人们常规的行为,Miss Lin会挑起夸张的眉毛说:"Oh my God, it's not fashion!"。如果程序员圈子里有位Miss Lin,对于一些功能的实现,她会认为哪些编码实现方法是not fashion的,哪些是fashion的呢?下面示例中,循规蹈矩先生编码但求功能实现,喜好使用常规方法,hold住姐实现功能的同时,不忘fas
2011-11-10 22:55:56
773
原创 Google C++单元测试框架(Gtest)系列教程之六——FAQ节选
这一节,我们来看Gtest的FAQ(Frequently-Asked Questions)。为什么测试用例和测试实例命名中不应包含下划线在C++中,对于以下情况,相应的标识可能会被编译器或标准库使用:以下划线开始并紧接一个大写字母的标识包含连续两个下划线的标识为避免标识符冲突,用户代码中不应自定义以上两种情况的标识。使用TEST()或TEST_F()时,滥用下划线,将有可能
2011-11-10 22:51:59
586
原创 Google C++单元测试框架(Gtest)系列教程之五——再论测试固件
引言在《Google C++单元测试框架(Gtest)系列教程之三——测试固件(Test fixture)》中,介绍了如何使用测试固件为测试实例(Tests)进行数据配置和初始化。除了数据初始化方法,Gtest还提供了测试实例间共享数据的方法。同属一个测试用例的测试实例间共享数据为实现测试实例间的独立性,Gtest提供了为每个测试实例新生成一个测试固件对象的方法,通过“独享”测
2011-11-10 22:50:30
723
原创 Google C++单元测试框架(Gtest)系列教程之四——参数化
引言在上一篇文章中,我们学习了如何使用Gtest的测试固件(Test fixture)完成测试代码和测试数据的复用,这一节我们来学习如何使用Gtest值参数化的方法,简化函数测试;使用类型参数化的方法,简化对模板类的测试。值参数化假设我们要对以下函数进行测试:
2011-10-08 23:44:01
903
原创 Google C++单元测试框架(Gtest)系列教程之三——测试固件(Test fixture)
引言在《Google C++单元测试框架(Gtest)系列教程之二——断言、函数测试》中,我们了解了断言语句,以及如何运用TEST()进行函数测试,在TEST()的使用中,我们接触了一个测试用例包含多个测试实例的组织方式。多个测试实例可能需要进行相识的数据配置和初始化操作,为
2011-10-08 23:41:23
732
原创 Google C++单元测试框架(Gtest)系列教程之二——断言、函数测试
引言在《Google C++单元测试框架(Gtest)系列教程之一——入门》中,介绍了如何编译测试代码、生成可执行文件,下面我们来看Gtest提供了哪些语句和框架来方便我们编写单元测试代码。断言1.断言类型断言即判断一个条件是否为真的语句,它是构成Gtes
2011-10-08 23:38:54
1002
原创 Google C++单元测试框架(Gtest)系列教程之一——入门
引言本文将先介绍单元测试的相关概念,然后引入Google的开源C++单元测试框架Gtest,最后通过编译、运行Gtest自带的一个测试样例,介绍如何在Unix/Linux下使用Gtest。单元测试说到单元测试,大家应该不会陌生。作为软件开发过程中最低级别的测试
2011-10-02 19:25:34
1454
原创 代码度量工具——SourceMonitor的学习和使用
引言我们提倡编写功能单一、结构清晰、接口简单的函数,因为过于复杂的函数会给我们带来很多问题:加深其他开发人员理解代码的难度;不方便测试人员对其编写测试用例;容易隐藏错误;出现问题难以定位……怎样的函数算是复杂的函数?哪些代码散发着“臭味”?除了依靠经验丰富的程序员的敏锐嗅觉,
2011-09-18 10:08:11
2657
原创 我为什么写博客
为什么写博客?如果你也是一名博主,阅读下文前不妨再思考下这个问题。下文翻译自Gabriel Weinberg的博文《Why I blog》,部分段落为了更通顺地表达,采用了意译的方式。----------------------------------------------
2011-09-11 17:46:48
784
原创 代码静态分析工具——splint的学习与使用
引言最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便。PC-Lint是一款针对C/C++语言、windows平台的静态分析工具,FlexeLint是针对其他平台的PC-Lint版本。由于PC-Lint/FlexeLint是商业的程序分析工具,不便于大家对其进行学习和使用,因而下面我将介绍一个针对C语言的开源程序静态分析工具——splint。静态程序分
2011-09-08 20:10:02
1120
原创 内存池的实现(2)
<!--h2 {margin-bottom:0.08in}h2.cjk {font-family:"Droid Sans Fallback"}h2.ctl {font-family:"Lohit Hindi"}h3 {margin-bottom:0
2011-08-25 23:47:46
766
原创 内存池的实现(1)
引言C/C++下内存管理是让几乎每一个程序员头疼的问题,分配足够的内存、追踪内存的分配、在不需要的时候释放内存——这个任务相当复杂。而直接使用系统调用malloc/free、new/delete进行内存分配和释放,有以下弊端:1.调用malloc/new,系统需要根据“最
2011-08-21 03:33:39
618
原创 函数库学习入门指引
在学习某一函数库的时候,我们经常做的第一件事,就是把该函数库的源码下载回来进行编译和安装(一般是这三步:./configure -> make -> make install),然后写一些调用库函数的小用例,看其能否正常运行以及运行后的效果。完成库函数安装,当我们满心期待地使用G
2011-08-09 23:29:07
560
(新)内存池实现方案一
2011-12-01
apr(Apache Portable Runtime)
2011-08-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人