- 博客(23)
- 资源 (40)
- 收藏
- 关注
原创 找出满足条件数对的个数
有一个无序整数数组,其中每个数都不相同,且每个数的取值范围为[1,N]。 设计一个时间复杂度为O(N)的算法,找出满足下面两个条件的数对的个数:1) 相邻两个数的和也在这在这个数组之中;2) 这两个数本身也相邻。答: 这个数组中的数有几个特征:(1) 每个都不相同;(2) 取值范围为[1,N], 完全满足计数排序的要求。不过这里不是要排序,但是可以用相同的思想:
2012-09-21 18:37:28
2042
原创 棋牌游戏服务器架构: 详细设计(二) 应用层设计
这里的应用层,指的是CenterServer、LogonServer、LogServer、RoomServer等几个服务器,另外还包括游戏模块的设计。不过游戏模块和前4个服务器的设计很不相同。这里先说一下服务器应用的详细设计。 这上面提到的四4服务器都需要响应客户端(这里的客户端的意思是泛指)的请求,进行数据库操作,同时还要能够配置,以及显示系统运行的状态信息等。这里会采用MVC
2012-09-16 19:35:44
6326
原创 棋牌游戏服务器架构: 详细设计(一) 内核设计
内核的几个组件被设计成Service,也就是说这几个模块都要实现如下接口:图1 IService接口 Start方法用来启动服务。 Stop 方法用来关闭服务。 IsService 方法用于查询当前服务是否正在工作。 内核中的几个Service都不能够直接创建,Applications在使用这些Service
2012-09-16 15:03:52
8402
原创 棋牌游戏服务器架构: 详细设计(三) 数据库设计
主要有3类Database: ServerInfoDB,UserInfoDB和GameDB。 ServerInfoDB主要存储的是游戏列表的信息,UserInfoDB存储玩家的全局信息,而GameDB就是积分以及积分变化情况。下面分别加以描述。1. ServerInfoDB ServerInfoDB主要存储游戏列表信息。主要有以下几个表: 1. GameTy
2012-09-16 12:35:34
12723
1
原创 棋牌游戏服务器架构: 部署
先看一下,下面这张可能的部署图吧。图1 系统布署图 在这个图中,可以看到,客户端的形式多种多样,可能是pc上的一个可执行文件,也可能是通过浏览器打开的一个网页,甚至于手机客户端。它们都通过internet连接到游戏服务器。 在这个部署中有1个CenterServer,1个LogServer,3个LogonServer和很多个RoomServer
2012-09-16 00:34:32
11005
原创 棋牌游戏服务器架构: 总体设计
首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构。网狐棋牌最令人印象深刻的是其稳定性和高网络负载。它的一份压力测试报告上指出:一台双核r的INTEL Xeon 2.8CPU加上2G内存和使用共享100M光纤的机子能够支持5000人同时在线游戏。 在研究其服务器框架后发现,它的网络部分确实是比较优化的。它主要采用了Windows提供的IO完成端口来实现其网络组件。本服
2012-09-15 23:23:40
25137
原创 棋牌游戏服务器架构: 总体设计
首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构。网狐棋牌最令人印象深刻的是其稳定性和高网络负载。它的一份压力测试报告上指出:一台双核r的INTEL Xeon 2.8CPU加上2G内存和使用共享100M光纤的机子能够支持5000人同时在线游戏。 在研究其服务器框架后发现,它的网络部分确实是比较优化的。它主要采用了Windows提供的IO完成端口来实现其网络组件。本服
2012-09-15 23:22:13
1637
原创 Postgresql源码分析: 动态Hash
1. 为什么需要动态hash 平常的hash,大多是下面这样一副面孔: 图1 一个静态hash结构 这种Hash维护着一些桶,就是图上左边的部分,每一个桶中装着hash值相同的数据。这些具有相同hash值的数据形成一个链表。这种hash的一个最
2012-09-13 20:43:28
3844
1
原创 postgresql 堆分配器mmgr详解
mmgr是postgresql的内存管理模块,其代码分布在aset.c, mctx.c和portalmem.c这三个文件之中。这里主要分析它的堆内存的管理机制,也就是aset.c文件中的内容。 AllocSetContext是堆内存管理的主要结构,其定义如下:typedef struct AllocSetContext{ MemoryContextData
2012-09-12 00:00:44
1857
1
原创 在ubuntu上编译gcc会到的问题及解决方法
这段时间,我在用软件实现一个3D图形库,因为一些原因,想要使用c++11中的东西。被迫自己编译gcc4.7. 在这个过程中传到了很多的问题,经过不懈的努力终于是成功编译出来了,现在记录一下,算作个备份。 我是在ubuntu11.10上编译的.会到了如下错误1.configure错误,说没有gmp,什么的。2. undefined reference to `lexe
2012-02-07 09:07:49
1888
原创 如何提高Brew开发的效率
<br /> 我们可以细数高通给开发者带来的不便:<br /> (1)对内存没什么保护,很容易就crash啦;<br /> (2)Crash也就算了,机器都给弄死了;<br /> (3)机器死了也就死了,死了可以重启,可是重启速度超慢;<br /> (4)重启速度已经够慢了,可还得忍受连到PC机上的蜗牛速度;<br /> (5)文档不够好,比MSDN差得那不是一点点。<br /> <br /> 这样下来,开发brew程序的效率就明显要比开发其他平台程序低很多。老板可不会管你这一套,他们
2010-12-06 09:36:00
743
1
原创 异步
<br />我以前很排斥异步调用,一看到异步调用就觉得特别扭:同步调用多好,一步步地执行,一异步程序的运行顺序不大直观。可是近段时间有了新的体会,觉得有时异步真有它的好处。记下来,作个备忘。<br /> 先要说说那个让我觉得非得用异步调用不行的场景吧。这涉及到Command模式,为了对一个业务逻辑建模我写了一大堆Command,并把这此Command加到一个队列中。每次从这个队列中取出一个来执行。类图如下:<br /> <br /> <br />Continue函数的实现看起来像这样:<br
2010-12-06 09:07:00
548
原创 在VS中如何选择BMP工程的编译器
<br /><br /> 在VS中如何选择BMP工程的编译器<br />在VS中你可以通过以下步骤选择默认编译器:Tools->Options->BrewMP,然后在ARM Compiler中选择你想使用的编译器。<br /><br /> 郁闷的是,我使用的RVCT4.0没有出现在这个下拉列表中,仔细研究了一下,发现可以通过make命令行选项指定编译器:<br />右键->
2010-10-25 10:52:00
829
1
原创 再谈Singleton
再谈Singleton<br />前些时候写了一篇关于Singleton模式的使用心得,发布在这个页面:<br />http://blog.youkuaiyun.com/Li_Shugan1/archive/2010/08/09/5797873.aspx<br />后来在实际应用的过程中又出现了一些问题,其间查了一些资料,主要是Modern C++ Design,解决了Singleton在C++中会出现的问题,其方案多有借鉴Modern C++ Design中的内容,但是对析构顺序的控制,是自己的想法,自我感觉要优于这
2010-10-02 20:01:00
668
原创 How to debugging on BMP deviceHow to debugging on BMP device
<br /> Pre-Condition<br />1. You should make sure that your device support Brew MP 1.0.2 or newer SDK.Install the Visual studio plug-in<br />1. Open SDK Manager.<br />2. Select Setup tab; <br />3. Install Visual Studio Pl
2010-09-14 11:36:00
741
原创 珍爱生命,远离野指针
Background 估计只要是C++程序员,没有一个不痛恨这个野指针啦,而对于我们这种只能通过log来debug的程序员来说,其恨更深。Solution每次看到形如下面的代码时A* p1 = new A;A* p2 = p1;…delete p1;我都有一种想要将p2也置成空的冲动,但往往都不遂我心愿,因为在实际中p1,p2的出现实在是神出鬼没,让你防不胜防也烦不胜烦。鲁迅先生说过: 不在沉默中暴发就在沉默中灭亡。幸好,我没有灭亡,所以我要暴发。在防够了,烦饱了以后,我下定决心,要端掉这
2010-09-06 09:22:00
1187
原创 C风格的转型和C++多继承打架
各种Crash问题始终幽灵一般地围绕着C++程序员,,如果只是个指针没判空,那观察家也没什么,可有时程序真是挂得莫名其妙,这不,今天我就被这“死亡之吻”狠狠地吻了一口。程序结构模拟如下图,Sign继承自Object和Feature,Context中有一Feature的数组,其中装的有指向Sign的指针.Sign的申明像这个样子:classSign:public Feature,publicObjectOutput是这样耿实现的:void Context::Output(){ for(
2010-08-10 08:59:00
1047
7
原创 没有了static, Singleton怎么办?
Singleton的标准实现Singleton模式是GOF 23个模式中最简单地,也是使用地比较广泛地一个模式。其结构如下图所示:其实现大家应该都很了解,不了解的就Google一下,要多少有多少,也可以参考附件中的SingletonStd生活有时不那么美好 Singleton的C++实现依赖于静态变量的使用,在可以使用静态变量的环境中,生活是美好的,可是这个世界上也存在不支持静态变量(Brew,Symbian ,etc) 或者对静态变量的使用有诸多限制(Brew Mobile Platfor
2010-08-09 08:38:00
1773
2
属性列表控件
2007-07-16
Singleton,rar
2010-08-09
无线路由器密码设置模式
2009-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人