唯有前进值得敬仰

---等得越久,相聚时越幸福
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年4月27日

摘要: 最近在做性能优化相关的工作,也了解了一些web性能优化的方法。简单总结一下。首先得知道哪些地方是性能瓶颈,哪里导致页面打开慢。一般通过浏览器自带的网络功能,可以看到页面打开时下载各组件花费的时间,比如css,js,图片等,大体上了解哪些环节慢。对于web服务端程序性能瓶颈的分析,则可以借助于一些分析统计工具。比如后面我们即将讨论的php程序,可以使用xdebug工具统计各function消耗时间。Web站点常用的优化方案主要有哪些?很感谢《构建高性能web站点》一书,我在工作中的很多方法也是参考这本书去做的。后续内容的组织也按照这本书的结构,也算是这本书的读书笔记了。增加服务器带宽。多适用于以 阅读全文

posted @ 2013-04-27 21:36 绿豆芽33 阅读(246) 评论(0) 推荐(0) 编辑

2013年4月24日

摘要: 之前都是使用同事封装好的mysql类,今天做性能测试时自己手动编写了查询mysql的操作。偶然发现mysqli::query(或者mysqli_query)有一个参数$resultmode取值为MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT。平时封装好的类中都是使用默认的MYSQLI_STORE_RESULT。Phpmanul上给出了这么一段话: Either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, 阅读全文

posted @ 2013-04-24 19:25 绿豆芽33 阅读(3611) 评论(2) 推荐(0) 编辑

2011年9月7日

摘要: 接着讲另外几个数据结构。1.CorruptReplicationMap成员变量:Map<Block, Collection<DatanodeDescriptor>>corruptReplicasMap用来记录datanode上出错的block,getNodes方法返回一个block在哪些datanode上的副本是corrupt的。在FSNamesystem中使用corruptReplicas保存这个map结构。坏掉的block将放入recentInvalidateSets(Map<String, Collection<Block>>)中,Clie 阅读全文

posted @ 2011-09-07 10:58 绿豆芽33 阅读(2382) 评论(0) 推荐(0) 编辑

2011年9月1日

摘要: 关于hdfs源码的阅读,我这个小菜鸟觉得有这么两种方式去读,一是抓住它关键的数据结构,知道了他们是干什么用的,剩下的就是一些围着他们转的操作了;二是跟踪执行过程的流程式阅读,以mkdir为例,从client应用发出mkdir请求到传递给namenode,再在datanode上执行,这么一个过程详细地跟踪下来,就理解了一大片。两种路子没有孰优孰劣,配合使用或许更有效。本篇先从数据结构的角度分享一点自己读namenode部分源码的收获。 这是一张任何介绍hdfs的文章都会出现的架构图。采用的是master/slave模型,一个hdfs cluster包含一个NameNode和若干的DataN... 阅读全文

posted @ 2011-09-01 21:50 绿豆芽33 阅读(6740) 评论(2) 推荐(1) 编辑

2011年8月31日

摘要: 1.GFS集群包括一个Master节点,多个chunkserver及多个client。这里的一个Master节点应该是个概念上的东西,具体实施分布时会有两个或更多个Master机器(但职责不同于Master,原则上我们依然认为只有一个master),如“shadow master”。chunkserver就是普通的linux机器运行着chunkserver进程,文件存储采用linux文件系统如ext3,ext4。client看作是GFS的接口,负责应用程序与GFS的沟通。文件划分成固定大小的chunk,每个chunk由一个64bit的chunk handle唯一标识,由master创建时分.. 阅读全文

posted @ 2011-08-31 23:24 绿豆芽33 阅读(2059) 评论(0) 推荐(0) 编辑

摘要: 读完Bigtable论文小结一下。对于Bigtable的整体理解BigTable将数据存储分为两部分:最近的更新存储在内存(memtable)中,较老的更新则以SSTable的格式存储在GFS,后者是主体部分,不可变的数据结构。写操作的内容插入到memtable中,当memtable的大小达到一个阈值时就冻结,然后创建一个新的memtable,旧的就转换成一个SSTable写入GFS。读操作时还要综合考虑memtable和SSTable,如果写操作时产生的SSTable越来越多,就会影响读性能。于是采用mergingcompaction——读取一些SSTable和memtable的内容,合并成 阅读全文

posted @ 2011-08-31 23:16 绿豆芽33 阅读(4544) 评论(0) 推荐(1) 编辑

摘要: 读完mapreduce论文小结一下。1.MapReduce是一个编程模型,封装了并行计算、容错、数据分布、负载均衡等细节问题。输入是一个key-value对的集合,中间输出也是key-value对的集合,用户使用两个函数:Map和Reduce。Map函数接受一个输入的key-value对,然后产生一个中间key-value 对的集合。MapReduce库把所有具有相同中间key值I的中间value值集合在一起后传递给reduce函数。Reduce函数接受一个中间key的值I和相关的value值的集合,合并这些value值,形成一个较小的value值的集合。对输入的key-value的理解:这里 阅读全文

posted @ 2011-08-31 23:13 绿豆芽33 阅读(3432) 评论(2) 推荐(5) 编辑

2011年4月7日

摘要: 最近写的一个小程序中用strlen函数求字符串长度,字符明明只有4个,可是结果求出来的长度却不是4,原来使用strlen函数要求字符串必须是以''\0''结尾的。strlen返回它的长度但不包括‘\0’(这不同于sizeof)。这里就顺便总结一下了。(以下均针对x86 32bit平台)1.先看例子。char* ss = "0123456789";char st[] = "0123456789";char sa[100] = "0123456789";struct s{int i;char j;doubl 阅读全文

posted @ 2011-04-07 21:30 绿豆芽33 阅读(411) 评论(1) 推荐(0) 编辑

2011年3月30日

摘要: 现在的浏览器地址栏中不必输入完整的地址就可以找到你以前访问过的网页,如果你仅记得之前访问的网址中有某个字符串aaa,那么只要在地址栏里输入aaa,就可以找到该网址的完整形式。比如在地址栏中输入一个字符:t ,那么以前访问的地址就会显示出来供你选择:t.sina.com.cn/****taobao.comwww.tudou.comcode.taobao.org.......如果继续输入tao,那么显示出来的就只有taobao.comcode.taobao.org了。问题是假设存放访问网址历史记录的文件有几百万行,每行是一个网址字符串,输入要查找的字符串可能是某一行的一部分,怎么才能快速高效地找出 阅读全文

posted @ 2011-03-30 10:16 绿豆芽33 阅读(1439) 评论(2) 推荐(0) 编辑

2011年3月27日

摘要: 今天淘宝海笔时碰到的一道题。题目大概是这样叙述的:n个鸡蛋放到m个篮子,每个篮子不能空,要求满足:给定任意一个小于n的数量,几个篮子的鸡蛋数加起来就可以等于它。要求输入n和m,求出满足要求的所有可行的鸡蛋放法。偶是个小菜鸟,想了10多分钟,效率不怎么高,貌似还算可行,回来后写了下程序。偶的思路大体是这样的。先将问题转换一下描述,就是给定两个正整数n和m,对于任一个小于n的正整数x都可以表示成这m个数的部分和,求出满足这个要求的m个数有多少种。经过我的分析发现,这m个数的最大值不超过n/2(上取整),而且除了最后两个数不是1之外其他的m-2个数均是1,可是我当时不会证明这个想法对不对。就采用了这 阅读全文

posted @ 2011-03-27 21:41 绿豆芽33 阅读(1514) 评论(4) 推荐(1) 编辑