<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<channel>
	<title>潘少宁的博客</title>
	<link>http://www.gosoa.com.cn</link>
	<description>专注于高性能LAMP架构分析与实践</description>
	<lastBuildDate>Mon, 30 Apr 2012 09:24:04 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	<!-- generator="WordPress/3.2.1" -->

	<item>
		<title>Linux服务器性能评估与优化</title>
		<description><![CDATA[一、影响Linux服务器性能的因素 1. 操作系统级   Ø       CPU Ø       内存 Ø       磁盘I/O带宽 Ø       网络I/O带宽   2.        程序应用级   二、系统性能评估标准 &#160; 影响性能因素 评判标准 好 坏 糟糕 CPU user% + sys%&#60; 70% user% + sys%= 85% user% + sys% &#62;=90% 内存 Swap In（si）＝0 Swap Out（so）＝0 Per CPU with 10 page/s More Swap In &#38; Swap Out 磁盘 iowait % &#60; 20% iowait % =35% iowait [...]]]></description>
		<link>http://www.gosoa.com.cn/linux%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%80%a7%e8%83%bd%e8%af%84%e4%bc%b0%e4%b8%8e%e4%bc%98%e5%8c%96</link>
			</item>
	<item>
		<title>关于memcache分布式一致性hash</title>
		<description><![CDATA[consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出，目前在 cache 系统中应用越来越广泛； 1 基本场景 比如你有 N 个 cache 服务器（后面简称 cache ），那么如何将一个对象 object 映射到 N 个 cache 上呢，你很可能会采用类似下面的通用方法计算 object 的 hash 值，然后均匀的映射到到 N 个 cache ； hash(object)%N 一切都运行正常，再考虑如下的两种情况； 1 一个 cache 服务器 m down 掉了（在实际应用中必须要考虑这种情况），这样所有映射到 cache m 的对象都会失效，怎么办，需要把 cache m 从 cache 中移除，这时候 cache 是 N-1 台，映射公式变成了 hash(object)%(N-1) ； 2 由于访问加重，需要添加 cache ，这时候 cache 是 N+1 台，映射公式变成了 hash(object)%(N+1) ； 1 和 2 意味着什么？这意味着突然之间几乎所有的 cache 都失效了。对于服务器而言，这是一场灾难，洪水般的访问都会直接冲向后台服务器； 再来考虑第三个问题，由于硬件能力越来越强，你可能想让后面添加的节点多做点活，显然上面的 hash 算法也做不到。 有什么方法可以改变这个状况呢，这就是 consistent hashing&#8230; 2 hash 算法和单调性 Hash 算法的一个衡量指标是单调性（ Monotonicity ），定义如下： 单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中，又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲中去，而不会被映射到旧的缓冲集合中的其他缓冲区。 容易看到，上面的简单 hash 算法 hash(object)%N 难以满足单调性要求。 3 consistent hashing 算法的原理 consistent hashing 是一种 hash 算法，简单的说，在移除 / 添加一个 cache 时，它能够尽可能小的改变已存在 key 映射关系，尽可能的满足单调性的要求。 下面就来按照 5 个步骤简单讲讲 consistent hashing 算法的基本原理。 3.1 环形hash 空间 考虑通常的 hash 算法都是将 value 映射到一个 32 为的 key 值，也即是 0~2^32-1 次方的数值空间；我们可以将这个空间想象成一个首（ 0 ）尾（ 2^32-1 ）相接的圆环，如下面图 1 所示的那样。   图 1 环形 hash 空间 3.2 把对象映射到hash 空间 接下来考虑 4 个对象 object1~object4 ，通过 hash 函数计算出的 hash 值 key 在环上的分布如图 2 所示。 hash(object1) = key1; … … hash(object4) = key4;   图 2 4 个对象的 key 值分布 3.3 把cache 映射到hash 空间 Consistent hashing 的基本思想就是将对象和 cache 都映射到同一个 hash 数值空间中，并且使用相同的hash 算法。 假设当前有 A,B 和 C 共 3 台 cache ，那么其映射结果将如图 3 所示，他们在 hash 空间中，以对应的 hash值排列。 hash(cache A) = [...]]]></description>
		<link>http://www.gosoa.com.cn/%e5%85%b3%e4%ba%8ememcache%e5%88%86%e5%b8%83%e5%bc%8f%e4%b8%80%e8%87%b4%e6%80%a7hash</link>
			</item>
	<item>
		<title>Linux 常用命令 &#8211; 给linux初学者</title>
		<description><![CDATA[Linux 常用命令 1.# 表示权限用户(如:root),$ 表示普通用户 开机提示:Login:输入用户名 password:输入口令 用户是系统注册用户成功登陆后，可以进入相应的用户环境. 退出当前shell,输入:exit 2.useradd netseek 添加一个netseek用户 passwd netseek 给netseek这个用户设置密码. (/etc/passwd /etc/group) userdel netseek 删除账号 userdel -r netseek 删除账号连同自家目录. [更详细的操作请参阅man page,和账号管理篇] 3.查看命令 ls -l 显示文件列表 ls -al -a 显示所有档案及目录 (ls内定将档案名或目录名称开头为”.”的视为隐藏档，不会列出) ls -al &#124;grep &#8216;^d&#8217; 显示目录 ls -al &#124;grep &#8216;^[^d]&#8216; 在一个目录中查询不包含目录的所有文件 ls -sh (man ls 查看man帮助.) linux几种文件类型: d 表示此文件是一个目录 &#8211; 表示此文件是一个普通文件 [...]]]></description>
		<link>http://www.gosoa.com.cn/linux-%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4-%e7%bb%99linux%e5%88%9d%e5%ad%a6%e8%80%85</link>
			</item>
	<item>
		<title>关于产品经理核心专业能力的思考 &#8211; 腾讯产品总监蒋宁</title>
		<description><![CDATA[【本文系外部转载】 作者：腾讯产品总监- 蒋宁 引言： 产品经理是什么，最核心的能力KEY是哪些？如何获得？这个是自从担任产品经理以来就一直思索的问题；感觉产品经理的素质模型与培训体系不够系统化，特别是对于产品经理核心专业能力这块，感觉理解的不够清晰；打个比方，我想MS OFFICE的产品经理，WPS，或是Google的产品经理一定是很牛的人，那我们作为产品经理如果和他们换岗，能胜任吗？我们腾讯的产品经理需要哪些能力可以在更大的行业领域内流动，和业内的产品经理看齐？ 首先，我想找到产品经理专业领域中的核心能力，这个能力不能是其他岗位所重叠覆盖的，比如领导力，商务沟通。。。等，虽然这些也属于产品经理素质模型；但我想需要一些能力用来标记和识别一个产品经理专业性的核心素质。 下面聊三点： 1．是对产品经理个人专业能力的理解 2．从系统分析员看产品经理工作的异同 2. 无线互联网产品经理面临的更大要求和挑战 第一部分：对产品经理专业核心能力的理解； 记得2004加入公司做WAP产品开发工作，编码的时候就不由自主的去思考，我正在做的这个产品到底是给谁用户的，用户会怎么使用更合适；所以会不时地提出一些自己的个人意见，我想当初的产品经理应该觉得我挺烦的，呵呵；有次，当时的Leader找我聊天，问我有无兴趣转行做产品经理；我当时简单想了想就委婉拒绝了；原因有几个： 首先，我还是很希望在技术领域中更深入一些； 其次，我没有感到当时的产品经理工作有什么核心价值和含量； 2004年，个人对SP行业产品经理的看法与认知： 1）产品逻辑简单；感觉当时的那些WAP产品逻辑非常简单；有的是简单几个页面，放几个图铃就可以拿到移动梦网上收费；这里产品的主要工作还是在内容运营上； 2）“面向运营商的产品策划”；那个阶段，SP的商务模式清晰暴利，移动绝对主导产业链，制定游戏规则，对产品模式，甚至连产品表现层都有限制，比如页面什么地方要加什么链接就要加； 3）“面向渠道的产品运营”；运营商通过移动梦网把握营销渠道及计费渠道，产品经理更多的工作是以收入为中心进行渠道经营；对用户的行为分析做的比较少；回顾这个阶段，我想整个行业发展阶段就是如此，无所谓对错了； 4）产品经理的进入门槛不高；要做开发至少要会写程序吧，但感觉产品经理门槛太低；BD,内容维护，美工，很多角色都可以转岗到产品经理；据了解，当时很多SP公司招一些专科生，甚至高中生做产品经理，也一样紧锣密鼓的赚钱。产品经理的工作内容琐碎而繁杂，但感觉不够系统和严谨，每天花用WORD画几个页面就扔过来开发； 我当时一直在考虑这种工作状态下，这个岗位沉淀的核心能力和价值是什么？ 但客观的说，这个也不全是我们的问题，当时的整个SP行业氛围就是如此浮躁；也幸亏这个时期无线业务的造血功能，才养活了游戏，互联网等各个业务；但人才的价值在哪里呢？随着后续SP行业泡沫的破灭，很多公司的SP产品经理下岗，求职也到处碰壁；原因在于他们并没有建立起自己的核心竞争力，甚至不具备成为一个互联网行业产品经理的能力； 2005年WAP门户阶段的产品经理；初步转型的困惑。 到了2005年，部门决定做Wap门户了。我一开始在这个团队中作开发工作，比如资讯系统的建设；后来，又被当时的Leader建议去做WAP门户产品经理，这一次接受了： 主要原因： 1. 个人感觉，由于业务和市场导向的经营模式，产品经理对于WAP门户产品发展策略上话语权是比较大； 2. 个人非常看好和认同WAP门户这个发展方向 记得在2004年6月初，从事WAP开发的时候，同时在思考WAP，SMS,MMS 这几种无线产品的体验，个人感觉WAP的发展很有潜力，可为产品平台化提供支撑；有一天在公交车用手机看WAP新闻，突然有个想法，如果在将来车上每个人都拿着手机上网会是什么景象？我觉得有必要通过系统化思考，将自己的想法记录下来；于是用了三天的时间，反复的修改，写了一个14页的报告《关于发展免费WAP门户的思路与建议》； 现在看来，文章中无非表达了几个观点： 1. WAP的未来发展潜力很大，有可能孕育内容平台 2. 有线无线一体化会成为一种趋势； 3. 腾讯公司的WEB上优势业务都可以逐步衍生到手机终端； 4. 可以两条腿走路，一边发展免费WAP门户为未来布局；一边经营传统SP业务；。。。。。 这个文章其实无所谓有无现实意义，权当当时自己的思考结果的一种记录了； 逐步转型的困惑：以系统分析员的角度来做产品 大概从2005年4月，跌跌撞撞开始了产品经理之路；当时，一直很困惑的问题，还是说如何界定产品经理的工作职责与核心能力了；记得，我一开始是把自己当成类似系统分析员的工作方式来做产品经理的，把产品按子系统进行划分，当初写的功能需求说明书用计算机术语定义，也定义了数据属性；后来拿去给技术评审的时候，却被技术认为这些都不是我应该考虑的，当时的确很困惑，难道像很多产品经理那样，一上来就用WORD画UI示意图？我认为那样很不够严谨，很多需求无法被严格的定义； 虽然，个人认为不够严谨系统，从05年开始也随着整个门户平台的发展做了一系列的产品工作，从产品策划，运营，营销，商务各个角色的工作都做过，对行业的整体理解也逐渐摄入，逐步形成个人对产品经理专业素质的理解； 对产品经理专业核心能力的理解； 这里只谈专业领域方面的能力，对于商务谈判，沟通技巧，文档能力等方面暂时搁下； 个人认为一个领域的产品经理的专业能力表现在以下三个方面： 1. 行业理解能力； 行业分析师的素质； 2. 用户需求系统化分析能力；系统分析师的素质； 3. 用户体验细节把握的能力；交互设计师的素质； [...]]]></description>
		<link>http://www.gosoa.com.cn/%e5%85%b3%e4%ba%8e%e4%ba%a7%e5%93%81%e7%bb%8f%e7%90%86%e6%a0%b8%e5%bf%83%e4%b8%93%e4%b8%9a%e8%83%bd%e5%8a%9b%e7%9a%84%e6%80%9d%e8%80%83-%e8%85%be%e8%ae%af%e4%ba%a7%e5%93%81%e6%80%bb%e7%9b%91</link>
			</item>
	<item>
		<title>http_build_query 的一个问题</title>
		<description><![CDATA[当我们使用CURL来post数据的时候，需要设置post的数据 curl_setopt($c, CURLOPT_POSTFIELDS, $post_data); 假如这里的$data是 $data = array( 'name'=>'scofield', 'time'=>'2012-2-3' ) 接下来，需要先将$data变成字符串 $post_data = http_build_query($data); 而采用 http_build_query 转换后再 curl_setopt($c, CURLOPT_POSTFIELDS, $post_data); 看起来没有什么问题。但在实际操作中，$post_data 并没有被post过去。于是，自己写了个转换的方法后就OK了。 function getStr($array,$Separator='&#038;') { if (empty($array)) return; if (!is_array($array)) { return $array; } $returnStr = ''; foreach ($array as $key => $val) { $temp = ''; if (is_array($val)) { for ($i = 0; [...]]]></description>
		<link>http://www.gosoa.com.cn/http_build_query-%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98</link>
			</item>
	<item>
		<title>一个有意思的日期逻辑处理</title>
		<description><![CDATA[今天处理了一个很小的问题。
需求是这样的，从周一到周日只能看到上周一到上周日的数据。
这里直接从数据库里根据 date 字段查询 范围即可。
但需要PHP生成 开始日期和结束日期。

最开始，我直接这么处理。
<pre name="code" class="php">
$start_date = date('Y-m-d' , strtotime("-2 week monday"));
$end_date = date('Y-m-d' , strtotime("$start_date +6 day"));
</pre>
假如日期是 2011-07-19，$start_date= 2011-07-11  这样处理没有问题。
如果日期是  2011-07-18 ，$start_date 则会等于 2011-07-04，还活在上周。]]></description>
		<link>http://www.gosoa.com.cn/%e4%b8%80%e4%b8%aa%e6%9c%89%e6%84%8f%e6%80%9d%e7%9a%84%e6%97%a5%e6%9c%9f%e9%80%bb%e8%be%91%e5%a4%84%e7%90%86</link>
			</item>
	<item>
		<title>PHP用CURL伪造IP和来源</title>
		<description><![CDATA[以前没有这么搞过。

今天群里一个朋友在问这个问题。

查了下，CURL确实很强悍的可以伪造IP和来源。

1.php 请求 2.php 。

1.php代码：]]></description>
		<link>http://www.gosoa.com.cn/php%e7%94%a8curl%e4%bc%aa%e9%80%a0ip%e5%92%8c%e6%9d%a5%e6%ba%90</link>
			</item>
	<item>
		<title>LAMPER主题分享交流会第七期：LAMP高性能实践</title>
		<description><![CDATA[主题一、高性能Lamp程序设计 嘉宾：付超群 主题二：Sphinx构建全文搜索 嘉宾：李沫南 主题三：redis艺术 嘉宾：杨海潮 （* 特别鸣谢 新浪提供场地 *） ————————————————————————— 具体安排： 活动时间：2011年7月16日（周六），13:30  - 16:30 活动地点：北京市海淀区北四环西路理想国际大厦 15层 所需费用：免费 活动日程： 13:00-13:30：签到、入场 13:30-14:30：高性能Lamp程序设计 14:30-15:30：Sphinx构建全文搜索 15:30-16:30：redis艺术 16:30-16:40：Q &#38; A，合影，自由交流 联系人： 茹云峰 – 13141362151 潘少宁 – 13520286595 ————————————————————————— 嘉宾介绍： 付超群 工程师，主要兴趣方向是Lamp架构程序设计，全文检索以及数据挖掘，ColaPHP框架作者。 博客：http://www.fuchaoqun.com 新浪微博：http://weibo.com/fuchaoqun 李沫南 开源爱好者， coreseek.com 创始人。 杨海潮 新浪首席DBA 目前为新浪首席DBA，在大规模高并发，海量访问有丰富的管理经验。热衷于数据库设计，性能优化，分布式部署方案和高可用性方面的研究。 之前从事大访问量网站的部署以及优化工作，加入新浪后主要负责整个公司的数据库管理工作。 报名 请猛点这里。 LAMPER  点这里，点这里。。。!]]></description>
		<link>http://www.gosoa.com.cn/lamper%e4%b8%bb%e9%a2%98%e5%88%86%e4%ba%ab%e4%ba%a4%e6%b5%81%e4%bc%9a%e7%ac%ac%e4%b8%83%e6%9c%9f%ef%bc%9alamp%e9%ab%98%e6%80%a7%e8%83%bd%e5%ae%9e%e8%b7%b5</link>
			</item>
	<item>
		<title>优化PHP代码的40条建议[转]</title>
		<description><![CDATA[1.如果一个方法可静态化，就对它做静态声明。速率可提升至4倍。

2.echo 比 print 快。

3.使用echo的多重参数（译注：指用逗号而不是句点）代替字符串连接。

4.在执行for循环之前确定最大循环数，不要每循环一次都计算最大值。

5.注销那些不用的变量尤其是大数组，以便释放内存。

6.尽量避免使用__get，__set，__autoload。]]></description>
		<link>http://www.gosoa.com.cn/%e4%bc%98%e5%8c%96php%e4%bb%a3%e7%a0%81%e7%9a%8440%e6%9d%a1%e5%bb%ba%e8%ae%ae%e8%bd%ac</link>
			</item>
	<item>
		<title>PHP几个不常用但很有用的函数</title>
		<description><![CDATA[glob() 直接print_r(glob(&#8216;*&#8217;)) 看看效果吧。 再  print_r(glob(&#8216;*.PHP&#8217;)) 再看看效果吧。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- PHP Filter函数 PHP自带的filter函数。直接可以用来验证email，IP等。也可以用来验证 INPUT等。 具体见这里 http://php.net/manual/en/book.filter.php &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- get_browser() 获得浏览器信息的。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- sys_getloadavg() 这个函数只针对linux系统有用。 可以用来监测系统的负载。 其值就是linux的 load average值。]]></description>
		<link>http://www.gosoa.com.cn/php%e5%87%a0%e4%b8%aa%e4%b8%8d%e5%b8%b8%e7%94%a8%e4%bd%86%e5%be%88%e6%9c%89%e7%94%a8%e7%9a%84%e5%87%bd%e6%95%b0</link>
			</item>
</channel>
</rss>

