focus on linux, c/c++, lua

共5页: 1 2 3 4 5 
re: 自己动手封装LuaEngine zuhd 2010-05-05 09:47
@陈梓瀚(vczh)
我这里的封装,不如说是脚本文件管理,我对template的使用没有到那个层次,呵呵
re: 自己动手封装LuaEngine zuhd 2010-05-05 09:45
@megax
貌似这个东东不能在linux下使用,需要自己DIY??
@小时候可靓了
我个人觉得
union BLOCK
{
DWORD next;
unsigned char data[BLOCKSIZE];
};
这样写都行,只要能把这个指针的地址保存到 data的前4个字节,后面自己做强制转换就好了,不过BLOCK* next这样的格式是科学的,用void* 或DWORD来声明指针,然后用*(T*)这样的格式去取,就太不和谐了
re: 游戏中的容器设计 zuhd 2010-05-03 09:15
@expter
是必须的,我思考的是无聊的玩家频繁交换两个格子内的物品,不做增减操作,是否有必要给个cold down?
re: 硕士论文致谢 zuhd 2010-04-30 09:51
好文,程序员亦有真情。更期待一文关于“陆凤”的,呵呵,你懂的
buddy, some asm code will make it clear!
看到了这个好报,我仿佛看到了Linus的身影,but, without desitination like linux.我还是要顶一下,国内缺少的就是这种free & remote cooperation!!!希望你们能成功
我只想说楼主你很ass hole,你要是想备忘,拜托不要发到首页好吗!你转到csdn的那些东西只会浪费大家的时间
如果单模块的逻辑单一而且复杂,那就考虑拆出来单独一个进程网络通讯吧,那就永远没有callback了
这种情况我一般会这样做,
class A
{
Root* m_pRoot;
}

class B
{
Root* m_pRoot;
}

class Root
{
A* m_a;
b* m_b;
}

让Root来统一管理所有的数据,然后root提供出一些接口,让a和b来做他们自己想做的事情,a,b去拿root的数据,root来回调a,b这样能解决单向的callback.
re: 方法与工具 zuhd 2010-04-15 09:37
很同意第二条
@小苏
class CTest1
{
public:
CTest1()
{
printf("init\n");
}
};

class CTest2
{
public:
static CTest1 m_test;
};

CTest1 CTest2::m_test;

这段代码按道理讲是和上面的代码功能类似的,
这段是可以打印出来的。
至于上面那段为什么没有打印,
思考中(难道模板必须要实例化才能成为有效代码??),期待高手解答
luckcat解释的很中肯,学习了
re: boost库的Singleton的实现 zuhd 2010-03-06 10:16
谢谢,懂了,很少用到模板,有时间要充电一下
奇怪为什么有这样的需求?为什么不用udp,udp可以穿越NAT
以前获取mac地址时用到了这个东西,基本上用的第一个方案,学习!
谢谢孔雀的热心回复,我还是有很多问题不懂:
1,template <typename T>
typename Singleton<T>::object_creator
Singleton<T>::create_object;
这句话的初始化把我弄糊涂了,我甚至连这句话的语法都没有看懂
2,我下了断点
如果我写了int sint = Singleton<int>::instance();
这样instance就会断进去两次,请解释下!谢谢
没明白你加的那段代码放在什么地方,麻烦你贴个完整的代码好吗?谢谢
好文章,收藏仔细阅读
我看不懂这个单件的实现,哪位高手能解释下,谢谢!
初始化的顺序是怎样的?感觉像是在循环调用
没怎么看懂上面一段代码,作者能详细的解释下吗?谢谢
void Call(Base *ptr)
{
ptr->Call();
}

直接这样传函数指针不就可以了吗?为什么要求是虚拟继承啊,普通的函数指针不行吗?
栈里有函数的返回地址,所以溢出了,覆盖了返回地址,函数执行完就出错了。

