• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






hxdoit

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理
上一页 1 2 3 4 下一页

2014年3月23日

linux内核数据结构--进程相关
摘要: linux里面,有一个结构体task_struct,也叫“进程描述符”的数据结构,它包含了与进程相关的所有信息,它非常复杂,每一个字段都可能与一个功能相关,所以大部分细节不在我的研究范围之内,在这篇文章里面只讲述这些数据结构的组织方式,相当于一个知识点的大的梗概或骨架,如果骨架搞明白了,那么内部的细节就可以抽丝剥茧,搞明白也非难事。一,链表很简单,上面所说的进程描述符以双向链接的形式组织起来,说起来很简单,但还是有一些特色在里面的1,在Linux内核链表中,不是在链表结构中包含数据,而是在数据结构中包含链表节点。在内核中定义了list_head的一个数据结构,struct list_head 阅读全文
posted @ 2014-03-23 19:31 hxdoit 阅读(796) 评论(0) 推荐(0)
 

2014年3月19日

无用的内存分段
摘要: 分段是80X86体系的处理器支持的一种特性,也就是说硬件已经支持了这内存分段的功能, 用或不用的选择权在操作系统手中,linux系统就没有使用分段的功能,而使用了分页的功能。linux虽然没有用分段,但了解分段对于整个linux系统的了解,还有linux初始化的时的流程,还是很有用的。参考资料 《深入理解Linux内核》第二章,大概讲了12页,我也看了几遍才看懂,以下内容就算个读书笔记。一,内存地址的分类1,逻辑地址: 由段和偏移量组成2,线性地址: 可以想像成指针地址,就是我们在C语言中的用的指针3,物理地址: 实实在在的物理内存地址二,处理器有哪硬件特性支持分段如下图所示,CPU提供了6. 阅读全文
posted @ 2014-03-19 04:10 hxdoit 阅读(313) 评论(0) 推荐(0)
 

2014年1月1日

用mysqlslap压测mysql
摘要: 参考文献:http://my.oschina.net/costaxu/blog/108568上面网友详细的列举了用mysqlslap对mysql的压力测试结果,我也照葫芦画瓢试了一次,结果如下:以下命令代表:用10个并发连接,对一个有10个int列,10个varchar列,两个索引的表进行写操作mysqlslap --concurrency=10 --iterations=1 --number-int-cols=10 --number-char-cols=10 -a --auto-generate-sql-add-autoincrement --number-of-queries=50... 阅读全文
posted @ 2014-01-01 19:13 hxdoit 阅读(523) 评论(0) 推荐(0)
 

2013年12月22日

对apache和memcache进行压力测试
摘要: 工作中经常使用的软件之二:apache和memcache以前经常听说memcache的TPS能达到几万,但一直也不知道apache的性能到底如何,所以在闲暇之余,就自己做了一下压力测试。环境:两台开发机,一台施压,一台被压过程如下:1,下载、安装并启动apache 2.2.262,使用一个简单的网页作为测试目标It works!3,使用apache自带的ab命令,进行压力测试time ab -n 50000 -c 100 "http://10.210.215.145/"结果:并发数100,请求50000次,试验2次,两次平均时间14.4855s,TPS=50000/14.4 阅读全文
posted @ 2013-12-22 15:43 hxdoit 阅读(1818) 评论(0) 推荐(1)
 

2013年12月15日

多线程----信号处理
摘要: 1,在linux的信号机制里面,有很多信号的默认处理都是结束进程,例如SIGPIPE,SIGINT如果我们没有对信号进行处理,那么我们的程序就不太健壮。2,不同的操作系统,多线程中对信号的处理不一致。linux的线程其实就是一个轻量级的进程,每一个线程都可以接收和处理信号。例如,linux中信号处理默认是由主线程进行,但如果主线程对某个信号进行了屏蔽,这个信号就可以交给其它可以处理的线程进行处理。3,为了统一,我们可以在主线程里面接收和处理信号,而其它线程屏蔽所有信号。代码如下:rbsignal.h#ifndef _RB_SIGNAL_H#define _RB_SIGNAL_H#include 阅读全文
posted @ 2013-12-15 13:15 hxdoit 阅读(794) 评论(0) 推荐(0)
 

2013年11月23日

服务器程序后台化
摘要: //服务器程序后台化int daemonize(){ //创建父进程,创建子进程,使程序在后台运行 pid_t pid=fork(); if(pid0) exit; //设置文件权限掩码 umask(0); //创建新的会话,从而使程序脱离终端 pid_t sid=setsid(); if(sid<0) return -1; //切换工作目录 if(chdir("/")<0) ... 阅读全文
posted @ 2013-11-23 01:47 hxdoit 阅读(312) 评论(0) 推荐(0)
 

2013年11月21日

automake---让Makefile变得更专业一点儿
摘要: 一般我们装软件时,都要运行./configure --prefix=/usr/localmakemake install看着不断刷新的屏幕,总感觉真得好高深呀,其实我们的程序也可以这样子。下面,我将自己以前编写的一个程序改造成很专业的样子。下面的Makefile是我自己写的:objects=allotter/array.o config/config.o rbtree/rbtree.o thread_pool/thread_pool.o workers/workers.o hash_map/hash_map.o tool/tool.oCC=gcc -g -lstdc++server/serv. 阅读全文
posted @ 2013-11-21 00:22 hxdoit 阅读(287) 评论(0) 推荐(0)
 

2013年11月15日

什么要缓存curl资源
摘要: 在看公司的代码框架底层时,发现了一个问题,如下:代码中调用接口时,使用的是curl,框架将curl资源以IP :端口的形式缓存了下来,例如:10.10.10.10:80 curl110.10.10.10:8080 curl2有点不太理解原因,所以作了两个实验,过程如下:实验一:两个curl请求相同域名下的不同接口实验二:一个curl请求相同域名下的不同接口//两个curl请求相同域名的不同接口$ch = curl_init();curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com/");curl_setopt($ch, CU 阅读全文
posted @ 2013-11-15 13:45 hxdoit 阅读(1989) 评论(0) 推荐(0)
 

2013年11月6日

用EPOLL进行压力测试
摘要: 在以前的博客中提到的一个服务端,在以前压力测试的过程中,发现单核CPU最多能达到1000TPS还以为是服务端性能不够好,所以一直想着怎么去优化它。但优化的思路明显不多,所以就考虑换一种压力测试的方法,事实证明这个想法是对的。以前的压力测试方法 :for((i=0;i #include #include #include #include #include #include #include #include #include #include #include static struct sockaddr_in server_addr; ... 阅读全文
posted @ 2013-11-06 11:47 hxdoit 阅读(2179) 评论(0) 推荐(0)
 

2013年10月12日

B和B+树学习笔记
摘要: 二叉树如果数据都在内存中,我们就用平衡二叉查找树即可,这样效率最高。在前面的文章中我使用过红黑树(大致平衡的二叉查找树),500万节点时,搜索的深度可以达到50,也就是需要50次指针操作才能获取到数据。数据在内存中,50次间接寻址不是什么问题。B树但数据在硬盘中,50次间接寻址肯定就不行了,所以就必须减少树的深度。于是我们的树就不是二叉了,而是多叉,举例来说,如果是10叉,500万节点时,log105000000 = 7,这样与log25000000=27的深度有了大大的减少,而在实际应用中,应该是远远大于10叉,分叉多了,硬盘的代价下来了,但CPU的负担就上来了,因为要进行更多次的比较,不过 阅读全文
posted @ 2013-10-12 11:48 hxdoit 阅读(315) 评论(0) 推荐(0)
 
上一页 1 2 3 4 下一页