c++学习笔记
daojin505
这个作者很懒,什么都没留下…
展开
-
装死模式之我见
1。装饰模式把主要功能和次要功能区分开。对主要功能进行装修,并有可能扩展出新的功能。2。各个装饰实体之间以及各个被装饰的实体之间以及装饰实体和被装饰实体之间都是完全透明的。3. 但是有人说,装饰实体对客户端代码也是透明的。这个说法是错误的。 1.要把创建和使用隔离开,必须用工厂模式才能实现透明化。另外要不要进行完全透明,跟装饰模式没有关系。主要看这个类的继承层次是不是足够简单...2010-10-12 01:08:15 · 126 阅读 · 0 评论 -
仿照标准库做了个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 · 87 阅读 · 0 评论 -
如何控制全局静态常量的初始化顺序
http://support.microsoft.com/kb/104248/en原创 2010-10-25 11:41:25 · 89 阅读 · 0 评论 -
关于BeginPaint和WM_ERASEBKGND
1。当操作系统意识到无效区域的时候,会向窗口发送WM_PAINT消息。必须调用Beginpaint(),BeginPaint用来为DC获得一个无效区域。以后的绘制只会在这无效区域里面绘制。 2。同时,如果是默认情况下,会发WM_ERASEBKGND消息,这样就会有重新刷新背景的机会。MFC如果指定了Brush,默认的DefaultWinProc会擦除背景一次。要想只擦除一次背景,则必须...原创 2010-10-25 20:24:33 · 179 阅读 · 0 评论 -
MFC内幕
http://www.cppblog.com/citywanderer/articles/8716.html原创 2010-10-27 11:47:40 · 137 阅读 · 0 评论 -
C++网络包截取开发
http://hi.baidu.com/eyes0011/blog/item/18f0a9120f5507866438db71.html原创 2010-10-29 08:26:12 · 440 阅读 · 0 评论 -
最简单的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 阅读 · 0 评论 -
c++socket模型之我见
能用UDP尽量用UDP,能不用TCP就不用。TCP要维护连接,错包重发,确认,错序调整等。消耗比较大。UDP只需要再一个端口上进行IO操作,而TCP则需要再不同的端口上进行IO操作。 假设说用TCP:案例1: 建立一个同时维持1000个链接的服务器。先说缺点1。阻塞模型: 1000个链接需要建立2000个线程去receive和send数据。开销相当大。...原创 2010-10-30 11:20:58 · 170 阅读 · 0 评论 -
学习C++
http://blog.csdn.net/lwj1396/archive/2008/12/25/3606390.aspx原创 2010-10-31 11:06:08 · 84 阅读 · 0 评论 -
再次证明消息四元组的处理顺序。
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 阅读 · 0 评论 -
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 · 125 阅读 · 0 评论 -
ActiveX资源
http://blog.csdn.net/hello1979cn/archive/2009/03/18/4002602.aspx原创 2010-10-20 21:45:38 · 74 阅读 · 0 评论 -
策略模式,状态模式,监听模式之间的区分。
把这三个放在一起区分,最主要的原因是这三种模式有共同点,就是都是把行为进行抽象。 1.策略模式一种最简单的。一种策略,当前只能有一个。。2.状态模式可以说是链接起来的策略模式。强调的是各个策略实体类型之间的关联关系。3.监听模式,可以说是,可聚集的策略模式。强调的是,各个策略实体之间没有关系,可广播式触发。如果退化成一个,则与策略模式相同。...原创 2010-10-13 08:35:30 · 202 阅读 · 0 评论 -
多线程编程 之 (生产者与消费者(N多))同步常用的方法。
1. 互斥锁+条件变量: 释放锁,等待条件成立 ,然后在条件成立后,得到锁。一次只能wake一个。每个被触发的线程都不停地去取得条件变量。取得之后,去遍历任务列表,执行任务。(思路模糊,效率应该会高一些咯(条件变量是用户模式下的东西))2. 信号灯: 所有线程等待信号灯。直到把信号灯消耗完全。(思路清晰,效率不知道怎么样) ...原创 2010-10-13 21:53:38 · 157 阅读 · 0 评论 -
C++编程模型
Winsock 的I/O操作:1、 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字 默认为阻塞模式。可以通过多线程技术进行处理。 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式使用 起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误。但功能强大。为了解决这个问题,提...原创 2010-10-13 23:32:34 · 160 阅读 · 0 评论 -
MFC运行时
1。MFC运行时GetRuntimeClass(); 虚函数GetBaseClass(); 成员函数GetThisClass(); 成员函数每一个类中,有一个CRuntimeClass的对象,然后把这个类的信息记录到CRuntimeClass类型的成员里面,同时可以找到父类中的此成员,例如,判断当前类是不是某个类型等。构造函数也记录在这个成员里面,这样就可以进行构造。 同时,也...2010-10-15 09:38:12 · 116 阅读 · 0 评论 -
C++虚表的机制
1。虚表是在编译时期创建的。2。在运行时,创建对象的时候,同时创建一个指向虚表的指针。首先看是不是虚函数,如果是虚函数,那么就去查询虚表。找到符合实际对象实际类型的函数,并执行。...原创 2010-10-15 11:18:57 · 190 阅读 · 0 评论 -
网站 com入门
http://www.vckbase.com/document/viewdoc/?id=915原创 2010-10-15 17:32:06 · 105 阅读 · 0 评论 -
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 · 127 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 208 阅读 · 0 评论 -
消息的顺序
消息的顺序01:30:46 WM_NCPAINT Begin01:30:46 WM_NCPAINT End01:30:46 WM_ERASEBKGND Begin01:30:46 WM_ERASEBKGND End01:30:46 CTLCOLOR_BTN Begin01:30:46 CTLCOLOR_BTN End01:...原创 2010-11-03 01:22:08 · 141 阅读 · 0 评论 -
windows对象
http://msdn.microsoft.com/en-us/library/ms724515(v=VS.85).aspx原创 2010-11-04 12:00:00 · 82 阅读 · 0 评论 -
函数返回应该是个右值吧,为啥能放在左边(红色标示的部分)?
1楼class A1{public: A1() { std::cout<<"A1()"<<std::endl; } A1(const A1& a1) { std::cout<<"A1(const A1& a1"<<std::end2010-11-17 16:18:20 · 114 阅读 · 0 评论 -
总结一下这几天操作符的学习心得
1.关于map的operator[]:原形为 val_type &operator[](const key_type &key); a:返回val_type说明,对于map中的val_type,通过[下标]访问,具有所有的write 和 read 权限。 b:原型后面没有写const,说明必须通过非const的对象访问。(可修改的)2.关于operator():...原创 2010-12-11 20:43:31 · 133 阅读 · 0 评论 -
打印一个字符串的所有排列。
//打印一个字符串的所有排列。void printSequence(char* pChara){ int i = 0; static int MAX_LEN = strlen(pChara); if (pChara[0] == '\0') { for (int i = 0; i < MAX_LEN; i ++) { printf("%c", pChara[i + 1]); } ...2011-07-24 18:04:02 · 215 阅读 · 0 评论 -
pure abstract class(什么是纯抽象类?)
下面是C++的创造者的回答,供你参考Bjarne Stroustrup:我在对人们解释这个问题的过程中遇到了很多问题,而且我也一直不能理解为什么让人们理解这个问题是如此困难。自C++出现那天起,就存在着包含数据成员的类和不包含数据成员的类。在过去,人们强调利用一个最基础的设施以及该设施内部的东西来构造软件系统,而那个“最基本的设施”通常就是抽象基类。从80年代中叶到80年代末,那些...2011-03-18 22:55:57 · 181 阅读 · 0 评论 -
什么是页表和页目录
4G内存分解为1M个内存页。1K个页组成一个页表。1K个页表组成一个页目录。每一个程序都有个页目录,用来记录当前的所用到的内存页吗?原创 2011-03-27 21:49:25 · 1213 阅读 · 0 评论 -
Android源代码获得方法
http://www.williamhua.com/2009/04/29/git-and-repo-for-dummies/http://source.android.com/source/index.htmlhttp://github.com/android原创 2011-04-03 19:58:35 · 78 阅读 · 0 评论 -
ubuntu VMware
http://www.linuxidc.com/Linux/2011-03/33872.htm原创 2011-04-05 15:00:50 · 77 阅读 · 0 评论 -
linux ubuntu mount success
wangshuai@wangshuai-virtual-machine:~$ sudo mount -t cifs -o username=Administrator,password=411023 //192.168.1.100/share /home/wangshuai/win7_F errors:Options: ro (read-only mount)...原创 2011-04-05 22:13:07 · 384 阅读 · 0 评论 -
ubuntu配置Android指南
您还未登录!|登录|注册|帮助CSDN首页资讯论坛博客下载搜索更多CTO俱乐部学生大本营培训充电移动开发软件研发云计算程序员TUPgracioushe的专栏条新通知登录注册欢迎退出我的博客配置写文章文章管理博客首页 全站 当前博客 空间博客好友相册留言用户操作[留言] [发消息] [加为好友] 何波ID:gracioushe共8823次...原创 2011-04-09 04:46:33 · 138 阅读 · 0 评论 -
优点和缺点
优点:非常爱学习,为人很大方。做事很投入,很刻苦。缺点是:过于诚实,很容易上当。原创 2010-11-13 19:52:34 · 204 阅读 · 0 评论 -
游戏开发框架
class m_eventManger{};class m_loopManger{ static void loop() { }};class PhysicLayer;class TerrianLayer;class ObjectLayer;class m_renderManger(){public: Physic...原创 2010-11-09 21:57:13 · 79 阅读 · 0 评论 -
C++语言代码检查工具PC-Lint简介
http://campus.chsi.com.cn/xy/com/200801/20080116/3689197.html原创 2010-11-04 23:20:04 · 117 阅读 · 0 评论 -
自己写的share_ptr
#pragma oncenamespace WSBoost{ template<class T> class shared_ptr { private: typedef int count_type; public: explicit shared_ptr(T * p = 0): px(p) { pn = new count_typ...2011-02-01 23:43:05 · 111 阅读 · 0 评论 -
自己写的share_ptr + Arry 来制作CString共享版本
#include "MyStudyFile.h"#include <crtdbg.h>#include <boost/smart_ptr/shared_ptr.hpp>int strlength (const char * str){ const char *eos = str; while( *eos++ ) ; return( eos - ...原创 2011-02-03 01:54:53 · 75 阅读 · 0 评论 -
CString的高效版本
#pragma once#include <string>template<class T>void SwapFun(T& left, T& right){ T temp = left; left = right; right = temp;}class CShString{public: CShString(...原创 2011-02-03 17:55:08 · 101 阅读 · 0 评论 -
批处理
批处理之家: http://www.bathome.net/reg.php 文件夹 PATH 列表卷序列号为 00000002 AEF5:0D27C:\USERS\ADMINISTRATOR\DESKTOP\SLICKEDIT│ se_14000102_win_full.msi│ 使用说明-ReadMe.txt│ └─Crack └─新建文件夹 一。/D ...原创 2011-02-04 17:19:43 · 146 阅读 · 0 评论 -
自动化Build的方法如下所示
#本文件自动进行build。##########修改如下内容进行自定义。#######PROGRAM := hello.exeSRCDIRS :=.SRCEXTS :=.cpp#########################################SOURCES := $(foreach d,$(SRCDIRS),$(wildcard $...2011-02-05 23:43:34 · 151 阅读 · 0 评论