- 博客(26)
- 资源 (7)
- 问答 (1)
- 收藏
- 关注
原创 再次证明消息四元组的处理顺序。
1。本窗口动作引起,则过程如下: EraseBkgnd begin CtlColor begin CtlColor end EraseBkgnd end Paint Begin Paint End 2。由另外其他窗口动作引起,过程如下: Paint Begin EraseBkgnd begin CtlColor begin CtlColor end...
2010-10-31 21:31:53 113
原创 c++socket模型之我见
能用UDP尽量用UDP,能不用TCP就不用。TCP要维护连接,错包重发,确认,错序调整等。消耗比较大。UDP只需要再一个端口上进行IO操作,而TCP则需要再不同的端口上进行IO操作。 假设说用TCP:案例1: 建立一个同时维持1000个链接的服务器。先说缺点1。阻塞模型: 1000个链接需要建立2000个线程去receive和send数据。开销相当大。...
2010-10-30 11:20:58 166
原创 最简单的WSAEventSelect模型(注意注释的地方)
// Win32SocketTest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "winsock2.h"//#pragma comment(lib,"wsock32.lib")#pragma comment(lib,"Ws2_32.lib")...
2010-10-29 18:05:23 258
原创 C++网络包截取开发
http://hi.baidu.com/eyes0011/blog/item/18f0a9120f5507866438db71.html
2010-10-29 08:26:12 436
原创 关于BeginPaint和WM_ERASEBKGND
1。当操作系统意识到无效区域的时候,会向窗口发送WM_PAINT消息。必须调用Beginpaint(),BeginPaint用来为DC获得一个无效区域。以后的绘制只会在这无效区域里面绘制。 2。同时,如果是默认情况下,会发WM_ERASEBKGND消息,这样就会有重新刷新背景的机会。MFC如果指定了Brush,默认的DefaultWinProc会擦除背景一次。要想只擦除一次背景,则必须...
2010-10-25 20:24:33 176
仿照标准库做了个hashmap!不容易啊。
// ConsoleTest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>#include <string>const int primes[] = {2009,3009,4009,5009,6009...
2010-10-25 03:11:35 86
原创 MFC多线程编程
http://blog.csdn.net/yusheng9966/archive/2008/02/03/2079839.aspx具体来说是:在MFC中调用attach的时候有个宏叫ASSERT_VALID(),这个方法不允许访问非本线程创建的继承于。在CWnd函数里面有一个Valid()的静态方法,检测当前线程的MFC对象指针,是否在当前线程的Map中; 下面就是这个模块中...
2010-10-23 22:42:15 124
原创 ActiveX资源
http://blog.csdn.net/hello1979cn/archive/2009/03/18/4002602.aspx
2010-10-20 21:45:38 74
原创 COM中的IDL语言的难点之接口指针
IDL前置声明语法::SOLVEDAdd a forward declaration - at the TOP of IDL file:import "ocidl.idl"; interface S8SimObject;标准的格式:同时放在OICF中和类型库中import "oaidl.idl";import "ocidl.idl";import "unknwn...
2010-10-19 00:14:37 206
原创 COM技术内幕
总结了编译Com技术内幕的最后例子的编译问题. 收藏 在编译<Com技术内幕>>的最后一个例子程序时碰到的问题:编译:Canvas1: midl : command line error MIDL1001 : cannot open input file canvas_i.idl 通过菜单: Tool->Options->Directories 把...
2010-10-16 19:53:08 70
原创 COM聚集是什么意思
Aggregation is the object reuse mechanism in which the outer object exposes interfaces from the inner object as if they were implemented on the outer object itself. This is useful when the outer objec...
2010-10-15 18:18:58 124
原创 C++虚表的机制
1。虚表是在编译时期创建的。2。在运行时,创建对象的时候,同时创建一个指向虚表的指针。首先看是不是虚函数,如果是虚函数,那么就去查询虚表。找到符合实际对象实际类型的函数,并执行。...
2010-10-15 11:18:57 185
MFC运行时
1。MFC运行时GetRuntimeClass(); 虚函数GetBaseClass(); 成员函数GetThisClass(); 成员函数每一个类中,有一个CRuntimeClass的对象,然后把这个类的信息记录到CRuntimeClass类型的成员里面,同时可以找到父类中的此成员,例如,判断当前类是不是某个类型等。构造函数也记录在这个成员里面,这样就可以进行构造。 同时,也...
2010-10-15 09:38:12 113
原创 C++编程模型
Winsock 的I/O操作:1、 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字 默认为阻塞模式。可以通过多线程技术进行处理。 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式使用 起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误。但功能强大。为了解决这个问题,提...
2010-10-13 23:32:34 159
原创 多线程编程 之 (生产者与消费者(N多))同步常用的方法。
1. 互斥锁+条件变量: 释放锁,等待条件成立 ,然后在条件成立后,得到锁。一次只能wake一个。每个被触发的线程都不停地去取得条件变量。取得之后,去遍历任务列表,执行任务。(思路模糊,效率应该会高一些咯(条件变量是用户模式下的东西))2. 信号灯: 所有线程等待信号灯。直到把信号灯消耗完全。(思路清晰,效率不知道怎么样) ...
2010-10-13 21:53:38 154
原创 策略模式,状态模式,监听模式之间的区分。
把这三个放在一起区分,最主要的原因是这三种模式有共同点,就是都是把行为进行抽象。 1.策略模式一种最简单的。一种策略,当前只能有一个。。2.状态模式可以说是链接起来的策略模式。强调的是各个策略实体类型之间的关联关系。3.监听模式,可以说是,可聚集的策略模式。强调的是,各个策略实体之间没有关系,可广播式触发。如果退化成一个,则与策略模式相同。...
2010-10-13 08:35:30 202
装死模式之我见
1。装饰模式把主要功能和次要功能区分开。对主要功能进行装修,并有可能扩展出新的功能。2。各个装饰实体之间以及各个被装饰的实体之间以及装饰实体和被装饰实体之间都是完全透明的。3. 但是有人说,装饰实体对客户端代码也是透明的。这个说法是错误的。 1.要把创建和使用隔离开,必须用工厂模式才能实现透明化。另外要不要进行完全透明,跟装饰模式没有关系。主要看这个类的继承层次是不是足够简单...
2010-10-12 01:08:15 125
原创 三层模式的优点
三层架构,数据层(DAL)、逻辑层(BLL)、表示层(UI); 三层结构的优点 分层式结构究竟其优势何在?Martin Fowler在《Patterns of Enterprise Application Architecture》一书中给出了答案:1、开发人员可以只关注整个结构中的其中某一层; 2、可以很容易的用新的实现来替换原有层次的实现; 3、可以降低层与层之间的依赖; 4、有利于标准化; ...
2010-10-09 23:03:53 505
原创 设计模式之装饰模式
JAVA中IO流的设计就大量运用了装饰模式。看看我们熟悉的代码:BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("..")));装饰模式的缺点:1. 装饰的组合方式由对象的客户代码决定,很难排错。2.类的减少缺导致了对象数量的增加,为了构造一个三层包装的装饰品,需要构造...
2010-10-09 22:43:05 47
原创 MVC模式之我见
MVC模式有三层 数据库层,业务逻辑层,展现层。为什么是这三层? 1。为了实现模块儿化开发。 2。对需求进行模块化划分,从而建立从软件模块到需求模块的一一对应关系。 对于需求的改变,就能快速地定位软件模块。缩短二次开发的周期。如果直观的概念 在软件上进行了阐述,软件的可读性就会得到提高。 ...
2010-10-08 22:31:23 62
原创 如何安装fedora13的显卡驱动
http://blog.csdn.net/rainsunQQ/archive/2010/07/26/5766355.aspx
2010-10-07 14:59:22 73
很有趣的问题,Public继承和默认的集成
2009-04-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人