Windows
文章平均质量分 78
SuperKuku
在从事游戏开发的6年时间里面,涉及的内容包括运营平台、GM工具、MMORPG、FPS游戏。游戏都已经上线并且稳定运营中,单服务器的承载量在1万-5万之间。
展开
-
visual studio的/stack设置
对于服务器来说,直接吧stack设置大一点。在这个物理内存不是钱的年代貌似一点问题没有。提升了服务器性能,仅仅降低启动速度。但是实际上并非如此。stack资源是跟随这线程来的。每个线程都有自己的stack资源。所以设置了这个后,会根据实际的线程数,内存资源使用量倍增。原创 2015-01-20 16:18:40 · 1391 阅读 · 0 评论 -
获取成员函数地址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 评论 -
智能指针
内存泄漏、野指针肯定是C/C++代码开发过程中需要处理的严重问题。在各种尝试后,技术上出现了智能指针。c++标准库、boost、tr1库中的智能指针包括auto_ptr、shared_ptr、scope_ptr。auto_ptr是最简单的智能指针。auto_ptr对象出了有效区的时候,或者其他的auto_ptr接管的时候。自动释放会调用指针的析构自动释放。所以智能指针就有几个问题:原创 2013-03-18 16:42:58 · 803 阅读 · 0 评论 -
VS2010 STL hashmap
版本是 V5.20:0009hashmap继承于_Hash,基本所有实现都是对于_Hash得封装。这里主要是阅读一下_Hash的代码流程。首先是hash_map声明template<class _Kty, class _Ty, class _Tr = hash_compare >, class _Alloc = allocator > > class hash_ma原创 2013-03-18 12:08:53 · 1964 阅读 · 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 评论 -
有关IOCP性能测试
环境:内网,中间间隔一个路由器服务器:CPU: Intel Xeon W3565 3.20G*4MEM: 4096M步骤:客户端IOCP直接发送当前的TickCount服务器IOCP在OnData里面直接回传客户端根据响应计算延时最后结果:每毫秒处理48个左右来回。之后有一个15-16ms左右的延时。结论:IOCP每个原创 2013-03-31 13:40:28 · 1437 阅读 · 1 评论 -
语音识别库整理
openEars是一个开源的语音识别+TTS库。可以在IOS下使用。 http://www.politepix.com/openears/tutorial/Julius是开源语音双向处理库,不过目前仅对日语支持比较好。 Linux和Windows下都可以使用。 http://julius.sourceforge.jp/en_index.phpSAPI原创 2013-03-29 10:23:06 · 3171 阅读 · 0 评论 -
float, int , int64计算性能
虽然说有了FPU和各种扩展指令集后,盛传浮点数的计算性能已经和整形非常接近了,只有几倍的CPU周期差距了。甚至都是一样1~2个CPU周期就计算完毕了。还有x64的cpu出来后,x64得寄存器对于64位的计算和32位的计算也是性能几乎相同了。时间是检验真理的唯一标准,现在实验如下:CPU: Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz (2原创 2013-03-12 10:53:24 · 3587 阅读 · 1 评论 -
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 评论 -
AR9002连接无线路由器失败
新买的华硕n43S使用的atheros AR9002无线网卡,发现老是找不到自己家的路由器。一定距离内的路由器就找不到了,非常奇怪。然后看了一下设备设置,发现里面比以前多了一个802.11 bluetooth high speed。发现现在的WIFI还支持蓝牙了。禁掉。无线网络连接OK了。 原来却是存在蓝牙3.0和WIFI信号冲突的问题。原创 2013-02-20 10:21:13 · 1348 阅读 · 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 评论 -
虚函数调用汇编
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 评论 -
curllib的编译
http://blog.csdn.net/zengraoli/article/details/9189449额外转载 2014-11-03 16:45:23 · 727 阅读 · 0 评论 -
有关服务器协议设计的总结
有关服务器协议设计的总结下面内容都是经验教训,与大家共勉。1. TCP、UDP对比一下吧a) TCP优点 i. 按字节流保续 ii. 只要连接在,保证到达 iii.原创 2014-03-04 21:36:17 · 1506 阅读 · 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 评论 -
NP使用经验——中国区慎用
1. Np中国没有什么技术能力,都是支持团队,他们没有积极解决问题的意愿,能力也有限,反馈速度也较慢。例如我们这边发现有个客户端问题玩家进不了游戏,问np是不是np的问题,他们会查一下说有这个问题,后面又发现其他问题,问一下,说确实也有这个问题也无法解决,如此往复。 2. windows升级后,NP一定会禁止登陆发114报错,这个是np遗留问题,硬伤,无法解决转载 2013-12-17 14:09:40 · 1775 阅读 · 0 评论 -
游戏的登陆和离线流程思考
1.登陆流程a.LGW connect tokenverify versionverifyb.LGW->Cluster Login1b.Cluster->GW Occupyc.GW->Cluster Occupy Ackd.Cluster->LGW GWOccupyNtfe.LGW->Client GWOccupyNtf MD5Ntff.LGW Disconnect原创 2013-08-01 16:59:51 · 1052 阅读 · 0 评论 -
IOCP系统Bug
对IOCP对象进行GuidDisconnectEx。很小的概率会导致没有IOCP返回。具体原因还不清楚,已经排除没有进行适当IOCP的问题。我们把其成为僵尸问题。目前的解决方案是记录连接对象的GuidDisconnectEx调用次数,如果超过4次,就直接进行Closesocket操作。原创 2013-07-30 11:08:53 · 857 阅读 · 0 评论 -
Sharp 60x640a的那点事
当时觉得买电视有啥,结果还是被一些小事弄得浪费不少时间。1. 3D.x640a只支持快门式的3D电影。蓝光里面的红蓝之类的3D电影就别想看了。去http://bbs.cnliti.com/下点上下格式的3D电影看吧。目前我家电视看变形金刚3 百事通版的电影,完全没有办法看。快速动作的3D完全是断开的,一卡一卡的(不是网络卡,是播放影像卡)2.家庭网络x640a直原创 2013-07-17 07:07:05 · 1592 阅读 · 0 评论 -
Overlap IO与IOCP对比
有关Overlap与IOCP的区别一直搞的不是很清楚。最近仔细分别用两种方式写了一次代码,总算搞清楚了。其实归结到就一句。IO完成后的回调处理是否支持多线程处理。区别很简单。在进行WSARecv,WSARecvFrom,WSASend,WSASendTo函数调用之后,如果使用Overlap IO,则需要使用WaitForMultiEvents把所有的Overlap的Event数组作为参原创 2013-05-31 09:38:53 · 2318 阅读 · 0 评论 -
window 时间获取
在windows中有几种类型的时间函数time(): 获取从1970.1.1 0:0:0开始的秒数。精度秒timeGetTime(): 获取服务器开机以来的时间。最长49.7天。精度系统时间片精度,基本保证时间精度在1-16之间。基本上是1ms左右GetTickCount(): 获取服务器开机以来的时间。最长49.7天。精度系统时间片精度。win7 15-16msQueryPerf原创 2013-05-22 18:21:42 · 799 阅读 · 0 评论 -
Buff系统框架设计
Buff的配置文件BufType: 1: 精神类Buf 2: 物理类Buf 3.元素类Buf 4.其他类Buf 5.被动类BufBufSubType: 1000-1999 精神子类 2000-2999.物理子类 3000-3999.元素子类 4000-4999.其他子类 5000-5999.被动子类。所以子类可以唯一标识一个Buff的类别 OppGroupId: 表明该Grou原创 2013-01-22 16:29:53 · 5019 阅读 · 0 评论 -
成就系统框架设计
成就系统配置成就参数操作类型:1位 8位 16位 32位AchivementGroup:同一种成就组成一组,比如杀死3个敌人,杀死10个敌人Param1CheckType: 0:忽略 1:= 2:> 3:= 5:ModifyType:0:忽略 1:8位加 2:16位加 3:32位加 4:位设置 5:8位设置 6:16位设置 7:32位设置UseEventParam: 0:使用M原创 2013-01-21 09:44:43 · 5159 阅读 · 0 评论 -
vs2008工程转变vs2010工程
我们的服务器工程无论是c++还是c#直接转换就完成了,主要问题出在了1.property sheet转换成props文件上和对于#import的使用。转化了以后少了不少的内容,2.import不能自动链接system32文件夹下的内容了。3.原来的工程之间dependencies关系的时候,build的时候会自动链接。现在已经不行了,现在需要专门设置reference. 在工程属性的C原创 2012-11-13 10:19:13 · 867 阅读 · 0 评论 -
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 评论 -
版本发布脚本
版本初步发布的脚本,用bat写的。主要涉及变量,for,set,findstrbat恶心的一点就是需要你注意空格。set var=xx 千万注意 var=xx中间不能有空格哦,不然赋值会失败for使用注意的一个就是变量延时脚本如下:@echo off:版本相关变量定义set VersionPath=..\SVersion.hset ReleaseBinPath=原创 2012-11-02 17:16:29 · 1043 阅读 · 0 评论 -
C4748: /GS的处理记录
几天服务器工程的release版本编译不通过了。服务器exe工程在链接过程中产生了多个C4748。不过奇怪的是报告的文件都是依赖的lib工程非常正常的函数上报的内容。warning C4748: /GS can not protect parameters and local variables from local buffer overrun because optimizations原创 2012-11-02 11:09:29 · 4885 阅读 · 0 评论 -
应答式TCP服务器的幽灵连接
产生方式:服务器提供应答式服务,没有应用层心跳。客户端连接后,客户段产生异常(异常关机,异常断网)。 服务器的客户端连接状态仍然是Enstablish状态。这个主要是因为TCP代码的Keep alive周期很长导致。所以这种应答式TCP服务器,最好提供心跳。不然会很快发现服务器都是幽灵连接,导致资源耗尽。原创 2012-04-24 13:43:10 · 1304 阅读 · 0 评论 -
Sql Server存储过程防注入攻击
所谓Sql注入,就是利用动态构建Sql语句的操作,在输入参中增加额外sql信息从而在执行该操作时顺带进行额外的地数据库操作的攻击方式。使用存储过程可以很大程度上避免Sql注入攻击,但是并不能避免Sql注入功能。只要存在Sql语句动态生成,而传入参包括字符串,就可以产生Sql注入。目前在存储过程中需要进行Sql语句动态生成的基本是因为条件语句的动态形成原创 2012-04-02 07:18:18 · 4722 阅读 · 0 评论 -
计划任务0x80070005
Administrator直接运行User组用户的计划任务(启动时执行),结果显示任务未启动,日志错误0x80070005。(计划任务运行时用户没有登录)80070005是权限问题。尝试修改启动对象,原来是bat修改为.txt则能正常运行。所以怀疑是CMD 权限问题。由于用户没有登录导致该用户没有cmd执行,读取权限。修改%system%\system32\cmd.exe给与运原创 2012-03-19 11:01:43 · 2121 阅读 · 0 评论 -
Win的整数原子操作
首先说明使用限制:1.32位边界对齐。否则在多处理器x86构架和非x86构架上面会失效。因为该函数是通过x86 CPU在总线上维持一个硬件信号,组织其他CPU反问该内存实现的。2.仅仅在对于变量都是用Interlocked系列函数有效。因为其他非原子操作可能导致数据部分覆盖。加,减:LONG __cdecl InterlockedExchangeAdd( __ino原创 2012-03-15 08:16:07 · 934 阅读 · 0 评论 -
游戏服务器压力测试总结
游戏服务器压力测试总结从游戏内测开始到现在做了所有服务器压力相关的测试.现在进行总结.暂时还不方便说游戏架构,所以不上图了。一.首先明确需要测试压力的内容:1.游戏服务器硬件a.硬盘I/ob.内存c.CPU2.网络压力a.长连接a1.最大连接数a2.流量(内网、外网、进、出)b.长连接短周期(类似Http的TCP应用,这个比较特殊的一个需原创 2012-03-13 16:44:23 · 5101 阅读 · 1 评论 -
Visual studio使用技巧
1. Debug对于指针,一般debug在auto和local里面显示的是第一个地址的值。其他的不显示。在watch里面写ptr,n就可以显示n长度的数组数据原创 2012-12-03 10:30:29 · 511 阅读 · 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 评论 -
Physx线程调研
在服务器运行过程中,发现Physx线程竟然增加到了8个。非常奇怪。然后我对Physx的线程进行了一次调研,以了解这些线程的功能和这些线程是否可控。1.Physx文档中涉及的线程有3种a.Simulator线程。如果设置了NX_SF_SIMULATE_SEPARATE_THREAD会使得每个sence在simulator和fetchresult之间开启一个线程进行物理模拟。我们称之为原创 2013-01-18 10:32:32 · 1073 阅读 · 0 评论 -
Unity3d脚本中文支持
打开\Unity\Editor\Data\Resources\ScriptTemplates,看到了几个文件。这几个文件就是Unity生成对应的脚本时copy的文件。这些文件都使用了ASCI的编码方式,导致了对中文的不支持。把这几个文件都改成Unicode Bom编码方式存储,以后生成的新的脚本就都可以中文注释了。修改编码方式可以使用notepad++ 格式->转为UTF8编码格式,然转载 2013-01-25 20:59:01 · 1543 阅读 · 0 评论 -
Physx Trigger
Physx Trigger1. Trigger启用启用Trigger必须要设置一个Trigger属性的Shape.设置了Trigger属性,就没有碰撞属性了2. DynamicActor注意由于Trigger Shape无法计算mass.所以如果只有单个Shape构成的动态Actor需要指定mass和inertia否则生成Actor会报错.NxActor::chec原创 2013-01-09 16:20:59 · 1215 阅读 · 0 评论 -
Physx范围伤害检测
区域判断使用Overlap来实现。 Overlap有两种模式1.列出所有范围内的Shape2.判断范围内使用有Shape#include #include "NxPhysics.h"#include "ErrorStream.h"#include "Utilities.h"#include "SamplesVRDSettings.h"#include "FileLo原创 2013-01-08 20:08:47 · 1406 阅读 · 0 评论 -
Physx减少碰撞检测的优化
首先说明这里的碰撞检测(Collision Detection)包括的内容:1. 接触 Collision2. 触发 Trigger3. 射线检测 Raycast4. 范围检测 Overlap检测过程:首先Physx本身并不是每次都遍历所有2v2组合,判断是否需要判断。而是自动把Shape根据区域进行了划分。每个shape只会与自己附近的Shape进行碰撞检测。原创 2013-01-08 18:12:03 · 3543 阅读 · 0 评论 -
进程内存查询器简单代码
#include#includetypedef unsigned int uint;void main(){ uint iPId; printf("Enter ProcessId:"); scanf("%d", &iPId); HANDLE hProc = OpenProcess(PROCESS_VM_READ, FALSE, iPId); if(hProc == INVAL原创 2013-01-08 14:03:39 · 677 阅读 · 0 评论