自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(100)
  • 资源 (3)
  • 收藏
  • 关注

原创 变长引用计数型小对象池实现

class CTranBufPool : public CBufPoolV{ struct Handle { DLINK link; char* pBuffer; Handle* pRealHdl; int nRef; int nConsBuf; }; typedef TLinkedList FreeList; typedef std::map

2012-04-10 15:36:51 667

原创 线程同步对象的实现

struct futex { volatile int lock; volatile int count;};#define LARGE_ENOUGH_NEGATIVE -0x7fffffff#ifdef __cplusplusextern "C" {#endifstatic inline voidfutex_init(struct futex* pf, int cou

2012-04-08 11:42:31 795

原创 rdtsct tricky hack

static inline uint64 rdtsc() { unsigned int lo, hi;#ifdef __linux__ /* We cannot use "=A", since this would use %rax on x86_64 */ __asm__ __volatile__ ( "rdtsc" : "=a"

2012-04-07 23:59:39 532

原创 double-locked singleton (spinlock version)

static inline int // return old valueatomic_add(volatile int *count, int add){#ifdef __linux__ __asm__ __volatile__( "lock xadd %0, (%1);" : "=a"(add) : "r"(count), "a"(add) : "memory"

2012-04-06 20:30:17 648

原创 __asm__("pause")用法

static inline int // return old valueatomic_add(volatile int *count, int add){#ifdef __linux__ __asm__ __volatile__( "lock xadd %0, (%1);" : "=a"(add) : "r"(count), "a"(add) : "memory"

2012-04-06 15:48:16 2974

原创 Linux进程同步

目录Linux进程同步调研...1背景...1Futex.1进/线程利用futex同步...2性能对比...3参考文档...5  背景超级负载均衡需要在线程/进程之前共享数据,这些数据需要支持多写多读,因此需要考虑同步。         本文调研了linux下的mutex与semaphone。         目前线上2.6.

2012-04-05 15:19:13 3828 1

原创 Linux dirty page回写时机

1 定时方式: 定时回写是基于这样的原则:/proc/sys/vm/dirty_writeback_centisecs的值表示多长时间会启动回写线程,由这个定时器启动的回写线程只回写在内存中为dirty时间超过(/proc/sys/vm/didirty_expire_centisecs / 100)秒的页(这个值默认是3000,也就是30秒),一般情况下dirty_writeback_centis

2012-03-15 17:34:15 1436

原创 pdflush的工作原理

大家知道,在linux操作系统中,写操作是异步的,即写操作返回的时候数据并没有真正写到磁盘上,而是先写到了系统cache里,随后由pdflush内核线程将系统中的脏页写到磁盘上,在下面几种情况下,系统会唤醒pdflush回写脏页:1 、定时方式:     定时机制定时唤醒pdflush内核线程,周期为/proc/sys/vm/dirty_writeback_centisecs ,单

2012-03-15 17:26:44 2915 1

原创 性能查看命令

案例描述分析需求在性能测试过程中我们除了关心程序运行的是否正常外,同时还要关注程序的资源消耗情况,包括CPU、内存、句柄、网络流量和IO等,分享一些命令供大家参考检测程序运行是否正常和瓶颈、性能是否需要进一步优化等,希望他们能对大家在性能测试中准确分析程序的异常和调优有一定的帮助。命令部分:mpstat能查看所有CPU的平均信息,还能查看指定CPU的

2012-01-18 13:40:38 1497

原创 系统栈内存分析和监控

查看系统栈空间大小ulimit -s 或者 ulimit -a | egrep '^stack size'栈空间溢出的原因栈空间溢出的错误一般多发生在程序循环和多层嵌套较多时。linux的栈、堆等内存模型http://www.alixixi.com/ePrint.asp?from=dev&id=36091其它参考资料1.cat /pr

2012-01-18 13:35:48 965

转载 RAID10与RAID5比较[转]

存储是目前IT产业发展的一大热点,而RAID技术是构造高性能、海量存储的基础技术,也是构建网络存储的基础技术。专家认为,磁盘阵列的性能优势得益于磁盘运行的并行性,提高设备运行并行度可以提高磁盘的性能和数据安全性。    20年来,RAID 推出了一系列级别,包括RAID 0、RAID 1、RAID 2、RAID 3、RAID4、RAID 5,以及各种组合如 RAID 0+1 等。其中最广泛

2011-12-29 12:50:32 534

原创 CAS与原子操作分析

1.Compare-and-swap概述 在计算机科学里,compare-and-swap CPU指令(CAS)(或者x86和Itanium体系结构里的Compare-and-exchange CMPXCHG指令)是一种特殊的指令。它做以下原子操作:把内存中某一地址中的值与一个指定的值作比较,如果他们相同,把内存中该地址的内容修改为新的值。该操作的结果显示它是否执行了替换。该指令的一个变种叫c

2011-12-15 14:47:12 121

原创 Linux 锁的调研

pthread_spin 自旋锁自旋锁介绍 一个典型的自旋锁的流程是但发现锁已经被其他线程持有的时候,这个进程会一直进行循环->旋转->等待锁被重新可用,如果锁没有被征用,则可以继续执行。        自旋锁的初衷是如果应用的时间很短,可以在短时间内进行轻量级的锁定,不需要进行系统的上下文切换(适用于多核情况,单核情况下关中断就可以,不需要自旋锁),但自旋锁等待的时候whil

2011-12-15 14:42:59 1119

原创 Malloc(),Calloc(),Realloc(),Free()系列内存分配机制

brk, sbrk, mmap, munmap 可执行程序首先被操作系统从磁盘中拷贝到内存中,还要为其对应的进程分配地址空间,这也体现了该进程对应的内存程序映像。这三者的组织及对应关系如下:磁盘:可执行文件段    内存:内存程序映像  进程:进程地址空间对应关系:内存程序映像进程地址空间可执行文件段code(text)code(te

2011-12-14 12:04:27 673

转载 Linux内存管理

我的实验结论:#include#include#includeint bss_var;int data_var0=1;int main(int argc,char **argv){ printf("below are addresses of types of process's mem\n"); printf("Text location:\n"); printf("\t

2011-12-14 10:33:59 3629

原创 搜索引擎的基本术语

什么是外链?外链也叫外部链接,或者是导入链接,即能够带来蜘蛛爬行访问的链接,也就是说从网站外部的其他网页链接到你的网站的链接。这样的链接包括文本链,也包括超级链接。什么是反链?即上面说的网页A(被收录的前提下)通过超链接的形式链接到网页B,那么网页A就是网页B的反向链接。 这样就可以得出反链是属于外链的一种。全库超链分析是超链分析之源,最初就是超链分析的全部。通过对webinfodb中所有

2011-11-24 12:16:03 438

转载 Linux iostat监测IO状态xx

Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。1. 基本使用$iostat -d -k 1 10参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。t

2011-11-23 15:47:41 313

转载 free 详解

bash-3.00$ freetotal       used       free     shared    buffers     cachedMem:       1572988    1509260      63728          0      62800     277888-/+ buffers/cache:    1168572     404416Swap

2011-11-22 12:58:28 321

转载 x220上面安装windows7

入手X220也差不多一個多月,出廠預載的程式也都玩過一輪。實際了解那些套件我會需要,而那些我跟本不需要。 像是人離開會自動上鎖的AutoLock 跟螢幕可轉90度讀改善閱讀體驗的功能一開始覺得很酷,可是真正用到的次數其實很少。 我OEM OS版本是Windows 7 Professional,所以我就去網路上下載Windows7的ISO光碟,然後重灌。 天真的以為直

2011-11-21 12:03:46 2104

转载 Linux动态库搜索路径

转载自:http://blog.microsuncn.com/?p=3177Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相

2011-10-10 15:19:43 357

转载 gcc中-pthread和-lpthread的区别

转自http://chaoslawful.iteye.com/blog/568602用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像这样:

2011-09-28 16:25:54 1590

转载 网络编程常见问题

Block IO & Non-Block IO//fcntl函数可以将一个socket句柄设置成非阻塞模式flags = fcntl(sockfd, F_GETFL, 0);fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);//r

2011-09-26 15:13:41 4244

原创 搜索引擎<原理、技术与系统>读书笔记(5)

网页净化元数据提取早期的方法:针对某一类具体网页,人工提取该类网页的内容组织模式。然后,信息提取系统根据该模式从属于该类的网页中提取相应的内容[Hammer, et al.,1997],[Ashish and Knoblock,1997]。(正则表达式)启发式规则:

2011-09-15 18:43:28 783 1

原创 搜索引擎<原理、技术与系统>读书笔记(5)

网页净化与元数据提取

2011-09-15 17:56:57 147

原创 搜索引擎<原理、技术与系统>读书笔记(4)

集中式搜集系统主控与网页抓取与分析进程的分布。在系统设计中,必须采用分布式技术将任务分布到多台机器上并行的处理。海量网页独立的分布在网络上,对并行访问提供充分的可能性和合理性。同时,分布并行还会节省网络带宽资源。 可定制性。系统可以让用户依据自己对信息的兴趣,配置用于引导

2011-09-15 17:44:29 432

原创 搜索引擎<原理、技术与系统>读书笔记(3)

结果集合的形成对用户输入的查询短语应用第四章中讲到的中文自动分词技术,获得查询q的向量表示,q = {t1,t2,…,tm},然后执行检索算法伪代码a. 初始化,结果集合R=Φ,权值累加器A=0b. for each ti in q dobegin b

2011-09-15 15:53:44 333

原创 搜索引擎<原理、技术与系统>读书笔记(2)

基于字符串匹配的分词方法机械分词方法,可以建立一个一般的模型,形式地表示为ASM(d,a,m)d:匹配方向,+表示正向,-表示逆向a:每次匹配失败后增加或减少字串长度(字符数) ,+为增字,-为减字 m:最大或最小匹配标志,+为最大匹配,-为最小匹配。对于

2011-09-15 15:29:07 329

原创 搜索引擎<原理、技术与系统>读书笔记(1)

增加DNS缓存的原因URL数以亿计,而主机数以百万计。如果没有DNS缓存,搜集子系统每次搜集新的URL,即使刚在上一次的任务中解析过该主机名,也要重新进行域名解析(除了用IP地址直接表示的主机,如:162.105.80.44)。为了避免频繁的查询DNS服务器,造成类似于拒

2011-09-15 13:56:33 521

原创 离开金融行业,加入在线搜索行业

现在搞 Search Arch Topic了

2011-09-15 13:26:31 381

转载 Linux虚拟内存实现原理

下面是一篇翻译文章,原文出自MongoDB的核心开发工程师 Kristina Chodorow 的个人博客,由NoSQLFan翻译整理。我们都知道,MongoDB 使用内存映射的方式来进行数据文件的存取操作。本文的目的就在于描述操作系统虚拟内存的使用及内存映射的内部实

2011-09-06 14:59:29 489

转载 MySQL事务隔离级别详解(转)

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。Read Uncommitted(读取未提交内容)       在该隔离级别,所有事务都可以看到其他未提交事务

2011-09-02 09:57:07 325

转载 Browser 與 Server 持續同步的作法介紹 (Polling, Comet, Long Polling, WebSocket)

2011-08-30 19:23:42 55

转载 Comet:基于 HTTP 长连接的“服务器推”技术

周 婷 (zhouting@cn.ibm.com), 软件工程师, IBM 中国软件开发技术实验室简介: 很多应用譬如监控、即时通信、即时报价系统都需要将后台发生的变化实时传送到客户端而无须客户端不停地刷新、发送请求。本文首先介绍、比较了常用的“服务器推”方案

2011-08-30 19:15:33 565

转载 Browser和Server持续同步的几种方式(jQuery+tornado演示)

在B/S模型的Web应用中,客户端常常需要保持和服务器的持续更新。这种对及时性要求比较高的应用比如:股票价格的查询,实时的商品价格,自动更新的twitter timeline以及基于浏览器的聊天系统(如GTalk)等等。由于近些年AJAX技术的兴起,也出现了多种实现方式。本文将对

2011-08-30 19:13:49 1730

原创 c++跨平台的那些事

1、同样语义的接口太多,很多人搞不清区别    swap和operator = 的性能差别2、容器的一些边界情况没有说明清楚     有人认为string是内存连续的容器。     gcc自带的hash_map在什么情况下性能急剧抖动?

2011-08-25 08:30:27 572

转载 Linux服务器性能评估与优化

从google reader订阅到的,不错的文章=================================================================================================一、影响Linux服务器性能的因素 1

2011-07-07 10:14:03 344

转载 数据中心TCP优化:同时满足低时延和高吞吐量

大的数据中心有成千上万台服务器,服务器之间大都用TCP来协作并传输数据,最终为用户提供服务。那数据中心的TCP工作得如何呢? 斯坦福大学和微软的两人对Bing服务的6000多台服务器集群在TCP方面的数据进行研究,用的数据是一个月的日志,包括应用、套接字级别和包级别的日志,压缩完后大概是150T的数据。老外真是牛!一、发现的问题1、突发的丢包现象2、部分包传输时延大,90%的传输RTT值小于1毫秒

2011-06-14 09:47:00 1267

转载 多重继承和void*的糗事

<br />Author:Kevin LynxDate:4.30.2011<br />C++为了兼容C,导致了不少语言阴暗面。Bjarne Stroustrup在<D&E>一书里也常为此表现出无奈。另一方面,强制转换也是C++的一大诟病。但是,因为我们的应用环境总是那么“不 纯”,所以也就常常导致各种问题。问题<br />考虑下面非常普通的多重继承代码:class Left {public: virtual void ldisplay () { printf ("Left::

2011-05-06 09:45:00 379

翻译 Linux内存管理

Overview of memory management<br />Traditional Unix tools like 'top' often report a surprisingly small amount of free memory after a system has been running for a while. For instance, after about 3 hours of uptime, the machine I'm writing this on rep

2011-03-31 17:28:00 568

转载 用 cmake 构建Qt工程(对比qmake进行学习)

<br />cmake vs qmakeqmake 是为 Qt 量身打造的,使用起来非常方便cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能<br />内置的 out-of source 构建。(目前QtCreator为qmake也默认启用了该功能,称:shadow build)为各种平台和场景提供条件编译<br />可处理多个可执行文件情况,和很好配合 QtTest 工作<br />如何选择?<br />Using CMake to Build Qt Projects 一文中说:对简

2010-12-12 21:35:00 3430

SlickEdit 2011 64位的破解,测试有效

SlickEdit 2011 64位的破解,测试有效

2011-07-01

Imperfect c++

讲c++的缺陷,和c++程序库的设计的好处,非扫描版。。。。。。。。。

2010-06-03

Parallel+Programming+in+OpenMp

Parallel+Programming+in+OpenMp

2009-06-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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