<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>五四陈科学院-php与java科学院</title>
	
	<link>http://www.54chen.com</link>
	<description>可以说是非常领先的技术，都会在此处出现。- 院内人士宣</description>
	<pubDate>Mon, 08 Feb 2010 09:23:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/-aboutJavaAndPhp" /><feedburner:info uri="-aboutjavaandphp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>解读PHP开源项目中列表和hook方法：while(has_items()): thme_ite();和apply_filters</title>
		<link>http://feedproxy.google.com/~r/-aboutJavaAndPhp/~3/l9FiZrA3BFs/php-open-source-projects-reading-lists-and-hook-methods-while-has_items-thme_ite-and-apply_filters.html</link>
		<comments>http://www.54chen.com/php-tech/php-open-source-projects-reading-lists-and-hook-methods-while-has_items-thme_ite-and-apply_filters.html#comments</comments>
		<pubDate>Mon, 08 Feb 2010 09:23:55 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
		
		<category><![CDATA[php]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[开源]]></category>

		<guid isPermaLink="false">http://www.54chen.com/php-tech/php-open-source-projects-reading-lists-and-hook-methods-while-has_items-thme_ite-and-apply_filters.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>在wordpress,lilina等开源项目中，常常会看到一些莫名的代码，来无影去无踪，看上去很有意味，特地拿来分析分析，看看一般的作法。
