- 博客(70)
- 资源 (6)
- 收藏
- 关注
原创 消息队列
<br />// Test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <windows.h>#include <process.h>#include <queue>using namespace std;class CMessage{public: OVERLAPPED m_ov;};template<class T>class IMessageQueue{
2010-08-26 12:19:00
377
转载 VC2003实现 __FUNCTION__ 宏
#include "stdafx.h"#include typedef unsigned long ULONG_PTR,*PULONG_PTR;#define __out_ecount_opt(x)#include #include #include "stdlib.h"#pragma comment(lib,"dbghelp.lib")static LPSTR GetSymbolSearchpath (){ char director
2010-08-14 09:11:00
965
转载 也谈Release版本排错
也谈Release版本排错 邓立波 深圳,2008-6作者联系方式:email: libodeng@gmail.commsn: libodeng@gmail.com 通常Release除错都是先通过SetUnhandledExceptionFilter捕获异常,然后生成报告文件,最后定位代码行,主要以下两种方法:(一)通过遍历调用栈,将其调用栈信息输出到文件。然后查找出错地址。查找方式有两种:(
2010-08-14 08:48:00
617
转载 批处理编译项目,VS2003
@cls @call "%VS71COMNTOOLS%vsvars32.bat" @devenv "XXXX.sln" /build Debug
2010-06-13 17:19:00
397
原创 #define P(
<br />#define P(format, ...) do /<br /> { /<br /> printf("%s %s %d " format "/n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); /<br /> fflush(stdout); /<br /> } /<br /> while (0);
2010-06-13 12:42:00
321
转载 如何通过下标删除vector中的指定元素
<br />比如:vector vecID; 中保存了m个ID,这时要删除第n个ID。<br />当然,遍历是一个方法;即vector::itertor it = vecID.begin(); 然后++it n次。<br />更好的方法是:vector::itertor it = vecID.begin() + n; vector的迭代器直接支持这种偏移。<br />然后用vecID.erase(it)方法 删除该元素。
2010-06-12 11:43:00
3540
转载 服务器端引入vld检测内存泄露
<br />影响服务器稳定的原因很多种,内存泄露是其中比较重要的一种。内存泄露严重的,很容易导致当机。而内存泄露的发生很经常。特别是新人介入游戏开发时。作为主程,不可能盯着每一行代码的增加/删除/修改。<br /> 那么 如何快速,有效的发现问题,并定位问题呢?<br /> 传统的方法有,bounds checker或者purify等工具。这些工具是大而全。功能非常完善。但是在实际使用时我们发现,启动一个服务器非常慢。每个点要跟踪,而且有些误报。一天下来,问题找的不多,人倒是很累。<
2010-06-12 11:42:00
844
转载 如何让vld支持release版本的内存泄露检测
<br />vld版本1.9h支持vc60及vs2005,vs2008的内存泄露检测,但是只支持debug版本。 <br />通常情况下,我们更关心的是release版本下是否有内存泄露。显然 vld并不能满足我们的要求。 <br />因此,我们需要对vld进行修改。 <br /><br />研究了一下代码,发现主要有几个方面控制导致了vld无法在release下使用: <br />1)首先,VLD通过宏,在vldini.h中直接禁止在release下导出相关函数。 <br />2)其次,vld.cpp中,
2010-06-12 11:40:00
1778
转载 SVN代码提交流程
<br />前言:<br />经常从SVN上取最新代码下来后发现编译过不去,查找提交log找到之前提交的人,了解其提交代码的流程后,发现SVN代码提交流程有点问题. SVN代码提交虽然简单,但是如果没严格按照步骤来的话,很容易出错,出现代码覆盖,遗漏提交的情况。现在整理一个SVN提交代码流程的精简的版本。<br />有2种方法,推荐方法1。<br />方法1 通过本地SVN代码库中转提交:<br />1。本地SVN代码库更新<br />为了方便代码提交,建议本地维护一个与SVN对应的,只用来存放最新代码的本
2010-06-12 11:36:00
7399
1
转载 如何解决使用SQLite对中文进行模糊查询失效的问题?
<br />test表:<br />id name<br />1 张三<br />2 李四<br />3 王五<br />SELECT * FROM test WHERE name LIKE '%张%' ; 查出来的记录却不止只有一条“张三”<br />原来是SQLite使用的字符集是UTF8, 所以存入数据时如果有中文就应该先转成UTF8,取出来的时候要转回来的ASCCI码
2010-06-12 11:34:00
829
转载 8条SQLServer查询优化方案
<br />1.建立索引的前提下WHERE子句性能 <br /> 最好的是带有"="操作符 <br /> 其次是封闭的区间 <br /> 再其次是开放的区间 <br />2.避免相关子查询 <br />3.避免困难的正规表达式 <br />4.避免使用含有不连续连接词(OR和IN)的WHERE子句 <br />5.WHERE子句中限制数据转换和串操作 <br />6.慎用包含NOT、<>的WHERE子句 <br />7.SELECT时按需取字段 <br />8.勿滥用LIKE关键字
2010-06-12 11:34:00
287
转载 8条SQLServer查询优化方案
<br />1.建立索引的前提下WHERE子句性能 <br /> 最好的是带有"="操作符 <br /> 其次是封闭的区间 <br /> 再其次是开放的区间 <br />2.避免相关子查询 <br />3.避免困难的正规表达式 <br />4.避免使用含有不连续连接词(OR和IN)的WHERE子句 <br />5.WHERE子句中限制数据转换和串操作 <br />6.慎用包含NOT、<>的WHERE子句 <br />7.SELECT时按需取字段 <br />8.勿滥用LIKE关键字
2010-06-12 11:34:00
206
转载 不同软件规模下的代码设计原则
<br />不同软件规模下的代码设计原则<br />声明:本文题目所指的“原则”为本文作者原创,系本文作者在多年的软件开发实践中所摸索出来的成果。<br /> <br />背景<br />软件工程在理论研究与实践应用方面都经过了很长时间的发展,甚至与软件本身的历史一样长。伴随着软件工程的长时间的发展,代码设计的内容也变得越来越丰富,复杂度也越来越高,甚至显得有些复杂的过头了。近十年来,敏捷开发思想悄然流行,说明大量的开发者趋向于认同如下的观点:软件工程上的大量原则过于复杂,其复杂度导致开发者遵循这些原则所付
2010-06-12 11:33:00
887
原创 Handle-Body与接口、抽象接口
<br />在C++中封装的概念是把一个对象的外观接口同实际工作方式(实现)分离开来,但是C++的封装是不完全的,编译器必须知道一个对象的所有部分的声明,以便创建和管理它。我们可以想象一种只需声明一个对象的公共接口部分的编程语言,而将私有的实现部分隐藏起来。C + +在编译期间要尽可能多地做静态类型检查。这意味着尽早捕获错误,也意味着程序具有更高的效率。然而这对私有的实现部分来说带来两个影响:一是即使程序员不能轻易地访问实现部分,但他可以看到它;二是造成一些不必要的重复编译。 <br />然而C++并没有将
2010-06-05 18:10:00
987
转载 模板特化和偏特化
模板特化和偏特化谢宝陵 周 生 摘要:本文通过例子介绍了在 C++标准库中广泛使用的模板特化和偏特化,并指出了模板特化和偏特化的定义规则和应用规则。关键词:模板、特化、偏特化1.引言C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在STL中有着充分的体现。目前,STL在C++社区中得到了广泛
2010-05-04 22:50:00
391
原创 如何利用.pdb文件去调试
如何利用.pdb文件去调试 Posted on 2010-04-20 16:35 metaboy 阅读(42) 评论(0) 编辑 收藏 所属分类: 10 C++ <!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1
2010-04-26 18:07:00
2378
转载 C++应用程序性能优化读书笔记
粗浅的看了下,有点虎头蛇尾。暂且记下。第一篇 C++程序优化基础第1章 C++对象模型1.1 基本概念1.1.1 程序使用内存区 一个程序占用的内存区一般分为5种:全局/静态数据区、常量区、代码区、栈、堆。 例子代码: #include #include int nGlobal = 100; int main(void)
2010-04-23 11:02:00
481
原创 VisualSVN
VisualSVN是一个Visual Studio插件,集成Subversion和TortoiseSVN无缝地到Visual Studio 。 部署VisualSVN, 所有的开发人员将使用Subversion自信和有效地管理和保护您的组织的工作成果。 VisualSVN 1.7.3.破解版 网上搜了很久才找到 内含原版安装程序和破解补丁 点击下载 VisualSVN 1.
2010-04-17 11:30:00
366
原创 IOCP写的TCP测试工具
自己用IOCP写的TCP服务器端和客户端测试工具。 客户端的界面做的比较简洁,客户端用的是阻塞方式,因此连接的时候会出现无响应现象,连接成功后用异步,可测试服务器的并发和消息的收发。客户端在指定时间间隔发送指定大小的数据包,服务器收到后放入队列,在回复给此客户端,底层接收缓冲区为16K,超过此大小的数据包程序会异常。 附上下载地址: http://d.downlo
2010-03-15 22:13:00
942
原创 批处理自动生成分卷压缩和解压缩
分卷压缩:set size=5m set OuputPath=D:/testset RarName=Testset Level=5 "c:/program files/winrar/rar.exe" a -ep1 -m%Level% -v%size% %OutputPath%/%RarName%.rar %1@FOR /r %OutputPath%/%name%/ %%
2010-02-09 10:46:00
651
原创 网络设备原理 应用到 软件设计
集线器设备(全层广播):(1)下行:上层结点发送消息到集线器上的设备,对下层所有设备进行广播,所有设备判断消息后选择接受与拒绝。 (2)上行:下层设备发送消息到上层或同层设备,由HUB的上层结点负责转发或选择路由。 交换机设备(转发表):(1)下行:上层结点发送消息到交换机上的设备,交换设备可进行过滤及转发。 (2)上行:下层设备发送消息到上层或同层设备,交换设备可进行过滤
2009-12-25 11:03:00
251
转载 Windbg使用指南(1)---常用命令
debug常用命令解析:1 !address eax查看对应内存页的属性2 vertarget 显示当前进程的大致信息3 !peb 显示process Environment Block4 lmvm 可以查看任意一个dll的详细信息 例如:0:026 lmvm msvcrt (deferred)表示察看msvcrt.dll的信息,但是没有加载symbol可以通过.reload命令来加载 5.rel
2009-12-17 11:39:00
543
原创 配置Apache + Subversion
1.下载Apache,安装2.下载Subversion,默认选项,并安装3.使用svnadmin create "d:/svn/Project_one" 创建数据仓库4.配置数据仓库中的svserve.conf文件,增加读写权限,帐号验证及Reposity。5.使用htpasswd创建用户名及密码文件FileUserPassword。6.配置Apache 配置文件下的 http
2009-10-29 17:04:00
235
转载 Subversion权限文件AuthzSVNAccessFile示例
http://hi.baidu.com/javava/blog/item/32b2faf86ab5710dd8f9fd96.html Subversion权限文件AuthzSVNAccessFile示例2007-06-25 22:14在使用Subversion时,认证文件AuthzSVNAccessFile能控制每一个目录的权限,但讲解的文档较少,
2009-10-29 17:03:00
345
转载 源码配置管理(subversion+apache)
其实这文章是两三个月前写的,一直没有放上来,这段时间正好又换了配置服务器,所以才拿出来.这几天一直在找一个能与vs.net2003相结合的源代码管理工具,几乎试用过所有的大部分工具,难者难,易则简,今天准备安装subversion试试1. 转到http://httpd.apache.org/download.cgi2. 下载 apache_2.0.53-win32-x86-no_ssl
2009-10-27 17:18:00
313
原创 FLASH封装类
#if !defined(AFX_SHOCKWAVEFLASH_H__E91CB61E_FB9A_4ECD_9082_7AC2E024A7B2__INCLUDED_)#define AFX_SHOCKWAVEFLASH_H__E91CB61E_FB9A_4ECD_9082_7AC2E024A7B2__INCLUDED_#if _MSC_VER > 1000#pragma once
2009-10-08 17:09:00
3094
2
原创 自定义引用计数指针
#ifndef _INTRUSIVE_PTR_H_#define _INTRUSIVE_PTR_H_templateclass intrusive_ptr{public: intrusive_ptr():m_pPtr( NULL ) { }; intrusive_ptr( const intrusive_ptr &intrptr ):m_pPtr( NULL
2009-09-29 15:28:00
280
原创 计算代码行代码
#include "stdafx.h"#include #include #include #include #include using namespace std; int g_nFileNum =0 ;BOOL IsRoot(LPCTSTR lpszPath){ TCHAR szRoot[4]; wspri
2009-09-27 17:16:00
345
转载 UDT协议-基于UDP的可靠数据传输协议
转摘自:http://hi.baidu.com/wjtao291/blog/item/6daf83fdea7d751709244df5.html UDT协议-基于UDP的可靠数据传输协议1. 介绍 随着网络带宽时延产品(BDP)的增加,通常的TCP协议开始变的低效。这是因为它的AIMD(additive increase multiplicative decrease
2009-08-27 16:29:00
599
1
转载 ace的锁概述
概述ACE中的锁都是即可用于线程间也可用于进程间通信,一般是由构造函数的参数type指定。ACE提供的“原始锁”如:ACE_Mutex、ACE_Semaphore、ACE_File_Lock等等,这些锁都没有通过继承和多态的形式实现,而是各自独立地实现相关接口。这些“原始锁”之所以不用多态的形式,按ACE在文件Lock.h的解释:多态函数调用会增加20%的开销,有了多态函数就不能把锁放在共享内
2009-06-12 17:00:00
2863
转载 Win32应用程序中进程间通信方法分析与比较
Win32应用程序中进程间通信方法分析与比较 来源:Intetnet 1 进程与进程通信 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大
2009-05-19 19:49:00
404
转载 使用PostThreadMessage在Win32线程间传递消息
PostThreadMessage的原型是这样的BOOL PostThreadMessage( DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam);PostThreadMessage可以用于线程之间的异步通讯,因为它不用等待调用者返回,这也许是线程通讯中最简单的一种方法了。但是要注意以下问题1 .PostThr
2009-05-13 16:51:00
397
原创 WinDBG(CDB)实践1-新手指南
Step1 下载最新的Debugging Tools for windows http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx最新版本是6.6.7.5 http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.6.07.5.exe(BTW,如果使
2009-05-13 16:49:00
462
转载 使用Gflags来检测heap问题
先说一下问题,如何让下面程序(release版本)能立即报出异常,程序出错?默认情况很大可能是不crash的int _tmain(int argc, _TCHAR* argv[]){ char *p=new char[10]; for(int i=0;i10;++i) p[i]=i; p[10]=10; return 0;}众所周知,heap问题一般比较难于处
2009-05-13 16:48:00
673
1
原创 内核对象同步锁
//临界区锁struct THREAD_CS_MUTEX{ THREAD_CS_MUTEX() { InitializeCriticalSection( &m_hLock ); } ~THREAD_CS_MUTEX() { DeleteCriticalSection( &m_hLock ); } inline void Lock() {
2009-04-28 11:53:00
292
原创 用子网掩码来计算主机数
用子网掩码来计算主机数。搜寻网络得到:256 - 掩码 = 网络大小网络大小 - 2 = 主机数量256 / 网络大小 = 子网数量 注:子网络号不能全0,也不能全1 。故子网数量 还应 - 2。例:把网络202.194.1.0划分为多个子网,子网掩码是255.255.255.192 256 - 192 = 64 //网络大小64 - 2 = 62 //主机数量,,每个子网的主机数
2009-04-13 15:52:00
1529
1
原创 VARIANT数组封装类
最近经常使用VC的VARIANT,封装了一个 VARIANT类与常见数组的转换类,实现其相关功能,提高了开发效率。#pragma once enum ElementType{ V_LONGLONG=VT_I8, //VT_I8. V_ULONGLONG=VT_UI8, //VT_UI8 V_LO
2009-01-13 10:17:00
1332
1
转载 结构成员对齐
“结构成员对齐”(/Zpn) 选项控制如何将结构成员封装到内存中,并为模块中的所有结构指定相同的封装方式。当指定此选项时,第一个结构成员后的每个成员将在成员类型大小或 n 字节边界(其中 n 为 1、2、4、8 或 16)两者中较小的一个处存储。除非有特定的对齐要求,否则不应使用此选项。选项结果/Zp1在 1 字节边界上封装结构/Zp2在
2008-09-24 11:14:00
269
转载 Union的迷思
联合(union)在C/C++里面见得并不多,但是在一些对内存要求特别严格的地方,联合又是频繁出现,那么究竟什么是联合、怎么去用、有什么需要注意的地方呢?就这些问题,我试着做一些简单的回答,里面肯定还有不当的地方,欢迎指出!1、什么是联合? “联合”是一种特殊的类,也是一种构造类型的数据结构。 在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许装入该“联
2008-09-24 11:12:00
211
原创 封装WSAEventSelect模型
#include #include #pragma comment(lib,"ws2_32.lib") #pragma once class CAsyncHandler{public: CAsyncHandler() { } virtual ~CAsyncHandler() { }
2008-09-07 11:03:00
889
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人