上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 18 下一页

2010年7月4日

解决amule脱机下载问题

摘要: 新买的廉价路由器,可以脱机下载,但只内置了bt,没有内置amule先自己装了amule,router上的falsh太小,装不下那么多软件,就装到移动硬盘上,格式化成ext3。只要搜索dd-wrt, optware,就能找到router专用的软件。装上amule后,我先用它自己的启动脚本:S57amuled,这个脚本中自己设置HOME环境变量。后来我发现,amuled可以不用HOME环境变量,只要在启动时加上 -c configdir 就可以了。然而,还有问题,这个amule不稳定,经常自动退出,或者干脆就占99%的cpu但不干任何事,嗝屁了!最后想了个办法,让它自动定时重启,我设置的是每格3小 阅读全文

posted @ 2010-07-04 12:21 能发波 阅读(257) 评论(0) 推荐(0)

2010年3月17日

read/write&mmap&aio

摘要: read/ReadFile 系统调用默认有预读write/WriteFile 默认是异步写mmap 使用缺页中断,实现预读/异步写比较困难aio 对磁盘调度做特殊优化,在随机访问较多时,理论上性能最好(如果操作系统真正实现了aio)read/write 操作方式让你写程序倾向于流式(顺序)操作,从而获得较多优化机会。mmap 让你倾向于随机操作,还比较好用,会使得你倾向于误用它。aio 比较难用,就使得你倾向于少用它(除非不得以),从而减少误用。 阅读全文

posted @ 2010-03-17 11:30 能发波 阅读(299) 评论(0) 推荐(0)

2010年3月5日

C陷阱:判断宏是否等于一个常数

摘要: 下面这段代码有啥错误?#if ULONG_MAX == 0xFFFFFFFFinline unsigned long byte_swap(unsigned long x) { return __builtin_bswap32(x); }inline long byte_swap(long x) { return __builtin_bswap32(x); }#elseinline unsigned long byte_swap(unsigned long x) { return __builtin_bswap64(x); }inline long byte_swap(long x) { ret 阅读全文

posted @ 2010-03-05 18:26 能发波 阅读(391) 评论(0) 推荐(0)

2010年2月22日

popcount & google.sparsegroup

摘要: ubuntu+gcc4.3 ,尝试修改 google.sparsetable 中的 sparsegroup,修改完成,不启用 -mpopcnt,sparsetable_unittest 和 hashtable_unittest 都通过了。启用-mpopcnt以后,发现硬件不支持,报非法指令错误,公司的电脑太烂了!换到服务器上,是64位至强,gcc4.1.2,启用 -mpopcnt 再加 -O1/-O2/-O3 任何一个,导致编译失败:internal compiler error: in memory_address_length, at config/i386/i386.c:13816呜呼! 阅读全文

posted @ 2010-02-22 20:35 能发波 阅读(287) 评论(0) 推荐(0)

google.sparsegroup 可以更好

摘要: sparsegroup 是 google.sparseXXXX (sparsehashmap)系列中最底层的一个数据结构,sparseXXX 的互相依赖如下:-sparsegroup - sparsetable - sparsehashtable - sparse_hash_map - sparse_hash_set因此,sparsegroup 实现的性能直接关系到整个 sparseXXXX 系列。先看 sparsegroup 的一段代码:template class sparsegroup {// 省略 ..... typedef T value_type; typedef u_int... 阅读全文

posted @ 2010-02-22 13:29 能发波 阅读(320) 评论(0) 推荐(0)

tcmalloc 要点

摘要: google.tcmalloc线程缓存(threadcache)加锁(locking)加锁的开销是比较大的(cpu要同步cache),一般要几十个时钟周期,特别是cpu较多的时候,锁冲突概率大大增加。malloc不是在进入malloc就马上加锁,而是在thread cache耗尽后才加锁(用于从全局堆获取内存),加锁的频率被大大降低(通常情况下是几百倍)。free不是在每次free时都加锁,而是在free导致local cache空闲出整页内存时,才加锁将内存页交还给全局堆(globalheap)。radix-treetcmalloc使用的中心数据结构是radix-tree,这是trie-tr 阅读全文

posted @ 2010-02-22 11:33 能发波 阅读(227) 评论(0) 推荐(0)

2010年2月20日

这样反贪如何?

摘要: 类似于囚徒困境,立这样一条法律: 行贿者保留自己向受贿者行贿的证据,事后告发该受贿者;对于该告发行为,法律严惩该受贿者,而该行贿者不受任何处罚。 而如果是被查处,则行贿者和受贿者一起受处罚。 因为在大多数情况下,受贿者都是处于强势地位的,因此,受贿者告发行贿者不能免除(受贿者自己)被处罚。当然,这个前提条件是假定行贿者在心中对受贿者是恨之入骨的!这样的话,受贿者还敢那么胆大妄为吗?如果所有行贿者形成了“行业自律”,但是这种自律是极度不稳定的。对于外逃贪官: 只要求那个国家引渡该贪官,而不要求那个国家归还该贪官带过去的金钱等,还会有那么多贪官外逃吗。从感情上讲,这样的法律也许很‘不得人心... 阅读全文

posted @ 2010-02-20 18:06 能发波 阅读(109) 评论(0) 推荐(0)

2010年2月8日

google.sparsetable 实现细节

摘要: goolge.sparse*系列容器依赖关系:- sparsetable - sparsehashtable - sparse_hash_map - sparse_hash_set与现有的一些“标准”实现不同,sparsehashtable 使用二次探测法,而不是链接,来解决hash冲突。sparsetable 就更奇特了,它是一个两级结构,第一级使用直接索引法,而第二级使用的是顺序查找。不过,第二级的尺寸比较小,可以放入cpucache,并且它的顺序查找使用的是popcount(bitmap[i]=count of (jbitmap; if (bitmap[j/8] & 1 valu 阅读全文

posted @ 2010-02-08 12:39 能发波 阅读(190) 评论(0) 推荐(0)

2010年2月7日

gcc 4.5

摘要: 只拣一些有用的:The -fshow-column option is now on by default. This means error messages now have a column associated with them.A new built-in function __builtin_unreachable() has been added that tells the compiler that control will never reach that point. It may be used after asm statements ... 阅读全文

posted @ 2010-02-07 12:07 能发波 阅读(112) 评论(0) 推荐(0)

2010年2月6日

终于可以优雅的捕获 shell heredoc 内容了

摘要: Shell代码 eval'var=`cat`'<<"+EOF"终于可以用这种方式捕获heredoc的内容了我太高兴了!原先那种方式:var=`cat<<"+EOF2"heredoccontentEOF2`不光麻烦,而且会出问题,如果正文中出现一个未被引号引起来的`就挂了用$(cat...)的方式也一样不好+EOFecho"$var"eval 'var=`cat`' <<"+EOF" 终于可以用这种方式捕获 heredoc 的内容了 我太高兴了! 原 阅读全文

posted @ 2010-02-06 14:29 能发波 阅读(312) 评论(0) 推荐(0)

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 18 下一页

导航