Recent Posts
-
November 27, 2013
常用git命令
所有的命令不理解都可以git help 来查看manaul的帮助,最好的参考来的最简单最常用的git clone http://192.168.1.100:8080/git/repos/freediameter.gitgit pull #从远程仓库下载更新到本地git branch -r #查看远程分支名字git checkout -b <branch> <remote>/<branch> ...
-
October 18, 2013
Xml的escape string字符转换优化和gnu perfect hash function generator(gperf)
html和xml里面是有类似这样的escape string的编码转换的。比如xml的/** * & --> & * < --> < * > --> > * " --> " * ' --> ' */这个转换,很容易成为程序的性能热点,现在的一个模块就是这样。之前刚好看到类似问题相关的文章,escape string的转换相关函数优化之后,响应时间好很多。When...
-
September 30, 2013
C C++ 准确的随机数生成
下载LOFTER我的照片书 |一提到随机数生成,一般联想到类似c的这个代码#include<cstdlib>#include<ctime>srand(time(0));int r = rand() % (50) + 10;用这个 取余操作和 加上偏移来生成一个指定范围的随机数。一般应用这个应该是可以了,不过之前看到文章说,这样的其实不是很准确的。如果这个范围不是2的n次方的话(上面那个50就不是).那么这样取余数操作之后得到的随机分布跟以前的默认访问的...
-
September 18, 2013
Epoll和eventfd之“惊群(thundering herd)”问题
微博上面有人回复我说epoll的的惊群问题,不是很理解。带着疑问看一下linux kernel的epoll 和 eventfd相关的代码。因为我局的epoll和eventfd一起使用应该是比较简单的。?http://lxr.linux.no/linux+v3.11/fs/eventpoll.chttp://lxr.linux.no/linux+v3.11/fs/eventfd.c------------------情况1 调用 epoll_waitepoll_wait ep_poll ...
-
August 27, 2013
构建实时监控系统,统计可视化,和日志采集系统相关的开源软件和论文等
下载LOFTER我的照片书 |关键字(log trace Tracing metric monitor statistics Observability Visibility )直到2014年3月7号所了解到的资料或者开源软件有。logstash + Elasticsearch http://logstash.net/Mozilla Heka http://heka-docs.readthedocs.org/en/latest/ hekad http://he...
-
August 06, 2013
把整数格式化为字符串的c++代码(itoa和sprintf相关的问题,快速格式化ip地址为字符串
程序里面有一个格式化ip地址的地方使用sprintf写的,大概这样sprintf("%d.%d.%d.%d", b[0], b[1],b[2],b[3])性能测试的时候发现这句代码,要cpu消耗占整个的%1左右,看上去比较突出。网上很多也自己写了itoa函数,比如http://www.jb.man.ac.uk/~slowe/cpp/itoa.html /** * C++ version 0.4 char* style "itoa": * Written by Lukás Chmela...
-
July 29, 2013
快速字符串hash算法murmurhash3 和cityhash还有 spookyhash
Murmurhash3 按它自己的测试说已经比fnv要快5倍了,我一直以为fnv是最快了的,vc 2010里面的std默认用的就是fnv。CityHash 是后来Google受了Murmurhash3的启发,再改进了的? Google内部的hash_map<string, int> 都是用这个算法了。http://blog.reverberate.org/2012/01/state-of-hash-functions-2012.html这篇文章比较了上面3个算法的特点,但好像说...
-
July 25, 2013
看网上有人问,为什么这样的程序不能正常工作
```text看网上有人问,为什么这样的程序不能正常工作_declspec (noinline) void helloworld(){ printf(“hello world”);}int main (int, char**){ const int kfunctionSize = 50; DWORD dwOldProtect; char *buf = new char [200]; if (!VirtualProtect(buf,kfunctionSiz...
-
July 17, 2013
C++ 的new 操作符抛不抛出异常的问题
下载LOFTER我的照片书 |最近碰到一个问题,vc 6.0的new是不抛出异常的,只是返回空指针。但后来c++ 标准规定new造作符分配不到哦啊内存时抛出std::bad_alloc异常了,vc后来的版本也就跟着改了。但之前的vc6.0过来的代码,很多都是以前的旧风格判断返回的是不是NULL的。明显这个地方需要改一下了,如果要在新的vc比如 vc2010里面正常工作的话。c++ 标准里面也是可以进行不抛出异常的new的,要写成 new (std::nothrow) 这样。另...
-
June 07, 2013
Linux怎么把block层的bio request发给scsi底层驱动(从submit_bio到scsi_request_fn)
Understanding Linux kernel一书大概说了bio 是怎么传给设备底层驱动的。14.3.3. Activating the Block Device Driverhttp://140.120.7.20/LinuxRef/LinuxKernel/understandlk-chp-14.html#understandlk-chp-14-sect-3.3 这里会解释block层是怎么把request发给底层的设备驱动的。不过新的3.9的内核这个已经跟书上说的变了好多,比如bl...