载入中,请稍候……

架构模式与架构模式类型

Admin 于 2008-09-30 05:06:36 发表设计

架构模式
一、分层架构模式
按照抽象层次的高低划分,是系统纵向划分,每个层次纯粹为逻辑概念,与物理无关;该模式主要好处有:
    1、每个层次可以独立进行变化,而互不影响;
    2、容易在不同层次接纳新技术与变化;

二、Facade架构模式
外部与一个子系统的通讯通过统一的门面进行,降低外部系统对内部实现的依赖性

三、Mediator架构模式
包装一系列对象(系统)相互作用的方式,使得他们彼此不必互相了解,达到松耦合

架构模式类型
一、 From Mud to Structure型
帮助架构师将系统合理划分,避免形成一个对象海洋(A sea of objects)。包括Layers(分层)模式、Blackboard(黑板)模式、Pipes/Filters(管道/过滤器)模式等。

二、分布系统(Distributed Systems)型
为分布式系统提供完整的架构设计,包括像Broker(中介)模式等

三、人机互动(Interactive Systems)型
支持包含有人机互动介面的系统的架构设计,例子包括MVC(Model-View-Controller)模式、PAC(Presentation-Abstraction-Control)模式等

四、Adaptable Systems型
支持应用系统适应技术的变化、软件功能需求的变化。如Reflection(反射)模式、Microkernel(微核)模式等

 

被阅640次, 0票 发表评论

VC常用小知识[2]

Admin 于 2008-09-30 02:26:18 发表C/C++

被阅504次, 0票 发表评论

在VC中进行Unicode开发

Admin 于 2008-09-30 02:22:54 发表C/C++

1. 添加 UNICODE 和 _UNICODE 预处理定义
位置:Project Settings -> C/C++ -> Preprocessor definitions
添加了这两个定义后,MFC的一些内置类型如 TCHAR、CString 都将转为支持宽字符类型(wchar_t)
2. 使用宽字符相关类型,如:char -> TCHAR、char * -> LPTSTR、const char * -> LPCTSTR
3. 对字符串常量使用 _T() 宏
4. 替换C库中的中字符串操作函数,如 strlen -> _tcslen、strcmp -> _tcscmp 等,类似的还有C库中字符串与数字的转换函数,如 atoi -> _ttoi、itoa -> _itot 等。
5. 将 Project Settings -> Link -> Output -> Entry Point 设为 wWinMainCRTSTartup,否则会有如下错误:msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
6. C++标准库中的string,有对应的宽字符版本wstring,两者均为basic_string的特化版本,可在StdAfx.h中添加:

  1. #ifdef _UNICODE 
  2. #define tstring wstring 
  3. #else 
  4. #define tstring string 
  5. #endif 

然后在代码中使用 tstring 即可,类似的还有 fstream/wfstream、ofstream/wofstream 等
7. 宽字符版本的英文字符仍可直接与整型值进行比较,如:
CString s = _T("ABC");
ASSERT(s[0] == 'A');
8. 对于仍需使用ANSI字符串的地方,如第三方类库的接口,仍可继续使用;如需进行Unicode字符串和ANSI字符串的互转换,可使用 MultiByteToWideChar 和 WideCharToMultiByte

被阅472次, 0票Unicode 发表评论

最实用的管理小技巧:一次只说一件事

Admin 于 2008-09-29 03:56:39 发表团队

亲身体会:最实用的管理小技巧,一次只说一件事
有很长一段时间,我常为团队的「笨」感到困扰,我交代的事,常常不能如期完成;许多的事,我经常一讲再讲,但还是有人会犯同样的错,到最后我不得不抓着他们的手,一步一步的追踪,才能勉强完成,我甚至自怨自艾,怎么会找到一群「笨」人呢?

直到有一次,我遇到一个知名企业的高级主管,谈起他的老板怎么要求他们。
他说:他的老板意志非常坚定,想要做的事一定要做到,但他有一个好处,是「一次只要求一件事」,想做产品时,只谈产品,反复谈,反复要求,方向明确,一直要确定大家都知道怎么做,并能如期,而且按照他的要求完成时,他才会放手。然后再要求下一件事,因此他们的公司能完全按照老板的进度,一步步的完成公司的目标。

听完这些话,我宛如当头棒喝!原来不是我的团队「笨」,而是我不会当老板、不会训练、不会要求,再加上心浮气躁,急切的想完成所有的事,经常同时交代了太多 的事,设定了太多的目标,凡事匆忙,以至于所有的人,随着我复杂的指令团团转,最后一件事也没做好,我竟然无知的认为自己的团队「笨」!

我开始尝试「一次只说一件事,一次只要求一件事」,刚开始,我难免还是急切的把两、三件事情,归纳成一件事,以加快进度,但效果不佳,最后我不得不耐住性子的再拆解成更细、更单纯的「一件事」,效果就变好了,团队慢,但跟得上我的脚步,我的要求也逐渐能贯彻!

「一次只说一件事」,用在训练人时,效果尤其显著;当目标明确、流程简单时,就算是新人,也往往很容易完成你的要求。我发觉每一个人学习的过程,通常处在高度的紧张状况,他们一次完成的可能性极低,因此一次只做一件事,只做一件简单的事,是极重要的训练方法。

而且在每一次他们完成一件事时,要给予正面、明确的肯定,更是所有工作者最重要的激励要素,当他们可以一件件完成工作,一步步学习各种技巧,组织团队的默契也慢慢养成。
 
