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






hxdoit

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

2013年10月9日

殊途同归
摘要: ext2文件系统中,块的大小为4K(可配置),将硬盘分为4K大小的块,这是基础架构,然后在上面构建inode索引结点等其它数据结构。ext2会在inode中记录文件(例如:/tmp/a.txt)使用了哪几个块。在内存管理中,将物理内存分为4K大小的页,然后以页为单位,分配置给各个进程来使用。操作系统会在页表中记录了某个进程使用了哪几个页。......这不能说是一个巧合吧操作系统将读取过的文件的inode信息保存在内存中,下次使用时就不需要读硬盘某个页已经在内存中了,但仍然不够快,我们就在cpu与内存中间加了一层cache,这样cpu甚至也不需要访问内存了CPU会经常将虚拟的指针地址转换为实际的 阅读全文
posted @ 2013-10-09 18:27 hxdoit 阅读(157) 评论(0) 推荐(0)
 
KMP算法
摘要: 算法简介:http://blog.sae.sina.com.cn/archives/307绝对简单易懂,以下代码是根据算法自己实现的,为了便于阅读,分成了三个函数,可能有点ugly另外,实际算法肯定不会调用malloc的,在这儿只是实现了功能而已写了半天,我们在平常在php中调用strstr,stripos等函数时,是否会想过它的背后是这么复杂的算法吗?int get_max_len(const char* search){int i,result=0;int len=strlen(search);char* copy1=(char*)malloc(2*(len+1));char* copy2 阅读全文
posted @ 2013-10-09 18:27 hxdoit 阅读(272) 评论(0) 推荐(0)
 
从m个数中取top n
摘要: 将题目具体一点,例如,从100个数中取出从大到小排前10的数方法1:使用快速排序因为快速排序一趟下来,小于K的数都在K的前面,大于K的数都在K的后面如果,小于K的数有35个,大于K的数有64个那么,所以我们取top 10时,只需要在前35个数中进行递归快速排序,所以不需要对所有的数进行排序方法2:使用堆排序首先在前10个数中建议一个小根堆,因为是小根堆,所以前10个数中最小的数在index=0上然后遍历从11到100的数,如果p[i]>p[0],那么交换p[i]和p[0],然后重建堆遍历完成后,top 10的数就是堆中我用10万个随机数做实验,性能分析如下:表示当选取top 10时,快速 阅读全文
posted @ 2013-10-09 18:26 hxdoit 阅读(747) 评论(0) 推荐(0)
 
用红黑树实现500万数据的动态排序
摘要: 近几个月,做了一个可以对500万数据实时排序的程序此想法源于一个实际的需求:微博达人目前有500万以上,每一位达人都有达人积分,积分可以通过发博,评论等活动来获取。为了激励用户,产品需要获取每一位达人的积分排名,目前的做法是一天排序一次,排序方法如下:1,先从数据库中以文本形式导出500万达人的积分数据2,用sort命令对文本进行排序3,将排序后的数据一条一条的更新到数据库中经过日志分析,所有过程大概1个半小时,在每天的凌晨三四点钟运行,步骤1和2共占用几分钟时间,剩下的时间都消耗在数据库更新上最开始的想法是怎样节省数据库操作的的代价,由于经验不足没有什么好的想法,再加上需求也不迫切,久而久之 阅读全文
posted @ 2013-10-09 18:24 hxdoit 阅读(2439) 评论(0) 推荐(1)
 
返璞归真
摘要: 从大二开始学数据结构,到现在还没有把几种排序算法完完整整的写过一遍,现在终于有心情把这些最基本的东西捡起来,重新学习一遍。六种排序算法:插入,希尔,冒泡,快速,归并和堆排序先随机生成10万个数,放在文本中,然后读到内存,进行排序电脑配置:双核cpu MHz: 2394.650费话不多说,先看看我的性能分析:排序算法 运行时间(s)快速排序 0.078归并排序 0.085希尔排序 0.094堆排序 0.098插入排序 9.33冒泡排序 39.28算法大家都很熟悉,不多说,只是觉得希尔排序的速度出乎意料,冒泡排序的速度也很出乎意料。源代码链接:http://pan.... 阅读全文
posted @ 2013-10-09 18:23 hxdoit 阅读(195) 评论(0) 推荐(0)
 
second blog编程之美------控制cpu曲线
摘要: 先贴程序:以前看过这个算法, 不过没什么印象,大概记得它利用while循环来控制cpu利用率#includeint main(int argc,char*argv[]){while(1){int i=atoi(argv[1]);while(i--);usleep(atoi(argv[2]));}return 0;}运行:./cpu 5000000 30000 表示每隔30ms,来一次5000000次的减法操作运行结果:cpu idle大概一直是57那么怎么得到50%的idle呢?假如第一个参数5000000固定,那么我们需要知道5000000的减法运行时间计算方法 :x/(x+30)=0.43 阅读全文
posted @ 2013-10-09 18:19 hxdoit 阅读(215) 评论(0) 推荐(0)
 
first blog编程之美-----计算1的个数
摘要: 根据以下总结写出以下程序,总结来源于网上感想:得硬着头皮找规律#includeint count1(int n){int i=1;int count=0,after=0,before=0,cur=0;while(n/i){after = n%i;before=n/(10*i);cur = n/i;// printf("%d %d %d\n",before,cur,after);if(cur < 1){count+=(before*i);} else if(i==1){count+=(before*i+after+1);} else{count+=((before+1) 阅读全文
posted @ 2013-10-09 18:18 hxdoit 阅读(145) 评论(0) 推荐(0)