part 1  列表 循环显示
先看代码：
&#60;?php
$num = 0;
if(has_items(... <a href="http://www.54chen.com" target=_blank>五四陈科学院</a> <a href="http://www.twitter.com/54chen" target=_blank>54chen twitter</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><p>在<a href="http://www.54chen.com/architecture/wordpress-nginx-php-cgi-mysql-memory-in-the-128m-to-install-and-optimize-the-vps-notes.html">wordpress</a>,lilina等开源项目中，常常会看到一些莫名的代码，来无影去无踪，看上去很有意味，特地拿来分析分析，看看一般的作法。</p>
<p><strong>part 1  列表 循环显示</strong></p>
<p>先看代码：</p>
<blockquote><p>&lt;?php<br />
$num = 0;<br />
if(has_items()) {<br />
while(has_items()): the_item();<br />
}<br />
?&gt;</p></blockquote>
<p>以上代码，出自某开源项目。。。</p>
<p>再进入the_item()函数内部，可以看到一个关键的函数：</p>
<blockquote><p>* Returns the current item<br />
*<br />
* @since 1.0<br />
*<br />
* @return bool|stdClass False if item doesn&#8217;t exist, otherwise returns the specified item<br />
*/<br />
public function current_item() {<br />
$this-&gt;previous_item = $this-&gt;current_item;<br />
$this-&gt;current_item = &#8221;;</p>
<p>$item = each($this-&gt;items);<br />
$item = $item['value'];<br />
if(!$item)<br />
return false;</p>
<p>$this-&gt;current_item = $item;<br />
$this-&gt;current_feed = $item-&gt;feed;</p>
<p>return $item;<br />
}</p></blockquote>
<p>这个关键的函数是each()，来看手册：</p>
<h1>each</h1>
<div class="refnamediv"><a name="AEN12322"></a>(PHP 3, PHP 4, PHP 5)</p>
<p>each &#8211;       返回数组中当前的<a href="http://www.54chen.com/translate/dynamo-based-systems-designed-linkin-voldemort-voldemort-design-chinese-documents-i-am-a-chan-academy-of-sciences-translation-finalized.html">键／值</a>对并将数组指针向前移动一步</div>
<div class="refsect1"><a name="AEN12325"></a></p>
<h2>说明</h2>
<p>array <strong class="methodname">each</strong> ( array &amp;array )</p>
<p>返回 <var class="parameter">array</var> 数组中当前指针位置的键／值对并向前移动数组指针。键值对被返回为四个单元的数组，键名为      <var class="literal">0</var>，<var class="literal">1</var>，<var class="literal">key</var> 和 <var class="literal">value</var>。单元 <var class="literal">0</var> 和      <var class="literal">key</var> 包含有数组单元的键名，<var class="literal">1</var> 和      <var class="literal">value</var> 包含有数据。</p>
<p>如果内部指针越过了数组的末端，则 <strong class="function">each()</strong> 返回 <tt class="constant"><strong>FALSE</strong></tt>。</p>
<p>综合来看，其实就是一个做了一个游标一样的模型，利用each来操作一个数组或者相似的结构，每次在显示的时候，都有对数据数组的本身操作，而while里的has_item，只是作简单的判断有无而已。</p>
<p><strong>part2 hook</strong></p>
<p>第二种情况，是一个叫apply_filters的函数的<a href="http://www.54chen.com/architecture/wordpress-nginx-php-cgi-mysql-memory-in-the-128m-to-install-and-optimize-the-vps-notes.html">实现</a>。先看代码：</p>
<blockquote><p>function the_item() {<br />
global $lilina_items, $item;</p>
<p>$item = apply_filters(&#8217;the_item&#8217;, $lilina_items-&gt;current_item());<br />
}</p></blockquote>
<p>这是lilina里的一个函数，要看的是这个apply_filters方法，有一个简单的例子：</p>
<blockquote><p>function example_hook($string, $arg1, $arg2)<br />
{<br />
//Do stuff<br />
return $string;<br />
}<br />
$value = apply_filters(&#8217;example_hook&#8217;, &#8216;filter me&#8217;, &#8216;arg1&#8242;, &#8216;arg2&#8242;);</p></blockquote>
<p>apply_filters里面最关键的一个函数：</p>
<h1>call_user_func_array</h1>
<div class="refnamediv"><a name="AEN50629"></a>(PHP 4 &gt;= 4.0.4, PHP 5)</p>
<p>call_user_func_array &#8211;       Call a user function given with an array of parameters</p></div>
<div class="refsect1"><a name="AEN50632"></a></p>
<h2>Description</h2>
<p>mixed <strong class="methodname">call_user_func_array</strong> ( callback function, array param_arr )</p>
<p>Call a user defined function given by      <var class="parameter">function</var>, with      the <a href="http://www.54chen.com/php-tech/multi-nginx-configuration-of-single-php-fpm-approach-from-academy-of-sciences.html">parameters</a> in <var class="parameter">param_arr</var>.</p>
<p>其实这些渐渐被遗忘的<a href="http://www.54chen.com/webfe/academy-of-sciences-in-recent-years-a-good-article-summing-up.html">函数</a>，在高手们的使用下，对项目化的开发很有优势，随手记之。</div>
</div>

	标签：<a href="http://www.54chen.com/tag/php" title="php" rel="tag">php</a>, <a href="http://www.54chen.com/tag/wordpress" title="wordpress" rel="tag">wordpress</a>, <a href="http://www.54chen.com/tag/%e5%bc%80%e6%ba%90" title="开源" rel="tag">开源</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.54chen.com/translate" title="资料翻译 (2009-01-16)">资料翻译</a> (0)</li>
	<li><a href="http://www.54chen.com/cc/%e7%a9%b6%e7%ab%9f%e4%bb%80%e4%b9%88%e6%98%aftsrmls_cc%ef%bc%9f.html" title="究竟什么是TSRMLS_CC？ (2008-12-03)">究竟什么是TSRMLS_CC？</a> (9)</li>
	<li><a href="http://www.54chen.com/php-tech/%e6%b7%ab%e8%8d%a1%e4%b8%80%e4%b8%8b%ef%bc%8c%e4%bd%a0%e5%b0%b1%e7%9f%a5%e9%81%93.html" title="淫荡一下，你就知道 (2008-12-08)">淫荡一下，你就知道</a> (2)</li>
	<li><a href="http://www.54chen.com/goingdown" title="淫荡一下 (2008-12-08)">淫荡一下</a> (4)</li>
	<li><a href="http://www.54chen.com/php-tech/%e5%a6%82%e4%bd%95%e7%94%a8php%e4%bb%a3%e7%a0%81%e6%b8%85%e7%a9%basquid%e7%bc%93%e5%ad%98%e4%b8%8b%e7%9a%84%e6%8c%87%e5%ae%9a%e6%96%87%e4%bb%b6.html" title="如何用php代码清空squid缓存下的指定文件 (2009-03-05)">如何用php代码清空squid缓存下的指定文件</a> (3)</li>
</ul>


<p><a href="http://feedads.g.doubleclick.net/~a/qiXOJQUDNDSZO_hSF75GJMUhan4/0/da"><img src="http://feedads.g.doubleclick.net/~a/qiXOJQUDNDSZO_hSF75GJMUhan4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qiXOJQUDNDSZO_hSF75GJMUhan4/1/da"><img src="http://feedads.g.doubleclick.net/~a/qiXOJQUDNDSZO_hSF75GJMUhan4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/-aboutJavaAndPhp/~4/l9FiZrA3BFs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/php-tech/php-open-source-projects-reading-lists-and-hook-methods-while-has_items-thme_ite-and-apply_filters.html/feed</wfw:commentRss>
		<feedburner:origLink>http://www.54chen.com/php-tech/php-open-source-projects-reading-lists-and-hook-methods-while-has_items-thme_ite-and-apply_filters.html</feedburner:origLink></item>
		<item>
		<title>54chen Twitter memo 2010-02-07</title>
		<link>http://feedproxy.google.com/~r/-aboutJavaAndPhp/~3/hNHSL0Rknew/54chen-twitter-memo-2010-02-07.html</link>
		<comments>http://www.54chen.com/memo/54chen-twitter-memo-2010-02-07.html#comments</comments>
		<pubDate>Sun, 07 Feb 2010 01:09:00 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
		
		<category><![CDATA[备忘]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.54chen.com/memo/54chen-twitter-memo-2010-02-07.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>
深圳火车站1月30日的一趟列车，上座率仅8%，然而根据铁路部门发布的信息，这趟列车的车票早已售罄。深圳火车站官员表示，发车时段不集中，900多名旅客错过了乘车的原因可能是请不到假... <a href="http://www.54chen.com" target=_blank>五四陈科学院</a> <a href="http://www.twitter.com/54chen" target=_blank>54chen twitter</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><ul class="aktt_tweet_digest">
<li>深圳火车站1月30日的一趟列车，上座率仅8%，然而根据铁路部门发布的信息，这趟列车的车票早已售罄。深圳火车站官员表示，发车时段不集中，900多名旅客错过了乘车的原因可能是请不到假。 <a href="http://twitter.com/54chen/statuses/8489253655">#</a></li>
<li>状态帝 : 曾经的梦中情人：皮肤白皙，知性，善交际，套穿白色长裙，披肩长发，大波浪。——10 年后，我找到了梦中情人：皮肤白皙，知性善交，忌套，穿白色长裙，披肩长发，大波，浪。 <a href="http://twitter.com/54chen/statuses/8489265051">#</a></li>
<li>转自吴铭锐: 转：这个twitter客户端无比强大！ <a href="http://acm.buaa.edu.cn/admin/" rel="nofollow">http://acm.buaa.edu.cn/admin/</a> 当时我就震惊了！ <a href="http://twitter.com/54chen/statuses/8490916119">#</a></li>
<li>转自乾鹏: ipad 解决了ipod touch以及其他的所有的移动设备都没法解决的一个大问题，那就是再也不会掉进厕所 <a href="http://twitter.com/54chen/statuses/8491346649">#</a></li>
<li>即日起正式开转人人网优秀状态进推特与大家分享［RT计划］R＝renren T=twitter 每天五到十条，留名推荐 <a href="http://twitter.com/54chen/statuses/8491381525">#</a></li>
<li>RT：＠Fenng: NoSQL 新解，NoSQL = Not Only SQL //其实dynamo之类的系统里，SQL是个介质，因为DB效率不够，所以把负载放到业务逻辑上来，NoSQL可以很可计量地将存储的性能保持稳定，而不是因为sql条件的不同执行的时间不同 <a href="http://twitter.com/54chen/statuses/8492145646">#</a></li>
<li>［RT计划］状态帝 : 焦台长对小虎队春晚重聚献唱旧歌《爱》做了入木三分的评价，帝深深感到： 姓焦的果然不懂什么叫做爱！ <a href="http://twitter.com/54chen/statuses/8492341022">#</a></li>
<li>［RT计划］郭锐：新版优酷的伟大在于，你想看一15秒的视频片段，他会让你先看个30秒的广告。。。 <a href="http://twitter.com/54chen/statuses/8493912899">#</a></li>
<li>［RT计划］<br />
状态帝 : 小时候/低俗是一盘小小的磁带 /我在这头/ 丽君在那头；后来啊/ 低俗是一团窄窄的纸条 /我在后头/ 女生在前头；长大后/ 低俗是一张薄薄的光盘 /我在这头/ 电视在那头； 而现在/ 低俗是一条短短的信息 /我在里头/ 警察在外头。 <a href="http://twitter.com/54chen/statuses/8493963700">#</a></li>
<li>人人网UGC团队博客更新：文本分析漫谈-分类器中的关键词提取 讲述我们所使用的数据挖掘知识 <a href="http://ugc.renren.com/2010/02/01/keywords-extraction-overview/" rel="nofollow">http://ugc.renren.com/2010/02/01/keywords-extraction-overview/</a> <a href="http://twitter.com/54chen/statuses/8494130852">#</a></li>
<li>年会三天乐结束，RT计划重新开始！ <a href="http://twitter.com/54chen/statuses/8622700798">#</a></li>
<li>［RT计划］状态帝 : 朝鲜已经确立以金正银（朝鲜领导人金正日第三子）为中心的、唯一的领导体制。明年起金正银的生日，即是1月8日，将被定位国定假日。 <a href="http://twitter.com/54chen/statuses/8622969687">#</a></li>
<li>［RT计划］blogtd: 乡愁是一列请不到假的火车厢，8％在里头，92％在外头。 <a href="http://twitter.com/54chen/statuses/8622996415">#</a></li>
<li>［RT计划］戴文哲: 白岩松：今年我们去美国去看新闻博物馆，在博物馆里头有一个触目惊心的东西，它是2001月9月12日那天各个国家报纸的头版，所有的头版都是9·11，只有我们的是领导的接见。 <a href="http://twitter.com/54chen/statuses/8625714464">#</a></li>
<li>[RT]猫扑话题: 据科学杂志显示，女性的感情变化可以分为1019类。男的情绪就两类，第一类是：哼哼，牛逼了！第二类是：草，傻逼了！ <a href="http://twitter.com/54chen/statuses/8659112204">#</a></li>
<li>［RT计划］杨晨: 网友真是很赞啊，三聚氰胺复出，被立即命名为“添胺门” <a href="http://twitter.com/54chen/statuses/8659135234">#</a></li>
<li>［RT计划］状态帝 : 为什么天底下最难搞的关系是婆媳关系？1.媳妇的别称是“新娘”，一个新的娘突然来到家里，旧的娘心里能好受吗?2.婆婆用了五年的时间教会儿子穿衣服，媳妇用不到五秒钟就能让儿子把衣服脱光，这是一种怎样的心理落差？ <a href="http://twitter.com/54chen/statuses/8659372207">#</a></li>
<li>［RT计划］韩煜尘: 今天早上坐地铁，人多特别挤！ 旁边有一个女孩子长得非常卡哇伊正在发短信，我无意看了一眼发现她写道“今天车上人很多，很挤” 一会儿我想起个事自己笑了几声。一会儿无意回头一看，看到这个女孩继续写道“旁边还站着一个 S B ” <a href="http://twitter.com/54chen/statuses/8659575001">#</a></li>
<li>［RT计划］韩寒：各位领导,老师,同学大家好,中国为什么成为不了文化大国？因为讲话时各位领导永远放在第一位。领导都没有文化。他们还惧怕文化，审查文化，又控制文化,这个国家怎能成为文化大国?各位领导你们说呢？ <a href="http://twitter.com/54chen/statuses/8660930532">#</a></li>
<li>［RT计划］袁涛: 丰胸的四种结果：1、大不一样 2、不大一样 3、一样不大 4、不一样大 <a href="http://twitter.com/54chen/statuses/8660944839">#</a></li>
<li>［RT计划］劉哲宇の介: 我想有一所房子，面朝大海，春暖花开，4M宽带，能叫外卖，快递直达，不还房贷 <a href="http://twitter.com/54chen/statuses/8662282045">#</a></li>
<li>［RT计划］康伟.kw: 制作传播20个成人淫秽信息构成犯罪。制作传播10个未成年人淫秽信息构成犯罪。所以我们最多制作19个成人淫秽信息，9个未成年人淫秽信息就可以了。 <a href="http://twitter.com/54chen/statuses/8663112960">#</a></li>
<li>［RT计划］张章: People who are zhuangbility want to show their niubility but only reflect their shability. <a href="http://twitter.com/54chen/statuses/8666086016">#</a></li>
<li>［RT计划］许朝军: 要想不被日趋迅速和激烈的竞争甩在身后，稳定速度从来就不是正确的速率。 <a href="http://twitter.com/54chen/statuses/8666120207">#</a></li>
<li>［RT计划］汪祖方: 国家计生委官员表示，中国的计划生育政策不是强迫性的，人们是在自愿的基础上实施计划生育的。与发达国家相比，中国育龄妇女的人工流产率与美国基本接近，中国是28％，美国是25％。 <a href="http://twitter.com/54chen/statuses/8666142199">#</a></li>
<li>［RT计划］状态帝 : 佳丽家里想男人难忍，和尚河上见师太失态 <a href="http://twitter.com/54chen/statuses/8667355555">#</a></li>
<li>［RT计划］林庆霖HoHo™: 楼主：月薪1200元，买什么车好？一楼：买副象棋吧，有四个车，还送四个宝马! <a href="http://twitter.com/54chen/statuses/8668496384">#</a></li>
<li>有关部门要求 周六以前 网站必须变得喜庆 <a href="http://twitter.com/54chen/statuses/8670796438">#</a></li>
<li>哥还是有先见之明，早在上周就上年了虎年新版，上级部门通知大家喜庆更新的时候，乐了。http://news.163.com   <a href="http://www.54chen.com" rel="nofollow">http://www.54chen.com</a> 这虎头咋长一个样 <a href="http://twitter.com/54chen/statuses/8671339408">#</a></li>
</ul>

	标签：<a href="http://www.54chen.com/tag/twitter" title="twitter" rel="tag">twitter</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-20.html" title="一周废话汇总【54chen Twitter 2009-12-20】 (2009-12-20)">一周废话汇总【54chen Twitter 2009-12-20】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-13.html" title="一周废话汇总【54chen Twitter 2009-12-13】 (2009-12-13)">一周废话汇总【54chen Twitter 2009-12-13】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-06.html" title="一周废话汇总【54chen Twitter 2009-12-06】 (2009-12-06)">一周废话汇总【54chen Twitter 2009-12-06】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-11-28.html" title="一周废话汇总【54chen Twitter 2009-11-28】 (2009-11-28)">一周废话汇总【54chen Twitter 2009-11-28】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-11-21.html" title="一周废话汇总【54chen Twitter 2009-11-21】 (2009-11-21)">一周废话汇总【54chen Twitter 2009-11-21】</a> (0)</li>
</ul>


<p><a href="http://feedads.g.doubleclick.net/~a/IKUwP0eV9qRVzYzsIFHnSQSCZA0/0/da"><img src="http://feedads.g.doubleclick.net/~a/IKUwP0eV9qRVzYzsIFHnSQSCZA0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/IKUwP0eV9qRVzYzsIFHnSQSCZA0/1/da"><img src="http://feedads.g.doubleclick.net/~a/IKUwP0eV9qRVzYzsIFHnSQSCZA0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/-aboutJavaAndPhp/~4/hNHSL0Rknew" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/memo/54chen-twitter-memo-2010-02-07.html/feed</wfw:commentRss>
		<feedburner:origLink>http://www.54chen.com/memo/54chen-twitter-memo-2010-02-07.html</feedburner:origLink></item>
		<item>
		<title>java线程控制器代码分享-根据cpu情况决定线程运行数量和情况</title>
		<link>http://feedproxy.google.com/~r/-aboutJavaAndPhp/~3/mQ192alTNpA/java-thread-controller-code-sharing-according-to-cpu-circumstances-decide-the-number-and-circumstances-of-the-threads-running.html</link>
		<comments>http://www.54chen.com/java-ee/java-thread-controller-code-sharing-according-to-cpu-circumstances-decide-the-number-and-circumstances-of-the-threads-running.html#comments</comments>
		<pubDate>Tue, 02 Feb 2010 02:42:14 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
		
		<category><![CDATA[java]]></category>

		<category><![CDATA[notify]]></category>

		<category><![CDATA[synchronize]]></category>

		<category><![CDATA[wait]]></category>

		<guid isPermaLink="false">http://www.54chen.com/java-ee/java-thread-controller-code-sharing-according-to-cpu-circumstances-decide-the-number-and-circumstances-of-the-threads-running.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>在人人网海量存储系统的存储引擎部分，为了提高CPU和网络的使用情况，使用了java多线程管理并行操作的方式。
在java中控制线程是一件很简单的事情，jdk提供了诸多的方法，其中比常用的两... <a href="http://www.54chen.com" target=_blank>五四陈科学院</a> <a href="http://www.twitter.com/54chen" target=_blank>54chen twitter</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><p>在<a href="http://www.54chen.com/_linux_/nuclear-mass-storage-system-for-all-network-description.html">人人网海量存储系统</a>的存储引擎部分，为了提高CPU和网络的使用情况，使用了java多线程管理并行操作的方式。</p>
<p>在java中控制线程是一件很简单的事情，jdk提供了诸多的方法，其中比常用的两个是notify()和wait()，一个是唤醒，一个等待线程，在下面的代码中，将看到一个线程分配器，根据cpu的负载情况，自动完成对应线程的唤醒或者是等待操作。整个过程是一个平滑的过程，不会因为线程的切换而导致机器负载出线锯齿。</p>
<p>先看一个类，读取Linux系统TOP等指令拿到系统当前负载：</p>
<blockquote><p>import java.io.BufferedReader;<br />
import java.io.InputStreamReader;</p>
<p>/**<br />
* 节点的cpu 内存 磁盘空间 情况<br />
*<br />
* @author zhen.chen<br />
*<br />
*/<br />
public class NodeLoadView {</p>
<p>/**<br />
* 获取cpu使用情况<br />
*<br />
* @return<br />
* @throws Exception<br />
*/<br />
public double getCpuUsage() throws Exception {<br />
double cpuUsed = 0;</p>
<p>Runtime rt = Runtime.getRuntime();<br />
Process p = rt.exec(&#8221;/usr/bin/uptime&#8221;);// 调用系统的“top&#8221;命令<br />
String[] strArray = null;<br />
BufferedReader in = null;<br />
try {<br />
in = new BufferedReader(new InputStreamReader(p.getInputStream()));<br />
String str = null;<br />
while ((str = in.readLine()) != null) {<br />
strArray = str.split(&#8221;load average: &#8220;);<br />
strArray = strArray[1].split(&#8221;,&#8221;);<br />
cpuUsed = Double.parseDouble(strArray[0]);<br />
}<br />
} catch (Exception e) {<br />
e.printStackTrace();<br />
} finally {<br />
in.close();<br />
}<br />
return cpuUsed;<br />
}</p>
<p>/**<br />
* 内存监控<br />
*<br />
* @return<br />
* @throws Exception<br />
*/<br />
public double getMemUsage() throws Exception {</p>
<p>double menUsed = 0;<br />
Runtime rt = Runtime.getRuntime();<br />
Process p = rt.exec(&#8221;top -b -n 1&#8243;);// 调用系统的“top&#8221;命令</p>
<p>BufferedReader in = null;<br />
try {<br />
in = new BufferedReader(new InputStreamReader(p.getInputStream()));<br />
String str = null;<br />
String[] strArray = null;</p>
<p>while ((str = in.readLine()) != null) {<br />
int m = 0;</p>
<p>if (str.indexOf(&#8221; R &#8220;) != -1) {// 只<a href="http://www.54chen.com/internetops/51ditu%e7%ad%89%e7%bd%91%e7%ab%99%e6%8a%80%e6%9c%af%e6%8f%ad%e7%a7%98-%e5%88%a9%e7%94%a8%e5%bc%80%e6%ba%90%e6%a1%86%e6%9e%b6%e6%90%ad%e5%bb%ba%e4%b8%80%e6%95%b4%e5%a5%97%e7%9a%84webgis.html">分析</a>正在运行的进程，top进程本身除外 &amp;&amp;<br />
//<br />
// System.out.println(&#8221;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;3&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8221;);<br />
strArray = str.split(&#8221; &#8220;);<br />
for (String tmp : strArray) {<br />
if (tmp.trim().length() == 0)<br />
continue;</p>
<p>if (++m == 10) {<br />
// 9)&#8211;第10列为mem的使用百分比(RedHat 9)</p>
<p>menUsed += Double.parseDouble(tmp);</p>
<p>}<br />
}</p>
<p>}<br />
}<br />
} catch (Exception e) {<br />
e.printStackTrace();<br />
} finally {<br />
in.close();<br />
}<br />
return menUsed;<br />
}</p>
<p>/**<br />
* 获取磁盘空间大小<br />
*<br />
* @return<br />
* @throws Exception<br />
*/<br />
public double getDeskUsage() throws Exception {<br />
double totalHD = 0;<br />
double usedHD = 0;<br />
Runtime rt = Runtime.getRuntime();<br />
Process p = rt.exec(&#8221;df -hl&#8221;);// df -hl 查看<a href="http://www.54chen.com/_linux_/tokyo-cabinet-with-java-concurrent-test-the-performance-of-a-major-correction-articles.html">硬盘</a>空间</p>
<p>BufferedReader in = null;<br />
try {<br />
in = new BufferedReader(new InputStreamReader(p.getInputStream()));<br />
String str = null;<br />
String[] strArray = null;<br />
while ((str = in.readLine()) != null) {<br />
int m = 0;<br />
// if (flag &gt; 0) {<br />
// flag++;<br />
strArray = str.split(&#8221; &#8220;);<br />
for (String tmp : strArray) {<br />
if (tmp.trim().length() == 0)<br />
continue;<br />
++m;<br />
// System.out.println(&#8221;&#8212;-tmp&#8212;-&#8221; + tmp);<br />
if (tmp.indexOf(&#8221;G&#8221;) != -1) {<br />
if (m == 2) {<br />
// System.out.println(&#8221;&#8212;G&#8212;-&#8221; + tmp);<br />
if (!tmp.equals(&#8221;") &amp;&amp; !tmp.equals(&#8221;0&#8243;))<br />
totalHD += Double.parseDouble(tmp.substring(0,<br />
tmp.length() - 1)) * 1024;</p>
<p>}<br />
if (m == 3) {<br />
// System.out.println(&#8221;&#8212;G&#8212;-&#8221; + tmp);<br />
if (!tmp.equals(&#8221;none&#8221;) &amp;&amp; !tmp.equals(&#8221;0&#8243;))<br />
usedHD += Double.parseDouble(tmp.substring(0,<br />
tmp.length() - 1)) * 1024;</p>
<p>}<br />
}<br />
if (tmp.indexOf(&#8221;M&#8221;) != -1) {<br />
if (m == 2) {<br />
// System.out.println(&#8221;&#8212;M&#8212;&#8221; + tmp);<br />
if (!tmp.equals(&#8221;") &amp;&amp; !tmp.equals(&#8221;0&#8243;))<br />
totalHD += Double.parseDouble(tmp.substring(0,<br />
tmp.length() - 1));</p>
<p>}<br />
if (m == 3) {<br />
// System.out.println(&#8221;&#8212;M&#8212;&#8221; + tmp);<br />
if (!tmp.equals(&#8221;none&#8221;) &amp;&amp; !tmp.equals(&#8221;0&#8243;))<br />
usedHD += Double.parseDouble(tmp.substring(0,<br />
tmp.length() - 1));<br />
// System.out.println(&#8221;&#8212;-3&#8212;-&#8221; + usedHD);<br />
}<br />
}</p>
<p>}</p>
<p>// }<br />
}<br />
} catch (Exception e) {<br />
e.printStackTrace();<br />
} finally {<br />
in.close();<br />
}<br />
return (usedHD / totalHD) * 100;<br />
}<br />
//<br />
//    public static void main(String[] args) throws Exception {<br />
//        NodeLoadView cpu = new NodeLoadView();<br />
//        System.out<br />
//                .println(&#8221;&#8212;&#8212;&#8212;&#8212;&#8212;cpu used:&#8221; + cpu.getCpuUsage() + &#8220;%&#8221;);<br />
//        System.out<br />
//                .println(&#8221;&#8212;&#8212;&#8212;&#8212;&#8212;mem used:&#8221; + cpu.getMemUsage() + &#8220;%&#8221;);<br />
//        System.out<br />
//                .println(&#8221;&#8212;&#8212;&#8212;&#8212;&#8212;HD used:&#8221; + cpu.getDeskUsage() + &#8220;%&#8221;);<br />
//        System.out.println(&#8221;&#8212;&#8212;&#8212;&#8212;jvm监控&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8221;);<br />
//        Runtime lRuntime = Runtime.getRuntime();<br />
//        System.out.println(&#8221;&#8212;&#8212;&#8212;&#8212;&#8211;Free Momery:&#8221; + lRuntime.freeMemory()<br />
//                + &#8220;K&#8221;);<br />
//        System.out.println(&#8221;&#8212;&#8212;&#8212;&#8212;&#8211;Max Momery:&#8221; + lRuntime.maxMemory()<br />
//                + &#8220;K&#8221;);<br />
//        System.out.println(&#8221;&#8212;&#8212;&#8212;&#8212;&#8211;Total Momery:&#8221;<br />
//                + lRuntime.totalMemory() + &#8220;K&#8221;);<br />
//        System.out.println(&#8221;&#8212;&#8212;&#8212;&#8212;&#8212;Available Processors :&#8221;<br />
//                + lRuntime.availableProcessors());<br />
//    }<br />
}</p></blockquote>
<p>再来看关键的一个类，THreadScheduler：</p>
<blockquote><p>import java.util.Map;</p>
<p>import org.apache.log4j.Logger;</p>
<p>import test.NodeLoadView;<br />
public class ThreadScheduler {<br />
private static Logger logger = Logger.getLogger(ThreadScheduler.class.getName());<br />
private Map&lt;String, Thread&gt; runningThreadMap;<br />
private Map&lt;String, Thread&gt; waitingThreadMap;<br />
private boolean isFinished = false;<br />
private int runningSize;</p>
<p>public ThreadScheduler (Map&lt;String, Thread&gt; runningThreadMap, Map&lt;String, Thread&gt; waitingThreadMap) {<br />
this.runningThreadMap = runningThreadMap;<br />
this.waitingThreadMap = waitingThreadMap;<br />
this.runningSize = waitingThreadMap.size();<br />
}</p>
<p>/**<br />
* 开始调度线程<br />
* @author zhen.chen<br />
* @createTime 2010-1-28 上午11:04:52<br />
*/<br />
public void schedule(){<br />
long sleepMilliSecond = 1 * 1000;<br />
int allowRunThreads = 15;<br />
// 一次启动的线程数，cpuLoad变大时以此值为参考递减<br />
int allowRunThreadsRef = 15;<br />
double cpuLoad = 0;// 0-15<br />
NodeLoadView load = new NodeLoadView();</p>
<p>while (true) {<br />
try {<br />
cpuLoad = load.getCpuUsage();<br />
} catch (Exception e1) {<br />
e1.printStackTrace();<br />
}<br />
// cpuLoad低 启动的线程多<br />
allowRunThreads = (int) Math.floor(allowRunThreadsRef - cpuLoad);<br />
// threads不能为0<br />
if (allowRunThreads &lt; 1) {<br />
allowRunThreads = 1;<br />
}<br />
if (allowRunThreads &gt; allowRunThreadsRef) {<br />
allowRunThreads = allowRunThreadsRef;<br />
}<br />
if (logger.isDebugEnabled()) {<br />
logger.debug(&#8221;[ThreadScheduler]running Thread:&#8221; + runningThreadMap.size() + &#8220;; waiting Thread:&#8221; + waitingThreadMap.size() + &#8220;; cpu:&#8221; + cpuLoad + &#8221; allowRunThreads:&#8221; + allowRunThreads);<br />
}</p>
<p>// 检查runningSize个线程的情况，满足条件则启动<br />
for (int x = 0; x &lt; runningSize; x++) {<br />
if (waitingThreadMap.get(x+&#8221;") != null) {<br />
if (allowRunThreadsRef &lt;= runningThreadMap.size()) {<br />
break;<br />
}<br />
synchronized (waitingThreadMap.get(x+&#8221;")) {<br />
if (!waitingThreadMap.get(x+&#8221;").isAlive()) {<br />
waitingThreadMap.get(x+&#8221;").start();<br />
}else{<br />
waitingThreadMap.get(x+&#8221;").notify();<br />
}<br />
}<br />
runningThreadMap.put(x+&#8221;", waitingThreadMap.get(x+&#8221;"));<br />
waitingThreadMap.remove(x+&#8221;");<br />
}<br />
}<br />
// 检查runningSize个线程的情况，满足条件则暂停<br />
for (int x = 0; x &lt; runningSize; x++) {<br />
if (runningThreadMap.size() &lt;= allowRunThreads) {<br />
break;<br />
}<br />
if (runningThreadMap.get(x+&#8221;") != null) {<br />
synchronized (runningThreadMap.get(x+&#8221;")) {<br />
try {<br />
if (runningThreadMap.get(x+&#8221;").isAlive()) {<br />
runningThreadMap.get(x+&#8221;").wait();<br />
}else{<br />
continue;<br />
}<br />
} catch (InterruptedException e) {<br />
e.printStackTrace();<br />
}<br />
}<br />
waitingThreadMap.put(x+&#8221;", runningThreadMap.get(x));<br />
runningThreadMap.remove(x+&#8221;");<br />
}<br />
}<br />
// 全部跑完，返回<br />
if (waitingThreadMap.size() == 0 &amp;&amp; runningThreadMap.size() == 0) {<br />
if (logger.isDebugEnabled()) {<br />
logger.debug(&#8221;[ThreadScheduler] over.total Threads size:&#8221; + runningSize);<br />
}<br />
this.isFinished = true;<br />
return;<br />
}<br />
// 使主while循环慢一点<br />
try {<br />
Thread.sleep(sleepMilliSecond);<br />
} catch (InterruptedException e1) {<br />
e1.printStackTrace();<br />
}<br />
}</p>
<p>}</p>
<p>public boolean isFinished() {<br />
return isFinished;<br />
}<br />
}</p></blockquote>
<p><strong>这个类的作用：</strong></p>
<p>1.接收runningThreadMap和waitingThreadMap两个<a href="http://www.54chen.com/_linux_/tokyo-cabinet-with-java-concurrent-test-the-performance-of-a-major-correction-articles.html">map</a>，里面对应存了运行中的线程实例和等待中的<a href="http://www.54chen.com/_linux_/yahoo%e3%80%81tao%e4%ba%91%e8%ae%a1%e7%ae%97%e5%88%a9%e5%99%a8%e4%b9%8b%e2%80%9c%e4%ba%91%e2%80%9d%e7%ab%af%e7%9a%84%e5%b0%8f%e9%a3%9e%e8%b1%a1%e2%80%94hadoop.html">线程</a>实例。</p>
<p>2.读cpu情况，自动判断要notify等待中的线程还是wait运行中的线程。</p>
<p>3.两个map都结束，退出。（必须runningThreadMap内部的Thread自己将runningThreadMap对应的Thread remove掉）</p>
<p><strong>如何使用：</strong></p>
<blockquote><p>public class TestThread {<br />
public static class Runner extends Thread {<br />
public Runner(int j, Map&lt;String, Thread&gt; threadMap) {</p>
<p>}<br />
public void run() {<br />
// TODO 你的逻辑 完成后需要从threadMap中remove掉<br />
}<br />
}</p>
<p>public static void main(String[] args) {<br />
// 运行中的线程<br />
Map&lt;String, Thread&gt; threadMap = new HashMap&lt;String, Thread&gt;();<br />
// 正在<a href="http://www.54chen.com/cc/php-java-c-upload-files-how-to-accurately-determine-the-file-type-mime-literacy.html">等待</a>中的线程<br />
Map&lt;String, Thread&gt; waitThreadMap = new HashMap&lt;String, Thread&gt;();<br />
for (int j = 0; j &lt; args.length; j++) {<br />
Thread t = new Runner(j, threadMap);<br />
waitThreadMap.put(j + &#8220;&#8221;, t);<br />
}</p>
<p>ThreadScheduler threadScheduler = new ThreadScheduler(threadMap, waitThreadMap);<br />
threadScheduler.schedule();<br />
if (threadScheduler.isFinished() == false) {<br />
//没能正常结束<br />
}<br />
}<br />
}</p></blockquote>

	标签：<a href="http://www.54chen.com/tag/java" title="java" rel="tag">java</a>, <a href="http://www.54chen.com/tag/notify" title="notify" rel="tag">notify</a>, <a href="http://www.54chen.com/tag/synchronize" title="synchronize" rel="tag">synchronize</a>, <a href="http://www.54chen.com/tag/wait" title="wait" rel="tag">wait</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.54chen.com/java-ee/tokyo-cabinet-with-java-concurrent-test-the-performance.html" title="用java并发测试tokyo cabinet的性能[五四陈手记] (2009-09-03)">用java并发测试tokyo cabinet的性能[五四陈手记]</a> (6)</li>
	<li><a href="http://www.54chen.com/_linux_/%e5%86%85%e9%83%a8%e5%9f%b9%e8%ae%ad-memcached%e5%8d%8f%e8%ae%ae%e8%af%a6%e8%a7%a3%e5%8e%9f%e5%88%9b%e6%80%bb%e7%bb%93.html" title="内部培训&#8211;memcached协议详解[原创][总结] (2009-05-12)">内部培训&#8211;memcached协议详解[原创][总结]</a> (2)</li>
	<li><a href="http://www.54chen.com/java-ee/all-networks-in-house-training-java-concurrent-programming-principles-synchronize-volatile-zhang-jie-heroes.html" title="人人网内部培训：java并发编程原理-synchronize volatile-张洁大侠 (2009-11-11)">人人网内部培训：java并发编程原理-synchronize volatile-张洁大侠</a> (2)</li>
	<li><a href="http://www.54chen.com/webfe/the-advanced-interconnection-technology-the-use-of-ice-unicom-php-and-java-part-2-client.html" title="“先进的互联互通技术”–使用ice联通php和java [part 2 client] (2009-09-27)">“先进的互联互通技术”–使用ice联通php和java [part 2 client]</a> (4)</li>
	<li><a href="http://www.54chen.com/php-tech/the-advanced-interconnection-technology-the-use-of-ice-unicom-php-and-java.html" title="“先进的互联互通技术”&#8211;使用ice联通php和java [part 1 server] (2009-09-25)">“先进的互联互通技术”&#8211;使用ice联通php和java [part 1 server]</a> (3)</li>
</ul>


<p><a href="http://feedads.g.doubleclick.net/~a/oaeCmHtef0yhphluv2AqujjJaBY/0/da"><img src="http://feedads.g.doubleclick.net/~a/oaeCmHtef0yhphluv2AqujjJaBY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/oaeCmHtef0yhphluv2AqujjJaBY/1/da"><img src="http://feedads.g.doubleclick.net/~a/oaeCmHtef0yhphluv2AqujjJaBY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/-aboutJavaAndPhp/~4/mQ192alTNpA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/java-ee/java-thread-controller-code-sharing-according-to-cpu-circumstances-decide-the-number-and-circumstances-of-the-threads-running.html/feed</wfw:commentRss>
		<feedburner:origLink>http://www.54chen.com/java-ee/java-thread-controller-code-sharing-according-to-cpu-circumstances-decide-the-number-and-circumstances-of-the-threads-running.html</feedburner:origLink></item>
		<item>
		<title>54chen Twitter memo 2010-01-31</title>
		<link>http://feedproxy.google.com/~r/-aboutJavaAndPhp/~3/zCDq7JMszEM/54chen-twitter-memo-2010-01-31.html</link>
		<comments>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-31.html#comments</comments>
		<pubDate>Sun, 31 Jan 2010 01:09:00 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
		
		<category><![CDATA[备忘]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.54chen.com/memo/54chen-twitter-memo-2010-01-31.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>
工信部驳斥“中国政府参与黑客攻击”说 #
先秦诸子召开电影《孔子》座谈会。老子首先发言：圣人之道，为而不争，小孔这次大失风度。墨子接着发言：反天意者必得罚，我看票房会很惨。... <a href="http://www.54chen.com" target=_blank>五四陈科学院</a> <a href="http://www.twitter.com/54chen" target=_blank>54chen twitter</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><ul class="aktt_tweet_digest">
<li>工信部驳斥“中国政府参与黑客攻击”说 <a href="http://twitter.com/54chen/statuses/8175435530">#</a></li>
<li>先秦诸子召开电影《孔子》座谈会。老子首先发言：圣人之道，为而不争，小孔这次大失风度。墨子接着发言：反天意者必得罚，我看票房会很惨。孟子附和：得道多助，失道寡助，我同意老墨看法。庄子一摇鹅毛扇：至人无己，神人无功，圣人无名，老孔拍电影本身就傻逼。孔子跌坐于地：靠，三人行没一个买票 <a href="http://twitter.com/54chen/statuses/8176056754">#</a></li>
<li>人人网UGC技术团队博客 <a href="http://ugc.renren.com" rel="nofollow">http://ugc.renren.com</a> 向各大互联网兄弟公司博客招友情链接，共同学习，共同成长。 <a href="http://twitter.com/54chen/statuses/8183150538">#</a></li>
<li>2.3亿汶川灾后重建资金被违规使用  这些没有良知的蛀虫！ <a href="http://twitter.com/54chen/statuses/8271218592">#</a></li>
<li>LuWenBin :敏感词进化史：我爱北京天安门&#8211;》 我爱北京敏感词&#8211;》我爱敏感词敏感词&#8211;》我敏感词敏感词敏感词&#8211;》对不起，该页无法显示。 <a href="http://twitter.com/54chen/statuses/8315501511">#</a></li>
<li>人人网UGC海量存储系统Nuclear介绍 – 原理展望篇   <a href="http://ugc.renren.com/2010/01/28/ugc-nuclear-guide-theory/" rel="nofollow">http://ugc.renren.com/2010/01/28/ugc-nuclear-guide-theory/</a>   第二篇 横空出世 欢迎指点 <a href="http://twitter.com/54chen/statuses/8318615228">#</a></li>
</ul>

	标签：<a href="http://www.54chen.com/tag/twitter" title="twitter" rel="tag">twitter</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-20.html" title="一周废话汇总【54chen Twitter 2009-12-20】 (2009-12-20)">一周废话汇总【54chen Twitter 2009-12-20】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-13.html" title="一周废话汇总【54chen Twitter 2009-12-13】 (2009-12-13)">一周废话汇总【54chen Twitter 2009-12-13】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-06.html" title="一周废话汇总【54chen Twitter 2009-12-06】 (2009-12-06)">一周废话汇总【54chen Twitter 2009-12-06】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-11-28.html" title="一周废话汇总【54chen Twitter 2009-11-28】 (2009-11-28)">一周废话汇总【54chen Twitter 2009-11-28】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-11-21.html" title="一周废话汇总【54chen Twitter 2009-11-21】 (2009-11-21)">一周废话汇总【54chen Twitter 2009-11-21】</a> (0)</li>
</ul>


<p><a href="http://feedads.g.doubleclick.net/~a/-6T05CXexMB7y0ngHoXcjseRMUw/0/da"><img src="http://feedads.g.doubleclick.net/~a/-6T05CXexMB7y0ngHoXcjseRMUw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-6T05CXexMB7y0ngHoXcjseRMUw/1/da"><img src="http://feedads.g.doubleclick.net/~a/-6T05CXexMB7y0ngHoXcjseRMUw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/-aboutJavaAndPhp/~4/zCDq7JMszEM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-31.html/feed</wfw:commentRss>
		<feedburner:origLink>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-31.html</feedburner:origLink></item>
		<item>
		<title>2010年1月29日黄道吉日五四陈科学院新版上线了！</title>
		<link>http://feedproxy.google.com/~r/-aboutJavaAndPhp/~3/7q3Y0hozMG8/january-29-2010-auspicious-day-54-on-line-version-of-the-chen-academy-of-sciences.html</link>
		<comments>http://www.54chen.com/happy/january-29-2010-auspicious-day-54-on-line-version-of-the-chen-academy-of-sciences.html#comments</comments>
		<pubDate>Sat, 30 Jan 2010 02:52:58 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
		
		<category><![CDATA[娱乐]]></category>

		<category><![CDATA[五四陈科学院]]></category>

		<guid isPermaLink="false">http://www.54chen.com/happy/january-29-2010-auspicious-day-54-on-line-version-of-the-chen-academy-of-sciences.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>值昨天半夜此黄道吉日，科学院新版悄然上线。
更方便的阅读，更科学的分类，更重点的推荐，科学院人民从此站起来了。。。还在feed里溺水的看官们，出来瞅一瞅。。。


	标签：五四陈科... <a href="http://www.54chen.com" target=_blank>五四陈科学院</a> <a href="http://www.twitter.com/54chen" target=_blank>54chen twitter</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><p>值昨天半夜此黄道吉日，科学院新版悄然上线。</p>
<p>更方便的阅读，更科学的分类，更重点的推荐，科学院人民从此站起来了。。。还在feed里溺水的看官们，出来瞅一瞅。。。</p>
<p><img src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png" alt="五四陈科学院新版logo" /></p>

	标签：<a href="http://www.54chen.com/tag/%e4%ba%94%e5%9b%9b%e9%99%88%e7%a7%91%e5%ad%a6%e9%99%a2" title="五四陈科学院" rel="tag">五四陈科学院</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.54chen.com/msg" title="留言 (2008-11-16)">留言</a> (21)</li>
</ul>


<p><a href="http://feedads.g.doubleclick.net/~a/eD7NqfcKkVBf2ucfanBtnQdmVi8/0/da"><img src="http://feedads.g.doubleclick.net/~a/eD7NqfcKkVBf2ucfanBtnQdmVi8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/eD7NqfcKkVBf2ucfanBtnQdmVi8/1/da"><img src="http://feedads.g.doubleclick.net/~a/eD7NqfcKkVBf2ucfanBtnQdmVi8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/-aboutJavaAndPhp/~4/7q3Y0hozMG8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/happy/january-29-2010-auspicious-day-54-on-line-version-of-the-chen-academy-of-sciences.html/feed</wfw:commentRss>
		<feedburner:origLink>http://www.54chen.com/happy/january-29-2010-auspicious-day-54-on-line-version-of-the-chen-academy-of-sciences.html</feedburner:origLink></item>
		<item>
		<title>54chen Twitter memo 2010-01-24</title>
		<link>http://feedproxy.google.com/~r/-aboutJavaAndPhp/~3/Wco17r9D4EM/54chen-twitter-memo-2010-01-24.html</link>
		<comments>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-24.html#comments</comments>
		<pubDate>Sun, 24 Jan 2010 01:09:00 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
		
		<category><![CDATA[备忘]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.54chen.com/memo/54chen-twitter-memo-2010-01-24.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>
收到谷歌的关键字广告1000元那个邮件，看来谷歌不走了，销售代理公司的员工开始冲年终的kpi了 。 #
推特统计一下，现在办公区温度超过28摄氏度（包括）的请举手。 #
zhifubao.com这个域名不错... <a href="http://www.54chen.com" target=_blank>五四陈科学院</a> <a href="http://www.twitter.com/54chen" target=_blank>54chen twitter</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><ul class="aktt_tweet_digest">
<li>收到谷歌的关键字广告1000元那个邮件，看来谷歌不走了，销售代理公司的员工开始冲年终的kpi了 。 <a href="http://twitter.com/54chen/statuses/7894416426">#</a></li>
<li>推特统计一下，现在办公区温度超过28摄氏度（包括）的请举手。 <a href="http://twitter.com/54chen/statuses/7895637145">#</a></li>
<li>zhifubao.com这个域名不错，国内的域名，只要不含有jpqyjg好像都成功了，不完全小道统计经验。 <a href="http://twitter.com/54chen/statuses/7898115243">#</a></li>
<li>状态帝: 三国霸主预示了今天的现状。孙权、刘备、曹操，即权，备，操。或者备，权，操。 <a href="http://twitter.com/54chen/statuses/7935423118">#</a></li>
<li><a href="http://tech.qq.com/a/20100119/000278.htm" rel="nofollow">http://tech.qq.com/a/20100119/000278.htm</a> 谷歌宣布谷歌中国业务恢复正常运转 <a href="http://twitter.com/54chen/statuses/7935666874">#</a></li>
<li>状态帝 : 同学家吃的晚饭，回家发了短信和他说“你妈的红烧肉棒极了”。结果今天手机不能发短信了。 <a href="http://twitter.com/54chen/statuses/7940953136">#</a></li>
<li>状态帝 : 《孔子》以一亿五的资本造就的话语霸权毁掉了孔子最基本的理念——己所不欲，勿施于人。 <a href="http://twitter.com/54chen/statuses/7940958075">#</a></li>
<li>韩寒：从今天起，做一个低俗的人，劈腿翻墙，周游世界；从今天起，污染粮食和蔬菜，我有一个房子，面向大海，却被强拆。 <a href="http://twitter.com/54chen/statuses/7970569582">#</a></li>
<li>状态帝 : 我举报一个又色情，又低俗，又反华的艺人名字——黄日华。请组织部敏感词他！ <a href="http://twitter.com/54chen/statuses/8019930189">#</a></li>
<li><a href="http://ugc.renren.com/2010/01/21/ugc-nuclear-guide-use/" rel="nofollow">http://ugc.renren.com/2010/01/21/ugc-nuclear-guide-use/</a><br />
人人网UGC海量存储系统Nuclear介绍 – 功能应用篇 <a href="http://twitter.com/54chen/statuses/8022194327">#</a></li>
</ul>

	标签：<a href="http://www.54chen.com/tag/twitter" title="twitter" rel="tag">twitter</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-20.html" title="一周废话汇总【54chen Twitter 2009-12-20】 (2009-12-20)">一周废话汇总【54chen Twitter 2009-12-20】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-13.html" title="一周废话汇总【54chen Twitter 2009-12-13】 (2009-12-13)">一周废话汇总【54chen Twitter 2009-12-13】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-06.html" title="一周废话汇总【54chen Twitter 2009-12-06】 (2009-12-06)">一周废话汇总【54chen Twitter 2009-12-06】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-11-28.html" title="一周废话汇总【54chen Twitter 2009-11-28】 (2009-11-28)">一周废话汇总【54chen Twitter 2009-11-28】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-11-21.html" title="一周废话汇总【54chen Twitter 2009-11-21】 (2009-11-21)">一周废话汇总【54chen Twitter 2009-11-21】</a> (0)</li>
</ul>


<p><a href="http://feedads.g.doubleclick.net/~a/lNHVGP_h4C0q2sz32AkpTayRhg8/0/da"><img src="http://feedads.g.doubleclick.net/~a/lNHVGP_h4C0q2sz32AkpTayRhg8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/lNHVGP_h4C0q2sz32AkpTayRhg8/1/da"><img src="http://feedads.g.doubleclick.net/~a/lNHVGP_h4C0q2sz32AkpTayRhg8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/-aboutJavaAndPhp/~4/Wco17r9D4EM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-24.html/feed</wfw:commentRss>
		<feedburner:origLink>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-24.html</feedburner:origLink></item>
		<item>
		<title>人人网海量存储系统Nuclear介绍</title>
		<link>http://feedproxy.google.com/~r/-aboutJavaAndPhp/~3/7itcp1WZNaA/nuclear-mass-storage-system-for-all-network-description.html</link>
		<comments>http://www.54chen.com/_linux_/nuclear-mass-storage-system-for-all-network-description.html#comments</comments>
		<pubDate>Thu, 21 Jan 2010 10:25:25 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[nuclear]]></category>

		<category><![CDATA[人人网]]></category>

		<guid isPermaLink="false">http://www.54chen.com/_linux_/nuclear-mass-storage-system-for-all-network-description.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>经过这几个月大家共同的努力，Nuclear终于来到新的阶段。

山寨版本的Logo
Nuclear存储系统:高性能、高可靠、可扩展的海量数据存储
请移步人人网UGC团队博客：http://ugc.renren.com/2010/01/21/ugc-nuclear-... <a href="http://www.54chen.com" target=_blank>五四陈科学院</a> <a href="http://www.twitter.com/54chen" target=_blank>54chen twitter</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><p>经过这几个月大家共同的努力，Nuclear终于来到新的阶段。</p>
<p><img class="alignnone size-full wp-image-930" title="nuclear" src="http://www.54chen.com/wp-content/uploads/2010/01/nuclear.jpg" alt="人人网 Nuclear" width="150" height="128" /></p>
<p>山寨版本的Logo</p>
<p>Nuclear存储系统:<strong>高性能、高可靠、可扩展的海量数据存储</strong></p>
<p>请移步人人网UGC团队博客：<a href="http://ugc.renren.com/2010/01/21/ugc-nuclear-guide-use/">http://ugc.renren.com/2010/01/21/ugc-nuclear-guide-use/</a></p>
<p>人人网UGC团队博客正式在<a href="http://ugc.renren.com">科学院</a>亮像，欢迎网友订阅，专注UGC社区大负载研究与应用！</p>
<p><a href="http://ugc.renren.com">http://ugc.renren.com</a></p>
<p><a href="http://ugc.fm">http://ugc.fm</a></p>
<p><strong>下面是一些补习班知识：</strong></p>
<h4>TC</h4>
<p><a href="http://www.54chen.com/architecture/google-big-table-similar-to-the-tokyo-cabinet-research-notes.html">Tokyo Cabinet </a>是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符串。这里没有数据类型和数据表的概念。当做为Hash表数据库使用时，每个key必须是不同的,因此无法存储两个key相同的值。提供了以下访问方法:提供key,value参数来存储，按 key删除记录，按key来读取记录，另外，遍历key也被支持，虽然顺序是任意的不能被保证。这些方法跟Unix标准的DBM,例如GDBM,NDBM 等等是相同的，但是比它们的性能要好得多，因此可以替代它们。</p>
<h4>Dynamo</h4>
<p><a href="http://www.54chen.com/translate/i-am-the-chen-version-distributed-storage-system-documentation-translation-program-voldemort-lightcloud-dynamo.html">Dynamo </a>的可扩展性和可用性采用的都比较成熟的技术，数据分区并用改进的一致性哈希(consistent hashing)方式进行复制，利用数据对象的版本化实现一致性。复制时因为更新产生的一致性问题的维护采取类似 quorum 的机制以及去中心化的复制同步协议。 Dynamo 是完全去中心化的系统，人工管理工作很小。</p>
<p><strong>Linkedln　</strong>　<br />
<a href="http://www.54chen.com/translate/dynamo-based-systems-designed-linkin-voldemort-voldemort-design-chinese-documents-i-am-a-chan-academy-of-sciences-translation-finalized.html">Linked</a>是一个“高效”、“安全”并且“有商务价值”的“白领SNS提供商”：LinkedIn足够高效，而且没有什么打扰用户的信息。即便是广告的投放，LinkedIn也处理的十分艺术：有侧边栏下方几乎不会分散我的注意力； LinkedIn上没有太多会打扰到你的人。而且，用户与用户之间的关系严密地保护起来。这和其他SNS拿着用户资料去做SEO实在是天壤之别； LinkedIn专注于商务功能，并且提供付费服务。这极大地体现了它的确具备提供高质量商务社交服务的能力 LinkedIn是非常适合白领使用的一款SNS工具，尤其是有国际业务的企业员工或者自由职业者。不过，Linked不太适合学生使用。因为Linked很注重工作经验和教育背景，如果你现在还在还没毕业，除非你有相当丰富的社会实践经验，否则完全可以忽视这个玩意，因为它现在还无法为你创造价值。他有一个相似的系统叫伏地魔，之前科学院里的文章曾经提起过，<a href="http://www.54chen.com/translate/dynamo-based-systems-designed-linkin-voldemort-voldemort-design-chinese-documents-i-am-a-chan-academy-of-sciences-translation-finalized.html">起驾观看</a>。</p>

	标签：<a href="http://www.54chen.com/tag/nuclear" title="nuclear" rel="tag">nuclear</a>, <a href="http://www.54chen.com/tag/%e4%ba%ba%e4%ba%ba%e7%bd%91" title="人人网" rel="tag">人人网</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.54chen.com/internetops/all-net-jobs-java-as-c-engineer-special-for-the-academy-of-sciences-valid-for-two-months.html" title="人人网招聘JAVA、AS、C++工程师（科学院特供，两月内有效） (2009-12-16)">人人网招聘JAVA、AS、C++工程师（科学院特供，两月内有效）</a> (2)</li>
	<li><a href="http://www.54chen.com/uncategorized/net-new-to-live-for-all-to-share.html" title="[科学院手记]人人网新鲜事分享现场转播 (2009-12-02)">[科学院手记]人人网新鲜事分享现场转播</a> (27)</li>
	<li><a href="http://www.54chen.com/cc/54-chen-academy-schools-the-development-process-and-the-album-broke-the-heart-of-technical-analysis.html" title="[五四陈科学院]校内相册发展过程及核心技术分析爆料 (2009-10-13)">[五四陈科学院]校内相册发展过程及核心技术分析爆料</a> (27)</li>
</ul>


<p><a href="http://feedads.g.doubleclick.net/~a/ue6vn_lfP8PhsJ-9UhLsVH3igk0/0/da"><img src="http://feedads.g.doubleclick.net/~a/ue6vn_lfP8PhsJ-9UhLsVH3igk0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ue6vn_lfP8PhsJ-9UhLsVH3igk0/1/da"><img src="http://feedads.g.doubleclick.net/~a/ue6vn_lfP8PhsJ-9UhLsVH3igk0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/-aboutJavaAndPhp/~4/7itcp1WZNaA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/_linux_/nuclear-mass-storage-system-for-all-network-description.html/feed</wfw:commentRss>
		<feedburner:origLink>http://www.54chen.com/_linux_/nuclear-mass-storage-system-for-all-network-description.html</feedburner:origLink></item>
		<item>
		<title>54chen Twitter memo 2010-01-17</title>
		<link>http://feedproxy.google.com/~r/-aboutJavaAndPhp/~3/BXLokwupY14/54chen-twitter-memo-2010-01-17-2.html</link>
		<comments>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-17-2.html#comments</comments>
		<pubDate>Sun, 17 Jan 2010 01:09:00 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
		
		<category><![CDATA[备忘]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.54chen.com/memo/54chen-twitter-memo-2010-01-17-2.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>
万恶的CNNIC从1月20日起，cn域名只能归属到公司或者企业名下。屯cn域名的哥些，悲惨了，注册个公司吧 #
http://www.54chen.com/1/%E5%92%8C.%E8%B0%90  百度虽然挂了，山寨依然坚挺 #
中华人民共和国六十... <a href="http://www.54chen.com" target=_blank>五四陈科学院</a> <a href="http://www.twitter.com/54chen" target=_blank>54chen twitter</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><ul class="aktt_tweet_digest">
<li>万恶的CNNIC从1月20日起，cn域名只能归属到公司或者企业名下。屯cn域名的哥些，悲惨了，注册个公司吧 <a href="http://twitter.com/54chen/statuses/7623347479">#</a></li>
<li><a href="http://www.54chen.com/1/%E5%92%8C.%E8%B0%90" rel="nofollow">http://www.54chen.com/1/%E5%92%8C.%E8%B0%90</a>  百度虽然挂了，山寨依然坚挺 <a href="http://twitter.com/54chen/statuses/7653411184">#</a></li>
<li>中华人民共和国六十一年一月十二日，就是南京市东南大学电气工程学院学子为前一日惨淡的电力系统考试成绩痛心疾首同时对下一天的电机学考试愁眉不展的一天，我独在图书馆里自习，遇见同学，前来问我道，“先生可曾为挂掉的百度写了一点什么没有？”我说“没有”。 <a href="http://twitter.com/54chen/statuses/7654965900">#</a></li>
<li>3d imax 周四晚上 陪GF观传说中的阿凡达 <a href="http://twitter.com/54chen/statuses/7661373717">#</a></li>
<li>年终续签自我评估，我写一万能句，被打回：在过去的一年，个人在公司期间工作积极努力，在未来的日子里，愿意为公司的长远发展添砖加瓦。 <a href="http://twitter.com/54chen/statuses/7662808518">#</a></li>
<li>@<a href="http://twitter.com/162cm">162cm</a> 兄弟尽管用，放之四海皆准，哈哈 <a href="http://twitter.com/54chen/statuses/7662982652">#</a></li>
<li>从小的理想：长大后要做科学家。终于快要实现了，老是有人发邮件过来，抬头是“陈科学院”。。。其实我博客是这样断句的 “我是陈”－“科学院”http://www.54chen.com <a href="http://twitter.com/54chen/statuses/7664816716">#</a></li>
<li>@<a href="http://twitter.com/Qieqie">Qieqie</a> 现在成科学院了，还差一个字 <a href="http://twitter.com/54chen/statuses/7665631416">#</a></li>
<li>谷歌的离开，表示我党公信度进一步的丢失。 <a href="http://twitter.com/54chen/statuses/7693164631">#</a></li>
<li>状态帝 : 整个学期全荒废，临近考试全心碎，一周时间全没睡，考试之前全在背，走进考场全崩溃，拿到卷子全流泪，背的东西全不考，考的东西全不会T_T <a href="http://twitter.com/54chen/statuses/7694720793">#</a></li>
<li>刘健: Google声称推出中国，百度大涨：413.52 +27.03 (6.99%) <a href="http://twitter.com/54chen/statuses/7694750855">#</a></li>
<li>审核部门的同志们又往这边跑了，我看出来了，今天上头又有新通知。加紧力度审核。。。 <a href="http://twitter.com/54chen/statuses/7694822881">#</a></li>
<li>从网友反馈的谷歌搜索关键词来看，已经有部分服务去掉了 “根据当地法律法规。。。” <a href="http://twitter.com/54chen/statuses/7695042983">#</a></li>
<li>昨天百度被搞的时候买入百度股票，此刻乐翻天。 <a href="http://twitter.com/54chen/statuses/7695141720">#</a></li>
<li>网易科技威武：http://tech.163.com/10/0113/07/5ST3OP5P000915BF.html <a href="http://twitter.com/54chen/statuses/7695478883">#</a></li>
<li>张启睿Aw: #Google# 人人网，纯爷们。各大网站都开始删除关于 google 的消息了。 <a href="http://twitter.com/54chen/statuses/7695529717">#</a></li>
<li><a href="http://www.douban.com/note/56732966/" rel="nofollow">http://www.douban.com/note/56732966/</a>   今天中午12时许，一群自发组织的群众在位于清华科技园的谷歌大楼前聚集，举行疑似祭奠活动，献花并合影留念。这群人大部分为20岁左右的年轻人，其中也不乏国际友人 <a href="http://twitter.com/54chen/statuses/7698738735">#</a></li>
<li>状态帝 : 90后：今天我翻墙，看到一个国外网站叫Google的，妈的全是抄袭百度的。00后：翻墙是什么？ 10后：网站是什么？ 20后：国外是什么？ <a href="http://twitter.com/54chen/statuses/7698797673">#</a></li>
<li>谷歌同学播报:来了很多记者，所有PR出动把正门堵住，全员都在看电视电话会议，业务全部休眠，正式决议要到晚上出。很可能明天就不用上班了 <a href="http://twitter.com/54chen/statuses/7699648222">#</a></li>
<li>RT ＠Fenng: 二代身份证可能是近10年来设计最脑残的产品了。 <a href="http://twitter.com/54chen/statuses/7701315679">#</a></li>
<li>＠tinyfool  出个技术移民手册吧 <a href="http://twitter.com/54chen/statuses/7701500093">#</a></li>
<li>＠Fenng  哈哈 昨天我还有一文百度写点什么的 不全 <a href="http://twitter.com/54chen/statuses/7701981085">#</a></li>
<li>同事发来一个未经证实的消息：谷歌员工没法干活是因为谷歌总部关闭了给中国的VPN服务，关闭的原因是GFW研发团队正在试图攻击这个VPN <a href="http://twitter.com/54chen/statuses/7702395440">#</a></li>
<li>屈服：丢人丢大发了，以后工作不好展开，谷歌开了头。 不屈服：言论不自由恶名更响，民望更差，影响甚远。 人人网亮哥分析时政语录。 <a href="http://twitter.com/54chen/statuses/7702535152">#</a></li>
<li>李伟博☭: 转自马斌: google捅破一个秘密，除了sogou。其他搜索引擎都在秘密用google的搜索结果。 <a href="http://twitter.com/54chen/statuses/7702719248">#</a></li>
<li>方亮: 防民之口，伤民之心。得片刻之利益，失长久之大计。长此以往国将不国，国将不国，民何以处之。 <a href="http://twitter.com/54chen/statuses/7702735267">#</a></li>
<li>人人网海量存储系统nuclear内部预发布会正式开始  26层 大杂院 会议室 <a href="http://twitter.com/54chen/statuses/7781337870">#</a></li>
<li>RT@edwardzhangNuclear 系统特点：数据自动复制到多个节点；数据自动分区到不同的节点；数据存储空间无限。 <a href="http://twitter.com/54chen/statuses/7781570133">#</a></li>
<li>Nuclear的分区原理，之前我们走了很多曲折的路，参考使用dynamo的分区后，我们面临了迁移数据的很大难题，要很短时间迁移数据，那是很困难的。于是采取了cassandra的方案。 <a href="http://twitter.com/54chen/statuses/7781965866">#</a></li>
<li>插播 京城日食了 天黑黑 <a href="http://twitter.com/54chen/statuses/7782204336">#</a></li>
<li>Nuclear未来可支持半结构化查询 <a href="http://twitter.com/54chen/statuses/7782225795">#</a></li>
</ul>

	标签：<a href="http://www.54chen.com/tag/twitter" title="twitter" rel="tag">twitter</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-20.html" title="一周废话汇总【54chen Twitter 2009-12-20】 (2009-12-20)">一周废话汇总【54chen Twitter 2009-12-20】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-13.html" title="一周废话汇总【54chen Twitter 2009-12-13】 (2009-12-13)">一周废话汇总【54chen Twitter 2009-12-13】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-06.html" title="一周废话汇总【54chen Twitter 2009-12-06】 (2009-12-06)">一周废话汇总【54chen Twitter 2009-12-06】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-11-28.html" title="一周废话汇总【54chen Twitter 2009-11-28】 (2009-11-28)">一周废话汇总【54chen Twitter 2009-11-28】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-11-21.html" title="一周废话汇总【54chen Twitter 2009-11-21】 (2009-11-21)">一周废话汇总【54chen Twitter 2009-11-21】</a> (0)</li>
</ul>


<p><a href="http://feedads.g.doubleclick.net/~a/JAM23vcEOovooSPU_qT-NQAMeFg/0/da"><img src="http://feedads.g.doubleclick.net/~a/JAM23vcEOovooSPU_qT-NQAMeFg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/JAM23vcEOovooSPU_qT-NQAMeFg/1/da"><img src="http://feedads.g.doubleclick.net/~a/JAM23vcEOovooSPU_qT-NQAMeFg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/-aboutJavaAndPhp/~4/BXLokwupY14" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-17-2.html/feed</wfw:commentRss>
		<feedburner:origLink>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-17-2.html</feedburner:origLink></item>
		<item>
		<title>PHP上传文件类型彻底判断方案及PHP＋nginx上传大小彻底控制方案</title>
		<link>http://feedproxy.google.com/~r/-aboutJavaAndPhp/~3/n69rGj7Ql6s/php-upload-file-types-to-determine-the-complete-program-and-php-nginx-upload-size-and-complete-control-program.html</link>
		<comments>http://www.54chen.com/php-tech/php-upload-file-types-to-determine-the-complete-program-and-php-nginx-upload-size-and-complete-control-program.html#comments</comments>
		<pubDate>Wed, 13 Jan 2010 01:06:21 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[上传]]></category>

		<category><![CDATA[大小]]></category>

		<category><![CDATA[类型]]></category>

		<guid isPermaLink="false">http://www.54chen.com/php-tech/php-upload-file-types-to-determine-the-complete-program-and-php-nginx-upload-size-and-complete-control-program.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>上回科学院发过一篇讲述上传判断的文章，位置是
PHP JAVA C上传文件如何准确判断文件类型－mime知识普及
本文目的在于，进一步更正前文所述的mime判断方式，以及增加一个nginx环境里的文件上... <a href="http://www.54chen.com" target=_blank>五四陈科学院</a> <a href="http://www.twitter.com/54chen" target=_blank>54chen twitter</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><p>上回科学院发过一篇讲述上传判断的文章，位置是</p>
<h3><a rel="bookmark" href="../cc/php-java-c-upload-files-how-to-accurately-determine-the-file-type-mime-literacy.html">PHP JAVA C上传文件如何准确判断文件类型－mime知识普及</a></h3>
<p>本文目的在于，进一步更正前文所述的mime判断方式，以及增加一个nginx环境里的文件上传大小所影响的代码。</p>
<p><strong>上传类型控制：</strong></p>
<p>在我（<a href="http://www.54chen.com">54chen</a>）工作中发现，其实修改文件的后缀，浏览器就会很傻瓜地传送错误的<a href="http://www.54chen.com/_linux_/everyone-network-intel-technology-symposium-record.html">mime</a>类型，所以前文的判断是一个半错误的方法（除了C代码是正确的）。</p>
<p>网上流传一段PHP读取文件头判断文件类型的方法，有一些bug，经我（<a href="http://www.54chen.com/php-tech/mediawiki-pgsql.html">54chen</a>）修改实测，应该是这个样子：</p>
<blockquote><p>/**<br />
* 读取文件前几个字节 判断<a href="http://www.54chen.com/webfe/academy-of-sciences-in-recent-years-a-good-article-summing-up.html">文件</a>类型<br />
*<br />
* @return String<br />
*/<br />
function checkTitle($filename) {<br />
$file     = fopen($filename, &#8220;rb&#8221;);<br />
$bin      = fread($file, 2); //只读2字节<br />
fclose($file);<br />
$strInfo  = @unpack(&#8221;c2chars&#8221;, $bin);<br />
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);<br />
$fileType = &#8221;;<br />
switch ($typeCode)<br />
{<br />
case 7790:<br />
$fileType = &#8216;exe&#8217;;<br />
break;<br />
case 7784:<br />
$fileType = &#8216;midi&#8217;;<br />
break;<br />
case 8297:<br />
$fileType = &#8216;rar&#8217;;<br />
break;<br />
case 255216:<br />
$fileType = &#8216;jpg&#8217;;<br />
break;<br />
case 7173:<br />
$fileType = &#8216;gif&#8217;;<br />
break;<br />
case 6677:<br />
$fileType = &#8216;bmp&#8217;;<br />
break;<br />
case 13780:<br />
$fileType = &#8216;png&#8217;;<br />
break;<br />
default:<br />
$fileType = &#8216;unknown&#8217;.$typeCode;<br />
}<br />
//Fix<br />
if ($strInfo['chars1']==&#8217;-1&#8242; &amp;&amp; $strInfo['chars2']==&#8217;-40&#8242; ) {<br />
return &#8216;jpg&#8217;;<br />
}<br />
if ($strInfo['chars1']==&#8217;-119&#8242; &amp;&amp; $strInfo['chars2']==&#8217;80&#8242; ) {<br />
return &#8216;png&#8217;;<br />
}<br />
return $fileType;<br />
}</p></blockquote>
<p>这代码可以非常正确地分出修改后的文件，从而达到阻止修改后缀名上传的情况。</p>
<p><strong>上传大小控制：</strong></p>
<p>在PHP代码中直接读取$_FILE的size，而如果是特别大的文件，又使用了PHP＋<a href="http://www.54chen.com/architecture/54-chen-skills-the-whole-point-for-domain-names-using-nginx-and-javascript-to-do-a-simple-jump-to-inform-the-friendly-exchange-of-domain-names.html">nginx</a>的话，很有可能，超过2M的文件直接就被nginx就抛出来413错误了。</p>
<p>解决的办法：</p>
<p>修改/etc/nginx/nginx.conf</p>
<p>找到对应域名的<a href="http://www.54chen.com/architecture/wordpress-nginx-php-cgi-mysql-memory-in-the-128m-to-install-and-optimize-the-vps-notes.html">server</a>段：修改client_max_body_size的值，默认是2M。</p>
<p>这样子还不够，如果不修改php.ini里的值，你会发现上传的文件用上面的代码判断类型的时候会出问题。</p>
<p>修改/etc/php.ini</p>
<p>找到upload_max_<a href="http://www.54chen.com/cc/php-java-c-upload-files-how-to-accurately-determine-the-file-type-mime-literacy.html">filesize</a>，修改这个值，默认是2M。</p>
<p>一番折腾，类型和大小的控制基本上就完善了。</p>

	标签：<a href="http://www.54chen.com/tag/php" title="php" rel="tag">php</a>, <a href="http://www.54chen.com/tag/%e4%b8%8a%e4%bc%a0" title="上传" rel="tag">上传</a>, <a href="http://www.54chen.com/tag/%e5%a4%a7%e5%b0%8f" title="大小" rel="tag">大小</a>, <a href="http://www.54chen.com/tag/%e7%b1%bb%e5%9e%8b" title="类型" rel="tag">类型</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.54chen.com/cc/php-java-c-upload-files-how-to-accurately-determine-the-file-type-mime-literacy.html" title="PHP JAVA C上传文件如何准确判断文件类型－mime知识普及 (2009-12-14)">PHP JAVA C上传文件如何准确判断文件类型－mime知识普及</a> (4)</li>
	<li><a href="http://www.54chen.com/translate" title="资料翻译 (2009-01-16)">资料翻译</a> (0)</li>
	<li><a href="http://www.54chen.com/php-tech/php-open-source-projects-reading-lists-and-hook-methods-while-has_items-thme_ite-and-apply_filters.html" title="解读PHP开源项目中列表和hook方法：while(has_items()): thme_ite();和apply_filters (2010-02-08)">解读PHP开源项目中列表和hook方法：while(has_items()): thme_ite();和apply_filters</a> (0)</li>
	<li><a href="http://www.54chen.com/cc/%e7%a9%b6%e7%ab%9f%e4%bb%80%e4%b9%88%e6%98%aftsrmls_cc%ef%bc%9f.html" title="究竟什么是TSRMLS_CC？ (2008-12-03)">究竟什么是TSRMLS_CC？</a> (9)</li>
	<li><a href="http://www.54chen.com/php-tech/%e6%b7%ab%e8%8d%a1%e4%b8%80%e4%b8%8b%ef%bc%8c%e4%bd%a0%e5%b0%b1%e7%9f%a5%e9%81%93.html" title="淫荡一下，你就知道 (2008-12-08)">淫荡一下，你就知道</a> (2)</li>
</ul>


<p><a href="http://feedads.g.doubleclick.net/~a/bLCHAyKcZMUBIWLwaL8ZoDOpELE/0/da"><img src="http://feedads.g.doubleclick.net/~a/bLCHAyKcZMUBIWLwaL8ZoDOpELE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bLCHAyKcZMUBIWLwaL8ZoDOpELE/1/da"><img src="http://feedads.g.doubleclick.net/~a/bLCHAyKcZMUBIWLwaL8ZoDOpELE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/-aboutJavaAndPhp/~4/n69rGj7Ql6s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/php-tech/php-upload-file-types-to-determine-the-complete-program-and-php-nginx-upload-size-and-complete-control-program.html/feed</wfw:commentRss>
		<feedburner:origLink>http://www.54chen.com/php-tech/php-upload-file-types-to-determine-the-complete-program-and-php-nginx-upload-size-and-complete-control-program.html</feedburner:origLink></item>
		<item>
		<title>54chen Twitter memo 2010-01-10</title>
		<link>http://feedproxy.google.com/~r/-aboutJavaAndPhp/~3/VPZvSrc-MA8/54chen-twitter-memo-2010-01-10.html</link>
		<comments>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-10.html#comments</comments>
		<pubDate>Sun, 10 Jan 2010 01:09:00 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
		
		<category><![CDATA[备忘]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.54chen.com/memo/54chen-twitter-memo-2010-01-10.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>
51.com被封了：新网接到刚刚北京市通管局通知，称51.COM含有淫秽色情信息，要求新网先进行锁定。“现在我们正在与相关各方进行联系，具体域&#8230; #
终于明白了，中国国际航空公司的一个经... <a href="http://www.54chen.com" target=_blank>五四陈科学院</a> <a href="http://www.twitter.com/54chen" target=_blank>54chen twitter</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen/images/logo.png"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><ul class="aktt_tweet_digest">
<li>51.com被封了：新网接到刚刚北京市通管局通知，称51.COM含有淫秽色情信息，要求新网先进行锁定。“现在我们正在与相关各方进行联系，具体域&#8230; <a href="http://twitter.com/54chen/statuses/7399636389">#</a></li>
<li>终于明白了，中国国际航空公司的一个经理说的，牵一发而动全身，为什么要慢？因为你已经是大公司了，快不得，快只会让你出错！ <a href="http://twitter.com/54chen/statuses/7431975700">#</a></li>
<li>人人网故障报告，论低级错误产生的源头。 <a href="http://twitter.com/54chen/statuses/7433032383">#</a></li>
<li>人人网海量存储系统Nuclear  开源申请中 。。。啦啦啦 <a href="http://twitter.com/54chen/statuses/7466087096">#</a></li>
<li>杨钞浇: 好好理解：这个世界不是有钱人的世界，也不是有权人的世界，而是有心人的世界。 <a href="http://twitter.com/54chen/statuses/7511189860">#</a></li>
<li>杨程博❤要努力: 转自程冠: 达芬奇密码的上面，是达芬奇帐号你知道达芬奇密码的下面是什么吗是达芬奇验证码 <a href="http://twitter.com/54chen/statuses/7511258331">#</a></li>
</ul>

	标签：<a href="http://www.54chen.com/tag/twitter" title="twitter" rel="tag">twitter</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-20.html" title="一周废话汇总【54chen Twitter 2009-12-20】 (2009-12-20)">一周废话汇总【54chen Twitter 2009-12-20】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-13.html" title="一周废话汇总【54chen Twitter 2009-12-13】 (2009-12-13)">一周废话汇总【54chen Twitter 2009-12-13】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-12-06.html" title="一周废话汇总【54chen Twitter 2009-12-06】 (2009-12-06)">一周废话汇总【54chen Twitter 2009-12-06】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-11-28.html" title="一周废话汇总【54chen Twitter 2009-11-28】 (2009-11-28)">一周废话汇总【54chen Twitter 2009-11-28】</a> (0)</li>
	<li><a href="http://www.54chen.com/memo/54chen-twitter-2009-11-21.html" title="一周废话汇总【54chen Twitter 2009-11-21】 (2009-11-21)">一周废话汇总【54chen Twitter 2009-11-21】</a> (0)</li>
</ul>


<p><a href="http://feedads.g.doubleclick.net/~a/OiuC1jgwhmqtMDVNpDT0plcC17s/0/da"><img src="http://feedads.g.doubleclick.net/~a/OiuC1jgwhmqtMDVNpDT0plcC17s/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/OiuC1jgwhmqtMDVNpDT0plcC17s/1/da"><img src="http://feedads.g.doubleclick.net/~a/OiuC1jgwhmqtMDVNpDT0plcC17s/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/-aboutJavaAndPhp/~4/VPZvSrc-MA8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-10.html/feed</wfw:commentRss>
		<feedburner:origLink>http://www.54chen.com/memo/54chen-twitter-memo-2010-01-10.html</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.672 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-02-08 17:24:30 -->
