- 博客(20)
- 收藏
- 关注
转载 再谈select, iocp, epoll,kqueue及各种I/O复用机制
首先,介绍几种常见的I/O模型及其区别,如下:blocking I/Ononblocking I/OI/O multiplexing (select and poll)signal driven I/O (SIGIO)asynchronous I/O (the POSIX aio_functions)blocking I/O 这个不用多解
2014-06-30 15:05:46 349
转载 GDB 反向调试(Reverse Debugging)
使用调试器时最常用的功能就是step, next, continue,这几个调试命令都是“往下执行”的, 但是很多时候会有这种需求:你在调试的过程中多跳过了几步而错过中间过程,这时候不得不重头调试一遍,非常麻烦。而GDB从7.0版本开始支持反向调试功能,也就是允许你倒退着运行程序,或者说撤销程序执行的步骤从而会到以前的状态。 直观地来看,加入你正在使用GDB7.0以上版本的调试器并
2014-06-30 11:26:28 544
转载 C语言中malloc()和free()深入分析
在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!如
2014-06-27 11:34:21 310
转载 vector&String的适当容量
STL 中 vector 比较神奇的地方,就是它会自动的扩展自己的容量。而这些是在 C/C++ 的低级数据结构——数组里面是办不到的。 合适的扩张: 譬如,在 C++ 中,有如下的代码: const int kSize = 10; int ar[kSize]; 数组 ar 的大小是在编译期间完成,它的内容
2014-06-25 15:14:50 253
转载 事件引擎
//EventEngineT// 发送最大层数#define FIRE_MAX_LAYERNUM 20// 引用最大层数#define REF_MAX_LAYERNUM 5// 事件keystruct __EventKey{ DWORD dwSrcID; // 发送源标识(UID中"序列号"部份) BYTE bSrcType; // 发送源类型 WORD
2014-06-24 17:22:28 913
转载 消息槽
//IEntityServer/////////////////////////////消息投票sink///////////////////////////////struct IMessageVoteSink{ virtual bool OnVote(DWORD dwMsgID, SGameMsgHead * pGameMsgHead, LPCSTR pszMsg, int n
2014-06-24 17:21:01 426
转载 bugfree删除纪录
SET FOREIGN_KEY_CHECKS=0;delete from bf_bug_info where id >=X and id <= Y;
2014-06-24 11:15:58 846
转载 STL的内存管理
STL有很多种allocator,默认采用的是std::allocator,我们沿着这样的头文件路线,可以找到它的最终实现:-> "include/bits/allocator.h" -> "include/i386-redhat-linux/bits/c++allocator.h" -> "include/ext/new_allocator.h"(即是说,std::allocator =
2014-06-20 10:13:30 346
转载 Proactor和Reactor模式继续并发系统设计的扫盲
Proactor和Reactor都是并发编程中的设计模式。在我看来,他们都是用于派发/分离IO操作事件的。这里所谓的IO事件也就是诸如read/write的IO操作。"派发/分离"就是将单独的IO事件通知到上层模块。两个模式不同的地方在于,Proactor用于异步IO,而Reactor用于同步IO。
2014-06-20 09:51:06 335
转载 linux下su与su - 切换到root权限命令的区别
大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户。Linux中切换用户的命令是su或su -。前天我在使用useradd这个命令时,才体会到这两者的本质区别。如图:首先用su命令切换到root身份的,但是运行useradd时,出现错误:bash: useradd: command not found。
2014-06-19 09:59:29 2194 1
转载 epoll_create, epoll_ctl和epoll_wait 实例讲解,总结得不错
NAME epoll - I/O event notification facilitySYNOPSIS #include DEscrīptION epoll is a variant of poll(2) that can be used either as Edge or Level Triggered inter
2014-06-18 11:27:12 452
转载 游戏服务器之多进程架构通信
2、进程内的网络相关线程类型进程内的网络相关线程类型(不包括主线程和逻辑线程),处理进程间通信需要处理的连接的数据发送和接收。、被动连接相关被动连接线程池(1)验证线程(1-1)检查验证超时、验证发来消息的服务器id和服务器ip(服务器之间,依靠中心服务器发来的依赖服务器列表)(1-2)验证账号和临时id和账号(客户端登陆和重登陆)(1-3)验证
2014-06-18 10:46:48 471
转载 Linux下rz,sz与ssh的配合使用
一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地; 与ssh有关的两个命令可以提供很方便的操作: sz:将选定的文件发送(send)到本地机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive)rz
2014-06-18 10:17:04 262
转载 游戏服务器之网络收发线程处理详细分析
业务网络收发线程的循环部分,处理网络数据的接收和发送。设计上:(1)先检查所有连接是否处于正常状态。(2)网络的处理是读优先的,有读才检查写,写的检查是一段时间检查一次(目前是50ms)。实现上通过两个epoll描述符来处理。第一个epoll描述符监听所有连接的读事件,并处理网络数据的接收。第二个epoll描述符监听所有连接的写事件(顺带会检查读事件),
2014-06-18 10:08:54 500
转载 告别cpp&h:hpp文件编写心得
hpp,顾名思义等于.h加上.cpp,在boost、Xerces等开源库中频繁出现,偶在机缘巧合之下,学得一招半式,遂记录如下,以供参考学习。 hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的
2014-06-17 13:57:16 436
转载 一个链接error LNK2019错误的解决方法
一个解决方案中有两个项目,一个项目调用另一个项目中的函数 两个项目分别是test1和test2,test1中有一个函数fun()被test2调用,用法如下://test1.hint fun(int a, int b); //test1.cpp#include #include "test1.h"using nam
2014-06-17 13:56:20 608
转载 关于Flex\AS3 Socket 通信 安全沙箱的问题
一、沙箱和安全策略问题 1、此问题发生在连接时,准确地说是连接前,分别两种情况: 1.本地播放 本地播放时,默认情况下Flash Player将不允许swf访问任何网络。 2.WEB发布 发布在WEB上的swf, 将可能面临跨域的问题。 2、Flash中的通信方式有两种: 1.HTTP
2014-06-17 13:54:52 467
转载 游戏服务器结构讨论(转)
原文地址:http://blog.csdn.net/liuxialong/article/details/6539762有关游戏开发:游戏开发始终是个小项目,另外由于开发时间的限制,软件工程的思想和方法在游戏开发领域并不怎么受欢迎。从游戏开发团队的规模也能看出,基本上只能算小开发团队,有些工作室性质的,那就更简单了。我所了解的早些的开发团队,其成员间没有什么严格的分工,
2014-06-17 13:53:39 655
转载 解决VS2008 没法解析的外部符号 "int _cdecl _AfxInitManaged(void)“,以及无法打开预编译头Debug\XXX.pch
解决VS2008 无法解析的外部符号 "int __cdecl _AfxInitManaged(void)“,以及无法打开预编译头Debug\XXX.pch今天移动了下项目里面的文件目录,为了方便在工程里面重新添加移动了的文件,我把全部文件移除出了工程,然后在添加回来,重新按F7 组建,结果说vc90.idb vc90.pdb两个文件无效。于是我删除了Debug目录,重新F7
2014-06-17 13:52:36 817
转载 layout 快捷
但是layout方式有时候有点bug,不过基本上还可以使用,可以用ctrl+x和ctrl+a(要以前使用,先按ctrl+x再按ctrl+a)来切换。可能layout会造成控制台花屏,使用ctrl+L清屏。
2014-06-17 13:42:34 364
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人