- 博客(11)
- 收藏
- 关注
原创 c语言中的“时光倒流--非局部跳转longjmp
<br />c语言中的“时光倒流”--非局部跳转longjmp<br /> <br />#include <setjmp.h><br />jmp_buf a;<br />longjmp(a,1);//让程序的执行流回到当初setjmp返回的时刻,并且<br />返回由longjmp指定的返回值(longjmp第二个参数,这里是值1)<br />setjmp(a);<br />void JMP()<br />{<br /> longjmp(b,1);<br />}<br />int function()<b
2010-06-29 13:57:00 865
转载 cpu亲合度(affinity)设置
<br />可以在linux下使用man sched_setaffinity查看相关使用说明<br />long sched_setaffinity(pid_t pid, unsigned int len, <br /> unsigned long *user_mask_ptr);<br />long sched_getaffinity(pid_t pid, unsigned int len,<br /> unsigned long *us
2010-06-25 16:35:00 1767 1
原创 网游中将聊天部分与游戏逻辑分离
考虑到现在的游戏服务器是在多CPU上运行的,为了更好的利用多CPU的功能,设想是将游戏中与逻辑关系不是很大的聊天部分分离出来,成为一个单独的服务器,从而提高游戏的业务处理速度,并且能充分利用CPU资源。聊天分离后做成一个聊天服务器,使用的策略是用空间换时间。会将所用到的相关数据都放入共享内存中,使用KEY值进行查找/增加/删除。通常的聊天服务器按聊天的类型可以分为:全服,国家, 地图, 同屏, 好友, 组队,帮派,私聊其中,对于地图,好友,帮派聊天消息,通过已建好的映射表,就可以快速分发聊天内容。对
2010-06-23 15:35:00 3025 2
转载 mysql数据同步原理
MySQL同步机制基于master把所有对数据库的更新、删除等)都记录在二进制日志里,MySQL同步功能由3个线程(master上1个,slave上2个)来实现。执行 START SLAVE 语句后,slave就创建一个I/O线程。I/O线程连接到master上,并请求master发送二进制日志中的语句。master创建一个线程来把日志的内容发送到slave上。这个线程在master上执行 SHOW PROCESSLIST 语句后的结果中的 Binlog Dump 线程便是。slave上的I/O线程读取ma
2010-06-22 15:13:00 2919
转载 大规模服务设计部署经验谈
大规模服务设计部署经验谈:http://www.mvdirona.com/jrh/talksAndPapers/JamesRH_Lisa.pdf
2010-06-21 15:00:00 882
原创 回合制的MMORPG中分离战斗
在想一个问题,在回合制的MMORPG中分离战斗成一个新的进程,使用多进程(或多线程)方式来提高游戏的并发性能。方法:先分成一个逻辑主进程和一个战斗主进程,战斗以外的操作处理都在逻辑主进程中完成,当发生战斗时,把角色的指针传给战斗主进程,并设置进入战斗标志。逻辑进程和战斗进程通过共享内存来共享数据。在战斗主进程中可使用多线程模式,根据机器的性能设置多线程的数量,一个战斗为一个session,一个线程处理多个session.在战斗过程逻辑主进程收到角色的消息时,不用立刻处理,而是把消息放入角色的消息队列(聊天信
2010-06-18 17:28:00 1090
转载 ROSE反向工程(从源程序到类图)
· 1.在组件视图中创建一个组件(component)2.点右键并选择Open Specification3.选取General,选取合适的Stereotype,并在lanaguage中选定语言,比如ANSI C++4.点OK5. 5.在罗辑视图中创建一个能代表这个视图的包。例如MusicDJ7.打开ROSE的Tools菜单下的ANSI C++,并选取Open ANSI C++ Specification...8.在打开的对对话框中的File页面,选取源码的根目录文件(.cpp or .h
2010-06-17 11:00:00 719
原创 yacc 语法分析
语法定义用于定义标记序列以及应得到的结果;yacc 语法定义的基本结构是定义预期的标记序列 Yacc 文件格式:关于yacc配置文件的一例子:%{#include "stdafx.h"int yylex(void);void yyerror(char *s);%}%%/* beginning of rules section */%%int analyze(const char *pszFile){ //。。。}%{ /* 全局函数及头文件声明*/%}/*标记定义*/%%/* Parsing
2010-06-11 14:51:00 1464
转载 vim 常用命令
移动光标类命令 h 光标左移一个字符 (Backspace) l 光标右移一个字符 (space) k 光标上移一行 j 光标下移一行 (Enter) 0 (注意是数字零)光标移至当前行首 $ 光标移至当前行尾 nG 光标移至第n行首 n$ 光标移至第n行尾 gg 光标移至文件第1行 G 光标移至文件最后1行 屏幕翻滚类命令 Ctrl+u 向文件首翻半屏 Ctrl+d 向文件尾翻半屏 Ctrl+f 向文件尾翻一屏 Ctrl+b 向文件首翻一屏 插入文本类命令 i 在光标前 I 在当前行首 a 光标后 A 在
2010-06-08 15:09:00 424
原创 lex词法分析
lex 工具使用一个配置文件来生成相应的 C 源代码,然后,可以用它来创建独立的应用程序,或者在您自己的应用程序中使用它。配置文件定义了需要在待分析的文件中查找的字符序列,以及当发现该序列之后应该进行什么操作。配置文件格式为:1.代码中的第一块由%{...%} 定义,表示将其中的文本插入到生成的 C 源代码中;2.代码中的第二块由 %% 序列标识,其中包含了要识别的字符串输入和相应结果的定义;如:"if“ return IF; 在 yacc 中,将使用这个名称来建立相应的语法。3.用户子程序部
2010-06-08 14:40:00 1100 1
原创 mysql一个连接的处理效率
硬盘的平均存取时间由寻道时间和读写时间两部分构成,假定一个7200转的硬盘平均存取时间为10ms.再假定机器内存足够,可以把所有的索引数据cache起来,不计mysql查询索引数据的时间。则理论上的每秒处理数(以单表的select为例)=1000ms/10ms=100(个)
2010-06-08 09:24:00 940 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人