摘要: 在增加keepalive和libevent 超时后,仍然会几个月后出现lsof统计句柄过多的问题,如下图,红线圈定的是不定期出现的错误关闭流,时间点和server端日志(只看到accpet fd,没有导致正常关闭的可写事件,也就是被keepalive关闭了,而应用层没有close,所以泄露了sock 阅读全文
posted @ 2016-10-18 11:07 aitao 阅读(2368) 评论(0) 推荐(0) 编辑
摘要: 基本i threads 等操作略过,只谈线程同步、异步控制: 先点到,gdb attach到主线程t1 时,所有线程都会停止,所谓同步异步效果,是指在apply continue到所有线程之后, 再切换到t2,发现t3还在运行(如果t3卡在了断点上,也算运行,只不过运行后停止了)。 再点到,gdb 阅读全文
posted @ 2016-10-17 16:46 aitao 阅读(3221) 评论(0) 推荐(0) 编辑
摘要: 看完此文,题目不言自明。转自 http://blog.chinaunix.net/uid-27105712-id-3270102.html 在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从 阅读全文
posted @ 2016-09-23 21:11 aitao 阅读(11532) 评论(0) 推荐(1) 编辑
摘要: atoi 实现注意: 要可以表示负数;处理到空格要结束;空串""返回0;NULL直接seg fault;溢出判断(atoi(2147483648)实际得到的是-2147483648,首位1代表负数,其次的,31个0取反加1,表示的是2147483648,所以-2147483648) 阅读全文
posted @ 2016-09-10 18:07 aitao 阅读(1456) 评论(0) 推荐(0) 编辑
摘要: libevent 发生超时后, while循环一次从堆顶del timer——直到最新调整的最小堆顶不是超时事件为止,(实际是del event),但是会稍后把这个timeout的 event放到active 任务list里, 等待处理,event标记为timeout,等处理actvie队列时再由应 阅读全文
posted @ 2016-09-08 22:18 aitao 阅读(3892) 评论(0) 推荐(0) 编辑
摘要: char *strtok(char *str, const char *delim) 会修改数据源。外部加锁才线程安全(strtok执行结束再解锁执行另一个strtok循环知道工作完成) 主要是以互斥访问strtok实现文件中的static外部变量char*old。源码如下。 #include <s 阅读全文
posted @ 2016-08-16 00:03 aitao 阅读(2186) 评论(0) 推荐(0) 编辑
摘要: 缓存穿透 是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个存在的数据每次请求都要到存储层去查询,失去了缓存的意义。 有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的b 阅读全文
posted @ 2016-08-06 22:37 aitao 阅读(1282) 评论(0) 推荐(1) 编辑
摘要: 参考文献: 《从内核文件系统看文件读写过程》http://www.cnblogs.com/huxiao-tee/p/4660352.html?utm_source=tuicool&utm_medium=referral 《mmap是什么》http://www.cnblogs.com/huxiao-t 阅读全文
posted @ 2016-05-21 18:41 aitao 阅读(6399) 评论(0) 推荐(0) 编辑
摘要: 首先区分两组概念: 稠密索引,稀疏索引; 聚簇索引,非聚簇索引; btree和mysql的分析: 参见 http://blog.csdn.net/hguisu/article/details/7786014 阅读全文
posted @ 2016-04-29 14:43 aitao 阅读(975) 评论(0) 推荐(0) 编辑
摘要: 扩展 将拷贝构造函数声明为explicit,则会阻止隐式拷贝构造函数的调用.隐式拷贝构造函数的调用主要发生在三个点: 1.一个对象作为函数参数,以值传递的方式传入函数体. 2.一个对象作为函数返回值,以值传递的方式从函数返回. 3.以AAA = xxx的方式创建对象AAA,xxx为与AAA为同类型的 阅读全文
posted @ 2016-04-15 19:29 aitao 阅读(934) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h> int main(){ const int constant = 21; const int* const_p = &constant; int* modifier = (int*)(const_p); *modifier=10; printf("%d \n", 阅读全文
posted @ 2016-04-15 16:17 aitao 阅读(321) 评论(0) 推荐(0) 编辑
摘要: int BinlogQueue::del_range(uint64_t start, uint64_t end){ while(start Write(leveldb::WriteOptions(), &batch); if(!s.ok()){ return -1; } } return 0; } 阅读全文
posted @ 2016-04-10 12:00 aitao 阅读(900) 评论(0) 推荐(0) 编辑
摘要: 《C++primer》第四版 15.3.1节提到基类到派生类转换(无论ref/poniter or not)的可行性,有些拗口,根据英文版翻译,得到以下几个要点:1.如果是public继承,则用户代码和后代类都可以使用派生类到基类的转换。2.如果类是使用private或protected继承派生的,... 阅读全文
posted @ 2015-11-15 17:01 aitao 阅读(958) 评论(0) 推荐(0) 编辑
摘要: 先说cp好mv/rm的区别:cp from to,则被覆盖文件 to的inode依旧不变(属性也不变),内容变为from的;mv from to,则to的inode变为from的,相应的,to的属性也成了from的;rm类似;问题,假如程序 main.out依赖的so文件libtest.so被cp掉... 阅读全文
posted @ 2015-11-14 18:18 aitao 阅读(1439) 评论(0) 推荐(0) 编辑
摘要: 先看例子#include #include #include #include int main() { pid_t status; status = system("./test.sh"); if (-1 == status) { printf("system error!"); } el... 阅读全文
posted @ 2015-11-13 23:33 aitao 阅读(6149) 评论(0) 推荐(1) 编辑
摘要: 如下显示free是显示的当前内存的使用,-m的意思是M字节来显示内容.我们来一起看看.$ free -m total used free shared buffers cachedMem: 1002 ... 阅读全文
posted @ 2015-03-10 13:37 aitao 阅读(49472) 评论(1) 推荐(3) 编辑
摘要: 事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体如下:1. 原子性(Atomic) 一个事务包含多个操作,这些操作要么全部执行,要么全都不执行。实现事务的原子性,要支持回滚操作,在某个操作失败后,回滚到事务执行之前的状态。 回滚实际上是一个比较高层抽象的概念... 阅读全文
posted @ 2015-02-12 18:44 aitao 阅读(2899) 评论(0) 推荐(0) 编辑
摘要: slab分配器:http://blog.csdn.net/luotuo44/article/details/42737181hash操作 :http://blog.csdn.net/luotuo44/article/details/42773231lru操作 :http://blog.csdn.... 阅读全文
posted @ 2015-01-21 12:12 aitao 阅读(592) 评论(0) 推荐(0) 编辑
摘要: 本文无图文对照解释,但力求通俗易懂。请读者边读边手绘各个流程,一便于理解。 总体交互流程如下 1. 客户端发起HTTPS请求 这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。 2. 服务端的配置 采用HTTPS协议的服务器必须要有一套数字... 阅读全文
posted @ 2015-01-06 19:26 aitao 阅读(1512) 评论(0) 推荐(0) 编辑
摘要: 在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之。CSS position 属性值:absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "le... 阅读全文
posted @ 2014-12-18 12:24 aitao 阅读(1346) 评论(0) 推荐(0) 编辑