又一次新的开始

又一次新的开始

 

忙忙碌碌一周过去了,虽然辛苦,但觉得的确收获很多,从一个新的角度审视自己,从一个新的起点眺望未来。

首先总结一下这一周培训的收获,主要是在程序设计、程序调试以及服务器的设计。

1.       UML

UML 主要包括九类图:

1 )类图, class diagram

2 )对象图, object diagram

3 )用例图, use case diagram ,需求分析用

4 )状态图, state diagram

5 )顺序图, sequence diagram ,类似协作图,更偏向程序员视角

6 )活动图, activity diagram ,类似状态图,更强调操作

7 )协作图, communication/collaboration diagram

8 )构件图, component diagram

9 )部署图, deployment diagram ,示意构件图中各个模块的具体部署方式

之所以提供这么多图,主要有两方面原因:

1 )提供多个视角观察系统,能够更全面理解系统

2 )便于不同风险承担人沟通

 

印象中 UML 真的是高高在上,令人望而生畏。其实应该从印象中去除它那金色的外衣,认真的去面对,即使短期内不能面面精通,也可以在实际开发中合理利用那些对设计有帮助的图,慢慢提高自己。

 

2.       多态

定义:同样的消息被不同的类型对象接收,导致不同的行为。消息指对类成员的调用,行为即具体实现。

形式:

(1)       重载多态,普通函数和类成员函数。

(2)       包含多态,函数覆盖带来的,不同类中的同名函数行为不同,通过虚函数实现。

(3)       强制多态,如 fVal = 1 + 20

(4)       参数多态,与模板相关,对模板参数,必须赋予实际类型才可以实例化。

其中,( 1 )( 3 )( 4 )是编译时多态,( 2 )是运行时多态。

 

3.       复用

(1)       软件体系结构复用      高层复用

(2)       设计模式               底层复用

(3)       泛型设计              算法复用

(4)       C 运行时复用          代码复用

 

4.       泛型设计、模板与 STL 关系

(1)       泛型设计是将算法与数据结构分离的一种设计理念,可以实现算法复用,提高开发效率。

(2)       模板是 C++ 编程中实现泛型设计的工具

(3)       STL 是利用模板实现泛型设计的一个实例

 

5.       内存泄露的检测与解决

分析内存分配点的回收情况,可以帮助检测内存泄露。

   // 头文件

#define _CRTDBG_MAP_ALLOC

#include

#include

 

// 检测是否存在内存泄露

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

 

// 设计在某个内存分配点分配时中断,其实是设置 _crtBreakAlloc 的值

_CrtSetBreakAlloc(size_t pos)

 

// 指定在调用处中断

_CrtDbgBreak()

 

6.       利用 map 文件确定崩溃位置

1 VC6.0 map 文件的生成设置:

C++ -> /Zd

Link -> generate map /:mapinfo: lines

2 )根据错误位置信息 abcd map 文件确定崩溃位置(精确)

       a )找到导致崩溃的文件:找到地址比 0x0400abcd 小且最接近 0x0400abcd 函数

b x = 0x0400abcd –0x04001000 ,根据 x 去文件处找到比 x 小且最接近 x 的值对映的行号,这就是崩溃的确切位置。

     还存在许多其他定位方法,如根据 pdb 文件或者利用 windbg

 

7.       服务器框架设计

主要是先分层,在每个层次划分若干模块,模块间利用 Adaptor 削弱依赖。

 

培训过程中发现自己对知识的掌握还不够深入系统,对一些很有帮助的技巧知之甚少,以后在学习过程中应该重视与同事的交流,不只以应用为目的,还应该努力理解核心的概念及其思想!

另外,还应该及时总结学习心得。这里需要改进的就是资料的管理工作,尽量较少重复的无意义的功夫。

 

你可能感兴趣的:(格物致知)