==========================================
这句话是重点,当ret的时候,call下条指令时异常了,如果你多定义了几个变量,让栈溢出不到函数的返回地址,错误依然不会出现的
对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长。看下反汇编代码一切都明白了
感谢提供详细的asm分析,但是看了你这篇文章后,我还是没有明白为什么要在arg[16]的位置保存了arg[0]的地址,另外:

变长数组在实现时实际上退化为了指针,原先定长的数组,它的地址同时也就是容纳数组元素位置的首地址,而变长数组,退化为了指针,该指针指向的位置才是真正容纳数组元素的首地址.

二维数组或是char** p的原理应该都是这样的吧?
请指教
@Kevin Lynx
兄弟这段代码很经典啊,学习了!
push %ebp ;保存ebp寄存器
mov %esp,%ebp ;将esp寄存器保存到ebp
sub $0x18,%esp ;调整esp,用以保存返回地址和局部变量,这个调整值并不确定,根据局部变量的情况而定

这样的指令看起来好怪哦,这和在windows下的调试有什么区别?
用指针做key有什么意义呢?它和int做索引有什么区别?
re: 一年过去了... zuhd 2009-05-25 09:24
Just do it! Pretty girl
re: 复杂的逻辑的BUG zuhd 2009-03-04 09:37
只要是同一份内存数据,在同一个线程中,就不会出现所谓冲突的问题,仔细检查下代码,看看,你后面说的遍历删除map的问题是防止删除最后一个元素的时候越界
能告诉我这样做的好处是什么吗?
nice English, how can you do this, really amazing!
理解jmp的时候,只要理解为ip"平移了n byte"而不是"移动到"这样就不会搞错了,我也是uestc的,不过毕业2年了,我邮箱:huhf#21mmo.com,大家一起学习
难道你是成电的?UESTC
要求开源,强烈要求
re: perl 入门指引 zuhd 2009-01-15 09:43
准备学习lua
心跳包要互发的和正常的req->ack一样,也就是说保持稳定的脉冲,我觉得只要在最外面暴露登陆服务器和业务服务器,登陆服务器验证完之后,告诉客户端连接哪个业务服务器之后,这个链接就可以回收了
1,服务器分层不太清晰,登陆服做的事情过多,考虑可以分层实现
2,消息跨服需中转,如果服务器很多的话,那么服务器组的管理也是一个问题
楼上说的内存泄漏是存在的,泄漏了4* (4 + 4) = 32 BYTE,在后面的4次只是删除了成员指针,但没有删除自己(sizeof(B)),还有这种构造函数的嵌套是极不提倡的,如果基类的成员不是int,是int*的话,估计会让人很头痛的
re: VS2005断点失效的问题 zuhd 2009-01-05 09:49
PDB文件失效了,Clean->Rebuild即可
epoll的优势是轮询的效率高,会忽略闲置的fd,select不会。不管什么网络模型,感觉网络事件和逻辑处理都是两个线程的,而且只需两个线程。我比较同意1楼的想法,感觉很成熟。
re: linux学习一:wchar输出 zuhd 2008-12-29 10:14
还是看看简单点的界面开发。最关心的就是图形 图像 文本 窗口这些东西。
=============================================
我晕,为啥在linux下做这些东西啊
请问你这些代码是在逻辑层的么?在逻辑层不是直接调用epoll的api就可以了么?没明白你的意思和代码哦
建议dll中的函数参数都是原始类型,int ,char* 等
直接load一张底图是很方便啊,不过,一点一点画也能提高自己的能力,赞一个
re: 面试在华为 zuhd 2008-12-19 10:01
真的很魔鬼,虽然这样的方式不能选出最好的人,但是有一点是可以肯定的,就是可以淘汰掉差的人。
=================================================
我觉得这话说的很中肯啊,上次在外旅游的时候也接到这个电话,被我拒绝了,一个是我已经上班了,主要是,我担心去了打击我的自信心,我觉得我肯定不会有博主做的好,good job!
re: 赫夫曼编码 zuhd 2008-12-17 09:47
这样看你的代码更像一道作业题,其实你可以重构封装一下,作为一个kit来用,提供给大家下载,这样更有易读和易用性
共5页: 1 2 3 4 5