自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面向对象原则小总结

1. 开放--封闭原则(Open--Close Principle){ 1.1  开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。1988年,勃兰特·梅耶(Bertrand Meyer)在他的著作《面向对象软件构造(Object Oriented Software Construction)》中提出了开

2015-10-18 09:52:36 316

原创 谈谈可读性在团队软件工程中的重要性--发表在公司黑板报的第二篇文章

尽管很多软件工程相关的书目、以及项目组平时的代码检视中都会提及代码可读的重要性,但在我们的实践中,代码可读依然没有得到足够的重视。可读性较差的代码会导致其读者(团队其它成员、后期维护的同事、新员工)花费更多的力气去理解代码。代码往往被写一遍,被读何止十遍?特别是长生命周期的项目,代码提交到代码库后,一位作者,几十位读者,如果每位都多花几分钟去理解代码,那么总体上效率的损失是可观的。 损失还

2015-06-11 07:55:16 467

原创 谈防御式编程---发表于公司黑板报的第一篇文章

最近一段时间,时常会出现BCC进程在业务过程中挂掉之后重启,或者干脆挂掉不重启的问题。每次问题定位之后,总是最简单的失误,绝大多数是指针没有进行空保护就使用,也有类声明了构造函数而未实现引起Fail的问题。被问题牵着走总是苦恼的,定位的过程也常常艰辛,有Core文件的帮助的话一般能比较快速的定位,没有Core文件时定位问题过程相当煎熬。与其艰难定位,不如在编程时考虑代码的防御性。举例来说,

2015-06-11 07:53:34 395

原创 有效的STL学习记录

10.25{ 1. 你不可能在不知道怎么写自己的函数对象的情况下有效地使用STL 2. 讨论STL而没有提及引用计数是几乎不可能的, 基于指针的容器的设计几乎总要导致引用计数 3. STL编程的四大金刚:容器、迭代器、算法、函数对象  }{ 1. 仔细选择你的容器 {  1.1 有哪些容器?  标准STL序列容器:vector、string、deque和li

2014-10-27 20:53:52 252

原创 Linux下的程序调试

Linux下的C、C++程序常常会因为内存访问错误等原因造成segment fault(段错误),此时如果系统core dump功能是打开的,那么将会有内存映像转储到硬盘上来,之后可以用gdb对core文件进行分析,还原系统发生段错误时刻的堆栈情况。这两天哥试着学习了下linux下的程序调试,虽然没有VS集成环境那样直观直接,但对于定位错误发生点还是很给力!记录一下学到的知识。1.

2014-10-25 20:25:01 257

原创 (五)Decorator模式学习

Decorator模式与适配器模式、包装器模式有点像。原有的抽象类AbsClassItf定义了某种接口ItfX。原有的具体类ConClass实现了这个接口。原有的接口ItfX和其派生的功能实现成员函数都有很好的概念一致性。但是有些特殊的场合、流程下,需要对ConClass的ItfX实现增加一些额外的功能。如果将这些额外的功能加入到ConClass的实现中,一是会使原函数变的臃肿,复杂,破坏

2014-10-25 20:19:28 330

原创 (四)模板方法学习

//模板方法---多个子类,对于某一种流程,处理方法只有细微的差别,此时,可以将不同对象之间相同的处理,集中到其基类中处理,//而有差别的地方,在子类中进行分别实现。//定义一个抽象基类,其public接口:首先---实现公共的处理,然后---调用由子类必须实现的虚函数,实现差异化的处理----//这里需要注意的是,要特别仔细的辨别算法中哪里部分是稳定的,不变的公共部分。否则一旦发现公

2014-10-25 20:18:12 254

原创 Linux学习记录(四)

1.1 function fun_name { commands } 或者 func_name() { commands } 两种方法定义函数  1.2 函数在使用前必须已经定义过,否则出错  1.3 函数重定义不会报错,但新定义取代旧定义  1.4 函数的返回值与脚本的执行状态类似,用"$?"来获取函数返回值。 用 return 语句返回值,return 返回的值 范围为0---25

2014-09-27 08:04:59 245

原创 Linux学习记录(二)

//基本脚本{ 1. expr 后面的计算式,算符前后 要有空格 ,不然会当字符串输出 2. 用expr做计算式不方便,更好的用var=$[1+2*3] 这样的方法,缺点是,只能用于整数。 3. 计算浮点数:用bc命令进入计算器,用quit命令退出, scale=4 设置小数点显示后4位。 4. bc可用于脚本之中,方法是用echo 将命令管道到bc中,命令必须用双引号,不能用

2014-09-27 08:03:40 270

原创 Linux学习记录(三)

1. if 和 then 要放在不同的行,同一行时,脚本运行出现语法错误。 2. 脚本中用到赋值时,=号前后不能有空格;但(()) 双圆括号中是个例外  3. $0表示程序名称,$1表示第一个参数,以此类推,多个参数用空格分隔;  3.1 如果参数本身带空格,用“”引号括起来  3.2 如果参数多于9个,要用${10}, ${11}来表示,以此类推  3.3 脚本中用$#表示输

2014-09-27 08:03:26 318

原创 Linux学习记录(一)

//Linux命令使用://1.基本命令1. 查看内存信息: cat /proc/meminfo2. 查看共享分页内存信息: ipcs -m3. Linux的运行级别:1~5 4. 查看当前Linux系统中运行的进程 :ps ax5. GNU coreutils: 处理文件的实用程序、管理进程的实用程序、操作字符的实用程序 6. 改变文件目录:cd desitina

2014-09-27 08:02:43 239

原创 (一)职责链模式学习

//职责链模式:一种将处理同一个请求的多个对象串连起来的设计模式。它使得请求只与多个对象中的一个交互,而不用让请求与多个对象都发生交互,从而避免了一个请求与多个对象的耦合。// 首先定义要处理的请求(可以将该请求封装于一个类中)// 然后定义抽象的处理该请求的类, 此类中有一个成员变量和一个“设置继任处理者”的方法,以及“处理请求”接口,处理请求接收“请求的类”为形参// 再定义几个具

2014-09-27 08:01:09 217

原创 (二)抽象工厂学习心得

去年买了GoF的设计模式的书,始终无法能够入门。 由于平时的编程以C语言为主,C++也只是用到了一些容器的便利性,没有真正的面向对象的思维方式,看这本设计模式的书时,始终无法理解其中的深意。今年买了本大话设计模式,照着书中的例子学习,再加上书本中对设计模式较为浅显的讲解----有的地方讲的并不准确,但却可以用例子让我最快的明白这个模式的大意。粗粗的看完大话,再看GOF的书,才觉得有

2014-09-27 07:59:41 472

原创 (三)Singleton模式

//单体模式保证程序中一个类只有一个唯一的实例。通过将类的构造函数私有化,使得类用户无法得到类的实例;同时类的内部产生一个实例,并保存,然后提供一个接口,返回这个唯一的实例#ifndef _SINGLETON_H_#define _SINGLETON_H_#include #include using std::string;using std::cout;using

2014-09-24 19:06:04 303

原创 初学MqSql在Linux中的使用

1. 基本语句:  bash> which mysql ----查看mysql运行的目录   mysql -u userName -pPassword ----登录到mysql  use database; ----连接到某个数据库  show databases;----当前已经创建的数据库  show tables; ----显示当前数据库中的表  create dat

2014-09-19 17:24:06 365

空空如也

空空如也

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

TA关注的人

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