这其中只有一件事要克服,那就是老板的个性及限期完成工作的压力。我就是那个「急惊风」的老板,说风就是雨,一切以速度取胜,我难以忍受「慢慢来」的节奏,但是后来我终于认知,如果没有训练有素、鱼水和谐的团队,所有的「急」,都只会变成灾难。因此在训练团队、训练新人时,我不断的告诉我自己:「一次只说一件事」,不能急,慢慢来。

至于当主管面临限期完成压力时,而你的团队又不够成熟,该怎么办?结论还是一样,你不能让不成熟的人负担他担负不了的责任,你也一样不能让你的团队承受他们 能力以外的事,切割出他们可以做的事,还是「一次只要求一件事」,至于完成不了的事,只有主管自己用智能、用创意去「草船借箭」了!

被阅325次, 0票 发表评论

CFileFind类的使用总结

Admin 于 2008-09-29 03:46:06 发表C/C++

1、CFileFind类的声明文件保存在afx.h头文件中。
2、该类的实现的功能:执行本地文件的查找(查找某个具体的文件,查找某类文件x*.x*,查找所有文件*.*)
3、CFileFind类是CGopherFileFind和CFtpFileFind类的基类。
4、CFileFind类的构造函数::CFileFind()和关闭函数::Close()我会成对使用。
5、CFileFind类的成员函数我根据其操作特性划分为3类:查找操作类、获得文件属性类、判断文件属性类。(下面我先进行函数罗列并没有完整的描述函数的参数)
查找操作类
    ::FindFile();
    ::FindNextFile();
获得文件属性类
    ::GetCreationTime();
    ::GetLastAccessTime();
    ::GetLastWriteTime();
    ::GetFileName();
    ::GetRoot();
    ::GetFilePath();
    ::GetFileTitle();
    ::GetFileURL();
    ::GetLength();
    
判断文件属性类
    ::IsArchived();
    ::IsCompressed();
    ::IsDirectory();
    ::IsDots();
    ::IsHidden();
    ::IsNormal();
    ::IsReadOnly();
    ::IsSystem();
    ::IsTemporary();
    ::MatchesMask();
6、CFileFind类中成员函数使用应注意的顺序
      在创建了CFileFind对象后,先执行::FindFile()函数,然后执行::FindNextFile(),然后选择执行(获得文件属性类)的函数或者(判断文件属性类)函数。
7、CFileFind类成员函数的详细分析:

被阅496次, 0票 发表评论

FTP操作范例

Admin 于 2008-09-29 03:42:37 发表.NET

被阅332次, 0票FTP 发表评论

通过反射调用private方法

Admin 于 2008-09-29 03:12:26 发表.NET

  1. using System; 
  2. using System.Reflection; 
  3.  
  4. public class SimpleClass 
  5.     private void aPrivateMethod() 
  6.     { 
  7.         Console.WriteLine("you called me!"); 
  8.     } 
  9.  
  10. public class Tester 
  11.     public void Test() 
  12.     { 
  13.         //code snipped to invoke method 
  14.         //create an object of our class and get Type 
  15.         SimpleCass targetObj = new SimpleClass(); 
  16.         Type classType = targetObj.GetType(); 
  17.  
  18.         //get method: be careful to BindingFlags options. 
  19.         MethodInfo thePrivateMethod = classType.GetMethod("aPrivateMethod"
  20.                 BindingFlags.NonPublic | BindingFlags.Instance); 
  21.  
  22.         //invoke method on the object 
  23.         thePrivateMethod.Invoke(targetObj, null); 
  24.  
  25.     } 
被阅863次, 0票反射 发表评论

后台线程定期执行GC.Collect()

Admin 于 2008-09-29 03:04:53 发表.NET

  1. using System; 
  2. using System.Threading; 
  3. public class MemoryCleaner 
  4.     private const int PERIOD_IN_MS = 500; 
  5.  
  6.     private static int _counter; 
  7.  
  8.     private Thread _thread; 
  9.     private AutoResetEvent _event = new AutoResetEvent(false); 
  10.  
  11.     public MemoryCleaner() 
  12.     { 
  13.     } 
  14.  
  15.     public void Start() 
  16.     { 
  17.         Stop(); 
  18.         _thread = new Thread(new ThreadStart(run)); 
  19.         _thread.Name = string.Format("MemoryCleaner#{0}" 
  20.                             , Interlocked.Increment(ref _counter)); 
  21.         _thread.IsBackground = true;  
  22.         // this makes thread to be stopped when Main thread is over 
  23.         _event.Reset(); 
  24.         _thread.Start(); 
  25.     } 
  26.  
  27.     public void Stop() 
  28.     { 
  29.         if (_thread != null
  30.         { 
  31.             _event.Set(); 
  32.             _thread.Join(); 
  33.             _thread = null
  34.         } 
  35.     } 
  36.  
  37.     private void run() 
  38.     { 
  39.         while (!_event.WaitOne(PERIOD_IN_MS, false)) 
  40.         { 
  41.             GC.Collect(); 
  42.             GC.WaitForPendingFinalizers(); 
  43.         } 
  44.     } 
被阅779次, 0票 发表评论
4 / 11 / 87 | « 1 2 3 4 5 6 7 » |

Powered by MiniBoke v2.0.0.8 Build 0828

Copyright © 2008 迷你博客. All rights reserved.

粤ICP备07500939号