MISCELLANY
文章平均质量分 66
cd2108006026
WHAT
展开
-
论坛上一题目
请问这个程序的输出:int func(int i,int n){ return (i<n && printf("%d/n",i)) && !func(i+1,n) || printf("%d/n",i);} 感觉就是考短路、递归;要知道||低于&&简单分析:1.当i>=n, 打印i,函数退出;2.否则,打印i,递归调用; 如果递归调用的返回值是非0,原创 2010-03-15 17:11:00 · 709 阅读 · 0 评论 -
奇变偶不变,符号看象限
<br />上午看了一下物体的移动部分代码,简直晕头转向。<br />花了一个多小时算是搞明白了。<br />要到达一个目标targetPOSITION,计算目标点与原来坐标的两点表示的矢量与x轴夹角,用反余弦得到弧度表示。<br /> <br />由于计算机的acos函数返回的是0到PI弧度,所以弧度对应的正弦值一定大于0<br /> <br />但是当目标targetPOSITION的纵坐标值小于原来坐标的纵坐标时,也就是目标点在“下方”,<br /> <br />需要将sin值变号,又保持cos不变;原创 2010-09-29 11:21:00 · 2298 阅读 · 0 评论 -
不改动已存在代码,程序退出时检测内存泄露
(2012.05.19补充:尽管-rdynamic选项使得可读性大大提高,但仍然不太好根据二进制地址定位到某行泄露代码;这时使用objdump -S exefile 即可)在WINDOWS下检测内存泄露比较容易,毕竟MSDN强大,方法多多;有兴趣可以查看VLD源代码; 前几天无意中从MAN文档中查到linux可以给malloc挂钩子;于是写下了如下检测内存泄露的代码;原创 2011-12-07 10:52:42 · 1319 阅读 · 0 评论 -
困扰我快一个月的BUG
昨天终于解决了...1.背景:提供音视频服务的业务随着用户量的上涨,UDP丢包逐渐加剧。其实包量也不大,高峰期每秒不超过10W的UDP包,不应该丢包的。而前辈们的网络底层代码是单线程的,因此决定将网络线程独立出来,以提高效率。2.多线程策略 学过操作系统的应该知道,生产者和消费者的例子。只需要知道1:1的例子即可,这种情形下,可以使用无锁环形缓冲区,避免了mutex的代价(尽管事实上mute原创 2012-08-18 17:04:45 · 1885 阅读 · 0 评论