王绍全的博客

Enjoy Programming, Enjoy Life

常见开源项目的代码统计

以下统计只包含了主要模块,比如gcc没有包含gcj等模块,LibreOffice只包含了core模块,等。名字版本主要开发语音代码行数(千行)kernel3.0C13380gcc4.6C5109coreutils8.16C246libevent2.0C68mysql5.5C++1677lightt...

2012-04-10 02:38:54

阅读数:2195

评论数:0

[C++] getaddrinfo的一个bug

程序里面getaddrinfo()有可能会持续的返回 "Temporary failure in name resolution",与此同时ping域名却没问题。通常这是由于getaddrinfo()缓存了/etc/resolv.conf造成的。因此,在修改了/etc/reso...

2012-03-12 15:56:04

阅读数:3732

评论数:2

[Linux] 假死分析

所谓假死,就是能ping通,但是ssh不上去;任何其他操作也都没反应,包括上面部署的apache也打不开页面。作为一个多任务操作系统,要把系统忙死,忙到ssh都连不上去,也不是那么容易的。尤其是现在还有fd保护、进程数保护、最大内存保护之类的机制。你可以fork很多进程,系统会变得很慢,但是ssh...

2012-03-06 11:39:31

阅读数:8138

评论数:1

[C++] 关于gdb断点的真相

gdb的断点是基于信号(signal)实现的在某个地址增加一个断点,实际上就是修改那个地址的代码,把原来的代码替换成INT 3指令,同时让gdb捕获这个signal并做相应的处理:包括执行被替换掉的指令,并跳转回来。因此,只要断点不被走到,那么断点就不会影响程序的运行效率;因为程序的其他地方都没改...

2011-12-29 11:22:46

阅读数:3805

评论数:0

[C++] gdb高级调试方法

1,启动gdb的时候自动执行脚本gdb -x your_script注意:your_script里面只能有gdb命令。不过我们都知道gdb命令里面有个shell指令,所以实际上这里可以做任何事。2,调试运行中的进程在gdb里面有个attach指令,可以调试运行中的进程。结合上面的-x参数,实际上我...

2011-12-20 01:41:50

阅读数:6798

评论数:3

[C++] 内存保护

C++有内存保护吗,真的有:http://en.wikipedia.org/wiki/Buffer_overflow_protection这个只能保护stack上的buffer,不过已经很有作用了。写越界写坏callstack的概率低了很多。提醒:如果callstack没有效信息,更有可能是环境版...

2011-12-13 14:34:06

阅读数:1707

评论数:0

[C++] 加速make的编译

make一个超大项目的时候,你有没有过痛不欲生的感觉,make有时候可以长达半个小时。现在是多核的世界,你可以试试make -j 10,有时候可以把编译速度提高五倍。也就是说原本要半个小时的编译,也许五六分钟就编译好了。注意:用make -j 10可能会遇到少数项目出问题。比如在编译openssl...

2011-12-13 13:16:29

阅读数:2463

评论数:1

redis再观察

分析redis的几个问题:1,redis的“脏快照”redis的持久化方式是后台线程慢慢写,则在写的过程中,如果外界进行了set,则redis写下的数据并不是一个干净的快照,而是一份数据可能不匹配的“脏快照”。举例来说:在SNS里面,AB各有10分,然后A扣了5分给B,,则A应该5分B应该15分,...

2011-12-09 17:37:34

阅读数:4020

评论数:0

[Linux] 通过shell给unix socket发送数据

例子:echo "show stat" | nc -U ../var/my.sock说明:nc不是脑残的缩写,是net cat的缩写。-U指明是unix socket适用场合:1,java没法和Unix socket通讯,但是可以调用shell脚本。这样就曲线救国了。2,有很多...

2011-12-07 12:56:27

阅读数:7168

评论数:3

[Linux] 服务器性能调优(CPU绑定)

我们都知道单进程、异步IO应该可以获得最优通讯性能。但现实里我们常常发现这种模式常常达不到预期的效果。这可能是由于网卡在和你的应用程序抢CPU。cat /proc/interrupts 看看你的网卡是几号中断,都在哪个CPU上工作?通常你的网卡应该工作在CPU0上面。(如果不是,可以把它绑到CPU...

2011-11-03 17:26:55

阅读数:4504

评论数:0

[linux] 如何在vim里面把空格缩进改为tab缩进

有些同学喜欢用空格做缩进。因此很多代码的行首都带有连续重复的空格,有些是四个空格,有些甚至是八个空格。真是叔叔可忍婶婶不可忍。vim有一些retab之类的选项可以对所有vim处理的文档做缩进转换,不过那太野蛮了,我们不打算让vim自动处理所有文件。因此比较合适的方式是手动的来做这

2011-10-11 11:31:01

阅读数:2549

评论数:2

提示
确定要删除当前文章?
取消 删除
关闭
关闭