c++
SuperKuku
在从事游戏开发的6年时间里面,涉及的内容包括运营平台、GM工具、MMORPG、FPS游戏。游戏都已经上线并且稳定运营中,单服务器的承载量在1万-5万之间。
展开
-
Lib库内的静态变量初始化问题
先上代码示例。一共5个文件,Lib库4个文件TClass.h,TClass.cpp,TInclude.h,TInclude.cpp。 exe程序1个文件UseLib.cppTClass.h:#ifndef TCLASS_H#define TCLASS_Hclass TClass{public: TClass();#include "TInclude.h"}原创 2012-11-08 09:22:03 · 1423 阅读 · 0 评论 -
IOCP接收性能测试。瓶颈或者问题?
环境物理机 * 7:1台作为服务器,6台作为客户端 CPU:E5405 2.0GHz4*2 Mem:16G NetworkCard:1000M*2系统: Windows2008 Server R2测试方式1. DOETest工程release版编译测试服务器。2. DOECl原创 2014-02-26 19:09:00 · 1659 阅读 · 0 评论 -
Overlap IO与IOCP对比
有关Overlap与IOCP的区别一直搞的不是很清楚。最近仔细分别用两种方式写了一次代码,总算搞清楚了。其实归结到就一句。IO完成后的回调处理是否支持多线程处理。区别很简单。在进行WSARecv,WSARecvFrom,WSASend,WSASendTo函数调用之后,如果使用Overlap IO,则需要使用WaitForMultiEvents把所有的Overlap的Event数组作为参原创 2013-05-31 09:38:53 · 2318 阅读 · 0 评论 -
vs2010析构过程与虚函数指针
在vs2010中,调用析构函数后,该对象的虚函数指针,会指向基类的虚函数表。比如:class TBase{public:virtual void TT(){printf(__FUNCTION__"\n");};}class TChild : public TBase{public:virtual void TT(){printf(__原创 2013-05-20 14:41:14 · 931 阅读 · 0 评论 -
虚函数调用汇编
tP->TV();00F2167A mov eax,dword ptr [tP] // 把对象指针放入eax00F21680 mov edx,dword ptr [eax] // 对象指针地址的最前面放置着该对象的虚地址指针,取虚地址指针00F21682 mov esi,esp 00F21684 mov原创 2013-03-20 19:51:41 · 912 阅读 · 0 评论 -
从汇编看指针和引用
int i1 = 1, i2 = 2; int& ir = i1; int* ip = &i2; void* vp = (void*)((size_t&)(ip));00DF3CC4 mov eax,dword ptr [ip] 00DF3CC7 mov dword ptr [vp],eax void* vp1 = (void*)((size_原创 2013-03-21 11:18:30 · 1479 阅读 · 2 评论 -
获取成员函数地址3种方法
class IntTT{public: virtual void TV(){printf(__FUNCTION__"\n");};};typedef void (IntTT::*Func)();union{ long long addr; Func f;}ut;void main(){ ut.f = &IntTT::TV; void* p2 = (void*)&原创 2013-03-20 19:46:28 · 1511 阅读 · 0 评论 -
vs2012 STL vector
最近项目的开发库大量使用了STL,为了确认内存已经性能问题,只能拿起代码看看。vs2012使用的STL是由Dinkumware维护的P.J. Plauger STL版本。与侯捷大作的SGI STl差距还是很大的。而且vs2010开始,该版本进行了一些c++0x的优化,据说性能有不少的提升。所以拿起代码来看看吧。借侯捷的话说就是源码之前,了无秘密。先看使用最多的vector吧。初始化原创 2012-12-22 11:15:23 · 2496 阅读 · 0 评论 -
C++ POD
最近由于同事在代码中对于memset的滥用,导致了服务器一系列的问题。所以接触到了is_pod.在此顺便了解了一下POD.总结如下:POD : 仅仅有Plain Old Data的类型就是POD类型.Plain Old Data包括如下:The actual definition of a POD type is recursive and gets a lit原创 2013-03-12 13:55:10 · 877 阅读 · 0 评论 -
依赖工程的关字节对齐问题
最近由于项目的字节对齐导致了2次比较诡异的内存问题。这里进行一次总结,首先描述一下第一次的现象。我们项目的网络是使用IOCP做的,是一个包含IOCP封装和本地数据结构与网络字节流的序列化和反序列化的一个库。作为一个lib客户端和服务器共用的。一次客户端的开发发现协议内容解析一直不正确,跟踪调试发现同一个结构体大小一下子20,一下子24。然后仔细一看,在lib里面是24,在客户端代码里面原创 2013-01-07 11:06:06 · 1024 阅读 · 0 评论 -
STL Performance
最近项目在vs2010上开发,发现有些同学在大量使用STL做服务器的一些Lib开发。我表示会非常有问题。为了确认哪些需要修正,我准备重新看一下简单的容器的代码。然后发现vs2010相对于vs2008的变化很大。查了一下资料看看到底有什么变化:http://blogs.msdn.com/b/vcblog/archive/2009/06/23/stl-performance.aspx1.引翻译 2012-12-21 14:38:57 · 660 阅读 · 0 评论 -
vs2010的c++0x支持
http://blogs.msdn.com/b/vcblog/archive/2008/10/28/lambdas-auto-and-static-assert-c-0x-features-in-vc10-part-1.aspxhttp://blogs.msdn.com/b/vcblog/archive/2009/02/03/rvalue-references-c-0x-features-in原创 2012-12-21 19:18:35 · 1062 阅读 · 0 评论 -
vs2008 sp1 regex
vs2008 sp1添加了TR1, 开始支持如下内容:Smart pointersRegular expression parsingNew containers (tuple, array, unordered set, etc)Sophisticated random number generatorsPolymorphic function wrappersT转载 2012-12-21 22:55:29 · 1311 阅读 · 0 评论 -
CrashBalloon_1003
这个题目读题错了两次。首先分数是乘起来,需要进行因式分解,结果理解错了,当成加法了。接着是没有注意如果小分数计算错误,就需要判定大分数胜利的。这里说法比较绕,叫做challenge would not be upheld。没有理解。直接导致了我以为测试需要大数运算。失败。还有就是g++的强转需要()把类型给括号起来的。vs是不用的。导致了我一次不能编译错误。先上一个原创 2012-12-07 08:23:32 · 699 阅读 · 0 评论 -
Lua的默认metamethod列表
metamethod"add": + 操作。下面这个 getbinhandler 函数定义了 Lua 怎样选择一个处理器来作二元操作。 首先,Lua 尝试第一个操作数。 如果这个东西的类型没有定义这个操作的处理器,然后 Lua 会尝试第二个操作数。 function getbinhandler (op1, op2, event) return metat原创 2012-11-23 13:06:07 · 1384 阅读 · 0 评论 -
Visual studio使用技巧
1. Debug对于指针,一般debug在auto和local里面显示的是第一个地址的值。其他的不显示。在watch里面写ptr,n就可以显示n长度的数组数据原创 2012-12-03 10:30:29 · 511 阅读 · 0 评论 -
记录一下C++和C#中的字符串处理与编码格式的问题
下面是字符、字节、编码格式的基础知识:http://www.regexlab.com/zh/encoding.htm程序中涉及的会有几次的编码格式的转换:1. 代码文本,字符串是按我们文本设定的编码方式保存的2. 代码运行期间,字符串在内存中是以一种编码方式保存的3. 代码如果产生字符串输出,输出到问题的字符串不同的IO类会产生不同编码方式的保存,当然这个可以设置实现更改因为同一个字符串存在了3次原创 2015-09-02 10:55:44 · 2205 阅读 · 2 评论