自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux性能调试----cpu篇

linux性能调试----cpu篇1、mpstat -P ALL 2,观察cpu是否有异常,下列哪一项异常: %usr 用户态的cpu时间(%)(不包含nice值为负的进程)----pstack%nice nice值为负的进程的cpu时间(%)%sys 内核态的cpu时间(%)-----strace+pstack%iowait 硬盘io等待时间(%)------iostat

2016-01-26 22:51:40 922

原创 SIGALRM信号会中断sleep

SIGALRM信号不要轻易用来设置超时,因为会中断sleep,尤其在多线程程序中,验证如下:#include #include void alarm_handler(int signo){ return;}int main(){ signal(SIGALRM, alarm_handler); alarm(2); time_t t1 = time(

2016-01-10 17:18:00 903

原创 在多线程程序中指定线程来处理信号

进程中的信号是递送到单个线程的。如果信号与硬件故障或计时器超时相关,该信号就被发送到引起该事件的线程中去,而其他的信号则被发送到任意一个线程。为了处理简单,可将信号指定某个线程进行处理。示意代码:#include #include int g_exit = 0;void *thread_signal(void *arg){ printf("thread si

2016-01-10 16:45:43 823

原创 一致性哈希算法(consistent hashing)的一种实现

首先需要了解一致性哈希算法(consistent hashing):http://blog.csdn.net/cywosp/article/details/23397179/。下面介绍支持2^32次方空间的一致性哈希算法的一种实现:1、建立虚拟节点,最大支持2^16次方个虚拟节点:关键在于既要体现出每个实际节点的权重,还要为后续增加的节点预留虚拟节点。2、为了满足1条件和虚拟节点分布的

2015-12-30 07:26:22 466

原创 mv到同分区和不同分区是否有区别?

mv到同分区和不同分区是否有区别?比如假设/etc 和 /ext是在不同分区,mv /etc/aaa /etc/bbb 和 mv /etc/aaa /ext/bbb是否有区别。这题考察是mv的具体实现,mv会首先判断是否在同一个文件系统,如果在同一个文件系统中调用rename完成,如果在不同的文件系统采用cp拷贝来完成。这是为什么呢?因为每个文件系统各自对它们的i节点进行编号,

2015-12-20 08:50:32 961

原创 内存只有4GB,磁盘却有500GB,内存是如何对应到磁盘内容的呢?

其实每道题都在考一个知识点或多个知识点,这道题到底想考哪个知识点呢?我们知道在linux中写文件可采用write函数、读文件可采用read函数。那么这道题就是考察write和read具体实现细节问题,如何把buf内容写到指定磁盘位置上或从指定磁盘位置上的内容读取到buf中?write函数和read函数的第一个参数是文件描述符fd,那fd是如何找到磁盘位置的?这就涉及到内核用于所有I/O的数据结构了

2015-12-19 22:38:16 556

原创 求子数组的最大和

题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值以及子数组的起始和终止下标。要求时间复杂度为O(n)。可采用动态规划的思想,将数组累加值划分成一段一段进行分析,分段规则:累加值小于0时,重新分段;当累加值大于最大值时,更新最大值。示意图:代码:#include

2015-12-05 10:26:48 447

原创 使用SIGALRM信号为阻塞操作设置超时

我们经常会遇到为阻塞操作设置超时的问题,比如说阻塞套接字read读取设置10秒超时,其中一个办法就是调用alarm函数,它在指定超时时期产生SIGALRM信号,使得阻塞操作中断。但其弊端在于:1、可能干扰进程中现有的alarm调用,如timer、settimer、sleep等。2、在多线程化程序中正确使用信号却非常困难;所以建议只是在未线程化或单线程化的程序中使用本技术。d

2015-11-29 22:22:33 2424

原创 信号驱动式I/O模型,以终端I/O为例写个demo

在实践中有个问题需要注意,设计将标准输入stdin来触发SIGIO信号,但发现标准输出stdout也能触发SIGIO信号,所以O_ASYNC应该是针对设备,而不是描述符。如果在信号处理函数中,采用printf打印会不断触发SEGIO信号,所以改用写文件。代码如下:#include #include #include //for memset#include //for S

2015-11-17 07:43:11 748

原创 验证daemon程序中setsid的作用以及重定向stdin、stdout、stderr的原因

daemon程序包括第一次fork、setsid、第二次fork、改变工作目录、关闭所有打开的描述符以及重定向stdin、stdout、stderr。setsid发挥的作用是使得当前进程成为新会话的会话头进程以及新进程组的进程组头进程,从而不再有控制终端。将stdin、stdout和stderr重定向到/dev/null,其中一个原因是打开正常文件占用这些描述符时,诸如perror等之类函

2015-11-14 20:57:51 1224

原创 fread和read的区别,验证fread是带缓存的

fread是c标准库函数(调用read),read是unix系统下的系统调用;fread是带缓存的,read是不带缓存的;验证如下:采用fread一个一个字节读取文件,gdb查看什么时候调用read读取磁盘?#include #include #include int main(){ FILE *file_error = fopen("50M_tv

2015-11-10 21:26:16 2053

vc++的MSDN 不包括vb 大部分函数信息都有

vc++的MSDN 不包括vb 大部分函数信息都!非常简洁,基本的vc++函数都包括了!

2010-03-27

空空如也

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

TA关注的人

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