- 博客(30)
- 资源 (15)
- 收藏
- 关注
原创 VC工程中MBCS定义的含义
VC工程中的缺省定义是MBCS,当然也可以定义为UNICODE。我们知道前者是“多字节编码”,后者是“UNICODE编码”,后者好理解,因为UNICODE就特指UTF-16,可是多字节编码有太多种了,比如UTF-8、GB2312、Big5等等,那么前者具体指的是哪一种编码呢?具体说来,如果我们声明一个CString str="abc移动";或者说我们使用GetWindowText从一个控件
2012-07-25 14:59:03 1858
原创 stdafx介绍
简介 名称的英文全称为:Standard Application Framework Extensions 所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。 预编译头文件通过编译stdafx
2012-07-25 08:46:31 1239
原创 STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)(转)
SDAU-ACM耀哥整理的,感觉很不错,弄过来慢慢看 原文链接:http://blog.csdn.net/lmyclever/article/details/6750041 向量(vector) 连续存储的元素Vectorc;c.back() 传回最后一个数据,不检查这个数据是否存在。c.clear() 移除容器中所有数据。c.empty()
2012-07-22 17:55:28 969
原创 百万用户级游戏服务器架构设计(2)
登录服的设计 -- 功能需求 正如我们在前面曾讨论过的,登录服要实现的功能相当简单,就是帐号验证。为了便于描述,我们暂不引入那些讨论过的优化手段,先以最简单的方式实现,另外也将基本以mangos的代码作为参考来进行描述。 想象一下帐号验证的实现方法,最容易的那就是把用户输入的明文用帐号和密码直接发给登录服,服务器根据帐号从数据库中取出密码,与用户输入的密码相比较。 这个方
2012-07-22 16:06:32 1883
原创 百万用户级游戏服务器架构设计(1)
服务器结构探讨 -- 最简单的结构 所谓服务器结构,也就是如何将服务器各部分合理地安排,以实现最初的功能需求。所以,结构本无所谓正确与错误;当然,优秀的结构更有助于系统的搭建,对系统的可扩展性及可维护性也有更大的帮助。 好的结构不是一蹴而就的,而且每个设计者心中的那把尺都不相同,所以这个优秀结构的定义也就没有定论。在这里,我们不打算对现有游戏结构做评价,而是试着从头开始搭建一个我
2012-07-22 16:05:15 2943
原创 boost::pool与内存池技术
建议看这个链接的内容:http://cpp.winxgui.com/cn:mempool-example-boost-pool Pool分配是一种分配内存方法,用于快速分配同样大小的内存块, 尤其是反复分配/释放同样大小的内存块的情况。1. pool 快速分配小块内存,如果pool无法提供小块内存给用户,返回0。 Example:
2012-07-22 15:55:59 1430
原创 内存池(MemPool)技术详解
概述内存池(MemPool)技术备受推崇。我用google搜索了下,没有找到比较详细的原理性的文章,故此补充一个。另外,补充了boost::pool组件与经典MemPool的差异。同时也描述了MemPool在sgi-stl/stlport中的运用。经典的内存池技术经典的内存池(MemPool)技术,是一种用于分配大量大小相同的小对象的技术。通过该技术可以极大加快内存分配/释放过程。下面
2012-07-22 15:44:29 1687
原创 SGI-STL学习笔记之allocator .
转自:http://blog.csdn.net/xinhanggebuguake/article/details/6225563空间配置器的标准接口:[c-sharp] view plaincopyprint?allocator::value_type allocator::pointer allocator::const_pointer al
2012-07-20 14:32:55 1207
原创 SGI STL空间配置器和内存池
最近在看侯捷老师的《STL源码剖析》,非常感叹其中空间配置器实现的巧妙和细致,对效率真正是锱铢必较。 一般我们所习惯的内存配置和释放是通过new和delete来完成的,而new运算包含了两个阶段:1.调用::operator new配置内存 2.调用构造函数 Foo() 构造对象。delete运算也包含两个阶段:1.调用析构函数 ~Foo() 将对象析构 2.调用::operator del
2012-07-20 14:00:12 1107 1
原创 SGI STL空间配置器(STL源码剖析)
空间配置器的标准接口(根据STL规范) allocator::value_typeallocator::pointerallocator::const_pointerallocator::referenceallocator::const_referenceallocator::size_typeallocator::difference_typealloc
2012-07-20 13:40:30 960
原创 SGI STL V3.2 源码剖析 - 空间配置器
1.1. 文件名bits/stl_alloc.h1.2. 背景知识候捷在《STL源代码剖析》中说:“源码之前,了无秘密”,自然是大师的潇洒之语。但是,如果你不熟悉C++ template的基本语法,不明白Generic Programming的基本概念,那么即便STL的源码当前,对你来讲仍会有很多秘密。所以,先简要介绍一些必要
2012-07-20 13:36:15 1245
原创 在 vs2008 里使用 SGI STL 的内存池特性
最近开发的一个C++项目是针对性能进行优化的,所以在很多细节上不得不"咬文嚼字", 而/C++其中强大的地方是对内存使用有很强的可控性, 而任何一个C++项目都离不开对内存的管理,所以要进行内存管理的优化内存池是必须要考虑的.内存池的做法理论在网上很容易找到,但却真正可靠高效的实现,还真是凤毛麟角,也许你会说ACE,boost之类的现成实现,然而这些大家伙动辄就得找半天资料才能编译通过,而
2012-07-20 11:25:53 2177 2
原创 SGI STL 内存池(转)
将SGI STL的内存池抠了出来,win32平台// mem_pool.h#ifndef mem_pool_h#define mem_pool_h#pragma once#define ALIGN 512#define MAX_BLOCK_SIZE 20 * 1024#define BLOCK_LIST_NUM MAX_BLOCK_SIZE
2012-07-20 11:20:15 1664
原创 SGI STL的内存池
stl中各种容器都有一个可选的模板参数:allocator,也就是一个负责内存分配的组件。STL标准规定的allcator被定义在memory文件中。STL标准规定的allocator只是单纯地封装operator new,效率上有点过意不去。SGI实现的STL里,所有的容器都使用SGI自己定义的allocator。这个allocator实现了一个small object的内存池。Loki
2012-07-20 11:18:03 1260
原创 NTSD(Command Line)调试DMP格式文件
前言:之前介绍了利用VS2005进行Dump文件的调试,功能非常强大。但VS2005是一个大程序,本文将讨论利用NTSD的Command Line 实现Dump 文件的调试。1、 载入DMP格式文件利用CMD打开命令行窗口,切换到NTSD所在目录。利用命令载入DMP文件:ntsd –z dumpfileName –y symbolPath –srcpath sourcecodePat
2012-07-18 11:44:36 983
原创 Windbg培训笔记之一(基础篇)
Windbg培训笔记一(基础篇)主讲人:Nick XiaoWindbg简介Windbg是微软 提供的应用程序,可以在微软的官方网站上下载到。Windbg 提供了用户态和核心态的调试能力。为什么要用WindbgVC6和VS2008都提供了Debug的功能,那为什么我们还需要用Windbg这个工具呢?简单来说,假如你的程序在客户那里出现了问题,比如说crash或者han
2012-07-18 11:36:25 1920
原创 C++编码中减少内存缺陷的方法和工具
转自:http://www.vckbase.com/index.php/wv/1518C++语言是桌面系统,尤其是系统软件、大型应用软件的主流开发语言。C++语言以其灵活性著称,同时也更复杂。利用C++编写健壮的代码,更具有挑战性。C++允许动态内存管理, 同时也容易导致更多和内存相关的问题。一般而言, 除了系统设计上的缺陷, 基于C++的软件的缺陷和错误大部分都和内存缺陷(主要包括内存访问错
2012-07-18 11:11:14 1184
原创 WinDbg调试DMP格式文件
前言:WinDbg是微软开发的免费源代码级的调试工具。WinDbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。本文的讨论是在安装了Debugging Tools for Windows 的前提下进行的,下载地址可以参考我之前的文章。WinDbg对于dump文件的调试可以通过菜单设置Symbol File Path、Source File Path ,并可设置多个路径。1
2012-07-18 10:48:59 1597
原创 DMP文件的生成和使用
#include stdio.h>#include afxwin.h>#include dbghelp.h>#pragma comment(lib, "Dbghelp.lib")LONG WINAPI MyUnhandledFilter(struct _EXCEPTION_POINTERS *lpExceptionInfo){ LONG ret = EXC
2012-07-18 10:46:20 1544
原创 BoundsChecker使用
转载:http://www.cnitblog.com/qiuyangzh/archive/2005/07/14/975.html1 前言我在本文中详细介绍了测试工具NuMega Devpartner(以下简称NuMega)的使用方法。NuMega是一个动态测试工具,主要应用于白盒测试。该工具的特点是学习简单、使用方便、功能有效。NuMega共有三个独立的子功能——BoundsCheck
2012-07-18 10:29:39 797
原创 深入分析MFC中的CArray类
我们在使用vc进行比较复杂的编程时,经常需要用到复杂的数组结构,并希望能实现动态管理。由于C++并不支持动态数组,MFC提供了一个CArray类来实现动态数组的功能。有效的使用CArray类,可以提高程序的效率。MFC提供了一套模板库,来实现一些比较常见的数据结构如Array,List,Map。CArray即为其中的一个,用来实现动态数组的功能。CArray是从CObject派生,有两个模
2012-07-16 18:39:27 1620
原创 也谈Release版本排错
邓立波 深圳,2008-6作者联系方式:email: libodeng@gmail.commsn: libodeng@gmail.com 通常Release除错都是先通过SetUnhandledExceptionFilter捕获异常,然后生成报告文件,最后定位代码行,主要以下两种方法:(一)通过遍历调用栈,将其
2012-07-16 18:25:47 957
原创 字符集编码(GBK,BIG5,UNICODE等)与C++的string/wstring
GBK,BIG5等字符集编码范围的具体说明 一 预备知识1,字符:字符是抽象的最小文本单位。它没有固定的形状(可能是一个字形),而且没有值。“A”是一个字符,“€”(德国、法国和许多其他欧洲国家通用货币的标志)也是一个字符。“中”“国”这是两个汉字字符。字符仅仅代表一个符号,没有任何实际值的意义。2,字符集:字符集是字符的集合。例如,汉字字符是中国人最先发明的字符,在中文、日文、韩文
2012-07-11 21:56:44 3692
原创 UTF-8编码简介
在IE中选择UTF-8字符集UTF-8是UNICODE的一种变长字符编码又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。基本简介 数据结构简要 作者: Marius Bancila 字符集简史 在所有字符集中,最知名的可能要数被称为ASCII的7位字符集
2012-07-11 21:53:39 1778
原创 Gb2312转Utf8
void Gb2312ToUtf8(const char *pcGb2312, std::string & strUtf8){//wchar_t pcUnicode[CHAR_BUFSIZE];//gb2312 to unicodeint nUnicodeLen = MultiByteToWideChar(CP_ACP, 0, pcGb2312, -1, NUL
2012-07-11 19:58:25 977
原创 VC用法汇总
(1)如何通过代码获得应用程序主窗口的指针?主窗口的指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2)确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。Ex
2012-07-10 12:37:44 2164
原创 std string使用
用 string来代替char * 数组,使用sort排序算法来排序,用unique 函数来去重1、Define string s1 = "hello"; string s2 = "world"; string s3 = s1 + "," + s2 +"!\n";2、append s1 += ",shanshan\
2012-07-10 11:08:31 4923
原创 Win7平台VS2010安装Visual Assist X
文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。废话不多说,本文介绍如何在Windows7平台下的VisualStudio2010上安装Visual Assist X,因为这个情况有一些特殊。首先下载 Visual Assist X 10.6.1845 原版及破解补丁,我这里也提供下载。请到"下载基地"下载Slyar_VA
2012-07-10 10:34:37 36172 4
原创 C++设置和获取当前工作路径
通常,你在服务程序中调用DLL,而DLL又会加载许多配置和文件,一般会出现DLL加载不到配置和文件,原因是你的服务程序被加载后,路径并不是你程序的所在目录,故DLL也不是,因此加载不了。解决办法,是在DLL的路径或服务程序中设计当前的工作路径。主要函数为:SetCurrentDirectory;设置当前工作路径实例如下:#include #include #in
2012-07-10 10:33:15 22329 2
原创 C++ STL set集合容器常用用法
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来。构造set集合主要
2012-07-04 09:31:23 7938
彗星小助手
2011-11-15
HttpWatchPro
2011-11-10
计算机基础知识考试宝典
2011-09-22
Vc中BSTR,char和CString的转换
2007-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人