自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

转载 Linux环境进程间通信(五): 共享内存

转至:http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html简介:系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面。系统V则是通过映射特殊文件系统shm中

2011-12-24 15:56:28 1456

转载 Linux进程间通信源码剖析,共享内存(shmget函数详解)

转至:http://blog.csdn.net/lanmanck/article/details/6092995shmgetint shmget(key_t key, size_t size, int flag);key: 标识符的规则size:共享存储段的字节数flag:读写的权限返回值:成功返回共享存储的id,失败返回-1key_t key-------

2011-12-24 15:55:23 18028

原创 服务器操作脚本

#!/bin/shtarget_port="......."cur_usr=`whoami`#4399 3 #91wan 3 IP_LIST="113........61.......113......"file_name=""server_count=0OPR_SCP="false"OPR_STOP="false"OPR_RESTA

2011-12-20 21:51:39 622

原创 软件构建中的设计

1)关键的设计概念软件的首要技术使命:管理复杂度。    在软件的架构层次上,可以通过把整个系统分解为多个系统来降低问题的复杂度。子系统间的相互依赖越少,你就越容易在同一时间里专注问题的一个小部分。精心设计的对象关系使关注相互分离,从而使你能在每个时刻只专注于一件事情。    保存子程序的短小精悍也能帮助你减少思考的负担。在最高抽象层次上工作,也能减少人的脑力劳动。理想的设计设计特

2011-12-18 16:22:46 459

原创 玩家的管理

玩家的管理1) 所有的玩家连接对象从player对象池g_pPlayerPool中分配2) 每个连接上的玩家分配给一个player对象class Player{public :    Player( BOOL bIsServer=FALSE ) ;    virtual ~Player( ) ;  ...................  virtual B

2011-12-16 15:21:53 651

原创 gameserver 线程

1) 主线程 while( IsActive() ) 不停的循环着。   1 读取某些配置文件,达到"热更新"的效果   2 全局管理器的心跳,比如副本管理器等2) 场景线程组 每一个地图场景一个线程,同一个类型的副本也是一个线程3) 连接线程 负责接受客户端的连接,成功之后把连接给相应的场景线程 4) 数据库线程组 还有另外辅助两个线程5) server线程 负责ga

2011-12-16 11:30:23 703

原创 协议包

1)包组成: 包大小(包头加上内容) + 包ID + 校验号 + 具体内容2)从应用程序缓存区读取的过程:根据包ID对包头的包大小字段进行校验,除了没接收完的continue之外,其他断开连接   读取包头 -》  校验包ID -》  包大小是否超过最大值(这种包所能达到的最大值) -》判断是否接收完 -》如果是定长的包,判断包的确切长度3)校验完,把包从缓冲区里读取出来ps:

2011-12-14 16:02:46 601

原创 linux screen 的使用

有时更新服务器时要执行一些操作数据库的脚本,但是家里网络有时不稳定,如果脚本还没执行完掉线了那就悲剧了。这时screen就可以帮上忙了。先记一些简单的,顶着用就行了,复杂的需要时再看。script /dev/null1)在执行脚本之前先执行 screen 命令,然后执行脚本2)如果这时想做其他事,那么执行 ctrl+a+d,退出screen,脚本在后台继续执行着(这是掉

2011-12-13 17:53:16 496

转载 linux下damon的实现

参考http://zxuhong.blog.51cto.com/368977/99283/注:Linux下可以直接调用damon函数来实现daemon进程,没必要重新实现,理解其原理即可。在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下int daemon (int __nochdir, int __noclose);如果__noc

2011-12-13 16:43:05 3402

原创 数据库线程操作过程

数据库线程管理:1) 根据配置文件启动相应个数的线程2) 调用管理器 SendThreadPacket 把数据库操作包发送到没在处理包的数据库线程3) 如果所有的线程都忙着,包放在管理器的cache里(包缓存在管理器,不是线程)4) 在每次心跳,到cache拿包发送到空闲的DB线程5) DB线程包处理时,从管理器拿相应线程的数据库句柄,使用上一篇的数据操作类实现数据库各种操

2011-12-12 20:02:13 533

原创 底层数据库

1) 底层基本的数据库操作类class DBOpBase{    public:        DBOpBase(Connection* pConnection)        {           ...................        }        ~DBOpBase()        {           ..........

2011-12-12 15:59:25 686

转载 C++中的INL

转至:http://www.cnblogs.com/tekkaman/archive/2011/04/20/2022031.htmlinl 文件是内联函数的源文件。内联函数通常在c++头文件中实现,但有的时候内联函数较多或者出于一些别的考虑(使头文件看起来更简洁等),往往会将这部分具体定义的代码添加到INL文件中,然后在该头文件的末尾将其用#include引入。由此也可以看到inl文件

2011-12-12 14:22:46 654

原创 对象池的使用

1)一个模板类的对象池,templateclass ObjPool{public:    ObjPool(BOOL bThreadSafe=TRUE)    {    }    ~ObjPool( VOID )    {          }    BOOL Init( INT nMaxCount = 10 )    {

2011-12-11 22:19:51 525

原创 ulimit

Provides control over the resources available to the shell and processes    it creates, on systems that allow such control.help ulimit ,我们可以看到这个解释。 用ulimit 命令对core文件,stack大小等的设置,只能是对当前shell和它创

2011-12-08 10:12:36 675

转载 shell中的wait

cat test1 | uniq > newtest1 &cat test2 | uniq > newtest2 &waitdiff newtest1 newtest2为了比较newtest1和newtest2的不同,必须先让以上的两个cat命令成功并执行完成并生成newtest1和newtest2,否则diff的执行将错误。。。而wait就是保证以上命令执行完成之后才执行di

2011-12-06 23:32:38 21291

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除