10 2011 档案

怎样在vc2010中编译lua文件
摘要:有人写过相同的文章貌似,在Tools/Extenal Tools做设置。这里讲另外一点小技巧,当vc编译文件出错,双击出错的行就可以快速定位到文件和行,但是用lua编译的输出格式vc无法识别。所幸lua的代码在手,改动简单1. 搜索%s:%d: %s 改为%s:(%d): %s2. 改lua.c的l_message if (pname) fprintf(stderr, "%s: \n", pname); --加个\n3. 在main的最后加上 report(L, status); if (status == 0) printf("ok !");这样如果编 阅读全文

posted @ 2011-10-18 12:20 风行水上 阅读(805) 评论(0) 推荐(0)

网游拓扑之网关
摘要:很多知识也是最近才领会到,如果不对,请行家指正。在posix下在网游的前端开多个网关是常用的事情,而在windows下往往一个就好,甚至不用,为什么呢?posix的网关基于libevent的模型,虽然io是block的,但是他是单线程的,所以发挥不了多cpu的作用,所以fork出多个是个办法。网关还有另一个作用,对包进行编码和解码,甚至压缩加解密,这些都比较耗cpu。而在windows下使用iocp,windows会自动的启动多个线程(cpu * 2)来做recieve,就相当于多个网关;而对于发送,常见的做法也是开一个send线程(不要笑话我在windows下做服务器,以前确实没有启蒙,土法 阅读全文

posted @ 2011-10-17 22:51 风行水上 阅读(284) 评论(0) 推荐(0)

STL container 容易发作的bug
摘要:STL中,container和其iterator是正交的,我们操作iterator的时候不知道container。而在具体的程序中,两者却往往有相交性,比如常见的bug就是在itertator的遍历中又修改了container(常见于观察者模式),STL不检查这个,而因为其正交性,这种bug很难发现和定位,又是undefined behavor,往往导致事后错误,更加错的无迹可寻。简单的,把container和其iterator封装在一起就可以解决(应该说是更早的发现而不是解决)这样的问题。简单举个例template <typename C>class LoopSafeContai 阅读全文

posted @ 2011-10-12 15:29 风行水上 阅读(224) 评论(0) 推荐(0)