摘要:
原文来自:http://sfsrealm.hopto.org/inside_mopaq/chapter2.htm#hashes促进历史进步的大多数契机都是在解决特定问题的过程中产生的,本文讨论一下MPQ格式的合适解决方案。----MPQ是暴雪的一种文本压缩格式,可以压缩包括坐标、算法、声音、动画、... 阅读全文
摘要:
段错误或者其他导致程序退出的错误一直以来都像蛮不讲理的莽汉一样,把我们辛辛苦苦开发的程序肆意破坏掉,留下一个或大或小的core文件让我们头疼去,我们痛哭流涕之后默默承受这份忧伤。。。段错误由SIGEGV产生,可以被用户捕捉,也就给了我们保存程序重要数据的机会,借用glibc某函数处理SIGEGV的一... 阅读全文
摘要:
让我觉得惊艳的设计:魔兽争霸的视频设计,魔兽一正常比赛大概需要1个小时时间,录制视频却很小,源自于war3独出心裁的设计,war3的视频只是记录了一串随机数以及角色的操作,并没有保存任何图像,视频文件用客户端打开后解析角色动作判断遭遇、战斗、逃跑等动作,然后根据随机数进行数次计算,先是计算命中、然后... 阅读全文
摘要:
memcached本身是不支持集群的,集群所关注的容灾、容错、宕机恢复机制统统都没有,实战中需要自己实现容灾机制。memcached集群相比memcached的优势:巨量数据分布到集群的多台应用主机可以降低带宽压力、数据访问时间。memcached集群相比未集群的多台memcached的优势:集群... 阅读全文
摘要:
getopt是linux下解析命令行参数的api。以linux内核代码的一个例子来说明:static void cmdline(int argc, char *argv[]){ int opt; progname = basename(argv[0]); while ((opt = getopt(... 阅读全文
摘要:
目标场景是这样的: 多线程的应用程序要频繁打一些小字节的日志,也不想引用很重的日志库。 设想了一个极其简单的日志组件,main线程中重定向stdout到文件,同时setbuffer设置一个10k的缓冲区,工作线程直接向stdout输出日志。 很简单,但是有些担心,多线程写同一个文件会不... 阅读全文
摘要:
看memcached代码的时候学习了一个api,setbuf,可以设置文件流的缓冲区。 #include void setbuf(FILE *stream, char *buf); void setbuffer(FILE *stream, char *buf, size_t size); void... 阅读全文
摘要:
编码规范不仅仅是好看,更是避免各种稀奇古怪问题的好方法,你永远不会知道不规范的编码会有什么幺蛾子问题。我遇到的问题:一份运行的好好的代码突然就不能编译了,检查了所有的代码都没有问题,最后在同事的帮忙下解决了,根源竟然是缩进的时候使用了tab而不是空格的问题,另外还有中文注释引起过的问题就不提了,这... 阅读全文
摘要:
以下摘自维基百科,mark一下,以备不时之需。For the purposes of this table, a, b, and c represent valid values (literals, values from variables, or return value), object ... 阅读全文
摘要:
不是为了循环的while。1.用于宏定义,保证宏一定按照想要的方式执行。#define foo(x) start(x); end(x)if(flag) foo(x);扩展以后的结果if(flag) start(x);end(x);如果是do{..}while(0)的形式,可以保证宏按照定义的预... 阅读全文