<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>吕的部落格</title>
	<atom:link href="http://www.lvjiyong.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lvjiyong.com</link>
	<description>天行健，君子以自强不息</description>
	<lastBuildDate>Sat, 24 May 2014 02:13:45 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.9</generator>
	<item>
		<title>UserScript在不同浏览器的安装</title>
		<link>http://www.lvjiyong.com/i681.html</link>
		<comments>http://www.lvjiyong.com/i681.html#comments</comments>
		<pubDate>Sat, 24 May 2014 02:13:45 +0000</pubDate>
		<dc:creator><![CDATA[吕]]></dc:creator>
				<category><![CDATA[userscript]]></category>

		<guid isPermaLink="false">http://www.lvjiyong.com/?p=681</guid>
		<description><![CDATA[<h3 id="toc-1">如何使用安装用户脚本</h3>
<ul>
<li><strong><img title="Firefox" src="http://emulefans.com/wp-content/uploads/2009/06/Firefox_icon.png" alt="Firefox" width="32" height="32" />Firefox</strong>、<strong><img title="Flock" src="http://emulefans.com/wp-content/uploads/2009/06/Flock_icon.png" alt="Flock" width="32" height="32" />Flock</strong>用户建议安装以下之一：</li>
<li><strong><img title="IE9" src="http://emulefans.com/wp-content/uploads/2009/06/IE9_icon.png" alt="IE9" width="32" height="32" />Internet Explorer 6-9 </strong>用户建议安装以下之一：
<ul>
<li><em>IE7Pro</em>扩展：<br />
<a href="http://www.ie7pro.com/" target="_blank">http://www.ie7pro.com/</a><br />
将*.user.js脚本<strong>改为.ieuser.js后缀</strong>，放在C:\Program Files\IEPro\userscripts\下，<br />
在IE7Pro的选项的“User Script”面板中启用该脚本。</li>
<li><em>Trixie</em>扩展：<br />
<a href="http://www.bhelpuri.net/Trixie/" target="_blank">http://www.bhelpuri.net/Trixie/</a><br />
把用户脚本放在C:\Program Files\Bhelpuri\Trixie\Scripts文件夹下，<br />
在工具-&#62;Trixie Options（Trixie选项）中点击Reload Scripts（重新载入）按钮，再选中该脚本，即可使用。</li>
</ul>
</li>
<li><strong><img title="Maxthon" src="http://emulefans.com/wp-content/uploads/2009/06/Maxthon_icon.png" alt="Maxthon" width="32" height="32" />Maxthon 1-2 </strong>用户建议安装：
<ul>
<li><em>JS-plugin</em>插件：<br />
<a href="http://addons.maxthon.com/en/post/1428" target="_blank">http://addons.maxthon.com/en/post/1428</a><br />
或<br />
<a href="http://forum.maxthon.com/viewthread.php?tid=19496" target="_blank">http://forum.maxthon.com/viewthread.php?tid=19496</a><br />
把用户脚本放在C:\Program Files\Maxthon\Plugin\JS-plugin\Scripts文件夹下，<br />
在Maxthon选项-&#62;插件-&#62;“Maxthon插件”选项卡-&#62;“配置”中选中该脚本，即可使用。<br />
<strong>注意：</strong>如果把用户脚本用于Maxthon的这个插件，建议先手动重命名用户脚本的名称*.user.js为*_user.js。也就是说，用于这个插件的用户脚本的名称中，.js后缀前不要有除字母数字下划线之外的特殊字符出现。</li>
</ul>
</li>
<li><strong><img title="Opera" src="http://emulefans.com/wp-content/uploads/2009/06/Opera_icon.png" alt="Opera" width="32" height="32" />Opera</strong>用户请至工具-&#62;首选项-&#62;高级-&#62;内容-&#62;Javascript选项，在“用户Javascript文件”下任意选择一个文件夹，确定，然后把所有需要使用的用户脚本放在这个文件夹下即可使用。<br />
<strong>注意：</strong>如果脚本的名称为*.user.js，那么脚本会在页面上所有元素、文件都完全载入完毕再执行（相当于 Greasemonkey的@run-at document-end的meta标签）；如果你改后缀去掉“.user”，变为*.js，那么脚本会在页面刚一加载就执行（相当于@run-at document-start）。你可以查看一下用户脚本的代码开头，是@run-at document-start还是document-end，如果没有找到这行，也可以自己重命名为*.user.js和*.js两个都试试看，如果实在 不清楚，就保留为*.user.js。</li>
<li><strong><img title="Google Chrome" src="http://emulefans.com/wp-content/uploads/2009/06/Google_Chrome_icon.png" alt="Google Chrome" width="32" height="32" /><a href="https://www.google.com/chrome/" target="_blank">Google Chrome</a>和<a href="http://dev.chromium.org/Home" target="_blank">Chromium</a></strong>虽然原生支持用户脚本，但是2012年8月后的新版Google Chrome已不允许直接点击安装用户脚本，会显示“只可添加来自 Chrome 网上应用店的扩展程序、应用和用户脚本。”。解决方法有3种：
<ul>
<li>将用户脚本文件.user.js下载到电脑里；点击Google Chrome浏览器工具栏上的扳手图标；选择工具 &#62; 扩展程序；将用户脚本文件.user.js拖动到“扩展程序”页；点击安装即可完成（参考官方帮助《<a href="http://support.google.com/chrome_webstore/bin/answer.py?hl=zh-Hans&#38;hlrm=en&#38;p=crx_warning&#38;answer=2664769" target="_blank">添加来自其他网站的扩展程序</a>》）；</li>
<li>带“ --enable-easy-off-store-extension-install”命令行参数运行Google Chrome（Windows下可以建立chrome.exe的快捷方式，快捷方式属性中的目标文件路径末尾添加“ --enable-easy-off-store-extension-install”，并使用此快捷方式打开Google Chrome），这样网上应用店外的扩展、脚本就像以前一样，再也不会被阻止了；</li>
<li>使用<em><a href="https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo" target="_blank">Tampermonkey</a></em>扩展以安装和管理用户脚本。</li>
</ul>
<p>摘自：<a href="http://emulefans.com/userscript-on-various-browsers/" target="_blank">http://emulefans.com/userscript-on-various-browsers/</a></li>
</ul>
<p><a rel="nofollow" href="http://www.lvjiyong.com/i681.html">UserScript在不同浏览器的安装</a>，首发于<a rel="nofollow" href="http://www.lvjiyong.com">吕的部落格</a>。</p>
]]></description>
		<wfw:commentRss>http://www.lvjiyong.com/i681.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大数据相关资料（2）X</title>
		<link>http://www.lvjiyong.com/i664.html</link>
		<comments>http://www.lvjiyong.com/i664.html#comments</comments>
		<pubDate>Fri, 01 Nov 2013 07:26:38 +0000</pubDate>
		<dc:creator><![CDATA[吕]]></dc:creator>
				<category><![CDATA[杂记]]></category>
		<category><![CDATA[大数据]]></category>
		<category><![CDATA[大流量]]></category>

		<guid isPermaLink="false">http://www.lvjiyong.com/?p=664</guid>
		<description><![CDATA[<p>传统的数据采集来源单一，且存储<b>、</b>管理和分析数据量也相对较小，大多采用关系型数据库和并行数据仓库即可处理<b>。</b>对依靠并行计算提升数据处理速度方面而言，传统的并行数据库技术追求高度一致性和容错性，根据CAP理论，难以保证其可用性和扩展性<b>。</b></p>
<p>传统的数据处理方法是以处理器为中心，而大数据环境下，需要采取以数据为中心的模式，减少数据移动带来的开销<b>。</b>因此，传统的数据处理方法，已经不能适应大数据的需求！</p>
<h3>大数据十大核心问题</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/subsir/articles/2782965.html">http://www.cnblogs.com/subsir/articles/2782965.html</a>
<p>【编者注】大数据来了，受益于便宜的硬件存储<b>、</b>强大的计算机技术和云计算技术，企业手中获取了越来越多的数据。对大多数企业来说，数据分析不是可有可无，而是一个生存问题<b>。</b>但是面对大数据，我们有什么问题呢？本文作者赛仕软件研究开发(北京)有限公司总经理@刘政-<a href="http://www.itongji.cn/analysis/SAS/">SAS</a> ，在微博上分享的大数据的10个核心问题，中国统计网做个整理汇总，希望大家一起来交流讨论<b>。</b></p>
<p><strong>大数据十大核心问题：</strong></p>
<p><strong>1<b>、</b>大数据的分析模式</strong></p>
<p>大数据分析与传统分析的区别，特点是什么？</p>
<p><strong>2<b>、</b>分析速度</strong></p>
<p>分析速度是否能够跟上数据量和数据格式变化的速度，是否能达到实时分析？</p>
<p><strong>3<b>、</b>多种格式数据的分析技术</strong></p>
<p>声频、视频<b>、</b>图片、文本等等格式，如何混合分析？</p>
<p><strong>4、存储问题，存储和分析成本</strong></p>
<p>无条件存储，还是有选择性存储？如何进行选择性存储？投入产出比<b>。</b>随着数据量的不断增加，存储技术要不断创新。</p>
<p><strong>5、法律条款的更新</strong></p>
<p>个人隐私，国家机密保护等<b>。</b>数据的归属权问题。我通过开放的数据，分析出了国家机密，是不是违规、犯罪？</p>
<p><strong>6、数据安全和真实性</strong></p>
<p>数据是否会被窃取，篡改，伪造等，如何保护？</p>
<p><strong>7<b>、</b>数据流分析</strong></p>
<p>给进数据，输出分析结果，实时改变，是物联网实用化的基础<b>。</b>如何实现？</p>
<p><strong>8<b>、</b>数据关联性</strong></p>
<p>如何提取关联性数据和有用数据？看起来简单，其实在浩瀚的数据中查找关联性是挺难的<b>。</b></p>
<p><strong>9<b>、</b>大数据能否引申出科学命题？</strong></p>
<p>例如，骰硬币可以引出概率论。</p>
<p><strong>10<b>、</b>大数据对其他学科的影响</strong></p>
<p>对大数据的分析仅仅是得到分析结果吗？应该说世界上所有的东西都可以归结到数据里<b>。</b>那么我们能由此对世界有更深的了解吗？有了基因数据，人体数据能绘出人体机能吗？</p>
<p><strong>本文链接：</strong><a href="http://www.itongji.cn/article/111913B2012.html">http://www.itongji<b>.</b>cn/article/111913B2012.html</a>    <br /><strong>关键字：</strong><a href="http://www.itongji.cn/tags.php?/%B4%F3%CA%FD%BE%DD/">大数据</a> &#124;<a href="http://www.itongji.cn/tags.php?/SAS/">SAS</a> &#124;<a href="http://www.itongji.cn/tags.php?/%BA%CB%D0%C4%CE%CA%CC%E2/">核心问题</a> &#124;</p>
<p><b></b></p>
<h3>大数据学习之MapReduce篇</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/liuhouhou/archive/2013/06/04/hadoop_mapreduce.html">http://www.cnblogs.com/liuhouhou/archive/2013/06/04/hadoop_mapreduce.html</a>
<p><strong>大数据学习之MapReduce篇</strong></p>
<p>本文转自：<a href="http://blog.sina.com.cn/s/blog_63539c660101818c.html">http://blog.sina.com<b>.</b>cn/s/blog_63539c660101818c.html</a></p>
<p>谷歌在03到06年间连续发表了三篇很有影响力的文章，分别是03年SOSP的<a href="http://blog.csdn.net/opennaive/article/details/7483523">GFS</a> ，04年OSDI的MapReduce，和06年OSDI的<a href="http://blog.csdn.net/opennaive/article/details/7532589">BigTable</a> <b>。</b>SOSP和OSDI都是操作系统领域的顶级会议，在计算机学会推荐会议里属于A类<b>。</b>SOSP在单数年举办，而OSDI在双数年举办。</p>
<p> 那么这篇博客就来介绍一下MapReduce。当然这里不具体讨论Google为什么开发这些技术，毕竟做为互联网的开放精神，Google实在是把看家本领都拿出来了<b>.</b> MapReduce的开放，是大数据背景下，各行各业的非结构化数据进行融合的精妙之步，不得不PF谷歌的生态链<b>。</b>这不我方唱罢，脸书(Facebook)同学就发布了新一代的MapReduce,名曰Corona(MS是个MM名), 相比传统的MapReduce只对“map”和“reduce”进行管理，Corona最大的一个进步就是做到了基于CPU，内存和其他job处理的需求资源的管理<b>。</b>这就可以使得Corona可以处理非MapReduce job，使Hadoop集群的应用领域更加广泛了。 </p>
<p>以下内容是copy来自互联网，版权没有<b>.</b></p>
<p><strong>1. MapReduce</strong><strong>是干啥的</strong></p>
<p>因为没找到谷歌的示意图，所以我想借用一张Hadoop项目的结构图来说明下MapReduce所处的位置，如下图<b>。</b></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image.jpg"><img title="Image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image_thumb.jpg" width="604" height="420" /></a></p>
<p>Hadoop实际上就是谷歌三宝的开源实现，Hadoop MapReduce对应Google MapReduce，HBase对应BigTable，HDFS对应GFS<b>。</b>HDFS（或GFS）为上层提供高效的非结构化存储服务，HBase（或BigTable）是提供结构化数据服务的分布式数据库，Hadoop MapReduce（或Google MapReduce）是一种并行计算的编程模型，用于作业调度<b>。</b></p>
<p>GFS和BigTable已经为我们提供了高性能、高并发的服务，但是并行编程可不是所有程序员都玩得转的活儿，如果我们的应用本身不能并发，那GFS<b>、</b>BigTable也都是没有意义的。MapReduce的伟大之处就在于让不熟悉并行编程的程序员也能充分发挥分布式系统的威力<b>。</b></p>
<p>简单概括的说，MapReduce是将一个大作业拆分为多个小作业的框架（大作业和小作业应该本质是一样的，只是规模不同），用户需要做的就是决定拆成多少份，以及定义作业本身<b>。</b></p>
<p>下面用一个贯穿全文的例子来解释MapReduce是如何工作的。</p>
<p><strong>2.</strong> <strong>例子：统计词频</strong></p>
<p>如果我想统计下过去10年计算机论文出现最多的几个单词，看看大家都在研究些什么，那我收集好论文后，该怎么办呢？</p>
<p>方法一：我可以写一个小程序，把所有论文按顺序遍历一遍，统计每一个遇到的单词的出现次数，最后就可以知道哪几个单词最热门了<b>。</b></p>
<p>这种方法在数据集比较小时，是非常有效的，而且实现最简单，用来解决这个问题很合适<b>。</b></p>
<p>方法二：写一个多线程程序，并发遍历论文<b>。</b></p>
<p>这个问题理论上是可以高度并发的，因为统计一个文件时不会影响统计另一个文件<b>。</b>当我们的机器是多核或者多处理器，方法二肯定比方法一高效<b>。</b>但是写一个多线程程序要比方法一困难多了，我们必须自己同步共享数据，比如要防止两个线程重复统计文件。</p>
<p>方法三：把作业交给多个计算机去完成<b>。</b></p>
<p>我们可以使用方法一的程序，部署到N台机器上去，然后把论文集分成N份，一台机器跑一个作业<b>。</b>这个方法跑得足够快，但是部署起来很麻烦，我们要人工把程序copy到别的机器，要人工把论文集分开，最痛苦的是还要把N个运行结果进行整合（当然我们也可以再写一个程序）<b>。</b></p>
<p>方法四：让MapReduce来帮帮我们吧！</p>
<p>MapReduce本质上就是方法三，但是如何拆分文件集，如何copy程序，如何整合结果这些都是框架定义好的<b>。</b>我们只要定义好这个任务（用户程序），其它都交给MapReduce。</p>
<p>在介绍MapReduce如何工作之前，先讲讲两个核心函数map和reduce以及MapReduce的伪代码<b>。</b></p>
<p><strong>3. map</strong><strong>函数和reduce函数</strong></p>
<p>map函数和reduce函数是交给用户实现的，这两个函数定义了任务本身<b>。</b></p>
<ul>
<li>map函数：接受一个键值对（key-value pair），产生一组中间键值对<b>。</b>MapReduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。 </li>
<li>reduce函数：接受一个键，以及相关的一组值，将这组值进行合并产生一组规模更小的值（通常只有一个或零个值）<b>。</b></li>
</ul>
<p>统计词频的MapReduce函数的核心代码非常简短，主要就是实现这两个函数<b>。</b></p>
<p>1<b>.</b> map(String key, String value):&#160; </p>
<ol>
<li>2<b>.</b>&#160;&#160;&#160;&#160; // key: document name&#160;&#160; </li>
<li>3<b>.</b>&#160;&#160;&#160;&#160; // value: document contents&#160;&#160; </li>
<li>4.&#160;&#160;&#160;&#160; for each word w in value:&#160;&#160; </li>
<li>5<b>.</b>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EmitIntermediate(w, &#34;1&#34;);&#160; </li>
</ol>
<p>7<b>.</b> reduce(String key, Iterator values):&#160; </p>
<ol>
<li>8<b>.</b>&#160;&#160;&#160;&#160; // key: a word&#160;&#160; </li>
<li>9.&#160;&#160;&#160;&#160; // values: a list of counts&#160;&#160; </li>
<li>10<b>.</b>&#160;&#160;&#160;&#160; int result = 0;&#160;&#160; </li>
<li>11.&#160;&#160;&#160;&#160; for each v in values:&#160;&#160; </li>
<li>12<b>.</b>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; result += ParseInt(v);&#160;&#160; </li>
<li>13<b>.</b>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Emit(AsString(result));&#160; </li>
</ol>
<p>在统计词频的例子里，map函数接受的键是文件名，值是文件的内容，map逐个遍历单词，每遇到一个单词w，就产生一个中间键值对，这表示单词w咱又找到了一个；MapReduce将键相同（都是单词w）的键值对传给reduce函数，这样reduce函数接受的键就是单词w，值是一串&#34;1&#34;（最基本的实现是这样，但可以优化），个数等于键为w的键值对的个数，然后将这些“1”累加就得到单词w的出现次数<b>。</b>最后这些单词的出现次数会被写到用户定义的位置，存储在底层的分布式存储系统（GFS或HDFS）。</p>
<p><strong>4<b>.</b> MapReduce</strong><strong>是如何工作</strong></p>
<p>上图是论文里给出的流程图<b>。</b>一切都是从最上方的user program开始的，user program链接了MapReduce库，实现了最基本的Map函数和Reduce函数<b>。</b>图中执行的顺序都用数字标记了。</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image1.jpg"><img title="Image(1)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(1)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image1_thumb.jpg" width="1028" height="788" /></a></p>
<p>1<b>.</b> MapReduce库先把user program的输入文件划分为M份（M为用户定义），每一份通常有16MB到64MB，如图左方所示分成了split0~4；然后使用fork将用户进程拷贝到集群内其它机器上<b>。</b></p>
<p>2. user program的副本中有一个称为master，其余称为worker，master是负责调度的，为空闲worker分配作业（Map作业或者Reduce作业），worker的数量也是可以由用户指定的<b>。</b></p>
<p>3. 被分配了Map作业的worker，开始读取对应分片的输入数据，Map作业数量是由M决定的，和split一一对应；Map作业从输入数据中抽取出键值对，每一个键值对都作为参数传递给map函数，map函数产生的中间键值对被缓存在内存中<b>。</b></p>
<p>4. 缓存的中间键值对会被定期写入本地磁盘，而且被分为R个区，R的大小是由用户定义的，将来每个区会对应一个Reduce作业；这些中间键值对的位置会被通报给master，master负责将信息转发给Reduce worker<b>。</b></p>
<p>5. master通知分配了Reduce作业的worker它负责的分区在什么位置（肯定不止一个地方，每个Map作业产生的中间键值对都可能映射到所有R个不同分区），当Reduce worker把所有它负责的中间键值对都读过来后，先对它们进行排序，使得相同键的键值对聚集在一起<b>。</b>因为不同的键可能会映射到同一个分区也就是同一个Reduce作业（谁让分区少呢），所以排序是必须的。</p>
<p>6. reduce worker遍历排序后的中间键值对，对于每个唯一的键，都将键与关联的值传递给reduce函数，reduce函数产生的输出会添加到这个分区的输出文件中<b>。</b></p>
<p>7. 当所有的Map和Reduce作业都完成了，master唤醒正版的user program，MapReduce函数调用返回user program的代码<b>。</b></p>
<p>所有执行完毕后，MapReduce输出放在了R个分区的输出文件中（分别对应一个Reduce作业）<b>。</b>用户通常并不需要合并这R个文件，而是将其作为输入交给另一个MapReduce程序处理。整个过程中，输入数据是来自底层分布式文件系统（GFS）的，中间数据是放在本地文件系统的，最终输出数据是写入底层分布式文件系统（GFS）的<b>。</b>而且我们要注意Map/Reduce作业和map/reduce函数的区别：Map作业处理一个输入数据的分片，可能需要调用多次map函数来处理每个输入键值对；Reduce作业处理一个分区的中间键值对，期间要对每个不同的键调用一次reduce函数，Reduce作业最终也对应一个输出文件<b>。</b></p>
<p>我更喜欢把流程分为三个阶段。第一阶段是准备阶段，包括1<b>、</b>2，主角是MapReduce库，完成拆分作业和拷贝用户程序等任务；第二阶段是运行阶段，包括3、4、5、6，主角是用户定义的map和reduce函数，每个小作业都独立运行着；第三阶段是扫尾阶段，这时作业已经完成，作业结果被放在输出文件里，就看用户想怎么处理这些输出了<b>。</b></p>
<p><strong>5.</strong> <strong>词频是怎么统计出来的</strong></p>
<p>结合第四节，我们就可以知道第三节的代码是如何工作的了<b>。</b>假设咱们定义M=5，R=3，并且有6台机器，一台master。</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image2.jpg"><img title="Image(2)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(2)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image2_thumb.jpg" width="642" height="411" /></a></p>
<p>这幅图描述了MapReduce如何处理词频统计<b>。</b>由于map worker数量不够，首先处理了分片1、3、4，并产生中间键值对；当所有中间值都准备好了，Reduce作业就开始读取对应分区，并输出统计结果。</p>
<p><strong>6<b>.</b></strong> <strong>用户的权利</strong></p>
<p>用户最主要的任务是实现map和reduce接口，但还有一些有用的接口是向用户开放的<b>。</b></p>
<ul>
<li>an input reader<b>。</b>这个函数会将输入分为M个部分，并且定义了如何从数据中抽取最初的键值对，比如词频的例子中定义文件名和文件内容是键值对<b>。</b></li>
<li>a partition function<b>。</b>这个函数用于将map函数产生的中间键值对映射到一个分区里去，最简单的实现就是将键求哈希再对R取模。 </li>
<li>a compare function<b>。</b>这个函数用于Reduce作业排序，这个函数定义了键的大小关系。 </li>
<li>an output writer<b>。</b>负责将结果写入底层分布式文件系统。 </li>
<li>a combiner function<b>。</b>实际就是reduce函数，这是用于前面提到的优化的，比如统计词频时，如果每个要读一次，因为reduce和map通常不在一台机器，非常浪费时间，所以可以在map执行的地方先运行一次combiner，这样reduce只需要读一次了<b>。</b></li>
<li>map和reduce函数就不多说了。</li>
</ul>
<p><strong>7. MapReduce</strong><strong>的实现</strong></p>
<p>目前MapReduce已经有多种实现，除了谷歌自己的实现外，还有著名的hadoop，区别是谷歌是c++，而hadoop是用java<b>。</b>另外斯坦福大学实现了一个在多核/多处理器、共享内存环境内运行的MapReduce，称为Phoenix（<a href="http://www.fumin.me/?p=110">介绍</a> ），相关的论文发表在07年的HPCA，是当年的最佳论文哦！</p>
<p><b></b></p>
<h3>大数据分析师</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/vlnk/archive/2012/11/14/2770258.html">http://www.cnblogs.com/vlnk/archive/2012/11/14/2770258.html</a>
<p>在整个数据行业里面，ParAccel是久负名气的<b>。</b>他们通过了一些渠道获得不少犯罪数据，并对15000个有犯罪前科的人进行跟踪，从而向执法机构提供了参考性较高的犯罪预测<b>。</b></p>
<p>ParAccel颠覆了Hadoop的神话。ParAccel的CEO Chuck Berger指出，太多创业公司陷入了“大数据=非结构化数据的大数据=Hadoop”的逻辑<b>。</b>除了非结构化数据和半结构化数据以外，结构化数据也在快速增长。</p>
<p>如果你只想做到中级分析师，可以不去理会<b>。</b>但是要成为一名高级分析师，那肯定得有一定深度的研究。一是为了知道针对特定的数据集，选用什么样的算法，如何抽取样本，抽取多大量的样本（样本出问题，整个项目都完蛋），算法适用条件是什么，比如线性回归的：独立性<b>、</b>常方差、正态性，怎么理解，哪些必须满足<b>。</b>这些使用如果不熟悉的话，很容易导致分析出问题。</p>
<p>你能写出针对特定问题的算法，现实中许多问题拥有其他问题一样的共性，也有它自己的个性，某些时候针对个性的东西越强，分析效果越好，这就需要你手写算法解决<b>。</b>获得Netflix 100万推荐算法大奖的绝不可能是封装好的现成算法不是么。另外还有一类商业智能问题，是封装算法解决不了的，这类问题大多见于与地理结合的GIS决策系统，这类系统就要求分析人员有图形算法功底<b>。</b>可见如果你想成为顶级的数据分析师，算法与数据结构的知识必不可少。搜索，排序，树，图之所以经典，是因为它们简单有效而且通用<b>。</b>如果你能把这些算法在数据库里实现，那么你分析技术这方面，确实达到很高的境界了。</p>
<p>作为分析师宽广的知识面必不可少，没事看看心理学<b>、</b>历史、地理、人口统计学（demography），浏览一下知乎，FT中文网什么的，也是不错的。    <br />很多优秀的数据信息图<b>、</b>资料、报告只有英文的，例如：    <br />数据信息图<a href="http://infosthetics.com/">infosthetics.com/</a> <b>、</b><a href="http://flowingdata.com/">flowingdata.com/</a> 、<a href="http://visual.ly/">visual<b>.</b>ly/</a>    <br />资料<a href="http://radar.oreilly.com/">radar.oreilly.com/</a> <b>、</b><a href="http://www.businessinsider.com/">businessinsider.com/..<b>.</b></a>    <br />报告<a href="http://vdisk.weibo.com/s/2YJeC">vdisk.weibo.com/s/2YJeC</a>    <br />国外在数据规划使用展现比我们前行更远，这点是确认无疑的<b>。</b>所以英文阅读流畅的能力对于一个想当优秀分析师的人来说非常重要<b>。</b>我也曾经想过把一些比较不错的文档翻译过来，但因为相当耗时耗力，只能作罢。与其等待别人翻译，不如自己看。</p>
<p><b></b></p>
<h3>微软大数据解决方案</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/bjetsec/archive/2012/11/09/2762671.html">http://www.cnblogs.com/bjetsec/archive/2012/11/09/2762671.html</a>
<p>为了从数据中寻找商业价值，如今的企业面临着越来越多的挑战：首先，新的设备和传感器不断出现，导致数据持续激增和硬件成本迅速下降<b>。</b>如今，更多的企业需要存储TB甚至PB的数据。其次，当客户既以关系型格式存储结构化数据，又存储非结构化数据时（例如WORD或者PDF文件<b>、</b>图像、视频和地理空间数据），数据会更加复杂<b>。</b>事实上，行业分析师证实，超过80%的数据是非结构化数据。最后，客户同样面临着数据处理速度带来的挑战——处理流式数据的企业（例如网站上的点击流）需要实时更新数据来为实时的广告服务或者向用户呈现实时的数据<b>。</b></p>
<p>微软对Big Data已经做了很久的研究：为了呈递高质量的搜索结果，微软在Bing中分析了超过100PB的数据<b>。</b>另外，微软提供了一些解决方案来帮助客户面对处理大数据带来的挑战。在Microsoft® SQL Server® 2008 R2, SQL Server® Fast Track 数据仓库，商业数据仓库和SQL Server® 2008 R2 并行数据仓库中，数据仓库解决方案提供了一个可靠的并且可扩展的平台，该平台可用于在传统数据仓库中存储和分析数据<b>。</b>并行数据仓库（PDW）为客户提供了企业级的性能：处理超过600TB的大量数据。针对技术计算，微软还为LINQ to HPC（高性能计算）提供了分布式的运行时和编程模型。</p>
<p>除了以上提到的传统功能外，为了通过激活任何规模的新数据类型来向所有用户展现提供商业洞察力的版本，微软将Apache HadoopTM做为端到端发展路线的一部分<b>。</b></p>
<h4>微软Big Data<b> </b>解决方案</h4>
<p>微软致力于向所有用户提供任何数据中的商业洞察力，包括非结构化数据中的潜在洞察力<b>。</b>为了完成这个目标，微软将为Windows Server和Windows Azure推出基于分布式的Apache HadoopTM，以此帮助促进它在企业中的应用<b>。</b> 新的基于分布式的Hadoop可以使客户挖掘任何规模的结构化和非结构化数据中的洞察力，并且激活新的数据类型<b>。</b>Hadoop中丰富的洞察力可以和微软商业智能平台无缝整合<b>。</b></p>
<p>关键收益  1 通过轻松的安装和配置以及简化的JavaScript编程，可以对终端用户，IT专家和开发者进行更加广泛的Hadoop访问  2 为企业准备的Hadoop分布式具有更好的安全性，性能并且易于管理  3 通过使用熟悉的软件来拥有突破的洞察力，例如PowerPivot for Excel，SQL Server 分析和报表服务</p>
<p>微软的Big Data解决方案还提供了和其他Hadoop分布式的互操作性，这使客户可以在若干个源中挖掘洞察力<b>。</b></p>
<p> 两个Hadoop连接器：首先，微软提供的2个Hadoop连接器可以使客户在Hadoop和SQL Server或者SQL Server 并行数据仓库之间无缝地移动数据<b>。</b>这两个Hadoop连接器对现有的客户免费提供。  Hive ODBC驱动，附带Excel Hive Add-In：其次，微软提供了新的Hive ODBC驱动和Excel Hive Add-In，这些可以使客户将数据从Hive直接移入Excel或者微软BI工具，例如PowerPivot for Analysis<b>。</b></p>
<h4>为企业准备的Hadoop<b> </b></h4>
<p>为了促进在企业中的应用，微软使Hadoop可以为企业服务，这是通过以下几点来实现的：</p>
<p>1 Active Directory集成：通过在Hadoop中集成Active Directory来提供企业级的安全性 2 高性能：增强Hadoop的性能来提供持续高的数据吞吐量 3 System Center集成：通过集成微软的管理工具来简化Hadoop基础架构的管理，例如System Center 4 BI集成：通过使用Hadoop连接器，允许将关系型和Hadoop型数据集成到企业BI解决方案中<b>。</b> 5 针对Windows Server和Windows Azure，部署选项的灵活性和选择为客户提供了：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o 自由选择：可以选择哪些数据保存在本地而不是云端，因此，客户拥有更多选择&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o 较低的TCO：在云端需要更少的资源来进行Hadoop部署，因此，客户可以减少成本&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o 适合需求的弹性：针对更大的工作负载，您可以添加更多的节点到Windows Azure部署中，因此，这种弹性减少了您的成本<b>。</b>另外，当需求量较大时，Azure的Hadoop部署可以用来扩展本地解决方案&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; o 增长的性能：使计算距离数据更加接近——微软的解决方案可以使客户处理距离产生地更近的数据，无论数据位于本地还是云端<b>。</b></p>
<p>微软做这些是为了维护和现有Hadoop工具的兼容性，例如Pig，Hive和Java<b>。</b>微软的目标是确保运行在Apache Hadoop上的应用程序可以轻松迁移到微软的分布式平台上，这些平台运行在Windows Azure或Windows Server上<b>。</b></p>
<h4>对Hadoop<b> </b>的扩大访问</h4>
<p>微软致力于为用户，开发者和IT专家提供更加广泛的可访问性和可使用性<b>。</b> 通过简化购置，安装和配置过程，新的基于分布式的Hadoop（用于Windows）对于IT专家来说使用起来很容易<b>。</b>借助于Hadoop的智能包和它的工具集，客户只需用几个小时就可以安装和部署完毕Hadoop，而无需几天<b>。</b> 为了使用熟悉的工具来分析Hadoop中的数据，例如Microsoft Excel和获奖的BI客户端（例如PowerPivot for Excel），终端用户可以使用Hive ODBC驱动或者Hive Add-In for Excel<b>。</b></p>
<p>通过实现使用JavaScript编写高性能Map/Reduce程序，微软正在努力使JavaScript成为Big Data中的首选语言<b>。</b>另外，微软的JavaScript控制台将允许用户编写JavaScript Map/Reduce程序，Pig-Latin和浏览器中的Hive查询，以此来执行他们的Hadoop程序<b>。</b>对于这一类的创新，微软希望以此为社会做出了一些贡献。</p>
<h4>突破的洞察力</h4>
<p>通过允许客户将数据库中的关系型数据和Hadoop中的非结构化数据结合起来，微软Big Data解决方案提供了突破的洞察力<b>。</b>针对Windows Server和Windows Azure，基于分布式的Hadoop可以使客户：</p>
<p> 借助于Hive Add-In for Excel，使用熟悉的工具分析Hadoop数据，例如Excel  通过Hive和微软BI工具（例如PowerPivot和PowerView）的集成，减少实施解决方案的时间  通过Hive和前导BI工具（例如SQl Server分析服务和报表服务）的集成，构建企业的BI解决方案，该方案包含了Hadoop数据</p>
<p>Hive ODBC驱动允许客户从Hive中将数据直接移入Microsoft Excel或者SQl Server BI工具中，例如SQL Server 分析服务，报表服务，PowerPivot和针对数据可视化的PowerView<b>。</b>决策者和利益相关者可以将这些洞察力合并到消耗仪表板之中。 正如之前所提到的，微软更远大的目标是，通过提供企业级的基于分布式的Hadoop（在Windows平台上）和允许所有用户从任何数据中挖掘突破的洞察力，使更多的开发者，IT专家和终端用户可以访问Hadoop<b>。</b></p>
<p><b></b></p>
<h3>大数据的关键技术</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/broadview/archive/2012/10/29/2744890.html">http://www.cnblogs.com/broadview/archive/2012/10/29/2744890.html</a>
<p>在大数据时代，传统的数据处理方法还适用吗？</p>
<p><strong>大数据环境下的数据处理需求</strong></p>
<p>大数据环境下数据来源非常丰富且数据类型多样，存储和分析挖掘的数据量庞大，对数据展现的要求较高，并且很看重数据处理的高效性和可用性<b>。</b></p>
<p><strong>传统数据处理方法的不足</strong></p>
<p>传统的数据采集来源单一，且存储<b>、</b>管理和分析数据量也相对较小，大多采用关系型数据库和并行数据仓库即可处理<b>。</b>对依靠并行计算提升数据处理速度方面而言，传统的并行数据库技术追求高度一致性和容错性，根据CAP理论，难以保证其可用性和扩展性<b>。</b></p>
<p>传统的数据处理方法是以处理器为中心，而大数据环境下，需要采取以数据为中心的模式，减少数据移动带来的开销<b>。</b>因此，传统的数据处理方法，已经不能适应大数据的需求！</p>
<p><strong>大数据的处理流程包括哪些环节？每个环节有哪些主要工具？</strong></p>
<p>大数据的基本处理流程与传统数据处理流程并无太大差异，主要区别在于：由于大数据要处理大量<b>、</b>非结构化的数据，所以在各个处理环节中都可以采用MapReduce等方式进行并行处理<b>。</b></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image3.jpg"><img title="Image(3)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(3)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image3_thumb.jpg" width="562" height="257" /></a></p>
<p><strong>大数据技术为什么能提高数据的处理速度？</strong></p>
<p>大数据的并行处理利器——MapReduce</p>
<p>大数据可以通过MapReduce这一并行处理技术来提高数据的处理速度<b>。</b>MapReduce的设计初衷是通过大量廉价服务器实现大数据并行处理，对数据一致性要求不高，其突出优势是具有扩展性和可用性，特别适用于海量的结构化<b>、</b>半结构化及非结构化数据的混合处理。</p>
<p>MapReduce将传统的查询、分解及数据分析进行分布式处理，将处理任务分配到不同的处理节点，因此具有更强的并行处理能力。作为一个简化的并行处理的编程模型，MapReduce还降低了开发并行应用的门槛<b>。</b></p>
<p>MapReduce是一套软件框架，包括Map（映射）和Reduce（化简）两个阶段，可以进行海量数据分割<b>、</b>任务分解与结果汇总，从而完成海量数据的并行处理<b>。</b></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image4.jpg"><img title="Image(4)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(4)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image4_thumb.jpg" width="533" height="333" /></a></p>
<p>MapReduce的工作原理其实是先分后合的数据处理方式<b>。</b>Map即“分解”，把海量数据分割成了若干部分，分给多台处理器并行处理；Reduce即“合并”，把各台处理器处理后的结果进行汇总操作以得到最终结果<b>。</b>如右图所示，如果采用MapReduce来统计不同几何形状的数量，它会先把任务分配到两个节点，由两个节点分别并行统计，然后再把它们的结果汇总，得到最终的计算结果<b>。</b></p>
<p>MapReduce适合进行数据分析<b>、</b>日志分析、商业智能分析、客户营销、大规模索引等业务，并具有非常明显的效果<b>。</b>通过结合MapReduce技术进行实时分析，某家电公司的信用计算时间从33小时缩短到8秒，而MKI的基因分析时间从数天缩短到20分钟<b>。</b></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image5.jpg"><img title="Image(5)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(5)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image5_thumb.jpg" width="498" height="384" /></a></p>
<p>说到这里，再看一看MapReduce与传统的分布式并行计算环境MPI到底有何不同？MapReduce在其设计目的<b>、</b>使用方式以及对文件系统的支持等方面与MPI都有很大的差异，使其能够更加适应大数据环境下的处理需求。</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image6.jpg"><img title="Image(6)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(6)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image6_thumb.jpg" width="562" height="214" /></a></p>
<p><strong>大数据技术在数据采集方面采用了哪些新的方法</strong></p>
<p><strong>系统日志采集方法</strong></p>
<p>很多互联网企业都有自己的海量数据采集工具，多用于系统日志采集，如Hadoop的Chukwa，Cloudera的Flume，Facebook的Scribe等，这些工具均采用分布式架构，能满足每秒数百MB的日志数据采集和传输需求<b>。</b></p>
<p><strong>网络数据采集方法：对非结构化数据的采集</strong></p>
<p>网络数据采集是指通过网络爬虫或网站公开API等方式从网站上获取数据信息<b>。</b>该方法可以将非结构化数据从网页中抽取出来，将其存储为统一的本地数据文件，并以结构化的方式存储。它支持图片、音频<b>、</b>视频等文件或附件的采集，附件与正文可以自动关联。</p>
<p>除了网络中包含的内容之外，对于网络流量的采集可以使用DPI或DFI等带宽管理技术进行处理<b>。</b></p>
<p><strong>其他数据采集方法</strong></p>
<p>对于企业生产经营数据或学科研究数据等保密性要求较高的数据，可以通过与企业或研究机构合作，使用特定系统接口等相关方式采集数据<b>。</b></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image7.jpg"><img title="Image(7)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(7)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image7_thumb.jpg" width="106" height="133" /></a></p>
<p>本文节选自《大数据——大价值<b>、</b>大机遇、大变革(全彩)》</p>
<p>李志刚 主编</p>
<p>电子工业出版社出版</p>
<p><b></b></p>
<h3>大数据平台相关</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/sode/archive/2012/09/25/2701018.html">http://www.cnblogs.com/sode/archive/2012/09/25/2701018.html</a>
<p>尽量减少所有开发者之间同类工作中的重复劳动</p>
<p>引用：<a href="http://www.csdn.net/article/2012-09-24/2810270-Disney">http://www.csdn.net/article/2012-09-24/2810270-Disney</a></p>
<p>Hadoop<b>、</b>NoSQL数据库和其他开源技术</p>
<p>购买缺点：高昂的成本是一个很重要的因素，但是最关键的还是灵活性的问题，这是作出最终决定的根本原因<b>。</b></p>
<p>迪士尼大数据平台是基于Hadoop，Cassandra和MongoDB进行开发的</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image8.jpg"><img title="Image(8)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(8)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image8_thumb.jpg" width="504" height="283" /></a></p>
<p><strong>大数据在迪斯尼扮演的角色:</strong></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image.png"><img title="Image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image_thumb.png" width="504" height="238" /></a></p>
<p><strong>数据管理平台：</strong></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image1.png"><img title="Image(1)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(1)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image1_thumb.png" width="504" height="235" /></a></p>
<p><strong>数据管理平台目标：</strong></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image2.png"><img title="Image(2)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(2)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image2_thumb.png" width="504" height="263" /></a></p>
<p><strong>收集，搜索，分析应用数据：</strong></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image3.png"><img title="Image(3)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(3)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image3_thumb.png" width="504" height="282" /></a></p>
<p><strong>使用案例的演化：</strong></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image4.png"><img title="Image(4)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(4)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image4_thumb.png" width="504" height="270" /></a></p>
<p><strong>推荐引擎：</strong></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image5.png"><img title="Image(5)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(5)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image5_thumb.png" width="504" height="274" /></a></p>
<p><b></b></p>
<h3>大数据从“小”做起</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/tuhkjet/archive/2012/05/30/2526102.html">http://www.cnblogs.com/tuhkjet/archive/2012/05/30/2526102.html</a>
<p>转自：<a href="http://www.cnw.com.cn/weekly/htm2012/20120525_247610.shtml">http://www.cnw.com<b>.</b>cn/weekly/htm2012/20120525_247610.shtml</a></p>
<p>任何一个时代或者模式的兴起，都离不开与之相关的Killer App，比如，C/S时代的SAP ERP，互联网 1<b>.</b>0 时代的门户，以及互联网 2.0时代的搜索和SNS等。那么在当今云计算时代有哪些Killer App呢？当然，首先想到的肯定是以VMware 和Amazon EC2为代表的<a href="http://www.cnw.com.cn/server-virtualization"><strong>虚拟化</strong></a> 和相关IaaS服务，除此之外，新近崛起的<a href="http://search.cnw.com.cn/searchview.aspx?searchtype=Content&#38;searchstr=%B4%F3%CA%FD%BE%DD">大数据</a> 绝对也是云计算时代的Killer App之一<b>。</b>不仅类似百度、阿里，以及腾讯这样的互联网巨头有相关的应用需求，而且根据笔者平时与客户的接触，发现有很多普通<a href="http://search.cnw.com.cn/searchview.aspx?searchtype=Content&#38;searchstr=%D6%D0%D0%A1%C6%F3%D2%B5">中小企业</a> ， 特别是中型的互联网和物联网企业，在大数据方面的场景也有很多<b>。</b>本文将首先给大家介绍一下在笔者眼中的大数据，以及大数据的意义和特点，再介绍一下大数据 的常见处理流程，之后将会和大家分享一下笔者如何帮助一些中小企业实施大数据相关的解决方案，也就是大数据如何从“小”做起<b>。</b></p>
<p><strong>什么是大数据？</strong></p>
<p>过去计算机产生的数据较简单，基本上都是一笔笔事务，总量虽大，但整体增长幅度都还是可控的<b>。</b>比如传统的金融企业，经常使 用几台大型机就能管理其所有的业务数据，而最近几年，由于以平板、智能手机和传感器为代表的智能设备越来越多，这些设备生成的数据更是远远地超过我们的想 象。据IDC的统计，全球数字信息在未来几年将呈现惊人增长，预计到2020年总量将是现在的44倍<b>。</b>据另外一份数据显示，全球 90% 的数据都是在过去两年中生成的，并且每年以50%的速度增长。每天，遍布世界各个角落的传感器<b>、</b>移动设备、在线交易和社交网络都会产生PB级别的数据<b>。</b>每 个月，全球网友会发布10多亿条 Twitter 信息和300多亿条 Facebook 信息。那么这些大数据的存在有什么价值和意义呢？</p>
<p><strong>大数据的意义</strong></p>
<p>笔者个人和一些朋友一直觉得大数据就好比一口油井，因为里面蕴含着非常丰富的价值，如果企业能有效地利用其内部存储的海量 数据，那么将会改善其自身的产品和服务，从而提升客户和受众的体验，在大数据时代获取竞争优势<b>。</b>并且随着本身分析和挖掘技术的不断提升，可以在之前的基础 上提供新的决策模式，从而支持管理者进行快速和精确的决策，这样就能够超越对手，抢占市场先机<b>。</b></p>
<p>以下的内容会通过几个行业的案例来了解一下大数据有哪些意义和作用？</p>
<p>互联网企业：有一些客户主要是做网络舆情或者网络广告方面的业务，他们每天都会处理和收集TB级别的日志或者网页信 息，结构化和非结构化数据都有，他们就是通过分析这些数据来为其客户提供价值<b>。</b>比如分析一下一个男性护肤品广告是在世界杯期间投放好，还是在亚洲杯期间播 出好？在电子商务方面，eBay是个很好的例子<b>。</b>其分析平台每天处理的数据量高达100PB，超过了纳斯达克交易所每天的数据处理量。为了准确分析用户的 购物行为，eBay定义了超过500种类型的数据，对顾客的行为进行跟踪分析，并且通过这些分析促进eBay自身的业务创新和利润增长<b>。</b></p>
<p>智能电网：我们有一个合作伙伴，他们是做智能电网相关的解决方案。对那些电网而言，如果无法准确预估实际电力的使用情 况，将会使电网要求电厂发出过量的电力，虽然这些过量电力可以通过某种模式进行保存，但是大量的电力浪费已不可避免<b>。</b>而通过他们的智能电网解决方案，每隔 一刻钟会采集一个省几千万用户的用电数据，之后他们会根据这些数据来精确分析用户的用电模型，最后通过这个用电模型来优化电力生产，从而有效地减少电力资 源的浪费<b>。</b></p>
<p>车联网：在车联网方面，有一个客户在一个城市有几十万台基于Android的终端，而这些终端每隔一段时间都会发送具 体位置的GPS消息给后端的数据集群，接着这些集群会分析这些海量的GPS信息，分析出哪些路段在什么时候比较堵，之后将这些非常有价值的信息不断地推送 给客户，从而帮助用户减少在路上所消耗的时间<b>。</b></p>
<p>医疗行业：在医疗行业，大数据的用例有很多。首先，通过分析大量的病例信息，将有效地帮助医生诊断病情；其次，假设在 一个病人身体的多个节点加入探针设备，而且每个探针每天会采集GB级别关于人体细胞和血液运行状态的数据，之后计算集群可以根据这些数据来进行分析，这样 能更精确地判断病因，从而让医生对病人进行更具针对性的治疗<b>。</b></p>
<p>机器学习：这方面最出名的例子莫过于最近很流行的Siri，它后台有一个庞大的HBase集群来对类似语言这样的文本 数据进行分析和管理，从而使Siri变成一位越来越老练的个人助手，为iPhone 4S的用户提供了日期提醒<b>、</b>天气预报和饭店建议等服务。除此之外，还有IBM的Watson，它通过一个基于Hadoop UIMA框架的集群来挖掘海量的文本信息来实现一定程度的人工智能，并在美国著名的知识问答节目Jeopardy中战胜多位出色的人类选手<b>。</b></p>
<p>国家安全：这方面最出名的例子莫过于美国的联邦情报局（CIA）。在过去10年中，他们通过无人侦察机收集了大量阿富汗与地理相关的视频资料，之后通过分析这些海量视频资料，来对极具危害性的恐怖组织团伙进行定位<b>。</b></p>
<p><strong>大数据的特点</strong></p>
<p>大数据，不仅有“大”这个特点，它还有很多其他特色<b>。</b>在这方面，业界厂商都有各自独特的见解，但是总体而言，我觉得可以用 “4V+1C”来概括。“4V+1C分别代表了Variety（多样化）、Volume（海量）<b>、</b>Velocity（快速）、Vitality（灵活）， 以及Complexity（复杂）这五个单词。</p>
<p>Variety（多样化）：大数据一般包括以事务为代表的结构化数据，以网页为代表的半结构化数据和以视频和语音信息为代表的非结构化等多类数据，并且它们的处理和分析方式区别很大<b>。</b></p>
<p>Volume（海量）：通过各种智能设备产生了大量的数据，PB级别可谓是常态<b>。</b>笔者接触的一些客户每天处理的数据量都在几十GB、几百GB左右，估计国内大型互联网企业每天的数据量已经接近TB级别<b>。</b></p>
<p>Velocity（快速）：大数据要求快速处理，因为有些数据存在时效性。比如电商的数据，假如今天数据的分析结果要等到明天才能得到，那么将会使电商很难做类似补货这样的决策，从而导致这些数据失去了分析的意义<b>。</b></p>
<p>Vitality（灵活）：在互联网时代，和以往相比，企业的业务需求更新的频率加快了很多，那么相关大数据的分析和处理模型必须快速地适应新的业务需求<b>。</b></p>
<p>Complexity（复杂）：虽然传统的BI已经很复杂了，但是由于前面4个V的存在，使得针对大数据的处理和分析更艰巨，并且过去那套基于关系型数据库的BI开始有点不合时宜了，同时也需要根据不同的业务场景，采取不同的处理方式和工具<b>。</b></p>
<p><strong>大数据的常见处理流程</strong></p>
<p>前面已经介绍了处理大数据的必要性和特点，接着将谈到如何处理大数据，特别是常见的处理流程<b>。</b>具体的大数据处理方法其实有很多，但是根据长时间的实践，笔者总结了一个基本的大数据处理流程（图1），并且这个流程应该能够对大家理顺大数据的处理有所帮助<b>。</b></p>
<p>整个处理流程可以概括为四步，分别是采集、导入和预处理<b>、</b>统计和分析，以及挖掘。</p>
<p>采集：大数据的采集是指利用多个数据库来接收发自客户端（Web<b>、</b>App或者传感器形式等）的数据，并且用户可以通过 这些数据库来进行简单的查询和处理工作。比如，电商会使用传统的关系型数据库MySQL和Oracle等来存储每一笔事务数据<b>。</b>除此之外，Redis和 MongoDB这样的NoSQL数据库也常用于数据的采集。</p>
<p>在大数据的采集过程中，其主要特点和挑战是并发数高<b>。</b>因为有可能会有成千上万的用户来进行访问和操作，比如火车票售票网站 和淘宝，它们并发的访问量在峰值时能达到上百万次，所以需要在采集端部署大量数据库才能支撑<b>。</b>同时，如何在这些数据库之间进行负载均衡和分片，的确是需要 深入的思考和设计。</p>
<p>导入/预处理：虽然采集端本身会有很多数据库，但是如果要对这些海量数据进行有效的分析，还是应该将这些来自前端的数 据导入到一个集中的大型分布式数据库，或者分布式存储集群，并且可以在导入基础上做一些简单的清洗和预处理工作<b>。</b>也有一些用户会在导入时使用来自 Twitter的Storm来对数据进行流式计算，满足部分业务的实时计算需求<b>。</b></p>
<p>导入与预处理过程的特点和挑战主要是导入的数据量大，每秒钟的导入量经常会达到百兆，甚至千兆级别<b>。</b></p>
<p>统计/分析：统计与分析主要利用分布式数据库，或者分布式计算集群来对存储于其内的海量数据进行普通的分析和分类汇总 等，以满足大多数常见的分析需求<b>。</b>在这方面，一些实时性需求会用到EMC 的GreenPlum、Oracle的Exadata，以及基于MySQL的列式存储Infobright等<b>。</b>而一些批处理，或者基于半结构化数据的需求 可以使用Hadoop。</p>
<p>统计与分析这部分的主要特点和挑战是分析涉及的数据量大，其对系统资源，特别是I/O会有极大的占用<b>。</b></p>
<p>挖掘：与前面统计和分析过程不同的是，数据挖掘一般没有什么预先设定好的主题，主要是在现有数据上面进行基于各种算法 的计算，从而起到预测（Predict）的效果，实现一些高级别数据分析的需求<b>。</b>比较典型的算法有用于聚类的K-Means、用于统计学习的SVM和用于 分类的Naive Bayes，主要使用的工具有Hadoop的Mahout等<b>。</b></p>
<p>该过程的特点和挑战主要是用于挖掘的算法很复杂，并且计算涉及的数据量和计算量都很大<b>。</b>还有，常用数据挖掘算法都以单线程为主。</p>
<p><strong>如何从“小”做起？</strong></p>
<p>由于笔者平时与中小企业的接触非常频繁，虽然技术方案与实际的问题相关，但却很难在一篇文章当中详尽地道来<b>。</b>除了上述的基本处理流程之外，以下会将一些基本的从“小”做起的思路作阐述：</p>
<p>1<b>.</b>认识自己的不足<b>。</b>主要是在技术、人力和财力等方面不仅无法与Google和Amazon这样的国外巨头比肩，而且与国内三大互联网BAT（百度<b>、</b>阿里巴巴和腾讯）也是无法比肩的，所以需要深刻地去认识。</p>
<p>2<b>.</b>明确分析自己的需求。下面是几个常见的需求选项：</p>
<p>■ 数据类型：是结构化，半结构化，还是非结构化为主；</p>
<p>■ 数据大小：内部数据级别是TB级别<b>、</b>PB级别或者PB以上的级别；</p>
<p>■ 读写量级：比如每小时写入的数据达到GB级别，或者每天写入达到TB级别等；</p>
<p>■ 读写比例：是写为主，还是以读为主；</p>
<p>■ 并发数：大致的每秒并发数；</p>
<p>■ 一致性：只接受强一致性，或者可以接受最终一致性和弱一致性；</p>
<p>■ 延迟度：最高能容忍的延迟度是多少，是10毫秒，100毫秒，还是1秒；</p>
<p>■ 分析的复杂度：需不需要引入较复杂的数据挖掘算法等<b>。</b></p>
<p>3.要灵活使用现有的工具。首先，推荐使用一些开源，或者是价格可以承受的商业软件<b>。</b>虽然个人并不排斥自建，但是一定要有具体的商业价值，并且最好是在现有工具上画龙点睛，而不是从头开始构建；其次，工具方面应与具体的场景相关，在不同的场景要使用不同的工具<b>。</b></p>
<p>4<b>.</b>尽量不要走平台思路，应以具体的应用和场景为主。因为建一个平台有很多附加的成本和设计，比如，Amazon的云平台是通过至少五年时间构建而成<b>。</b>特别是项目初期，不建议走平台这个方向，而是应脚踏实地地以具体的商业场景为主。</p>
<p>5<b>.</b>找准切入点。最好是找到一个技术难度小，并且有一定商业价值的场景来做大数据技术落地的试点，并不断地进行测试和迭代来验证，而不是一味求复杂<b>、</b>求大，这样比较容易说服企业管理层来进行长期的投入和支持。</p>
<p>最后想强调一下，“罗马不是一天建成的”<b>。</b>无论是Google的用于大数据处理的基础设施，还是国内淘宝的“云梯”，都是一步步通过不断的积累和实践来完成的<b>。</b>所以中小企业应该贯彻“大处着眼<b>、</b>小处着手”的方针来持续地验证和推进。</p>
<p><b></b></p>
<h3>大数据三两事之大数据不是只有Hadoop</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/vlnk/archive/2012/11/14/2770222.html">http://www.cnblogs.com/vlnk/archive/2012/11/14/2770222.html</a>
<p><small>2012-11-14 16:55 by vlnk, 38 阅读, 0 评论, <a>收藏</a>, <a href="http://www.cnblogs.com/vlnk/admin/EditPosts.aspx?postid=2770222">编辑</a></small></p>
<p>来源：商业价值</p>
<p>这里主要讲大数据应用场景以及和传统方案的区别等，希望能够帮大家理清些大数据的概念性问题<b>。</b></p>
<p><a href="http://image.tianjimedia.com/uploadImages/2012/296/7F13FTDRLZ1Q_image001.jpg"><img title="Image(9)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(9)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image9.jpg" width="248" height="176" /></a></p>
<p><a href="http://image.tianjimedia.com/uploadImages/2012/296/M3AA3XKANH55_image002.jpg"><img title="Image(10)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(10)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image10.jpg" width="248" height="175" /></a></p>
<p>上图中，精确数据是指每条数据都有着准确的含义和确定的价值，表达很明确的信息<b>。</b>比如，制造业的一条生产记录<b>。</b>传统关系型数据库以处理这类数据。并基于此类数据通过复杂逻辑分析推演出业务价值为强项。</p>
<p>大数据时代数据的特点是大量模糊数据。单条数据没有确定的价值和明确的含义<b>。</b>比如，一个网页的点击记录。Hadoop的优势是能对海量模糊数据进行汇总排序比对等操作，把他们变成有意义的数据，再通过海量的样本比对等方式归纳产生业务价值<b>。</b></p>
<p>所以，从本质上说这是两种针对不同场景不同对象的不同技术。如果要采用Hadoop去取代RISC架构的数据库，BI应用<b>。</b>那么必须打破原来企业经典的沿用几十年的数据结构，重新定义数据模型，表结构等等。还是我以前提过的，就是要重新从头练另一门武功<b>。</b>但那样下来效率是否一定就会比以前高，效果是否一定比以前好，从我几个项目试验的结果来看也并不乐观。</p>
<p>但是，在某些情况下大数据技术也能比RISC架构更好的解决一些传统的结构化数据问题，比如ETL<b>。</b>在一些行业里，ETL工作往往需要一个很长的处理流程。利用Map/Reduce技术可以大大缩短ETL的工作流程，提高效率，而且随着数据量的不断增长，这种优势会越来越明显<b>。</b>所以说，是否用Hadoop去尝试替代原先的RISC架构，关键还是看数据量是否够大以及数据类型是否多样化<b>。</b></p>
<p><a href="http://image.tianjimedia.com/uploadImages/2012/296/00999KYEC9F0_image003.jpg"><img title="Image(11)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(11)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image11.jpg" width="248" height="175" /></a></p>
<p>以上这张图取自BI Reasrch<b>。</b>以数据查询的延迟性需求为纵轴，数据量和结构化程度为横轴列出了Hadoop技术和传统关系型即RDBMS的应用场景区别<b>。</b><b>Hadoop</b> 之所以会出现，其实就是为了应付<b>海量的非结构化数据的离线分析</b>的<b>。</b>所以其应用场景也基本是以此类为强项，即数据量大，结构化程度低，分析的实时性要求不高。当然随着其技术的发展，外沿通过不同组件如Hive的补充有所拓展<b>。</b>但要其完全取代原先的RDBMS基本是不可能的事情。</p>
<p>正如第一张图所说，大数据时代，没有一种方案是可以包打天下的<b>。</b>企业内部未来也必将是多种方案并存来处理各类不同类型数据的环境。下面试着将目前数据库的几类应用场景进行分类，同时列出了每一类国内外的一些解决方案名字<b>。</b>国外的方案我为了简单起见，只列出特性比较鲜明的。没有写Exadata是因为它有点属于混合方案，把它简单定位在一个领域有点不太合适<b>。</b>而且国内可以和它具备相同类型的方案也没有，就先不提了。</p>
<p>关于国内方案，我列出的是仅限于我知道的或是合作过的方案提供商，当然还有很多遗漏的<b>。</b>当然也有些我认为特色不鲜明没有什么核心技术的也就不提了。这里只列出他们的名字和专注领域类型，详细的一些介绍就不在这里贴出来了，反正他们都可以在新浪微博里找到，呵呵<b>。</b></p>
<p><a href="http://image.tianjimedia.com/uploadImages/2012/296/W889U064U5ZV_image004.jpg"><img title="Image(12)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(12)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image12.jpg" width="248" height="174" /></a></p>
<p>当然，上图所列出的场景所针对的解决方案也不是唯一的<b>。</b>一些场景是多个方案都可以胜任的。比如Mongo DB也可以做MAP/Reduce的工作。Hive能够为Hadoop体系提供SQL的接口等等<b>。</b></p>
<p>最后，再谈一下我对国内大数据解决方案提供商的一些总体感觉。当然，这些观点只是在我接触过的几个方案中得出的，并不代表国内总体的情况<b>。</b></p>
<p><a href="http://image.tianjimedia.com/uploadImages/2012/296/RT7MHT87B4M2_image005.jpg"><img title="Image(13)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(13)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image13.jpg" width="248" height="159" /></a></p>
<p>关于适宜客户群，我上面说的也只是我个人的一些建议<b>。</b>我觉得，这些国内解决方案的供应商，需要通过一些实际企业应用案例实施的磨练，以及一些合作伙伴的帮助，才能真正走向成熟，走向商用，去挑战那些国外的知名产品<b>。</b>我觉得从目前来看，技术不是问题，路线方向也没有什么错误。关键是 对自身的规划和技术走向商用，走向产品化流程化的运作能力<b>。</b>我也真心希望国内的那些大企业大公司能够给国内的这些有技术有想法的方案提供商一些机会，让他们能够积累经验，成长壮大<b>。</b></p>
<p><b></b></p>
<h3>架构分享--微博架构的回顾</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/scotoma/archive/2011/06/11/2078295.html">http://www.cnblogs.com/scotoma/archive/2011/06/11/2078295.html</a>
<p>最近这段时间工作上的变动有点大,五月份也闲了下来一直在思考自己接下来的方向,并对这一年来的学习进行总结<b>.</b></p>
<p>对于架构上的深入是这一年多来最主要的沉淀,从小公司到大公司,从小流量的站点的架构设计到大流量乃至超大流量的架构设计,记录下来,分享出来<b>。</b></p>
<p>在分享自己的那点料之前,先来分享下大神Tim Yang的关于微博的架构设计：</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image14.jpg"><img title="Image(14)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(14)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image14_thumb.jpg" width="1774" height="1109" /></a></p>
<p>这里主要从 存储和接口角度来讲</p>
<p>对于大流量系统的架构设计，对于写入方面是特别需要注意的，基本上现在遇到的系统都是对于主数据库的写入，然后对于从数据库实现流量的分发<b>。</b></p>
<p>对于存储，记得公司老大说过，对于BD的项目的架构如果从设计上可以达到20PB的存储规模不出什么大的问题，就说明这个架构设计是合格的<b>。</b></p>
<p>对于存储，新浪微博使用了redis的部分功能,主要用在用户信息方面的使用,现在只有单机设计,但是对于现在的单机完全可以提供大量的内存比如32G以上，完全可以达到存储数据的要求<b>。</b></p>
<p>对于MYSQL这里所涉及到的就是设计规范和分库分表，最大的感触是大家为了便利就直接用自增的ID来进行，对于唯一ID的设计也是我一直注意的，因为唯一的设计是涉及到全局的<b>。</b></p>
<p>将将自己最近总结的PHP和微博架构方面：</p>
<p>1<b>.</b>进行快速开发的过程中，订好规范，按照规范执行是非常的重要的，涉及到的沟通会比较少，其实和其他人联调是很费时间的<b>。</b></p>
<p>2<b>.</b>对于性能跟踪方面使用使用xhprof来跟踪PHP的执行过程及性能问题，可以初略的估计出来。</p>
<p>3<b>.</b>对于核心代码的复用程度及核心的代码量的把握，核心要灵活可扩展而且保持小</p>
<p>4<b>.</b>技术选型比如对于使用memcache扩展和memcached的扩展还是很重要的</p>
<p>5<b>.</b>对于代码的目录结构和命名还是挺重要的,php的autoload不要搜索太多的目录会比较好</p>
<p>6<b>.</b>考虑下工具类的复用，一直在造轮子每次都重写一遍，这个不是很郁闷的事情，怎么样让这些类不要耦合的太紧？设计很重要</p>
<p>7<b>.</b>对于有些服务是PHP做起来不合适的,比如spam模块的高危词过滤还是用C/C++模块来处理比较好。</p>
<p>8<b>.</b>微博技术的应用Inbox/Outbox/Timeline/Following/Follows/Feed/MQS</p>
<p>9<b>.</b>推荐算法和消息推送的处理，各种高并发的处理</p>
<p><b></b></p>
<h3>高并发高流量的大型网站架构设计</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/canxuexiecheng/articles/3178498.html">http://www.cnblogs.com/canxuexiecheng/articles/3178498.html</a>
<p>作者写的太好了，看了好几天，这篇文章对于初学者有很大的帮助和好处<b>。</b></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160; 文章摘自：http://www.codesky.net/article/200911/118350.html&#160; 大家可以前去观看<b>。</b></p>
<p>Web2.0的兴起，掀起了互联网新一轮的网络 创业大潮。以用户为导向的新网站建设概念，细分了网站功能和用户群，不仅成功的造就了一大批新生的网站，也极大的方便了上网的人们<b>。</b>但Web2.0以用户 为导向的理念，使得新生的网站有了新的特点——高并发，高流量，数据量大，逻辑复杂等，对网站建设也提出了新的要求<b>。</b>    <br />本文围绕高并发高流量的网站架构设计问题，主要研究讨论了以下内容：&#160; <br />&#160;&#160;&#160; 首 先在整个网络的高度讨论了使用镜像网站，CDN内容分发网络等技术对负载均衡带来的便利及各自的优缺点比较<b>。</b>然后在局域网层次对第四层交换技术，包括硬件 解决方案F5和软件解决方案LVS，进行了简单的讨论。接下来在单服务器层次，本文着重讨论了单台服务器的Socket优化，硬盘级缓存技术，内存级缓存 技术，CPU与IO平衡技术（即以运算为主的程序与以数据读写为主的程序搭配部署），读写分离技术等<b>。</b>在应用层，本文介绍了一些大型网站常用的技术，以及 选择使用该技术的理由。最后，在架构的高度讨论了网站扩容，容错等问题。&#160; <br />本文以理论与实践相结合的形式，结合作者实际工作中得到的经验，具有较广泛的适用性<b>。</b>    <br />&#160;&#160;&#160; 1 引言&#160; <br />&#160;&#160;&#160; 1.1 互联网的发展&#160; <br />&#160;&#160;&#160; 最 近十年间，互联网已经从一个单纯的用于科研的，用来传递静态文档的美国内部网络，发展成了一个应用于各行各业的，传送着海量多媒体及动态信息的全球网络<b>。</b> 从规模上看，互联网在主机数、带宽<b>、</b>上网人数等方面几乎一直保持着指数增长的趋势，2006年7月，互联网上共有主机439，286，364 台，WWW 站点数量达到 96，854，877个 ［1］<b>。</b>全球上网人口在2004 年达到 7 亿 2900万 ［2］，中国的上网人数 在 2006 年 12 月达到了约 1亿3700 万［3］<b>。</b>另一方面，互联网所传递的内容也发生了巨大的变化，早期互联网以静态、文本的公共信息为主 要内容，而目前的互联网则传递着大量的动态<b>、</b>多媒体及人性化的信息，人们不仅可以通过 互联网阅读到动态生成的信息，而且可以通过它使用电子商务、即时通 信<b>、</b>网上游戏等交互性很强的服务。因此，可以说互联网已经不再仅仅是一个信息共享网络，而已经成为了一个无所不在的交互式服务的平台<b>。</b>    <br />1.2 互联网网站建设的新趋势&#160; <br />&#160;&#160;&#160; 互联网不断扩大的规模，日益增长的用户群，以及web2<b>.</b>0［4］的兴起，对互联网网站建设提出了新的要求:&#160; <br />&#160;&#160;&#160; 高 性能和高可扩展性。2000 年 5 月，访问量排名世界第一（统计数据来源［5］）的Yahoo ［6］声称其日页浏览数达到 6 亿 2500 万， 即每秒约 30，000 次HTTP 请求(按每个页面浏览平均产生 4 次请求计算) <b>。</b>这样大规模的访问量对服务的性能提出了非常高的要求。更为重要 的是， 互联网受众的广泛性，使得成功的互联网服务的访问量增长潜力和速度非常大，因此服务系统必须具有非常好的可扩展性，以应付将来可能的服务增长<b>。</b>    <br />支 持高度并发的访问。高度并发的访问对服务的存储与并发能力提出了很高的要求，当前主流的超标量和超流水线处理器能处理的并发请求数是有限的，因为随着并发 数的上升，进程调度的开销会很快上升<b>。</b>互联网广域网的本质决定了其访问的延迟时间较长，因此一个请求完成时间也较长，按从请求产生到页面下载完成 3 秒 计算， Yahoo 在 2000 年 5 月时平均有 90，000 个并发请求<b>。</b>而且对于较复杂的服务，服务器往往要维护用户会话的信息，例如一个互 联网网站如果每天有 100 万次用户会话，每次 20分钟的话，那平均同时就会有约 14000 个并发会话<b>。</b>    <br />高 可用性。互联网服务的全球性决定了其每天 24 小时都会有用户访问，因此任何服务的停止都会对用户造成影响<b>。</b>而对于电子商务等应用，暂时的服务中止则意 味着客户的永久失去及大量的经济损失，例如ebay.com［7］1999 年 6 月的一次 22小时的网站不可访问，对此网站的 380万用户的忠诚 度造成巨大影响，使得 Ebay 公司不得不支付了近500万美元用于补偿客户的损失，而该公司的市值同期下降了 40 亿美元［8］<b>。</b>因此，关键互联网 应用的可用性要求非常高<b>。</b>    <br />1.3 新浪播客的简介&#160; <br />&#160;&#160;&#160; 以 YouTube［9］为代表的微视频分享网站近来方兴未艾，仅2006年一年，国内就出现近百家仿YouTube的微视频分享网站［10］，试图复制 YouTube的成功模式<b>。</b>此类网站可以说是Web2.0概念下的代表网站，具有Web2<b>.</b>0网站所有典型特征：高并发，高流量，数据量大，逻辑复杂，用 户分散等等。新浪［11］作为国内最大的门户网站，在2005年成功运作新浪博客的基础上，于2006年底推出了新浪播客服务<b>。</b>新浪播客作为国内门户网站 中第一个微视频分享服务的网站，依靠新浪网站及新浪博客的巨大人气资源，在推出后不到半年的时间内，取得了巨大的成功：同类网站中上传视频数量第一<b>、</b>流量 增长最快、用户数最多［12］，所有这些成绩的取得的背后，是巨大的硬件投入，良好的架构支撑和灵活的应用层软件设计。&#160; <br />2<b>.</b>1 镜像网站技术&#160; <br />镜 像网站是指将一个完全相同的站点放到几个服务器上，分别有自己的URL，这些服务器上的网站互相称为镜像网站［13］<b>。</b>镜像网站和主站并没有太大差别，或 者可以视为主站的拷贝<b>。</b>镜像网站的好处是：如果不能对主站作正常访问（如服务器故障，网络故障或者网速太慢等），仍能通过镜像服务器获得服务<b>。</b>不便之处 是：更新网站内容的时候，需要同时更新多个服务器；需要用户记忆超过一个网址，或需要用户选择访问多个镜像网站中的一个，而用户选择的，不一定是最优的<b>。</b> 在用户选择的过程中，缺乏必要的可控性。&#160; <br />在 互联网发展的初期，互联网上的网站内容很少，而且大都是静态内容，更新频率底<b>。</b>但因为服务器运算能力低，带宽小，网速慢，热门网站的访问压力还是很大。镜 像网站技术在这种情况下作为一种有效解决方案，被广泛采用<b>。</b>随着互联网的发展，越来越多的网站使用服务器端脚本动态生成内容，同步更新越来越困难，对可控 性要求越来越高，镜像技术因为不能满足这类网站的需要，渐渐的淡出了人们的视线<b>。</b>但有一些大型的软件下载站，因为符合镜像网站的条件——下载的内容是静态 的，更新频率较低，对带宽，速度要求又比较高，如国外的SourceForge （<a href="http://www.sourceforge.net/">http://www.SourceForge.net</a> ，著名开源软件托管网站），Fedora（<a href="http://fedoraproject.org/">http://fedoraproject.org</a> ，RedHat赞助的Linux发行版），国内的华军软件园（<a href="http://www.on%3cwbr%3elinedown.net/">http://www.onlinedown.net</a> ），天空软件站（<a href="http://www.skycn.com/">http://www.skycn.com</a> ）等，还在使用这项技术（图1）<b>。</b>    <br />图1 上图：天空软件站首页的镜像选择页面&#160; <br />下图：SourceForge下载时的镜像选择页面&#160; <br />在网站建设的过程中，可以根据实际情况，将静态内容作一些镜像，以加快访问速度，提升用户体验<b>。</b>    <br />2<b>.</b>2 CDN内容分发网络&#160; <br />&#160;&#160;&#160; CDN 的全称是Content Delivery Network，即内容分发网络<b>。</b>其目的是通过在现有的互联网中增加一层新的网络架构，将网站的内容发布到最 接近用户的网络“边缘”，使用户可以就近取得所需的内容，分散服务器的压力，解决互联网拥挤的状况，提高用户访问网站的响应速度<b>。</b>从而解决由于网络带宽 小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题［14］。&#160; <br />CDN 与镜像网站技术的不同之处在于网站代替用户去选择最优的内容服务器，增强了可控制性<b>。</b>CDN其实是夹在网页浏览者和被访问的服务器中间的一层镜像或者说缓 存，浏览者访问时点击的还是服务器原来的URL地址，但是看到的内容其实是对浏览者来说最优的一台镜像服务器上的页面缓存内容<b>。</b>这是通过调整服务器的域名 解析来实现的<b>。</b>使用CDN技术的域名解析服务器需要维护一个镜像服务器列表和一份来访IP到镜像服务器的对应表。当一个用户的请求到来的时候，根据用户的 IP，查询对应表，得到最优的镜像服务器的IP地址，返回给用户<b>。</b>这里的最优，需要综合考虑服务器的处理能力，带宽，离访问者的距离远近等因素。当某个地 方的镜像网站流量过大，带宽消耗过快，或者出现服务器，网络等故障的时候，可以很方便的设置将用户的访问转到另外一个地方（图2）<b>。</b>这样就增强了可控制 性。&#160; <br />图2 CDN原理示意图&#160; <br />CDN 网络加速技术也有它的局限性<b>。</b>首先，因为内容更新的时候，需要同步更新多台镜像服务器，所以它也只适用于内容更新不太频繁，或者对实时性要求不是很高的网 站；其次，DNS解析有缓存，当某一个镜像网站的访问需要转移时，主DNS服务器更改了IP解析结果，但各地的DNS服务器缓存更新会滞后一段时间，这段 时间内用户的访问仍然会指向该服务器，可控制性依然有不足<b>。</b>    <br />目前，国内访问量较高的大型网站如新浪、网易等的资讯频道，均使用CDN网络加速技术（图3），虽然网站的访问量巨大，但无论在什么地方访问，速度都会很快<b>。</b>但论坛，邮箱等更新频繁，实时性要求高的频道，则不适合使用这种技术。&#160; <br />2.1 镜像网站技术&#160; <br />镜 像网站是指将一个完全相同的站点放到几个服务器上，分别有自己的URL，这些服务器上的网站互相称为镜像网站［13］<b>。</b>镜像网站和主站并没有太大差别，或 者可以视为主站的拷贝。镜像网站的好处是：如果不能对主站作正常访问（如服务器故障，网络故障或者网速太慢等），仍能通过镜像服务器获得服务<b>。</b>不便之处 是：更新网站内容的时候，需要同时更新多个服务器；需要用户记忆超过一个网址，或需要用户选择访问多个镜像网站中的一个，而用户选择的，不一定是最优的<b>。</b> 在用户选择的过程中，缺乏必要的可控性。&#160; <br />在 互联网发展的初期，互联网上的网站内容很少，而且大都是静态内容，更新频率底<b>。</b>但因为服务器运算能力低，带宽小，网速慢，热门网站的访问压力还是很大。镜 像网站技术在这种情况下作为一种有效解决方案，被广泛采用。随着互联网的发展，越来越多的网站使用服务器端脚本动态生成内容，同步更新越来越困难，对可控 性要求越来越高，镜像技术因为不能满足这类网站的需要，渐渐的淡出了人们的视线<b>。</b>但有一些大型的软件下载站，因为符合镜像网站的条件——下载的内容是静态 的，更新频率较低，对带宽，速度要求又比较高，如国外的SourceForge （<a href="http://www.sourceforge.net/">http://www.SourceForge.net</a> ，著名开源软件托管网站），Fedora（<a href="http://fedoraproject.org/">http://fedoraproject.org</a> ，RedHat赞助的Linux发行版），国内的华军软件园（<a href="http://www.on%3cwbr%3elinedown.net/">http://www.onlinedown.net</a> ），天空软件站（<a href="http://www.skycn.com/">http://www.skycn.com</a> ）等，还在使用这项技术（图1）<b>。</b>    <br />图1 上图：天空软件站首页的镜像选择页面&#160; <br />下图：SourceForge下载时的镜像选择页面&#160; <br />在网站建设的过程中，可以根据实际情况，将静态内容作一些镜像，以加快访问速度，提升用户体验<b>。</b>    <br />2.2 CDN内容分发网络&#160; <br />&#160;&#160;&#160; CDN 的全称是Content Delivery Network，即内容分发网络<b>。</b>其目的是通过在现有的互联网中增加一层新的网络架构，将网站的内容发布到最 接近用户的网络“边缘”，使用户可以就近取得所需的内容，分散服务器的压力，解决互联网拥挤的状况，提高用户访问网站的响应速度<b>。</b>从而解决由于网络带宽 小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题［14］<b>。</b>    <br />CDN 与镜像网站技术的不同之处在于网站代替用户去选择最优的内容服务器，增强了可控制性<b>。</b>CDN其实是夹在网页浏览者和被访问的服务器中间的一层镜像或者说缓 存，浏览者访问时点击的还是服务器原来的URL地址，但是看到的内容其实是对浏览者来说最优的一台镜像服务器上的页面缓存内容<b>。</b>这是通过调整服务器的域名 解析来实现的。使用CDN技术的域名解析服务器需要维护一个镜像服务器列表和一份来访IP到镜像服务器的对应表<b>。</b>当一个用户的请求到来的时候，根据用户的 IP，查询对应表，得到最优的镜像服务器的IP地址，返回给用户。这里的最优，需要综合考虑服务器的处理能力，带宽，离访问者的距离远近等因素<b>。</b>当某个地 方的镜像网站流量过大，带宽消耗过快，或者出现服务器，网络等故障的时候，可以很方便的设置将用户的访问转到另外一个地方（图2）<b>。</b>这样就增强了可控制 性<b>。</b>    <br />图2 CDN原理示意图&#160; <br />CDN 网络加速技术也有它的局限性<b>。</b>首先，因为内容更新的时候，需要同步更新多台镜像服务器，所以它也只适用于内容更新不太频繁，或者对实时性要求不是很高的网 站；其次，DNS解析有缓存，当某一个镜像网站的访问需要转移时，主DNS服务器更改了IP解析结果，但各地的DNS服务器缓存更新会滞后一段时间，这段 时间内用户的访问仍然会指向该服务器，可控制性依然有不足<b>。</b>    <br />目前，国内访问量较高的大型网站如新浪、网易等的资讯频道，均使用CDN网络加速技术（图3），虽然网站的访问量巨大，但无论在什么地方访问，速度都会很快<b>。</b>但论坛，邮箱等更新频繁，实时性要求高的频道，则不适合使用这种技术。&#160; <br />图3 新浪网使用ChinaCache CDN服务<b>。</b>    <br />ChinaCache的服务节点全球超过130个，&#160; <br />其中中国节点超过80个，&#160; <br />覆盖全国主要6大网络的主要省份［15］<b>。</b>    <br />2<b>.</b>3 应用层分布式设计&#160; <br />新 浪播客为了获得CDN网络加速的优点，又必须避免CDN的不足，在应用层软件设计上，采取了一个替代的办法<b>。</b>新浪播客提供了一个供播放器查询视频文件地址 的接口<b>。</b>当用户打开视频播放页面的时候，播放器首先连接查询接口，通过接口获得视频文件所在的最优的镜像服务器地址，然后再到该服务器去下载视频文件<b>。</b>这 样，用一次额外的查询获得了全部的控制性，而这次查询的通讯流量非常小，几乎可以忽略不计<b>。</b>CDN中由域名解析获得的灵活性也保留了下来：由接口程序维护 镜像网站列表及来访IP到镜像网站的对应表即可<b>。</b>镜像网站中不需要镜像所有的内容，而是只镜像更新速度较慢的视频文件<b>。</b>这是完全可以承受的。&#160; <br />2.4 网络层架构小结&#160; <br />从整个互联网络的高度来看网站架构，努力的方向是明确的：让用户就近取得内容，但又要在速度和可控制性之间作一个平衡<b>。</b>对于更新比较频繁内容，由于难以保持镜像网站之间的同步，则需要使用其他的辅助技术。&#160; <br />3 交换层架构&#160; <br />3.1 第四层交换简介&#160; <br />按 照OSI［16］七层模型，第四层是传输层<b>。</b>传输层负责端到端通信，在IP协议栈中是TCP和UDP所在的协议层。TCP和UDP数据包中包含端口号 （port number），它们可以唯一区分每个数据包所属的协议和应用程序<b>。</b>接收端计算机的操作系统根据端口号确定所收到的IP包类型，并把它交给合 适的高层程序。IP地址和端口号的组合通常称作“插口（Socket）”<b>。</b>    <br />第 四层交换的一个简单定义是：它是一种传输功能，它决定传输不仅仅依据MAC地址(第二层网桥)或源/目标IP地址(第三层路由)，而且依据IP地址与 TCP/UDP (第四层) 应用端口号的组合（Socket）［17］<b>。</b>第四层交换功能就像是虚拟IP，指向实际的服务器<b>。</b>它传输的数据支持多种协议， 有HTTP、FTP、NFS、Telnet等<b>。</b>    <br />以HTTP协议为例，在第四层交换中为每个服务器组设立一个虚拟IP（Virtue IP，VIP），每组服务器支持某一个或几个域名<b>。</b>在域名服务器（DNS）中存储服务器组的VIP，而不是某一台服务器的真实地址<b>。</b>    <br />当 用户请求页面时，一个带有目标服务器组的VIP连接请求发送给第四层交换机<b>。</b>第四层交换机使用某种选择策略，在组中选取最优的服务器，将数据包中的目标 VIP地址用实际服务器的IP地址取代，并将连接请求传给该服务器<b>。</b>第四层交换一般都实现了会话保持功能，即同一会话的所有的包由第四层交换机进行映射 后，在用户和同一服务器间进行传输［18］<b>。</b>    <br />第四层交换按实现分类，分为硬件实现和软件实现<b>。</b>    <br />3.2 硬件实现&#160; <br />第 四层交换的硬件实现一般都由专业的硬件厂商作为商业解决方案提供<b>。</b>常见的有Alteon［19］，F5［20］等。这些产品非常昂贵，但是能够提供非常优 秀的性能和很灵活的管理能力<b>。</b>Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了［21］。鉴于条件关系，这里不展开讨论<b>。</b>    <br />3.3 软件实现&#160; <br />第 四层交换也可以通过软件实现，不过性能比专业硬件稍差，但是满足一定量的压力还是可以达到的，而且软件实现配置起来更灵活<b>。</b> 软件四层交换常用的有 Linux上的LVS（Linux Virtual Server），它提供了基于心跳（heart beat）的实时灾难应对解决方案，提高了系统的鲁 棒性，同时提供了灵活的VIP配置和管理功能，可以同时满足多种应用需求［22］<b>。</b>    <br />4 服务器优化&#160; <br />4<b>.</b>1 服务器整体性能考虑&#160; <br />对 于价值昂贵的服务器来说，怎样配置才能发挥它的最大功效，又不至于影响正常的服务，这是在设计网站架构的时候必须要考虑的<b>。</b>常见的影响服务器的处理速度的 因素有：网络连接，硬盘读写，内存空间，CPU速度<b>。</b>如果服务器的某一个部件满负荷运转仍然低于需要，而其他部件仍有能力剩余，我们将之称为性能瓶颈。服 务器想要发挥最大的功效，关键的是消除瓶颈，让所有的部件都被充分的利用起来<b>。</b>    <br />4.2 Socket优化&#160; <br />以 标准的 GNU/Linux 为例<b>。</b>GNU/Linux 发行版试图对各种部署情况都进行优化，这意味着对具体服务器的执行环境来说，标准的发行版可能并 不是最优化的［23］<b>。</b>GNU/Linux 提供了很多可调节的内核参数，可以使用这些参数为服务器进行动态配置，包括影响 Socket 性能的一些重 要的选项<b>。</b>这些选项包含在 /proc 虚拟文件系统中。这个文件系统中的每个文件都表示一个或多个参数，它们可以通过 cat 工具进行读取，或使 用 echo 命令进行修改<b>。</b>这里仅列出一些影响TCP/IP 栈性能的可调节内核参数［24］：&#160; <br />/proc/sys/net/ipv4/tcp_window_scaling “1”（1表示启用该选项，0表示关闭，下同） 启用 RFC［25］ 1323［26］ 定义的 window scaling；要支持超过 64KB 的窗口，必须启用该值<b>。</b>    <br />/proc /sys/net/ipv4/tcp_sack “1”启用有选择的应答（Selective Acknowledgment），通过有选择地应答乱序接 收到的报文来提高性能（这样可以让发送者只发送丢失的报文段）；对于广域网通信来说，这个选项应该启用，但是这也会增加对 CPU 的占用<b>。</b>    <br />/proc/sys/net/ipv4/tcp_timestamps “1” 以一种比重发超时更精确的方法（参阅 RFC 1323）来启用对 RTT 的计算；为了实现更好的性能应该启用这个选项<b>。</b>    <br />/proc /sys/net/ipv4/tcp_mem “24576 32768 49152” 确定 TCP 栈应该如何反映内存使用；每个值的单位都是内存页 （通常是 4KB）<b>。</b>第一个值是内存使用的下限。第二个值是内存压力模式开始对缓冲区使用应用压力的上限<b>。</b>第三个值是内存上限。超过这个上限时可以将报文 丢弃，从而减少对内存的使用。&#160; <br />/proc /sys/net/ipv4/tcp_wmem “4096 16384 131072” 为自动调优定义每个 socket 使用的内存<b>。</b>第一个值是 为 socket 的发送缓冲区分配的最少字节数。第二个值是默认值（该值会被 wmem_default 覆盖），缓冲区在系统负载不重的情况下可以增 长到这个值<b>。</b>第三个值是发送缓冲区空间的最大字节数（该值会被 wmem_max 覆盖）。&#160; <br />/proc/sys/net/ipv4/tcp_westwood “1” 启用发送者端的拥塞控制算法，它可以维护对吞吐量的评估，并试图对带宽的整体利用情况进行优化；对于 WAN 通信来说应该启用这个选项<b>。</b>    <br />与 其他调优努力一样，最好的方法实际上就是不断进行实验。具体应用程序的行为、处理器的速度以及可用内存的多少都会影响到这些参数对性能作用的效果<b>。</b>在某些 情况中，一些认为有益的操作可能恰恰是有害的（反之亦然）。因此，需要逐一试验各个选项，然后检查每个选项的结果，最后得出最适合具体机器的一套参数<b>。</b>    <br />如果重启了 GNU/Linux 系统，设置的内核参数都会恢复成默认值<b>。</b>为了将所设置的值作为这些参数的默认值，可以使用 /etc/rc.local 文件，在系统每次启动时自动将这些参数配置成所需要的值<b>。</b>    <br />在检测每个选项的更改带来的效果的时候，GNU/Linux上有一些非常强大的工具可以使用：&#160; <br />ping 这是用于检查主机的可用性的最常用的工具，也可以用于计算网络带宽延时<b>。</b>    <br />traceroute 打印连接到特定网络主机所经过的一系列路由器和网关的路径（路由），从而确定每个 hop 之间的延时<b>。</b>    <br />netstat 确定有关网络子系统、协议和连接的各种统计信息<b>。</b>    <br />tcpdump 显示一个或多个连接的协议级的报文跟踪信息，其中包括时间信息，可以使用这些信息来研究不同协议的报文时间<b>。</b>    <br />Ethereal 以一个易于使用的图形化界面提供 tcpump （报文跟踪）的信息，支持报文过滤功能<b>。</b>    <br />iperf 测量 TCP 和 UDP 的网络性能；测量最大带宽，并汇报延时和数据报的丢失情况<b>。</b></p>
<p>4<b>.</b>3 硬盘级缓存&#160; <br />硬盘级别的缓存是指将需要动态生成的内容暂时缓存在硬盘上，在一个可接受的延迟时间范围内，同样的请求不再动态生成，以达到节约系统资源，提高网站承受能力的目的<b>。</b>Linux环境下硬盘级缓存一般使用Squid［27］<b>。</b>    <br />Squid 是一个高性能的代理缓存服务器。和一般的代理缓存软件不同，Squid用一个单独的<b>、</b>非模块化的、I/O驱动的进程来处理所有的客户端请求<b>。</b>它接受来自客 户端对目标对象的请求并适当地处理这些请求。比如说，用户通过浏览器想下载（即浏览）一个web页面，浏览器请求Squid为它取得这个页面<b>。</b>Squid 随之连接到页面所在的原始服务器并向服务器发出取得该页面的请求。取得页面后，Squid再将页面返回给用户端浏览器，并且同时在Squid本地缓存目录 里保存一份副本<b>。</b>当下一次有用户需要同一页面时，Squid可以简单地从缓存中读取它的副本，直接返回给用户，而不用再次请求原始服务器<b>。</b>当前的 Squid可以处理HTTP， FTP， GOPHER， SSL和WAIS等协议<b>。</b>    <br />Squid 默认通过检测HTTP协议头的Expires和 Cache-Control字段来决定缓存的时间<b>。</b>在实际应用中，可以显式的在服务器端脚本中输出 HTTP头，也可以通过配置apache的mod_expires模块，让apache自动的给每一个网页加上过期时间<b>。</b>对于静态内容，如图片，视频文 件，供下载的软件等，还可以针对文件类型（扩展名），用 Squid 的 refresh_pattern 来指定缓存时间<b>。</b>    <br />Squid 运 行的时候，默认会在硬盘上建两层hash目录，用来存储缓存的Object<b>。</b>它还会在内存中建立一个Hash Table，用来记录硬盘中Object分 布的情况。如果Squid配置成为一个Squid集群中的一个的话，它还会建立一个 Digest Table(摘要表)，用来存储其它 Squid 上 的Object摘要<b>。</b>当用户端想要的资料本地硬盘上没有时，可以很快的知道应该去集群中的哪一台机器获得。在硬盘空间快要达到配置限额的时候，可以配置使 用某种策略（默认使用LRU：Least Recently Used-最近最少用）删除一些Object，从而腾出空间［28］［29］<b>。</b>    <br />集 群中的Squid Server 之间可以有两种关系：第一种关系是：Child 和 Parent<b>。</b>当 Child Squid Server 没有资 料时，会直接向 Parent Squid Server 要资料，然后一直等，直到 Parent 给它资料为止<b>。</b> 第二种关系 是：Sibling 和 Sibling。当 Squid Server 没有资料时，会先向 Sibling 的 Squid Server 要资料， 如果 Sibling 没资料，就跳过它向 Parent 要或直接上原始网站去拿<b>。</b>    <br />默 认配置的Squid，没有经过任何优化的时候，一般可以达到 50% 的命中率［30］（图4）<b>。</b>如果需要，还可以通过参数优化，拆分业务，优化文件系统 等办法，使得Squid达到 90% 以上的缓存命中率<b>。</b> Squid处理TCP连接消耗的服务器资源比真正的HTTP服务器要小的多，当Squid分担 了大部分连接，网站的承压能力就大大增强了<b>。</b>    <br />4 某网站使用MRTG工具检测到的Squid命中率&#160; <br />蓝线表示Squid的流量，绿色部分表示Apache流量&#160; <br />4<b>.</b>4 内存级缓存&#160; <br />内存级别的缓存是指将需要动态生成的内容暂时缓存在内存里，在一个可接受的延迟时间范围内，同样的请求不再动态生成，而是直接从内存中读取<b>。</b>Linux环境下内存级缓存Memcached［31］是一个不错的选择。    <br />Memcached 是danga.com（运营Live Journal［32］的技术团队）开发的一套非常优秀的分布式内存对象缓存系统，用于在动态系统中减少数据库负 载，提升性能<b>。</b>和 Squid 的前端缓存加速不同，它是通过基于内存的对象缓存来减少数据库查询的方式改善网站的性能，而其中最吸引人的一个特性就是支 持分布式部署；也就是说可以在一群机器上建立一堆 Memcached 服务，每个服务可以根据具体服务器的硬件配置使用不同大小的内存块，这样，理论上 可以建立一个无限大的基于内存的缓存系统<b>。</b>    <br />Memcached 是 以守护程序方式运行于一个或多个服务器中，随时接受客户端的连接操作，客户端可以由各种语言编写，目前已知的客户端 API 包括 Perl/PHP /Python/Ruby/Java/C#/C 等等[附录1]<b>。</b>客户端首先与 Memcached 服务建立连接，然后存取对象。每个被存取的对象都有 一个唯一的标识符 key，存取操作均通过这个 key 进行，保存的时候还可以设置有效期<b>。</b>保存在 Memcached 中的对象实际上是放置在内存中 的，而不是在硬盘上。Memcached 进程运行之后，会预申请一块较大的内存空间，自己进行管理，用完之后再申请一块，而不是每次需要的时候去向操作 系统申请<b>。</b>Memcached将对象保存在一个巨大的Hash表中，它还使用NewHash算法来管理Hash表，从而获得进一步的性能提升<b>。</b>所以当分配 给Memcached的内存足够大的时候，Memcached的时间消耗基本上只是网络Socket连接了［33］<b>。</b>    <br />Memcached 也有它的不足。首先它的数据是保存在内存当中的，一旦服务进程重启（进程意外被关掉，机器重启等），数据会全部丢失。其次Memcached以root权 限运行，而且Memcached本身没有任何权限管理和认证功能，安全性不足<b>。</b>第一条是Memcached作为内存缓存服务使用无法避免的，当然，如果内 存中的数据需要保存，可以采取更改Memcached的源代码，增加定期写入硬盘的功能<b>。</b>对于第二条，我们可以将Memcached服务绑定在内网IP 上，通过Linux防火墙进行防护<b>。</b>    <br />4.5 CPU与IO均衡&#160; <br />在 一个网站提供的所有功能中，有的功能可能需要消耗大量的服务器端IO资源，像下载，视频播放等，而有的功能则可能需要消耗大量的服务器CPU资源，像视频 格式转换，LOG统计等<b>。</b>在一个服务器集群中，当我们发现某些机器上CPU和IO的利用率相差很大的时候，例如CPU负载很高而IO负责很低，我们可以考 虑将该服务器上的某些耗CPU资源的进程换成耗IO的进程，以达到均衡的目的<b>。</b>均衡每一台机器的CPU和IO消耗，不仅可以获得更充分的服务器资源利用， 而且还能够支持暂时的过载，遇到突发事件，访问流量剧增的时候， 实现得体的性能下降 (Graceful performance degradation)［34］，而不是立即崩溃<b>。</b>    <br />4.6 读写分离&#160; <br />如 果网站的硬盘读写性能是整个网站性能提升的一个瓶颈的话，可以考虑将硬盘的读，写功能分开，分别进行优化<b>。</b>在专门用来写的硬盘上，我们可以在Linux下 使用软件RAID-0（磁盘冗余阵列0级）［35］。RAID-0在获得硬盘IO提升的同时，也会增加整个文件系统的故障率——它等于RAID中所有驱动 器的故障率之和<b>。</b>如果需要保持或提高硬盘的容错能力，就需要实现软件RAID-1，4或5，它们能在某一个（甚至几个）磁盘驱动器故障之后仍然保持整个文 件系统的正常运行［36］，但文件读写效率不如RAID-0<b>。</b>而专门用来读的硬盘，则不用如此麻烦，可以使用普通的服务器硬盘，以降低开销。&#160; <br />一 般的文件系统，会综合考虑各种大小和格式的文件的读，写效率，因而对特定的文件读或写的效率不是最优<b>。</b>如果有必要，可以通过选择文件系统，以及修改文件系 统的配置参数来达到对特定文件的读或写的效率最大化。比如说，如果文件系统中需要存储大量的小文件，则可以使用ReiserFS［37］来替代Linux 操作系统默认的ext3系统，因为ReiserFS是基于平衡树的文件系统结构，尤其对于大量文件的巨型文件系统，搜索速度要比使用局部的二分查找法的 ext3快<b>。</b> ReiserFS里的目录是完全动态分配的，因此不存在ext3中常见的无法回收巨型目录占用的磁盘空间的情况<b>。</b>ReiserFS里小文件 （&#60; 4K）可以直接存储进树，小文件读取和写入的速度更快，树内节点是按字节对齐的，多个小文件可共享同一个硬盘块，节约大量空间<b>。</b>ext3使用 固定大小的块分配策略，也就是说，不到4K的小文件也要占据4K的空间，导致的空间浪费比较严重［38］<b>。</b> 但ReiserFS对很多Linux内核支持 的不是很好，包括2.4<b>.</b>3、2.4.9 甚至相对较新的 2<b>.</b>4.16，如果网站想要使用它，就必须要安装与它配合的较好的2.4.18内核——一般管 理员都不是很乐意使用太新的内核，因为在它上面运行的软件，都还没有经过大量的实践测试，也许有一些小的bug还没有被发现，但对于服务器来说，再小的 bug也是不能接受的<b>。</b>ReiserFS还是一个较为年轻的，发展迅速的文件系统，它相对于ext3来说有一个很大的缺陷就是，每次ReiserFS文件 系统升级的时候，必须完全重新格式化整个磁盘分区<b>。</b>所以在选择使用的时候，需要权衡取舍［39］<b>。</b>    <br />5 应用程序层优化&#160; <br />5.1 网站服务器程序的选择&#160; <br />经 统计［40］，当前互联网上有超过50%的网站主机使用Apache［41］服务器程序<b>。</b> Apache是开源界的首选Web服务器，因为它的强大和可 靠，而且适用于绝大部分的应用场合。但是它的强大有时候却显得笨重，配置文件复杂得让人望而生畏，高并发情况下效率不太高<b>。</b>而轻量级的Web服务器 Lighttpd［42］却是后起之秀，基于单进程多路复用技术，其静态文件的响应能力远高于Apache<b>。</b> Lighttpd对PHP的支持也很好，还 可以通过Fastcgi方式支持其他的语言，比如Python等<b>。</b> 虽然Lighttpd是轻量级的服务器，功能上不能跟Apache比，某些复杂应用无 法胜任，但即使是大部分内容动态生成的网站，仍免不了会有一些静态元素，比如图片<b>、</b>JS脚本<b>、</b>CSS等等，可以考虑将Lighttpd放在Squid的前 面，构成 Lighttpd-&#62;Squid-&#62;Apache的一条处理链，Lighttpd在最前面，专门处理静态内容的请求，把动态内容请 求通过Proxy模块转发给Squid，如果Squid中有该请求的内容且没有过期，则直接返回给Lighttpd<b>。</b>新请求或者过期的页面请求交由 Apache中的脚本程序来处理<b>。</b>经过Lighttpd和Squid的两级过滤，Apache需要处理的请求大大减少，减少了Web应用程序的压力<b>。</b>同时 这样的构架，便于把不同的处理分散到多台计算机上进行，由Lighttpd在前面统一分发<b>。</b>    <br />在 这种架构下，每一级都是可以进行单独优化的，比如Lighttpd可以采用异步IO方式，Squid可以启用内存来缓存，Apache可以启用 MPM（Multi -Processing Modules，多道处理模块）等，并且每一级都可以使用多台机器来均衡负载，伸缩性好<b>。</b>    <br />著名视频分享网站YouTube就是选择使用Lighttpd作为网站的前台服务器程序<b>。</b>    <br />5.2 数据库选择&#160; <br />MySQL［43］是一个快速的、多线程、多用户和健壮的SQL数据库服务器，支持关键任务<b>、</b>重负载系统的使用，是最受欢迎的开源数据库管理系统，是Linux下网站开发的首选。它由MySQL AB开发<b>、</b>发布和提供支持。&#160; <br />MySQL数据库能为网站提供：&#160; <br />高性能<b>。</b>MySQL支持海量，快速的数据库存储和读取。还可以通过使用64位处理器来获取额外的一些性能，因为MySQL在内部里很多时候都使用64位的整数处理<b>。</b>    <br />易用性。MySQL的核心是一个小而快速的数据库<b>。</b>它的快速连接，快速存取和安全可靠的特性使MySQL非常适合在互联网站上使用。&#160; <br />开放性。MySQL提供多种后台存储引擎的选择，如MyISAM， Heap， InnoDB，Berkeley Db等<b>。</b>缺省格式为MyISAM。 MyISAM 存储引擎与磁盘兼容的非常好［44］。&#160; <br />支 持企业级应用<b>。</b>MySQL有一个用于记录数据改变的二进制日志。因为它是二进制的，这一日志能够快速地将数据的更改从一台机器复制 （replication）到另一台机器上<b>。</b>即使服务器崩溃，这一二进制日志也能够保持完整。这一特性通常被用来搭建数据库集群，以支持更大的流量访问要 求［30］（图5）<b>。</b>    <br />5 MySQL主辅库模式集群示意&#160; <br />MySQL也有一些它自身的缺陷，如缺乏图形界面，缺乏存储过程， 还不支持触发器，参照完整性，子查询和数据表视图等，但这些功能都在开发者的TO-DO列表当中<b>。</b>这就是开源的力量：你永远可以期待更好<b>。</b>    <br />国外的Yahoo!，国内的新浪，搜狐等很多大型商业网站都使用MySQL 作为后台数据库<b>。</b>对于一般的网站系统，无论从成本还是性能上考虑，MySQL应该是最佳的选择。&#160; <br />5<b>.</b>3 服务器端脚本解析器的选择&#160; <br />目前最常见的服务器端脚本有三种：ASP(Active Server Pages)，JSP(Java Server Pages)，PHP (Hypertext Preprocessor)［45］［46］<b>。</b>    <br />ASP 全名Active Server Pages，以及它的升级ASP.NET，是微软公司出品的一个WEB服务器端的开发环境，利用它可以产生和运行动态 的<b>、</b>交互的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript（C#）作为自己的开发语言。 但因为只能运行在Windows环境下，这 里我们不讨论它<b>。</b>    <br />PHP 是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C，Java和Perl语言的语法， 并耦合PHP自己的特性，使WEB开发者能够快速地写出动态 生成页面<b>。</b>它支持目前绝大多数数据库。PHP也是开源的，它的发行遵从GPL开源协议，你可以从 PHP官方站点(<a href="http://www.php.net/">http://www.php.net</a> )自由下载到它的二进制安装文件及全部的源代码<b>。</b>如果在Linux平台上与MySQL搭配使用，PHP是最佳的选择。&#160; <br />JSP 是Sun公司推出的新一代站点开发语言，是Java语言除Java应用程序和Java Applet之外的第三个应用<b>。</b>Jsp可以在Serverlet和 JavaBean的支持下，完成功能强大的站点程序。 作为采用Java技术家族的一部分，以及Java 2（企业版体系结构）的一个组成部分，JSP技 术拥有Java技术带来的所有优点，包括优秀的跨平台性，高度可重用的组件设计，健壮性和安全性等，能够支持高度复杂的基于Web的应用<b>。</b>    <br />除 了这三种常见的脚本之外，在Linux下我们其实还有很多其他的选择：Python（Google使用），Perl等，如果作为CGI调用，那么可选择范 围就更广了<b>。</b>使用这些不太常见的脚本语言的好处是，它们对于某些特殊的应用有别的脚本所不具有的优势；不好的地方是，这些脚本语言在国内使用的人比较少， 当碰到技术上的问题的时候，能找到的资料也较少<b>。</b>    <br />5.4 可配置性&#160; <br />在大型网站开发过程中，不管使用什么技术，网站的可配置性是必须的<b>。</b>在网站的后期运营过程中，肯定会有很多的需求变更。如果每一次的需求变更都会导致修改源代码，那么，这个网站的开发可以说是失败的<b>。</b>    <br />首 先，也是最重要的一点，功能和展示必须分开。PHP和JSP都支持模板技术，如PHP的Smarty，Phplib，JSP的 JSTL（JSP Standard Tag Library）等<b>。</b>核心功能使用脚本语言编写，前台展示使用带特殊标签的HTML，不仅加快了开发速度， 而且方便以后的维护和升级［47］<b>。</b>    <br />其次，对于前台模板，一般还需要将页面的头，尾单独提取出来，页面的主体部分也按模块或者功能拆分<b>。</b>对CSS，JS等辅助性的代码，也建议以单独的文件形式存放。这样不仅方便管理，修改，而且还可以在用户访问的时候进行缓存，减少网络流量，减轻服务器压力<b>。</b>    <br />再次，对于核心功能脚本，必须将与服务器相关的配置内容，如数据库连接配置，脚本头文件路径等，与代码分离开<b>。</b>尤其当网站使用集群技术，CDN加速等技术的时候，每一台服务器上的配置可能都会不一样<b>。</b>如果不使用配置文件，则需要同时维护几份不同的代码，很容易出错。&#160; <br />最后，应该尽量做到修改配置文件后能实时生效，避免修改配置文件之后需要重启服务程序的情况<b>。</b>    <br />5.5 封装和中间层思想&#160; <br />在功能块层次，如果使用JSP，基于纯面向对象语言Java的面向对象思想，类似数据库连接，会话管理等基本功能都已经封装成类了<b>。</b>如果使用PHP，则需要在脚本代码中显式的封装，将每一个功能块封装成一个函数，一个文件或者一个类。&#160; <br />在 更高的层次，可以将网站分为表示层，逻辑层，持久层，分别进行封装，做到当某一层架构发生变化时，不会影响到其他层<b>。</b>比如新浪播客在一次升级的时候，将持 久层的数据库由原来的集中式改为分布式架构，因为封装了数据库连接及所有操作[附录2]，做到了不修改任何上层代码，平稳的实现了过渡<b>。</b>近来流行的MVC 架构，将整个网站拆分成Model（模型/逻辑）、View（视图/界面）、Controller（控制/流程）三个部分，而且有很多优秀的代码框架可供 选择使用， 像JSP的Structs，Spring，PHP的php.MVC， Studs 等<b>。</b>使用现成的代码框架，可以使网站开发事半功倍。&#160; <br />6 扩容、容错处理&#160; <br />6.1 扩容&#160; <br />一 个大型网站，在设计架构的时候，必须考虑到以后可能的容量扩充<b>。</b>新浪播客在设计时充分地考虑了这一点。对于视频分享类网站来说，视频存储空间消耗是巨大 的。新浪播客在主存储服务器上，采用配置文件形式指定每一个存储盘柜上存储的视频文件的ID范围。当前台服务器需要读取一个视频的时候，首先通过询问主存 储服务器上的接口获得该视频所在的盘柜及目录地址，然后再去该盘柜读取实际的视频文件<b>。</b>这样如果需要增加存储用的盘柜，只需要修改配置文件即可，前台程序 丝毫不受影响。&#160; <br />新浪播客采用MySQL数据库集群，在逻辑层封装了所有的数据库连接及操作<b>。</b>当数据库存储架构发生改变的时候，如增加一台主库，将某些数据表独立成库，增加读取数据用的从库等，都只需要修改封装了的数据库操作类，上层代码不用修改<b>。</b>    <br />新浪播客的前台页面服务器使用F5公司的硬件第四层交换机，网通，电信分别导向不同的虚拟IP，每一个虚拟IP后面又有多个服务器提供服务<b>。</b>当访问流量增大的时候，可以很方便往虚拟IP后面增加服务器，分担压力。&#160; <br />6<b>.</b>2 容错&#160; <br />对于商业性网站来说，可用性是非常重要的。7*24的访问要求网站具有很强的容错能力<b>。</b>错误包括网络错误，服务器错误以及应用程序错误。&#160; <br />2006 年12月27日台湾东部外海发生里氏7<b>.</b>6级地震，造成途径台湾海峡的多条海底电缆中断，导致许多国外网站，像MSN， NBA， Yahoo！（英文主 站）等国内无法访问，但也有例外，以Google为代表的在国内建设有分布式数据节点的很多网站却仍然可以访问<b>。</b>虽然说地震造成断网是不可抗原因，但如果 在这种情况下网站仍然可以访问，无疑能给网站用户留下深刻的印象<b>。</b>这件事情给大型商业网站留下的教训是：网站需要在用户主要分布区域保持数据存在，以防止 可能的网络故障。&#160; <br />对 于服务器错误，一般采取冗余设计的方法来避免<b>。</b>对于存储服务器（主要是负责写入的服务器），可以使用RAID（冗余磁盘阵列）；对于数据库（主要是负责写 入的主库），可以采用双主库设计［30］；对于提供服务的前台，则可以使用第四层交换的集群，由多台服务器同时提供服务，不仅分担了流量压力，同时还可以 互相作为备份<b>。</b>    <br />在应用层程序中，也要考虑“用户友好”的出错设计。典型例子如HTTP 404 出错页面，程序内部错误处理，错误返回提示等，尽可能的做到人性化。    <br />7 总结及展望&#160; <br />7<b>.</b>1 总结&#160; <br />对 于一个高并发高流量的网站来说，任何一个环节的瓶颈都会造成网站性能的下降，影响用户体验，进而造成巨大的经济损失<b>。</b>在全互联网层面，应该使用分布式设 计，缩短网站与用户的网络距离，减少主干网上的流量，以及防止在网络意外情况下网站无法访问的问题<b>。</b>在局域网层面，应该使用服务器集群，一方面可以支撑更 大的访问量，另一方面也作为冗余备份，防止服务器故障导致的网站无法访问<b>。</b>在单服务器层面，应该配置操作系统，文件系统及应用层软件，均衡各种资源的消 耗，消除系统性能瓶颈，充分发挥服务器的潜能<b>。</b>在应用层，可以通过各种缓存来提升程序的效率，减少服务器资源消耗（图6）。另外，还需要合理设计应用层程 序，为以后的需求变更，扩容做好准备<b>。</b>    <br />在每一个层次，都需要考虑容错的问题，严格消除单点故障，做到无论应用层程序错误，服务器软件错误，服务器硬件错误，还是网络错误，都不影响网站服务<b>。</b>    <br />7.2展望&#160; <br />当 前Linux环境下有著名的LAMP（Linux＋Apache＋MySQL＋PHP/PERL/PYTHON）网站建设方案，但只是针对一般的中小网站 而言<b>。</b>对于高并发高流量的大型商业网站，还没有一个完整的，性价比高的解决方案。除去服务器，硬盘，带宽等硬件投资外，还需要花费大量的预算和时间精力在 软件解决方案上。&#160; <br />随 着互联网的持续发展，Web2<b>.</b>0的兴起，在可以预见的未来里，互联网的用户持续增多，提供用户参与的网站不断增加，用户参与的内容日益增长，越来越多的 网站的并发量，访问量会达到一个新的高度，这就会促使越来越多的个人，公司以及研究机构来关注高并发高流量的网站架构问题<b>。</b>就像Web1<b>.</b>0成就了无数中 小网站，成就了LAMP一样，Web2.0注定也会成就一个新的，高效的，成本较低的解决方案<b>。</b>这个方案应该包括透明的第三方CDN网络加速服务，价格低 廉的第四层甚至更高层网络交换设备，优化了网络性能的操作系统，优化了读写性能，分布式，高可靠的文件系统，揉合了内存，硬盘等各个级别缓存的HTTP服 务器，更为高效的服务器端脚本解析器，以及封装了大部分细节的应用层设计框架<b>。</b></p>
<p><b></b></p>
<h3>关于流量升高导致TIME_WAIT增加</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/sidesky/archive/2013/05/14/3078371.html">http://www.cnblogs.com/sidesky/archive/2013/05/14/3078371.html</a>
<p>有个应用就是每次都会去查一个接口，接口返回用户的信息数据，从而展现不同的页面效果<b>。</b>大致流程如下</p>
<p>应用APP（电信）-&#62; memcache -&#62;电信custom接口 -&#62;master-db</p>
<p>应用APP（网通）-&#62; 网通custom接口 -&#62; slave-db</p>
<p>接口环境是php（cgi） + nginx，接口已经运行很久，未出过异常</p>
<p>应用访问custom接口，然后接口去查数据库（数据库是主从复制，数据同步，各自机房读各自的数据库，写的话都写master-db）</p>
<p>有一点，就是电信机房是有memcache层的，而网通机房一直没有（考虑到网通机房流量不高，并且机房cache不同步，从上线起就网通机房一直未使用cache）</p>
<p>有一次上线，这个上线的版本有个改动就是把电信机房的memcache也取消了，然后 电信机房流量暴增</p>
<p>看pv统计：</p>
<p>$ “find /path -name ‘access*’&#124;xargs wc -l&#124;awk ‘END{print$1}’” fe</p>
<p>cmd :find /path ‘access*’&#124;xargs wc -l&#124;awk ‘END{print }’</p>
<p>type:fe</p>
<p><strong>server1</strong></p>
<p><strong>2倍A total（28号是Atotal）</strong></p>
<p><strong>———–</strong></p>
<p><strong>server2</strong></p>
<p><strong>2</strong>倍B（28号是B total）</p>
<p><strong>———–</strong></p>
<p><strong>server3</strong></p>
<p><strong>C 总计</strong></p>
<p><strong>———–</strong></p>
<p><strong>server4</strong></p>
<p><strong>D total</strong></p>
<p><strong>…<b>.</b></strong></p>
<p><strong>other servers …<b>.</b></strong></p>
<p>网通机房流量一直比较稳定左右，从未出任何问题</p>
<p>就是昨天电信custom接口流量暴增后，出现了异常，电信机房机器负载涨了40多倍，QPS涨了15倍，直到凌晨0：24分才降到1以下</p>
<p>应用也报了短暂的超时警报，不过php和nginx运行还是比较蛋定，重启依然非常快，终端也没有出现很卡的情况</p>
<p>流量是前一天的9倍！</p>
<p>异常就是error.log在上线后飙到3个G！！！</p>
<p>而且错误全都是Can’t connect to MySQL server on ’1<b>.</b>1<b>.</b>1.1′ (99)</p>
<p>即便在命令行下用mysql -hx.x.x<b>.</b>x -u -p</p>
<p>也间歇性地连接不上，但是据dba描述，数据库监控无任何异常，数据库上其他部门的应用也无异常</p>
<p>不知是否机器负载过高导致大量time wait，导致mysql连接超时或连接不上</p>
<p>以下是晚上0点13分的监控：</p>
<p>TIME_WAIT 涨了300倍（不知是否和他有关）</p>
<p>ESTABLISHED 涨了10倍</p>
<p>按理说，custom的网通接口流量非常稳定，从未出现过异常，电信机房接口飙了2倍就抗不住了，load直线上升，</p>
<p>为了排除cache引起的流量导致接口异常，22：30左右重新上了2个文件，把电信机房的memcache重新开启，</p>
<p>开启后慢慢load是降了，但是mysql错误依旧只是没那么多了</p>
<p>现在去机器上看，还是大量错误，提取日志如下</p>
<p>FastCGI sent in stderr: “PHPWarning:&#160; mysql_connect()<strong>Can’t connect to MySQL server on ’1<b>.</b>1<b>.</b>1.1′ (99)</strong>in XXXXXX on line xxx</p>
<p>后来跟dba不断沟通排查，发现电信机房和网通机房的/etc/sysctl.conf配置有所区别</p>
<p>网通机房多了下面几行</p>
<p>net.ipv4.tcp_syncookies =1</p>
<p>net.ipv4.tcp_tw_reuse = 1</p>
<p>net.ipv4.tcp_tw_recycle =1</p>
<p>net.ipv4.tcp_fin_timeout= 5</p>
<p>原因就在这，把配置同步到杭电信机房后，问题就解决了，总结如下：</p>
<ol>
<li>问题描述
<ul>
<li>上线异常导致qps：五倍+，负载：四十倍+，虽然nginx+php表示很淡定没挂，但error.log飙到了3G/天，全是Can’t connect to MySQL server on ‘*<b>.</b>*.*<b>.</b>*’ (99) </li>
<li>解决异常后，error.log日志少了，但TIME_WAIT依旧减不下去，数据库依旧连接是失败</li>
</ul>
</li>
<li>问题排查
<ul>
<li>Mysql Config <b>?</b> (no problem)
<ul>
<li>max_connect_errors = 50000 (no problem) </li>
<li>max_connections = 1000 (no problem) </li>
<li>max_user_connections = 950 (no problem)</li>
</ul>
</li>
<li>OS Config <b>?</b> (problem, 按以下修改问题就解决了)
<ul>
<li>vi /etc/sysctl.conf
<p>net.ipv4.tcp_syncookies = 1</p>
<p>net.ipv4.tcp_tw_reuse = 1</p>
<p>net.ipv4.tcp_tw_recycle = 1</p>
<p>net.ipv4.tcp_fin_timeout = 5</p>
<p>// 让参数生效</p>
<p>/sbin/sysctl -p</p>
</li>
</ul>
</li>
</ul>
</li>
<li>问题原�
<ul>
<li>报错”Can’t connect to MySQL server on ‘*<b>.</b>*<b>.</b>*.*’ (99) ” 参考MySQL Client端<a href="http://dev.mysql.com/doc/refman/5.1/en/error-messages-client.html#error_cr_conn_host_error">错误代码</a>说明：错误代码为99，99的含义：$perror 99 OS error code&#160; 99:&#160; Cannot assign requested address 这是一个本地OS的抛错，表示无法分配本地地址资源（应该是端口），socket无法创建 </li>
<li>Google一下” Cannot assign requested address”，多半是由于客户端请求过于频繁，而Server端练级关闭后本地暂时处于TIME_WAIT，所以暂时端口都不可用导致<b>。</b>因此修改下OS参数就ok了</li>
</ul>
</li>
<li>问题反思
<ul>
<li>这个问题非常紧急么？紧急！
<ul>
<li>参考文章《nginx+php产生大量TIME_WAIT》：<a href="http://leven.blog.51cto.com/1675811/382097">http://leven.blog<b>.</b>51cto.com/1675811/382097</a> ，遇到这样的问题，我们应该第一时间想到端口不可用，首先会导致nginx连不上php-cgi导致服务不可用，其次才是php-cgi连不上mysql，因此非常重要！</li>
</ul>
</li>
<li>为什么mysql不使用长连接pconnection呢？
<ul>
<li>pconnection mysql占用大量资源，并且在大并发情况下，例如个性化，活动促销等，连接过多导致无数的连接失败error，并牵制apache（nginx）ThreadsPerChild的参数</li>
</ul>
</li>
<li>高并发下的最佳实践？</li>
</ul>
<ul>
<li>apache短连接，nginx短连接，mysql短连接，虽然TIME_WAIT多了，但可通过修改OS内核加速TIME_WAIT的复用，经验之谈啊！</li>
</ul>
</li>
</ol>
<p>转自 http://www.searchtb.com/2012/05/mysql_time_wait.html</p>
<p><b></b></p>
<h3>大规模、高流量互联网站性能调优的22条准则</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/MaxIE/archive/2008/05/30/1210639.html">http://www.cnblogs.com/MaxIE/archive/2008/05/30/1210639.html</a>
<p>&#160;&#160;&#160;&#160; 关于大规模<b>、</b>高流量Web2<b>.</b>0网站性能调优的14条准则，已近成了业界web2.0网站前端优化的准则，国内外也有很多文章和书籍介绍这些准则<b>。</b>14条准则其实是美国雅虎Performance部门这几年的工作成果之一，他们还研究并提出了许多有效的网站性能调优技术<b>。</b>美国Performance团队负责将雅虎产品和应用改进得更快、更好、更有效率<b>。</b></p>
<p><strong>1。Make Fewer HTTP Requests</strong></p>
<p>（尽量减少http请求数量）</p>
<p>首先面临的一个问题是把所有的 JavaScript 与 <acronym>CSS</acronym> 放到一个文件中好呢，还是分割成多个文件 <b>?</b></p>
<p>从减少网络请求的角度上考虑, 前者更好，后者差。但是从并行的角度考虑, <acronym>IE</acronym> 与 Firefox 默认情况下都只能同时从一个域请求两个资源<b>.</b> 这会在很多情况下给用户带来不良的使用体验–必须所有的文件都下载完毕才可以看到像样的页面. Flickr 采用了折衷的办法–在保持文件数量尽可能少的情况下，把 JavaScript 与 <acronym>CSS</acronym> 分成多个子文件<b>.</b> 这在开发上带来了复杂性，但是对性能的收益是巨大的。</p>
<p><strong>2<b>。</b>Use a Content Delivery Network</strong></p>
<p>（使用CDN）</p>
<p><strong>3<b>。</b>Add an Expires Header</strong></p>
<p>（在下载的css<b>、</b>js、image组件里增加过期时间）</p>
<p><strong>4。Gzip Components</strong></p>
<p>（对下载的组件进行压缩）</p>
<p>毫无疑问，对站点内容进行压缩是一个比较常用的 Web 优化手段．但是并不一定都能达到理想的效果．原因在于 mod-gzip 模块不但消耗服务器端 <acronym>CPU</acronym> 资源，也消耗客户端 <acronym>CPU</acronym> 资源<b>.</b> 而且, mod_gzip 压缩文件后创建的临时文件是放到磁盘上的，这也会给磁盘 <acronym>IO</acronym> 带来严重的问题<b>.</b></p>
<p>Flickr 采用的是 Httpd 2.x 以后支持的mod_deflate 模块．压缩操作都在内存中进行．mod_deflate 在 Httpd 1.x 是不可用的, 不过可以通过创建 <acronym>RAM</acronym> 盘的方式来间接提高性能．</p>
<p>当然, mod_gzip 到也不是一无是处, 对于预压缩的文件, 还是有好处的<b>.</b> 而且, 采用压缩的时候,也要注意策略. 图片文件压缩就没什么必要了(Flickr 上图像多, 而且压缩得不到什么好处)<b>.</b> Flickr 只对JavaScript 和 <acronym>CSS</acronym> 进行压缩. mod_gzip 新一点的版本能够自动通过配置 mod_gzip_update_static 选项自动处理 预压缩的文件<b>.</b> Cal 也指出这个特性在一些旧版本的浏览器上会出问题.</p>
<p>压缩的另一个主要手段是内容的压缩<b>.</b> 针对 JavaScript 可以进行通过减少注释、合并空格、使用紧凑的语法等小技巧(Google 的所有脚本都非常难读，而且非常紧凑，思想类似).当然，经过这样处理的 JavaScript 可能带了很多括号不容易解析，Flickr 使用了 Dojo Compressor 来构建解析树<b>。</b>Dojo Compressor 开销很低，而且对于最终用户是透明的. JavaScript 的处理方法介绍过，CSS 处理则相对简单<b>.</b>通过简单的正则表达式替换(比如把多个空格替换为一个空格符), 最高可以获得 50% 的压缩比。</p>
<p><strong>5<b>。</b>Put CSS components at the top of the page.</strong></p>
<p>（css文件尽可能放在页面的最上面）</p>
<p><strong>6<b>。</b>Put JS components as close to the bottom of the page as possible<b>.</b></strong></p>
<p>（js文件尽可能放在页面的最下面）</p>
<p><strong>7<b>。</b>Avoid CSS Expressions</strong></p>
<p>（在css文件中慎用表达式）</p>
<p><strong>8<b>。</b>Make JavaScript and CSS External</strong></p>
<p>（在外部包含js和css文件）</p>
<p><strong>9<b>。</b>Reduce DNS Lookups</strong></p>
<p>（减少请求中域名的解析次数）</p>
<p><strong>10<b>。</b>Minify JavaScript</strong></p>
<p>（js代码压缩）</p>
<p><strong>11<b>。</b>Avoid doing redirects.</strong></p>
<p>（避免重定向）</p>
<p><strong>12<b>。</b>Remove Duplicates Scripts</strong></p>
<p>（避免请求重复的js文件）</p>
<p><strong>13<b>。</b>Configure ETags</strong></p>
<p>（配置好ETag）</p>
<p>Flickr 的开发者充分利用了 Http 1<b>.</b>1 规范定义的 Etag 与 Last-Modified 机制 来提高 Caching 的效率. 值得注意的是，Cal 介绍了一个在负载均衡条件下的 e-Tag 小技巧<b>.</b> 即可以设定 Apache 通过文件调整时间与文件大小获得 E-Tag ,而默认情况下, Apache 是通过文件节点获取 e-Tag 的<b>。</b>当然，这也不是很完美，因为会影响 if-modified-since 。</p>
<p>但是有的网站的e-Tag，如yahoo，其产生规则是基于节点的。相同的css或js脚本在不同节点服务器上的e-Tag不同，所以如果有n个服务器，那么浏览器获得304应答消息的概率是1/n<b>。</b></p>
<p><strong>14。Make Ajax Cacheable</strong></p>
<p>（缓存Ajax请求）</p>
<p>以下几点是新增的准则<b>。</b></p>
<p><strong>15。Flush the Header</strong></p>
<p>（先发送Header里的信息）</p>
<p>We improved the page load times by flushing the apache output buffer after the document HEAD was generated.This had two benefits<b>.</b></p>
<p>First, the HEAD contains SCRIPT and LINK tags for scripts and stylesheets<b>.</b> By flushing the HEAD, those tags are received and parsed by the browser sooner, and in turn the browser starts downloading those components earlier<b>.</b></p>
<p>Second, the HEAD is flushed before actually generating the search results<b>.</b> This is a win for any property doing a significant backend computation or especially making one or more backend web service calls<b>.</b></p>
<p><strong>16。Split Static Content Across Multiple Hostnames</strong></p>
<p>（把较大的静态文件分割成不同域的请求）</p>
<p>If you have many (10 or more) components downloaded from a single hostname, it might be better to split those across two hostnames<b>.</b></p>
<p><strong>17。Reduce the Size of Cookies</strong></p>
<p>（不要让Cookie内容过大）</p>
<p>Reduce the amount of data in the cookie by storing state information on the backend, and abbreviating names and values stored in the cookie<b>.</b> Set expiration dates on your cookies, and make them as short as possible<b>.</b></p>
<p><strong>18<b>。</b>Host Static Content on a Different Top-Level Domain</strong></p>
<p>（把静态文件放在不同的顶级域名下）</p>
<p><strong>19<b>。</b>Minify CSS</strong></p>
<p>（Css代码压缩）</p>
<p><strong>20<b>。</b>Use GET for XHR</strong></p>
<p>（有XHR时使用GET请求）</p>
<p>Iain Lamb did a deep study of how using POST for XMLHttpRequests is inefficient, especially in IE<b>.</b> His recommendation: “If the amount of data you have to send to the server is small (less than 2k), I suggest you design your webservice / client application to use GET rather than POST<b>。</b></p>
<p><strong>21。Avoid IFrames</strong></p>
<p>（尽量避免使用IFrame）</p>
<p>Don’t use SRC (set it via JS instead)<b>.</b> Each IFrame takes 20-50ms, even if it contains nothing</p>
<p><strong>22<b>。</b>Optimize images</strong></p>
<p>（优化图片）</p>
<p><b></b></p>
<h3>提升Web2.0网站流量五大秘诀</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/ywqu/articles/851061.html">http://www.cnblogs.com/ywqu/articles/851061.html</a>
<p>导语：国外媒体今天发表分析文章称，Web2<b>.</b>0专家埃米·乔基姆(Amy Jo Kim)认为，Web2<b>.</b>0创业公司应当采用游戏机制，打造有趣、吸引人的网站，这样才能吸引更多用户，并提升网络流量。 </p>
<p> 在打造自己的社交网站之前，查尔斯·福曼(Charles Forman)一直在思考一个问题：如何才能吸引那些单身<b>、</b>时尚的年轻人？几年之前，福曼曾经在韩国首尔工作<b>。</b>他在那里发现，很多韩国年轻人都痴迷于社交网站Cyworld，因为该网站的性质同游戏十分接近。根据这段经历，福曼最终找到了问题的答案，并决定在自己的交友网站中采用游戏战略<b>。</b></p>
<p> 福曼的网站名为“Iminlikewithyou”，每名用户都可以在个人页面创建一个简短的游戏，其它用户通过玩游戏获得得分，只有得分较高者才能赢得“主人”的关注<b>。</b>Iminlikewithyou采用了邀请模式，用户只有获得邀请才能注册<b>。</b>得益于独特的游戏评分模式，Iminlikewithyou短期内就吸引了大量的用户，在一定范围内掀起一股热潮<b>。</b></p>
<p>过去几年里，游戏设计者为吸引用户采用了很多新概念，而Iminlikewithyou等社交网站正是采用了同样的概念<b>。</b>事实上，eBay和亚马逊是游戏法则的最早采用者，随后是Flickr<b>、</b>YouTube和Digg。即使是非Web2.0公司、企业软件</p>
<p> 易物去 www.ywqu.com <a href="http://www.iask.com/n?k=%BF%AA%B7%A2%C9%CC">开发商</a> Cold Stone Creamery和Entellium也加入了游戏概念，希望籍此在市场竞争中脱颖而出<b>。</b>游戏开发商拉夫·科斯勒(Raph Koster)表示：“游戏世界正逐渐变为主流。” </p>
<p> 游戏设计公司Shufflebrain的创意总监埃米·乔基姆建议，Web2.0创业公司应当采用游戏机制，打造有趣<b>、</b>吸引人的网站。乔基姆曾经帮助eBay开发“超级卖家”(Power Sellers)计划，在Web2.0领域也颇有研究。去年12月，她曾经发表过一篇名为《在功能中加入趣味》的文章，描述了可以帮助Web2<b>.</b>0网站吸引用户、提升流量的五大秘诀。</p>
<p><strong>乔基姆提出的五大秘诀包括：</strong></p>
<p>1.积累。积累素材是一项基本原则。在利用游戏机制方面，Iminlikewithyou做得非常出色<b>。</b>用户可以通过选择游戏中的赢家来增加好友，也可以通过回答一些简单的问题来积累积分。例如，“你是否曾在酒醉的状态下上班？”他们还可以将其它用户加入观察列表，也可以邀请他人在Iminlikewithyou创建游戏<b>。</b>福曼表示：“我们希望通过这样的方式吸引那些工作不太忙的人，我们将为这些用户提供有价值的服务。”</p>
<p>2.积分。积分可以为用户带来更高权限或权力，自然也能刺激他们努力提升自己在网站的表现。此外，积分也能激发用户的竞争心理，如果好友的得分比你高，你自然会努力提高得分，希望尽快超越他<b>。</b>例如，eBay的“超级卖家”计划就对用户起到了巨大的推动作用。乔基姆表示：“一旦拥有了积分，你就可以不断提升自己的级别<b>。</b>‘超级卖家’是eBay用户的最高级别，因此成为了很多用户的奋斗目标。”</p>
<p>一个好的奖励系统可以推动所有层次的用户。在这样的系统里，所有用户都可以很容易地获得最低级别，但要获得最高级别则非常困难<b>。</b>客户平台软件公司Entellium近日推出的一款玩家影响力应用软件就充分地利用这一概念。Entellium首席执行官保罗·约翰斯顿(Paul Johnston)表示：“游戏最吸引人的地方就是可以重生，即使你失败，也还有第二次机会<b>。</b>我们将这一理念适用于销售人员，鼓励他们去冒险。”</p>
<p> 3.反馈。Digg联合创始人凯文·罗斯(Kevin Rose)十分清楚，要让自己的网站正常运转，就必须打造一个非常活跃的社区，因此他采用“反馈”这一强有力的武器来吸引用户<b>。</b>当一名Digg用户提交文章后，他自然希望自己的努力获得认可，不管这篇文章是否进入了Digg首页或获得大量评论<b>。</b>通过Digg的反馈系统，你很容易就能找到独特的文章。Digg营销副总裁迈克·马瑟(Mike Maser)表示：“游戏社区和Digg社区之间有着很多相似之处<b>。</b>”</p>
<p> 4.交流<b>。</b>直接和间接的交流也是一种游戏机制，很多网站都充分利用了这一点。图片共享网站Flickr之所以能大获成功，同它具有较强的交互性有着很大的关系<b>。</b>Flickr允许用户为图片加标签，从而将图片和对象有机地结合在一起，方便其它用户搜索。很多设计良好的游戏都采用了最简单的交互方式，每当你有所动作，就会触发相应的事件<b>。</b></p>
<p> 5.定制<b>。</b>网站应当给用户一些控制权，例如定制自己的页面。这一方式可以有效地促使用户增加投入，同时也能在一定程度上阻止用户离开<b>。</b>你为用户提供更大的自由度，他们就能在使用过程中体会到更多趣味</p>
<p>作者：灵动生活</p>
<p>出处：<a href="http://www.cnblogs.com/ywqu">http://www.cnblogs.com/ywqu</a></p>
<p>如果你认为此文章有用，请点击底端的【推荐】让其他人也了解此文章，</p>
<p>你也可以加我的新浪微博,以便实时了解我的动态:<a href="http://weibo.com/ywqu">http://weibo.com/ywqu</a></p>
<p>WOWO英语(英语培训学校)：<a href="http://www.wowomandarin.cn/">http://www.wowomandarin<b>.</b>cn</a>&#160;&#160; 上海电子商务解决方案:<a href="http://www.hello36.com/">http://www.hello36.com</a>    <br />上海闪酷系列解决方案：    <br /><a href="http://www.hello36.com/NewVis/ECommerce.aspx">电子商务解决方案</a> <a href="http://www.hello36.com/EcommerceApp.aspx">移动电商APP软件</a> <a href="http://www.hello36.com/NewVis/Training.aspx">培训学校管理系统</a> <a href="http://www.hello36.com/NewVis/Shopping.aspx">购物分享社区系统</a> <a href="http://www.hello36.com/NewSolution.aspx">移动开发解决方案</a> <a href="http://www.hello36.com/Survey.aspx">在线问卷调查系统</a></p>
<p>本文版权归作者和博客园共有，欢迎转载，但未经作者同意必须保留此段声明，且在文章页面明显位置给出原文连接，否则保留追究法律责任的权利<b>。</b></p>
<p>posted @ 2007-08-10 17:13 <a href="http://www.cnblogs.com/ywqu/">灵动生活</a> 阅读(60) 评论(0)&#160; <a href="http://www.cnblogs.com/ywqu/admin/EditArticles.aspx?postid=851061">编辑</a> <a>收藏</a></p>
<p><b></b></p>
<h3>高性能，大流量网站架构的几点认识</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/hq2008/archive/2008/04/24/1169244.html">http://www.cnblogs.com/hq2008/archive/2008/04/24/1169244.html</a>
<p><strong>一：硬架构</strong></p>
<p><u>1：机房的选择：</u></p>
<p>在选择机房的时候，根据网站用户的地域分布，可以选择网通或电信机房，但更多时候，可能双线机房才是合适的<b>。</b>越大的城市，机房价格越贵，从成本的角 度看可以在一些中小城市托管服务器，比如说广州的公司可以考虑把服务器托管在东莞，佛山等地，不是特别远，但是价格会便宜很多<b>。</b></p>
<p><u>2：带宽的大小：</u></p>
<p>通常老板花钱请我们架构网站的时候，会给我们提出一些目标，诸如网站每天要能承受100万PV的访问量等等<b>。</b>这时我们要预算一下大概需要多大的带宽，计算带宽大小主要涉及两个指标（峰值流量和页面大小），我们不妨在计算前先做出必要的假设：</p>
<p>第一：假设峰值流量是平均流量的5倍<b>。</b>    <br />第二：假设每次访问平均的页面大小是100K字节左右<b>。</b></p>
<p>如果100万PV的访问量在一天内平均分布的话，折合到每秒大约12次访问，如果按平均每次访问页面的大小是100K字节左右计算的话，这12次访 问总计大约就是1200K字节，字节的单位是Byte，而带宽的单位是bit，它们之间的关系是1Byte = 8bit，所以1200K Byte大致就相当于9600K bit，也就是9Mbps的样子，实际情况中，我们的网站必须能在峰值流量时保持正常访问，所以按照假设的峰值流量算，真实带宽的需求应该在45Mbps 左右<b>。</b></p>
<p>当然，这个结论是建立在前面提到的两点假设的基础上，如果你的实际情况和这两点假设有出入，那么结果也会有差别<b>。</b></p>
<p><u>3：服务器的划分：</u></p>
<p>先看我们都需要哪些服务器：图片服务器，页面服务器，数据库服务器，应用服务器，缓存服务器,日志服务器等等<b>。</b></p>
<p>对于访问量大点的网站而言，分离单独的图片服务器和页面服务器相当必要，我们可以用lighttpd来跑图片服务器，用apache来跑页面服务 器，当然也可以选择别的，甚至，我们可以扩展成很多台图片服务器和很多台页面服务器，并设置相关域名，如img.domain.com和 www.domain.com，页面里的图片路径都使用绝对路径，如&#60;img src=&#34;http://img.domain.com/abc.gif&#34; /&#62;，然后设置DNS轮循，达到最初级的负载均衡<b>。</b>当然，服务器多了就不可避免的涉及一个同步的问题，这个可以使用rsync软件来搞定。    <br />缓存服务器,一般分为静态服务器(页面)用于反向代理,主要是用来在做负载均衡的,一般直接处理静态页面,图片等,    <br />数据缓存服务器:在应用服务器与数据库之间加上一层,一向用Memcache来处理,facebook,flickr....</p>
<p>数据库服务器是重中之重，因为网站的瓶颈问题十有八九是出在数据库身上<b>。</b>现在一般的中小网站多使用MySQL数据库，不过它的集群功能似乎还没有达 到stable的阶段，所以这里不做评价<b>。</b>一般而言，使用MySQL数据库的时候，我们应该搞一个主从（一主多从）结构，主数据库服务器使用innodb 表结构，从数据服务器使用myisam表结构，充分发挥它们各自的优势，而且这样的主从结构分离了读写操作，降低了读操作的压力，甚至我们还可以设定一个 专门的从服务器做备份服务器，方便备份<b>。</b>不然如果你只有一台主服务器，在大数据量的情况下，mysqldump基本就没戏了，直接拷贝数据文件的话，还得 先停止数据库服务再拷贝，否则备份文件会出错<b>。</b>但对于很多网站而言，即使数据库服务仅停止了一秒也是不可接受的。如果你有了一台从数据库服务器，在备份数 据的时候，可以先停止服务（slave stop）再备份，再启动服务（slave start）后从服务器会自动从主服务器同步数据，一切都没有影响<b>。</b>但是主从结构也是有致命缺点的，那就是主从结构只是降低了读操作的压力，却不能降低写 操作的压力。为了适应更大的规模，可能只剩下最后这招了：横向/纵向分割数据库。所谓横向分割数据库，就是把不同的表保存到不同的数据库服务器上，比如说 用户表保存在A数据库服务器上，文章表保存在B数据库服务器上，当然这样的分割是有代价的，最基本的就是你没法进行LEFT JOIN之类的操作了<b>。</b>所谓纵向分割数据库，一般是指按照用户标识（user_id）等来划分数据存储的服务器，比如说：我们有5台数据库服务器，那么 “user_id % 5 + 1”等于1的就保存到1号服务器，等于2的就保存到2好服务器，以此类推，纵向分隔的原则有很多种，可以视情况选择<b>。</b>不过和横向分割数据库一样，纵向分割 数据库也是有代价的，最基本的就是我们在进行如COUNT, SUM等汇总操作的时候会麻烦很多<b>。</b>综上所述，数据库服务器的解决方案一般视情况往往是一个混合的方案，以其发挥各种方案的优势，有时候还需要借助 memcached之类的第三方软件，以便适应更大访问量的要求<b>。</b></p>
<p>如果有专门的应用服务器来跑PHP脚本是最合适不过的了，那样我们的页面服务器只保存静态页面就可以了，可以给应用服务器设置一些诸如 app.domain.com之类的域名来和页面服务器加以区别<b>。</b>对于应用服务器，我还是更倾向于使用prefork模式的apache，配上必要的 xcache之类的PHP缓存软件，加载模块要越少越好，除了mod_rewrite等必要的模块，不必要的东西统统舍弃，尽量减少httpd进程的内存 消耗，而那些图片服务器，页面服务器等静态内容就可以使用lighttpd或者tux来搞，充分发挥各种服务器的特点<b>。</b></p>
<p>如果条件允许，独立的日志服务器也是必要的，一般小网站的做法都是把页面服务器和日志服务器合二为一了，在凌晨访问量不大的时候cron运行前一天 的日志计算，不过如果你使用awstats之类的日志分析软件，对于百万级访问量而言，即使按天归档，也会消耗很多时间和服务器资源去计算，所以分离单独 的日志服务器还是有好处的，这样不会影响正式服务器的工作状态<b>。</b></p>
<p><strong>二：软架构</strong></p>
<p><u>1：框架的选择：</u></p>
<p>现在的PHP框架有很多选择，比如：CakePHP，Symfony，Zend Framework等等，至于应该使用哪一个并没有唯一的答案，要根据Team里团队成员对各个框架的了解程度而定<b>。</b>很多时候，即使没有使用框架，一样能 写出好的程序来，比如Flickr据说就是用Pear+Smarty这样的类库写出来的，所以是否用框架，用什么框架，一般不是最重要，重要的是我们 的编程思想里要有框架的意识<b>。</b>    <br />现在的.NET框架有很多选择，比如：cnForums，.text，cs, Castle,等等</p>
<p><u>2：逻辑的分层：</u></p>
<p>网站规模到了一定的程度之后，代码里各种逻辑纠缠在一起，会给维护和扩展带来巨大的障碍，这时我们的解决方式其实很简单，那就是重构，将逻辑进行分层<b>。</b>通常，自上而下可以分为表现层，应用层，领域层，持久层<b>。</b></p>
<p>所谓表现层，并不仅仅就指模板，它的范围要更广一些，所有和表现相关的逻辑都应该被纳入表现层的范畴<b>。</b>比如说某处的字体要显示为红色，某处的开头要空两格，这些都属于表现层<b>。</b>很多时候，我们容易犯的错误就是把本属于表现层的逻辑放到了其他层面去完成，这里说一个很常见的例子：我们在列表页显示文章标 题的时候，都会设定一个最大字数，一旦标题长度超过了这个限制，就截断，并在后面显示“..”，这就是最典型的表现层逻辑，但是实际情况，有很多程序员都 是在非表现层代码里完成数据的获取和截断，然后赋值给表现层模板，这样的代码最直接的缺点就是同样一段数据，在这个页面我可能想显示前10个字，再另一个 页面我可能想显示前15个字，而一旦我们在程序里固化了这个字数，也就丧失了可移植性<b>。</b>正确的做法是应该做一个视图助手之类的程序来专门处理此类逻辑，比如说：Smarty里的truncate就属于这样的视图助手（不过它那个实现不适合中文）<b>。</b></p>
<p>所谓应用层，它的主要作用是定义用户可以做什么，并把操作结果反馈给表现层。至于如何做，通常不是它的职责范围（而是领域层的职责范围），它会通过 委派把如何做的工作交给领域层去处理<b>。</b>在使用MVC架构的网站中，我们可以看到类似下面这样的URL： domain.com/articles/view/123，其内部编码实现，一般就是一个Articles控制器类，里面有一个view方法，这就是一 个典型的应用层操作，因为它定义了用户可以做一个查看的动作<b>。</b>在MVC架构中，有一个准则是这么说的：Rich Model Is Good。言外之意，就是Controller要保持“瘦”一些比较好，进而说明应用层要尽量简单，不要包括涉及领域内容的逻辑<b>。</b></p>
<p>所谓领域层，最直接的解释就是包含领域逻辑的层。它是一个软件的灵魂所在。先来看看什么叫领域逻辑，简单的说，具有明确的领域概念的逻辑就是领域逻 辑，比如我们在ATM机上取钱，过程大致是这样的：插入银联卡，输入密码，输入取款金额，确定，拿钱，然后ATM吐出一个交易凭条<b>。</b>在这个过程中，银联卡 在ATM机器里完成钱从帐户上划拨的过程就是一个领域逻辑，因为取钱在银行中是一个明确的领域概念，而ATM机吐出一个交易凭条则不是领域逻辑，而仅是一 个应用逻辑，因为吐出交易凭条并不是银行中一个明确的领域概念，只是一种技术手段，对应的，我们取钱后不吐交易凭条，而发送一条提醒短信也是可能的，但并 不是一定如此，如果在实际情况中，我们要求取款后必须吐出交易凭条，也就是说吐出交易凭条已经和取款紧密结合，那么你也可以把吐出交易凭条看作是领域逻辑 的一部分，一切都以问题的具体情况而定<b>。</b>在Eric那本经典的领域驱动设计中，把领域层分为了五种基本元素：实体，值对象，服务，工厂，仓储<b>。</b>具体可以参 阅书中的介绍。领域层最常犯的错误就是把本应属于领域层的逻辑泄露到了其他层次，比如说在一个CMS系统，对热门文章的定义是这样的：每天被浏览的次数多 于1000次，被评论的次数多于100次，这样的文章就是热门文章<b>。</b>对于一个CMS来说，热门文章这个词无疑是一个重要的领域概念，那么我们如何实现这个 逻辑的设计的？你可能会给出类似下面的代码：“SELECT ..<b>.</b> FROM ... WHERE 浏览 &#62; 1000 AND 评论 &#62; 100”，没错，这是最简单的实现方式，但是这里需要注意的是“每天被浏览的次数多于1000次，被评论的次数多于100次”这个重要的领域逻辑被隐藏到 了SQL语句中，SQL语句显然不属于领域层的范畴，也就是说，我们的领域逻辑泄露了<b>。</b></p>
<p>所谓持久层，就是指把我们的领域模型保存到数据库中。因为我们的程序代码是面向对象风格的，而数据库一般是关系型的数据库，所以我们需要把领域模型 碾平，才能保存到数据库中，但是在PHP里，直到目前还没有非常好的ORM出现，所以这方面的解决方案不是特别多，参考Martin的企业应用架构模式一 书，大致可以使用的方法有行数据入口（Row Data Gateway）或者表数据入口（Table Data Gateway），或者把领域层和持久层合二为一变成活动记录（Active Record）的方式<b>。</b></p>
<p><b></b></p>
<h3>如何解决web大流量、高并发的问题</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/jshen/archive/2012/12/27/2835425.html">http://www.cnblogs.com/jshen/archive/2012/12/27/2835425.html</a>
<p>对于当今大流量的网站，每天几千万甚至上亿的流量,是如何解决访问量问题的呢<b>?</b></p>
<p>以下是一些总结的方法:&#160; 第一，确认服务器硬件是否足够支持当前的流量<b>。</b>&#160; 普通的P4服务器一般最多能支持每天10万独立IP，如果访问量比这个还要大，那么必须首先配置一台更高性能的专用服务器才能解决问题，否则怎么优化都不可能彻底解决性能问题<b>。</b></p>
<p>第二，优化数据库访问<b>。</b>&#160; 服务器的负载过大，一个重要的原因是CPU负荷过大，降低服务器CPU的负荷，才能够有效打破瓶颈。而使用静态页面可以使得CPU的负荷最小化<b>。</b>前台实现完全的静态化 当然最好，可以完全不用访问数据库，不过对于频繁更新的网站，静态化往往不能满足某些功能<b>。</b>&#160; 缓存技术 就是另一个解决方案，就是将动态数据存储到缓存文件中，动态网页直接调用这些文件，而不必再访问数据库，WordPress和Z-Blog都大量使用这种缓存技术 <b>。</b>我自己也写过一个Z-Blog的计数器插件，也是基于这样的原理。&#160; 如果确实无法避免对数据库的访问，那么可以尝试优化数据库的查询SQL<b>.</b>避免使用Select *from这样的语句，每次查询只返回自己需要的结果，避免短时间内的大量SQL查询<b>。</b></p>
<p>第三，禁止外部的盗链<b>。</b>&#160; 外部网站的图片或者文件盗链往往会带来大量的负载压力，因此应该严格限制外部对于自身的图片或者文件盗链，好在目前可以简单地通过refer来控制盗链，Apache自己就可以通过配置来禁止盗链，IIS也有一些第三方的ISAPI可以实现同样的功能<b>。</b>当然，伪造refer也可以通过代码来实现盗 链，不过目前蓄意伪造refer盗链的还不多，可以先不去考虑，或者使用非技术手段来解决，比如在图片上增加水印<b>。</b></p>
<p>第四，控制大文件的下载。&#160; 大文件的下载会占用很大的流量，并且对于非SCSI硬盘来说，大量文件下载会消耗CPU，使得网站响应能力下降<b>。</b>因此，尽量不要提供超过2M的大 文件下载，如果需要提供，建议将大文件放在另外一台服务器上。目前有不少免费的Web2<b>.</b>0网站提供图片分享和文件分享功能，因此可以尽量将图片和文件上 传到这些分享网站。</p>
<p>&#160; 第五，使用不同主机分流主要流量&#160; 将文件放在不同的主机上，提供不同的镜像供用户下载<b>。</b>比如如果觉得RSS文件占用流量大，那么使用FeedBurner或者FeedSky等服务将RSS输出放在其他主机上，这样别人访问的流量压力就大多集中在FeedBurner的主机上，RSS就不占用太多资源了<b>。</b></p>
<p>第六，使用流量分析统计软件。&#160; 在网站上安装一个流量分析统计软件，可以即时知道哪些地方耗费了大量流量，哪些页面需要再进行优化，因此，解决流量问题还需要进行精确的统计分析 才可以<b>。</b>我推荐使用的流量分析统计软件是GoogleAnalytics（Google分析）。我使用过程中感觉其效果非常不错，稍后我将详细介绍一下 GoogleAnalytics的一些使用常识和技巧<b>。</b>&#160;&#160; 1.分表 2.读写分离 3<b>.</b>前端优化。Nginx替换Apache(前端做负载均衡) 个人认为主要还是分布式架构是否到位，mysql和缓存的优化都是有限度的优化，而分布式架构做出来了，PV增长后，只需要堆机器就能扩容<b>。</b></p>
<p>另附一些优化经验，首先学会用explain语句分析select语句，优化索引<b>、</b>表结构，其次，合理运用memcache等缓存，降低mysql的负载，最后，如果可能的话，尽量用facebook的hiphop-php把PHP编译了，提高程序效率<b>。</b></p>
<p><b></b></p>
<h3>如何优化大数据，大流量的网站</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/wangkongming/archive/2012/11/08/2760521.html">http://www.cnblogs.com/wangkongming/archive/2012/11/08/2760521.html</a>
<p>1<b>、</b>服务器环境的选择，建议采用Linux服务器 </p>
<p>2、页面纯静态化，不要使用伪静态，大家都知道如果是非静态页面，都需要服务器端利用一定的CPU资源进行编译之后才能显示出来，而静态页面则直接显示，另外千万不能使用伪静态，伪静态实际上只是为了迎合搜索引擎而产生的一门技术，在使用过程中，会加大服务器的资源消耗，当访问量大的时候要慎用<b>。</b></p>
<p>3、负载均衡技术，通俗点讲就是将网页上的元素分开放置到不同的服务器上来分担单台服务器的压力，如：数据库单独一台服务器，静态页面一台服务器，图片单独一台服务器等等，具体应该视情况而定，流量越大，就越应该分得越细，像国内的门户网站就是这样做的，看看他们的图片就能知道，图片都是用子域名或者其他域名引用在其他图片服务器的<b>。</b></p>
<p>4、数据库优化，很多大型网站应用的时候大部分世界都花在这个上面，当网站数据变大，访问量上升，数据库首当其冲成为第一个需要解决的瓶颈，</p>
<p> --数据库性能调优</p>
<p> --1.聚集索引、主键</p>
<p> --2.尽量不要用临时表</p>
<p> --3.多多使用事务</p>
<p> --4.表设计要规范</p>
<p> --5.不要使用游标</p>
<p> --6.避免死锁</p>
<p> --7.不要打开大数据集</p>
<p> --8.最好不要select *</p>
<p> --9.不要使用text数据类型，用varchar</p>
<p> --10.不要给诸如“性别”列创建索引</p>
<p> --11.不要使用Insert插入大量的数据</p>
<p> --12.尽量用join代替where,因为where进行全表搜索</p>
<p><b></b></p>
<h3>大流量 网站</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/sode/archive/2012/11/19/2777194.html">http://www.cnblogs.com/sode/archive/2012/11/19/2777194.html</a>
<p>引用：<a href="http://www.admin10000.com/document/948.html">http://www.admin10000.com/document/948.html</a></p>
<p>动态应用，是相对于网站静态内容而言， 是指以c/c++<b>、</b>php<b>、</b>Java、perl、.net等 服务器端语言开发的网络应用软件，比如论坛、网络相册<b>、</b>交友、BLOG等常见应用。动态应用系统通 常与数据库系统、缓存系统<b>、</b>分布式存储系统等密不可分。</p>
<p> 大型动态应用系统平台主要是针对于大流 量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全<b>、</b>可扩展、易维护的应用系统平台做为支撑，以保证网站应用的平稳运行。</p>
<p> 大型动态应用系统又可分为几个子系统：</p>
<p> l Web前 端系统</p>
<p> l 负 载均衡系统</p>
<p> l 数 据库集群系统</p>
<p> l 缓 存系统</p>
<p> l 分 布式存储系统</p>
<p> l 分 布式服务器管理系统</p>
<p> l 代 码分发系统</p>
<p> Web前端系统</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image15.jpg"><img title="Image(15)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(15)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image15_thumb.jpg" width="504" height="306" /></a></p>
<p>为了达到不同应用的服务器共享、避免单点故障、集中管理、统一配置等目的，不以应用划分服 务器，而是将所有服务器做统一使用，每台服务器都可以对多个应用提供服务，当某些应用访问量升高时，通过增加服务器节点达到整个服务器集群的性能提高，同 时使他应用也会受益<b>。</b>该Web前端系统基于Apache/Lighttpd/Eginx等 的虚拟主机平台，提供PHP程序运行环境<b>。</b>服务器对开发人员是透明的，不需要开发人员介入服务器管理</p>
<p>负载均衡系统</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image16.jpg"><img title="Image(16)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(16)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image16_thumb.jpg" width="504" height="295" /></a></p>
<p>负载均衡系统分为硬件和软件两种。硬件负载均衡效率高，但是价格贵，比如F5等。软件负载均衡系统价格较低或者免费，效率较硬件负载均衡系统 低，不过对于流量一般或稍大些网站来讲也足够使用，比如lvs,nginx<b>。</b>大多数网站都是硬件、软件负载均衡系统并用。</p>
<p>数据库集群系统</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image17.jpg"><img title="Image(17)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(17)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image17_thumb.jpg" width="504" height="297" /></a></p>
<p>由于Web前端采用了负载均衡集群结构提高了服务的有效性和扩展性，因此数据库必须也是高可靠的才能保证整个服务体系的高可靠性，如何构建一个高可靠的<b>、</b>可以提供大规模并发处理的数据库体系？</p>
<p>我们可以采用如上图所示的方案：</p>
<p>1) 使用 MySQL 数据库，考虑到Web应用的数据库读多写少的特点，我们主要对读数据库做了优化，提供专用的读数据库和写数据库，在应用程序中实现读操作和写操作分别访问不同的数据库<b>。</b></p>
<p>2) 使用 MySQL Replication 机制实现快速将主库（写库）的数据库复制到从库（读库）<b>。</b>一个主库对应多个从库，主库数据实时同步到从库<b>。</b></p>
<p> 3) 写数据库有多台，每台都可以提供多个应用共同使用，这样可以解决写库的性能瓶颈问题和单点故障问题。</p>
<p>4) 读数据库有多台，通过负载均衡设备实现负载均衡，从而达到读数据库的高性能<b>、</b>高可靠和高可扩展性<b>。</b></p>
<p> 5) 数据库服务器和应用服务器分离。</p>
<p>6) 从数据库使用BigIP做负载均衡。</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image18.jpg"><img title="Image(18)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(18)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image18_thumb.jpg" width="504" height="338" /></a></p>
<p>缓存分为文件缓存、内存缓存、数据库缓存。在大型Web应用中使用最多且效率最高的是内存缓存<b>。</b>最常用的内存缓存工具是Memcachd。使用正确的缓存系统可以达到实现以下目标：</p>
<p>1、 使用缓存系统可以提高访问效率，提高服务器吞吐能力，改善用户体验。</p>
<p> 2、 减轻对数据库及存储集服务器的访问压力</p>
<p> 3、Memcached服务器有多台，避免单点故障，提供高可靠性和可扩展性，提高性能。</p>
<p> 分布式存储系统</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image19.jpg"><img title="Image(19)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(19)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image19_thumb.jpg" width="504" height="349" /></a></p>
<p>WEB系统平台中的存储需求有下面两个特点：</p>
<p> 1) 存储量很大，经常会达到单台服务器无法提供的规模，比如相册、视频等应用<b>。</b>因此需要专业的大规模存储系统。</p>
<p> 2) 负载均衡cluster中的每个节点都有可能访问任何一个数据对象，每个节点对数据的处理也能被其他节点共享，因此这些节点要操作的数据从逻辑上看只能是一个整体，不是各自独立的数据资源<b>。</b></p>
<p>因此高性能的分布式存储系统对于大型网站应用来说是非常重要的一环<b>。</b>（这个地方需要加入对某个分布式存储系统的简单介绍<b>。</b>）</p>
<p> 分布式服务器管理系统</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image20.jpg"><img title="Image(20)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(20)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image20_thumb.jpg" width="504" height="364" /></a></p>
<p>随着网站访问流量的不断增加，大多的网络服务都是以负载均衡集群的方式对外提供服务，随之集群规模的扩大，原来基于单机的服务器管理模式已经不能够满足我们的需求，新的需求必须能够集中式的<b>、</b>分组的<b>、</b>批量的、自动化的对服务器进行管理，能够批量化的执行计划任务。</p>
<p> 在分布式服务器管理系统软件中有一些比较优秀的软件，其中比较理想的一个是 Cfengine。它可以对服务器进行分组，不同的分组可以分别定制系统配置文件<b>、</b>计划任务等配置。它是基于C/S 结构的，所有的服务器配置和管理脚本程序都保存在Cfengine Server上，而被管理的服务器运行着 Cfengine Client 程序，Cfengine Client通过SSL加密的连接定期的向服务器端发送请求以获取最新的配置文件和管理命令<b>、</b>脚本程序、补丁安装等任务。</p>
<p> 有了Cfengine 这种集中式的服务器管理工具，我们就可以高效的实现大规模的服务器集群管理，被管理服务器和 Cfengine Server 可以分布在任何位置，只要网络可以连通就能实现快速自动化的管理<b>。</b></p>
<p>代码发布系统</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image21.jpg"><img title="Image(21)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(21)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image21_thumb.jpg" width="504" height="336" /></a></p>
<p>随着网站访问流量的不断增加，大多的网络服务都是以负载均衡集群的方式对外提供服务，随之集群规模的扩大，为了满足集群环境下程序代码的批量分发和更新，我们还需要一个程序代码发布系统<b>。</b></p>
<p>这个发布系统可以帮我们实现下面的目标：</p>
<p>1) 生产环境的服务器以虚拟主机方式提供服务，不需要开发人员介入维护和直接操作，提供发布系统可以实现不需要登陆服务器就能把程序分发到目标服务器<b>。</b></p>
<p>2) 我们要实现内部开发、内部测试、生产环境测试、生产环境发布的4个开发阶段的管理，发布系统可以介入各个阶段的代码发布<b>。</b></p>
<p> 3) 我们需要实现源代码管理和版本控制，SVN可以实现该需求。</p>
<p>这里面可以使用常用的工具Rsync，通过开发相应的脚本工具实现服务器集群间代码同步分发<b>。</b></p>
<p><b></b></p>
<h3>数据科学</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/vamei/p/3178534.html">http://www.cnblogs.com/vamei/p/3178534.html</a>
<p><a href="http://www.cnblogs.com/vamei/">Vamei</a></p>
<p>技术推动进步，分享促进社区<b>。</b></p>
<p>随笔-156&#160; 文章-0&#160; 评论-1407 </p>
<h3><a href="http://www.cnblogs.com/vamei/p/3178534.html">数据科学</a></h3>
<p>作者：Vamei 出处：http://www.cnblogs.com/vamei 欢迎转载，也请保留这段声明<b>。</b>谢谢！ </p>
<p>数据科学最近成为计算机的热门领域。数据科学是利用计算机的运算能力对数据进行处理，从数据中提取信息，进而形成“知识”<b>。</b>它已经影响了计算机视觉、信号处理<b>、</b>自然语言识别等计算机分支。数据科学已经在IT、金融、医学<b>、</b>自动驾驶等领域得到广泛使用。(如果你熟知中情局的<a href="http://zh.wikipedia.org/wiki/%E7%A8%9C%E9%8F%A1%E8%A8%88%E7%95%AB">棱镜泄密事件</a> ，你会发现数据科学已经在情报领域广泛使用<b>。</b>)</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image22.jpg"><img title="Image(22)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(22)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image22_thumb.jpg" width="516" height="516" /></a></p>
<p>在这系列文章中，我希望能完成从概率论，统计，到机器学习的整个数据分析的链条<b>。</b>传统意义上的数据处理是用统计方法实现的，而概率论是统计的基础。随着计算机处理能力的增强，一些需要大量运算的数据分析方法得到快速发展。机器学习实际上是一个混合体，包括一些在计算机领域中发展的算法，也包括一些传统统计中已经存在，但受限于计算能力的统计方法<b>。</b>另一方面，从数据中提炼知识是机器学习的主要目的，这与统计推断密切相关。因此，从传统的概率和统计出发，更容易理解机器学习的内涵<b>。</b></p>
<p>当然，这样做的困难之处是要覆盖许多内容。严格的叙述有时会显得比较无聊<b>。</b>我会尽力引入实用的编程例子，以便能形成更好的触觉。编程工具会以<a href="http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html">Python语言</a> 为主，配以第三方的包，如<a href="http://www.numpy.org/">Numpy</a> , <a href="http://www.scipy.org/">Scipy</a> , <a href="http://matplotlib.org/">Matplotlib</a> , <a href="http://scikit-learn.org/">scikit-learn</a> <b>。</b>统计和机器学习同样可以在其他语言中实现，比如Matlab和R语言。如果你熟悉相应的工具，不难写出类似功能的代码<b>。</b></p>
<p><a href="http://www.cnblogs.com/vamei/p/3180875.html">计数</a></p>
<p><a href="http://www.cnblogs.com/vamei/p/3194360.html">概率公理</a></p>
<p><a href="http://www.cnblogs.com/vamei/p/3195381.html">条件概率</a></p>
<p><a href="http://www.cnblogs.com/vamei/p/3196828.html">随机变量</a></p>
<p><a href="http://www.cnblogs.com/vamei/p/3198371.html">离散分布</a></p>
<p><a href="http://www.cnblogs.com/vamei/p/3199522.html">连续分布</a></p>
<p><a href="http://www.cnblogs.com/vamei/p/3224111.html">联合分布</a></p>
<p><a href="http://www.cnblogs.com/vamei/p/3226755.html">随机变量的函数</a></p>
<p><a href="http://www.cnblogs.com/vamei/p/3230753.html">期望</a></p>
<p>ANOVA</p>
<p>贝叶斯方法</p>
<h5>多变量统计</h5>
<p><a href="http://www.cnblogs.com/vamei/archive/2012/09/17/2689798.html">matplotlib简介</a></p>
<p><a href="http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html">matplotlib核心剖析</a></p>
<p><a href="http://www.cnblogs.com/vamei/archive/2012/09/16/2687954.html">matplotlib Basemap简介</a></p>
<p>=================</p>
<p>参考书籍，见<a href="http://book.douban.com/doulist/2597688/">豆列</a></p>
<p>如果你喜欢这篇文章，欢迎<strong>推荐</strong><b>。</b></p>
<p>如果你认为这篇文章值得更多人阅读，欢迎使用右侧的<strong>“分享”</strong>功能<b>。</b></p>
<p>posted @ 2013-07-31 09:25 <a href="http://www.cnblogs.com/vamei/">Vamei</a> 阅读(997) 评论(2) <a href="http://www.cnblogs.com/vamei/admin/EditPosts.aspx?postid=3178534">编辑</a> <a>收藏</a></p>
<p><b></b></p>
<h3>概率论10 方差与标准差</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/vamei/p/3232313.html">http://www.cnblogs.com/vamei/p/3232313.html</a>
<p>者：Vamei 出处：http://www.cnblogs.com/vamei 欢迎转载，也请保留这段声明<b>。</b>谢谢！</p>
<p>除了<a href="http://www.cnblogs.com/vamei/p/3230753.html">期望</a> ，方差(variance)是另一个常见的分布描述量<b>。</b>如果说期望表示的是分布的中心位置，那么方差就是分布的离散程度<b>。</b>方差越大，说明随机变量取值越离散。</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image.gif"><img title="Image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image_thumb.gif" width="300" height="242" /></a></p>
<p>比如射箭时，一个优秀的选手能保持自己的弓箭集中于目标点附近，而一个经验不足的选手，他弓箭的落点会更容易散落许多地方<b>。</b></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image6.png"><img title="Image(6)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(6)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image6_thumb.png" width="804" height="604" /></a></p>
<p>上面的靶上有两套落点<b>。</b>尽管两套落点的平均中心位置都在原点 (即期望相同），但两套落点的离散程度明显有区别。蓝色的点离散程度更小。</p>
<p>源代码如下</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image1.gif"><img title="Image(1)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(1)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image1_thumb.gif" width="11" height="16" /></a>View Code</p>
<p>数学上，我们用方差来代表一组数据或者某个概率分布的离散程度<b>。</b>可见，方差是独立于期望的另一个对分布的度量。两个分布，完全可能有相同的期望，而方差不同，正如我们上面的箭靶<b>。</b></p>
<p>对于一个随机变量来说，它的方差为:</p>
<p>其中，表示的期望值，即<b>。</b></p>
<p>我们可以代入<a href="http://www.cnblogs.com/vamei/p/3230753.html">期望</a> 的数学表达形式。比如连续随机变量：</p>
<p>方差概念背后的逻辑很简单<b>。</b>一个取值与期望值的“距离”用两者差的平方表示。该平方值表示取值与分布中心的偏差程度。平方的最小取值为0<b>。</b>当取值与期望值相同时，此时不离散，平方为0，即“距离”最小；当随机变量偏离期望值时，平方增大。由于取值是随机的，不同取值的概率不同，我们根据概率对该平方进行加权平均，也就获得整体的离散程度——方差<b>。</b></p>
<p>方差的平方根称为标准差(standard deviation, 简写std)<b>。</b>我们常用表示标准差</p>
<p>标准差也表示分布的离散程度<b>。</b></p>
<p><strong>正态分布的方差 </strong></p>
<p>根据上面的定义，可以算出正态分布</p>
<p>正态分布的标准差正等于正态分布中的参数<b>。</b>这正是我们使用字母来表示标准差的原因！</p>
<p>可以预期到，正态分布的越大，分布离散越大，正如我们从下面的分布曲线中看到的:</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image7.png"><img title="Image(7)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(7)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image7_thumb.png" width="804" height="604" /></a></p>
<p>当方差小时，曲线下的面积更加集中于期望值0附近<b>。</b>当方差大时，随机变量更加离散。此时分布曲线的“尾部”很厚，即使在取值很偏离0时，比如时，依然有很大的概率可以取到<b>。</b></p>
<p>代码如下:</p>
<pre># By Vamei

from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt

# Note the difference in &#34;scale&#34;, which is std
rv1 = norm(loc=0, scale = 1)
rv2 = norm(loc=0, scale = 2)

x = np.linspace(-5, 5, 200)

plt.fill_between(x, rv1.pdf(x), y2=0<b>.</b>0, color=&#34;coral&#34;)
plt.fill_between(x, rv2.pdf(x), y2=0<b>.</b>0, color=&#34;green&#34;, alpha = 0.5)

plt.plot(x, rv1.pdf(x), color=&#34;red&#34;, label=&#34;N(0,1)&#34;)
plt.plot(x, rv2.pdf(x), color=&#34;blue&#34;, label=&#34;N(0,2)&#34;)

plt.legend()
plt.grid(True)

plt.xlim([-5, 5])
plt.ylim([-0<b>.</b>0, 0.5])

plt.title(&#34;normal distribution&#34;)
plt.xlabel(&#34;RV&#34;)
plt.ylabel(&#34;f(x)&#34;)

plt.show()</pre>
<p><strong>指数分布的方差</strong></p>
<p>指数分布的表达式为</p>
<p>它的方差为</p>
<p>如下图所示:</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image8.png"><img title="Image(8)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(8)" src="http://www.lvjiyong.com/wp-content/uploads/2013/11/Image8_thumb.png" width="804" height="604" /></a></p>
<p>我们引入了一个新的分布描述量：方差<b>。</b>它用于表示分布的离散程度。标准差为方差的平方根。</p>
<p>欢迎继续阅读“<a href="http://www.cnblogs.com/vamei/p/3178534.html">数据科学</a> ”系列文章</p>
<p>如果你喜欢这篇文章，欢迎<strong>推荐</strong><b>。</b></p>
<p>如果你认为这篇文章值得更多人阅读，欢迎使用右侧的<strong>“分享”</strong>功能<b>。</b></p>
<h6>技术推动进步，分享促进社区。</h6>
<p><b></b></p>
<h3>关于系统架构的一些总结(1) </h3>
<p><b>来源网址：</b> <a href="http://www.cnblogs.com/alexyu/p/dbproxy.html">http://www.cnblogs.com/alexyu/p/dbproxy.html</a></p>
<blockquote>
<p>1<b>.</b>DB sharding&#160; 有两种方式实现</p>
</blockquote>
<p>a)&#160;&#160; DB Proxy </p>
<p>PHP/.Net ---&#62; <strong>dbproxy</strong> ---&#62; mysql/Sql server</p>
<p>dbproxy针对各类查询设计了一套缓冲系统，有效的降低了数据库的负荷，避免某些高并发的应用经常出现 too many connections 的错误，一个dbproxy可以方便的允许大量并 </p>
<p>b)&#160;&#160;&#160;&#160;&#160;&#160;&#160; 客户端自己根据业务选择（是不合理的）</p>
<blockquote>
<p>ESB/OPEN Api 直联与间联</p>
</blockquote>
<p>客户端可以通过ESB作为中间服务调用企业后台各服务<b>。</b>如果客户端都有间联的话，ESB将成为单点中心，一旦ESB出现问题，会出现单点故障<b>。</b></p>
<p>这时要弱化客户端对后台各业务服务的间联。客户端只从ESB取得后台业务服务的地址，然后直接调用后台服务<b>。</b></p>
<p>另外：ESB/OPEN Api对外只有一般的查询功能。更新功能则使用队列<b>。</b>从而避免客户端重复提交更新，而且避免客户端调用出现异常情况导致数据不一致。</p>
<blockquote>
<p>数据结构化</p>
</blockquote>
<p>标签是一种数据结构化的展现方式，能够提高数据使用效率<b>。</b></p>
<p>通过标签与标签结构化关系，使用搜索引擎机制，从而使网站更有个性化。</p>
<blockquote>
<p>PV 与UV 简单计算</p>
</blockquote>
<p>60W UV&#160; X&#160; 6&#160; 约等于 360W PV&#160;&#160; </p>
<blockquote>
<p>基于用户的稳定缓存机制</p>
</blockquote>
<p>如果有10台缓存服务器，它们之间是同步的<b>。</b>但缓存数据有丢失或同步不一致的情况。</p>
<p>这种情况可以基本 用户cookie + 15分钟 哈希后取一台服务器作为此用户 15分钟内的“专用”缓存命中服务器</p>
<p> 以上，是工作中应用到的一些关于架构的总结，分享一下，欢迎交流<b>。</b></p>
<p><a rel="nofollow" href="http://www.lvjiyong.com/i664.html">大数据相关资料（2）X</a>，首发于<a rel="nofollow" href="http://www.lvjiyong.com">吕的部落格</a>。</p>
]]></description>
		<wfw:commentRss>http://www.lvjiyong.com/i664.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大数据相关资料（1）</title>
		<link>http://www.lvjiyong.com/i597.html</link>
		<comments>http://www.lvjiyong.com/i597.html#comments</comments>
		<pubDate>Fri, 25 Oct 2013 03:16:15 +0000</pubDate>
		<dc:creator><![CDATA[吕]]></dc:creator>
				<category><![CDATA[杂记]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[SQL-SERVER]]></category>
		<category><![CDATA[大数据]]></category>

		<guid isPermaLink="false">http://www.lvjiyong.com/?p=597</guid>
		<description><![CDATA[<p>如今，企业所能接触和收集的数据量每年都在增长，如果企业能够在数据采集，分析，解释方面能够快速有效地话，会大大增强企业的竞争力<b>。</b> </p>
<p>然而，根据移动和社交数据分析公司Kongagent的总裁及首席科学家Josh Williams在最近的一个演讲中总结的，企业在大数据处理和应用方面，常常会犯一些错误.</p>
<p>&#160;</p>
<h3>大数据用户的七宗罪 </h3>
<p> <b>来源网址：</b> <a href="http://www.ctocio.com/ccnews/11175.html">http://www.ctocio.com/ccnews/11175.html</a>
<p><strong>企业掘金大数据的热情空前高涨，但大数据项目的成功率却很低，本文列举了大数据用户常见的七种方法错误和认识误区<b>。</b></strong> </p>
<p>如今，企业所能接触和收集的数据量每年都在增长，如果企业能够在数据采集，分析，解释方面能够快速有效地话，会大大增强企业的竞争力<b>。</b> </p>
<p>然而，根据移动和社交数据分析公司Kongagent的总裁及首席科学家Josh Williams在最近的一个演讲中总结的，企业在大数据处理和应用方面，常常会犯一些错误<b>。</b> IT经理网整理如下： </p>
<p><b>一，</b><b>懒惰（采集数据方面的偷懒）</b> </p>
<p>如果你的数据采集水平很低<b>。</b>那么，你的大数据分析可能也帮不上你的企业什么。有一句话一直是大数据领域的真理：“好的算法能打败差的算法，但是数据量大能够打败好的算法<b>。</b>” Josh Williams说，在实际工作中，经常能够看到企业用错误的方式采集数据，从而导致错误的分析结论<b>。</b> </p>
<p><b>二，</b><b>忽视（忽视应用数据分析）</b> </p>
<p>另外一个常见的错误就是在数据分析的应用，数据流进入企业以后，如果不进行好的数据分析也没什么用<b>。</b>“不要认为企业里每个人都是数据专家，你给他们仅仅看数据，他们也可能得出错误的结论。” Josh Williams 认为<b>。</b>你必须积极地进行数据分析，并且生成一些让人容易理解的报告。 </p>
<p><b>三，</b><b>过量（过量的报告）</b> </p>
<p>海量信息再加上一个好的数据可视化工具，很容易导致报告过量，包括过多的衡量指标等等（如过多的网站衡量指标等），这样往往会导致你忽视关于你的企业或者行业的一些重要结论<b>。</b>“无论你是采用自己的团队或者第三方解决方案，现在的一个倾向是你很容易看到一大堆的数据和报告，这些往往反而会阻碍你得出一些重要的结论或者作出重要的决定<b>。</b>” </p>
<p><b>四，</b><b>分歧（数据定义或解释的不同）</b> </p>
<p>如果在企业中，不同的部门对报告中的数据的解释不同，或者对如何采取行动的意见不一，就可能导致分歧<b>。</b>对数据的定义不同，对数据含义的不同诠释以及对数据结果如何采取行动的不明确，往往能阻碍企业采取正确决策。因此，确保企业中的不同部门不会因为同样的数据而采取不同方向的行动非常重要<b>。</b>Josh Williams说，“听上去不可思议，但是实际上这样的情况在企业里经常发生。” </p>
<p><b>五，</b><b>轻率（轻易跳到结论）</b> </p>
<p>当你分析数据或者阅读报告时，企业经常会发现一些值得注意的要点<b>。</b>企业往往容易根据这些很轻易的得出结论，有的甚至还会根据一些错误的原因调整商业模式，不如根据别人的结论，或者不正确的数据分析，或者是根据一些行业报告认为它们应该采取一些行业最佳实践等等<b>。</b> Josh Williams说：“我们鼓励企业自行去验证这些分析和结论，然后再决定是不是确实如此而应该采取行动<b>。</b>” </p>
<p><b>六，</b><b>傲慢（用结论引导分析）</b> </p>
<p>数据分析应该是用分析的方法，来证实或者否定一个假设<b>。</b>这个错误则是，人们往往在先有结论的情况下，然后整个数据采集和分析的目的是为了证明这个结论。“这在企业中非常常见，无论是企业高管还是其他团队都有这个问题存在。”Josh Williams说:“人们总是试图证明他们心中的结论，挖掘和分析那些对证明有利的数据<b>。</b>”而一个好的数据分析的文化应该是：“数据导出结论”。企业要学会让数据说出真理。 </p>
<p><b>七，</b><b>麻木（行动迟缓，学习迟缓）</b> </p>
<p>行动迟缓也是很多企业存在的问题<b>。</b>在大数据时代，对数据分析，迅速采取行动，从行动的结果中学习并进一步分析，是企业赢得竞争力的关键。当然，企业需要有一个好的数据分析流程，要避免直接跳入结论，要避免用预设结论影响分析结果。然而，如果一旦决定作出了以后，就应该迅速采取行动而不是拖延<b>。</b> </p>
<p>大数据项目的成功，远远不是企业上硬件和软件那么简单。需要企业文化，企业流程和企业员工技能和意识等很多方面的配合才能成功<b>。</b>以上七宗罪，其实也是很多企业大数据项目不成功的原因。企业的数据分析人员以及CIO, CTO们，要避免陷入这样的错误陷阱中去，把大数据项目作为企业级的系统工程去考虑<b>。</b> </p>
<h3>数据库不能承受之重 大数据落地人才最紧缺</h3>
<p> <b>来源网址：</b> <a href="http://news.chinaventure.com.cn/3/20120910/97639.shtml">http://news.chinaventure.com.cn/3/20120910/97639.shtml</a>
<p>成立于2008年的Vpon威朋是一个移动广告公司，其主营业务是接受广告主委托在其合作方推出的移动App上发布广告<b>。</b>上个月Vpon威朋推出了一款名为3S(Sales Supporting System)的系统广告分析系统，这是一套建立在Hadoop平台上的大数据挖掘<b>、</b>分析及处理系统。这套系统最大作用就是能精确地统计和分析用户点击移动应用的时间、地点和各种偏好，从而帮助广告主做出更有效的广告投放决策。成立于2009年的北京百分点信息科技有限公司(以下称百分点)也在做与Vpon威朋类似的事情<b>。</b>百分点推出了一种名为个性化搜索引擎的工具，电子商务网站可以利用它来分析访客的点击行为，找出访客的偏好、进行产品推荐<b>。</b>同样，这个搜索引擎也是基于Hadoop开发。 </p>
<p>在互联网领域，像Vpon威朋、百分点这样利用Hadoop等利用大数据相关技术进行访客点击行为分析来开展业务的公司越来越多，其中有一大批对新兴技术敏感的初创公司，同时也不乏像Google<b>、</b>Facebook这样著名的互联网公司。 </p>
<p>事实上，“大数据”这股发端于互联网企业的数据分析热潮如今已经超出了互联网领域，部分敢于“尝鲜”的传统企业已经开始部署大数据相关技术<b>。</b>根据IDC最新发布的全球大数据市场预测，大数据将从2010年的32亿美元增长至2015年的169亿美元，年复合增长率达到40%<b>。</b>对市场前景的良好预期吸引投资者们也纷纷投身其中，目前对于大数据的风投资金已超过5亿美元：去年年底Hadoop版本的主要发布者Cloudera获得4000万美元投资;Cloudera的竞争对手，另一个Hadoop版本发布者——MapR获得了2500万美元的投资;NoSQL数据库厂商10Gen(MongoDB的供应商)和DataStax(Cassandra的供应商)分别获得了3200万美元和1100万美元的融资;今年4月刚刚在纳斯达克进行IPO，融资2<b>.</b>3亿美元……这个名单可以列得很长<b>。</b> </p>
<p> 很显然，在市场研究机构和投资者看来，大数据市场现在是如日中天，其热度甚至大有盖过云计算之势。与此同时，“大数据是大忽悠<b>、</b>大谎言”的说法也不绝于耳。纷纷扰扰的市场宣传中，我们究竟该如何认识大数据，大数据到底是大机遇还是大骗局<b>?</b> </p>
<p><strong> 迎来大数据时代</strong> </p>
<p> 大数据与数据的爆炸性增长有着密切关系。根据IDC的研究，2010年底全球新生成的数据量已经达到120万PB(或1<b>.</b>2 ZB)，这些数据如果使用光盘存储，摞起来可以从地球到月球一个来回(从地球到月球大约24万英里)。IDC预计，到2020年需要存储的数据量将达到35万亿GB，是2010年数据存储量的42倍<b>。</b> </p>
<p> 今天的中国是数据生产的大国。还是IDC提供的数据，截止到2012年6月，中国有近3.9亿的移动客户、5<b>.</b>3亿的互联网客户。在一个比较典型的智能城市中，每个季度就可能产生出200PB的视频数据。 </p>
<p> 应该说，我们面对的挑战不只是海量数据，还包括越来越繁多的数据格式，特别是非结构化和半结构数据量远远超过传统的结构化数据<b>。</b>研究表明，如今新增数据中80%以上是诸如日志<b>、</b>图片、视频、电子邮件等非结构化或半结构化的数据。这些数据都不能(或者不适合)用传统方法处理，需要有新的思考<b>、</b>新的作为，这就是大数据技术。 </p>
<p> 对于什么是大数据至今并没有明确而且一致的定义。目前关于大数据有两个不同的理解，一个是认为它是一系列的技术，通过这些技术对大量的结构化和非结构化数据进行处理，从而获得各种分析和预测结果;另一个，也是更多的人理解是，简单地称海量的数据集称为大数据，本文采用后一种认识<b>。</b> </p>
<p> 虽然缺乏对大数据明确的定义，但对大数据三个“V”基本特征却是颇有共识，即海量的数据规模(volume)<b>、</b>快速的数据流转(velocity)<b>、</b>多样的数据类型(variety)。这其中，“海量”是大数据的引发人们广泛关注的前提，而快速和复杂的数据类型则是引发人们广泛关注的关键<b>。</b> </p>
<p><strong> 大数据从何而来</strong> </p>
<p> 谈到大数据，不得不谈到移动设备。因为我们面对的大数据除了来自企业应用<b>、</b>运营的数据以及供应链、供应商产生各种各样的数据，还有很大一部分来自社交媒体以及移动应用，而移动智能设备就是背后最大的推手之一<b>。</b> </p>
<p> 众所周知，智能移动设备的普及给社会带来诸多变化。其中之一就是人们可以在任何时间、任何地点获取信息，能够实时通信、实时协作<b>、</b>发布社交内容。这就使得数据的生产方式发生了变化：过去，我们只是在工作时产生数据，而今我们几乎是每时每刻都在生产数据;过去，数据都是交易型，典型的表现形式为一条条交易记录，这是传统数据库所擅长的，而如今，数据源众多，而且很多数据不再是由人而是由机器产生的，各种各样的RFID<b>、</b>传感器都在生成数据。另外，即使是人为产生的，如社交网络<b>、</b>微博，数据的形式和过去的形式也不一样，主要表现为非结构化。 </p>
<p> “数据量的增加已经远远超出预期，而且企业目前面临的还是一个更加复杂的数据环境。在这样一个环境中，企业要获得传统财务或者财务以外信息分析能力，需要新的方法<b>。</b>这就是大数据热的大背景。”Forrester Research资深分析师曹宇钦在不久前举办的大数据论坛演讲时表示<b>。</b> </p>
<p> 面对如此海量、复杂的数据需要存储、需要管理更需要分析，这就引发了人们对大数据的极大关注，而VMware全球高级副总裁范承工看来，事情变复杂的还有另外两个因素<b>。</b>“之所以有今天的大数据话题，除了数据产生更还包括云应用的普及以及数据的使用者发生了变化。” </p>
<p> 范承工在VMware内部领导一个数据部门从事相关产品的开发，包括支持Hadoop在虚拟化环境中的快速部署插件等<b>。</b>范承工解释说，云应用的普及改变了过去单一的数据位于数据中心的形式，越来越多的数据被保存在企业防火墙外的公有云中，使得数据整合成为难题;同时，数据使用者也从最初主要面向管理者<b>、</b>高级经理到逐渐普及到一般业务人员，这就要求获得分析结果的方式更简单、更灵活。 </p>
<p><strong> 数据库不能承受之重</strong> </p>
<p> 应该说，数据分析或者商业智能我们并不陌生。先建立数据仓库，然后通过数据建模来完成数据分析和挖掘，这个套路已经存在了20多年来<b>。</b>为什么现在不灵了?为什么要用Hadoop? </p>
<p> 中科院计算所副研究员、Hadoopin China开源社区发起人查礼认为， Hadoop等新大数据技术流行最重要的原因在于，多年来建立在数据仓库之上的商业智能是面向以结构化数据为主的场景，它采用的是一种集中式<b>、</b>纵向扩展(Scale-up)架构，主要面对的是少量用户的非实时性查询需求和报表需求，一旦将其应用于处理海量<b>、</b>非结构化数据时，不管是性能、可扩展性都面临瓶颈。比如，对于传统数据库和数据仓库而言，PB级数据尚能应对，面对更大数据量的处理时就面临性能瓶颈<b>。</b>另外，传统的数据仓库系统建设周期短则几个月，长则一年，用户得到回报的周期太长。 </p>
<p>“与之相反，后期之秀的Hadoop和以MongoDB为代表的NoSQL数据库天生就是为应对海量数据而设计的，它们采用的都是分布式架构，对数据的处理都是以一种可靠<b>、</b>高效<b>、</b>可伸缩的方式进行处理的，可以很容易地根据数据量和用户需求按需动态地扩展，而且是以一种横向扩展(Scale-out)方式进行，这种特殊的软件架构设计使其可以轻松应对TB级的数据存储和分析需求<b>。</b>”查礼表示<b>。</b> </p>
<p> 以中国联通推出的基于Hadoop的移动用户上网记录查阅系统为例。这是一个为解决3G客户数据流量查询需求<b>、</b>解决计费争议而推出的系统，架构在英特尔版的Hadoop之上，用户可自助快速查询自己的上网记录。据中国联通研究院副院长黄文良介绍，用户每登录一个网页(如访问新浪首页)就会产生20多条记录，随着用户的增加而产生的海量数据如果采用传统数据库就遇到了问题<b>。</b>“在采用Hadoop之前，我们曾试过采用数据库，但后来发现关系型数据库存储数据量到百亿条时就有些困难，一次查询可能几个小时都出不来结果<b>。</b>”黄文良说。 </p>
<p> 用户偏向Hadoop的另一个重要原因在于这一数据处理平台的高性价比，这一点对于草根出生的互联网企业尤为重要<b>。</b>事实上，从理论上而言，如果不考虑成本，采用传统方式也能处理大数据<b>。</b>“传统数据库方式也是能解决大数据问题的。只是实践中，我们必须要考虑成本的问题，包括投入多少资金、解决多大容量的数据。即便是开源平台，投入的人员<b>、</b>后期的运维费用这都是要考虑的成本。”招商银行总行信息技术管理办公室总经理周天虹说。 </p>
<p> 而在专门从事数据集成相关业务的Informatica公司核心技术部资深产品管理总监郑玮看来，Hadoop天生具有价格优势<b>。</b>其一是Hadoop是开源软件，尽管开源并不意味着免费，但和商业软件相比，其采购成本要低得多;其二是Hadoop是为普通的硬件设备而设计，本身已经充分考虑的这些硬件的不可靠性，而不是专用硬件，这就大幅降低了硬件投入成本<b>。</b> </p>
<p> “Hadoop的成本优势，使得其可以大幅降低数据分析和处理的门槛，提高数据的回报率。”郑玮告诉计算机世界报记者<b>。</b> </p>
<p><strong> Hadoop取代传统数据仓库?</strong> </p>
<p>如今，Hadoop的风头如此之劲，对于一些传统数据库和数据仓库用户而言，似乎有“既生瑜，何生亮”之感<b>。</b>那么，未来Hadoop是否会取代传统数据库<b>?</b>传统数据库会面临多大的挑战? </p>
<p> “对传统数据库厂商而言，大数据绝对是机会多过挑战。因为大数据的应用场景虽然与传统数据库有一定程度的重合，但更大多数情况是各有各的适用领域<b>。</b>这两者应该相互补充，来共同应对用户对数据的管理需求。”甲骨文公司副总裁兼大中华区CTO喻思成在接受计算机世界报记者采访时表示<b>。</b> </p>
<p> SAP全球数据库解决方案亚太区技术总监卢东明也认为，大数据实际上将为数据仓库带来更多的商业机会。 “人们可以使用类似MapReduce的技术，来获得一些有价值的信息，这些都是此前绝对不可能分析出来<b>。</b>同时，也可以利用Hadoop来预处理数据，然后将把它用于数据仓库，这实际上会扩大数据仓库的使用。”他说<b>。</b> </p>
<p> 当然，不会被取代并不意味着数据库厂商可以对大数据市场无动于衷，毕竟大数据市场与数据库市场关系如今密切，如果厂商应对不当也会波及其传统市场<b>。</b>正因为如此，我们看到传统数据库厂商纷纷向Hadoop示好，推出各种插件来打通传统数据库(或数据仓库)与Hadoop之间的联系，或者更进一步直接进入大数据市场<b>。</b> </p>
<p> 甲骨文就是积极跻身大数据市场的厂商之一，它推出了软硬一体的大数据库机，其中内置了Cloudera版的Hadoop<b>、</b>Oracle NoSQL，还内置了与Oracle数据库的连接器来与Hadoop进行数据通信。在SAP Sybase最新一代数据仓库SAP Sybase IQ 15.4也同样配备了很多接口,通过这些接口可以同时访问SAP Sybase IQ和Hadoop<b>。</b>与甲骨文类似，IBM也推出了自己的一体化的大数据机，同时还有专门为Hadoop平台推出了分析软件InfoSphere BigInsights<b>。</b>微软除了最新的SQL Server 2012中提供了类似插件来支持与Hadoop的互操作外，也推出自己的Hadoop版本<b>。</b> </p>
<p> 颇值得玩味的是，作为传统数据库厂商，甲骨文和SAP旗下的Sybase等推崇的使用Hadoop方式是先通过Hadoop对大数据进行预处理，然后把这些预处理后的数据导入到数据仓库中，在利用传统数据仓库中的数据分析和挖掘引擎来对数据的分析<b>。</b>而一些专门的Hadoop技术供应商更愿意用户直接通过Hadoop来进行数据的分析，就像大多数互联网用户所做的那样，比如，前面提到的Vpon威朋<b>、</b>百分点以及联通都是这样来使用Hadoop的。 </p>
<p>当然，也有人认为Hadoop未来会对传统数据库市场带来相当大的冲击<b>。</b>Informatica郑玮就表示，虽然目前大多数人不认为Hadoop会取代传统数据库(或数据仓库)，但Hadoop的应用场景肯定还会进一步拓展，从这个角度而言，对传统数据库(或数据仓库)是有冲击的<b>。</b> </p>
<p> 值得一提的是，对大数据市场感兴趣的远不只是数据库厂商和从事数据集成服务的厂商,存储厂商甚至芯片厂商都纷纷跻身其中<b>。</b>比如，EMC先是推出了自己Hadoop平台Greenplum HD，随后又推出了基于协作分析大数据社交平台Greenplum Chorus;英特尔不仅推出了自己的Hadoop版本，还Hadoop之上开发了管理工具和监控工具，来简化Hadoop集群的部署与管理<b>。</b>富士通也宣布开发出一项为大数据自动提供分析方案的技术。可喜的是，大数据市场也有中国公司的身影，华为在9月5日刚刚宣布推出X位一体的大数据存储一体机，致力于将海量结构化<b>、</b>非结构化数据的统一存储、分析、备份和归档。 </p>
<p><strong>市场压力助推大数据热</strong> </p>
<p>深究大数据热的成因，不难发现，市场的竞争压力才是根本原因。由于激烈的市场竞争让所有企业都希望通过数据分析来获得智能，从而赢得竞争优势<b>。</b>实际上，越来越多的公司正是成功地利用大数据技术来赢得了竞争优势。 </p>
<p>互联网企业无疑是首先从大数据技术受益的企业。以Facebook为例，Facebook的HBase系统每天要处理25亿条消息<b>、</b>超过500 TB的数据、用户点击Like按钮的次数达到27亿次<b>、</b>上传3亿张照片、每半个小时扫描的数据大约为105TB。如此大量的数据处理量远非传统数据库系统所能承担。 </p>
<p>而Vpon威朋也借助3S系统迎来了客户的认同。以Vpon威朋为某餐饮企业做的促销广告为例，最初是从早上9点到下午5点的全天全网投放，但3S系统分析发现，如果用户使用WI-FI接入网络，很有可能他已经选好了消费地点，而如果使用3G，用户很可能在等人，而这个时候如果距离他75米处有个餐饮店，他就非常可能会改变消费决策去这个餐饮店——3G用户比WI-FI用户的转化率和到店率高出28%，即把当初全天全网投放转为重点时段投放3G用户<b>。</b>由此可见，这样的数据对于移动广告投放和优化有着至关重要的影响。 </p>
<p>当然，传统的商业智能用户也是率先采用大数据的企业。比如，在金融行业，反欺诈是一项非常重要的应用，特别是对于信用卡业务而言<b>。</b>反欺诈需要对用户的身份、过往的消费行为以及消费发生的时间<b>、</b>地点等要素进行关联分析，资料越是详尽，结果就越是准确。而另一方面，随着信用卡发行量的迅速攀升(目前，中国信用卡的发卡量已经超过2亿张)，几乎每时每刻都在生成新的数据，这些都在挑战反欺诈系统的执行效率，这正是Hadoop可以发力的地方<b>。</b>今天，美国银行就在利用Hadoop来快速识别商业欺骗。 </p>
<p>“对反欺诈应用系统而言，大数据意味着更大的机会。因为通过在反欺诈系统等银行业务系统中增加对大数据的处理能力，从而让决策更为科学和精准，最终帮助企业获得显著的绩效改进和业务收益<b>。</b>”FICO(费埃哲)公司首席执行官Will Lansing告诉计算机世界报记者。 </p>
<p>而电信也成为最积极拥抱大数据的行业之一，在客户关系维护<b>、</b>服务保证<b>、</b>网络功能优化等方面都能发挥作用。比如，来自中国台湾的精诚集团推出的Hadoop一体机产品，它的一些电信企业用户就利用这个Hadoop一体机来进行AP溯源，也就是分析用户的上网行为日志，以便明确哪个时间点<b>、</b>哪个用户、访问了哪些应用，根据这些数据可以与广告商进行更好的合作<b>。</b> </p>
<p> 当然，除了像上面所提及的百分比、Vpon威朋这样的互联网企业和电信<b>、</b>金融等商业智能的用户外，其他传统企业同样也可以通过用户大数据而受益。 </p>
<p> “今天不仅像金融、电信等商业智能的传统用户需要，更多普通企业也需要转型为分析驱动型企业。”SAS公司大中国区咨询服务和技术总监姚远告诉记者，有日本汽车公司就在利用网络微博和汽车销售访谈、修车后的反馈来分析用户对其品牌汽车负面评价的原因，从而改进其产品和销售流程<b>。</b> </p>
<p> 视频监控解决方案提供商海康威视也受益于数据库技术。现在它推出了一套基于Hadoop的视频监控管理系统，可以从视频信息中提取出车牌<b>、</b>车身颜色，甚至是该车驾驶员的照片，就可以查出车牌、号码、轨迹、违章等，而号牌分析<b>、</b>关联分析等一系列应用也可以在大数据的基础上展开。 </p>
<p> “我们认为大数据未来有非常大的应用空间。比如，将来我们可以分析图像中存在的某个车是什么品牌、什么颜色的、谁开的<b>、</b>车主是谁、速度多少，用于预防交通拥堵、逃犯追踪等。”海康威视副总裁兼CTO蒋海青表示<b>。</b> </p>
<p><strong> 大数据落地人才最紧缺</strong> </p>
<p> 目前，虽然大数据很热，但是从技术发展阶段而言，它还是处于市场培育期。用到大数据的用户也是边摸索变实施。因此，用户如何用好这项技术可能还是面临一些挑战。这其中最为突出的困难就是人才的缺乏，包括懂得Hadoop相关技术的人才和数据分析人才，尤其是后者，这一点在记者采访用户和厂商时也都被多次提及<b>。</b> </p>
<p> “在数据的分析和处理上，我们银行最需要的是那些有统计学背景的人才，了解银行业务的专业人才，尤其需要懂得将统计学的知识应用到业务上并与之相结合<b>。</b>至于使用具体的工具，是可以后续来学习的。”招行周天虹说。 </p>
<p>这一观点也得到Informatica郑玮和SAS公司大中国区咨询服务和技术总监姚远的认同，两人都不约而同地提出企业需要设立一个“数据科学家”的新职位<b>。</b>“一个数据科学家还必须知道所有数据在哪里<b>、</b>如何拿到它们，以及什么数据是关键、它们如何生成，并懂得构建相应的业务流程。”姚远表示。 </p>
<p>据记者了解，在国外已经有公司开始尝试设立类似“数据科学家”的职位(有的称其为“数据分析师”或者“数据工程师”)，其理想的候选人是对复杂的算法<b>、</b>分析和市场营销都非常熟悉，此外，最好还能懂超高速计算<b>、</b>数据挖掘、统计甚至人工智能。因为与一般商业智能分析师不同，这些专家不仅能找到和提供数据，他们还要使用它进行大量预测。 </p>
<p>用户可能面临的另一个挑战来自于Hadoop是开源软件，本身还处于不断完善之中<b>。</b>同时，虽然有很多厂商围绕Hadoop提供了一些服务和技术支持，而真正能提供全面技术支持的厂商却很少，用户所需要的技术支持大部分还来自于社区<b>。</b>这一点对于像金融、银行这样的客户是非常重要的。 </p>
<p> “大型的互联网企业有足够的资源去研究开源平台，在其之上进行开发、甚至软件封装的工作。而对于招商银行这样的企业而言这样做就不现实，我们需要更成熟的产品和更多的技术支持。”招行周天虹说 </p>
<p>值得庆幸的是，这一点随着Hadoop的普及正在慢慢改观，目前，已经有不少厂商能提供自己的Hadoop版本，比如英特尔<b>、</b>EMC<b>、</b>微软等，另外还有像Cloudera、MapR等开源软件服务商可以像红帽支持Linux来为自己推出的Hadoop版本提供支持和服务<b>。</b>而未来，随着Hadoop生态系统进一步完善和成熟，市场上必定会涌现更多专业的工具和专业的服务，Hadoop也必将为我们了解我们的业务乃至认识我们所在的这个世界提供更多的帮助<b>。</b> </p>
<p>[作者：邹大斌] </p>
<p><b></b></p>
<p><em>页 2</em> </p>
<p><strong>数据库不能承受之重</strong> </p>
<p>应该说，数据分析或者商业智能我们并不陌生。先建立数据仓库，然后通过数据建模来完成数据分析和挖掘，这个套路已经存在了20多年来<b>。</b>为什么现在不灵了?为什么要用Hadoop<b>?</b> </p>
<p> 中科院计算所副研究员、Hadoopin China开源社区发起人查礼认为， Hadoop等新大数据技术流行最重要的原因在于，多年来建立在数据仓库之上的商业智能是面向以结构化数据为主的场景，它采用的是一种集中式<b>、</b>纵向扩展(Scale-up)架构，主要面对的是少量用户的非实时性查询需求和报表需求，一旦将其应用于处理海量<b>、</b>非结构化数据时，不管是性能<b>、</b>可扩展性都面临瓶颈。比如，对于传统数据库和数据仓库而言，PB级数据尚能应对，面对更大数据量的处理时就面临性能瓶颈<b>。</b>另外，传统的数据仓库系统建设周期短则几个月，长则一年，用户得到回报的周期太长。 </p>
<p>“与之相反，后期之秀的Hadoop和以MongoDB为代表的NoSQL数据库天生就是为应对海量数据而设计的，它们采用的都是分布式架构，对数据的处理都是以一种可靠<b>、</b>高效<b>、</b>可伸缩的方式进行处理的，可以很容易地根据数据量和用户需求按需动态地扩展，而且是以一种横向扩展(Scale-out)方式进行，这种特殊的软件架构设计使其可以轻松应对TB级的数据存储和分析需求<b>。</b>”查礼表示<b>。</b> </p>
<p> 以中国联通推出的基于Hadoop的移动用户上网记录查阅系统为例。这是一个为解决3G客户数据流量查询需求<b>、</b>解决计费争议而推出的系统，架构在英特尔版的Hadoop之上，用户可自助快速查询自己的上网记录。据中国联通研究院副院长黄文良介绍，用户每登录一个网页(如访问新浪首页)就会产生20多条记录，随着用户的增加而产生的海量数据如果采用传统数据库就遇到了问题<b>。</b>“在采用Hadoop之前，我们曾试过采用数据库，但后来发现关系型数据库存储数据量到百亿条时就有些困难，一次查询可能几个小时都出不来结果<b>。</b>”黄文良说。 </p>
<p> 用户偏向Hadoop的另一个重要原因在于这一数据处理平台的高性价比，这一点对于草根出生的互联网企业尤为重要<b>。</b>事实上，从理论上而言，如果不考虑成本，采用传统方式也能处理大数据<b>。</b>“传统数据库方式也是能解决大数据问题的。只是实践中，我们必须要考虑成本的问题，包括投入多少资金、解决多大容量的数据。即便是开源平台，投入的人员<b>、</b>后期的运维费用这都是要考虑的成本。”招商银行总行信息技术管理办公室总经理周天虹说。 </p>
<p> 而在专门从事数据集成相关业务的Informatica公司核心技术部资深产品管理总监郑玮看来，Hadoop天生具有价格优势<b>。</b>其一是Hadoop是开源软件，尽管开源并不意味着免费，但和商业软件相比，其采购成本要低得多;其二是Hadoop是为普通的硬件设备而设计，本身已经充分考虑的这些硬件的不可靠性，而不是专用硬件，这就大幅降低了硬件投入成本<b>。</b> </p>
<p> “Hadoop的成本优势，使得其可以大幅降低数据分析和处理的门槛，提高数据的回报率。”郑玮告诉计算机世界报记者<b>。</b> </p>
<p><strong> Hadoop取代传统数据仓库?</strong> </p>
<p>如今，Hadoop的风头如此之劲，对于一些传统数据库和数据仓库用户而言，似乎有“既生瑜，何生亮”之感<b>。</b>那么，未来Hadoop是否会取代传统数据库<b>?</b>传统数据库会面临多大的挑战? </p>
<p> “对传统数据库厂商而言，大数据绝对是机会多过挑战。因为大数据的应用场景虽然与传统数据库有一定程度的重合，但更大多数情况是各有各的适用领域<b>。</b>这两者应该相互补充，来共同应对用户对数据的管理需求。”甲骨文公司副总裁兼大中华区CTO喻思成在接受计算机世界报记者采访时表示<b>。</b> </p>
<p> SAP全球数据库解决方案亚太区技术总监卢东明也认为，大数据实际上将为数据仓库带来更多的商业机会。 “人们可以使用类似MapReduce的技术，来获得一些有价值的信息，这些都是此前绝对不可能分析出来<b>。</b>同时，也可以利用Hadoop来预处理数据，然后将把它用于数据仓库，这实际上会扩大数据仓库的使用。”他说<b>。</b> </p>
<p> 当然，不会被取代并不意味着数据库厂商可以对大数据市场无动于衷，毕竟大数据市场与数据库市场关系如今密切，如果厂商应对不当也会波及其传统市场<b>。</b>正因为如此，我们看到传统数据库厂商纷纷向Hadoop示好，推出各种插件来打通传统数据库(或数据仓库)与Hadoop之间的联系，或者更进一步直接进入大数据市场<b>。</b> </p>
<p> 甲骨文就是积极跻身大数据市场的厂商之一，它推出了软硬一体的大数据库机，其中内置了Cloudera版的Hadoop<b>、</b>Oracle NoSQL，还内置了与Oracle数据库的连接器来与Hadoop进行数据通信。在SAP Sybase最新一代数据仓库SAP Sybase IQ 15.4也同样配备了很多接口,通过这些接口可以同时访问SAP Sybase IQ和Hadoop<b>。</b>与甲骨文类似，IBM也推出了自己的一体化的大数据机，同时还有专门为Hadoop平台推出了分析软件InfoSphere BigInsights<b>。</b>微软除了最新的SQL Server 2012中提供了类似插件来支持与Hadoop的互操作外，也推出自己的Hadoop版本<b>。</b> </p>
<p> 颇值得玩味的是，作为传统数据库厂商，甲骨文和SAP旗下的Sybase等推崇的使用Hadoop方式是先通过Hadoop对大数据进行预处理，然后把这些预处理后的数据导入到数据仓库中，在利用传统数据仓库中的数据分析和挖掘引擎来对数据的分析<b>。</b>而一些专门的Hadoop技术供应商更愿意用户直接通过Hadoop来进行数据的分析，就像大多数互联网用户所做的那样，比如，前面提到的Vpon威朋<b>、</b>百分点以及联通都是这样来使用Hadoop的。 </p>
<p>当然，也有人认为Hadoop未来会对传统数据库市场带来相当大的冲击<b>。</b>Informatica郑玮就表示，虽然目前大多数人不认为Hadoop会取代传统数据库(或数据仓库)，但Hadoop的应用场景肯定还会进一步拓展，从这个角度而言，对传统数据库(或数据仓库)是有冲击的<b>。</b> </p>
<p> 值得一提的是，对大数据市场感兴趣的远不只是数据库厂商和从事数据集成服务的厂商,存储厂商甚至芯片厂商都纷纷跻身其中<b>。</b>比如，EMC先是推出了自己Hadoop平台Greenplum HD，随后又推出了基于协作分析大数据社交平台Greenplum Chorus;英特尔不仅推出了自己的Hadoop版本，还Hadoop之上开发了管理工具和监控工具，来简化Hadoop集群的部署与管理<b>。</b>富士通也宣布开发出一项为大数据自动提供分析方案的技术。可喜的是，大数据市场也有中国公司的身影，华为在9月5日刚刚宣布推出X位一体的大数据存储一体机，致力于将海量结构化<b>、</b>非结构化数据的统一存储、分析、备份和归档。 </p>
<p>[作者：邹大斌] </p>
<p><b></b></p>
<p><em>页 3</em> </p>
<p><strong>市场压力助推大数据热</strong> </p>
<p>深究大数据热的成因，不难发现，市场的竞争压力才是根本原因。由于激烈的市场竞争让所有企业都希望通过数据分析来获得智能，从而赢得竞争优势<b>。</b>实际上，越来越多的公司正是成功地利用大数据技术来赢得了竞争优势。 </p>
<p>互联网企业无疑是首先从大数据技术受益的企业。以Facebook为例，Facebook的HBase系统每天要处理25亿条消息<b>、</b>超过500 TB的数据、用户点击Like按钮的次数达到27亿次<b>、</b>上传3亿张照片、每半个小时扫描的数据大约为105TB。如此大量的数据处理量远非传统数据库系统所能承担。 </p>
<p>而Vpon威朋也借助3S系统迎来了客户的认同。以Vpon威朋为某餐饮企业做的促销广告为例，最初是从早上9点到下午5点的全天全网投放，但3S系统分析发现，如果用户使用WI-FI接入网络，很有可能他已经选好了消费地点，而如果使用3G，用户很可能在等人，而这个时候如果距离他75米处有个餐饮店，他就非常可能会改变消费决策去这个餐饮店——3G用户比WI-FI用户的转化率和到店率高出28%，即把当初全天全网投放转为重点时段投放3G用户<b>。</b>由此可见，这样的数据对于移动广告投放和优化有着至关重要的影响。 </p>
<p>当然，传统的商业智能用户也是率先采用大数据的企业。比如，在金融行业，反欺诈是一项非常重要的应用，特别是对于信用卡业务而言<b>。</b>反欺诈需要对用户的身份、过往的消费行为以及消费发生的时间<b>、</b>地点等要素进行关联分析，资料越是详尽，结果就越是准确。而另一方面，随着信用卡发行量的迅速攀升(目前，中国信用卡的发卡量已经超过2亿张)，几乎每时每刻都在生成新的数据，这些都在挑战反欺诈系统的执行效率，这正是Hadoop可以发力的地方<b>。</b>今天，美国银行就在利用Hadoop来快速识别商业欺骗。 </p>
<p>“对反欺诈应用系统而言，大数据意味着更大的机会。因为通过在反欺诈系统等银行业务系统中增加对大数据的处理能力，从而让决策更为科学和精准，最终帮助企业获得显著的绩效改进和业务收益<b>。</b>”FICO(费埃哲)公司首席执行官Will Lansing告诉计算机世界报记者。 </p>
<p>而电信也成为最积极拥抱大数据的行业之一，在客户关系维护<b>、</b>服务保证<b>、</b>网络功能优化等方面都能发挥作用。比如，来自中国台湾的精诚集团推出的Hadoop一体机产品，它的一些电信企业用户就利用这个Hadoop一体机来进行AP溯源，也就是分析用户的上网行为日志，以便明确哪个时间点<b>、</b>哪个用户、访问了哪些应用，根据这些数据可以与广告商进行更好的合作<b>。</b> </p>
<p> 当然，除了像上面所提及的百分比、Vpon威朋这样的互联网企业和电信<b>、</b>金融等商业智能的用户外，其他传统企业同样也可以通过用户大数据而受益。 </p>
<p> “今天不仅像金融、电信等商业智能的传统用户需要，更多普通企业也需要转型为分析驱动型企业。”SAS公司大中国区咨询服务和技术总监姚远告诉记者，有日本汽车公司就在利用网络微博和汽车销售访谈、修车后的反馈来分析用户对其品牌汽车负面评价的原因，从而改进其产品和销售流程<b>。</b> </p>
<p> 视频监控解决方案提供商海康威视也受益于数据库技术。现在它推出了一套基于Hadoop的视频监控管理系统，可以从视频信息中提取出车牌<b>、</b>车身颜色，甚至是该车驾驶员的照片，就可以查出车牌、号码、轨迹、违章等，而号牌分析<b>、</b>关联分析等一系列应用也可以在大数据的基础上展开。 </p>
<p> “我们认为大数据未来有非常大的应用空间。比如，将来我们可以分析图像中存在的某个车是什么品牌、什么颜色的、谁开的<b>、</b>车主是谁、速度多少，用于预防交通拥堵、逃犯追踪等。”海康威视副总裁兼CTO蒋海青表示<b>。</b> </p>
<p><strong> 大数据落地人才最紧缺</strong> </p>
<p> 目前，虽然大数据很热，但是从技术发展阶段而言，它还是处于市场培育期。用到大数据的用户也是边摸索变实施。因此，用户如何用好这项技术可能还是面临一些挑战。这其中最为突出的困难就是人才的缺乏，包括懂得Hadoop相关技术的人才和数据分析人才，尤其是后者，这一点在记者采访用户和厂商时也都被多次提及<b>。</b> </p>
<p> “在数据的分析和处理上，我们银行最需要的是那些有统计学背景的人才，了解银行业务的专业人才，尤其需要懂得将统计学的知识应用到业务上并与之相结合<b>。</b>至于使用具体的工具，是可以后续来学习的。”招行周天虹说。 </p>
<p>这一观点也得到Informatica郑玮和SAS公司大中国区咨询服务和技术总监姚远的认同，两人都不约而同地提出企业需要设立一个“数据科学家”的新职位<b>。</b>“一个数据科学家还必须知道所有数据在哪里<b>、</b>如何拿到它们，以及什么数据是关键、它们如何生成，并懂得构建相应的业务流程。”姚远表示。 </p>
<p>据记者了解，在国外已经有公司开始尝试设立类似“数据科学家”的职位(有的称其为“数据分析师”或者“数据工程师”)，其理想的候选人是对复杂的算法<b>、</b>分析和市场营销都非常熟悉，此外，最好还能懂超高速计算<b>、</b>数据挖掘、统计甚至人工智能。因为与一般商业智能分析师不同，这些专家不仅能找到和提供数据，他们还要使用它进行大量预测。 </p>
<p>用户可能面临的另一个挑战来自于Hadoop是开源软件，本身还处于不断完善之中<b>。</b>同时，虽然有很多厂商围绕Hadoop提供了一些服务和技术支持，而真正能提供全面技术支持的厂商却很少，用户所需要的技术支持大部分还来自于社区<b>。</b>这一点对于像金融、银行这样的客户是非常重要的。 </p>
<p> “大型的互联网企业有足够的资源去研究开源平台，在其之上进行开发、甚至软件封装的工作。而对于招商银行这样的企业而言这样做就不现实，我们需要更成熟的产品和更多的技术支持。”招行周天虹说 </p>
<p>值得庆幸的是，这一点随着Hadoop的普及正在慢慢改观，目前，已经有不少厂商能提供自己的Hadoop版本，比如英特尔<b>、</b>EMC<b>、</b>微软等，另外还有像Cloudera、MapR等开源软件服务商可以像红帽支持Linux来为自己推出的Hadoop版本提供支持和服务<b>。</b>而未来，随着Hadoop生态系统进一步完善和成熟，市场上必定会涌现更多专业的工具和专业的服务，Hadoop也必将为我们了解我们的业务乃至认识我们所在的这个世界提供更多的帮助<b>。</b> </p>
<p>[作者：邹大斌] </p>
<p><b></b></p>
<h3>大数据统计与人才要求</h3>
<ul>
<li>2.1 Hadoop17-18 </li>
<li>2.2 HDFS18-21 </li>
<li>2.3 MapReduce21-23 </li>
<li>2.4 Hive23-24</li>
</ul>
<p><a href="http://bbs.pinggu.org/bigdata/">http://bbs.pinggu.org/bigdata/</a> </p>
<p><a href="http://www.jdon.com/design.htm">http://www.jdon.com/design.htm</a> </p>
<p> 基本要求：   <br />o 计算机相关专业    <br />o 叁年以上工作经验    <br />技能要求    <br />o 优秀的编程能力，熟悉Java程序编程，有在Linux下面的Java程序开发、调试的经验；    <br />o 熟悉Mysql数据库的使用与优化。    <br />o 良好的沟通能力。    <br />o 优秀的逻辑分析能力和问题解决能力；    <br />o 团队合作和乐于助人的精神；    <br />o 良好的沟通能力。    <br />加分技能：    <br />o 了解云计算的基本概念，熟悉Hadoop平台，能够基于HDFS分布式文件系统进行开发；    <br />o 对大数据基本概念比较了解，熟悉大<a href="http://www.jobui.com/salary/%E5%8D%97%E4%BA%AC-%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/">数据分析</a>技术的相关技术思路；    <br />o 对MapReduce编程模式了解，会编写简单的分布式并行计算程序；    <br />语言    <br />技能：    <br />o 较好的英文读写能力 </p>
<p> 1、 所需工作经验：   <br />a) 有Google、微软亚洲研究院、百度、腾讯、淘宝阿里研究中心等公司或高校从事大数据架构、数据分析开发和设计工作10年以上。    <br />b) 深入掌握大数据分析领域关键技术，精通数据分析、挖掘和流处理领域，并具备计算模式、数据挖掘、DB、OS核心技术的垂直拉通能力，了解业界大数据计算分析的关键技术及发展动态。    <br />2、 所需必备资历：大数据领域技术带头人 </p>
<p>3、 语言能力要求：精通英语听说读写能力，具备中文沟通能力更佳。 </p>
<p>职位描述 </p>
<p>岗位职责： </p>
<p>1、规划大数据平台指标体系、数据产品以及<a href="http://www.job592.com/tag/shanghai_3899.html">数据分析</a>架构；&#160; </p>
<p>2、负责<a href="http://www.job592.com/tag/shanghai_458.html">数据挖掘</a>架构<a href="http://www.job592.com/tag/shanghai_3870.html">设计</a>、平台规划，以及关键<a href="http://www.job592.com/tag/shanghai_3252.html">技术</a>研究；&#160; </p>
<p>3、构建模型，通过海量数据的挖掘，支持客户相关推荐,订单预测分析,社交<a href="http://www.job592.com/tag/shanghai_4553.html">营销</a>等； </p>
<p>4、通过对内部员工及各个系统网站平台、会员等数据的清理数据分析，数据挖掘，支持战略及运营决策； </p>
<p>5、提升销售智能分析从商机到订单执行各环节的转化率；&#160; </p>
<p>6、建立基于AB测试的数据分析文化，指导公司运营项目。 </p>
<p>任职资格： </p>
<p>1、大学本科以上学历，6年以上数据分析同类行业、岗位经验；数学、统计学、理工类、电子商务、社会学、市场营销相关专业；&#160; </p>
<p>2、具有丰富的数据仓库项目设计和实施能力；&#160; </p>
<p>3、5年以上团队管理经验熟悉数据库及SQL语言，了解hadoop等分布式计算技术；&#160; </p>
<p>4、熟悉SAS、Clementine或其他挖掘工具；精通各种模型算法； </p>
<p>5、GA网页分析，熟悉excel、SPSS、SAS等统计工具，熟悉Cognos等BI产品；&#160; </p>
<p>6、很强的团队协作精神数据敏感，好奇心强； </p>
<p>7、较强的学习能力、沟通能力。 </p>
<p>1.熟练掌握python或java工具，熟悉linux/unix环境； </p>
<p>2.熟练掌握hadoop、map/reduce开发框架； </p>
<p>3.熟练掌握常用的数据挖掘和统计方法； </p>
<p>4.对机器学习算法和理论有较深入的研究和实践，有较强的数学功底； </p>
<p>5.有2年以上数据挖掘相关经验。 </p>
<p>6.有定位数据挖掘相关经验者优先。 </p>
<p> 岗位职责   <br />1、带领团队为客户提供大数据处理和大数据分析的业务解决方案；    <br />2、对多种数据源进行深度诊断性组合分析、挖掘和建模；    <br />3、从数据分析中发现市场新动向和不同客户应用场景，提供决策支持；    <br />4、指导团队成员根据不同业务需求、业务场景构建业务模型；    <br />5、负责与各业务部门沟通、寻找业务突破点，提升产品等级，提高客户体验。    <br />岗位要求    <br />1、全日制计算机、统计、数学、信息技术硕士以上学历；    <br />2、5年以上金融、电信行业数据分析相关项目运作经验；    <br />3、有丰富的数据分析、挖掘和建模的经验，能从海量数据提炼核心结果；    <br />4、有客户数据模型建立和运营经验、数据化运营经验、数据类产品类规划经验；    <br />5、有优秀的沟通能力以及先进的团队管理理念；    <br />6、熟悉数据采集、统计分析、数据仓库、数据挖掘、数据可视化、推荐系统等相关领域知识与算法；    <br />7、了解企业大数据方案，如EMC Greenplum、SAP HANA；    <br />8、熟悉大规模分布式计算平台如Hadoop； </p>
<p>9、熟悉NoSQL数据库 </p>
<p> 熟练Linux操作,对Linux有较深了解   <br />精通或熟悉Hadoop,Hbase, MongoDB,Hive中的多个；    <br />熟悉Hadoop底层文件系统,熟悉Hadoop分布式计算框架    <br />可熟练编写mapreduce代码，    <br />较强的分布式存储架构设计能力和数据建模能力    <br />有海量数据存储的安装部署维护经验，对大规模数据存储/传输/处理等有丰富的经验。    <br />有网络日志分析、ETL经验者优先 </p>
<p> 1、负责基于大数据的推荐和BI系统的设计、培训和开发工作；   <br />2、探索大数据技术趋势和核心技术，拟定开发计划。任职要求：1、本科及以上学历，计算机及相关专业，英语熟练；    <br />2、熟悉主流的分布式计算框架如hadoop、zookeeper、hbase群集环境的部署、开发和管理；    <br />3、要求3年以上软件设计和开发经验，1年以上大数据处理与分析（推荐、BI）系统的架构设计或应用开发经验； </p>
<p>4、对大数据充满热情，系统分析能力和表达能力强，富于拼搏创新，硕士博士优先。我们将为优秀的人才提供有竞争力的薪酬和广阔的发展空间。简历接收 </p>
<p> 1、计算机、软件相关专业本科以上学历；   <br />2、具备1年以上<b>大数据</b>应用开发经验；    <br />3、熟悉Hadoop相关<b>大数据</b>处理的技术，熟悉Hive，Pig，hbase以及Mapreduce应用开发；    <br />4、有数据库和nosql等方面的知识，有项目管理，新技术预研的能力，有P级以上大型数据处理经验者优先；    <br />5、工作责任心强，具备良好的团队合作精神，有较强的沟通、协作能力，可承受较大的工作压力； </p>
<p>6、有较强的学习能力和完成工作的能力。&#160; </p>
<h3>大数据面临人才荒</h3>
<p> <b>来源网址：</b> <a href="http://www.ctocio.com/reports/3187.html">http://www.ctocio.com/reports/3187.html</a>
<p>大数据分析主要基于预言建模或未来趋势分析<b>。</b>但是，一般业务用户或者传统B数据分析师并不具备开发预言分析应用程序模型的技能<b>。</b> 根据咨询师和IT经理的观点，“大数据”分析的最大挑战可以简单地归结为两个方面：1、技术尚未成且用户体验不佳;2<b>、</b>缺乏相关领域的技术人才储备。 </p>
<p>许多大数据技术（如Hadoop MapReduce）都来自开源社区，由致力于研究高效处理大容量信息的互联网志愿者进行开发，如Google和Yahoo，其中包括结构化和非结构化数据<b>。</b>因此，大多数技术在成熟度和可访问性方面都不及传统数据库和数据管理套件，而且可用于帮助数据仓库和分析人员熟悉这些环境的补充分析工具还很有限<b>。</b> </p>
<p>Ron Bodkin是大数据分析咨询公司Think Big Analytics的CEO，他指出，所有这些技术的学习曲线都不平坦，有许多新技术和无文档的技术需要学习<b>。</b>大多数人都习惯于使用关系数据库管理系统，这是一种完全不同的数据存储和处理模式。 </p>
<p>在管理和组织高度结构化的数据和SQL建模与报表制作上，虽然数据管理团队一般都具备良好的知识积累，但是这些常规技能并不适用于非结构化和扁平文件的大数据领域，其中命令行和NoSQL数据库技术 才是大多数新兴平台的核心构建模块<b>。</b> </p>
<p>comScore是一家Web分析提供商，近年来主要销售开发和实现大数据分析策略的智能服务<b>。</b>公司的软件工程副总裁Will Duckworth指出：“您必须着手准备。它现在还不是成熟的产品，还不能简单地购买、安装和运行在服务器上<b>。</b>您需要配备良好的系统管理员，以及掌握建立这些环境的实践方法。” </p>
<p><strong>人才缺乏严重</strong> </p>
<p>大数据分析主要基于预言建模或未来趋势分析<b>。</b>但是，一般业务用户或者传统B数据分析师并不具备开发 预言分析应用程序模型的技能。此外，许多数据都处于原始形式，来源于Web活动日志或检测器等<b>。</b>因此，公司需要配备一些精通于统计和数学原理的骨干专家，他们要能够建立高级分析模型，发现趋势和隐藏的模式，使大数据真正发挥作用<b>。</b> </p>
<p>Forrester研究公司的首席分析师Brian Hopkins说：“您不仅需要能够实现价值的IT运营技能，而且我们现在最缺乏的大数据科学家具备统计博士学位的人才<b>。</b>大部分数据是原始数据它们不能直接读取和分析。处理这些原始信息的人员一定要具备一些特定的技能集，而且您需要在业务中引入这些人才<b>。</b>” </p>
<p>comScore公司的业务主要是通过大量的Web数据分析预测出客户趋势，许多分析用户都接受过预言建模培训，技术上足够理解特定查询对于整个系统性能的影响<b>。</b>然而，Duckworth指出，其他公司并不具备这样的条件。所以comScore在再次教育方面投入了许多时间和资金，帮助他们重新审视数据规模，而在他们建立模型和查询时投入时间考虑数据分区<b>、</b>负载规模等细节问题。 </p>
<p>同时，公司还设计了考虑制衡的大数据系统。例如，如果有人试图运行可能破坏集群的查询，那么系统会发出提示，保证该用户完全知晓所执行任务的危害<b>。</b>Duckworth说：“基于规模效应，问题会传播得很快。”ComScore还引入了预打包应用程序，给它的Hadoop大数据分析环境增加了类似SQL的环境，因此它更容易被主流用户接受<b>。</b> </p>
<p>Zions Bancorporation是一家商业银行，它利用大数据技术对各种贷款业务进行建模和风险管理<b>。</b>在这家公司中，培训也是大数据分析策略的主要部分。但是，培训不仅仅是学习Hadoop技能，也不是统计学速成课。相反，要花费一定的时间和精力使技术团队成员适应新技术，使他们能够顺利过渡到全新的数据管理方式<b>。</b> </p>
<p>作为Zions的前任数据仓库、BI和分析高级副总裁，Clint Johnson指出：“这是一种传统且保守的IT部门不愿意实现的新技术<b>。</b>您的系统管理员或数据库管理员一直以来的工作都是围绕一个特定的技术集，而此时您突然给他们强加一种新技术，并要求他们学习这种新技术<b>。</b>您必须面对这项新模型支持所带来的文化挑战。” </p>
<p>(信息来源：中关村在线) </p>
<p><b></b></p>
<h3>大数据招聘，我就这样被算法选中</h3>
<p> <b>来源网址：</b> <a href="http://www.linuxeden.com/html/news/20130705/141062.html">http://www.linuxeden.com/html/news/20130705/141062.html</a>
<p>杰德·多明格斯今年26岁，从未上过大学，被镀金公司的算法判定为编程高手，而后被这家新创公司招聘为程序员<b>。</b> </p>
<p>​（文／ MATT RICHTEL）去年夏天，26岁的杰德•多明格斯（Jade Domingues）收到一封突如其来的邮件，旧金山一家初创公司请他去面试程序员<b>。</b>多明格斯那个时候住在加利福利亚州帕萨迪纳市一间租来的屋子里，靠信用卡赊账度日，他正在自学编程。多明格斯在高中表现中等，也没想过要上大学<b>。</b>但是，在云端的某处有那么一个人，他认为多明格斯有可能是个天才，再不济也是块未经打磨的原石。 </p>
<p>“招人时使用的传统指标可能有错，大大的错了，”镀金公司的首席科学家薇薇安·明这样评论<b>。     <br /></b>镀金公司的创始人卢卡·邦马萨和希尔罗德·德赛希望让发现优秀程序员的过程实现自动化<b>。</b> </p>
<p>那个人就是卢卡•邦马萨（Luca Bonmassar），他通过一种技术发现了多明格斯，这一技术将对企业如何招聘，以及优秀的人才是否在此过程中被遗漏提出重要的问题<b>。</b>新的理念让人把目光从传统的人才指标上移开来一点，比如招募者一般都很关心的麻省理工大学的学位、谷歌公司供职的经历<b>、</b>同事或友人的推荐等等，同时投入更多注意力在一些简单的概念上面：这个人的表现如何？这个人能够做什么？能不能量化分析它？ </p>
<p>这项技术是镀金公司（Gild）的产品，这是一家成立不到两年的初创企业，邦马萨是联合创始人之一<b>。</b>类似镀金公司这样的一小批新公司正奔着这样一个目标努力，那就是让发现有才华的程序员——有着巨大的市场需求量的一个群体——实现自动化<b>。</b>他们的工作属于大数据的范畴，大数据就是利用计算机来收集和分析各种各样的信息，执行许许多多的任务，不管是推荐图书<b>、</b>在网站上投放有针对性的广告，还是预测治疗效果或股票价格。 </p>
<h4><strong>让算法帮你，发现那些未被人发现的人才</strong></h4>
<hr />
<p>近来，越来越多的学者和企业家将大数据应用在人力资源管理和人才搜寻的过程中，创建了一个叫做劳动力科学的新领域<b>。</b>镀金公司在做的，便是看看这些技术是否也可以用来预测一个程序员在工作中的表现。镀金公司在互联网上搜刮线索：他或她写的代码得到其他程序员的好评吗？这些代码是否被重用？这个程序员如何交流想法？他或她在社交网站上如何与人相处？ </p>
<p>镀金公司的方法在很大程度上还仅仅处于初始的阶段，成效如何还有待检验<b>。</b>目前，关于使用大数据来进行招聘的想法有存在很多建设性的争议，同样存在的还有兴奋，尤其是在那些很难找到优秀人才的产业<b>。</b> </p>
<p>镀金公司预期今年的收益大约有200万到300万美元，并且公司已经筹得了1000万美元左右的融资，其中包括LinkedIn的早期投资人<b>、</b>风险资本家马克•卡凡（Mark Kvamme）的一大笔钱。测试或使用镀金公司的技术进行招募的不乏大牌客户，包括Facebook、亚马逊<b>、</b>沃尔玛、谷歌和Twitter。 </p>
<p>企业用镀金公司的技术来发掘新的候选人，同时也评估他们已经在考虑雇佣的人选<b>。</b>镀金公司自己也使用这项技术——他们急需能干的编程人员，可开出的薪资又抵不过大一些的技术公司，所以才找到了杰德<b>。</b>算法判定杰德的编程分数是整个南加州最高的，是几乎无人能敌的100分。 </p>
<p>杰德是谁？他能帮助镀金公司吗？他的故事又告诉了我们关于现今招聘制度和任人唯贤的什么？ </p>
<h4><strong>能力决定一切吗？</strong></h4>
<hr />
<p>硅谷的人大多认同一些特定的想法，比如发展<b>、</b>效率和速度是好的。技术能够解决大部分的事情。变化是难免的；动荡没什么好害怕。或许硅谷人最最相信的一条，就是能力决定一切<b>。</b> </p>
<p>但是，薇薇安•明（Vivienne Ming）却说她认为硅谷并不像人们想的那样任人唯贤<b>。</b>薇薇安•明从2012年年底开始担任镀金公司的首席科学家，她认为有才华的人被忽视<b>、</b>错判或漏选是常有的事。她这样想部分是由于她自己就有过这样的经历。 </p>
<p>明博士生下来是男性，名叫埃文•坎贝尔•史密斯（Evan Campbell Smith）<b>。</b>他是一个好学生，还是一名出色的运动员，保持着高中田径三级跳远和撑杆跳远的校级记录。但他总觉得与自己的身体有着某种脱离。高中毕业后，埃文经历了一次身份危机的全面爆发<b>。</b>他的大学以失败告终，在工作之间换来换去，想过自杀，跌到了所谓的人生最低谷。不过，他并没有卡在那里，而是再一次弹了起来<b>。</b>在27岁那一年，他回到学校，获得了加州大学圣地亚哥分校的认知神经科学的本科学位，此后又先后获得了卡耐基梅隆大学的心理学和计算神经科学的博士学位<b>。</b> </p>
<p>在斯坦福大学读博士后期间，他开始进行性别转变，并在2008年彻底成为薇薇安•明博士<b>。</b> </p>
<p>作为一个女人，明博士开始注意到人们对待她的不同。有些是看起来无伤大雅的小事，像是男性为她开门<b>。</b>也有让她烦心的事情，比如学生来问她数学题的次数比她还是男性时要少了，男性同事和工作上的联系人请她参加社交活动（比如一场棒球赛）的次数也变少了<b>。</b> </p>
<p>偏见往往以人们意识不到的形式体现出来<b>。</b>明博士援引了一项耶鲁大学研究人员取得的发现，研究型大学的教师成员在描述应聘经理职位的女性求职者时，认为其能力相比具有同样资格的男性要逊色得多<b>。</b>美国国家经济研究局公布的另一项研究发现，简历上名字“听起来像黑人”的求职者收到雇主回电的几率要比简历上有一个“听起来像白人”的名字的求职者难上很多<b>。</b> </p>
<p>基本上每个人都同意，性别、长相或者名字的读音不应该影响聘用决定。但明博士把任人唯贤的概念更进一步。她提出，那些用来筛选人才的公认标准，比如在哪里上的大学<b>、</b>之前在哪里工作过，同样也会遗漏人才，并最终成为雇主的损失。 </p>
<p>“招人时使用的传统指标可能有错，大大的错了，”她说<b>。</b> </p>
<p>对于她所说的“这么多被浪费掉的人才”，明博士的应对方法是，制造机器来尽可能地消除人为偏见<b>。</b>这并不是说传统意义上的那些资格应该被忽略，而是加上她认为更复杂的措施予以均衡。总体而言，镀金公司的算法分析一个人时要处理三百来个主要变量：常逛的网站；描述各种技术时使用的语言类型，积极还是消极；在LinkedIn上的技能自述；参与过哪些项目，都干了多久；还有——没错——在哪里上的学<b>、</b>学的什么专业，这所学校当年在《美国新闻与世界报道》上排名是多少。 </p>
<h4><strong>在数据中找淘金</strong></h4>
<hr />
<p>镀金公司并不是唯一在信息中淘金的公司<b>。</b>另一家旧金山的初创公司“人才回收站”（TalentBin），也在互联网上搜索有才华的程序员，根据该公司的网站介绍，TalentBin在程序员聚集的网站网络人才，收集“数据废气”，为雇主创建潜在的招聘名单<b>。</b>另外一家竞争对手是“绝妙招聘”（RemarkableHire），这家公司评估个人能力的方式是看他或她在网上的成果被人评分如何<b>。</b> </p>
<p>还有ENTELO，这家公司试图找出有可能在找工作的人，甚至在这些人自己开始找工作之前就把他们找出来<b>。</b>据其网站介绍，ENETLO使用超过70个变量来找出职业变化的迹象，比如一个人在社交网站上展示自己的方式<b>。</b>该网站写道：“我们处理数据，节省你的精力。”    <br />英国数据分析公司Altimeter Group的负责数据和分析产业的分析师苏珊•艾特琳（Susan Etlinger）表示，这样在招聘时应用大数据“绝对值得一试”<b>。</b>不过她对算法是否改进了雇主已经在做的事情，比如收集简历或推荐信、使用传统上与成功相关的指标等等提出了疑问。    <br />“缺乏实际结果，”她说：“说概率就等于现实还不能说服我<b>。</b>”    <br />大数据公司QUID的共同创始人和首席技术官肖恩•古尔利（Sean Gourley）表示，筛查数据可以为招聘提供信息，但前提是使用时要了解数据不能揭露的信息<b>。</b>“大数据有大数据的偏见，”他说<b>。</b>“你衡量你能测量的”，同时“你低估了测量不了的东西，像是直觉和感召力”。 </p>
<p>古尔利补充说：“当你把人从复杂决策里面排除掉以后，你可以把算法优化成神，但代价又是什么呢？” </p>
<p>明博士没有说要消除人的判断，但她确实认为招聘该由计算机做主，就像一个自动人才吸收和筛检器一样<b>。</b>镀金公司已经积累了一个有700万程序员资料的数据库，并根据所谓的镀金公司得分对他们进行了排名，该公司表示，镀金公司得分是一种衡量一个人可以做什么的方法<b>。</b>最终的目标，明博士希望能拓宽算法，使其可以用于搜索和评估各种类型的劳动力，比如网站设计师、金融分析师，甚至零售店的销售人员。 </p>
<p>“我们自己内部也挖到了一座金矿，”明博士说：“我们发现了在洛杉矶这个捣鼓电脑的孩子<b>。</b>” </p>
<p>她说的是杰德。 </p>
<h4><strong>一个被算法发现的人</strong></h4>
<hr />
<p>多明格斯在洛杉矶长大，在五个孩子中排行第三<b>。</b>妈妈是家庭主妇，爸爸是电信设备的安装工，是一个注重教育的蓝领。 </p>
<p>杰德的成长轨迹却很叛逆<b>。</b>高中读了一半，之前一直是全优生的小多明格斯开始思考，上学到底是为了达标还是为了真正的学习。“价值主张（value proposition）上学是为了找个好工作，”他对我说<b>。</b>“但冷静想，你上学难道不该是为了学习吗？”杰德的成绩大幅下降，他给我说他从阿罕布拉高中毕业时平均分还不到3<b>.</b>0。 </p>
<p>他不但不想上大学，还想证明他不上大学也一样能超级成功。他阅读了大量的创业书籍，开了一家在T恤印刷定制图案的公司，先是在家里干，后来搬到了一间租来的将近100平米的仓库里<b>。</b>他认为他还需要一个网站，于是自学起了编程。 </p>
<p>“我当时拼命用我自己的优点证明自己，”他说<b>。</b>他承认自己可能做得有点儿太过了。“为了证明人们错了而去做事情是不太成熟的表现<b>。</b>” </p>
<p>他的胳膊上有一个纹身，是花体写的“相信”（Believe）。现在他觉得这有些可笑，不过仍旧认为自己能做到他想做的事情<b>。</b>在说到计算机语言的时候，他说：“代码最棒的一点在于，很大程度上是靠能力驱动的。不看你学过什么，只看你学到了什么<b>。</b>” </p>
<p>当镀金公司开始招人时，它假定旧金山和硅谷地区的人才都已经被挑拣干净了<b>。</b>于是，公司让其算法跑了一遍南加州的信息，得出了一系列的程序员<b>。</b>排在头一个就是多明格斯，他GitHub网站上有一个非常坚实的声誉，GitHub 网站是软件开发人员聚集的地方，他们在这里共享代码<b>、</b>交流思想，建立名望<b>。</b>镀金公司就在GitHub以及BitBucket、Google Code等其他少数几个网站上梳理信息，寻找干这行的聪明人<b>。</b> </p>
<p>多明格斯的成绩斐然。他为一个Jekyll-Bootstrap写的代码，建网站时会用到的一个功能，得到了1267位其他网站开发人员的重用，给人留下了很深刻的印象<b>。</b>他的语言和习惯显示出对产品研发的热情和对多种编程工具的酷爱，比如Rails和JavaScript，这都是镀金公司有用的<b>。</b>他的博客和Twitter上的发言表明他固执己见，正是镀金公司希望其初创成员所具备的一点<b>。</b> </p>
<p>镀金公司的招聘人员给他发出了电子邮件，让他来旧金山面试。公司的两位创始人见到了一个富有魅力<b>、</b>充满自信的年轻人——举止从容、善于表达<b>、</b>有想法、笑容很亲切，比其他来面试的应聘者多些棱角，镀金公司的另一位联合创始人兼首席执行官希尔罗伊•德赛（Sheeroy Desai）说<b>。</b> </p>
<p>多明格斯穿了一件亮绿色的帽衫去面试。他问了一些尖锐的问题，比如公司在这些工程师不知情的情况下给他们打分，是否担心这会被视为侵犯隐私？（镀金公司不这么认为，多明格斯也不相信<b>。</b>镀金公司称，它使用的都是公开的信息。） </p>
<p>他们也问了他一些很针对但也很温和的问题，比如能否在有组织的环境中工作<b>。</b>他说他能。公司当即就签下了多明格斯，而他得到了一份年薪在11<b>.</b>5万美元左右的工作。 </p>
<p>“他是一个典型的脑袋灵光、积极性很高的人，但不管出于什么样的原因，在高中时没调动起来，没看见大学的价值，”德赛说。 </p>
<p>德赛先生倒是上了大学，读的是麻省理工大学，极受用人单位推崇的院校之一<b>。</b>德赛说，他是在那里学会了如何应对压力，与才华横溢的人共事，时不时的自叹不如。虽然在学校里学的东西都很重要，但他说，“这并不是事情的全部”<b>。</b>虽然拥有计算机科学的学位，但他很肯定地说：“我是个很烂的开发人员。” </p>
<h4><strong>大数据招聘，有多靠谱？</strong></h4>
<hr />
<p>人力资源管理方面的专家<b>、</b>加州大学洛杉矶分校的教授大卫•列文（David Lewin）说，问一个人能做到什么是一个重要的问题，而问他能不能和其他人一起完成也同样重要<b>。</b>列文博士说，预测一个人在一个组织中有何表现，最可靠的方法便是让已经在那里工作的人进行推荐<b>。</b>现任员工了解公司文化，而且推荐不好他们自己的名声和工作环境也会受牵连。耶鲁大学管理学院最近利用大数据进行的一项研究细化了现有认识，员工推荐是招到好员工一个好方法，但这种方法往往在推荐人本身工作效率很高的情况下效果显著<b>。</b> </p>
<p>在列文博士看来，他很怀疑算法能彻底取代一名可靠雇员的恰当推荐。 </p>
<p>镀金公司的客户里有一家叫Square的公司的业务是做移动支付系统<b>。</b>像其他许多高科技企业一样，Square也在大肆招人，该公司的人力资源总监布莱恩•鲍尔（Bryan Power）在硅谷打拼多年，根据他的说法，现在对于优秀人才的竞争跟dot.com热潮那会儿一样激烈<b>。</b> </p>
<p>“斯坦福出来的或在谷歌工作过是一个极好的指标”，鲍尔说<b>。</b>“他们有名是有道理的。”但这些种子人选有的选项很多，他们不一定选择Square。“我们需要在更大的池子里撒网，”他说：“而这就是镀金公司在做的事情。” </p>
<p>镀金公司的技术为Square找出了一些候选人，但目前还没有签下来的<b>。</b>鲍尔先生说镀金公司的算法给出的是一个泛化的编程分数，与Square要来填补职位空缺的要求不是那么具体。“镀金公司对谁有能力有它的看法，但事情并不是那么简单，”他说，同时表示Square正在和镀金公司洽谈优化模型<b>。</b> </p>
<p>尽管目前来说用处有限，但鲍尔表示，镀金公司在做事情是一个大事件的开始<b>。</b>如今，年轻的工程师更多地在网上发布他们的工作成果，参与开放源码工作，提供更多可用来挖掘原石的数据。“这全都是为了发掘未被发现的人才，”他说。 </p>
<p>德赛说，多明格斯在镀金公司工作了8个月，已经证明了他是一个有才华的程序员<b>。</b>但他也表示，多明格斯“有时候要竭力才能在一个结构化的环境中工作”。当他坐在电脑前，同事都尽量不去打扰他<b>。</b> </p>
<p>在会议上，多明格斯会踊跃发言。他比以前更快活，他说，“只要我能在搭建系统的过程中有发言权”，要不然就又成了一个他只能遵从的系统<b>。</b>他还小小地抱怨了公司的扩张，在过去6个月中镀金公司已经从10个人扩大到40人，添加了管理层和官样文章。 </p>
<p>“事实是，我的性格就是要按照自己的方式做事，最终我难免要自己开公司，”多明格斯说<b>。</b>不过，他又立即补充说：“我很感激和敬重公司给我的机会，我很清楚他们因为我的能力雇佣了我。对此我将永远心怀感激<b>。</b>” </p>
<p>明博士说，多明格斯这个年轻人是一个伟大的发现，同时也是一个未知数。当然，他只是一个例子，既不能用于支持也不能拿来反驳这种新的方法<b>。</b> </p>
<p>“他总是带着那种独行狼的作风，”明博士说。“初期还好，但后来可能会变得很难说<b>。</b>” </p>
<p>算法在测量它可以测量的东西上面表现出色。它算准了多明格斯与电脑打交道的能力<b>。</b>还不确定的，是从长远看，他将如何使用他的天赋与人一起工作。 </p>
<p><strong>编译自：</strong>《纽约时报》，How Big Data Is Playing Recruiter for Specialized Workers    <br /><strong>文章图片：</strong>nytimes.com </p>
<p>转自：<a href="http://www.guokr.com/article/437170/">http://www.guokr.com/article/437170/</a> </p>
<p><small>时间:</small>2013-07-05 22:00<small>来源:</small>果壳网 <small>作者:</small>ccyou<small>责任编辑:</small>zhangkai </p>
<p><b></b></p>
<h3>数据分析_百度百科</h3>
<p> <b>来源网址：</b> <a href="http://baike.baidu.com/link?url=OSeNhY6L-72l4lGd9lnB0TG01ZV3ED7V9dmPvPNB62ix2i4CtZUai4nNqqP48ABF">http://baike.baidu.com/link?url=OSeNhY6L-72l4lGd9lnB0TG01ZV3ED7V9dmPvPNB62ix2i4CtZUai4nNqqP48ABF</a>
<p><b>（<i>Data Analysis</i>）</b> </p>
<p><a href="http://baike.baidu.com/view/38752.htm">数据</a> 是事实，也称观测值，是实验<b>、</b>测量<b>、</b>观察、调查等的结果，常以数量的形式给出。数据分析的目的是把隐没在一大批看来<a href="http://baike.baidu.com/view/46037.htm">杂乱无章</a> 的数据中的信息集中、萃取和提炼出来，以找出所研究对象的内在规律<b>。</b>在实用中，数据分析可帮助人们作出判断，以便采取适当行动。数据分析是组织有目的地收集数据、分析数据，使之成为信息的过程。这一过程是<a href="http://baike.baidu.com/view/205275.htm">质量管理体系</a> 的支持过程<b>。</b>在产品的整个生命周期。(项目数据分析师上海管理中心） </p>
<p><a href="http://baike.baidu.com/picview/362239/362239/0/4bed2e738bd4b31c8f77a84786d6277f9f2ff886.html"><img title="Image(3)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(3)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image3.jpg" width="224" height="142" /></a> </p>
<p><b>怎么判断一个人是否适合做数据分析？</b> </p>
<p>1<b>、</b>问问他喜欢什么，平时对什么事情有兴趣，然后挖掘这些事情中他关注什么数据，比如买彩票？炒股？看<a href="http://baike.baidu.com/view/582.htm">nba</a> ？其实里面都有很多数据，他在他喜欢的领域，如果能对数据如数家珍，对数据的解读能力到位，（比如对某个nba 球星的数据和所对应的表现状态做评论）至少说明他有很强的数据感<b>。</b>数据感是做数据分析的第一要务。 </p>
<p>2、问问他对数据分析的理解和目标，看看他是怎么认识这份工作的<b>。</b> </p>
<p>在<a href="http://baike.baidu.com/view/50313.htm">统计学</a> 领域，有些人将数据分析划分为描述性统计分析<b>、</b>探索性数据分析以及验证性数据分析；其中，探索性数据分析侧重于在数据之中发现新的特征，而验证性数据分析则侧重于已有假设的证实或证伪<b>。</b> </p>
<p>探索性数据分析：是指为了形成值得假设的检验而对数据进行分析的一种方法，是对传统统计学假设检验手段的补充<b>。</b>该方法由美国著名统计学家约翰·图基(John Tukey)命名<b>。</b> </p>
<p>定性数据分析：又称为“定性资料分析”、“定性研究”或者“质性研究资料分析”，是指对诸如词语<b>、</b>照片、观察结果之类的非数值型数据（或者说资料）的分析<b>。</b> </p>
<p><b>Suncorp-Metway使用数据分析实现智慧营销</b> </p>
<p>Suncorp-Metway是澳大利亚一家提供普通保险<b>、</b>银行业<b>、</b>寿险和理财服务的多元化金融服务集团, 旗下拥有5个业务部门，管理着14类商品，由公司及共享服务部门提供支持,其在澳大利亚和新西兰的运营业务与900多万名客户有合作关系<b>。</b> </p>
<p>该公司过去十年间的合并与收购,使客户群增长了200%,这极大增加了客户群数据管理的复杂性,如果解决不好,必将对公司利润产生负面影响<b>.</b>为此,IBM公司为其提供了一套解决方案,组件包括:IBM Cognos 8 BI、IBMInitiate Master Data Service谀IBM Unica<b>。</b> </p>
<p>采用该方案后，Suncorp-Metway公司至少在以下三项业务方面取得显著成效： </p>
<p>1<b>、</b>显著增加了市场份额，但没有增加营销开支； </p>
<p>2、每年大约能够节省1000万美元的集成与相关成本； </p>
<p>3、避免向同一户家庭重复邮寄相同信函并且消除冗余系统，从而同时降低直接邮寄与运营成本<b>。</b> </p>
<p>由此可见，Suncorp-Metway公司通过该方案将此前多个孤立来源的数据集成起来，实现智慧营销，对控制成本，增加利润起到非常积极的作用<b>。</b> </p>
<p><b>数据分析帮助辛辛那提动物园提高客户满意度</b> </p>
<p>辛辛那提动植物园成立于1873年，是世界上著名的动植物园之一，以其物种保护和保存以及高成活率繁殖饲养计划享有极高声誉<b>。</b>它占地面积71英亩，园内有500种动物和3000多种植物，是国内游客人数最多的动植物园之一，曾荣获Zagat十佳动物园，并被《父母》（Parent）杂志评为最受儿童喜欢的动物园，每年接待游客130多万人<b>。</b> </p>
<p>辛辛那提动植物园是一个非营利性组织，是俄亥州同时也是美国国内享受公共补贴最低的动植物园，除去政府补贴，2600万美元年度预算中，自筹资金部分达到三分之二以上<b>。</b>为此，需要不断地寻求增加收入。而要做到这一点，最好办法是为工作人员和游客提供更好的服务，提高游览率。从而实现动植物园与客户和纳税人的双赢。 </p>
<p>借助于该方案强大的收集和处理能力<b>、</b>互联能力、分析能力以及随之带来的洞察力，在部署后，企业实现了以下各方面的受益： </p>
<p>·帮助动植物园了解每个客户浏览<b>、</b>使用和消费模式，根据时间和地理分布情况采取相应的措施改善游客体验，同时实现营业<a href="http://baike.baidu.com/view/604597.htm">收入</a> 最大化<b>。</b> </p>
<p>·根据消费和游览行为对动植物园游客进行细分，针对每一类细分游客开展营销和促销活动，显著提高忠诚度和客户保有量<b>。</b><b>.</b> </p>
<p>·识别消费支出低的游客，针对他们发送具有战略性的直寄广告，同时通过具有创意性的营销和激励计划奖励忠诚客户<b>。</b> </p>
<p>· 360度全方位了解客户行为，优化营销决策，实施解决方案后头一年节省40,000多美元营销成本，同时强化了可测量的结果<b>。</b> </p>
<p>·采用地理分析显示大量未实现预期结果的促销和折扣计划，重新部署资源支持产出率更高的业务活动，动植物园每年节省100,000多美元<b>。</b> </p>
<p>·通过强化<a href="http://baike.baidu.com/view/3905.htm">营销</a> 提高整体游览率，2011年至少新增50,000人次“游览”<b>。</b> </p>
<p>·提供洞察结果强化运营管理。例如，即将关门前冰激淋销售出现高潮，动植物园决定延长冰激淋摊位营业时间，直到关门为止<b>。</b>这一措施夏季每天可增加2,000美元收入。 </p>
<p>·与上年相比，餐饮销售增加30<b>.</b>7%，零售销售增加5.9%。 </p>
<p>·动植物园高层管理团队可以制定更好的决策，不需要 IT 介入或提供支持。 </p>
<p>·将分析引入会议室，利用直观工具帮助业务人员掌握数据<b>。</b> </p>
<p><a href="http://baike.baidu.com/view/362239.htm">数据分析</a> 有极广泛的应用范围。典型的数据分析可能包含以下三个步： </p>
<p>1<b>、</b>探索性数据分析：当数据刚取得时，可能杂乱无章，看不出规律，通过作图、造表<b>、</b>用各种形式的方程拟合，计算某些特征量等手段探索规律性的可能形式，即往什么方向和用何种方式去寻找和揭示隐含在数据中的规律性<b>。</b> </p>
<p>CNNIC数据：中国网民规模 </p>
<p>2<b>、</b>模型选定分析，在探索性分析的基础上提出一类或几类可能的模型，然后通过进一步的分析从中挑选一定的模型。 </p>
<p>3<b>、</b>推断分析：通常使用数理统计方法对所定模型或估计的可靠程度和精确程度作出推断。 </p>
<p>1<b>、</b>列表法 </p>
<p>将实验数据按一定规律用列表方式表达出来是记录和处理实验数据最常用的方法<b>。</b>表格的设计要求对应关系清楚<b>、</b>简单明了、有利于发现相关量之间的物理关系；此外还要求在标题栏中注明物理量名称、符号、数量级和单位等；根据需要还可以列出除原始数据以外的计算栏目和统计栏目等<b>。</b>最后还要求写明表格名称、主要测量仪器的型号、量程和准确度等级、有关环境条件参数如温度<b>、</b>湿度等。 </p>
<p>2、作图法 </p>
<p>作图法可以最醒目地表达物理量间的变化关系。从图线上还可以简便求出实验需要的某些结果（如直线的斜率和截距值等），读出没有进行观测的对应点（内插法），或在一定条件下从图线的延伸部分读到测量范围以外的对应点（外推法）<b>。</b>此外，还可以把某些复杂的函数关系，通过一定的变换用直线图表示出来。例如半导体热敏电阻的电阻与温度关系为，取对数后得到，若用半对数坐标纸，以lgR为纵轴，以1/T为横轴画图，则为一条直线<b>。</b> </p>
<p>3、数据分析主要包含： </p>
<p>1<b>.</b> 简单数学运算（Simple Math） </p>
<p>2.<a href="http://baike.baidu.com/view/8163.htm">统计</a> （Statistics） </p>
<p>3<b>.</b> 快速傅里叶变换（FFT） </p>
<p>4. 平滑和滤波（Smoothing and Filtering） </p>
<p>5<b>.</b><a href="http://baike.baidu.com/view/350200.htm">基线</a> 和峰值分析(Baseline and Peak Analysis)<sup>[1]</sup> </p>
<p>1<b>、</b>搜索引擎蜘蛛抓取数据； </p>
<p>2<b>、</b>网站IP、PV等基本数据； </p>
<p>3、网站的HTTP响应时间数据； </p>
<p>4、<a href="http://baike.baidu.com/view/4232.htm">网站</a> 流量来源数据<b>。</b> </p>
<p>数据分析过程的主要活动由识别<a href="http://baike.baidu.com/view/4869770.htm">信息需求</a> 、收集数据<b>、</b>分析数据、评价并改进数据分析的有效性组成<b>。</b> </p>
<p>识别信息需求是确保数据分析过程有效性的首要条件，可以为收集数据、分析数据提供清晰的目标<b>。</b>识别信息需求是管理者的职责管理者应根据决策和过程控制的需求，提出对信息的需求。就过程控制而言，管理者应识别需求要利用那些信息支持评审过程输入<b>、</b>过程输出、资源配置的合理性、过程活动的优化方案和过程异常变异的发现。 </p>
<p>有目的的收集数据，是确保数据分析过程有效的基础<b>。</b>组织需要对收集数 </p>
<p>数据分析示意图 </p>
<p>据的内容<b>、</b>渠道<b>、</b>方法进行策划。策划时应考虑： </p>
<p>①将识别的需求转化为具体的要求，如评价供方时，需要收集的数据可能包括其过程能力<b>、</b><a href="http://baike.baidu.com/view/2847149.htm">测量系统</a> 不确定度等相关数据； </p>
<p>②明确由谁在何时何处，通过何种渠道和方法收集数据； </p>
<p>③记录表应便于使用； ④采取有效措施，防止数据丢失和虚假数据对系统的干扰<b>。</b> </p>
<p>分析数据是将收集的数据通过加工、整理和分析、使其转化为信息，通常用方法有： </p>
<p>老七种工具，即排列图<b>、</b>因果图、分层法、调查表、散步图<b>、</b><a href="http://baike.baidu.com/view/60840.htm">直方图</a> 、控制图； </p>
<p><a href="http://baike.baidu.com/view/6043101.htm">新七种工具</a> ，即关联图<b>、</b>系统图、<a href="http://baike.baidu.com/view/10337.htm">矩阵</a> 图<b>、</b>KJ法、<a href="http://baike.baidu.com/view/133815.htm">计划评审技术</a> 、PDPC法、矩阵数据图； </p>
<p>数据分析是质量管理体系的基础<b>。</b>组织的管理者应在适当时，通过对以下问题的分析，评估其有效性： </p>
<p>①提供决策的信息是否充分<b>、</b>可信，是否存在因信息不足<b>、</b>失准、滞后而导致决策失误的问题； </p>
<p>②信息对<a href="http://baike.baidu.com/view/543263.htm">持续改进</a> 质量管理体系<b>、</b>过程、产品所发挥的作用是否与期望值一致，是否在产品实现过程中有效运用数据分析； </p>
<p>③收集数据的目的是否明确，收集的数据是否真实和充分，信息渠道是否畅通； </p>
<p>④数据分析方法是否合理，是否将风险控制在可接受的范围； </p>
<p>⑤数据分析所需资源是否得到保障<b>。</b> </p>
<p>在产品的整个寿命<a href="http://baike.baidu.com/view/120466.htm">周期</a> ，包括从市场调研到<a href="http://baike.baidu.com/view/300225.htm">售后服务</a> 和最终处置的各个过程都需要适当运用数据分析过程，以提升有效性<b>。</b>例如J<b>.</b>开普勒通过分析行星角位置的观测数据，找出了<a href="http://baike.baidu.com/view/4053622.htm">行星运动</a> 规律。又如，一个企业的<a href="http://baike.baidu.com/view/1189795.htm">领导人</a> 要通过市场调查，分析所得数据以判定市场动向，从而制定合适的生产及销售计划<b>。</b>因此数据分析有极广泛的应用范围。 </p>
<p><b>网络营销</b> </p>
<p><b>对网络营销的意义</b> </p>
<p>在中国，尽管<a href="http://baike.baidu.com/view/5422.htm">网络营销</a> 的概念很火，但网络营销的效率低于一些发达国家也是事实<b>。</b>无论是门户广告、<a href="http://baike.baidu.com/view/2180061.htm">搜索引擎广告</a> ，还是广告联盟，从行业平均转化率上看，都要低于国外较为成熟国家的水平<b>。</b>据估计，国内的Bounce rate（蹦失率，即用户只浏览第一页即离开的比例）介于90%~99%之间，而欧美的Bounce rate则是70%左右<b>。</b> </p>
<p>诚然，国内的<a href="http://baike.baidu.com/view/3149106.htm">网络营销环境</a> 处于发展之中，环境不那么尽如人意，但中国<a href="http://baike.baidu.com/view/6825.htm">互联网</a> 络信息中心分析师孙秀秀认为，出现这种情况的很多责任在投放广告的企业方，在于对营销背后的数据分析工作的不重视，没有精确定位有效的客户群，导致大量的展示给了不相关的网民<b>。</b> </p>
<p>通常，广告投放前的数据分析可以分为两步走。第一步：描述目标<a href="http://baike.baidu.com/view/226586.htm">群体</a> <b>。</b>比如，目标群体是18～25岁，上网购物的年轻女性。第二步：描述此群体的<a href="http://baike.baidu.com/view/3022889.htm">网络活动</a> 轨迹<b>。</b> </p>
<p>也就是说，知道<a href="http://baike.baidu.com/view/3296294.htm">目标客户</a> 群上什么网站、做什么事<b>、</b>在什么时间地点能够找到他非常重要。实际上，论覆盖面，网络营销还远远赶不上传统媒体。2009年底中国的互联网普及率为28.9%，而同期<a href="http://baike.baidu.com/view/125699.htm">中国电视</a> 的普及率却已经超过80%，但是，仍旧有很多有远见的企业选择网络营销<b>。</b>其中的一个重要原因是，网络营销的全过程都可以被追踪到，通过数据分析可以随时调整投放方式。 </p>
<p><b>项目数据分析</b> </p>
<p>项目数据分析的重要意义 </p>
<p>数据分析不仅可以在网络广告前期发挥巨大作用，在投放后期同样是调整广告方向的重要工具<b>。</b>比如，通过数据可以看到用户从哪里来、如何组织产品页面可以实现很好的转化率<b>、</b>投放广告的效率如何等等问题。基于数据分析的每一点点改变，都可以使赚钱的能力提高一点点。所以，只有称数据分析为网络营销的灵魂才能凸显数据分析的重要性。 </p>
<p>行业发展状况 </p>
<p>数据分析行业，在国外的发展已经非常成熟，每年有上千亿美元的市场份额<b>。</b>在国外，数据分析非常重要，在美国有专门的数据中心，为全国甚至全球的数据分析行业提供数据平台，还有一些图书馆，专门设有数据分析，数据统计图书收藏，为数据分析行业的从业人员提供查询搜索平台<b>。</b>    <br />在我国，数据分析工作正在被逐渐的受到重视，越来越多的人们意识到此项工作环节的重要性<b>。</b>08年4月份，经我国资委审批<b>、</b>民政部备案后，中国商业联合会数据分析专业委员会正式成立，这是数据分析行业内唯一的协会，它的成立标志着我国数据分析行业在经济发展中的地位已经被得到充分的认可，数据分析工作也会因此走向更加规范的发展轨道<b>。</b> </p>
<p>在市场调查数据分析中，我们常用的分析方法有：描述性统计（包括集中趋势分析<b>、</b>频数分析、数据的分布、数据离散程度分析等）、回归分析<b>、</b>主成分分析与因子分析、判别分析、聚类分析、时间序列分析以及常用数据分析方法<b>。</b>数据分析是指用适当的统计方法对收集来的大量一手和二手资料进行分析，以求最大化地开发数据资料的功能，发挥数据的作用<b>。</b>是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程<b>。</b> </p>
<p>综上数据分析对于项目的实施具有重要的意义。 </p>
<p>采用的分析方法如下： </p>
<p><b>1</b>、描述性统计分析 </p>
<p>包括样本基本资料的描述，作各变量的次数分配及百分比分析，以了解样本的分布情况<b>。</b>此外，以平均数和标准差来描述市场导向、竞争优势、组织绩效等各个构面，以了解样本企业的管理人员对这些相关变量的感知，并利用t检验及相关分析对背景变量所造成的影响做检验<b>。</b> </p>
<p><b>2、Cronbach’a信度系数分析</b> </p>
<p>信度是指测验结果的一致性<b>、</b>稳定性及可靠性，一般多以内部一致性（consistency）来加以表示该测验信度的高低。信度系数愈高即表示该测验的结果愈一致<b>、</b>稳定与可靠。针对各研究变量的衡量题项进行Cronbach’a信度分析，以了解衡量构面的内部一致性。一般来说，Cronbach’a仅大于0．7为高信度，低于0．35为低信度（Cuieford，1965），0．5为最低可以接受的信度水准（Nunnally，1978）<b>。</b> </p>
<p><b>3、探索性因素分析（exploratory factor analysis）和验证性因素分析（confirmatory factor analysis）</b> </p>
<p>用以测试各构面衡量题项的聚合效度（convergent validity）与区别效度（discriminant validity）<b>。</b>因为仅有信度是不够的，可信度高的测量，可能是完全无效或是某些程度上无效。所以我们必须对效度进行检验。效度是指工具是否能测出在设计时想测出的结果<b>。</b>收敛效度的检验根据各个项目和所衡量的概念的因素的负荷量来决定；而区别效度的检验是根据检验性因素分析计算理论上相关概念的相关系数，检定相关系数的95%信赖区间是否包含1．0，若不包含1．0，则可确认为具有区别效度（Anderson，1987）<b>。</b> </p>
<p><b>4</b>、结构方程模型分析（structural equations modeling） </p>
<p>由于结构方程模型结合了因素分析（factor analysis）和路径分析（path analysis），并纳入计量经济学的联立方程式，可同时处理多个因变量，容许自变量和因变量含测量误差，可同时估计因子结构和因子关系<b>。</b>容许更大弹性的测量模型，可估计整个模型的拟合程度（Bollen和Long，1993），因而适用于整体模型的因果关系<b>。</b>在模型参数的估计上，采用最大似然估计法（Maximum Likelihood，ML）；在模型的适合度检验上，以基本的拟合标准（preliminary fit criteria）<b>、</b>整体模型拟合优度（overall model fit）以及模型内在结构拟合优度（fit of internal structure of model）（Bagozzi和Yi，1988）三个方面的各项指标作为判定的标准<b>。</b>在评价整体模式适配标准方面，本研究采用x2（卡方）/df（自由度）值、拟合优度指数（goodness．of．f：iJt．in．dex，GFI）<b>、</b>平均残差平方根（root—mean．square：residual，RMSR）、近似误差均方根（root-mean—square-error-of-approximation，RMSEA）等指标；模型内在结构拟合优度则参考Bagozzi和Yi（1988）的标准，考察所估计的参数是否都到达显著水平<b>。</b> </p>
<p><b>图书信息</b> </p>
<p>数据分析领域开创性著作！ </p>
<p><b>书名</b>：《数据分析：企业的贤内助》&#160;&#160;&#160;&#160; <b>页数</b>：332页 </p>
<p><b>作者：</b>陈哲&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <b>出版社：</b>机械工业出版社 </p>
<p><b>ISBN：</b>9787111440857&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <b>出版时间：</b>2013年10月 </p>
<p><b>开本：</b>16开&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <b>版次：</b>1 </p>
<p><b>内容简介：</b> </p>
<p>从企业的一个个具化的需求出发，使读者对数据分析的了解循序渐进，将复杂的数据分析知识体系串成有机的整体；数据分析体系完整，从数据采集<b>、</b>数据清洗和加工，到战略数据分析<b>、</b>经营数据分析和投资数据分析等综合分析，最后到数据成果的精彩呈现均加以阐述，使读者完整了解到数据分析对企业各个环节的价值<b>。</b>书中的案例来源于企业经营的实际案例，实用性强，分析线索环环紧扣，分析方法细致严谨，数据展示简洁明了，难能可贵的是作者将自己多年在数据分析实际工作中的“解题”思路加以展现，为广大数据分析师们的实务工作提供了宝贵的借鉴<b>。</b> </p>
<p><b>本书特色：</b> </p>
<p>很多人数据分析方面的书读了一大堆，可一到现实中，还是不会用<b>。</b>原因在于缺少通往思路<b>、</b>方法和技能的两条路径——项目流程和项目应用。没有这两条路径，纵使我们头脑里的知识再多，也会像海洋中的孤岛那样，虽在那里，却难以访问<b>。</b>于是作者引项目之线，穿知识之珠。扫描数据分析项目流程（第4至第8章）<b>、</b>剖析数据分析项目案例（第7章），还原数据分析的本来面目和价值，让读者在项目实战中学习，在学习实践中提升<b>。</b>这是本书的第一个特色<b>。</b> </p>
<p>本书第二个特色是选择人物对话的形式，通过一问一答把读者带入思考问题的情境，耳濡目染感同身受<b>。</b> </p>
<p>作者将对话人物定格在生活的伴侣上<b>。</b>为什么？因为若把企业比喻成一个在外努力打拼的丈夫（贾健饰），数据分析师就是为丈夫出谋划策的贤内助（王贤饰）<b>。</b>丈夫敢闯敢为，敢做敢当，但拼劲有余<b>、</b>平和不足，经验有余、量化不足，常常会遇到一些决策难题。贤内助对丈夫爱意满满、情意浓浓，同时秀外慧中，集经验与智慧于一身，帮助丈夫对决策难题做出理性分析<b>。</b>这样一个贴心又能干的贤内助，不正是企业梦寐以求的数据分析师的形象吗（第1章）？于是，企业（贾健饰）决定让贤内助（王贤饰）从厨房转战厅堂，辅佐自己集团运营<b>。</b>于是，贤内助（王贤饰）止水重波，再出江湖，招兵买马，组建数据分析部门（第2章）<b>。</b>并对部门中的4位小生（小李、小白、小刘、小蔡饰）开始了一段系统生动<b>、</b>循循善诱的数据分析培训历程（第3～8章）。 </p>
<p><b>本书目录：</b> </p>
<p><b>第一篇数据分析的价值与要求</b> </p>
<p>第1 章 内助出山 </p>
<p>1<b>.</b>1 决策困境的出路 </p>
<p>1.1.1战略决策 </p>
<p>1.1.2 投资决策 </p>
<p>1<b>.</b>1.3 营销决策 </p>
<p>1.2数据分析的前景 </p>
<p>1.2.1 成功案例 </p>
<p>1<b>.</b>2.2 行业发展 </p>
<p>1.3数据价值问与答 </p>
<p>1.3.1Q&#38;A1：凭经验也可做决策 </p>
<p>1.3<b>.</b>2Q&#38;A2：数据分析提高决策成本 </p>
<p>1.3.3Q&#38;A3：调研数据不足信 </p>
<p>1.3<b>.</b>4Q&#38;A4：数据分析的组织结构 </p>
<p>1.3.5Q&#38;A5：数据分析部门的职责 </p>
<p>1.4本章小结 </p>
<p>第2 章 招兵买马 </p>
<p>2.1 分析师的岗位要求 </p>
<p>2<b>.</b>1.1 教育背景 </p>
<p>2.1<b>.</b>2 基本素质 </p>
<p>2.1.3技能经验 </p>
<p>2.2 分析师的海阔天空 </p>
<p>2.2<b>.</b>1 发展方向 </p>
<p>2.2.2晋升空间 </p>
<p>2.2.3 职业规划 </p>
<p>2<b>.</b>3 分析师的能力测试 </p>
<p>2.3.1数据敏感性测试 </p>
<p>2.3.2 逻辑思维力测试 </p>
<p>2<b>.</b>4 本章小结 </p>
<p>第3 章 优秀之路 </p>
<p>3.1修四重提升境界 </p>
<p>3.1.1 第一重：深度 </p>
<p>3<b>.</b>1.2 第二重：信度 </p>
<p>3.1<b>.</b>3 第三重：效度 </p>
<p>3.1.4第四重：通度 </p>
<p>3.2 悟四种专业态度 </p>
<p>3.2<b>.</b>1 态度一：避免从众心理 </p>
<p>3.2.2态度二：避免偏见 </p>
<p>3.2.3 态度三：合理怀疑 </p>
<p>3<b>.</b>2.4 态度四：换位思考 </p>
<p>3.3熟五大分析要素 </p>
<p>3.3.1 要素一：图纸 </p>
<p>3<b>.</b>3.2 要素二：材料 </p>
<p>3.3<b>.</b>3 要素三：步骤 </p>
<p>3.3.4要素四：工具 </p>
<p>3.3.5 要素五：方法 </p>
<p>3<b>.</b>4 本章小结 </p>
<p><b>第二篇 数据分析的实战与应用</b> </p>
<p>第4 章 下单：设计方案 </p>
<p>4<b>.</b>1 揭开方案的面纱 </p>
<p>4.1.1研究方案的作用 </p>
<p>4.1.2 研究方案的构成 </p>
<p>4<b>.</b>1.3 向1234 原则看齐 </p>
<p>4.2奏响方案七步曲 </p>
<p>4.2.1 明确研究目的 </p>
<p>4<b>.</b>2.2 分解研究内容 </p>
<p>4.2<b>.</b>3 找准研究对象 </p>
<p>4.2.4选择方式方法 </p>
<p>4.2.5 计划项目周期 </p>
<p>4<b>.</b>2.6 估算项目报价 </p>
<p>4.2<b>.</b>7 确定项目组成员 </p>
<p>4.3 市场细分案例 </p>
<p>4<b>.</b>4 本章小结 </p>
<p>第5 章 备料：数据采集 </p>
<p>5.1解读数据的特征 </p>
<p>5.1.1 时效性 </p>
<p>5<b>.</b>1.2 分散性 </p>
<p>5.1<b>.</b>3 概率性 </p>
<p>5.1.4再创性 </p>
<p>5.2 二手数据案头淘 </p>
<p>5.2<b>.</b>1 二手数据的价值 </p>
<p>5.2.2二手数据的查找 </p>
<p>5.3 一手数据实地跑 </p>
<p>5.3<b>.</b>1 调查方法慎选择 </p>
<p>5.3.2多快好省用抽样 </p>
<p>5.3.3 问卷设计细思量 </p>
<p>5<b>.</b>4 本章小结 </p>
<p>第6 章 切配：数据处理 </p>
<p>6.1入库：数据录入 </p>
<p>6.1.1 录入结构 </p>
<p>6<b>.</b>1.2 编码 </p>
<p>6.2冲洗：数据清洗 </p>
<p>6.2.1 查重 </p>
<p>6<b>.</b>2.2 改缺 </p>
<p>6.2<b>.</b>3 纠错 </p>
<p>6.3 切堆：数据加工 </p>
<p>6<b>.</b>3.1 数据抽取 </p>
<p>6.3<b>.</b>2 数据排序与分组 </p>
<p>6.4 打焯：数据描述 </p>
<p>6<b>.</b>4.1 集中与离散趋势 </p>
<p>6.4<b>.</b>2 频数分布 </p>
<p>6.4.3交叉分布 </p>
<p>6.5 本章小结 </p>
<p>第7 章 烹饪：数据分析 </p>
<p>7<b>.</b>1 菜名：界定分析目的 </p>
<p>7.2 菜谱：梳理分析思路 </p>
<p>7<b>.</b>2.1 按时间维度 </p>
<p>7.2<b>.</b>2 按空间维度 </p>
<p>7.2.3按综合维度 </p>
<p>7.3 厨艺：运用分析方法 </p>
<p>7.3<b>.</b>1 基础分析方法 </p>
<p>7.3.2衍生分析方法 </p>
<p>7.3.3 春节策划案例分析 </p>
<p>7<b>.</b>4 菜肴1 ：战略分析 </p>
<p>7.4.1分析思路 </p>
<p>7.4.2 矩阵分析法与层次分析法 </p>
<p>7<b>.</b>5 菜肴2 ：投资分析 </p>
<p>7.5.1分析思路 </p>
<p>7.5.2 预测分析法 </p>
<p>7<b>.</b>5.3 收益分析法 </p>
<p>7.5<b>.</b>4 风险分析法 </p>
<p>7.6 菜肴3 ：营销分析 </p>
<p>7<b>.</b>6.1 分析思路 </p>
<p>7.6<b>.</b>2 聚类分析 </p>
<p>7.6.3&#160;&#160; KANO 模型 </p>
<p>7<b>.</b>6.4&#160;&#160;&#160; PSM 模型 </p>
<p>7.6.5品牌知觉图分析 </p>
<p>7.6.6 定标比超分析 </p>
<p>7<b>.</b>6.7 漏斗分析 </p>
<p>7.6<b>.</b>8&#160;&#160; AIDA 模型 </p>
<p>7.7&#160;&#160; 本章小结 </p>
<p>第8 章 打荷：数据呈现 </p>
<p>8<b>.</b>1 盘饰：好文配好图 </p>
<p>8.1.1明确要表达的信息 </p>
<p>8.1.2 选择图表类型 </p>
<p>8<b>.</b>1.3 制作选定的图表 </p>
<p>8.1<b>.</b>4 确定有效的表达 </p>
<p>8.2 摆放：报告闯四关 </p>
<p>8<b>.</b>2.1 报告的准备 </p>
<p>8.2<b>.</b>2 报告的种类 </p>
<p>8.2.3报告的结构 </p>
<p>8.2.4 报告的论述 </p>
<p>8<b>.</b>3 本章小结 </p>
<p>由电子工业出版社出版的《谁说菜鸟不会数据分析》便是一本介绍数据分析的比较通俗易懂的书籍<b>。</b> </p>
<p><b>书名</b>：《谁说菜鸟不会数据分析（工具篇）》&#160;&#160; <b>页数：228</b>页 </p>
<p><b>作者：</b> 张文霖，狄松，林凤琼 ，任玮琳&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <b>出版社：</b>&#160; 电子工业出版社 </p>
<p><b>ISBN</b><b>：</b>9787121204098&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <b>出版时间：</b>2013年6月 </p>
<p><b>开本</b>：16开 <b>版次：1</b> </p>
<p><b>内容简介</b> </p>
<p>自从推出了《谁说菜鸟不会数据分析（入门篇）》之后，受到广大数据分析爱好者的认同与好评，同时提出了热切的希望：希望能尽早推出提高一级的书<b>。</b>我们看到这些热心的反馈，心里也是暖洋洋的，毕竟有读者的认可是多么幸福的事情。但是，我们也是惶恐的，生怕出来的作品还没经过细致打磨。我们在反复思量和总结中，前前后后花了1年多时间，创作完这部《谁说菜鸟不会数据分析（工具篇）》<b>。</b>    <br /> 将数据分析工具进行了细致梳理，基于最常用的Excel，精心挑选能够提高效率的常用工具，这些工具涵盖数据处理（Microsoft Access<b>、</b>Query）、数据分析（PowerPivot、Excel数据分析工具库）<b>、</b>数据呈现（水晶易表）和报告自动化（VBA）。    <br /> 《谁说菜鸟不会数据分析（工具篇）》仍沿用《谁说菜鸟不会数据分析（入门篇）》师傅带徒弟的对话教学方式，紧密围绕着工作学习中的常用情景，通过丰富而实用的案例以通俗易懂的呈现实现，从解决问题角度介绍各种常用<b>、</b>实用的数据处理<b>、</b>分析工具与方法，让大家在愉快的阅读中，不知不觉就学会了各种实用的数据分析工具。    <br /><b>目录</b> </p>
<p>第1章 高效处理千万数据   <br />1.1 最容易上手的数据库    <br /> 1.1.1 数据库那些事儿    <br /> 1.1.2 万能的SQL    <br /> 1.1.3 两招导入数据    <br /> 1.1.4 数据合并的二三式    <br /> 1.1.5 快速实现数据计算    <br /> 1.1.6 数据分组小妙招    <br /> 1.1.7 重复数据巧处理    <br /> 1.1.8 数据分析一步到位    <br /> 1.2 Microsoft Query    <br /> 1.2.1 数据导入    <br /> 1.2.2 数据处理    <br /> 1.2.3 数据分析    <br /> 1.3 本章小结    <br /> 第2章 玩转数据分析    <br /> 2.1 Excel数据分析工具--PowerPivot    <br /> 2.1.1 PowerPivot是神马    <br /> 2.1.2 确定分析思路    <br /> 2.1.3 数据分析前的准备    <br /> 2.1.4 简单数据分析    <br /> 2.1.5 多表关联分析    <br /> 2.1.6 字段计算分析    <br /> 2.1.7 数据分组分析    <br /> 2.2 Excel数据分析工具库    <br /> 2.2.1 分析工具库简介    <br /> 2.2.2 描述性统计分析    <br /> 2.2.3 直方图    <br /> 2.2.4 抽样分析    <br /> 2.2.5 相关分析    <br /> 2.2.6 回归分析    <br /> 2.2.7 移动平均    <br /> 2.2.8 指数平滑    <br /> 2.3 本章小结    <br /> 第3章 Show出你的数据    <br /> 3.1 数据可视化    <br /> 3.1.1 有趣的数据可视化    <br /> 3.1.2 数据可视化的意义    <br /> 3.1.3 数据可视化工具与资源    <br /> 3.2 Excel的可视化伴侣-水晶易表    <br /> 3.2.1 初识水晶易表    <br /> 3.2.2 水晶易表的特点    <br /> 3.2.3 水晶易表工作原理    <br /> 3.2.4 水晶易表的安装要求    <br /> 3.2.5 认识水晶易表部件    <br /> 3.3 水晶易表实战    <br /> 3.3.1 居民消费价格指数模型    <br /> 3.3.2 国内人口预测模型    <br /> 3.3.3 丈母娘选女婿模型    <br /> 3.4 本章小结 </p>
<p><b></b></p>
<h3>十道海量数据处理面试题与十个方法大总结</h3>
<p> <b>来源网址：</b> <a href="http://blog.csdn.net/v_JULY_v/article/details/6279498">http://blog.csdn.net/v_JULY_v/article/details/6279498</a>
<p>作者：July<b>、</b>youwang<b>、</b>yanxionglu。    <br />时间：二零一一年三月二十六日    <br />本文之总结：<a href="http://blog.csdn.net/v_july_v/article/details/7382693">教你如何迅速秒杀掉：99%的海量数据处理面试题</a> <b>。</b>有任何问题，欢迎随时交流、指正<b>。</b>    <br />出处：<strong><a href="http://blog.csdn.net/v_JULY_v">http://blog.csdn.net/v_JULY_v</a></strong> <b>。</b> </p>
<p><strong>第一部分<b>、</b>十道海量数据处理面试题</strong> </p>
<p><strong>1、海量日志数据，提取出某日访问百度次数最多的那个IP<b>。</b></strong> </p>
<p>&#160;&#160;&#160;&#160;&#160; 首先是这一天，并且是访问百度的日志中的IP取出来，逐个写入到一个大文件中<b>。</b>注意到IP是32位的，最多有个2^32个IP。同样可以采用映射的方法，比如模1000，把整个大文件映射为1000个小文件，再找出每个小文中出现频率最大的IP（可以采用hash_map进行频率统计，然后再找出频率最大的几个）及相应的频率<b>。</b>然后再在这1000个最大的IP中，找出那个频率最大的IP，即为所求。 </p>
<p>或者如下阐述（雪域之鹰）：   <br /><strong>算法思想：分而治之+Hash</strong> </p>
<p>1<b>.</b>IP地址最多有2^32=4G种取值情况，所以不能完全加载到内存中处理；&#160; <br />2.可以考虑采用“分而治之”的思想，按照IP地址的Hash(IP)%1024值，把海量IP日志分别存储到1024个小文件中<b>。</b>这样，每个小文件最多包含4MB个IP地址；&#160; <br />3.对于每一个小文件，可以构建一个IP为key，出现次数为value的Hash map，同时记录当前出现次数最多的那个IP地址；    <br />4<b>.</b>可以得到1024个小文件中的出现次数最多的IP，再依据常规的排序算法得到总体上出现次数最多的IP； </p>
<p><strong>2<b>、</b>搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来，每个查询串的长度为1-255字节。      <br /></strong>&#160;&#160;&#160; 假设目前有一千万个记录（这些查询串的重复度比较高，虽然总数是1千万，但如果除去重复后，不超过3百万个<b>。</b>一个查询串的重复度越高，说明查询它的用户越多，也就是越热门。），请你统计最热门的10个查询串，要求使用的内存不能超过1G<b>。</b> </p>
<p>&#160;&#160;&#160; 典型的Top K算法，还是在这篇文章里头有所阐述，详情请参见：<a href="http://blog.csdn.net/v_JULY_v/archive/2011/03/17/6256463.aspx"><strong>十一<b>、</b>从头到尾彻底解析Hash表</strong></a> 算法。    <br />文中，给出的最终算法是：    <br />&#160;&#160;&#160; 第一步、先对这批海量数据预处理，在O（N）的时间内用Hash表完成<strong>统计</strong>（之前写成了排序，特此订正<b>。</b>July、2011.04.27）；    <br />&#160;&#160;&#160; 第二步<b>、</b>借助堆这个数据结构，找出Top K，时间复杂度为N‘logK。    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 即，借助堆结构，我们可以在log量级的时间内查找和调整/移动<b>。</b>因此，维护一个K(该题目中是10)大小的小根堆，然后遍历300万的Query，分别和根元素进行对比所以，我们最终的时间复杂度是：O（N） + N'*O（logK），（N为1000万，N’为300万）<b>。</b>ok，更多，详情，请参考原文。 </p>
<p>&#160;&#160;&#160; 或者：采用trie树，关键字域存该查询串出现的次数，没有出现为0。最后用10个元素的最小推来对出现频率进行排序<b>。</b> </p>
<p><strong>3、有一个1G大小的一个文件，里面每一行是一个词，词的大小不超过16字节，内存限制大小是1M<b>。</b>返回频数最高的100个词。</strong> </p>
<p>&#160;&#160;&#160; 方案：顺序读文件中，对于每个词x，取hash(x)%5000，然后按照该值存到5000个小文件（记为x0,x1,..<b>.</b>x4999）中。这样每个文件大概是200k左右。 </p>
<p>&#160;&#160;&#160; 如果其中的有的文件超过了1M大小，还可以按照类似的方法继续往下分，直到分解得到的小文件的大小都不超过1M<b>。</b>    <br />&#160;&#160;&#160; 对每个小文件，统计每个文件中出现的词以及相应的频率（可以采用trie树/hash_map等），并取出出现频率最大的100个词（可以用含100个结点的最小堆），并把100个词及相应的频率存入文件，这样又得到了5000个文件<b>。</b>下一步就是把这5000个文件进行归并（类似与归并排序）的过程了。 </p>
<p><strong>4<b>、</b>有10个文件，每个文件1G，每个文件的每一行存放的都是用户的query，每个文件的query都可能重复<b>。</b>要求你按照query的频度排序<b>。</b></strong> </p>
<p>&#160;&#160;&#160; 还是典型的TOP K算法，解决方案如下：   <br />&#160;&#160;&#160; 方案1：    <br />&#160;&#160;&#160; 顺序读取10个文件，按照hash(query)%10的结果将query写入到另外10个文件（记为）中<b>。</b>这样新生成的文件每个的大小大约也1G（假设hash函数是随机的）<b>。</b>    <br />找一台内存在2G左右的机器，依次对用hash_map(query, query_count)来统计每个query出现的次数<b>。</b>利用快速/堆/归并排序按照出现次数进行排序<b>。</b>将排序好的query和对应的query_cout输出到文件中。这样得到了10个排好序的文件（记为）。 </p>
<p>&#160;&#160;&#160; 对这10个文件进行归并排序（内排序与外排序相结合）。 </p>
<p>&#160;&#160;&#160; 方案2：   <br />&#160;&#160;&#160;&#160; 一般query的总量是有限的，只是重复的次数比较多而已，可能对于所有的query，一次性就可以加入到内存了<b>。</b>这样，我们就可以采用trie树/hash_map等直接来统计每个query出现的次数，然后按出现次数做快速/堆/归并排序就可以了<b>。</b> </p>
<p>&#160;&#160;&#160; 方案3：   <br />&#160;&#160;&#160; 与方案1类似，但在做完hash，分成多个文件后，可以交给多个文件来处理，采用分布式的架构来处理（比如MapReduce），最后再进行合并<b>。</b> </p>
<p><strong>5、 给定a、b两个文件，各存放50亿个url，每个url各占64字节，内存限制是4G，让你找出a、b文件共同的url？</strong> </p>
<p>&#160;&#160;&#160; 方案1：可以估计每个文件安的大小为5G×64=320G，远远大于内存限制的4G<b>。</b>所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 </p>
<p>&#160;&#160;&#160; 遍历文件a，对每个url求取hash(url)%1000，然后根据所取得的值将url分别存储到1000个小文件（记为a0,a1,..<b>.</b>,a999）中。这样每个小文件的大约为300M。 </p>
<p>&#160;&#160;&#160; 遍历文件b，采取和a相同的方式将url分别存储到1000小文件（记为b0,b1,..<b>.</b>,b999）。这样处理后，所有可能相同的url都在对应的小文件（a0vsb0,a1vsb1,..<b>.</b>,a999vsb999）中，不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可<b>。</b> </p>
<p>&#160;&#160;&#160; 求每对小文件中相同的url时，可以把其中一个小文件的url存储到hash_set中<b>。</b>然后遍历另一个小文件的每个url，看其是否在刚才构建的hash_set中，如果是，那么就是共同的url，存到文件里面就可以了<b>。</b> </p>
<p>&#160;&#160;&#160; 方案2：如果允许有一定的错误率，可以使用Bloom filter，4G内存大概可以表示340亿bit<b>。</b>将其中一个文件中的url使用Bloom filter映射为这340亿bit，然后挨个读取另外一个文件的url，检查是否与Bloom filter，如果是，那么该url应该是共同的url（注意会有一定的错误率）<b>。</b> </p>
<p>&#160;&#160;&#160; Bloom filter日后会在本BLOG内详细阐述。 </p>
<p><strong>6<b>、</b>在2.5亿个整数中找出不重复的整数，注，内存不足以容纳这2<b>.</b>5亿个整数。</strong> </p>
<p>&#160;&#160;&#160; 方案1：采用2-Bitmap（每个数分配2bit，00表示不存在，01表示出现一次，10表示多次，11无意义）进行，共需内存2^32 * 2 bit=1 GB内存，还可以接受<b>。</b>然后扫描这2.5亿个整数，查看Bitmap中相对应位，如果是00变01，01变10，10保持不变<b>。</b>所描完事后，查看bitmap，把对应位是01的整数输出即可。 </p>
<p>&#160;&#160;&#160; 方案2：也可采用与第1题类似的方法，进行划分小文件的方法<b>。</b>然后在小文件中找出不重复的整数，并排序。然后再进行归并，注意去除重复的元素<b>。</b> </p>
<p><strong>7、腾讯面试题：给40亿个不重复的unsigned int的整数，没排过序的，然后再给一个数，如何快速判断这个数是否在那40亿个数当中？</strong> </p>
<p>&#160;&#160;&#160; 与上第6题类似，我的第一反应时快速排序+二分查找<b>。</b>以下是其它更好的方法：    <br /><strong>方案1：</strong>oo，申请512M的内存，一个bit位代表一个unsigned int值<b>。</b>读入40亿个数，设置相应的bit位，读入要查询的数，查看相应bit位是否为1，为1表示存在，为0表示不存在<b>。</b> </p>
<p>&#160;&#160;&#160; dizengrong：   <br /><strong>方案2：</strong>这个问题在《编程珠玑》里有很好的描述，大家可以参考下面的思路，探讨一下：    <br />又因为2^32为40亿多，所以给定一个数可能在，也可能不在其中；    <br />这里我们把40亿个数中的每一个用32位的二进制来表示    <br />假设这40亿个数开始放在一个文件中<b>。</b> </p>
<p>&#160;&#160;&#160; 然后将这40亿个数分成两类:   <br />&#160;&#160;&#160;&#160;&#160; 1.最高位为0    <br />&#160;&#160;&#160;&#160;&#160; 2.最高位为1    <br />&#160;&#160;&#160; 并将这两类分别写入到两个文件中，其中一个文件中数的个数&#60;=20亿，而另一个&#62;=20亿（这相当于折半了）；    <br />与要查找的数的最高位比较并接着进入相应的文件再查找 </p>
<p>&#160;&#160;&#160; 再然后把这个文件为又分成两类:   <br />&#160;&#160;&#160;&#160;&#160; 1<b>.</b>次最高位为0    <br />&#160;&#160;&#160;&#160;&#160; 2.次最高位为1 </p>
<p>&#160;&#160;&#160; 并将这两类分别写入到两个文件中，其中一个文件中数的个数&#60;=10亿，而另一个&#62;=10亿（这相当于折半了）；   <br />&#160;&#160;&#160; 与要查找的数的次最高位比较并接着进入相应的文件再查找<b>。</b>    <br />&#160;&#160;&#160; .......    <br />&#160;&#160;&#160; 以此类推，就可以找到了,而且时间复杂度为O(logn)，方案2完<b>。</b> </p>
<p><strong>附：</strong>这里，再简单介绍下，位图方法：    <br />&#160;&#160;&#160; 使用位图法判断整形数组是否存在重复&#160; <br />&#160;&#160;&#160; 判断集合中存在重复是常见编程任务之一，当集合中数据量比较大时我们通常希望少进行几次扫描，这时双重循环法就不可取了<b>。</b> </p>
<p>&#160;&#160;&#160; 位图法比较适合于这种情况，它的做法是按照集合中最大元素max创建一个长度为max+1的新数组，然后再次扫描原数组，遇到几就给新数组的第几位置上1，如遇到5就给新数组的第六个元素置1，这样下次再遇到5想置位时发现新数组的第六个元素已经是1了，这说明这次的数据肯定和以前的数据存在着重复<b>。</b>这种给新数组初始化时置零其后置一的做法类似于位图的处理方法故称位图法。它的运算次数最坏的情况为2N。如果已知数组的最大值即能事先给新数组定长的话效率还能提高一倍。 </p>
<p>&#160;&#160;&#160; 欢迎，有更好的思路，或方法，共同交流<b>。</b> </p>
<p><strong>8、怎么在海量数据中找出重复次数最多的一个？     <br /></strong>    <br />&#160;&#160;&#160; 方案1：先做hash，然后求模映射为小文件，求出每个小文件中重复次数最多的一个，并记录重复次数<b>。</b>然后找出上一步求出的数据中重复次数最多的一个就是所求（具体参考前面的题）。 </p>
<p><strong>9<b>、</b>上千万或上亿数据（有重复），统计其中出现次数最多的钱N个数据。</strong> </p>
<p>&#160;&#160;&#160; 方案1：上千万或上亿的数据，现在的机器的内存应该能存下<b>。</b>所以考虑采用hash_map/搜索二叉树/红黑树等来进行统计次数。然后就是取出前N个出现次数最多的数据了，可以用第2题提到的堆机制完成<b>。</b> </p>
<p><strong>10、一个文本文件，大约有一万行，每行一个词，要求统计出其中最频繁出现的前10个词，请给出思想，给出时间复杂度分析<b>。</b></strong> </p>
<p>&#160;&#160;&#160; 方案1：这题是考虑时间效率。用trie树统计每个词出现的次数，时间复杂度是O(n*le)（le表示单词的平准长度）<b>。</b>然后是找出出现最频繁的前10个词，可以用堆来实现，前面的题中已经讲到了，时间复杂度是O(n*lg10)<b>。</b>所以总的时间复杂度，是O(n*le)与O(n*lg10)中较大的哪一个<b>。</b> </p>
<p><strong>附、100w个数中找出最大的100个数。</strong> </p>
<p>&#160;&#160;&#160; 方案1：在前面的题中，我们已经提到了，用一个含100个元素的最小堆完成<b>。</b>复杂度为O(100w*lg100)。 </p>
<p>&#160;&#160;&#160; 方案2：采用快速排序的思想，每次分割之后只考虑比轴大的一部分，知道比轴大的一部分在比100多的时候，采用传统排序算法排序，取前100个<b>。</b>复杂度为O(100w*100)。 </p>
<p>&#160;&#160;&#160; 方案3：采用局部淘汰法。选取前100个元素，并排序，记为序列L<b>。</b>然后一次扫描剩余的元素x，与排好序的100个元素中最小的元素比，如果比这个最小的要大，那么把这个最小的元素删除，并把x利用插入排序的思想，插入到序列L中<b>。</b>依次循环，知道扫描了所有的元素<b>。</b>复杂度为O(100w*100)。 </p>
<p>致谢：<a href="http://www.cnblogs.com/youwang/">http://www.cnblogs.com/youwang/</a> <b>。</b> </p>
<p><strong>第二部分、十个海量数据处理方法大总结</strong> </p>
<p>&#160;&#160;&#160; ok，看了上面这么多的面试题，是否有点头晕<b>。</b>是的，需要一个总结。接下来，本文将简单总结下一些处理海量数据问题的常见方法，<strong>而日后，本BLOG内会具体阐述这些方法<b>。</b></strong> </p>
<p>&#160;&#160;&#160; 下面的方法全部来自<a href="http://hi.baidu.com/yanxionglu/blog/">http://hi.baidu.com/yanxionglu/blog/</a> 博客，对海量数据的处理方法进行了一个一般性的总结，当然这些方法可能并不能完全覆盖所有的问题，但是这样的一些方法也基本可以处理绝大多数遇到的问题<b>。</b>下面的一些问题基本直接来源于公司的面试笔试题目，方法不一定最优，如果你有更好的处理方法，欢迎讨论。 </p>
<p>一、Bloom filter </p>
<p>适用范围：可以用来实现数据字典，进行数据的判重，或者集合求交集 </p>
<p>基本原理及要点：   <br /> 对于原理来说很简单，位数组+k个独立hash函数。将hash函数对应的值的位数组置1，查找时如果发现所有hash函数对应位都是1说明存在，很明显这个过程并不保证查找的结果是100%正确的<b>。</b>同时也不支持删除一个已经插入的关键字，因为该关键字对应的位会牵动到其他的关键字。所以一个简单的改进就是 counting Bloom filter，用一个counter数组代替位数组，就可以支持删除了<b>。</b> </p>
<p> 还有一个比较重要的问题，如何根据输入元素个数n，确定位数组m的大小及hash函数个数。当hash函数个数k=(ln2)*(m/n)时错误率最小<b>。</b>在错误率不大于E的情况下，m至少要等于n*lg(1/E)才能表示任意n个元素的集合。但m还应该更大些，因为还要保证bit数组里至少一半为0，则m应该&#62;=nlg(1/E)*lge 大概就是nlg(1/E)1<b>.</b>44倍(lg表示以2为底的对数)。 </p>
<p> 举个例子我们假设错误率为0.01，则此时m应大概是n的13倍。这样k大概是8个。 </p>
<p>注意这里m与n的单位不同，m是bit为单位，而n则是以元素个数为单位(准确的说是不同元素的个数)<b>。</b>通常单个元素的长度都是有很多bit的<b>。</b>所以使用bloom filter内存上通常都是节省的。 </p>
<p> 扩展：   <br /> Bloom filter将集合中的元素映射到位数组中，用k（k为哈希函数个数）个映射位是否全1表示元素在不在这个集合中<b>。</b>Counting bloom filter（CBF）将位数组中的每一位扩展为一个counter，从而支持了元素的删除操作<b>。</b>Spectral Bloom Filter（SBF）将其与集合元素的出现次数关联。SBF采用counter中的最小值来近似表示元素的出现频率<b>。</b> </p>
<p> 问题实例：给你A,B两个文件，各存放50亿条URL，每条URL占用64字节，内存限制是4G，让你找出A,B文件共同的URL<b>。</b>如果是三个乃至n个文件呢？ </p>
<p> 根据这个问题我们来计算下内存的占用，4G=2^32大概是40亿*8大概是340亿，n=50亿，如果按出错率0<b>.</b>01算需要的大概是650亿个bit<b>。</b>现在可用的是340亿，相差并不多，这样可能会使出错率上升些。另外如果这些urlip是一一对应的，就可以转换成ip，则大大简单了<b>。</b> </p>
<p>二、Hashing </p>
<p>适用范围：快速查找，删除的基本数据结构，通常需要总数据量可以放入内存 </p>
<p>基本原理及要点：   <br /> hash函数选择，针对字符串，整数，排列，具体相应的hash方法。    <br />碰撞处理，一种是open hashing，也称为拉链法；另一种就是closed hashing，也称开地址法，opened addressing<b>。</b> </p>
<p>&#160;&#160;&#160;&#160;&#160; 扩展：   <br />d-left hashing中的d是多个的意思，我们先简化这个问题，看一看2-left hashing<b>。</b>2-left hashing指的是将一个哈希表分成长度相等的两半，分别叫做T1和T2，给T1和T2分别配备一个哈希函数，h1和h2<b>。</b>在存储一个新的key时，同时用两个哈希函数进行计算，得出两个地址h1[key]和h2[key]。这时需要检查T1中的h1[key]位置和T2中的h2[key]位置，哪一个位置已经存储的（有碰撞的）key比较多，然后将新key存储在负载少的位置<b>。</b>如果两边一样多，比如两个位置都为空或者都存储了一个key，就把新key存储在左边的T1子表中，2-left也由此而来<b>。</b>在查找一个key时，必须进行两次hash，同时查找两个位置。 </p>
<p> 问题实例：   <br /> 1).海量日志数据，提取出某日访问百度次数最多的那个IP<b>。</b>    <br /> IP的数目还是有限的，最多2^32个，所以可以考虑使用hash将ip直接存入内存，然后进行统计。 </p>
<p>三<b>、</b>bit-map </p>
<p> 适用范围：可进行数据的快速查找，判重，删除，一般来说数据范围是int的10倍以下 </p>
<p>基本原理及要点：使用bit数组来表示某些元素是否存在，比如8位电话号码 </p>
<p>扩展：bloom filter可以看做是对bit-map的扩展 </p>
<p> 问题实例：   <br /> 1)已知某个文件内包含一些电话号码，每个号码为8位数字，统计不同号码的个数。    <br /> 8位最多99 999 999，大概需要99m个bit，大概10几m字节的内存即可。    <br />2)2.5亿个整数中找出不重复的整数的个数，内存空间不足以容纳这2<b>.</b>5亿个整数。 </p>
<p>将bit-map扩展一下，用2bit表示一个数即可，0表示未出现，1表示出现一次，2表示出现2次及以上<b>。</b>或者我们不用2bit来进行表示，我们用两个bit-map即可模拟实现这个2bit-map<b>。</b> </p>
<p> 适用范围：海量数据前n大，并且n比较小，堆可以放入内存 </p>
<p> 基本原理及要点：最大堆求前n小，最小堆求前n大。方法，比如求前n小，我们比较当前元素与最大堆里的最大元素，如果它小于最大元素，则应该替换那个最大元素<b>。</b>这样最后得到的n个元素就是最小的n个。适合大数据量，求前n小，n的大小比较小的情况，这样可以扫描一遍即可得到所有的前n元素，效率很高<b>。</b> </p>
<p> 扩展：双堆，一个最大堆与一个最小堆结合，可以用来维护中位数。 </p>
<p>问题实例：   <br /> 1)100w个数中找最大的前100个数。    <br />用一个100个元素大小的最小堆即可。 </p>
<p>五<b>、</b>双层桶划分----其实本质上就是【分而治之】的思想，重在“分”的技巧上！ </p>
<p>适用范围：第k大，中位数，不重复或重复的数字   <br /> 基本原理及要点：因为元素范围很大，不能利用直接寻址表，所以通过多次划分，逐步确定范围，然后最后在一个可以接受的范围内进行<b>。</b>可以通过多次缩小，双层只是一个例子。 </p>
<p> 扩展：   <br /> 问题实例：    <br /> 1).2.5亿个整数中找出不重复的整数的个数，内存空间不足以容纳这2.5亿个整数<b>。</b>    <br /> 有点像鸽巢原理，整数个数为2^32,也就是，我们可以将这2^32个数，划分为2^8个区域(比如用单个文件代表一个区域)，然后将数据分离到不同的区域，然后不同的区域在利用bitmap就可以直接解决了<b>。</b>也就是说只要有足够的磁盘空间，就可以很方便的解决。 </p>
<p> 2).5亿个int找它们的中位数。   <br /> 这个例子比上面那个更明显。首先我们将int划分为2^16个区域，然后读取数据统计落到各个区域里的数的个数，之后我们根据统计结果就可以判断中位数落到那个区域，同时知道这个区域中的第几大数刚好是中位数<b>。</b>然后第二次扫描我们只统计落在这个区域中的那些数就可以了。 </p>
<p>实际上，如果不是int是int64，我们可以经过3次这样的划分即可降低到可以接受的程度<b>。</b>即可以先将int64分成2^24个区域，然后确定区域的第几大数，在将该区域分成2^20个子区域，然后确定是子区域的第几大数，然后子区域里的数的个数只有2^20，就可以直接利用direct addr table进行统计了<b>。</b> </p>
<p>六、数据库索引 </p>
<p> 适用范围：大数据量的增删改查 </p>
<p> 基本原理及要点：利用数据的设计实现方法，对海量数据的增删改查进行处理。 </p>
<p>七<b>、</b>倒排索引(Inverted index) </p>
<p> 适用范围：搜索引擎，关键字查询 </p>
<p> 基本原理及要点：为何叫倒排索引？一种索引方法，被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射<b>。</b> </p>
<p> 以英文为例，下面是要被索引的文本：   <br />&#160;&#160;&#160; T0 = &#34;it is what it is&#34;    <br />&#160;&#160;&#160; T1 = &#34;what is it&#34;    <br />&#160;&#160;&#160; T2 = &#34;it is a banana&#34; </p>
<p>我们就能得到下面的反向文件索引： </p>
<p>&#160;&#160;&#160; &#34;a&#34;:&#160;&#160;&#160;&#160;&#160; {2}   <br />&#160;&#160;&#160; &#34;banana&#34;: {2}    <br />&#160;&#160;&#160; &#34;is&#34;:&#160;&#160;&#160;&#160; {0, 1, 2}    <br />&#160;&#160;&#160; &#34;it&#34;:&#160;&#160;&#160;&#160; {0, 1, 2}    <br />&#160;&#160;&#160; &#34;what&#34;:&#160;&#160; {0, 1} </p>
<p>检索的条件&#34;what&#34;,&#34;is&#34;和&#34;it&#34;将对应集合的交集。 </p>
<p> 正向索引开发出来用来存储每个文档的单词的列表。正向索引的查询往往满足每个文档有序频繁的全文查询和每个单词在校验文档中的验证这样的查询<b>。</b>在正向索引中，文档占据了中心的位置，每个文档指向了一个它所包含的索引项的序列。也就是说文档指向了它包含的那些单词，而反向索引则是单词指向了包含它的文档，很容易看到这个反向的关系<b>。</b> </p>
<p> 扩展：   <br /> 问题实例：文档检索系统，查询那些文件包含了某单词，比如常见的学术论文的关键字搜索。 </p>
<p>八<b>、</b>外排序 </p>
<p> 适用范围：大数据的排序，去重 </p>
<p> 基本原理及要点：外排序的归并方法，置换选择败者树原理，最优归并树 </p>
<p> 问题实例：   <br /> 1).有一个1G大小的一个文件，里面每一行是一个词，词的大小不超过16个字节，内存限制大小是1M<b>。</b>返回频数最高的100个词。 </p>
<p> 这个数据具有很明显的特点，词的大小为16个字节，但是内存只有1m做hash有些不够，所以可以用来排序。内存可以当输入缓冲区使用<b>。</b> </p>
<p>九、trie树 </p>
<p> 适用范围：数据量大，重复多，但是数据种类小可以放入内存 </p>
<p> 基本原理及要点：实现方式，节点孩子的表示方式 </p>
<p> 扩展：压缩实现。 </p>
<p>问题实例：   <br /> 1).有10个文件，每个文件1G，每个文件的每一行都存放的是用户的query，每个文件的query都可能重复<b>。</b>要你按照query的频度排序。    <br /> 2).1000万字符串，其中有些是相同的(重复),需要把重复的全部去掉，保留没有重复的字符串。请问怎么设计和实现？    <br /> 3).寻找热门查询：查询串的重复度比较高，虽然总数是1千万，但如果除去重复后，不超过3百万个，每个不超过255字节<b>。</b> </p>
<p>十、分布式处理 mapreduce </p>
<p>适用范围：数据量大，但是数据种类小可以放入内存 </p>
<p>基本原理及要点：将数据交给不同的机器去处理，数据划分，结果归约。 </p>
<p> 扩展：   <br /> 问题实例：    <br /> 1).The canonical example application of MapReduce is a process to count the appearances of    <br />each different word in a set of documents:    <br />2).海量数据分布在100台电脑中，想个办法高效统计出这批数据的TOP10。    <br /> 3).一共有N个机器，每个机器上有N个数。每个机器最多存O(N)个数并对它们操作。如何找到N^2个数的中数(median)？ </p>
<p>经典问题分析   <br />上千万or亿数据（有重复），统计其中出现次数最多的前N个数据,分两种情况：可一次读入内存，不可一次读入<b>。</b> </p>
<p>可用思路：trie树+堆，数据库索引，划分子集分别统计，hash，分布式计算，近似统计，外排序 </p>
<p>所谓的是否能一次读入内存，实际上应该指去除重复后的数据量。如果去重后数据可以放入内存，我们可以为数据建立字典，比如通过 map，hashmap，trie，然后直接进行统计即可<b>。</b>当然在更新每条数据的出现次数的时候，我们可以利用一个堆来维护出现次数最多的前N个数据，当然这样导致维护次数增加，不如完全统计后在求前N大效率高<b>。</b> </p>
<p> 如果数据无法放入内存。一方面我们可以考虑上面的字典方法能否被改进以适应这种情形，可以做的改变就是将字典存放到硬盘上，而不是内存，这可以参考数据库的存储方法<b>。</b> </p>
<p> 当然还有更好的方法，就是可以采用分布式计算，基本上就是map-reduce过程，首先可以根据数据值或者把数据hash(md5)后的值，将数据按照范围划分到不同的机子，最好可以让数据划分后可以一次读入内存，这样不同的机子负责处理各种的数值范围，实际上就是map<b>。</b>得到结果后，各个机子只需拿出各自的出现次数最多的前N个数据，然后汇总，选出所有的数据中出现次数最多的前N个数据，这实际上就是reduce过程<b>。</b> </p>
<p> 实际上可能想直接将数据均分到不同的机子上进行处理，这样是无法得到正确的解的。因为一个数据可能被均分到不同的机子上，而另一个则可能完全聚集到一个机子上，同时还可能存在具有相同数目的数据<b>。</b>比如我们要找出现次数最多的前100个，我们将1000万的数据分布到10台机器上，找到每台出现次数最多的前 100个，归并之后这样不能保证找到真正的第100个，因为比如出现次数最多的第100个可能有1万个，但是它被分到了10台机子，这样在每台上只有1千个，假设这些机子排名在1000个之前的那些都是单独分布在一台机子上的，比如有1001个，这样本来具有1万个的这个就会被淘汰，即使我们让每台机子选出出现次数最多的1000个再归并，仍然会出错，因为可能存在大量个数为1001个的发生聚集<b>。</b>因此不能将数据随便均分到不同机子上，而是要根据hash 后的值将它们映射到不同的机子上处理，让不同的机器处理一个数值范围<b>。</b> </p>
<p> 而外排序的方法会消耗大量的IO，效率不会很高。而上面的分布式方法，也可以用于单机版本，也就是将总的数据根据值的范围，划分成多个不同的子文件，然后逐个处理<b>。</b>处理完毕之后再对这些单词的及其出现频率进行一个归并。实际上就可以利用一个外排序的归并过程。 </p>
<p>另外还可以考虑近似计算，也就是我们可以通过结合自然语言属性，只将那些真正实际中出现最多的那些词作为一个字典，使得这个规模可以放入内存<b>。</b> </p>
<p>ok，更多请参见本文总结：<a href="http://blog.csdn.net/v_july_v/article/details/7382693"><strong>教你如何迅速秒杀掉：99%的海量数据处理面试题</strong></a> <b>。</b>以上有任何问题，欢迎指正。谢谢大家。 </p>
<hr />
<p><strong>版权所有。转载本BLOG内任何文章，请以超链接形式注明出处<b>。</b></strong> </p>
<p><b></b></p>
<h3>大数据处理面试汇总 </h3>
<p> <b>来源网址：</b> <a href="http://blog.csdn.net/pfdai_hnu/article/details/6247119">http://blog.csdn.net/pfdai_hnu/article/details/6247119</a>
<p>1. 给定a、b两个文件，各存放50亿个url，每个url各占64字节，内存限制是4G，让你找出a、b文件共同的url？&#160; <br />方案1：可以估计每个文件安的大小为50G×64=320G，远远大于内存限制的4G<b>。</b>所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。&#160; <br />s 遍历文件a，对每个url求取 ，然后根据所取得的值将url分别存储到1000个小文件（记为 ）中<b>。</b>这样每个小文件的大约为300M。&#160; <br />s 遍历文件b，采取和a相同的方式将url分别存储到1000各小文件（记为 ）<b>。</b>这样处理后，所有可能相同的url都在对应的小文件（ ）中，不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可。&#160; <br />s 求每对小文件中相同的url时，可以把其中一个小文件的url存储到hash_set中<b>。</b>然后遍历另一个小文件的每个url，看其是否在刚才构建的hash_set中，如果是，那么就是共同的url，存到文件里面就可以了<b>。</b>    <br />方案2：如果允许有一定的错误率，可以使用Bloom filter，4G内存大概可以表示340亿bit<b>。</b>将其中一个文件中的url使用Bloom filter映射为这340亿bit，然后挨个读取另外一个文件的url，检查是否与Bloom filter，如果是，那么该url应该是共同的url（注意会有一定的错误率）<b>。</b>    <br />2<b>.</b> 有10个文件，每个文件1G，每个文件的每一行存放的都是用户的query，每个文件的query都可能重复<b>。</b>要求你按照query的频度排序<b>。</b>    <br />方案1：&#160; <br />s 顺序读取10个文件，按照hash(query)%10的结果将query写入到另外10个文件（记为 ）中<b>。</b>这样新生成的文件每个的大小大约也1G（假设hash函数是随机的）<b>。</b>    <br />s 找一台内存在2G左右的机器，依次对 用hash_map(query, query_count)来统计每个query出现的次数<b>。</b>利用快速/堆/归并排序按照出现次数进行排序<b>。</b>将排序好的query和对应的query_cout输出到文件中。这样得到了10个排好序的文件（记为 ）。&#160; <br />s 对 这10个文件进行归并排序（内排序与外排序相结合）。&#160; <br />方案2：&#160; <br />一般query的总量是有限的，只是重复的次数比较多而已，可能对于所有的query，一次性就可以加入到内存了<b>。</b>这样，我们就可以采用trie树/hash_map等直接来统计每个query出现的次数，然后按出现次数做快速/堆/归并排序就可以了<b>。</b>    <br />方案3：&#160; <br />与方案1类似，但在做完hash，分成多个文件后，可以交给多个文件来处理，采用分布式的架构来处理（比如MapReduce），最后再进行合并<b>。</b>    <br />3. 有一个1G大小的一个文件，里面每一行是一个词，词的大小不超过16字节，内存限制大小是1M<b>。</b>返回频数最高的100个词。&#160; <br />方案1：顺序读文件中，对于每个词x，取 ，然后按照该值存到5000个小文件（记为 ）中<b>。</b>这样每个文件大概是200k左右。如果其中的有的文件超过了1M大小，还可以按照类似的方法继续往下分，知道分解得到的小文件的大小都不超过1M<b>。</b>对每个小文件，统计每个文件中出现的词以及相应的频率（可以采用trie树/hash_map等），并取出出现频率最大的100个词（可以用含100个结点的最小堆），并把100词及相应的频率存入文件，这样又得到了5000个文件<b>。</b>下一步就是把这5000个文件进行归并（类似与归并排序）的过程了。&#160; <br />4. 海量日志数据，提取出某日访问百度次数最多的那个IP<b>。</b>    <br />方案1：首先是这一天，并且是访问百度的日志中的IP取出来，逐个写入到一个大文件中<b>。</b>注意到IP是32位的，最多有 个IP<b>。</b>同样可以采用映射的方法，比如模1000，把整个大文件映射为1000个小文件，再找出每个小文中出现频率最大的IP（可以采用hash_map进行频率统计，然后再找出频率最大的几个）及相应的频率<b>。</b>然后再在这1000个最大的IP中，找出那个频率最大的IP，即为所求<b>。</b>    <br />5. 在2.5亿个整数中找出不重复的整数，内存不足以容纳这2.5亿个整数<b>。</b>    <br />方案1：采用2-Bitmap（每个数分配2bit，00表示不存在，01表示出现一次，10表示多次，11无意义）进行，共需内存 内存，还可以接受<b>。</b>然后扫描这2<b>.</b>5亿个整数，查看Bitmap中相对应位，如果是00变01，01变10，10保持不变。所描完事后，查看bitmap，把对应位是01的整数输出即可<b>。</b>    <br />方案2：也可采用上题类似的方法，进行划分小文件的方法。然后在小文件中找出不重复的整数，并排序<b>。</b>然后再进行归并，注意去除重复的元素。&#160; <br />6. 海量数据分布在100台电脑中，想个办法高校统计出这批数据的TOP10。&#160; <br />方案1：&#160; <br />s 在每台电脑上求出TOP10，可以采用包含10个元素的堆完成（TOP10小，用最大堆，TOP10大，用最小堆）<b>。</b>比如求TOP10大，我们首先取前10个元素调整成最小堆，如果发现，然后扫描后面的数据，并与堆顶元素比较，如果比堆顶元素大，那么用该元素替换堆顶，然后再调整为最小堆<b>。</b>最后堆中的元素就是TOP10大<b>。</b>    <br />s 求出每台电脑上的TOP10后，然后把这100台电脑上的TOP10组合起来，共1000个数据，再利用上面类似的方法求出TOP10就可以了<b>。</b>    <br />7<b>.</b> 怎么在海量数据中找出重复次数最多的一个？&#160; <br />方案1：先做hash，然后求模映射为小文件，求出每个小文件中重复次数最多的一个，并记录重复次数<b>。</b>然后找出上一步求出的数据中重复次数最多的一个就是所求（具体参考前面的题）<b>。</b>    <br />8. 上千万或上亿数据（有重复），统计其中出现次数最多的钱N个数据。&#160; <br />方案1：上千万或上亿的数据，现在的机器的内存应该能存下。所以考虑采用hash_map/搜索二叉树/红黑树等来进行统计次数<b>。</b>然后就是取出前N个出现次数最多的数据了，可以用第6题提到的堆机制完成。&#160; <br />9<b>.</b> 1000万字符串，其中有些是重复的，需要把重复的全部去掉，保留没有重复的字符串。请怎么设计和实现？&#160; <br />方案1：这题用trie树比较合适，hash_map也应该能行<b>。</b>    <br />10. 一个文本文件，大约有一万行，每行一个词，要求统计出其中最频繁出现的前10个词，请给出思想，给出时间复杂度分析<b>。</b>    <br />方案1：这题是考虑时间效率。用trie树统计每个词出现的次数，时间复杂度是O(n*le)（le表示单词的平准长度）<b>。</b>然后是找出出现最频繁的前10个词，可以用堆来实现，前面的题中已经讲到了，时间复杂度是O(n*lg10)<b>。</b>所以总的时间复杂度，是O(n*le)与O(n*lg10)中较大的哪一个<b>。</b>    <br />11. 一个文本文件，找出前10个经常出现的词，但这次文件比较长，说是上亿行或十亿行，总之无法一次读入内存，问最优解<b>。</b>    <br />方案1：首先根据用hash并求模，将文件分解为多个小文件，对于单个文件利用上题的方法求出每个文件件中10个最常出现的词<b>。</b>然后再进行归并处理，找出最终的10个最常出现的词。&#160; <br />12. 100w个数中找出最大的100个数<b>。</b>    <br />方案1：在前面的题中，我们已经提到了，用一个含100个元素的最小堆完成。复杂度为O(100w*lg100)<b>。</b>    <br />方案2：采用快速排序的思想，每次分割之后只考虑比轴大的一部分，知道比轴大的一部分在比100多的时候，采用传统排序算法排序，取前100个<b>。</b>复杂度为O(100w*100)。&#160; <br />方案3：采用局部淘汰法。选取前100个元素，并排序，记为序列L<b>。</b>然后一次扫描剩余的元素x，与排好序的100个元素中最小的元素比，如果比这个最小的要大，那么把这个最小的元素删除，并把x利用插入排序的思想，插入到序列L中<b>。</b>依次循环，知道扫描了所有的元素<b>。</b>复杂度为O(100w*100)。&#160; <br />13. 寻找热门查询：&#160; <br />搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来，每个查询串的长度为1-255字节<b>。</b>假设目前有一千万个记录，这些查询串的重复读比较高，虽然总数是1千万，但是如果去除重复和，不超过3百万个<b>。</b>一个查询串的重复度越高，说明查询它的用户越多，也就越热门。请你统计最热门的10个查询串，要求使用的内存不能超过1G<b>。</b>    <br />(1) 请描述你解决这个问题的思路；&#160; <br />(2) 请给出主要的处理流程，算法，以及算法的复杂度<b>。</b>    <br />方案1：采用trie树，关键字域存该查询串出现的次数，没有出现为0<b>。</b>最后用10个元素的最小推来对出现频率进行排序。&#160; <br />14. 一共有N个机器，每个机器上有N个数。每个机器最多存O(N)个数并对它们操作<b>。</b>如何找到 个数中的中数？&#160; <br />方案1：先大体估计一下这些数的范围，比如这里假设这些数都是32位无符号整数（共有 个）<b>。</b>我们把0到 的整数划分为N个范围段，每个段包含 个整数<b>。</b>比如，第一个段位0到 ，第二段为 到 ，…，第N个段为 到 。然后，扫描每个机器上的N个数，把属于第一个区段的数放到第一个机器上，属于第二个区段的数放到第二个机器上，…，属于第N个区段的数放到第N个机器上<b>。</b>注意这个过程每个机器上存储的数应该是O(N)的。下面我们依次统计每个机器上数的个数，一次累加，直到找到第k个机器，在该机器上累加的数大于或等于 ，而在第k-1个机器上的累加数小于 ，并把这个数记为x<b>。</b>那么我们要找的中位数在第k个机器中，排在第 位。然后我们对第k个机器的数排序，并找出第 个数，即为所求的中位数<b>。</b>复杂度是 的。&#160; <br />方案2：先对每台机器上的数进行排序<b>。</b>排好序后，我们采用归并排序的思想，将这N个机器上的数归并起来得到最终的排序。找到第 个便是所求。复杂度是 的。&#160; <br />15<b>.</b> 最大间隙问题&#160; <br />给定n个实数 ，求着n个实数在实轴上向量2个数之间的最大差值，要求线性的时间算法<b>。</b>    <br />方案1：最先想到的方法就是先对这n个数据进行排序，然后一遍扫描即可确定相邻的最大间隙<b>。</b>但该方法不能满足线性时间的要求。故采取如下方法：&#160; <br />s 找到n个数据中最大和最小数据max和min<b>。</b>    <br />s 用n-2个点等分区间[min, max]，即将[min, max]等分为n-1个区间（前闭后开区间），将这些区间看作桶，编号为 ，且桶 的上界和桶i+1的下届相同，即每个桶的大小相同<b>。</b>每个桶的大小为： 。实际上，这些桶的边界构成了一个等差数列（首项为min，公差为 ），且认为将min放入第一个桶，将max放入第n-1个桶<b>。</b>    <br />s 将n个数放入n-1个桶中：将每个元素 分配到某个桶（编号为index），其中 ，并求出分到每个桶的最大最小数据<b>。</b>    <br />s 最大间隙：除最大最小数据max和min以外的n-2个数据放入n-1个桶中，由抽屉原理可知至少有一个桶是空的，又因为每个桶的大小相同，所以最大间隙不会在同一桶中出现，一定是某个桶的上界和气候某个桶的下界之间隙，且该量筒之间的桶（即便好在该连个便好之间的桶）一定是空桶<b>。</b>也就是说，最大间隙在桶i的上界和桶j的下界之间产生 。一遍扫描即可完成。&#160; <br />16<b>.</b> 将多个集合合并成没有交集的集合：给定一个字符串的集合，格式如： 。要求将其中交集不为空的集合合并，要求合并完成的集合之间无交集，例如上例应输出 <b>。</b>    <br />(1) 请描述你解决这个问题的思路；&#160; <br />(2) 给出主要的处理流程，算法，以及算法的复杂度；&#160; <br />(3) 请描述可能的改进<b>。</b>    <br />方案1：采用并查集。首先所有的字符串都在单独的并查集中。然后依扫描每个集合，顺序合并将两个相邻元素合并<b>。</b>例如，对于 ，首先查看aaa和bbb是否在同一个并查集中，如果不在，那么把它们所在的并查集合并，然后再看bbb和ccc是否在同一个并查集中，如果不在，那么也把它们所在的并查集合并<b>。</b>接下来再扫描其他的集合，当所有的集合都扫描完了，并查集代表的集合便是所求<b>。</b>复杂度应该是O(NlgN)的。改进的话，首先可以记录每个节点的根结点，改进查询。合并的时候，可以把大的和小的进行合，这样也减少复杂度。&#160; <br />17<b>.</b> 最大子序列与最大子矩阵问题 数组的最大子序列问题：给定一个数组，其中元素有正，也有负，找出其中一个连续子序列，使和最大<b>。</b>    <br />方案1：这个问题可以动态规划的思想解决<b>。</b>设 表示以第i个元素 结尾的最大子序列，那么显然 。基于这一点可以很快用代码实现。&#160; <br />最大子矩阵问题：给定一个矩阵（二维数组），其中数据有大有小，请找一个子矩阵，使得子矩阵的和最大，并输出这个和<b>。</b>    <br />方案1：可以采用与最大子序列类似的思想来解决。如果我们确定了选择第i列和第j列之间的元素，那么在这个范围内，其实就是一个最大子序列问题。如何确定第i列和第j列可以词用暴搜的方法进行<b>。</b>代码详见我的博客。 <b> </b></p>
<h3>SQL Server 2005 大数据量数据存储设计思路</h3>
<p> <b>来源网址：</b> <a href="http://blog.csdn.net/magician547/article/details/7692764">http://blog.csdn.net/magician547/article/details/7692764</a>
<p>&#160;&#160;&#160; 论坛上总看到有人说某某数据库几百万的数据量怎么提高查询速度等等，最近正好做了一个关于这方面的表结构优化，分享给大家，希望对大家有帮助<b>。</b>本人也不是什么大牛，只希望互相交流学习。仅为分享，不喜勿喷，谢谢。 </p>
<p>&#160;&#160;&#160; 言归正传，下面说一下具体的实现及效果。 </p>
<p>&#160;&#160;&#160; 应用场景： </p>
<p>&#160;&#160;&#160; 一张日志表，记录每天150w左右的数据量，应用要求存储6个月以上，则共计27000w左右的数据规模，表从设计初期就考虑到数据增长会很快，所以采用的是日志表的形似记录的内容，前端应用不需和任何表关联，只需从这张表中读取数据即可<b>。</b>应用主要是根据不同的条件进行日志数据的检索和统计功能（时间条件，条件1，条件2），数据检索分页显示。 </p>
<p>&#160;&#160;&#160; 原始处理方式，单表双TOP语句的方式<b>。</b>但是随着数据量的增长，检索速度越来越慢，老是出现查询超时的问题，同时由于双TOP方式分页的限制，导致页数越接近尾页越缓慢的现象<b>。</b> </p>
<p>&#160;&#160;&#160; 为了解决以上的问题，对原始数据表的结构进行了如下的调整。 </p>
<p>数据库对于百万级别的数据量，响应速度还是很快的，但是对于上亿级别的数据量而言，由于存在着大量的磁盘IO，所以速度的降低不是线性的，而是呈现指数级的下降，所以，优化方法的中心思想就是减少结果集的数量，提高数据库本身的响应时间<b>。</b> </p>
<p>针对以上的想法，分4个步骤对数据库的存储结构及数据的选取方式进行以下的优化<b>。</b> </p>
<p>1.分而治之 </p>
<p>对于几千万甚至亿级的数据，想在如此庞大的基础数据中做到快速响应的读取数据，比较可行的方法就是大而化小的思想<b>。</b> </p>
<p>大而化小的思想对于算法来说，怎样选取“小”这一概念的界定就很关键了，对于如此庞大的表，发现每天产生的数据量相对较稳定，基本维持在150w左右每天，这个数据量对于数据库来说是个可以快速进行响应的数据规模<b>。</b>而选择的太小，比如说按小时计算的方式，虽然单位的数据量减少了24倍，但是相对于数据量从150w到6w的时间提升远比1张表到24张表的维护性提高付出的代价多，所以最后决定采用按日分表的方式进行分表，这样以3个月的数据来说，从13500w的一张大表转化为150w的90张小表<b>。</b>这样可以改善最终结果的选取速度大大提升。 </p>
<p>2.合而击之 </p>
<p>经过以上的步骤，将大表划分为多个小表，虽然对于最终选取来说，只是从某一个小表中选取最终的数据，但是还是无法避免第一次进行所有涉及表的轮循计算行数的过程，这样与以前的方式相比数据量没有减少反而增加了算法的复杂度，所以单单分而治之的方法无法解决计算行数及页数的轮循产生的时间开销<b>。</b> </p>
<p>针对选取首页时的行数计算，可以反其道而行之，采用合而击之的方式，在数据初始化的时候进行以日为单位的选取条件统计，将统计结果分类存放于月表中，这样在选取时对于整日的区间只要直接从月表中读取响应日期的数据条目就可以了<b>。</b> </p>
<p>目前日志的查询条件有3组，分别是日期，条件1（固定），条件2（固定）。这样以日期为划分依据，就将检索条件由3组缩小为2组，减少了排列组合的数量，同时条件1和条件2的月表存储采用了“鸡兔同笼问题”的逆运算，通过选取条件确定某一类别的方式计算某一条件组合的信息条数<b>。</b>这样，实际的实验数据表明，可以讲150w的数据量缩小的4千左右的数据行数。对于表的数目来说每个月产生一张，代价很小<b>。</b> </p>
<p>CREATE TABLE monthtable </p>
<p>这样就有效地避免了在计算总行数时轮循所有日表的大量读取工作，节省了时间<b>。</b> </p>
<p>3.折半计算 </p>
<p>以上的2部，可以解决大表，及轮循时耗费大量时间的问题，但是对于起始日期来说，如果是完整的一天可以直接从月表中读取数据，若不是完整的一天，则还是需要读取日表，虽然最多只需要读取两张日表，但是还是会浪费一些时间<b>。</b> </p>
<p>对于表的顺序选取来说，由于数据库本身的机制限制，所以无法避免的需要进行正逆两次数据的选取，所以现在可以做的就是减少首次选取的行数及减少排序操作的次数<b>。</b> </p>
<p>出于以上的目的，现将日表的数据选取方式修改为折半计算的方式。即选取行之前，先计算所选取的行是否超过表选取数据行数的一半，若未超过仍采用原始的数据选取方式，若超过，则通过倒序选取的方式从数据尾部提取数据，这样当选去的尾行&#60;总行数一半时，选取时间与原是相同，当选取的尾行&#62;总行数的一半时，由于少了一次排序，并且选取的行数也减少了，所以速度优于原始的选取方式，而且越接近数据尾部选取的速度越快，尾页的速度和首页相同，这要比原始的方式速度提升很多倍<b>。</b> </p>
<p>这样，扫描的结果集最大值仅为原始的一半，而且少了一次大结果集的排序过程，时间大大提高<b>。</b> </p>
<p>原始方式流程图： </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image4.jpg"><img title="Image(4)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(4)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image4_thumb.jpg" width="99" height="779" /></a> </p>
<p>折中计算流程图： </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image5.jpg"><img title="Image(5)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(5)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image5_thumb.jpg" width="354" height="790" /></a> </p>
<p>4<b>.</b>创建统计表 </p>
<p>在数据库的数据选取过程中创中间统计表存储结果，用于存取在每个日表中选取的数据行数，只要传入的参数不是选择首页，那么数据库都直接从统计表中读取行数，这样就不用每一页都计算总行数，节省大量时间<b>。</b> </p>
<p>信息查询流程图： </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image6.jpg"><img title="Image(6)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(6)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image6_thumb.jpg" width="99" height="533" /></a> </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image7.jpg"><img title="Image(7)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(7)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image7_thumb.jpg" width="423" height="959" /></a> </p>
<p>以上数据选取过程封装在存储过程中统一进行<b>。</b> </p>
<p>统计优化测试数据： </p>
<p>数据量 14141687 </p>
<p>单位（ms） </p>
<p>测试计算机配置： </p>
<p>CPU：Inter(R)&#160; Celeron(R) CPU 430 @ 1<b>.</b>80GHz 1<b>.</b>79GHz </p>
<p>Memory:2G （计算机存在其他服务，SQL Server 可利用的内存实际在1G左右） </p>
<p>每进行一次数据检索操作，均重启SQL Server服务<b>。</b> </p>
<p>优化前后数据库均已建立相关索引，索引在这里就不列出了<b>。</b> </p>
<p>由于数据库存在数据预热的阶段，所以平均值的计算方式为去掉最大值后计算的平均值，表中红色为去掉的测试时间<b>。</b> </p>
<p>14141687 </p>
<p>51724 </p>
<p>33373 </p>
<p>31803 </p>
<p>30563 </p>
<p>37223 </p>
<p>33241 </p>
<p>14141687 </p>
<p>14141687 </p>
<p>52340 </p>
<p>35465 </p>
<p>35760 </p>
<p>37856 </p>
<p>34970 </p>
<p>36013 </p>
<p>14141687 </p>
<p>14141687 </p>
<p>57796 </p>
<p>45356 </p>
<p>45710 </p>
<p>44520 </p>
<p>45586 </p>
<p>45293 </p>
<p>14141687 </p>
<p>14141687 </p>
<p>55180 </p>
<p>42130 </p>
<p>42063 </p>
<p>42780 </p>
<p>42493 </p>
<p>42367 </p>
<p>14141687 </p>
<p>存储空间占用统计： </p>
<p>数据量14141687 </p>
<p>单位（KB） </p>
<p>数据日期区间2011-11-25 ~ 2011-12-29 </p>
<p>2150480 </p>
<p>1593688 </p>
<p>557792 </p>
<p>2057688 </p>
<p>1521752 </p>
<p>535936 </p>
<p>0<b>.</b>9569 </p>
<p>0.9549 </p>
<p>0<b>.</b>9608 </p>
<p>信息查询优化测试数据： </p>
<p>数据量 14141687 </p>
<p>单位（ms） </p>
<p>每页行数：50 </p>
<p>由于数据库存在数据预热的阶段，所以平均值的计算方式为去掉最大值后计算的平均值，表中红色为去掉的测试时间<b>。</b> </p>
<p>条件属性为： </p>
<p>1.统计时间：2011-11-16 0:00:00 ~ 2011-12-30 0:00:00 </p>
<p>2<b>.</b>条件1：xxxx </p>
<p>3.条件2：xxxx </p>
<p>测试1：以时间为筛选条件 </p>
<p>14141687 </p>
<p>89426 </p>
<p>64220 </p>
<p>61466 </p>
<p>62850 </p>
<p>54046 </p>
<p>60646 </p>
<p>14141687 </p>
<p>14141687 </p>
<p>34420 </p>
<p>14141687 </p>
<p>14141687 </p>
<p>34020 </p>
<p>14141687 </p>
<p>第141417页 </p>
<p>14141687 </p>
<p>36640 </p>
<p>10833 </p>
<p>11160 </p>
<p>10420 </p>
<p>第141417页 </p>
<p>14141687 </p>
<p>14141687 </p>
<p>37546 </p>
<p>11443 </p>
<p>11456 </p>
<p>11290 </p>
<p>11366 </p>
<p>11389 </p>
<p>14141687 </p>
<p>测试2：以时间和条件1为筛选条件 </p>
<p>66355 </p>
<p>79003 </p>
<p>42870 </p>
<p>40183 </p>
<p>49413 </p>
<p>42683 </p>
<p>43787 </p>
<p>66355 </p>
<p>66355 </p>
<p>34773 </p>
<p>12690 </p>
<p>12686 </p>
<p>13026 </p>
<p>12726 </p>
<p>12782 </p>
<p>66355 </p>
<p>66355 </p>
<p>35746 </p>
<p>12986 </p>
<p>14296 </p>
<p>12816 </p>
<p>13880 </p>
<p>13495 </p>
<p>66355 </p>
<p>第664页 </p>
<p>66355 </p>
<p>41143 </p>
<p>17736 </p>
<p>17763 </p>
<p>18763 </p>
<p>17743 </p>
<p>18001 </p>
<p>第664页 </p>
<p>66355 </p>
<p>66355 </p>
<p>42463 </p>
<p>18916 </p>
<p>20100 </p>
<p>20156 </p>
<p>20093 </p>
<p>19816 </p>
<p>66355 </p>
<p>测试3：以时间和条件2为筛选条件 </p>
<p>4829945 </p>
<p>84673 </p>
<p>60546 </p>
<p>60303 </p>
<p>58516 </p>
<p>58556 </p>
<p>59480 </p>
<p>4829945 </p>
<p>4829945 </p>
<p>39156 </p>
<p>15083 </p>
<p>15526 </p>
<p>15193 </p>
<p>15210 </p>
<p>15253 </p>
<p>4829945 </p>
<p>4829945 </p>
<p>36806 </p>
<p>15053 </p>
<p>15353 </p>
<p>16230 </p>
<p>15333 </p>
<p>15493 </p>
<p>4829945 </p>
<p>第48283页 </p>
<p>4829945 </p>
<p>44203 </p>
<p>23950 </p>
<p>24126 </p>
<p>23386 </p>
<p>23293 </p>
<p>23689 </p>
<p>第48283页 </p>
<p>4829945 </p>
<p>4829945 </p>
<p>46203 </p>
<p>24390 </p>
<p>25596 </p>
<p>25400 </p>
<p>24333 </p>
<p>24930 </p>
<p>4829945 </p>
<p>测试4：以时间和条件1<b>、</b>条件2为筛选条件 </p>
<p>66353 </p>
<p>78130 </p>
<p>30340 </p>
<p>28080 </p>
<p>28210 </p>
<p>27090 </p>
<p>28430 </p>
<p>66353 </p>
<p>66353 </p>
<p>35150 </p>
<p>12660 </p>
<p>12553 </p>
<p>12736 </p>
<p>13250 </p>
<p>12780 </p>
<p>66353 </p>
<p>66353 </p>
<p>34933 </p>
<p>12996 </p>
<p>12916 </p>
<p>14226 </p>
<p>12843 </p>
<p>13246 </p>
<p>66353 </p>
<p>第664页 </p>
<p>66353 </p>
<p>73570 </p>
<p>27630 </p>
<p>27096 </p>
<p>26276 </p>
<p>26053 </p>
<p>26734 </p>
<p>第664页 </p>
<p>66353 </p>
<p>66353 </p>
<p>70176 </p>
<p>32090 </p>
<p>31000 </p>
<p>32010 </p>
<p>32110 </p>
<p>31803 </p>
<p>66353 </p>
<p>测试结果分析： </p>
<p>从统计功能来看，数据库的响应速度提升很大，从30秒左右提升到20毫秒左右，速度最大提升了4700多倍，效果明显<b>。</b> </p>
<p>从查询功能来看，数据库的响应速度提升没有统计功能明显，但是也从30多秒提高到200毫秒左右，提升了约400-500倍左右<b>。</b> </p>
<p>原因分析：统计功能利用本算法可以完全避免对于原始数据表的读取操作，所以对于该功能来说，只是操作几张4-5千条数据的表，所以响应时间快，但是对于查询功能来说，最终返回给用户的信息是具体的消息，所以无法避免的要对数据表进行查找，所以时间上消耗的多了些<b>。</b>但是基本上也都控制在200毫秒以下就可以做出响应。 </p>
<p>本机制采用的是复杂度换时间的方法，即数据库结构和选取方式的复杂度增加了，从而减少了在选取时消耗的时间，并且有一部分统计工作提到了选取操作以外进行，将时间分块，从而在感觉上降低了响应时间<b>。</b> </p>
<p>对于，日表及月表的数据填充工作可以使用数据库的作业，在业务不繁忙的时间进行原始表的划分工作<b>。</b> </p>
<p>对于测试数据来说，1千4百万的数据初始化需要十分钟左右的时间进行，可以选择凌晨1点开始，这样最长1-2个小时就可以把数据处理完毕<b>。</b>并且大量表的初始化只在第一次更换数据库结构时产生，以后每天进行的数据统计工作基本上只有200w左右，这个数量级只需要几分钟就可以完成，完全不影响软件每天的正常使用<b>。</b> </p>
<p><b></b></p>
<h3>企业网站得力助手 国内4大流量统计系统横评</h3>
<p> <b>来源网址：</b> <a href="http://www.cnetnews.com.cn/2009/0724/1417442.shtml">http://www.cnetnews.com.cn/2009/0724/1417442.shtml</a>
<p>随着互联网的发展，网络营销已经成为任何企业都不可忽视的推广手段。但这些推广手段的效果究竟怎样?是否有进一步优化的空间?对于企业的拓展，这些问题至关重要<b>。</b> </p>
<p> 为了解决推广的“后续问题”，很多网站推出了流量检测统计服务。尤其是7月21日，全球最大的中文搜索引擎百度也推出了百度统计，百度的加入让这个市场的竞争更显激烈<b>。</b> </p>
<p> 那么，现有的流量统计系统中，哪一款最适合您的需要?各自有什么优势和劣势呢<b>?</b>我们选择了4款当前比较流行的系统进行了对比测试。 </p>
<p><strong>它们分别是：</strong> </p>
<p><strong>Google Analytics：</strong>Google旗下的流量统计系统，其前身是Urchin，一款商业级的web分析软件<b>。</b>被收购后，Google对其界面和易用性进行了改良，目前分为免费版和收费版两个版本，提供不同的功能<b>。</b> </p>
<p><strong>百度统计：</strong>百度刚刚发布的流量统计系统，属于百度自主研发，目前主要提供给百度推广的客户<b>。</b> </p>
<p><strong>太极链：</strong>国内老牌的友情链交换系统，首次引入了“数据仓库技术”，使站长可以对自己的历史统计<b>、</b>搜索引擎来访进行深入的挖掘分析<b>。</b> </p>
<p><strong>CNZZ：</strong>中国站长站旗下网站，有比较好的口碑，目前有注册用户100万，日统计量25亿PV<b>。</b> </p>
<p><strong>一、软件主界面和易用性</strong> </p>
<p> 企业网站多半其IT技术水平并不高，如果软件的界面过于复杂，操作过于繁琐，将大大提高用户的门槛，让很多企业主望而却步<b>。</b>为此，我们将主界面的简洁程度和易用性的考量放到了最重要的地位<b>。</b> </p>
<p><strong>1、 Google Analytics</strong> </p>
<p>界面表现：★★★★ </p>
<p> 易用性表现：★ </p>
<p> 访问速度：较快 </p>
<p> Google Analytics是5款软件中界面最标准的一款，各种统计功能分布较为合理，每个选项都以下拉框的方式涵盖了大量的内容，点击打开可以看到需要的内容<b>。</b>整个界面清晰、明了，但是这一系统有其很大的问题——操作过程以及数据的侧重点与国内通用的模式不同，界面虽然标准，但上手比较困难，比较适合资深的网站管理者<b>。</b> </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image8.jpg"><img title="Image(8)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(8)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image8_thumb.jpg" width="504" height="290" /></a> </p>
<p>Google Analytics：功能结构清晰，但上手比较困难 </p>
<p><strong>2、百度统计</strong> </p>
<p> 界面表现：★★★★★ </p>
<p> 易用性表现：★★★★★ </p>
<p> 访问速度：很快 </p>
<p> 百度一贯以“简单，可依赖”来要求自己的产品设计体系，百度统计依然秉承了这一原则。整个后台系统非常简洁，只简单的分为“流量分析”<b>、</b>“来源分析”、“转化分析”和“网站分析”四大模块。 </p>
<p> 在易用性方面，可以说，即便是第一次使用流量统计系统的企业主，也可以轻松操作，非常傻瓜。 </p>
<p>百度统计：界面简洁，操作门槛极低 </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image9.jpg"><img title="Image(9)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(9)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image9_thumb.jpg" width="504" height="337" /></a> </p>
<p><strong>3<b>、</b>太极链</strong> </p>
<p>界面表现：★★★ </p>
<p> 易用性表现：★★★★★ </p>
<p> 访问速度：偏慢 </p>
<p> 与百度统计类似，采用左右栏的展现方式，数据清晰。不过其统计结果的数据展示方式不够明了，大都采用数字的方式，图表较少，这为分析带来了一定的麻烦<b>。</b>而且还有一点，太极链统计的访问速度偏慢。 </p>
<p> 在易用性上，太极链表现出色，和百度统计基本上表现一致。 </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image10.jpg"><img title="Image(10)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(10)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image10_thumb.jpg" width="504" height="303" /></a> </p>
<p>太极链：展示清晰，但不够人性化，易用性好 </p>
<p><strong>4、CNZZ</strong> </p>
<p> 界面表现：★★★★ </p>
<p> 易用性表现：★★★★ </p>
<p> 访问速度：较快 </p>
<p> CNZZ的界面也是采用的两栏式，统计结果可以是数字、图表等展现形式<b>。</b>而且它的易用性、访问速度都让人很满意。 </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image111.jpg"><img title="Image(11)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(11)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image11_thumb.jpg" width="504" height="310" /></a> </p>
<p>CNZZ：界面清晰，布局合理，访问速度快 </p>
<p>Google Analytics </p>
<p>免费<b>、</b>收费 </p>
<p>表1：4款统计系统基本参数对比 </p>
<p><strong>点评：</strong>毫无疑问，在系统界面、易用性和访问速度上，百度统计都是表现最为抢眼的，这得益于百度对产品的一贯原则，而且百度统计的数据输出都采用直接明了的图表式<b>。</b>表现比较差的是太极链，尤其是它的访问速度。如果对网站管理技术掌握不够，不建议使用Google Analytics<b>。</b>而CNZZ是仅此于百度统计，表现较为平均的一款。 </p>
<p><strong>二、统计功能</strong> </p>
<p> 功能也是我们最关注的因素之一，毕竟越翔实的功能，对于企业网站的参考意义就越大。 </p>
<p><strong>1、Google Analytics</strong> </p>
<p>功能强大：★★★★★ </p>
<p> 统计项齐全：★★★★ </p>
<p> Google Analytics可以说提供了所有网站统计的必要项目，它分为免费版和收费版，免费版有每月综合浏览量的限制<b>。</b> </p>
<p> 我们主要针对其免费版来加以评述。除了大家都有的IP、PV、新访客等等统计数据，她的地域统计比较直观，直接标注在地图上<b>。</b> </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image12.jpg"><img title="Image(12)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(12)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image12_thumb.jpg" width="504" height="310" /></a> </p>
<p>Google Analytics：功能强大<b>、</b>完善<b>、</b>专业 </p>
<p> Google Analytics还包括了市场分析功能，把你网站的流量，点击量结合起来，算出这些广告给网站带来的价值，给出综合的投资回报分析<b>。</b>各种数据是比较客观的，网站在加入了统计代码以后打开速度没有大的影响。 </p>
<p><strong>2、百度统计</strong> </p>
<p> 功能强大：★★★★★ </p>
<p> 统计项齐全：★★★★★ </p>
<p> 百度统计的功能也是4款产品中表现出色的，它不仅具有常规的统计功能，更将重点放在了对企业主更实用的推广效果监控和网站页面监控上<b>。</b> </p>
<p> 比如，百度统计提供了“访客忠诚度报告”，可以监测访客访问频率、深度<b>、</b>时长;与百度推广集成，对其整体转化率和关键词的转化率都有详细的统计;更提供了特有的 “上下游报告”，能够帮你找到访客在网站的访问习惯，从而有针对性地调整网站建设<b>、</b>推广策略<b>。</b> </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image13.jpg"><img title="Image(13)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(13)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image13_thumb.jpg" width="504" height="302" /></a> </p>
<p>百度统计：针对搜索引擎关键词的详细分析 </p>
<p><strong>3、太极链</strong> </p>
<p> 功能强大：★★★ </p>
<p> 统计项齐全：★★★ </p>
<p> 和前两家的统计参数大同小异，不过整合了Alexa排名的情况，还提供了IP头统计。不过对网站流量的来路分析和流量分布统计并不是非常出色<b>。</b>统计精确到了20分钟。值得注意的是，在我们测试过程中，太极链还出现了一次系统故障<b>。</b> </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image14.jpg"><img title="Image(14)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(14)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image14_thumb.jpg" width="504" height="288" /></a> </p>
<p>太极链：每20分钟可进行一次报告分析 </p>
<p><strong>4、CNZZ</strong> </p>
<p> 功能强大：★★★★ </p>
<p> 统计项齐全：★★★★ </p>
<p> CNZZ的功能和统计项目和百度统计几乎一致，所不同的是，它在统计不同时段的流量表现时，不像百度那般傻瓜<b>。</b>而是单独针对时间设置了相关的统计菜单<b>。</b> </p>
<p> 值得一提的是，CNZZ提供了“用户忠诚度”分析、“升降榜”和“短信报警”这3个特色功能<b>。</b>其中“用户忠诚度”分析主要是针对流量的“回头率”进行分析，“升降榜”则是对比不同的时间段的流量情况，“短信报警”是当流量达到某个上限或下限时，短信通知企业主<b>。</b> </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image15.jpg"><img title="Image(15)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(15)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image15_thumb.jpg" width="504" height="281" /></a> </p>
<p>CNZZ：特色的短信报警功能 </p>
<p>功能 统计项 </p>
<p> PV IP 唯一访客 被访子网站 被访页面 来访网站 来访页面 关键字 地理位置 浏览器 转化率 忠诚度 </p>
<p>Google Analytics 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 </p>
<p>百度统计 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 </p>
<p>太极链 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 不支持 不支持 </p>
<p>CNZZ 支持 支持 支持 支持 支持 支持 支持 支持 支持 支持 不支持 不支持 </p>
<p>表2：4款产品统计内容对比 </p>
<p><strong>点评：</strong> </p>
<p> 当然，总体来讲，Google Analytics在这一测试环节中的表现还是略胜一筹，给我们留下了较好的印象<b>。</b> </p>
<p><strong>三、配套服务、使用感受</strong> </p>
<p> 如果仅仅是个流量统计功能，根本就没有必要在意它的配套服务，但问题是对于企业网站，流量统计不是目的，目的是通过流量统计来衡量推广效果，并对当前的推广策略进行优化<b>。</b>所以这方面的表现我们尤其关注<b>。</b> </p>
<p><strong>1、 Google Analytics</strong> </p>
<p>使用感受：★★★ </p>
<p> Goolge Analytics的帮助中心为用户提供了使用步骤说明，由于说明比较简单，虽然对每一个分步也做了说明，但并不是清晰明了，而且也没有提供demo<b>。</b>根据Google Analytics提供的疑问向导，可以解决操作过程中碰到的问题，不过这个向导有点类似于Windows疑难解答的方式，显得庞杂<b>、</b>繁琐。 </p>
<p><strong>2、百度统计</strong> </p>
<p>使用感受：★★★★★ </p>
<p> 百度统计的用户体验做得非常出色，整个操作、测试非常流畅，而且关键有两点让我们颇有好感：其一，提供了详细的帮助页面，解释了每一个菜单<b>、</b>参数的含义;其二，提供了一个初学者入门教程，并提供了PPT格式的傻瓜向导，十分人性化。 </p>
<p>在中国，由于有30多万企业使用百度推广，所以将百度推广和百度统计联合起来共同参考<b>、</b>决策非常有用<b>。</b>这一点算是给百度统计的额外加分。 </p>
<p><strong>3、太极链</strong> </p>
<p> 使用感受：★★ </p>
<p> 由于速度一般，而且整体表现也偏弱，虽然操作不成问题，但太极链整体给人感觉还是偏向于平庸。操作过程中出现过两次系统故障，证明其稳定性还有待加强<b>。</b> </p>
<p><strong>4、CNZZ</strong> </p>
<p>使用感受：★★★★ </p>
<p> CNZZ无论是易用性、界面表现还是功能，都让人比较满意，而且它提供了一些人性化特色功能给人印象深刻，是本次测试中综合表现比较平均的一款<b>。</b>不过，如果加强一下它的客服帮助系统和demo演示方面的表现就更好了。 </p>
<p><strong>评测总结：</strong> </p>
<p><strong>综合表现奖：</strong>百度统计 </p>
<p> 我们认为，百度统计的最大优势在于：其一，它的设计思路并非单纯是个流量统计系统，更多的是从企业主需求出发，帮助他们得到一些对推广有帮助的结论;其二，与百度推广紧密集成，同时也兼顾了对Google等其他营销平台的监测<b>。</b> </p>
<p> 总之，无论是功能、易用性，还是配套服务等诸多方面，百度统计整体表现出色，并且随着产品的完善，这款统计系统的后续表现将有很大的期待空间<b>。</b>对于百度推广的企业主，这是一款必不可少的工具。 </p>
<p><b></b></p>
<h3>领域驱动设计(DDD:Domain-Driven Design) </h3>
<p> <b>来源网址：</b> <a href="http://www.jdon.com/ddd.html">http://www.jdon.com/ddd.html</a>
<p> Eric Evans的“Domain-Driven Design领域驱动设计”简称DDD，Evans DDD是一套综合软件系统分析和设计的面向对象建模方法，本站Jdon.com是国内公开最早讨论DDD网站之一，可订阅<a href="http://www.jdon.com/tags/272">DDD专题</a> <b>。</b>    <br />初学者学习DDD可从研究本站Jdon框架的DDD应用源码开始，<a href="http://www.jdon.com/jdonframework/app.htm">戳这里开始</a> <b>。</b> </p>
<p> 过去系统分析和系统设计都是分离的，正如我们国家“系统分析师” 和“系统设计师” 两种职称考试一样，这样割裂的结果导致，需求分析的结果无法直接进行设计编程，而能够进行编程运行的代码却扭曲需求，导致客户运行软件后才发现很多功能不是自己想要的，而且软件不能快速跟随需求变化<b>。</b> </p>
<p>DDD则打破了这种隔阂，提出了领域模型概念，统一了分析和设计编程，使得软件能够更灵活快速跟随需求变化<b>。</b>见下面DDD与传统CRUD或过程脚本或者面向数据表等在开发效率上比较： </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image1.png"><img title="Image(1)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(1)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image1_thumb.png" width="485" height="300" /></a> </p>
<p>服务器后端发展三个阶段： </p>
<ol>
<li>UI+DataBase的两层架构，这种面向数据库的架构(上图table module )没有灵活性<b>。</b> </li>
<li>UI+Service+DataBase的多层SOA架构，这种服务+表模型的架构易使服务变得囊肿，难于维护拓展，伸缩性能差，见<a href="http://www.jdon.com/45467">这里讨论</a> </li>
<li>DDD+SOA的事件驱动的<a href="http://www.jdon.com/cqrs.html">CQRS读写分离架构</a> ，应付复杂业务逻辑，以聚合模型替代数据表模型，以并发的事件驱动替代串联的消息驱动<b>。</b>真正实现以业务实体为核心的灵活拓展。</li>
</ol>
<p>DDD革命性在于：领域模型准确反映了业务语言，而传统J2EE或Spring+Hibernate等事务性编程模型只关心数据，这些数据对象除了简单setter/getter方法外，没有任何业务方法，被比喻成失血模型，那么领域模型这种带有业务方法的充血模型到底好在哪里？ </p>
<p>以<a href="http://www.jdon.com/44815">比赛Match</a> 为案例，比赛有“开始”和“结束”等业务行为，但是传统经典的方式是将“开始”和“结束”行为放在比赛的服务Service中，而不是放在比赛对象本身之中<b>。</b>我们不能因为用了计算机，用了数据库，用了框架，业务模型反而被技术框架给绑架，就像人虽然是由母亲生的，但是人的吃喝拉撒母亲不能替代，更不能以母爱名义肢解人的正常职责行为，如果是这样，这个人就是被母爱绑架了<b>。</b> </p>
<p> 提倡充血模型，实际就是让过去被肢解被黑crack的业务模型回归正常，当然这也会被一些先入为主或被洗过脑的程序员看成反而不正常，这更是极大可悲之处<b>。</b>看到领域模型代码，就看到业务需求，没有翻译没有转换，保证软件真正实现“拷贝不走样”。 </p>
<p> DDD最大的好处是：接触到需求第一步就是考虑领域模型，而不是将其切割成数据和行为，然后数据用数据库实现，行为使用服务实现，最后造成需求的首肢分离<b>。</b>DDD让你首先考虑的是业务语言，而不是数据<b>。</b>重点不同导致编程世界观不同。 </p>
<p> DDD是解决复杂中大型软件的一套行之有效方式，在国外已经成为主流。DDD认为很多原因造成软件的复杂性，我们不可能避免这些复杂性，能做的是对复杂的问题进行控制<b>。</b>而一个好的领域模型是控制复杂问题的关键。领域模型的价值在于提供一种通用的语言，使得领域专家和软件技术人员联系在一起，沟通无歧义<b>。</b> </p>
<p> DDD的实现离不开<a href="http://www.jdon.com/cache.html">in-memory缓存</a> 、 <a href="http://www.jdon.com/tags/9958">CQRS、</a> <a href="http://www.jdon.com/dci.html">DCI</a> 、 <a href="http://www.jdon.com/eda.html">EDA</a> 或<a href="http://www.jdon.com/tags/17268">Event Source</a> 三大相关领域<b>。</b> </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image2.png"><img title="Image(2)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(2)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image2_thumb.png" width="244" height="228" /></a> </p>
<p><a href="http://www.jdon.com/44491">2012年Eric Evans关于技术如何影响DDD的会话</a> </p>
<p><a href="http://www.jdon.com/44931">聚合与一致性和有界上下文</a> </p>
<p><a href="http://www.jdon.com/mda/oo_relation.html"><strong>面向对象建模与数据库建模两种分析设计方法的比较</strong></a>    <br />数据库驱动设计与对象建模是决定软件不同命运的两大派别，谁可以让软件更具有生命，维护拓展更方便？伸缩性更强<b>?</b> </p>
<p><a href="http://www.jdon.com/mda/oo-reltaion2.html"><strong>对象和关系数据库的天然阻抗</strong></a>    <br />软件是讲究方法的，要谈方法，这个世界只有两种：一是将复杂问题简单化的方法；另一是将简单问题复杂化的方法<b>。</b>对于软件这个领域，你只能选择前者<b>。</b> </p>
<p><a href="http://www.jdon.com/mda/modeling.html"><strong> 面向对象与领域建模</strong></a>    <br />据调查，目前有70%左右程序员是在使用OO语言编写传统过程化软件，缺乏完整的面向对象思维方法的教育和培训是基本根源，本文对软件开发中几个常见问题提出了独立的见解及尖锐的观点 </p>
<p><a href="http://www.jdon.com/mda/dddcase2.html"><strong>Evans DDD 领域建模</strong></a>    <br />如何提炼模型，而不是数据表，进而精化模型对象，使其能够反映领域概念基本本质是一个复杂过程，Evans DDD是2004年提出的具备革命性影响的软件思想<b>。</b> </p>
<p><a href="http://www.jdon.com/../mda/ddd.html"><strong>实战DDD(Evans DDD:Domain-Driven Design领域驱动设计)</strong></a>    <br />领域建模是一种艺术的技术，不是数学的技术，它是用来解决复杂软件快速应付变化的解决之道。 </p>
<p><a href="http://www.jdon.com/mda/dddcase2.html">领域模型驱动设计(Evans DDD)之模型提炼</a> </p>
<p><a href="http://www.jdon.com/artichect/state.htm">状态对象：数据库的替代者</a>    <br /> 实体是一个有状态的对象，这是一个实战中非常重要但是容易被忽视的概念。 </p>
<p><a href="http://www.jdon.com/38071"><strong>如何从职 责和协作中发现丰富对象？       <br /></strong></a>给出了DDD具体实践中一些具体细节，是和DDD配合一起进行面向对象分析设计的好方法。 </p>
<p><a href="http://www.jdon.com/44416">业务模型统一描述</a>    <br />统一语言是DDD一个重要特征和重点<b>。</b> </p>
<p><a href="http://www.jdon.com/37976"> DCI架构是什么？</a>    <br /> DCI架构：DCI: 对象的Data数据, 对象使用的Context场景, 对象的Interaction交互行为 </p>
<p><a href="http://www.jdon.com/37712">Domain Events异步应用</a>    <br />领域驱动设计和异步架构完美实战解决之道。 </p>
<p><a href="http://www.jdon.com/jdonframework/dci.html"><strong>DDD DCI和领域事件</strong></a>    <br />将DDD DCI Event sourcing结合在一个案例中，展示OOA和OOD实现过程，直至可运行的源代码<b>。</b> </p>
<p><a href="http://www.jdon.com/44386"><strong>业务建模：CQRS应用场景</strong></a>    <br />如何更好地在实践中实现DDD，又防止技术架构对业务领域的侵害，本文讨论引入CQRS使用场景<b>。</b> </p>
<p><a href="http://www.jdon.com/mda/dsm.html"><strong>DSM：Domain-Specific Modeling</strong></a>    <br />DSM是超越UML/MDA一种新的建模方法，它成倍提高软件开发效率<b>。</b> </p>
<p><a href="http://www.jdon.com/mda/archetypes.html"><strong>四色原型</strong></a>    <br />我们在一个软件革命的开始，它象90年代我们看到的面向对象编程从传统过程语言中抽象出来一样<b>。</b> 如果说GOF设计模式开辟了OO对象设计新时代，那么原型模式和MDA将开辟后十年的软件新时代<b>。</b> </p>
<p><a href="http://www.jdon.com/mda/Feature_Driven_Development.html"><strong>Feature-Driven Development特征驱动开发</strong></a>    <br />使用JdonFramework等现代Model/Service框架是在什么项目工程背景下进行的？不是以前的XP（Extreme Programming ）或RUP，而是FDD<b>。</b> </p>
<p><a href="http://www.jdon.com/mda/umlout.html"><strong>UML和Java的阻抗</strong></a>    <br />如果Java和UML这种发展概念不匹配下去，我们真的要问UML过时了吗？ </p>
<p><a href="http://www.jdon.com/artichect/state.htm"><strong>状态对象：数据库的替代者</strong></a>    <br />这是一个实战中非常重要但是容易被忽视的概念，说它重要，是因为它比数据库重要；说它容易被忽视也是同样的原因，它经常被数据库概念替代<b>。</b> </p>
<p><a href="http://www.jdon.com/42961"><strong>不变性immutablity设计</strong></a>    <br />不变性是统领业务分析和高性能架构重要法门，通过业务上不变性分析设计，可以实现代码运行的并发高性能和高扩展性&#160;&#160; </p>
<p><a href="http://www.jdon.com/43878"><strong>罗素悖论 类型系统与编程语言</strong></a>    <br />物以类聚，类型理论解决了罗素悖论，挽救了数学，催生了计算机科学，奠定了西方科学文明的基石<b>。</b> </p>
<p><a href="http://www.jdon.com/44215"><strong>行为驱动开发(BDD)如何与领域驱动设计(DDD)结合？</strong></a>    <br />BDD认为是在不断敏捷迭代开发中从用户故事中挖掘领域模型，这种敏捷开发方式是否与DDD矛盾呢？ </p>
<p><a href="http://www.jdon.com/44626"><strong>事件<b>、</b>契约设计与BDD</strong></a>    <br />板桥banq提出中西结合的统一语言：场景 事件和状态，该文进行了论证<b>。</b> </p>
<p><a href="http://www.jdon.com/44815">DDD CQRS和Event Sourcing的案例：足球比赛</a>    <br />DDD + CQRS + Event Sourcing实现案例，结合代码与理论讲解<b>。</b> </p>
<p><a href="https://github.com/mspnp/cqrs-journey-doc">英文DDD CQRS开源文档</a> </p>
<h5><a href="http://www.jdon.com/tags/21315">Jdon<b> </b>分析法</a></h5>
<p><a href="http://www.jdon.com/44896"><strong>为什么计算科学中最难的两件事是命名和缓存失效</strong></a> </p>
<p><a href="http://www.jdon.com/43717">内存领域对象+事件驱动 = 量身定制的高并发架构</a> </p>
<h5>Martin Fowler推荐的领域模型in-memory架构：<a href="http://www.jdon.com/42452">LMAX<b> </b>架构</a></h5>
<h5><a href="http://www.jdon.com/jdonframework/dci.html">DDD DCI<b> </b>和领域事件</a></h5>
<p><a href="http://www.jdon.com/jdonframework/ddd.html">开源框架JdoFramework模型驱动快速开发</a> </p>
<p><a href="http://www.jdon.com/tags/307">DDD实体</a> </p>
<h5><a href="http://www.jdon.com/tags/309">DDD<b> </b>值对象</a></h5>
<h5><a href="http://www.jdon.com/tags/238">DDD仓储Repository<b> </b>模式</a></h5>
<h5><a href="http://www.jdon.com/tags/766">DDD Specification<b> </b>规格模式</a></h5>
<h5><a href="http://www.jdon.com/tags/677">DDD<b> </b>服务</a></h5>
<h5><a href="http://www.jdon.com/tags/8976">DDD<b> </b>聚合</a></h5>
<h5><a href="http://www.jdon.com/tags/9958">CQRS<b> </b>架构</a></h5>
<h5><a href="http://www.jdon.com/tags/10174">职责驱动设计</a></h5>
<h5><a href="http://www.jdon.com/40576"><strong>OOD vs SOA<b> </b></strong></a></h5>
<h5><a href="http://www.jdon.com/39722">DDD DCI CQRS讲座文档PPT<b> </b></a></h5>
<h5><a href="http://www.jdon.com/39844"><strong>领域驱动设计之我见</strong></a></h5>
<h4><a href="http://www.jdon.com/tags/272">更多 DDD领域驱动设计 有关领域建模经验探讨</a> ..<b>.</b></h4>
<h5><a href="http://www.jdon.com/oo.html">面向对象OOA OOD<b> </b>专题</a></h5>
<p><a href="http://www.jdon.com/functional.html">函数式编程(Functional programming)</a> </p>
<h5><a href="http://www.jdon.com/45826"><b>SugarCRM使用EDA替代SOA</b> </a></h5>
<p><a href="http://www.jdon.com/blog/banq"><b>banq</b></a>&#160;&#160; 2013-10-19&#160;&#160;&#160; <a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image.gif"><img title="Image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image_thumb.gif" width="18" height="18" /></a>3讨论&#160;&#160;&#160; 445浏览 </p>
<p>Replacing SOA API calls by EDA request/replies usi 谈论在EAI企业应用整合如何使用EDA替代原来的SOA API<b>。</b> EDA事件驱动架构和SOA面.... </p>
<h5><a href="http://www.jdon.com/45813"><b>Scala</b> 设计模式</a></h5>
<p><a href="http://www.jdon.com/blog/banq"><b>banq</b></a>&#160;&#160; 2013-10-14&#160;&#160;&#160; 3讨论&#160;&#160;&#160; 560浏览 </p>
<p>Design Patterns in Scala 一文列举了Java和Scala实现经典GoF设计模式的不同代码，有助于对比两种语言<b>。</b> 工厂模式： Java代码： public .... </p>
<h5><a href="http://www.jdon.com/45811"><b>go reactive</b> 宣言</a></h5>
<p><a href="http://www.jdon.com/blog/banq"><b>banq</b></a>&#160;&#160; 2013-10-13&#160;&#160;&#160; 12讨论&#160;&#160;&#160; 1221浏览 </p>
<p>这段时间，软件领域暗流涌动： 中间件江湖新来了一批悍将，在互联网领域把EE打得节节败退<b>。</b>Finagle(Twitter)异步化RPC，Akka(TypeSafe)融入管理思路的Actor模型，RxJ.... </p>
<h5><a href="http://www.jdon.com/45798"><b>敏捷开发其实意义不是很大，在复杂项目中</b></a></h5>
<p><a href="http://www.jdon.com/blog/wangcity"><b>wangcity</b></a>&#160;&#160; 2013-10-11&#160;&#160;&#160; 4讨论&#160;&#160;&#160; 423浏览 </p>
<p>敏捷开发其实意义不是很大，在复杂项目中 复杂系统的开发，不会采用敏捷的方式，而是要在开始阶段，多考虑完善，多在架构层面，留有余量，而这个余量，更多的是通过设计方法--例如，采用灵活的顶层设计，留有余.... </p>
<h5><a href="http://www.jdon.com/45781"><b>ORM真的不适合DDD</b> </a></h5>
<p><a href="http://www.jdon.com/blog/daxnet"><b>daxnet</b></a>&#160;&#160; 2013-10-08&#160;&#160;&#160; 52讨论&#160;&#160;&#160; 1511浏览 </p>
<p>第一篇帖子，先自我介绍一下，我从07年开始关注并实践 DDD ，也一直在关注jdon的成长（虽然一直没有注册ID并发言）<b>。</b>自己的tech stack是.NET阵营的，一致也在致力推广.NET下 .... </p>
<p><b></b></p>
<h3>大数据的概念、技术应用与分析及数据的处理</h3>
<p> <b>来源网址：</b> <a href="http://bbs.pinggu.org/bigdata/">http://bbs.pinggu.org/bigdata/</a><br />
<h5>数据的征服：读《大数据时代》</h5>
<p>谷歌有一个名为&#34;谷歌流感趋势&#34;的工具，它通过跟踪搜索词相关数据来判断全美地区的流感情况（比如患者会搜索流感两个字）<b>。</b>近日，这个工具发出警告，全美的流感已经进入&#34;紧张&#34;级别<b>。</b>它对于健康服务产业和流行病专家来说是非常有用的，因为它的时效性极强，能够很好地帮助到疾病暴发的跟踪和处理<b>。</b>事实也证明，通过海量搜索词的跟踪获得的趋势报告是很有说服力的，仅波士顿地区，就有700例流感得到确认，该地区目前已宣布进入公共健康紧急状态<a href="http://bbs.pinggu.org/thread-2239985-1-1.html">…点击查看&#62;&#62;</a> </p>
<h5>大数据时代BI王者之剑——SAS<b> </b>企业挖掘系统</h5>
<p>大数据的爆炸式增长在大容量、多样性和高增速方面，全面考验着现代企业的数据处理和分析能力；同时，也为企业带来了获取更丰富<b>、</b>更深入和更准确地洞察市场行为的大量机会。对企业而言，能够从大数据中获得全新价值的消息是令人振奋的<b>。</b>然而，如何从大数据中发掘出&#34;真金白银&#34;则是一个现实的挑战。这就要求采用一套全新的、对企业决策具有深远影响的解决方案<a href="http://bbs.pinggu.org/thread-2151013-1-1.html">…点击查看&#62;&#62;</a> </p>
<h4>大数据概念</h4>
<p>&#34;大数据&#34;是一个体量特别大，数据类别特别大的数据集，并且这样的数据集无法用传统数据库工具对其内容进行抓取<b>、</b>管理和处理<b>。</b> &#34;大数据&#34;首先是指数据体量(volumes)?大，指代大型数据集，一般在10TB?规模左右，但在实际应用中，很多企业用户把多个数据集放在一起，已经形成了PB级的数据量；其次是指数据类别(variety)大，数据来自多种数据源，数据种类和格式日渐丰富，已冲破了以前所限定的结构化数据范畴，囊括了半结构化和非结构化数据<b>。</b>接着是数据处理速度（Velocity）快，在数据量非常庞大的情况下，也能够做到数据的实时处理。最后一个特点是指数据真实性（Veracity）高，随着社交数据、企业内容<b>、</b>交易与应用数据等新数据源的兴趣，传统数据源的局限被打破，企业愈发需要有效的信息之力以确保其真实性及安全性<b>。</b> </p>
<h5>百度知道—大数据概念</h5>
<p>大数据(bigdata)，或称巨量资料，指的是所涉及的资料量规模巨大到无法透过目前主流软件工具，在合理时间内达到撷取<b>、</b>管理<b>、</b>处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据的4V特点：Volume、Velocity<b>、</b>Variety、Veracity。 </p>
<h5>互联网周刊—大数据概念</h5>
<p>&#34;大数据&#34;的概念远不止大量的数据（TB）和处理大量数据的技术，或者所谓的&#34;4个V&#34;之类的简单概念，而是涵盖了人们在大规模数据的基础上可以做的事情，而这些事情在小规模数据的基础上是无法实现的<b>。</b>换句话说，大数据让我们以一种前所未有的方式，通过对海量数据进行分析，获得有巨大价值的产品和服务，或深刻的洞见，最终形成变革之力 </p>
<h5>研究机构Gartner<b> </b>—大数据概念</h5>
<p>&#34;大数据&#34;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量<b>、</b>高增长率和多样化的信息资产。从数据的类别上看，&#34;大数据&#34;指的是无法使用传统流程或工具处理或分析的信息<b>。</b>它定义了那些超出正常处理范围和大小、迫使用户采用非传统处理方法的数据集。 亚马逊网络服务（AWS）、大数据科学家JohnRauser提到一个简单的定义：大数据就是任何超过了一台计算机处理能力的庞大数据量<b>。</b> 研发小组对大数据的定义：&#34;大数据是最大的宣传技术、是最时髦的技术，当这种现象出现时，定义就变得很混乱<b>。</b>&#34; Kelly说：&#34;大数据是可能不包含所有的信息，但我觉得大部分是正确的。对大数据的一部分认知在于，它是如此之大，分析它需要多个工作负载，这是AWS的定义<b>。</b>当你的技术达到极限时，也就是数据的极限&#34;。 大数据不是关于如何定义，最重要的是如何使用。最大的挑战在于哪些技术能更好的使用数据以及大数据的应用情况如何。这与传统的数据库相比，开源的大数据分析工具的如Hadoop的崛起，这些非结构化的数据服务的价值在哪里<b>。</b> </p>
<h4>大数据分析</h4>
<p>从所周知，大数据已经不简简单单是数据大的事实了，而最重要的现实是对大数据进行分析，只有通过分析才能获取很多智能的，深入的，有价值的信息<b>。</b>那么越来越多的应用涉及到大数据，而这些大数据的属性，包括数量，速度，多样性等等都是呈现了大数据不断增长的复杂性，所以大数据的分析方法在大数据领域就显得尤为重要，可以说是决定最终信息是否有价值的决定性因素<b>。</b>基于如此的认识，大数据分析普遍存在的方法理论有哪些呢？ </p>
<p>大数据分析的使用者有大数据分析专家，同时还有普通用户，但是他们二者对于大数据分析最基本的要求就是可视化分析，因为可视化分析能够直观的呈现大数据特点，同时能够非常容易被读者所接受，就如同看图说话一样简单明了<b>。</b> </p>
<p>大数据分析的理论核心就是数据挖掘算法，各种数据挖掘的算法基于不同的数据类型和格式才能更加科学的呈现出数据本身具备的特点，也正是因为这些被全世界统计学家所公认的各种统计方法（可以称之为真理）才能深入数据内部，挖掘出公认的价值<b>。</b>另外一个方面也是因为有这些数据挖掘的算法才能更快速的处理大数据，如果一个算法得花上好几年才能得出结论，那大数据的价值也就无从说起了<b>。</b> </p>
<p> 大数据分析最终要的应用领域之一就是预测性分析，从大数据中挖掘出特点，通过科学的建立模型，之后便可以通过模型带入新的数据，从而预测未来的数据<b>。</b> </p>
<p> 大数据分析最终要的应用领域之一就是预测性分析，从大数据中挖掘出特点，通过科学的建立模型，之后便可以通过模型带入新的数据，从而预测未来的数据<b>。</b> </p>
<p>大数据分析离不开数据质量和数据管理，高质量的数据和有效的数据管理，无论是在学术研究还是在商业应用领域，都能够保证分析结果的真实和有价值<b>。</b> 大数据分析的基础就是以上五个方面，当然更加深入大数据分析的话，还有很多很多更加有特点的<b>、</b>更加深入的、更加专业的大数据分析方法。 </p>
<h4>大数据技术</h4>
<p><b>数据采集：</b>ETL工具负责将分布的、异构数据源中的数据如关系数据<b>、</b>平面数据文件等抽取到临时中间层后进行清洗、转换<b>、</b>集成，最后加载到数据仓库或数据集市中，成为联机分析处理、数据挖掘的基础。    <br /><b> 数据存取：</b>关系数据库、NOSQL、SQL等。    <br /><b>基础架构：</b>云存储、分布式文件存储等。    <br /><b> 数据处理：</b>自然语言处理(NLP，NaturalLanguageProcessing)是研究人与计算机交互的语言问题的一门学科<b>。</b>处理自然语言的关键是要让计算机&#34;理解&#34;自然语言，所以自然语言处理又叫做自然语言理解(NLU，NaturalLanguage Understanding)，也称为计算语言学(Computational Linguistics<b>。</b>一方面它是语言信息处理的一个分支，另一方面它是人工智能(AI, Artificial Intelligence)的核心课题之一<b>。</b>    <br /><b>统计分析：</b>假设检验、显著性检验、差异分析、相关分析<b>、</b>T检验、方差分析、卡方分析、偏相关分析<b>、</b>距离分析、回归分析、简单回归分析、多元回归分析<b>、</b>逐步回归、回归预测与残差分析、岭回归、logistic回归分析<b>、</b>曲线估计、因子分析、聚类分析、主成分分析<b>、</b>因子分析、快速聚类法与聚类法、判别分析、对应分析<b>、</b>多元对应分析（最优尺度分析）、bootstrap技术等等。    <br /><b> 数据挖掘：</b>分类 （Classification）、估计（Estimation）、预测（Prediction）、相关性分组或关联规则（Affinity grouping or association rules）<b>、</b>聚类（Clustering）、描述和可视化、Description and Visualization）、复杂数据类型挖掘(Text, Web ,图形图像，视频，音频等)    <br /><b>模型预测：</b>预测模型、机器学习、建模仿真。    <br /><b>结果呈现：</b>云计算、标签云、关系图等。 </p>
<h4>大数据特点</h4>
<p>要理解大数据这一概念，首先要从&#34;大&#34;入手，&#34;大&#34;是指数据规模，大数据一般指在10TB(1TB=1024GB)规模以上的数据量<b>。</b>大数据同过去的海量数据有所区别，其基本特征可以用4个V来总结(Vol-ume<b>、</b>Variety、Value和Veloc-ity)，即体量大、多样性、价值密度低<b>、</b>速度快。    <br /><b>第一，</b>数据体量巨大。从TB级别，跃升到PB级别。    <br /><b>第二，</b>数据类型繁多，如前文提到的网络日志<b>、</b>视频<b>、</b>图片、地理位置信息，等等。    <br /><b>第三，</b>价值密度低。以视频为例，连续不间断监控过程中，可能有用的数据仅仅有一两秒<b>。</b>    <br /><b>第四，</b>处理速度快。1秒定律。最后这一点也是和传统的数据挖掘技术有着本质的不同。物联网<b>、</b>云计算、移动互联网、车联网、手机<b>、</b>平板电脑、PC以及遍布地球各个角落的各种各样的传感器，无一不是数据来源或者承载的方式。    <br />大数据技术是指从各种各样类型的巨量数据中，快速获得有价值信息的技术。解决大数据问题的核心是大数据技术<b>。</b>目前所说的&#34;大数据&#34;不仅指数据本身的规模，也包括采集数据的工具、平台和数据分析系统。大数据研发目的是发展大数据技术并将其应用到相关领域，通过解决巨量数据处理问题促进其突破性发展。因此，大数据时代带来的挑战不仅体现在如何处理巨量数据从中获取有价值的信息，也体现在如何加强大数据技术研发，抢占时代发展的前沿<b>。</b> </p>
<h5>当下我国大数据研发建设应在以下四个方面着力</h5>
<p>一是建立一套运行机制。大数据建设是一项有序的、动态的、可持续发展的系统工程，必须建立良好的运行机制，以促进建设过程中各个环节的正规有序，实现统合，搞好顶层设计<b>。</b>    <br /> 二是规范一套建设标准。没有标准就没有系统<b>。</b>应建立面向不同主题、覆盖各个领域、不断动态更新的大数据建设标准，为实现各级各类信息系统的网络互连、信息互通<b>、</b>资源共享奠定基础。    <br /> 三是搭建一个共享平台。数据只有不断流动和充分共享，才有生命力。应在各专用数据库建设的基础上，通过数据集成，实现各级各类指挥信息系统的数据交换和数据共享。    <br />四是培养一支专业队伍。大数据建设的每个环节都需要依靠专业人员完成，因此，必须培养和造就一支懂指挥<b>、</b>懂技术、懂管理的大数据建设专业队伍<b>。</b> </p>
<h4>大数据作用</h4>
<h5>变革价值的力量</h5>
<p>未来十年，决定中国是不是有大智慧的核心意义标准（那个&#34;思想者&#34;），就是国民幸福。一体现在民生上，通过大数据让有意义的事变得澄明，看我们在人与人关系上，做得是否比以前更有意义；二体现在生态上，通过大数据让有意义的事变得澄明，看我们在天与人关系上，做得是否比以前更有意义<b>。</b>总之，让我们从前10年的意义混沌时代，进入未来10年意义澄明时代。 </p>
<h5>变革经济的力量</h5>
<p>生产者是有价值的，消费者是价值的意义所在。有意义的才有价值，消费者不认同的，就卖不出去，就实现不了价值；只有消费者认同的，才卖得出去，才实现得了价值<b>。</b>大数据帮助我们从消费者这个源头识别意义，从而帮助生产者实现价值。这就是启动内需的原理<b>。</b> </p>
<h5>变革组织的力量</h5>
<p>随着具有语义网特征的数据基础设施和数据资源发展起来，组织的变革就越来越显得不可避免。大数据将推动网络结构产生无组织的组织力量<b>。</b>最先反映这种结构特点的，是各种各样去中心化的WEB2.0应用，如RSS<b>、</b>维基、博客等。 大数据之所以成为时代变革力量，在于它通过追随意义而获得智慧。 </p>
<h5>大数据处理之一：采集</h5>
<p>大数据的采集是指利用多个数据库来接收发自客户端（Web<b>、</b>App或者传感器形式等）的数据，并且用户可以通过这些数据库来进行简单的查询和处理工作<b>。</b>比如，电商会使用传统的关系型数据库MySQL和Oracle等来存储每一笔事务数据，除此之外，Redis和MongoDB这样的NoSQL数据库也常用于数据的采集<b>。</b>    <br />在大数据的采集过程中，其主要特点和挑战是并发数高，因为同时有可能会有成千上万的用户来进行访问和操作，比如火车票售票网站和淘宝，它们并发的访问量在峰值时达到上百万，所以需要在采集端部署大量数据库才能支撑<b>。</b>并且如何在这些数据库之间进行负载均衡和分片的确是需要深入的思考和设计<b>。</b> </p>
<h5>大数据处理之二：导入/预处理</h5>
<p>虽然采集端本身会有很多数据库，但是如果要对这些海量数据进行有效的分析，还是应该将这些来自前端的数据导入到一个集中的大型分布式数据库，或者分布式存储集群，并且可以在导入基础上做一些简单的清洗和预处理工作<b>。</b>也有一些用户会在导入时使用来自Twitter的Storm来对数据进行流式计算，来满足部分业务的实时计算需求<b>。</b>    <br />导入与预处理过程的特点和挑战主要是导入的数据量大，每秒钟的导入量经常会达到百兆，甚至千兆级别<b>。</b> </p>
<h5>大数据处理之三：统计/分析</h5>
<p>统计与分析主要利用分布式数据库，或者分布式计算集群来对存储于其内的海量数据进行普通的分析和分类汇总等，以满足大多数常见的分析需求，在这方面，一些实时性需求会用到EMC的GreenPlum<b>、</b>Oracle的Exadata，以及基于MySQL的列式存储Infobright等，而一些批处理，或者基于半结构化数据的需求可以使用Hadoop<b>。</b>    <br />统计与分析这部分的主要特点和挑战是分析涉及的数据量大，其对系统资源，特别是I/O会有极大的占用<b>。</b> </p>
<h5>大数据处理之四：挖掘</h5>
<p>与前面统计和分析过程不同的是，数据挖掘一般没有什么预先设定好的主题，主要是在现有数据上面进行基于各种算法的计算，从而起到预测（Predict）的效果，从而实现一些高级别数据分析的需求<b>。</b>比较典型算法有用于聚类的Kmeans<b>、</b>用于统计学习的SVM和用于分类的NaiveBayes，主要使用的工具有Hadoop的Mahout等。该过程的特点和挑战主要是用于挖掘的算法很复杂，并且计算涉及的数据量和计算量都很大，常用数据挖掘算法都以单线程为主<b>。</b>    <br />整个大数据处理的普遍流程至少应该满足这四个方面的步骤，才能算得上是一个比较完整的大数据处理 </p>
<h4>大数据应用与案例分析</h4>
<p>大数据应用的关键，也是其必要条件，就在于&#34;IT&#34;与&#34;经营&#34;的融合，当然，这里的经营的内涵可以非常广泛，小至一个零售门店的经营，大至一个城市的经营<b>。</b>以下是我整理的关于各行各业，不同的组织机构在大数据方面的应用的案例，在此申明，以下案例均来源于网络，本文仅作引用，并在此基础上作简单的梳理和分类<b>。</b> </p>
<h5>大数据应用案例之：医疗行业</h5>
<p><b>[1]</b> Seton Healthcare是采用IBM最新沃森技术医疗保健内容分析预测的首个客户<b>。</b>该技术允许企业找到大量病人相关的临床医疗信息，通过大数据处理，更好地分析病人的信息<b>。</b>    <br /><b>[2]</b> 在加拿大多伦多的一家医院，针对早产婴儿，每秒钟有超过3000次的数据读取<b>。</b>通过这些数据分析，医院能够提前知道哪些早产儿出现问题并且有针对性地采取措施，避免早产婴儿夭折。    <br /><b>[3]</b> 它让更多的创业者更方便地开发产品，比如通过社交网络来收集数据的健康类App<b>。</b>也许未来数年后，它们搜集的数据能让医生给你的诊断变得更为精确，比方说不是通用的成人每日三次一次一片，而是检测到你的血液中药剂已经代谢完成会自动提醒你再次服药<b>。</b> </p>
<h5>大数据应用案例之：能源行业</h5>
<p>[1] 智能电网现在欧洲已经做到了终端，也就是所谓的智能电表。在德国，为了鼓励利用太阳能，会在家庭安装太阳能，除了卖电给你，当你的太阳能有多余电的时候还可以买回来。通过电网收集每隔五分钟或十分钟收集一次数据，收集来的这些数据可以用来预测客户的用电习惯等，从而推断出在未来2~3个月时间里，整个电网大概需要多少电<b>。</b>有了这个预测后，就可以向发电或者供电企业购买一定数量的电。因为电有点像期货一样，如果提前买就会比较便宜，买现货就比较贵<b>。</b>通过这个预测后，可以降低采购成本。    <br />[2] 维斯塔斯风力系统，依靠的是BigInsights软件和IBM超级计算机，然后对气象数据进行分析，找出安装风力涡轮机和整个风电场最佳的地点<b>。</b>利用大数据，以往需要数周的分析工作，现在仅需要不足1小时便可完成<b>。</b> </p>
<h5>大数据应用案例之：通信行业</h5>
<p>[1] XO Communications通过使用IBM SPSS预测分析软件，减少了将近一半的客户流失率<b>。</b>XO现在可以预测客户的行为，发现行为趋势，并找出存在缺陷的环节，从而帮助公司及时采取措施，保留客户<b>。</b>此外，IBM新的Netezza网络分析加速器，将通过提供单个端到端网络、服务、客户分析视图的可扩展平台，帮助通信企业制定更科学、合理决策<b>。</b>    <br /> [2] 电信业者透过数以千万计的客户资料，能分析出多种使用者行为和趋势，卖给需要的企业，这是全新的资料经济<b>。</b>    <br /> [3] 中国移动通过大数据分析，对企业运营的全业务进行针对性的监控、预警<b>、</b>跟踪。系统在第一时间自动捕捉市场变化，再以最快捷的方式推送给指定负责人，使他在最短时间内获知市场行情。    <br /> [4] NTT docomo把手机位置信息和互联网上的信息结合起来，为顾客提供附近的餐饮店信息，接近末班车时间时，提供末班车信息服务<b>。</b> </p>
<h5>大数据应用案例之：零售业</h5>
<p>[1] &#34;我们的某个客户，是一家领先的专业时装零售商，通过当地的百货商店<b>、</b>网络及其邮购目录业务为客户提供服务<b>。</b>公司希望向客户提供差异化服务，如何定位公司的差异化，他们通过从 Twitter 和 Facebook 上收集社交信息，更深入的理解化妆品的营销模式，随后他们认识到必须保留两类有价值的客户：高消费者和高影响者<b>。</b>希望通过接受免费化妆服务，让用户进行口碑宣传，这是交易数据与交互数据的完美结合，为业务挑战提供了解决方案<b>。</b>&#34;Informatica的技术帮助这家零售商用社交平台上的数据充实了客户主数据，使他的业务服务更具有目标性<b>。</b>    <br />[2] 零售企业也监控客户的店内走动情况以及与商品的互动<b>。</b>它们将这些数据与交易记录相结合来展开分析，从而在销售哪些商品<b>、</b>如何摆放货品以及何时调整售价上给出意见，此类方法已经帮助某领先零售企业减少了17%的存货，同时在保持市场份额的前提下，增加了高利润率自有品牌商品的比例<b>。</b> </p>
<h4>大数据时代相关帖子<a href="http://s.pinggu.org/s_大数据时代">查看更多</a></h4>
<p>京ICP备11001960号&#160;&#160; 京ICP证090565号&#160;&#160;&#160; 京公网安备1101084107号 </p>
<p><b></b></p>
<h3>讯鸟云解决方案——大数据实时监控统计平台</h3>
<p> <b>来源网址：</b> <a href="http://www.infobird.com/dashuju.html">http://www.infobird.com/dashuju.html</a><br />
<h5>海量数据的挑战</h5>
<ul>
<li><strong>存储的挑战：</strong>大数据时代已经到来，无论你身处何方，数据每天都在产生，并且数据量越来越大<b>。</b>作为数据及统计平台的核心，数据中心对于用户的重要性就相当于心脏之于人体<b>。</b>事实上，对于众多用户而言，确保每天24小时持续运行已经不再是对数据中心的唯一要求了，先进的数据中心解决方案还应在灵活性<b>、</b>可扩展性<b>、</b>安全性、冗余备份、环境控制以及业务延续性管理等方面有着更为出色的表现，而这一出色表现必须建立在“灵活、健康<b>、</b>高性能的综合布线系统”的基础之上。在这样一个时代里，云存储的需求应运而生。</li>
</ul>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image16.jpg"><img title="Image(16)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(16)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image16_thumb.jpg" width="244" height="195" /></a> </p>
<ul>
<li><strong>实时处理挑战：</strong>随着市场竞争的加剧，实时的掌握市场的动态对于企业来说有着举足轻重的意义<b>。</b>实时处理统计的主要目标是支持实时决策，通过运用信息技术在不同层面为战略决策提供新的支持。从而提升决策者洞察力，成为市场变化的先知者。进一步帮助企业获取更大的竞争优势<b>。</b>为满足获得如此及时的市场变化，后台支撑的业务应用软件的计算能力也就随之加强。 </li>
<li><strong>查询的零延时挑战：</strong>当前的时代是一个信息共享<b>、</b>信息交流、信息分析的时代，这就产生了海量数据，如何从海量的数据中筛选出符合条件的数据是一个难题，随着数据量的增加查询的响应时间也随之会增加<b>。</b>有可能会影响业务系统的正常运行。传统的做法是定时去做查询，所以造成数据有一定的延时。但实时的、及时的<b>、</b>高效的洞察当前事件发展产生的数据分析结果，对一个决策者有着至关重要的作用，可以使决策者料敌先机，先发制人，所以复杂查询的零延时是社会发展进步必不可少的产物<b>。</b> </li>
<li><strong>同时在线人数增长的挑战：</strong>随着科技的进步，网络的发达和普及，各种应用软件将面临越来越大的高并发访问的挑战，使用网络的用户每年都成递增趋势，众所周知某购票网站“瞬间巨大流量”经常造成服务网络堵塞或者系统瘫痪<b>。</b>如何解决“瞬间巨大流量”，如何给客户一个顺畅体验就成了当前所有软件提供商关注的问题了。解决同时在线人数增长的挑战就成了迫切需要解决的一大顽症<b>。</b></li>
</ul>
<h5>讯鸟解决方案</h5>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image17.jpg"><img title="Image(17)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(17)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image17_thumb.jpg" width="244" height="113" /></a> </p>
<ul>
<li><strong>计算上：</strong>提供分布式流式计算引擎，用来实时计算各种系统产生的数据<b>。</b>从而达到实时计算每秒钟百TB至PB级的数据。 </li>
<li><strong>查询上：</strong>提供分布式查询引擎，用来满足客户端发起的各种各样的查询请求<b>。</b> </li>
<li><strong>资源上：</strong>提供云架构服务基础，透过业务负荷量化侦测，自动判定并启用相关分布式虚拟机，从而满足平台的各种资源需求<b>。</b></li>
</ul>
<h5>讯鸟解决方案特点</h5>
<h6>易：使用简单，操作方便</h6>
<p>该平台基于云计算的架构设计，企业可以选择私有云方式完全在企业内部搭建，部署<b>。</b>也可以选择公有云方式，只需支付一定的费用即可运行。提供基于Web的全程可视化开发，在同一浏览器界面中即可根据选择的内容进行自助式的组合，从而完成报表或者分析报告的制作<b>。</b> </p>
<h6>大：支持大并发，大数据量</h6>
<p>该平台有IAAS平台的支撑，以服务部件维度制定的虚拟机镜像，构建云架构服务基础；透过业务负荷量化侦测，自动判定并启用相关分布式虚拟机及网络资源，突破了时间<b>、</b>空间的限制。可以支持每秒百TB至PB级的吞吐量<b>。</b> </p>
<h6>活：配置灵活，集成灵活</h6>
<p>该平台是一个基于组件开发的平台，可以按需选择各种组件进行项目的开发<b>。</b>组件细化到单个计算单元的粒度<b>。</b>可以按需动态的增减计算单元的数量从而达到最优的系统性能。 </p>
<h6>快：计算速度快，呈现速度快</h6>
<p>通过逐点采集交互过程数据<b>、</b>结果数据，并结合分布式文件、内存<b>、</b>数据库及计算技术，使得每秒百TB至PB级的数据处理速度得以实现。 </p>
<h5>平台技术架构</h5>
<p>提供全生命周期的分布式业务数据循环持续支持，而非阶段性处理<b>。</b>整体分布式业务数据循环生命周期包含全分布式的初始化存储、初始化导入<b>、</b>运行间缓存、流式数据运算管道，一直到条件式持久化等；可使得业务数据分析一直保持在最实时和最稳定状态以支持各种业务应用需求和场景<b>。</b> </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image18.jpg"><img title="Image(18)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(18)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image18_thumb.jpg" width="492" height="241" /></a> </p>
<p><b></b></p>
<h3>大数据量统计</h3>
<p> <b>来源网址：</b> <a href="http://pcwang.iteye.com/blog/385994">http://pcwang.iteye.com/blog/385994</a>
<p>最近在做一个统计项目的改造，对两张日志表进行分析统计，最后形成报表<b>。</b>这两张日志表现在每天的数据量在1亿左右，大小在30G左右，对我有用的数据大概为20G<b>。</b>因为这量个日志是成上升趋势的，所以我设计出来的系统应该能应对每张表2亿的数据量。    <br />之前的做法是用了3台节点机，1台主控机，来进行统计<b>。</b>节点机分id段分别统计（比如node1统计id为1-5千万，node2统计5千万-1亿，1亿到1.5亿，这些都是可以配置的，并且如果数据量超过1<b>.</b>5亿，增加一台机器再配置一下就ok了），最后由主控机完成汇总。改造原因无非是代码很乱，出错不断，统计很耗内存等<b>。</b>    <br />仔细的分析了一下需求，其实逻辑不复杂，基本就是根据不同的字段来分段，去重，count等，这样的数据量显然不能直接用sql去group by，count什么的<b>。</b>我想起之前看过berkeley db的一些知识，berkeley db的本地文件数据库以及它的大吞吐量，很适合这个场景<b>。</b>    <br />我的做法：两张日志表可以在spring中起两个job，分段读取（可以每次读50W的），每次读取到数据后把数据分给不同的handler去处理相应统计，统计的临时数据记入bdb，数据读取完毕后再分别汇总各自的数据，存入数据库<b>。</b>为了防止意外情况，对于月统计的临时数据入数据库。bdb的数据每天统计完了清理掉。    <br />这样做的好处：    <br />1<b>.</b>减少读写数据库的频率，我们的数据库是很多应用共用，频繁的读取数据库会对其他应用有影响。    <br />2<b>.</b>充分利用本地硬盘，能够避免oom的情况。    <br />3<b>.</b>还没有测试过，不过个人认为一台机器8G的内存应该就可以搞定，这样就节省了3台机器。    <br />4.在想……    <br />本人水平有限，欢迎有经验的同学提出宝贵意见。谢谢！ </p>
<p>40 楼 <a href="http://leadyu.iteye.com/">leadyu</a> 2009-05-26&#160;&#160; </p>
<p>pcwang 写道 </p>
<p>Joo 写道 </p>
<p>纵向：定时或者定量出发子进程处理日志文件，然后清空日志文件，吧分析的中间结果累计到别处，一天下来再作多次中间结果的计算，跟ETL有点类似；   <br />横向：加大计算能力，并行吧<b>。</b>主要是不太清楚你日志文件是什么格式，不知道用map-reduce能不能搞定。即便是在单核机器上，楼主你不会写的单线程处理吧？ </p>
<p>每次读取数据是单线程，处理数据的时候是用多线程处理，等处理完一批再读取数据<b>。</b>    <br />由于项目开发时间非常紧急，hadoop之前没怎么接触过（只是听过），需要加强学习。 </p>
<p>楞要用mysql去处理，确实有点难为，如果LZ做的是BI应用，还是采用专门的数据仓库吧，毕竟数据仓库加载大批量数据是相当快的，几亿甚至几十亿从文件到表也是相当快的，和自己去处理不是一个数量级<b>。</b>    <br />如果仅仅是平常应用中的一些特殊分析功能，没用数据仓库，倒是可以考虑下怎么并行处理日志文件，提高速度，但是日后统计分析基于mysql还是很慢，可以考虑把统计全放后台做，把最终结果计算出来，前台再展现统计结果，这个思路和数据仓库是一致的<b>。</b> </p>
<p>39 楼 <a href="http://pcwang.iteye.com/">pcwang</a> 2009-05-21&#160;&#160; </p>
<p>Joo 写道 </p>
<p>纵向：定时或者定量出发子进程处理日志文件，然后清空日志文件，吧分析的中间结果累计到别处，一天下来再作多次中间结果的计算，跟ETL有点类似；   <br />横向：加大计算能力，并行吧<b>。</b>主要是不太清楚你日志文件是什么格式，不知道用map-reduce能不能搞定。即便是在单核机器上，楼主你不会写的单线程处理吧？ </p>
<p>每次读取数据是单线程，处理数据的时候是用多线程处理，等处理完一批再读取数据<b>。</b>    <br />由于项目开发时间非常紧急，hadoop之前没怎么接触过（只是听过），需要加强学习。 </p>
<p>38 楼 <a href="http://ahua3515.iteye.com/">ahua3515</a> 2009-05-21&#160;&#160; </p>
<p>问题就在于1亿多的数据在1张表中   <br />如果按字段分表可能好解决一些&#160; <br />做直接sql&#160;&#160;&#160; mysql数据库估计吃不消的 吧？    <br />可以利用游标，将需要的的内容导到文件    <br />再按需字段hash 出不同结果文件    <br />相信1台机子2g的机子也可以处理完任务（只要hash切分的够平衡） </p>
<p>37 楼 <a href="http://liujunsong.iteye.com/">liujunsong</a> 2009-05-21&#160;&#160; </p>
<p>强烈建议你抛开数据库,直接走数据文件来解决这个问题<b>.</b>    <br />其实原理也很简单,    <br />第一步,把数据库的内容变成数据文件,按照一定规则切成多个文件,文件名有规律    <br />第二步,写程序一个文件一个文件读取统计,把结果再写回数据库去<b>.</b>    <br />这样做的效果就是利用硬盘空间,而不占用数据库的访问,也不占用过多的内存<b>.</b>    <br />不过DBA就没有用武之地了. </p>
<p>36 楼 <a href="http://roserouge.iteye.com/">quiii</a> 2009-05-21&#160;&#160; </p>
<p>- -<b>!</b>&#160; 大量数据统计 数据库很不靠谱 hadoop之 </p>
<p>35 楼 <a href="http://the3oooo.iteye.com/">Joo</a> 2009-05-21&#160;&#160; </p>
<p>纵向：定时或者定量出发子进程处理日志文件，然后清空日志文件，吧分析的中间结果累计到别处，一天下来再作多次中间结果的计算，跟ETL有点类似；   <br />横向：加大计算能力，并行吧<b>。</b>主要是不太清楚你日志文件是什么格式，不知道用map-reduce能不能搞定。即便是在单核机器上，楼主你不会写的单线程处理吧？ </p>
<p>34 楼 <a href="http://ken-81710.iteye.com/">yshao81710</a> 2009-05-20&#160;&#160; </p>
<p>单纯的统计的话，不用楼主说的那么复杂吧，程序里做循环每次读100条进行统计，应该不成问题吧<b>。</b>应该花不了多长时间吧。 </p>
<p>33 楼 <a href="http://chj733.iteye.com/">chj733</a> 2009-05-20&#160;&#160; </p>
<p>数据仓库无外乎是上面这些方法的结合，并行计算，ETL等等，现在楼主的情况，要去找非常专业的数据仓库技术做支持，时间是否太久了？   <br />我觉得使用多个文件存储中间数据，java或者C解析文件做汇总，不失为一个好办法，如果存在join的逻辑在里面，会比较麻烦    <br />采用数据库来做，也就是多张小表加并行SQL,最好的多会话的，就是会消耗主机CPU，存储IO等资源，这个可以放在非高峰期来做，持续的时间其实是可以估算的，存储的IO吞吐量可以用表扫描粗略计算出来，走对正确的查询计划就可以了    <br />个人觉得程序能处理的尽量程序做，数据库最好不要封装任何业务逻辑，毕竟他只是个持久层，所scale out比应用层要困难的多 </p>
<p>32 楼 <a href="http://lovejavaei.iteye.com/">lovejavaei</a> 2009-05-20&#160;&#160; </p>
<p>pcwang 写道 </p>
<p>超级潜水员 写道 </p>
<p>应该查查数据仓库的概念，将生产数据库的数据每天定时导出到另外一个数据库（数据仓库中叫ＯＤＳ），然后在ＯＤＳ上面直接跑你的统计就行,跑完如果需要再将统计好的数据导回原有数据库<b>。</b>这样就对原有数据库没有影响了。    <br />而且如果mysql有性能问题，ODS你可以使用Oracle啊. </p>
<p>恩，非常感谢超级潜水员同学的建议<b>。</b>    <br />之前也看过一些关于数据挖掘和数据仓库的概念，没有深入的了解过（曾经有一个。。<b>。</b>等到用的时候才后悔莫及。。<b>。</b>），恶补之。    <br />但是公司资源有限，比如mysql换oracle这就是不可能的（不过mysql未来还是未知的，呵呵）<b>。</b> </p>
<p>建议很好，强烈建议看看有关数据仓库的东西，直接在业务数据上做统计分析是不现实的，尤其是你这么大的数据量，想任何招都是徒劳<b>。</b>ods，data mart，data warehouse应该是你考虑的方向，也是你的分析系统发展的方向 </p>
<p>31 楼 <a href="http://jin-nth.iteye.com/">jin_nth</a> 2009-05-19&#160;&#160; </p>
<p>pcwang 写道 </p>
<p>genius 写道 </p>
<p>可以考虑一下表分区！ </p>
<p>多谢建议，采用垂直分区的确是个好办法，可以把我需要的字段和不需要的字段划分到不同的分区，或许会提高查询速度<b>。</b>    <br />我看javaeye上对mysql数据库分区介绍的文章不是很多。也不清楚到底是否在不影响其他应用的同时也能满足我的需求<b>。</b>需要做一些测试先。 </p>
<p>MySQL 5.1的分区功能目前还很不完善，要部署的最好还是谨慎一点。 </p>
<p>30 楼 <a href="http://seemoon.iteye.com/">seemoon</a> 2009-05-19&#160;&#160; </p>
<p>用文件处理会更好，利用数据库显得过于复杂<b>。</b>    <br />用文件处理除了资源占用低效率高的好处外，还可以使用并行计算来提高数据处理速度，甚至完全可以利用awk进行快速处理<b>。</b>    <br />以前做过电信cdr记录处理，都是文件存储然后传输，parsing写入oracle数据库做进一步的其他处理如计费<b>。</b> </p>
<p>29 楼 <a href="http://zhaoming.iteye.com/">zhaomingzm_23</a> 2009-05-19&#160;&#160; </p>
<p>为什么不用 hadoop </p>
<p>28 楼 <a href="http://yisafe.iteye.com/">yisafe</a> 2009-05-19&#160;&#160; </p>
<p>个人觉得写得很多不怎么清楚，不过能处理那么大的数据和容量数据，的确很有挑战性 </p>
<p>27 楼 <a href="http://pcwang.iteye.com/">pcwang</a> 2009-05-18&#160;&#160; </p>
<p>genius 写道 </p>
<p>可以考虑一下表分区！ </p>
<p>多谢建议，采用垂直分区的确是个好办法，可以把我需要的字段和不需要的字段划分到不同的分区，或许会提高查询速度<b>。</b>    <br />我看javaeye上对mysql数据库分区介绍的文章不是很多<b>。</b>也不清楚到底是否在不影响其他应用的同时也能满足我的需求。需要做一些测试先。 </p>
<p>26 楼 <a href="http://leadyu.iteye.com/">leadyu</a> 2009-05-18&#160;&#160; </p>
<p>pcwang 写道 </p>
<p>超级潜水员 写道 </p>
<p>仔细的分析了一下需求，其实逻辑不复杂，基本就是根据不同的字段来分段，去重，count等，这样的数据量显然不能直接用sql去group by，count什么的<b>。</b> </p>
<p>数据量还不是很多，就一台数据库group by ,count什么就行了。   <br />一个晚上跑两三个小时也就出来了。    <br />整得这么复杂 </p>
<p>我们用的mysql，前面说过了，我们的数据库里面不仅仅是一个应用去连，1亿多的数据用group by，或者distinct，count的，dba真的会杀人..<b>.</b> </p>
<p>mysql做OLAP的活？1亿多的数据在SybaseIQ里，小意思 </p>
<p>25 楼 <a href="http://genius.iteye.com/">genius</a> 2009-05-17&#160;&#160; </p>
<p>可以考虑一下表分区！ </p>
<p>24 楼 <a href="http://heroczx.iteye.com/">heroczx</a> 2009-05-17&#160;&#160; </p>
<p>用AWK效率相当高 </p>
<p>23 楼 <a href="http://woaiwofengkuang.iteye.com/">woaiwofengkuang</a> 2009-05-17&#160;&#160; </p>
<p>哈哈，我最近也刚做了个类似的功能，我们是每天分析全量的数据放入向个Txt文件中<b>。</b>其它应有就不用现访问我们的库了<b>。</b>可以直接读取我们生成的文件，进行相应的功能开发。我的做方是用多线程来跑，每个线程都读取一定量的数据。每个线程都将数据写向不同的文件。    <br />简单的比喻：    <br />我的表里有1000000条数据我要分成10的文件来存放那么每个文件也就要存100000条<b>。</b>在这里分10个线程一个线程去跑100000条数据。此处和简单的分页没什么不同。 </p>
<p>22 楼 <a href="http://cauherk.iteye.com/">cauherk</a> 2009-05-16&#160;&#160; </p>
<p>几个思路   <br />1<b>、</b>前沿化。使用hadoop，设计好map和reduce，多整一些低端，大硬盘的设备，每天都实时的去跑任务。    <br />2<b>、</b>就地解决。老实的采用主从复制，既然是日志，几亿条数据中少几个，相信没有谁责怪你的。从数据库就可以每个夜晚安安静静的分析去了。    <br />3<b>、</b>稍加改变。一个表放那么多数据干嘛？是想帮mysql测试bug？最简单的方案，采用url的hash分区或者分表，同时几乎采用按天分表或者分区<b>。</b>并行数据的导入或者分析，总比一个个来好吧。前面也有人说过了，分段进行分析，分析好了就放在着，后面慢慢用<b>。</b>也节省了不少能源。    <br />一个好的方案往往就是最简单的方案，别把这个事情整的很复杂。 </p>
<p>21 楼 <a href="http://tanbamboo.iteye.com/">tanbamboo</a> 2009-05-16&#160;&#160; </p>
<p>我之前的一个项目也有类似的需求，只是数据量可能稍微少一些<b>。</b>    <br />这里面涉及两个方面：数据、统计    <br />先说统计，就是根据统计规则，对每条记录的一些字段进行匹配处理，然后更新统计结果。    <br />数据：包括原始数据<b>、</b>单次统计处理的统计结果、汇总后的统计结果。    <br />我考虑可以采用以下几种方法：    <br />1. 数据入库前进行实时统计处理    <br />这个方法就是在每个数据源的入库流程前，插入统计分析模块，进行实时统计，然后统计分析的结构作为一个新的数据源，汇总到收集系统<b>。</b>    <br />这个方案的优点：少了一次业务数据(日志信息)的查询与传输的代价，当数据量很大的时候，这个代价似乎不小的<b>。</b>    <br />缺点就是：需要在数据源的处理流程中，插入一个统计分析模块，可能对系统有些影响，另外一个就是，有些统计分析的需求(比如出重)，在单个数据源的地方，可能处理的不对<b>。</b>    <br />2. 周期性对入库后的数据进行统计分析    <br />周期性的查询出原始数据的一个片段，进行统计分析处理，把统计结果汇总<b>。</b>如此反复循环，即可完成全部的统计分析处理。    <br />其中对原始数据的分片，需要根据一定的规则，保障不重复<b>、</b>不丢失。    <br />另外，如果原始数据的表里面已经创建了一些索引的话，在可以的情况下，查询原始数据的时候可以有效利用(比如直接count ..<b>.</b> group by ...)，这相当于把一部分的统计分析的计算代价由入库时索引器承担了<b>。</b>    <br />统计分析的计算代价是无可避免的(无论是在入库前、入库时、查询原始数据后)，只是所处的位置不同而已。    <br />最终我感觉，数据统计分析，其实就是预定制统计规则的BI而已，而BI就是可以按需执行统计分析<b>。</b> </p>
<p><b></b></p>
<h3>最近开发一个SQL server大数据量统计系统的经验总结</h3>
<p> <b>来源网址：</b> <a href="http://blog.csdn.net/jimlong/article/details/7710229">http://blog.csdn.net/jimlong/article/details/7710229</a>
<p>项目介绍   <br />政府一个业务系统，    <br />使用范围全国    <br />数据是区域还存储,最大地方,主业务表，一年有600万,工作流表，1年有几千万,迄今为至系统已经运行三年<b>。</b>    <br />其它全国还有46个地点,数据也比较多    <br />新开发系统主要功能,对业务系统的数据进行分析统计<b>.</b> </p>
<p>所以对性能要求比较高<b>。</b> </p>
<p>我们的简要方案。   <br />建立中间表，通过DTS调度每天共步数据<b>。</b>    <br />中间表设计原则    <br /> 记录数同原表一样，减少多表连接，保存运算好的值，如果记录修改，根据修改日志，重新计算中间值    <br />增量同步数据(DTS)    <br /> 直接从每天的数据库更改日志读取记录，更新中间表，根据服务器空间程度合理调度DTS，减少数据同步时间<b>。</b>    <br />对中间数据进行运算    <br /> 查询不作字段运行，所以运算在生成中间表的过程中已经计算    <br />根据查询,优化索引设计    <br /> 根据数据查询特性，对where ，GROUP BY等操作字段进行索引设计，提高查询速度&#160; <br />优化数据类型    <br /> 大量采用Int提高查询<b>、</b>统计速度&#160; <br />优化中间表关键字    <br /> 采用Int，提高插入速度    <br />数据文件优化设计，一个主要业务，一个数据文件，建数据文件时，估计数据量，一次建一个比较大的文件，这样所分配的文件就是一个连续文件块，    <br />sql server设置区别大小写<b>。</b>初始内存调到一个比较大的内存。 </p>
<p>使用我们的Toolkit开发简单分页，相关压力测试，   <br /> 测试服务器配制    <br /> 2个至强3<b>.</b>0CPU    <br /> 2G内存    <br /> 150G硬盘    <br /> Window 2000 Advance Server中文版+SP4    <br /> 测试数据ENTRY_WORKFLOW表，数据量2,473,437 </p>
<p> 页数&#160; 界面显示时间&#160; CPU&#160; Reads I/O&#160; Writes I/O&#160; Duration   <br /> 第1页&#160; 2-3 S&#160; 642&#160; 10689&#160; 0 390    <br /> 第100页&#160; 3-4S&#160; 626&#160; 128001&#160; 0 423    <br />....后页业数太多，没有必要 </p>
<p> 并发数 平均每秒请求数 未字节响应毫秒数   <br /> 50 45<b>.</b>28 20,095.65    <br /> 25 45<b>.</b>41 10,043.12 </p>
<p>索引优化测试，&#160; <br />对分量值小的数据建索引测试，测试语句，GROUP BY 分量值    <br />&#160; 一个字段,大概有6个分量值,没有建索引,4S,建索引&#60;1s    <br /> 两个分量,不建索引,3S,建索引,&#60;1S    <br />一般来说，对分量小的字段，不建索引，但是我们对性能要求太高，根据我们的测试，数据对分量范围小的也要建索引<b>。</b> </p>
<p>因为一个统计，有一个很多组合的WHERE，比如有十个指标这样会有十次访问原表，这样性能太低，所以我们把where后的数据作   <br />用中间数据，    <br />十个指标对中间数据作查询，中间数据，我们使用临时表，    <br />经测试，10万条记录，插入操作，临时表需要，16s,表变量需要，40S    <br />select ..<b>.</b> into #temp from .......    <br />速度极快，2，500，000条记录，16S </p>
<p>一个存储过程样例，有兴趣可以分析一下！ </p>
<ol>
<li></li>
</ol>
<p>中间表生成SQL，以后提供，   <br />另！    <br />sql源代码管理，使用VS<b>。</b>NET，数据库项目就可以与SOURCE SAFE一起管理了，并且支持单步调试<b>。</b> </p>
<p><b></b></p>
<h3>打造顶级大数据团队的几个偏方</h3>
<p> <b>来源网址：</b> <a href="http://www.ctocio.com/hotnews/13527.html">http://www.ctocio.com/hotnews/13527.html</a>
<p>出人意料的是，音乐人才<b>、</b>物理学家和工商管理人士能为大数据团队带来全新的视角<b>。</b> </p>
<p>你的企业正在打造数据科学团队吗？首先，你应当从业务部门抽调专家来提出正确的问题<b>。</b>然后考虑招募一些物理学家<b>、</b>音乐人才，当然，还有统计人才和计算机科学家。 </p>
<p>这些才是顶级大数据团队的关键“配方”，至少管理咨询与技术顾问公司Booz Allen的战略创新部门副总裁乔什沙利文是这么认为的<b>。</b>沙利文的部门负责帮助客户开展数据分析项目，在这个过程中沙利文看到太多企业犯下相同的错误。 </p>
<p>“大多数企业只知道招聘计算机科学家，因为他们认为大数据是一个技术问题，但他们错了，”在接受媒体采访时，沙利文说道： </p>
<blockquote><p>我们问客户的第一个问题是：你准备向数据分析系统提出什么样的问题？而不是你需要如何去编写代码<b>。</b>你首先需要有创造力和好奇的人。</p>
</blockquote>
<p>Booz Allen组件数据科学团队的第一步是确保团队成员包括数学与统计人才<b>、</b>计算机科学专家和企业各业务领域专家。其中业务专家非常关键，他们是确保大数据分析产生商业价值并提升企业决策的关键环节<b>。</b> </p>
<p>值得注意的是，大数据团队中的业务专家需要与业务部门进行岗位轮换，帮助企业所有业务部门都意识到大数据团队的存在，同时需要将数据团队中的业务专家送回到业务岗位，他们将成为数据驱动的企业经营管理方法与文化的布道者<b>。</b> </p>
<p>太多企业为特定部门或者业务线组件专门的分析团队，这些团队常常无法从企业的整体业务出发考虑问题，同时这也会滋长“数据保护主义”，部门间各自囤积数据，并为数据分享设置障碍<b>。</b> </p>
<p>另外一个令人质疑的做法是在研发团队内囤积分析专家，使他们很难接触到业务部门<b>。</b> </p>
<p>陶氏化学在这方面就做得非常好，其数据科学家团队与业务专家肩并肩<a href="http://www.informationweek.com/global-cio/interviews/dow-chemical-moves-analytics-into-mainst/240006815">合作</a> ，开发出新的业务成本模型仅仅在货运和原材料两个环节就帮助公司节省了数十亿美元<b>。</b> </p>
<p>在统计专家和计算机科学家之外，沙利文的部门还成功地将物理学家和音乐专业人士引入数据分析团队，这听上去有些古怪<b>。</b>实际上，这两类人才为数据分析团队带来了全新的观点和方法<b>。</b>例如物理学家带来了从猜测、假设到实验的一整套科学验证方法，而音乐专业人才则具备“惊人的创造力和量化技能”<b>。</b> </p>
<p>当数据分析团队在处理多种数据的时候，非常类似交响乐作者编配多种乐器的过程，而这方面音乐人才是最在行的<b>。</b>例如在一个医药公司的数据分析项目中，需要混搭不良药物反应数据、社交媒体数据、研究注释<b>、</b>实验室数据和分子数据。在大数据分析出现之前，从来没有人会将这么多不同来源的数据整合到一起。事实证明，在音乐人才的帮助下，这些数据形成了完美的“合奏”，并最终帮这家药企优化了药物研发的优先级。 </p>
<p>在最近的一个项目中，沙利文的团队帮助一家航空公司实施的大数据项目证明了大数据的商业价值<b>。</b>在这个大数据项目中，旅客的行程、路线、票价、目的地<b>、</b>载客量历史数据与体育赛事日程、传统节日、学校假期、旅客人口统计和社交媒体数据整合到一起分析<b>。</b> </p>
<p>以上这些数据航空公司有很多对应的BI仪表盘和PDF报告工具，但航空公司们从来没想到过将这些数据综合起来分析<b>。</b>结果证明，这样的大数据分析能帮助他们优化航班时刻表和票价，每年增加数千万美元的收入<b>。</b> </p>
<p>数据分析团队多元化的优势在大数据众包平台<a href="http://www.ctocio.com/ccnews/9046.html">Kaggle</a> 上得到最佳体现<b>。</b>在那里，不乏天文学家<b>、</b>对冲基金金融工程师、经济学家以及数学家甚至律师提出能击败企业内部数据分析团队的更好的分析方法/算法。</p>
<p><a rel="nofollow" href="http://www.lvjiyong.com/i597.html">大数据相关资料（1）</a>，首发于<a rel="nofollow" href="http://www.lvjiyong.com">吕的部落格</a>。</p>
]]></description>
		<wfw:commentRss>http://www.lvjiyong.com/i597.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>任务系统设计与用户激励</title>
		<link>http://www.lvjiyong.com/i553.html</link>
		<comments>http://www.lvjiyong.com/i553.html#comments</comments>
		<pubDate>Fri, 25 Oct 2013 02:59:22 +0000</pubDate>
		<dc:creator><![CDATA[吕]]></dc:creator>
				<category><![CDATA[杂记]]></category>
		<category><![CDATA[任务系统]]></category>

		<guid isPermaLink="false">http://www.lvjiyong.com/?p=553</guid>
		<description><![CDATA[<p>近期需要完成网站的几个重要规划，包括任务系统、用户资料库等，要求是可分发、可扩展、可外包，最关键的要承受每天几千万PV所带来的数据交互，任务系统我的计划是核心功能完成后，可自由进行条件触发、状态检查、任务奖励等设置，即需要完全抽离 核心功能与具体业务（难点是系统压力与最终的用户触及，如离线用户通知与召回）用户资料更多的涉及数据收集、分析挖掘，以提供更精准服务。</p>
<p>&#160;</p>
<h3>任务系统的规范化设计</h3>
<p><b>来源网址：</b> <a href="http://tieba.baidu.com/p/2206359046">http://tieba.baidu.com/p/2206359046</a></p>
<p>任务概述</p>
<p>什么是任务？简单说“任务”，就是给玩家一个目标并使之完成的一个过程<b>。</b>所以玩家玩游戏，可视为玩家正在进行一个任务，这个任务就是我们设计给玩家体验的核心内容<b>。</b>而通过NPC之类领取的任务，都只是为这个主任务服务而以。如：主线任务的作用，就是将角色在游戏里的发展过程分成几个阶段，让玩家有目标的体验游戏过程<b>。</b>即给于玩家几个短期目标，当玩家完成其中一个目标之后，就等于证明玩家在该阶段的成长，并告诉玩家，你有实力可以体验下一阶段的游戏内容<b>。</b>    <br />任务设计    <br /> 任务的设计可归纳为三种元素：“目标”、“过程”、“奖励”；而任务设计者需要撑握的三个要点就是任务的设计目标、交互过程<b>、</b>以及任务平衡性。    <br /> 任务的设计目标    <br /> 就是设计任务时的定位与作用，可以简单的理解为：任务类型的定义和完成任务后对游戏世界产生的作用。    <br />任务类型：给任务定义类型，就是为区别任务之间的不同。常见的定义方式如下：    <br />1)跟据任务在游戏中产生的作用不同，来定义该类的任务名。如：主线任务，支线任务<b>、</b>送信任务等。    <br /> 2)跟据任务的特殊性，来定义该类的任务名。如：限时任务，随机任务等。    <br /> 3)跟据任务用到的功能，来定义该类的任务名。如：挖宝任务，收集任务，对话任务等。    <br /> 任务作用：完成任务后对游戏世界产生的作用，也就是任务设计时的预期效果。任务的作用有五类“引导、剧情、娱乐<b>、</b>互动、调控”。    <br /> 引导：让玩家快速的认识并掌握游戏。常见的功能：操作引导、功能引导、NPC引导<b>、</b>剧情引导等。常见任务如：新人任务、主线任务、支线任务等<b>。</b>    <br /> 剧情：渲染游戏的背景，并烘托出游戏中各角色的情感与个性，使游戏世界变得生动与真实。常见任务如：主线任务<b>、</b>支线任务、随机任务、杀怪或收集任务等。    <br />娱乐：满足玩家的心理需求，使游戏世界不会变得单调或枯燥<b>。</b>常见任务如：活动任务<b>、</b>师门任务、跑环任务等。    <br /> 交互：以促进玩家间互助合作为中心，使其相互团结。常见任务如：组队任务、工会任务等。    <br />调控：通过任务奖励调整其它系统的不足，控制其产出或比率，使其它系统按照预计的正面方向发展<b>。</b>较常见的任务如：经验奖励类任务<b>、</b>金钱奖励类任务、物品奖励类任务等。    <br /> 建议：在设计任务的作用时尽量灵活，不必拘泥某一作用或类型，任务能达到我们的预期效果很好，能一箭多雕更好<b>。</b>如：一个主线任务可以设计为集“引导<b>、</b>剧情、互动”的作用于一身。    <br /> 交互过程    <br /> 任务的交互过程是玩家体验任务的重点，所以在设计任务的交互过程时，我们应尽量把关，同时多花点心思，让任务的交互过程变得生动有趣<b>。</b>跟据过程中交互对象的不同，我把任务的交互过程分为三类：    <br /> (一)玩家与系统的交互    <br /> 即单人玩家与NPC（非玩家控制角色）或系统功能交互的任务过程。该类任务剧情占很大成份，所以在交互过程中设计完整优美的剧情，可以让玩家从现实中解脱，投入虚幻的游戏世界情感之中，单机的《仙剑奇侠传》就是个很好的例子<b>。</b>常见的任务如：杀怪任务、收集任务、挖宝任务、对话任务<b>、</b>探索任务等。    <br /> (二)玩家与玩家的交互    <br /> 即玩家与玩家间交互的任务过程，该类任务常用于制造玩家间的互助或冲突。常见的任务如：PK大赛<b>、</b>师徒任务、交易任务等。    <br /> (三)多人玩家与系统的交互    <br /> 即多人玩家与系统交互的任务过程，该任务与单人任务的区别就在于多人参于，同时他们的任务目标是相同得，所以任务强调团队配合和任务平衡性的设置<b>。</b>常见的任务如：兄弟天关、夫妻天关、公会任务等<b>。</b>    <br /> 任务平衡性    <br /> 在设计任务时，我们要考虑任务的三种平衡性：任务过程的平衡、任务奖励与游戏世界产出的平衡、过程与奖励的平衡。    <br />1)任务过程的平衡</p>
<ul>
<li><a>回复</a></li>
</ul>
<ul>
<li>2013-03-11 22:38</li>
</ul>
<ul>
<li><a>举报</a> &#124;</li>
</ul>
<p>由于游戏世界中职业或种族之间的能力差异或等级高低，造成各角色在参于一些的任务时难度间的不平衡。这类平衡性问题，产生于角色能力间的平衡，所以我又把它称为“任务执行能力的平衡”<b>。</b>    <br /> 2)任务奖励与游戏世界产出的平衡    <br /> 由于任务奖励直接干预游戏世界中其它体系的产出，如经验、物品<b>、</b>经济等体系的产出，所以当任务奖励过多时，就会对其它体系造成影响。而任务奖励过少，则会降低玩家对任务的期望值<b>。</b>    <br /> 3)过程与奖励的平衡    <br /> 玩家在选择任务时，会将任务的执行难度和任务奖励进行评估。当执行难度高于任务奖励时，玩家对任务的期望值会降低<b>。</b>而任务奖励高于执行难度时，玩家会积极的参于该任务。但过高的任务奖励，有可能对游戏世界的其它体系，造成负面影响<b>。</b>所以任务过程与奖励的平衡能力，可视为任务设计者的基础能力。    <br />任务系统框架    <br />一个好的任务系统必有个好的系统框架，那么如何架设任务系统的框架呢？首先从角色成长的过程入手，角色成长通常分为三个阶段：新人时期<b>、</b>成长时期<b>、</b>老手时期。跟据这三个时期，玩家掌握游戏的成度不同，来具体分配任务。把能实现的任务进行归类，按照任务的复杂程度与执行难度，分配到角色成长的各阶段中。这样即确定任务的分布，明确玩家体验游戏过程中，各阶段的任务内容<b>。</b>“任务系统框架草图”如：图1。 </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image2.jpg"><img title="Image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image_thumb1.jpg" width="561" height="443" /></a></p>
<p>2010-7-30 17:17:18 上传下载附件 (65<b>.</b>27 KB)    <br />（图1：任务系统框架草图）    <br /> 任务系统规划    <br /> 在架设任务系统框架后，我们需要对任务系统进行一个完整的规划，规划的过程就是将任务进行合理的分配，使任务系统的框架完整<b>、</b>步骤清晰。如：图2 </p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image11.jpg"><img title="Image(1)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(1)" src="http://www.lvjiyong.com/wp-content/uploads/2013/10/Image1_thumb1.jpg" width="428" height="562" /></a></p>
<p>2010-7-30 17:17:20 上传下载附件 (101<b>.</b>95 KB)    <br />（图2：任务规划草图）    <br /> 任务规划的作用：    <br /> a)可以明确各阶段的任务设计目标，方便安排任务的制作进程。    <br />b)方便设定任务的种类分布，使任务的过程丰富有趣。    <br />c)有利于任务奖励资源的合理分配，使任务系统的产出可视、可控<b>、</b>合理。    <br /> 任务系统开发建议    <br /> 在游戏开发过程中，任务系统通常放在后期来考虑，所以任务系统的设计周期相当有限。要设计一个优秀的任务系统，十分不易<b>。</b>任务系统是个灵活性很高的系统，要考虑的地方很多，但在设计周期有限的情况下，很多设计者都通常选择牺牲任务剧情来提高工作效率，这样虽然跟进了游戏的开发进度，却降低了游戏的内涵，毕竟任务是玩家认识游戏的主要通道之一<b>。</b>在这里希望负责游戏开发的管理人员，能给任务设计者多一点时间，让他们拥有多一些可以自由发挥的空间<b>。</b></p>
<h3>新乱世隋唐任务系统介绍</h3>
<p> <a href="http://www.40407.com/news/201310/308477.html">http://www.40407.com/news/201310/308477.html</a>
<p>相信玩家们对于游戏的任务系统并不会陌生，市面上的游戏80%都拥有自己独特的任务系统<b>。</b>任务的加入不仅丰富游戏内容增加可玩性，并且完成任务之后会获得 丰富的奖励，所以任务系统属于当下的主流系统<b>。</b>而在《新乱世隋唐》之中同样拥有十分庞大的任务系统，任务种类方方面面，满足了各种玩家的需求。下面我将带 领大家了解一下《新乱世隋唐》的任务<b>。</b></p>
<p>指引任务和阶段任务</p>
<p>指引任务并不难理解，名副其实指的就是一种指引玩家上手游戏的任务<b>。</b>所以你也就不再需要担心一个人独自战斗了，新手指引将体贴的陪伴在你的身边。身为玩家的你只要通过完成任务、获取任务奖励的形式逐步加深对整个游戏的了解，就能够脱离新手的行列<b>。</b></p>
<p>不过在此还要特别提醒大家，需要注意的就是所有的任务奖励都需要玩家自己去手动到任务界面领取，领取奖励之后就会出现新的指引任务了<b>。</b></p>
<p>对于阶段任务而言，所指的则是玩家在达到一定阶段就可以直接完成的任务，阶段任务所包含的内容十分广泛，比如爵位<b>、</b>声望、兵力、武将等等，通过提高这 些都能够在阶段任务中获得奖励。与其说阶段任务是个奖励，倒不如说是对玩家逐步变强的一个写照，同样也是对玩家自身所取得成绩的一种肯定<b>。</b></p>
<p>日常任务和活动任务</p>
<p>日常任务区别于其他任务，是每天玩家可以获得的普通任务，完成这些任务可以获得金钱<b>、</b>经验<b>、</b>声望、政绩、军功五个方面的奖励。在《乱世隋唐》中，玩家 能够从城池酒馆中领取到日常任务，每人每天最多可完成20个日常任务，每次最多领取5个日常任务<b>。</b>同时通过商城之中的任务排查，可以刷新当前所提供的日常 任务。</p>
<p>所谓活动任务指的就是在游戏之中定期举办活动的任务，其中以节日以及特殊活动任务为主，任务类型采用前几种的任务方式进行<b>。</b></p>
<p>游戏到了后期还会开放副本任务、剧情任务等等，通过这些任务使玩家逐步了解《新乱世隋唐》的世界背景，以及一些经典剧情，从而加深对游戏的喜爱<b>。</b>听到这么人性化的设计，我想你一定已经按奈不住了吧，那么赶快加入到《新乱世隋唐唐》中来吧。</p>
<p>【责任编辑：小静】</p>
<p><b>     <br /></b></p>
<h3>任务系统设计思路</h3>
<p> <b>来源网址：</b> <a href="http://developer.178.com/201004/65657736606.html">http://developer.178.com/201004/65657736606.html</a>
<p>来源：互联网04-19-2010</p>
<p>一．为什么要设计任务系统</p>
<p> 1． 体现世界观世界观</p>
<p> 指主线剧情，历史背景，塑造主角的成长历程。</p>
<p> WOW中的任务虽然不是必须完成的，但是顺着部落主线的剧情延伸至南海镇的任务却是很明显的主线剧情，从亡灵新手村学会了如何和死尸打交道，并且如何与已故的亡灵战士沟通成了亡灵族的本能，那么下面任务就是完成赫尔库拉的复仇任务<b>。</b></p>
<p>//希尔斯布莱德丘陵的赫尔库拉的复仇任务，部落的做这个任务有点难度，因为目的地是联盟的城镇，很容易被卫兵和联盟的玩家追杀<b>。</b>经历N次复活的艰辛之后，努力终于有了回报，复活后的赫尔库拉召唤出一群骷髅兵攻击南海，虽然<b>。</b><b>。</b>。最终还是难免被南海的卫兵围殴至死，不过咱心里还是爽了一把<b>。</b></p>
<p> 2． 营造世界氛围</p>
<p> 指支线剧情，烘托世界营造世界环境，以及地区性特点的营造。这个任务是营造了烈日石居的地区特征，一个被污染的土地，那么崇尚自然的牛头族的希望是什么，是为这片不毛之地带来新的生机<b>。</b></p>
<p> //种植盖亚之种 将10枚盖亚之种种植在盖亚土堆中，然后与烈日石居的塔姆拉谈一谈。如你所见，盗贼，我纯净的心灵可以为这片不毛之地带来新的生机<b>。</b>你必须将这些种子种植在破坏之源中，在西边的焦炭谷里就是破坏大自然的源泉——这片被污染的土地上到处都是鹰身人和凶恶的火元素<b>。</b>邪恶狂风，拿着这些附有魔法的盖亚之种，把它们种植在盖亚土堆里<b>。</b></p>
<p> 3． 角色扮演的真实体验</p>
<p> 模拟真实的事件流程以及所参与的人物。</p>
<p> 《驯服的科多兽》的任务便是让你体验如何驯服一头巨大的科多兽，既要避免成年科多兽的攻击，又要引诱老年的科多兽进入你的圈套<b>。</b></p>
<p>//带5头驯服的科多兽和科多兽诱引器给瑟卡布斯库营地的斯米德•瑟卡布斯库<b>。</b>比布莱认为他是凄凉之地唯一一个懂得赚钱的地精<b>。</b>好吧，想要让旅团闯过这块地方就要靠我了。因为我懂得利用我的科多兽诱引器控制年老的和濒死的科多兽，所以我和旅行队的主人科克，瑞格进行了合作<b>。</b>把科多兽诱引器拿去使用在任何年老的或者濒死的科多兽身上。然后那个野兽就会变成驯服的科多兽然后会跟着你<b>。</b>一旦你驯服了一头科多，那就把它带来给我吧。</p>
<p> 4． 系统关键点，功能开启。</p>
<p> 触发特殊系统功能的开启。WOW世界中的职业任务是系统功能的开启，任务完成之后将会获得本职业的特定技能或者特定的技能道具<b>。</b>以下是部落萨满的水图腾任务。</p>
<p>//到南贫瘠之地去找到布瑞恩。关于水，有一点是你必须要了解的：水意味着重生<b>。</b>水流动着，消蚀和清洗一切事物。水的治疗和恢复能力是无与伦比的，但这只有在水是完全纯洁的情况下<b>。</b>如果水受到了污染，那么它将毁灭一切它接触到的东西。理解了这一点，你就应该能明白保证水源的纯洁性是多么的重要<b>。</b>如果你想要得到水之灵契，就到南贫瘠之地去找布瑞恩吧，她的家园最近时常受到野猪人的骚扰。</p>
<p>5． 任务引导</p>
<p> 指引玩家操作和明确系统功能。例如WOW的任务《把受难药剂交给乌比》，这个是区域指导任务<b>。</b></p>
<p> //我得花一会儿时间把这些成分混合在一起，做成受难药剂。成功了！啊，还有什么能比给这个世界带来点灾难更让人愉快的呢？让我们看看这种药剂能不能达到预期的效果<b>。</b>让我的助手乌比瞧瞧黑暗女王为人类和天灾军团准备了什么样的礼物。当玩家接到这个任务的时候已经50级或以上了，那么这个任务完成之后，便引导玩家去西瘟疫之地的天灾军团了，那个地区是50级玩家的练功区<b>。</b></p>
<p> 二．任务系统的基本规则</p>
<p> 一个完整的任务包含三块内容，触发任务——执行过程——完成任务。具备了这三个基本条件，就算是个完整的任务了，那么其中多种的形式变化以及内容表现的丰富性为任务体系增添了血肉<b>。</b></p>
<p> 1． 任务的触发</p>
<p> 根据任务触发的形式不同，可以分为以下形式：</p>
<p> •条件触发形式 当满足一定条件的情况下，自动产生或固定NPC领取任务。</p>
<p>•固定领取形式 最常规的任务获得模式，通常情况下受一定范围条件的限制<b>。</b></p>
<p>•随机触发形式 在任何场景任何等级段随机获得任务。</p>
<p>•连锁任务形式 由一部份人触发，完成后引发另一部分获得任务。</p>
<p>根据任务触发的类型不同，可以分为以下类型：</p>
<p>•物品触发。拾取或者使用特殊物品时触发任务。</p>
<p> •NPC触发。指玩家从某个NPC处得到该任务。</p>
<p> •区域触发。指玩家进入某个区域后即触发该任务。</p>
<p> •时间触发。指玩家经过一段游戏时间后可以得到该任务。</p>
<p> 任务触发的情况可以是多种形式的组合，也可以是多种类型的组合，同时一个任务触发既满足条件触发形式、又满足了固定领取的形式<b>。</b></p>
<p> 2． 任务完成过程</p>
<p> 任务完成过程会通过各种形式来进行，以下列举了其中8种最常用的任务完成形式，该形式库的内容将根据需要进行不断的扩充，仅供参考<b>。</b></p>
<p> 1）战斗。</p>
<p> 程序实现难度最低，只要验证所杀的怪物（数量）即可。应该说，这种任务在WOW里所占比例最大，在其他网游的任务系统中也最常见<b>。</b>因为这种任务系统的实现没有很大难度，程序只要安排任务指定NPC、任务对话及任务完成检测，而且也是最容易安排剧情的任务类型<b>。</b></p>
<p> 所需消灭的怪物分为两类，一是普通的怪物，一是BOSS类怪物。普通的怪物就不必多说了，BOSS类怪物有些还需要触发条件，例如十字路口的狂热的维罗格任务，消灭半人马一定数量后才会出现，还有十字路口的艾其亚基任务，要在它的巢穴附近吹响号角来召唤它<b>。</b></p>
<p> 2）收集物品。</p>
<p>收集的物品分以下四类:</p>
<p> ⑴、 指定怪物必然掉落物品</p>
<p>//WOW中十字路口的偷钱的迅猛龙任务，杀死迅猛龙会获得钱币</p>
<p>⑵、 指定怪物随机掉落物品</p>
<p> //梦幻里的任务链系统，每环需要的物品可以通过杀死自己同等级的怪物有几率获得。</p>
<p>⑶、从地图上可见并可采集之物品</p>
<p>//WOW十字路口的采集菌类孢子任务</p>
<p> ⑶、 可以由玩家制作出来的物品</p>
<p> //梦幻中的师门任务、修炼任务、任务链有很多是需要收集玩家制作的物品。</p>
<p>3）对话任务。</p>
<p> 最简单的任务过程形式，与指定NPC对话。大多数MMPRPG最常用的任务过程形式。</p>
<p> 4）护送任务。</p>
<p> 保护目标NPC到达目的地，路上一定地点会刷新怪物，这时候要注意不能让目标NPC死亡，否则任务失败。最典型的是哀嚎洞穴的护送牛头德鲁伊任务<b>。</b>程序实现：固定地点刷新怪物，判断目标NPC是否死亡，死亡则转入任务失败，任务结尾若NPC仍存活，任务完成<b>。</b></p>
<p>5）探索任务。</p>
<p> 一般的要求是到达探索地点的规定区域内即可完成，供玩家熟悉地图用。有些任务还要求发现某特征事物，例如十字路口的遗忘之池任务，在池水中观察到有冒泡的地方，需足够接近方可完成<b>。</b></p>
<p> //很久以前，贫瘠之地曾是个郁郁葱葱、生机盎然的地方<b>。</b>但是战争与灾难接二连三地降临在这片土地上，最后就剩下了这一片干燥荒芜的不毛之地。事实就是这样，真让我伤心<b>。</b>不过，在过去的几年里，贫瘠之地出现了新的绿洲，生机又在这片土地上重现。我们德鲁伊感觉到了在很深的地下有一股试图冲出地面的力量<b>。</b>我们必须找到这股力量的源泉，请到十字路口西北边的遗忘之池去一趟，在那里的湖水中搜寻力量的源泉，然后回到这里来<b>。</b></p>
<p>这种形式的任务通常需要玩家利用特定的技能或道具去捕捉怪物，也因此可以产生与场景互动的小游戏，例如WOW中黑海岸的捕获白熊的任务，给玩家一个陷阱道具，玩家发现白熊后安放陷阱，之后引诱白熊进入陷阱，捕获成功后白熊会跟随玩家到达指定地点完成任务<b>。</b></p>
<p>摧毁某个特定物件，摧毁的执行需要一定时间才可以完成，并且在任务过程中会受到怪物的干扰<b>。</b>例如WOW中的摧毁巴尔莫丹的飞行器，然后向加恩•石塔回复<b>。</b></p>
<p> //按照卡兹戈姆的日记上所述的方法制造出来的炸药应该不会有问题。那么，我们开始吧<b>。</b>首先我有一项特殊的任务要交给你完成。拿上这只爆破筒，去炸掉巴尔莫丹的飞行器。这个飞行器不仅是巴尔莫丹军事设施的关键部分，也是一架可怕的杀戮机器。更重要的是，它是权力的象征，而它对我们的部族来说则代表着一段耻辱的回忆<b>。</b>我会为你的成功感到自豪，你也将得到丰厚的奖励。</p>
<p> 8）送物品</p>
<p> 这类物品一般是在完成收集形式的任务之后进行后续任务，玩家在上一个任务中收集物品之后，在本任务中将特定物品交个特定NPC或者将特定物品安放在某个地点<b>。</b>例如梦幻和大话中的跑镖任务，将镖送至特定NPC，中途会受到强盗的堵截，需要消灭强盗完成任务。</p>
<p> 以上只是列举的任务过程中最常见的几种任务过程形式，任务系统得设计中这些形式会不断创新与交织，形成更庞大的任务体系<b>。</b></p>
<p>3． 任务的完成</p>
<p> 任务的完成是对任务过程的一个体现，好比任务需要你获得10个飞鱼的鳍，那么在任务的执行过程中，你获得的累积数量达到10个，将鳍带给指定NPC，任务就是完成了<b>。</b>所以任务的完成和过程可以为一体，任务的执行也就是任务的完成。另一方面任务的完成也有可能是另一个任务开启的条件，那么完成和触发也可能是任务系统同步进行的事件。</p>
<p>4． 任务的奖励</p>
<p> 1）任务的奖励内容</p>
<p> 物品 金钱 经验 称谓 积分</p>
<p> 2）任务奖励的形式</p>
<p> 随机 玩家随机获得某项内容奖励</p>
<p> 指定奖励 玩家完成任务之后一定会获得某项奖励</p>
<p> 可选奖励 玩家任务完成之后可以选择奖励内容，一般在任务链体系中玩家获得积分，当积分累积到一定程度，玩家可以换取所需要的奖励内容<b>。</b></p>
<p>3）任务的难度</p>
<p> 任务的难度可以通过以下几个方面进行综合控制，玩家任务需求等级、玩家任务完成时间<b>、</b>玩家需要杀死的怪物数量、玩家完成任务所需要的技能要求、玩家完成的风险程度。可以通过建立一张难度控制表来规划任务的难度需求<b>。</b></p>
<p> 难度系数 玩家任务需求等级 玩家完成任务时间 玩家需要杀死的怪物数量 玩家完成任务所需要的技能要求 玩家完成的风险程度</p>
<p>10 80 10分钟 20 熟练度1000 10</p>
<p> 9 70 6分钟 10 熟练度800 9</p>
<p> 8 60 5分钟 8 熟练度500 5</p>
<p> …… 50 4分钟 7 熟练度100 4</p>
<p> 每一项内容都可以给与固定的分值，当所有需求项目的分数汇总后得出的难度系数就为任务的难度了，所有任务体系中涉及的内容都可归纳到本表中进行统一规划<b>。</b></p>
<p>//以下内容为玩家分析的WOW中的任务等级控制，仅供参考<b>。</b></p>
<p>先说单个任务的难度控制。在普通的链状结构任务中，难度都是循序渐进的<b>。</b>例如荆棘谷的摩克萨尔丁的魔法，任务的起始是从杀深喉猎豹（37---38级）开始的，第二步要获得的物品是从丛林捕猎者（39—41级）那里得到的，第三步成年大猩猩的肌腱所需杀的怪等级38---41，最后一步要从纳加的圣泉中取到圣泉之水（纳加等级43—44）<b>。</b>注意到这些任务能够单独完成所需等级是一步步慢慢增加的。所以链状任务设计的时候，切忌任务之间跨越等级太大，或者任务越后面难度越低。等级跨度太大，给玩家无所适从的感觉，再加上当前能力无法完成任务，造成放弃任务的几率大大增加；任务难度安排颠倒，越到后面越没挑战性，结果给玩家的成就感也就降低了<b>。</b></p>
<p> 再说整个游戏的难度控制。仍以魔兽为例（副本也算做任务的一部分）<b>。</b></p>
<p> 1-5级时，玩家在新手村活动，这时候的任务一般以杀怪、收集物品和探索为主，设计时就要注意把相关的任务难度调低，让新手在任务中快速熟悉游戏的玩法<b>。</b>例如杀怪任务可以减少完成任务所需怪物数量和削弱初级怪能力，收集物品任务所需物品必须大而显眼，探索任务目的地离新手村要近<b>。</b>而且关键是都要有详细的说明，指明任务所在地是必须的，让玩家在完成任务时不至于没有任何头绪<b>。</b></p>
<p> 6-12级时，玩家一般会离开新手村到达第一个城镇，除了前面所述几种任务之外，还要适当加上消灭普通BOSS的任务，这种任务高级点的玩家可以单独挑战，低级点的玩家必须组队才能战胜<b>。</b>在一定程度上促进了玩家交流和组队，增加了游戏交互性。</p>
<p> 13-20级，这时候玩家已经对游戏玩法有足够的了解，所需的就是大量的任务来提高玩家的技巧（包括个人能力和团队配合能力），第一个需要配合的副本任务在这样的前提下诞生了（如奥格瑞玛的怒焰峡谷），在副本里强调团队的配合，一个人的失误都有可能带来团队的毁灭<b>。</b>不过做为第一个副本，难度一定要控制好，地图不能太复杂，怪物密度不能太高，BOSS能力不能太强<b>。</b></p>
<p> 21-30级，基本同上，不过此时的任务考虑加入一些技巧或噱头，添加大量的隐藏要素，使不同的玩家在完成不同的任务时有不同的体验<b>。</b>这个时期的副本可以适当加大难度。（十字路口的哀嚎洞穴副本是这个时期必进的一个副本，在细节方面和难度方面都处理的很不错，不过唯一不足的是地图实在太复杂，去过两三次的人也未必会熟悉，至于我，在走了八遍以后才勉强记住<b>。</b>）</p>
<p> 31-40级，这个阶段玩家一般会在中立地区活动，与敌对阵营的摩擦也日益增加，组队完成任务的玩家会占很大一部分<b>。</b>所以可以增大团队才能完成的任务比例，还有一些需要良好操作控制的任务<b>。</b>副本中怪物的密度可以增大，考验团队处理突变状况的能力（如剃刀高地的2精英3普通怪和巡逻怪组合），BOSS的技能和AI增强，让玩家自行摸索战胜BOSS的技巧<b>。</b>（如诺莫瑞根的最终BOSS，打他的时候旁边的炸弹发射器会不停放出炸弹来攻击玩家，需要一个人去关炸弹开关<b>。</b>）</p>
<p> 41-50级，到这个级别的玩家一般都已经具有良好的操作和对自身职业足够的了解，单独完成任务的欲望强烈，可以考虑降低团队任务比例<b>。</b>副本难度大幅度增加，一些区域需要特定职业的技能才比较容易通过（如奥达曼的矮人群，范围魔法可以发挥的淋漓尽致），一些区域需要玩家消耗大量的药品（如马拉顿的毒水BOSS，滋补药剂和治疗药剂的应用），打BOSS需要技巧和运气（马拉顿的公主，战士积累足够仇恨，盗贼和法师<b>、</b>猎人主输出伤害，牧师照顾战士的同时又要注意不被公主盯上。对付公主的大范围毒气，近战的要轮流上阵<b>。</b>对付公主的打飞能力，战士要靠墙站。）</p>
<p> 51-60级，这个时候出现了全新的任务类型，大型团队任务（RAID队伍），需要5个以上、40个以下的玩家协同完成<b>。</b>这些任务也是对玩家的极大挑战，不仅普通小队无法完成，即使是RAID队也要良好的配合和正确的战略指导才有可能战胜<b>。</b>在丰厚的奖励和诱人的物品掉落面前，会有玩家不停的组织人手来击杀BOSS，如尘泥沼泽的黑龙公主<b>、</b>艾萨拉的蓝龙、熔火之心的火焰领主等。这个时期的副本，几乎每一波敌人都是一个挑战，一旦处理不慎，团队覆灭是很正常的，技巧+战略+运气，一个都不能少，才能完成高难度的副本任务<b>。</b></p>
<p> 因此要随着游戏的进程的编排任务的方方面面，合理地估计玩家该阶段的能力，做出最佳的任务安排。</p>
<p>5． 任务的互动模式</p>
<p>任务的互动模式可分为两大类，合作模式与竞争模式。</p>
<p> 1) 合作模式</p>
<p> 是多个玩家为达到一个共同的目标进行合作完成一个任务模式。例如WOW世界中的开启安琪拉大门的任务，需要联盟与部落的玩家共同收集一定数量的物品，在特定的时间收集完毕后安琪拉副本大门便会开启<b>。</b></p>
<p> 2) 竞争模式</p>
<p> 竞争模式是多个玩家为达到一个共同的目标之间进行博弈的一个任务模式，这个模式可以划分为良性竞争和恶性竞争两种情况<b>。</b></p>
<p> 恶性竞争</p>
<p> 大话2中的地星系统，高额奖励以及争夺目标是唯一的，经常引起帮派霸星，以及大规模的PK，也许有人会认为这也是玩家进行游戏的动力，但是这种刺激是短暂的，无论PK的双方哪一方赢得胜利，这都将以玩家离开而终结，这不是我们想看到的结果也不是我们提倡游戏环境<b>。</b></p>
<p>  良性竞争</p>
<p> 领取任务的玩家有自己独立的争夺目标，玩家之间不会相互干扰，并且胜负是以玩家的完成时间或是完成策略的优异性进行评定，例如梦幻中的游泳大赛，玩家各自组成一支队伍，其间需要和13个不同地点的NPC对话，并有几率触发战斗，最后成绩是看谁先完成13个NPC的对话，这种情况就不会引发玩家之间的恶性竞争<b>。</b></p>
<p> 合作模式与竞争模式也会同步存在，例如梦幻中06年的暑期活动花妖任务，玩家杀死花妖后会有几率获得花妖的种子，将种子种植在特定的区域内，每个服务器都将固定时间段内计算玩家种植的种子总数，数量排名前十的服务器，玩家的双倍时间将会增加4小时<b>。</b>可以看出任务的前半部分是一种需要玩家合作的模式，而后半部分则是需要玩家服务器之间的竞争模式<b>。</b></p>
<p> 三．任务设计的注意事项</p>
<p> 1． 引擎功能</p>
<p> 通过地图阻挡产生的任务限制，通过地图上的阻挡区域来执行游戏规则，这个已经被单机游戏用到滚瓜烂熟了，但是作为网络游戏，以及我们游戏引擎的限制，通过阻挡实现游戏规则，这条非常的困难，目前程序是极力反对此种做法的<b>。</b></p>
<p> 一是网络游戏中玩家的网速不同，网络延迟有极大可能造成动态阻挡区域的生成或信息传播，有些阻挡在网络延迟的情况下可能消失，所以通过阻挡产生的游戏规则目前受到网络环境的影响，还不成熟<b>。</b></p>
<p>二是我们的引擎的优势并非体现在动态阻挡上，因阻挡形成的游戏规则在引擎的执行力度上会大打折扣<b>。</b></p>
<p>2) 控制玩家</p>
<p> 我们的引擎尚不能支持系统控制玩家，所以对玩家的操作，以及与NPC对话时玩家的系统对话目前不能实现，但是我们可以先制定需求，以及其他的实现途径，根据最后的引擎实现力度进行调整<b>。</b></p>
<p> 2． 网络游戏特性</p>
<p> 网速一直是网络游戏实现的最大障碍，只要是网游那么都会存在网络延迟的问题，只是不同的ISP与用户之间延迟多少的问题，那么体现在我们的任务设计中就需要极力避免挑战网速的任务<b>。</b></p>
<p>任务长度拉的越长，网络迟延带来的负面影响则越小。例如科举任务，回答问题，考验玩家的知识量，问题越多则玩家越贴近任务设计的核心<b>。</b></p>
<p> 网络游戏中存在刷新问题也是我们需要注意的地方，常规战斗中我们的遇敌方式是明雷，任务系统中也会遇到类似的设定，把握好刷新时间是一个尤为重要的问题</p>
<p>3) 脚本播放时间</p>
<p> 脚本的播放时间也如同刷新一样需要把握时间问题，多长时间最合适。</p>
<p>3． 任务表现形式</p>
<p> 1) 任务的文字信息量</p>
<p> 这里的任务文字信息量是指与NPC对话的文字信息，同一页的文字信息量超过四行，玩家阅读时将会产生烦躁感，另一方面，网游也区别于单机游戏，单机的RPG更多是在体现剧情的跌宕起伏，玩家可以花上更多时间反复体验一种剧情甚至忽视奖励的存在，但是网络游戏不同，玩家每分每秒都在支付的时间费用，如果不能在短时间内容给以丰富的刺激体验，那么玩家有极大可能会选择放弃这段冗长文字却感人至深的剧情<b>。</b>如果玩家选择跳过，那么文案辛苦修筑的华丽辞藻此刻被玩家一键搞定，同时剧情任务也失去了体现世界观<b>、</b>营造世界氛围的作用。</p>
<p> 2) 任务流程长度</p>
<p> 常规任务流程不宜过长，这很容易引起玩家对任务的厌恶感，梦幻中的剧情任务很多是让玩家在两个NPC之间来回奔波，极度引起疲劳，同时兴奋点拉长之后，玩家容易就陷入迷茫，针对一些上线时间不长的玩家，过长的任务流程将意味着将那些短时间上线的玩家拒之门外，这就如同WOW的高端副本，让很多休闲工会流失了不少玩家，以至于不能生存下去，并且对于单人来说，让低在线，高技巧型的玩家在服务器中处于中下水平<b>。</b></p>
<p> 4． 任务玩法</p>
<p> 1) 任务设计中的小游戏</p>
<p> 任务设计中运用小游戏的手法，可以极大的丰富任务的形式，并且能给任务执行过程带来乐趣，但是任务中小游戏的加入强烈建议不要通过切图的方式进行，那将极大地破坏通过各种努力营造的游戏真实体验，切图进行小游戏只会让任务以及各种表现力降低<b>。</b>切图的不是不可以做，要做就放在固定的场景氛围之中，你大可在傲莱游乐场玩到你想玩的任何小游戏<b>。</b>WOW中的钓鱼、烹饪，都是在当前场景中直接进行的小游戏，并未切图，这就是为了给玩家带来真实体验。</p>
<p> 2) 玩家回答问题</p>
<p> 在任务的设计中我们会加入问题让玩家选择答案，那么这种设定我们就需要考虑到我们的出发点是什么，是让玩家获得更多的知识——在娱乐中学习，还是通过高难度的问题带给玩家焦虑，如果带给玩家的焦虑，我们是否有设计释放焦虑的玩法，让玩家产生快乐<b>。</b>《游戏的设计与开发中》提出游戏中焦虑的产生和释放就如同在交响乐作品中，作曲家通过反复重现一个旋律片段，使我们进入某种情感体验，但随着旋律重复的继续，我们开始期待着它的变化和完成，产生疑惑<b>、</b>焦虑的情绪，随着时间的流逝，听众的紧张度越来越大，迫切需要从这种精神状态中解脱出来，这时作曲家等待听众的紧张度达到承受的极限后，马上使用与上一个旋律截然对立的另一个旋律来打破上一个旋律，从而使听众从某一个感情的高点跌落下来，获得强烈的解脱感<b>。</b></p>
<h3>网络游戏任务系统设计考良</h3>
<p> <b>来源网址：</b> <a href="http://blog.donews.com/xzwenlan/archive/2005/01/20/249444.aspx">http://blog.donews.com/xzwenlan/archive/2005/01/20/249444.aspx</a>
<p>首先，网络游戏是一个大的概念，本文所述网络游戏的类型为MMORPG，我们在此基础上进行讨论网络游戏任务系统该去如何建立与发挥<b>。</b>    <br />MMORPG的定义为大型多人在线角色扮演游戏<b>。</b>从这一点上，MMORPG的前身是单机RPG，包括目前所流行的一些MMORPG，其设计也是延续了单机RPG的游戏理念<b>。</b>所以通过对两者的比较，我们不难发现网络游戏和单机角色扮演游戏之间的共同点和不同点<b>。</b></p>
<p>&#160;&#160;&#160; 中文角色扮演游戏从玩法上来说，基本上就是通过剧情主线得到讯息不断完成系统给出的任务的过程<b>。</b>单机RPG之所以有趣好玩，是因为剧情和任务结合在一起而产生的联动，在错综复杂的游戏世界里，玩家需要一步一步去揭开游戏主题下隐藏着的秘密<b>。</b>同时就玩家的行为来说，是一个“寻找—发现—寻找”的循环过程。&#160; </p>
<p>而网络游戏则是一个多人共存的世界，和单机RPG不同的是，网络游戏的个人行为自由度要求比较高，玩家愿意在游戏提供的时间进行无限制的活动，这也就是为什么网络游戏里的剧情成分少的原因，因为玩家不需要剧情对其行动进行约束，而且设计者也无法提供足够复杂的剧情去解释所有人的行为<b>。</b>那么在这种情况下，依靠剧情为主线串起玩家的行为是不现实的，而需要通过其他因素为玩家的行为形成一条可延续的线，让玩家感觉在游戏世界里是一步一步前进的，整个游戏也是在一步一步变化着的<b>。</b></p>
<p>我个人比较反对“网络游戏任务就是为了增加玩家所要做的事，拖延玩家的游戏时间”这种设计想法，我倾向于使用游戏中已经存在的要素进行延展而产生的对玩家有用的任务，并且任务系统的味道不应过重，是一个有选择的完成<b>。</b></p>
<p>以往单机版RPG的任务的设计方向是：通过主线剧情和支线剧情串起多个任务以达到诠释整个故事的目的<b>。</b>所以在这里，它的设计方向是：“剧情—任务”，先有剧情而后有任务。但在网络游戏里，我们可以通过反推的办法建立任务系统，也就是“任务—剧情”，网络游戏MMO中的剧情是比较薄弱的，而我们用“通过任务来表现剧情”的办法不但可以建立起高自由度的任务系统，还可以弥补剧情上的不足<b>。</b></p>
<p>怎么去建立呢？首先我们需要在一套游戏里设计多套剧情，这多套剧情之间可以没有关系，也可以有微妙的衔接关系以形成类似主线的“背景剧情”<b>。</b>之后我们根据剧情的发展点，配合适合的任务模式套出多个任务来。再把这些任务放到游戏中合适的地方供玩家启动<b>。</b></p>
<p> 这样，即使在玩家什么都不知情的情况下，当他无意中接触到许许多多的分支情节任务，这些任务中有些对他有害，有些对他有利，他渐渐就能明白游戏中存在的一些“隐藏”的秘密<b>。</b>这就是反推，我建议让玩家自己去通过他所见所的进行的理解和，而不是让游戏主动去给他解释。每个人都是有好奇心的，应该把握这一点。至于任务怎么去设计，我这里就不讲了，总之设计者换换脑子，不那么僵硬的按照固定模式去设计，自然能找到比较自然的设计方法<b>。</b></p>
<p>我个人建议网络游戏中的任务的放置应该趋向随意化，不一定非要摆在城市里的NPC身上，而应该做为玩家冒险途中的发现，比如放在一个打宝打怪会经过的交叉路口，不一定是NPC，可以在墙壁上放一个告示，或者在地上放一张旧贴，这样要比NPC解释来得更加自然<b>。</b></p>
<p>游戏还应该加入一些解迷和悬疑的要素才能更好玩，比如留一些暂时不开放的小房子，一些看见人就逃跑无影无踪的奇怪的怪物，一些暂时无法使用的物品，玩家在游戏过程中会感到疑惑，不明白制作者的意图<b>。</b>而当一下一个版本升级，或者玩家进入了新的地图，这些疑问才得到解答。这样能够适当的提高玩家的期望度。游戏维护应该和游戏内容有机的结合起来，而这正是单机游戏一杠子买卖所无法比拟的地方，如果网络游戏设计中就不注意这一点，我们又如何长远的抓住玩家的心呢？</p>
<h3>任务系统太糟糕了？</h3>
<p> <b>来源网址：</b> <a href="http://info.1688.com/detail/1028156250.html">http://info.1688.com/detail/1028156250.html</a>
<p>至于身为当初《魔兽<a href="http://info.1688.com/subject/5662161.html">世界</a> 》核心开发人物的 Jeffery Kaplan ，他目前正开发Blizzard新款次世代在线游戏，最近在游戏开发者论坛（GDC）中以分享游戏开发经验，非常坦率地描述了《魔兽世界》所面临的主要问题<b>。</b>但他也提到，《魔兽世界》研发团队都已经开始针对这些问题进行修正<b>。</b>    <br />Kaplan 首先表示，2004 年 11 月《魔兽世界》最初推出时，任务数约 2600个，《燃烧的远征》增加到两倍以上<b>、</b>约5300 个，而《巫妖王之怒》发表至今，可以享受的任务达 7650 个<b>。</b>以北美来说，从 2007年 6 月 30 日至 2009 年3 月 5 日，共有 8,570,222,436 个任务被完成，每日平均任务完成数为 1664 万1209 次<b>。</b></p>
<p><strong>圣诞树效应</strong>    <br />首先《魔兽世界》的问题是「圣诞树效应」，也就是游戏的任务探索设计不协调，导致游戏小地图中被任务的符号点缀得看起来像个圣诞树的<a href="http://info.1688.com/tags_list/v9-l18597.html">灯饰</a> 般，被 Blizzard内部称为「圣诞树效应」；他表示，虽然不少玩家喜欢一下子就看到众多的任务，但游戏却失去了控制，有时反而无法引导玩家体验真的很有趣游戏内容<b>。</b>此举让玩家不想去阅读任务的实际内容，也懒得记住到底哪个NPC给了这任务，甚至忘记整个任务的顺序等<b>。</b>    <br />他认为，游戏最好能够设计缓慢地、引导玩家体验有趣的经验。他笑说，有的《魔兽世界》任务设计者想要把大量任务塞到单一个NPC身上，现场他展示了有一个 N<a href="http://info.1688.com/tags_list/v3-l7039.html">PC</a> 总共包了 8 个任务<b>。</b>而目前，游戏已经修正在单一地区同时不会呈现 7 个以上的任务。</p>
<p> 另一个问题是任务说明显得啰唆，到底有多少玩家会仔细观看。Kaplan解释，由于一些较古早的网络词汇编辑方式，使得《魔兽世界》任务说明变得很啰唆<b>。</b>《魔兽世界》任务设计研发者被要求只能用511字，这样才能符合数据输入方式，有的研发人员抱怨希望能有更多空间，但是Kaplan认为应该要朝另一个方向发展，他认为应该再缩小空间，然后让开发人员更加思考到底是<a href="http://info.1688.com/subject/5036571.html">什么</a> 样的文本内容可以吸引玩家观看<b>。</b>    <br />另外，他认为游戏是一种革命性的互动娱乐，每种艺术不管是文学、音乐、电影<b>、</b>歌曲都以他们独特的方式来说故事，但有时候游戏开发人员却忘了要以适合游戏的方式说故事。所以他对Blizzard的开发人员说，「我们必须停止在游戏中写书，因为没有人愿意看」，游戏需要以适合游戏的方式来传递研发者想要告诉玩家的故事，必须藉由让玩家感觉成为英雄或恶棍或被害者，来让玩家感到乐趣<b>。</b>    <br />他认为，游戏任务仍要保持探索神秘的乐趣，但不能只说「Elwin森林出事了，去把它解决吧！」游戏应该要阐述一个神秘的故事，但在最后任务说明中还是要说去打倒这个猪头，去拿什么<b>。</b>若是任务的目标、地点、内容，让玩家不容易懂，反而变成要玩家拼命去网络上找答案，用这种观点设计游戏就有问题<b>。</b>但他<a href="http://info.1688.com/subject/5937521.html">希望</a> 在《魔兽世界》任务中的行动，还是能让玩家体验游戏乐趣，而不是一味想着要准确地拼命想自己赶快解决什么<b>。</b></p>
<h3>用户激励—积分体系分析</h3>
<p> <b>来源网址：</b> <a href="http://blog.sina.com.cn/s/blog_645fda1d0100rqsw.html">http://blog.sina.com.cn/s/blog_645fda1d0100rqsw.html</a>
<p><b>穆青松</b></p>
<p>对于一个互联网产品来说（当然也包括其它产品），对用户进行激励就是为了让用户更多的使用其产品或者服务<b>。</b>这样才能实现产品的价值<b>。</b>而积分体系就是比较常用的一种对用户的激励方式。下面就积分体系进行一点简单的分析：</p>
<p><b>一</b>、积分体系的发展</p>
<p>在互联网产品方面，用户积分体系使用得最早的可能就是早期的各种BBS论坛<b>。</b>而这些BBS的用户积分系统也是相对完善的。作用UGC的网站平台，BBS通过积分引导用户行为，让用户更多的参与到论坛之中，让用户为网站创造内容，创造有价值的内容（如：发帖积分<b>、</b>精华帖子积分奖励等）；并引导用户发现有价值的内容（如：回帖积分等）。</p>
<p>现在积分体系被各种类型的网站运用得更加有效，如：腾讯的收费会员VIP等级<b>、</b>迅雷的积分等级系统等等都是把积分体系进行了深度优化运用的典范。</p>
<p><b>二、积分体系的作用</b></p>
<p>前面就提到了，积分体系是一种比较常的用户激励方式<b>。</b>那么要讨论积分体系的作用，就先看看激励是什么吧。</p>
<p>在百度百科里，对激励的定义如下：</p>
<p><b>激励也是人力资源的重要内容，是指激发人的行为的心理过程</b>。激励这个概念用于管理，是指激发员工的工作动机，也就是说用各种有效的方法去调动员工的积极性和创造性，使员工努力去完成组织的任务，实现组织的目标<b>。</b></p>
<p>这里的激励是在企业人力资源管理（HRM）领域，以为实现企业目标为前提，对员工采取各种鼓励措施的解释<b>。</b>通过这个定义，我们可以这样理解在用户行业引导上的激励一词：激励是通过使用各种有效的方法和物质，以引导和鼓励用户使用产品，并引导用户正确的使用产品<b>。</b>它包括一个静态的制度体系，和一个动态的引导过程。</p>
<p>那么激励为什么会有效呢？这就是利用了人们自我价值的实现、接受肯定等方面的心理因素<b>。</b>对于每一个社会人而言，都希望能够在一定程度上得到他人的认可和肯定，以期实现自我价值。这是马斯洛需求层次理论中的最高层次需求<b>。</b>但是在现实中，激励还在满足人们虚荣心方面起到了作用。这里所提到的“虚荣心”并非完全是一个否定的贬义词，只是人们正常心理需求而已<b>。</b></p>
<p>缩合这些内容可以知道，<b>用户激励是通过满足人们在自我价值实现</b>、虚荣方面的心理需求，对用户实现引导的一个动态过程<b>。</b>通过用户激励可以鼓励用户使用产品，并且是按产品提供者想要的方式去使用产品。具体分析可以发现，用户激励包括以下几个方面的内容： </p>
<p><b>1</b><b><b>、</b>对用户行为的导向性作用。</b></p>
<p>用户激励首先是要通过具体的激励手段来告诉用户，产品或者服务能提供什么样的功能，这些功能服务可以解决用什么的什么问题<b>。</b>比如一些网站平台增加问答功能后，对用户提问或者回答进行正向激励。</p>
<p><b>2</b><b><b>、</b>对用户正确行为的强化作用。</b></p>
<p>在帮助用户了解了能做什么之后，就是要强化用户去做正确的事（也可以理解为产品提供者希望用户去做的事，或者是在一定时间内特别需要用户参与的事）<b>。</b>而用户激励就可以起到这样的强化性作用。比如，一个新上线的基于UGC的网站来说，需要大量的内容，就可以对用户发布内容进行正向激励；而当网站上的内容达到一定数量，用户人数也达到一定的阶段后，就需要对内容进行优化，那么就可以对用户发布的高质量内容<b>、</b>或者原创内容给予更强烈的正向激励。（对于用户所发布内容的质量评估不是本文的讨论方向，而且质量认定根据不同类型的产品也具体非常大的不确定性<b>。</b>）</p>
<p><b>3</b><b>、对用户错误行为的弱化作用</b>。</p>
<p>对于这一点来说，就是通过负激励来影响用户行为，让用户不做错误的事（产品提供者不希望）<b>。</b>对用户错误行为的弱化作用，与前面的正确强化作用相似，比如：一个用户创造内容的UGC平台，不希望用户在平台上发布违反国家法律法规不允许发布的内容（色情<b>、</b>暴力或者其它），那么就可以对这些行为进行负激励。</p>
<p>这些激励方式体现到积分体系中，就是根据用户的行为是否满足产品提供者的需要求进行加分，不同分值的加分，甚至是减分<b>。</b>（当然，要实现这样的目的，也不仅仅是只能使用积分这一种激励方式，还有别的激励方式可供使用）。</p>
<p><b>4</b><b><b>、</b>起到增加用户粘性的作用</b></p>
<p>在现在各种各样的产品非常之多，特别是互联网领域里，一个相似的替代品可能随时会出现，想要留下用户一直使用你的产品也并不是很容易<b>。</b>除了不断提高产品的可用性，经及用户价值，为用户提供更多用户所需要的功能内容外，利用积分体系，也可以起到粘住用户的作用<b>。</b></p>
<p>想想一个用户在一个网站上拥有了很高的积分值和等级后，再让他去一个新的网站上重新开始，除非那个网站的功能相差很大，否则用户将会在这个方面进行一个判断选择<b>。</b></p>
<p><b>三、积分体系设计的方法</b></p>
<p>正如前面所说，积分系统的作用是鼓励和引导用户行为，所以在设计积分系统的时候，就需要对用户行为进行分解和分类<b>。</b>根据不同行为需要强化的程度不同赋予不同的分值。</p>
<p>在进行用户积分体系设计的时候可以按以下步骤来进行：</p>
<p>1<b><b>、</b>分解产品功能。</b></p>
<p>分析产品功能是目的是了解产品提供了一些什么样的功能，帮助后面进行用户行为分解，找到主要的鼓励行为<b>。</b></p>
<p><b>2</b><b>、分解、识别用户行为（操作）</b>。</p>
<p>对于用户行为或者用户可进行操作进行细化分解。比如用户完成帐户设置可以分解为上传用户头像<b>、</b>完成邮箱验证、完成手机验证等方面<b>。</b>具体的分解细化到用户的每一个不同操作。在这里需要注意的是，对用户行为（操作）的分解，不仅仅要从产品价值的角度去思考，还要从用户的角度去思考，看看在这个产品上用户所有可能进行的操作<b>。</b>特别是一些负面的，不希望发生的操作经常会发生，在分解的时候不能乎视。</p>
<p><b>3</b><b><b>、</b>根据产品及时间需要对行业进行分类评价，确定鼓励程度。</b></p>
<p>完面了前面第2步的用户行为（操作）分解后，可以得到一个详细的行业列表，再根据产品的需要，对这些行为进行分类和评价，给予每一个操作一个“鼓励程度”的评分，这个评分可以帮助后面进行详细的分值设计<b>。</b>鼓励程可以用正负值表示不同的激励方向。用户数值大小表示程度大小<b>。</b></p>
<p><b>4</b><b>、根据鼓励程度，结合实际确定积分加分值及期限制</b>。</p>
<p>有了前面的鼓励程度和分类，就可以设计一个详细的积分体系表了<b>。</b>在对每一行为进行积分分值确定的时候还需要考虑会不会导致用户过度投资刷分的行为产生，要对这种行为进行一定的限制，不然积分体系就很难对用起到有效的激励作用了<b>。</b></p>
<p><b>5</b><b>、积分体系试行</b>。</p>
<p>完成了上面这些设计以后，就可以对积分体系进行上线试运行了<b>。</b>在试运行的过程中再去发现积分体系中的各种不足之处，并对此进行适当的调整<b>。</b></p>
<p><b>6</b><b>、积分体系的阶段性调整</b>。</p>
<p>根据产品的发展周期，需要对积分体系进行阶段性的调整<b>。</b>在不同的时间段时，产品提供者希望鼓励用户的参与行业是不一样的（前面关于用户创造内容的例子里就有所得到），所以需要在不同的阶段对积分体系进行一定的调整<b>。</b>特别是当产品进行了大规模的功能调整（增加或者删除功能等），更需要调整积分体系使其与产品发展保持一至。</p>
<p>比如下图就为某网站用户积分体系的简单汇总表，可以作为一个简单参考：</p>
<p>根据上面这个简单的积分体系表，可以看到此网站对用户行为的激励主要侧重在用户创造内容，并鼓励用户使用自己的真实身份<b>。</b></p>
<p><b>四、积分体系设计需要注意的问题</b></p>
<p>积分体系对用户行为激励有所帮助，但是并不是说积分体系就是万能的<b>。</b>在实际运用中，需要根据情况对积分系统进行合理的设计。这里说几个我个人认为在设计积分体系的时候需要注意的问题：</p>
<p><b>1</b><b><b>、</b>合理的用户行为识别和分解。</b></p>
<p>在进行用户行为分解的时候，需要对用户的有效行为进行识别，有效行为包括正向和负向的行为<b>。</b>积分体系的设计目的就是鼓励正向行为，减少负向行为。所以在对用户行为识别的时候，就需要特别注意对负向行为的识别<b>。</b></p>
<p>单纯从产品者设者、开发者的角度去分解用户行为可能会导致乎略掉很多负向的行为<b>。</b>因为作为一个产品设计者来说，可能很多时候都更多去思考这个产品能为用户提供一些什么样的功能，而忘记了这个产品可能还会有负责的功能产生，在分解用户行为的时候需要注意这些内容<b>。</b></p>
<p>2、了解产品功能，以及产品发展方向。</p>
<p>积分是为了激励用户参与，增加其对产品的使用并提高用户粘性<b>。</b>那么在设计积分体系的时候就需要了解产品现有功能，以及将来产品会提供什么样的功能、产品未来的发展方向等方面的内容，这有利于更好的设计积分体系，并为新功能<b>、</b>新方向起到用户引导的作用。</p>
<p>3<b>、</b>分值确定的合理性。</p>
<p>积分体系的最终表现形式是一个数值。那么这个数据怎么样才能让更多的用户满意，这就需要根据产品的用户分析，找到你最想激励的那些用户什么样的用户，他们的操作行为习惯是什么<b>。</b>尽量的做到公平合理的分值确定。而且也要让积分效果最大化。不能简单的设计一个积分体系，因为一个简单的体系可能会对一些用户起到很好的激励效果，但是却对更多的用户产生了负激励的效果<b>。</b></p>
<p>比如一个视频分享平台，如果过度强化对用户原创内容，虽然这可以降低网站的版权法律风险，但却会让更多没有能力创造原创内容的用户离开这个产品<b>。</b></p>
<p>4<b>、</b>合理的调整。</p>
<p>有很多网站的积分体系一上线就从来不进行调整，这样做也是非常不可取的<b>。</b>因为对于产品来说，是在不断发展的。以前鼓励的行业，现在不一定还会继续鼓励，而以前不鼓励的行业，说不定就是现在正需要的<b>。</b>所以需要根据不同的阶段进行一定的调整。这一点在前面也提到过了。</p>
<p>5、给合等级体系<b>、</b>或者积分奖励、任务体系。</p>
<p>积分体系最大的激励效果就是用户积分的增加或者减少。但是这也是简单积分最大的问题，积分体系需要与其它的方式有效结合才能对用户起到最大的激励效果<b>。</b>简单的一个数据值的变化可以对用户起到一定的激励作用，但是这种作用是有限的。还需要对不同积分的用户给予另外的奖励来进行激励<b>。</b>比如结合等级体系，不同的积分对应不同的等级，而不同的等级在产品中拥有不同的权限（BBS大多有这项设计）；或者积分奖励，当用户积分达到一定程后可以兑换指定的虚拟或者实物的奖励<b>。</b></p>
<p>等级体现比较容易实现，在BBS的积分体系中就是设计等级系统。另外，腾讯QQ会员的VIP等级、京东商城（360buy.com）的会员等级都是非常成功能例子<b>。</b>腾讯不同等级的会员拥有红色昵称、不同的文件中转站空间大小、其它会员特权等；而京东商城的会员等级可以拥有不同级别的折扣大小，高级会员在购物时所拥有的折扣权限更大。</p>
<p>除了将积分与用户等级权限进行直接绑定外，另外还有可以让用户直接使用积分兑换虚拟物品，或者实物的激励方式<b>。</b>比如迅雷在特定的情况下，可以让一定等级的普通用户拥有付费VIP试用的机会，还有就是在一网站中设计的非等级奖励<b>。</b>而有一些网站则直接设计了用积分兑换实物奖励的内容，这一点在信用卡<b>、</b>电信运营商方面运用得比较成功。在一般的网站上也有运用，比如某网站的一个兑换内容最高项是兑换一台iPad虽然通过计算发现，需要几百年才能达到兑换iPad的积分值（这就是积分兑换设计的问题，在设计兑换的时候需要让用户觉可以达到，而对于排序类积分等级体系，还要让后来的用户觉得前面的用户可以被他超越，只要他经常使用这项产品），但是这种实物方式积分奖励对于产品的推广来说是非常有效的<b>。</b></p>
<p>最后还有一种类式于积分系体的激励方式就是任务体系，任务体系与积分体系相似，却完全独立，或者一定程度上独立于原有积分系统<b>。</b>让用户通过完成不同的任务，以获取一定的积分或者相应的奖励。这一体系运用得比较成功的可能就是百度了。百度在百科<b>、</b>知道等上面设计了很多不同的任务。以吸引用户参与到其中。其实这也是运用了用户虚荣心等方面的心理因素。（<i>右图为百度知道的任务截图</i>）</p>
<p>以上是对产品积分的一些简单想法，思考并不细致完善<b>。</b>欢迎讨论拍砖！</p>
<p><b>版权说明：本文为个人原创 转载请注明出处</b></p>
<p><b><a href="mailto:muqingsong@163.com">muqingsong@163.com</a> <a href="http://www.weibo.com/hrmqs">http://www.weibo.com/hrmqs</a></b></p>
<p><a rel="nofollow" href="http://www.lvjiyong.com/i553.html">任务系统设计与用户激励</a>，首发于<a rel="nofollow" href="http://www.lvjiyong.com">吕的部落格</a>。</p>
]]></description>
		<wfw:commentRss>http://www.lvjiyong.com/i553.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>对虾、基围虾、沼虾、河虾怎么区分</title>
		<link>http://www.lvjiyong.com/i542.html</link>
		<comments>http://www.lvjiyong.com/i542.html#comments</comments>
		<pubDate>Sun, 29 Sep 2013 05:19:52 +0000</pubDate>
		<dc:creator><![CDATA[吕]]></dc:creator>
				<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://www.lvjiyong.com/?p=542</guid>
		<description><![CDATA[<p>前几天和爱人去买虾，居然发现自己对虾的理解只基于淡水、海水、近海，今天特地了解了对虾、基围虾、沼虾、河虾怎么区分。</p>
<p>对虾（Penacus orientalis），学名<a href="http://baike.baidu.com/view/631856.htm">东方对虾</a> ，又称<a href="http://baike.baidu.com/view/79239.htm">中国对虾</a> <b>、</b>斑节虾<b>。</b><a href="http://baike.baidu.com/view/89922.htm">节肢动物门</a> ，<a href="http://baike.baidu.com/view/58453.htm">甲壳纲</a> ，<a href="http://baike.baidu.com/view/671646.htm">十足目</a> ，对虾科，<a href="http://baike.baidu.com/view/771770.htm">对虾属</a> <b>。</b>对虾属个体大，通称<a href="http://baike.baidu.com/view/1236.htm">大虾</a> <b>。</b>雌性成长个体体长一般16～22厘米，重约50～80克，最大的可达30厘米，重250克；雄性较小，体长13～18厘米，重30～50克<b>。</b>对虾为广温<a href="http://baike.baidu.com/view/3358052.htm">广盐性</a> <a href="http://baike.baidu.com/view/621415.htm">海产</a> 动物<b>。</b>体呈长筒形，左右侧扁，身体分为头、胸和腹部，由20个体节组成。腹部较长，<a href="http://baike.baidu.com/view/14718.htm">肌肉</a> 发达，分节明显。</p>
<p>&#160;</p>
<h2>中国对虾</h2>
<p> <b>来源网址：</b> <a href="http://baike.baidu.com/link?url=FV-wXAtAZezbgcPnGrk8aUlAiUUa4p8ye7kdsC_LRlJYHXRpa0FZlqNunNxA58Z-">http://baike.baidu.com/link?url=FV-wXAtAZezbgcPnGrk8aUlAiUUa4p8ye7kdsC_LRlJYHXRpa0FZlqNunNxA58Z-</a><br />
<h4><b>对</b>虾[duì xi<b> </b>ā]</h4>
<h4>1<b> </b>形态特征</h4>
<p>对虾属于<a href="http://baike.baidu.com/view/89922.htm">节肢动物门</a> <b>、</b>有鳃亚门、<a href="http://baike.baidu.com/view/58453.htm">甲壳纲</a> 、软甲亚纲、<a href="http://baike.baidu.com/view/671646.htm">十足目</a> <b>、</b>游泳亚目、对虾科、<a href="http://baike.baidu.com/view/771770.htm">对虾属</a> 。<a href="http://baike.baidu.com/view/79239.htm">中国对虾</a> 是对虾属的主要种类之一，俗称“对虾”<b>。</b><sup>[1]</sup></p>
<p>对虾身体长而略侧扁，<a href="http://baike.baidu.com/view/705105.htm">雌雄异体</a> ，成体雌虾大于雄虾，体色也有所不同；<a href="http://baike.baidu.com/view/79239.htm">中国对虾</a> 雌虾体色灰青，雄虾体色发黄<b>。</b>对虾体外包被着一层几丁质的外骨骼甲壳，它由其下方的<a href="http://baike.baidu.com/view/720150.htm">表皮细胞</a> 分泌而成<b>。</b></p>
<p>对虾的身体可分为头胸部和腹部，共有21节构成。除最前和最后一节外，各节皆具一对附肢（图1）．</p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/c9d4cf43a4c01f5372f05d68.html"><img title="Image(2)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(2)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image2.jpg" width="224" height="163" /></a></p>
<p>对虾身体前部为<a href="http://baike.baidu.com/view/1813227.htm">头胸部</a> ，较粗短，由<a href="http://baike.baidu.com/view/129779.htm">头部</a> 6节与胸部8节愈合而成，共14节，分节不明显，覆盖头胸部的背面和两侧的一片坚硬的大甲壳，叫做头胸甲，它的前端中央有平直前伸<b>、</b>细长而尖利的额角，俗称虾枪或额剑，具有保护眼睛和防御敌害的作用。额角侧扁，上<b>、</b>下缘皆有短齿，呈锯齿状．对虾属中不同种短齿数有所不同，这是分类依据之一．</p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/8605f5f8097a751cd9f9fdee.html"><img title="Image(3)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(3)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image3.jpg" width="224" height="151" /></a></p>
<p>头胸甲的前端<b>、</b>额角的下方两侧有一对复眼，呈肾形，<a href="http://baike.baidu.com/view/393020.htm">眼柄</a> 能自由活动<b>。</b>口位于头部腹面的一对大颚之间，前方有一片半圆形的上唇，后方有两片并列的下唇，大颚被上、下唇覆盖．胸部两侧有鳃，着生于胸部<a href="http://baike.baidu.com/view/356339.htm">附肢</a> 基部及附近的体壁上．由头胸甲两侧包被而形成鳃腔<b>。</b></p>
<p>对虾身体的后部为腹部，较细长，由7节构成，分节很明显。前5节较短，第六节为最长<b>。</b>腹部自前到后逐节变细，量后一节很细，末端甚尖，称为尾节。肛门位于尾节腹面的基部．腹部各体节的背面及两侧均包被一比较坚硬的甲壳，前一片的后缘均覆于后一片之上：，相连处的甲壳薄而柔软，前后折叠，以便于体节的活动<b>。</b></p>
<p>对虾的附肢共19对，各部的附肢均由基肢、内肢和外肢构成，基本上为双肢型<b>。</b>由于各对<a href="http://baike.baidu.com/view/356339.htm">附肢</a> 的功能不</p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/35e940df363d05534854036a.html"><img title="Image(4)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(4)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image4.jpg" width="224" height="162" /></a></p>
<p>同，其形状与构造各异．如口器附肢主要在于抱持和咀嚼食物，其基肢发达：胸部附肢为捕食及爬行器官，内肢发达；腹部附肢功能在于游泳；其内<b>、</b>外肢均发达<b>。</b>对虾体节、附肢敷目、特点及功能表</p>
<h5>外部生殖器宫</h5>
<p>对虾的雌、雄两性均有构造特殊的交接器：雄性交接器由第一游泳足的内肢变形相连而构成，中部向背方纵行鼓起，似呈半管形；雌性交接器位于第四和第五对<a href="http://baike.baidu.com/view/1869123.htm">步足</a> 基部之间的膛甲上，开口内为纳精囊．纳精囊分为两种类型：封闭型纳<a href="http://baike.baidu.com/view/264780.htm">精囊</a> 呈囊状或袋状，用以储藏<a href="http://baike.baidu.com/view/21222.htm">精子</a> ，对虾属中的多数种类属此列，如<a href="http://baike.baidu.com/view/79239.htm">中国对虾</a> <b>、</b>日本对虾、<a href="http://baike.baidu.com/view/86230.htm">斑节对虾</a> 、<a href="http://baike.baidu.com/view/120205.htm">长毛对虾</a> 等，其中日本对虾的纳精囊为一囊状突起，开口向前；开放型纳精囊无囊状结构，如南美门对虾等<b>。</b></p>
<h4>2<b> </b>生态习性</h4>
<p>对虾可分定居型（如<a href="http://baike.baidu.com/view/112605.htm">日本对虾</a> <b>、</b>宽沟对虾、欧洲对虾等）和洄游型（如<a href="http://baike.baidu.com/view/79239.htm">中国对虾</a> <b>、</b>墨吉对虾、<a href="http://baike.baidu.com/view/120205.htm">长毛对虾</a> ），前一类栖于沿岸浅海，白昼常潜入沙底内，不作大范围的移动；后一类栖于<a href="http://baike.baidu.com/view/136516.htm">河口</a> 沿岸混浊海域，常作大范围的移动和洄游<b>。</b>对虾主要以底栖<a href="http://baike.baidu.com/view/3868.htm">无脊椎动物</a> 为食，如<a href="http://baike.baidu.com/view/417556.htm">多毛类</a> <b>、</b>小型甲壳类和双壳类软体动物等，有时也捕浮游动物。</p>
<p>主要分布于中国黄<a href="http://baike.baidu.com/view/45137.htm">渤海</a> 和<a href="http://baike.baidu.com/view/6395.htm">朝鲜</a> 西部沿海<b>。</b>中国的<a href="http://baike.baidu.com/view/2170.htm">辽宁</a> 、<a href="http://baike.baidu.com/view/4675.htm">河北</a> 、<a href="http://baike.baidu.com/view/4233.htm">山东</a> 省及<a href="http://baike.baidu.com/view/2828.htm">天津</a> 市沿海是对虾的重要产地<b>。</b></p>
<p>捕捞季节有春、秋两季，4～6月份为<a href="http://baike.baidu.com/view/1514099.htm">春汛</a> ；9～10月份为秋汛<b>。</b>10月中下旬为旺汛期。</p>
<h4>3<b> </b>生物系统</h4>
<p>对虾的<a href="http://baike.baidu.com/view/14718.htm">肌肉</a> 为横纹肌，构成强有力的肌肉束，分布于头部和腹部，以腹部肌肉最发达<b>。</b></p>
<p>口为消化道的开口。口后连一短的食道，食道的另一段与胃相连。胃分前、后两<a href="http://baike.baidu.com/view/697045.htm">部分</a> ：前部为一大囊，称贲门胃，内有许多儿丁质的小齿构成胃磨，行容纳和磨碎食物的功能；后部较小，称幽门胃．内有成对幽门板和无数刚毛．胃后为<a href="http://baike.baidu.com/view/3172908.htm">肠道</a> ，在其前端背面为肠盲囊．肠分为中肠和后肠，中肠细长，其末端连接后肠（<a href="http://baike.baidu.com/view/39591.htm">直肠</a> ），后肠在尾节基部腹面开口<b>。</b>即肛门。在幽门胃的后部、中肠前端两侧，有一对褐绿色的大消化腺，即<a href="http://baike.baidu.com/view/3018004.htm">肝胰脏</a> ，被一层结缔组织薄膜包成一团．</p>
<p>对虾的<a href="http://baike.baidu.com/view/1110583.htm">呼吸器官</a> 是鳃．鳃位于胸部两侧的鳃腔内<b>。</b>根据鳃着生部位的不同，鳃可分为<a href="http://baike.baidu.com/view/1684859.htm">肢鳃</a> 、侧鳃．足鳃、关节鳃等4种，共25对．</p>
<p>对虾的循环系统为开管式，由<a href="http://baike.baidu.com/view/21941.htm">心脏</a> <b>、</b><a href="http://baike.baidu.com/view/43285.htm">血管</a> 、<a href="http://baike.baidu.com/view/1374340.htm">血窦</a> 等构成．心脏为肌肉质扁平囊状物，位于胸部后端背方的</p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/dbf554ed03fd4594b21cb174.html"><img title="Image(5)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(5)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image5.jpg" width="224" height="128" /></a></p>
<p><a href="http://baike.baidu.com/view/3017317.htm">围心窦</a> 内<b>。</b>具4对心孔。由心脏发出7条动脉．每条动脉又分成许多微血管，开放到身体各部的组织间<a href="http://baike.baidu.com/view/1374340.htm">血窦</a> 内．血液无色，血浆内含有<a href="http://baike.baidu.com/view/1158662.htm">血蓝素</a> ，能携带氧气到组织中<b>。</b>血液在心脏的压迫下流人动脉，经微血管流入血窦，再汇集于胸部底面的胸血窦，然后经<a href="http://baike.baidu.com/view/1084471.htm">入鳃血管</a> 流入鳃内，通过鳃的呼吸进行<a href="http://baike.baidu.com/view/197009.htm">气体交换</a> ，新鲜的血液经<a href="http://baike.baidu.com/view/3351672.htm">出鳃血管</a> 流人鳃心血窦，最后流入<a href="http://baike.baidu.com/view/3017317.htm">围心窦</a> ，经心孔流回心脏<b>。</b>（5）排泄系统</p>
<p>对虾的排泄器官是位于大<a href="http://baike.baidu.com/view/345568.htm">触角</a> 基部的大<a href="http://baike.baidu.com/view/742095.htm">触角腺</a> ，由囊状腺体<b>、</b>薄壁膀胱和排泄管组成。腺体内的排泄物主要是胺盐，也含少量尿素和<a href="http://baike.baidu.com/view/371416.htm">尿酸</a> ，其水溶液呈绿色，故<a href="http://baike.baidu.com/view/742095.htm">触角腺</a> 又称<a href="http://baike.baidu.com/view/1700860.htm">绿腺</a> <b>。</b>触角腺可调节渗透压和<a href="http://baike.baidu.com/view/1956293.htm">离子平衡</a> 。</p>
<p>对虾的脑位于头部前端，由两个大的神经节合并而成<b>。</b>神经白脑分发到<a href="http://baike.baidu.com/view/309624.htm">复眼</a> 和两对触角，并有一对神经通向食道周围，构成食道神经环，其后以<a href="http://baike.baidu.com/view/1889951.htm">神经索</a> 向后贯穿于躯体的腹面中央<b>。</b>各体节均有分支神经通向附肢<b>、</b>肌肉和其他器官．</p>
<p><a href="http://baike.baidu.com/view/132337.htm">雌性生殖系统</a> 包括一对<a href="http://baike.baidu.com/view/32882.htm">卵巢</a> <b>、</b><a href="http://baike.baidu.com/view/66853.htm">输卵管</a> 和纳精囊<b>。</b>卵巢位于躯体背部，为并列对称的一对，呈叶状片，分为l对前叶，7对侧叶（中叶）和1对后叶。输卵管与卵巢第六侧叶相接，伸向腹面，开口于第三对<a href="http://baike.baidu.com/view/1869123.htm">步足</a> 基部内侧乳突上，即生殖孔，又称排卵孔<b>。</b></p>
<p><a href="http://baike.baidu.com/view/1997891.htm">雄性生殖系统</a> 包括一对精巢、<a href="http://baike.baidu.com/view/63286.htm">输精管</a> 和精荚囊<b>。</b>精巢位于躯体背部，围心窦下方，也是并列对称的1对，分为l对前叶、8对侧叶（巾叶）和1对短小的后叶，均紧贴在肝脏上面<b>。</b>精巢薄而透明，只在性<a href="http://baike.baidu.com/view/3687.htm">细胞</a> 成熟时呈半透明的微白色。精巢内有许多生精小管，由生精小管产生梢原细胞，经发育而成精于<b>。</b>输精管可分前、巾、后三段，前段细短，与精巢后叶相接；中段粗长而曲折，灰白色；后段细长，与精荚囊相接。精荚囊是一对膨大的囊状物，各自</p>
<p>位于第五足基部<b>。</b>精荚囊又接一短管，开口于第五足基部内侧乳突上，即生殖孔，又称排精孔。许多<a href="http://baike.baidu.com/view/21222.htm">精子</a> 在输卵管中段被管壁上所分泌的胶状物质包被，形成盘状的精小块，在精荚囊中，许多精小块被包成精荚<b>。</b></p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/7e7f790936c3daef3ac76304.html"><img title="Image(6)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(6)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image6.jpg" width="224" height="224" /></a></p>
<p>农业部发布的NY/T5059—2001无公害食品对虾养殖技术规范规定了对虾苗种培育<b>、</b>养成和病害防治技术，适用于我国主要的养殖对虾。<sup>[2]</sup></p>
<p><b>1、 清淤消毒</b></p>
<p>上造（季或茬）虾收获后，须及时刷洗池壁并将池水排干．进行清淤晒塘<b>。</b>必须彻底清除<a href="http://baike.baidu.com/view/1155017.htm">虾池</a> 内的<a href="http://baike.baidu.com/view/89617.htm">淤泥</a> 和杂物，对于池底污黑发臭的淤泥，尽量将其清除干净，并运至远离虾池的地方掩埋，以免给下造带来隐患<b>。</b>清淤后，须将虾池冲洗干净，直至没有黑色污水为止．并将脏水排干后进行晒塘，放苗前引进适量的干净<a href="http://baike.baidu.com/view/108288.htm">海水</a> 或淡水，选用特消灵<b>、</b><a href="http://baike.baidu.com/view/3002362.htm">二溴海因</a> 、溴氯海因等一些杀菌清野力较强，效果较佳的药物进行<a href="http://baike.baidu.com/view/218789.htm">池塘</a> 消毒<b>。</b>药液须均匀地泼洒在池水中，在没药液浸泡到的地方（包括池壁堤坝），应用工具将药液泼洒上去，然后浸泡池子数天<b>。</b>在浸泡期间，如有脏物漂浮水面，应在下午5点钟前将其捞出。数天后将药液排掉，检查池塘．如有生物残体遗留在池内，须将其清除干净，便可进水。进水时应在入<a href="http://baike.baidu.com/view/188043.htm">水口</a> 加上80～100目的过滤网片或网袋<b>。</b></p>
<p><b>2 、水体消毒及</b><a href="http://baike.baidu.com/view/2143132.htm">水质检测</a></p>
<p>当池子进水到需要的水位后（水位应根据不同季节而定），先检查水体是否带进轮虫和<a href="http://baike.baidu.com/view/1311763.htm">甲藻</a> （夜光藻）<b>、</b><a href="http://baike.baidu.com/view/41838.htm">夜光虫</a> 及检测盐度、ph值，如有轮虫<b>、</b>甲藻等，应选用既能杀灭轮虫、甲藻又能进行水体消毒的药物。如海水中不携带<a href="http://baike.baidu.com/view/763476.htm">轮虫</a> ，甲藻，应选用一些既能杀灭有害<a href="http://baike.baidu.com/view/19168.htm">细菌</a> ，而对<a href="http://baike.baidu.com/view/159230.htm">藻类</a> 又无杀伤力或杀伤力不大的<a href="http://baike.baidu.com/view/124427.htm">消毒</a> 剂，如<a href="http://baike.baidu.com/view/3002362.htm">二溴海因</a> <b>、</b>溴氯海因等进行<a href="http://baike.baidu.com/view/150061.htm">水体</a> 消毒。水体消毒后，再进行ph值和盐度测试，如果ph值达不到8.0以上，须泼人一定量的<a href="http://baike.baidu.com/view/828440.htm">石灰粉</a> ，提高ph值<b>。</b>如果是淤泥底质的，最好每亩再泼入50至80市斤的白云石粉或沸石粉，将淤泥覆盖改良。</p>
<p><b>3 <b>、</b>肥水</b></p>
<p>育藻<a href="http://baike.baidu.com/view/409269.htm">肥水</a> 是较重要的一个环节，切不可轻视，池水浮游生物的繁衍量是否达到要求．这和苗种早期的成活</p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/3a86813d27531f40bba16775.html"><img title="Image(7)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(7)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image7.jpg" width="224" height="166" /></a></p>
<p>率有着直接的关系<b>。</b>因此，要想虾苗成活率高，出高产，一定要进行肥水。早期肥水后的透明度应为30～40公分。斑节对虾（<a href="http://baike.baidu.com/view/977793.htm">青虾</a> <b>、</b>角虾）以褐色（茶色）为好，褐色水以角毛藻为主，可培育浮游动物供虾苗摄食。南美白对虾以黄绿色或绿色为好，要求水体清爽<b>。</b>在此提供几个肥水方法供参考（以1米水深计）：</p>
<p>（1）活水素（微生物肥料）：每亩1公斤，兑水泼洒<b>。</b></p>
<p>（2）清水素（枯草杆菌）：每亩350～400克，兑水泼洒。</p>
<p>（3）茶麸：土池每亩3～4公斤，沙质池6～7公斤，护坡池8～10公斤<b>。</b>浸泡4～7天，过滤去渣，兑水后均匀泼洒。<a href="http://baike.baidu.com/view/205816.htm">磷酸二氢钠</a> 或磷酸二氢钾：每立方水体10克，兑水后均匀泼洒。复合肥：每亩2～3公斤，隔1～2天后再每亩1公斤，兑水后均匀泼洒<b>。</b></p>
<p><b>4、 苗种选择</b></p>
<p>虾苗的选择也是对虾养殖成败的关键之一<b>。</b>因此，必须慎重选用经检测、无携带病毒和有害细菌的健康苗种<b>。</b>下面提供直观的选择方法供参考：</p>
<p>斑节对虾（青虾、角虾）苗：必须选用1.1cm以上，个体大小均匀，体表干净，体色正常，无附着物，游动活泼，能逆水游动，虾体成一直线，游动时两眼张开，不游动时两眼和尾叶一会张开，一会闭合<b>。</b></p>
<p>南美白对虾（白虾）苗：体长0.9～1.0cm以上，体色透明度高．个体差异不大．<a href="http://baike.baidu.com/view/3854725.htm">胃饱满度</a> 好<b>、</b>食欲强、游动活泼、逆水游动力强、体表干净<b>、</b>色泽一致、体宜、头大身小。</p>
<p><b>5 <b>、</b>苗种运输及下池前消毒措施</b></p>
<p>苗种运输过程中，特别是距苗场较远的养殖场，在运输途中难免会有损失和降低虾苗的活力<b>。</b>为确保苗种的<a href="http://baike.baidu.com/view/2197216.htm">成活率</a> 和活力，降低死亡率，在苗种装包前，预先在装包盛水用的大桶（0<b>.</b>3m<sup>3</sup>）水体中加入100克免疫多糖或30～50克的g—d生命素（只选用其中一种），搅拌均匀，冲气，再用该桶内的水盛苗装包<b>。</b>回到养殖场后，配好消毒液[强克101{超碘季胺盐），半亩方水用量0<b>.</b>5～1克，浸泡半小时]进行苗种消毒再投苗入池。</p>
<p><b>6 、设置饲料观察台及增氧机</b></p>
<p>每个虾池最好能在东西南北中各设置一个饲料观察台<b>。</b>饲料台的设置有利于观察对虾的摄食情况及饲料的投放多寡。通过饲料台的观察可了解和掌握对虾的胃饱满度、饲料投放是多是少及对虾<a href="http://baike.baidu.com/view/42357.htm">粪便</a> 情况和对虾的分布情况，以便决定下餐<a href="http://baike.baidu.com/view/135183.htm">饲料</a> 投放是增还是减及某一部分的投放量<b>。</b></p>
<p><a href="http://baike.baidu.com/view/941436.htm">增氧机</a> 的配套，一般每亩匹配1匹，放苗<a href="http://baike.baidu.com/view/38960.htm">密度</a> 超过6万尾的，应每亩配1匹以上的增氧机<b>。</b>增氧机的匹配最好是采用叶轮式<b>、</b>潜水式和<a href="http://baike.baidu.com/view/273745.htm">纳米管</a> 三种机种配套，效果更佳。增设增氧机不但可避免对虾缺氧浮头，还可改善水环境，激活水况<a href="http://baike.baidu.com/view/640633.htm">因子</a> <b>。</b></p>
<p>1选址：无污染的泥质或砂质荒滩、<a href="http://baike.baidu.com/view/41585.htm">盐碱地</a> 及适于养殖的<a href="http://baike.baidu.com/view/59742.htm">沿海地区</a> 均可<b>。</b></p>
<p><a href="http://baike.baidu.com/albums/21682/21682/1/186088.html#186088$"><img title="Image(8)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(8)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image8.jpg" width="224" height="201" />6</a></p>
<p><a href="http://baike.baidu.com/albums/21682/21682/1/186088.html#186088$">对虾</a></p>
<p>2水环境：海水水源应符合GB11607的要求，养成<a href="http://baike.baidu.com/view/296465.htm">水质</a> 应符合NY5052的要求<b>。</b>养殖取水区潮流应通畅<b>。</b></p>
<p>①养成池。<a href="http://baike.baidu.com/view/330540.htm">滩涂</a> 大面积养虾池，长方形，面积1～7公顷，池底平整，向排水口略倾斜， </p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/c2bce20378d518c8d53f7c76.html"><img title="Image(9)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(9)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image9.jpg" width="224" height="169" /></a></p>
<p>比降0<b>.</b>2%左右，做到池底积水可排干。养成池底不漏水，必要时加防渗漏材料<b>。</b>养成池相对两端设进、排水设施。高密度精养方式的养殖池分为泥砂质池塘和水泥池，面积0.1～1公顷，方形或圆形，池水深1<b>.</b>5～2.5米，池中央设排污孔。</p>
<p>②养成池配套设施。在<a href="http://baike.baidu.com/view/41467.htm">潮间带</a> 建虾池，需修建防浪主堤<b>。</b>主堤应有较强的抗风浪能力，一般情况下堤高应在当地历年最高潮位1米以上，堤顶宽度应在6米以上，迎海面<a href="http://baike.baidu.com/view/762866.htm">坡度</a> 宜为1∶3～5，内坡度宜为1∶2～3<b>。</b>蓄水池应能完全排干，水容量为总养成水体的1/3以上<b>。</b>采用循环用水方式，养成池的水排出后，应先进入处理池，经过净化处理后，再进入蓄水池。不采用循环用水，养成后的废水，也应经处理池后，方可排放<b>。</b>在集中的对虾养成区，需要建设进、排水渠道，协调各养成场<b>、</b>养成池的进、排水，进水口与排水口尽量远离。排水渠的宽度应大于进水渠，排水渠底一定要低于各相应虾池排水闸底30厘米以上。对高密度精<a href="http://baike.baidu.com/view/1169735.htm">养和</a> 蓄水养殖的养虾方式，应配备增氧设备，土池可用增氧机，水泥池可用冲气泵和鼓风机<b>。</b>在滩涂蟹类比较多的地区，应在养成池堤围置30～40厘米高而光滑的塑料膜或薄板防蟹隔离墙。</p>
<p>1清污整池：收虾之后，应将养成池及蓄水池<b>、</b>沟渠等积水排净，封闸晒池，维修堤坝、闸门，并清除池底的污物杂物，特别要清除杂藻<b>。</b>沉积物较厚的地方，应翻耕曝晒或反复冲洗，促进有机物分解排出。不得直接将池中污泥搅起，直接冲入海中。</p>
<p>2消毒除害：清污整池之后，应清除对虾的敌害生物、致病生物及携带病源的中间宿主<b>。</b>常用<a href="http://baike.baidu.com/view/460260.htm">生石灰</a> 进行清池除害，将池水排至30～40厘米后，全池泼洒生石灰，用量为1000公斤/公顷左右<b>。</b></p>
<p>3纳水繁殖基础饵料：清污整池消毒结束1～2天后，可开始纳水，培养基础生物饵料<b>。</b></p>
<p>4肥料使用：肥料使用应遵循下列原则：①应平衡施肥，提倡使用优质有机肥<b>。</b>施用<a href="http://baike.baidu.com/view/70897.htm">肥料</a> 结构中，有机肥所占比例不得低于50%；②应控制肥料使用总量，水中硝酸盐含量在40毫克/升以下；③不得使用未经国家或省级农业部门登记的化学或生物肥料，有机肥应经过充分发酵方可使用<b>。</b></p>
<p>1放苗环境：放苗时，池水深为60～80厘米，池水透明度达40厘米左右。大风<b>、</b>暴雨天不宜 </p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/58af236d07697cbb42169470.html"><img title="Image(10)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(10)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image10.jpg" width="224" height="218" /></a></p>
<p>放苗。</p>
<p>2苗种规格：<a href="http://baike.baidu.com/view/80037.htm">南美白对虾</a> 苗0<b>.</b>7厘米以上，中国对虾苗1厘米以上，斑节对虾苗1.3～1.5厘米以上。</p>
<p>3放苗密度：滩涂大面积养虾池，放苗密度以（6～10）×10<sup>4</sup>尾/公顷为宜；高密度精养方式的养殖池，放苗密度以（25～50）×10<sup>4</sup>尾/公顷为宜<b>。</b></p>
<p><a href="http://baike.baidu.com/view/200606.htm">水温</a> ：放养中国对虾苗水温应达14℃以上，放养南美白对虾<b>、</b>斑节对虾苗水温应在22℃以上<b>。</b></p>
<p>5盐度：池水盐度应在1～32。虾苗培养池、中间培育池和养成池水<a href="http://baike.baidu.com/view/94121.htm">盐度</a> 差应小于5，池水盐度相差大于5时，可通过驯化虾苗使之适应盐度的变化，通常24小时内逐渐过渡的盐度差小于10<b>。</b></p>
<p>1水环境控制：①进水<a href="http://baike.baidu.com/view/1764387.htm">水质管理</a> 。放苗前，向养成池注入清洁或经消毒清野处理的养成用水。在放苗后，养成用水要经过蓄水池沉淀<b>、</b>净化处理。②水量及水交换。养成前期，每日添加水3～5厘米，直到<a href="http://baike.baidu.com/view/186505.htm">水位</a> 达1米以上，保持水位。养成中后期，根据水质情况，如透明度过低（低于20厘米），或透明度较大（大于80厘米），有害的单细胞藻过量繁殖时，酌情换水，采取缓慢换水的方式，调节水质<b>。</b></p>
<p>2饲料管理：①饲料品质。配合饲料质量和安全卫生应符合SC2002和NY5072的规定<b>。</b>②饲料投喂量。常规配合饲料日投喂率为3%～5%，鲜杂鱼日投喂率为7%～10%<b>。</b>实际操作中应根据对虾尾数、平均体重、体长及日摄食率，计算出每日理论投饲量，再根据摄食情况、天气状况，确定当日投喂量<b>。</b>投饲后，继续观察对虾摄食情况，对投饲量进行调整。③配合饲料的投喂方法。放苗后的初期，通常日投喂4次，以后随着对虾增长，投饲料量加大，调整每日投喂次数，下午以后的投喂量约占全天投喂量的60%左右<b>。</b>养成初期，对虾活动范围小，应全池均匀投喂。随着对虾的生长，可选择对虾经常聚集处投喂。</p>
<p>3测定：每日测量水温<b>、</b><a href="http://baike.baidu.com/view/43019.htm">溶解氧</a> 、<a href="http://baike.baidu.com/view/23974.htm">pH值</a> 、透明度、池水盐度等水质要素<b>。</b>经常检测池内浮游生物种类及数量变化，有条件者可检测氨、氮等其他水质要素的变化。每5～10天测量一次对虾生长情况。可测量对虾体长，也可测量体重，每次测量尾数应大于50尾<b>。</b>定期估测池内对虾尾数，室外大型养虾池，可用旋网在池内多点打网取样测定。</p>
<ol>
<li>
<p>巡池：养虾人员应每日凌晨及傍晚各巡池一次，注意清除养虾池周围的蟹类<b>、</b>鼠类，注意发现病虾及死虾，检查病因、死因，及时捞出病虾<b>、</b>死虾进行处理。观察对虾活动及分布，观察对虾摄食及饲料利用情况。</p>
</li>
<li>
<p>切断病原：不得纳入其他死虾池及发病虾池排出的水，不得投喂带有病原的饵料<b>。</b></p>
</li>
<li>
<p>病原生物检测：定期对虾池中的病原生物进行检测<b>。</b></p>
</li>
<li>
<p>药物使用：药物使用应符合NY5071的要求，掌握以下原则：①使用的渔药应“三证”（渔药登记证<b>、</b>渔药生产批准证、执行标准号）齐全；②应使用高效、低毒<b>、</b>低残留药物，建议使用生态制剂。不得使用含有<a href="http://baike.baidu.com/view/344072.htm">有机磷</a> 等剧毒农药清池消毒。</p>
</li>
</ol>
<p>对虾冬棚养殖后期水质管理与调控</p>
<h5>科学投喂饲料</h5>
<p>冬季养虾<a href="http://baike.baidu.com/view/95835.htm">光照</a> 弱<b>、</b>水温低、饵料生物生长差，天然饵料少，南美白对虾生长主要依赖人工配合饲料，对虾的摄食量又比正常季节要少，因此，科学的投饵既能满足南美白对虾快速生长的要求，又不致于影响水体环境<b>。</b>要求选用质量好的名牌对虾饲料，最好选择水中稳定性好、全熟化沉性颗粒虾料。投饵量要根据天气<b>、</b>水温、水质、虾的密度以及虾实际的摄食量等因素，及时调节，严格控制，要坚持“少量多次、日少夜多，水温高多投<b>、</b>反者少投，均匀投喂”原则。及时检查饵料残饵的情况，加以调整投饵量。一般控制70～80%的对虾虾群饱食，池底无残料为原则。这样可保持池水水质<b>、</b>减少污染，又能保证南美白对虾生长，降低饲料系数，降低成本。</p>
<p>如果对虾人工配合饲料质量差，水中易溶解或<a href="http://baike.baidu.com/view/1590784.htm">浸出物</a> 多，会造成水质极度污染<b>。</b>对虾摄食质量差的饲料其消化吸收差，粪便多，严重污染虾池底质、水质，引起水质逐渐变坏，引发对虾出现一系列疾病<b>。</b></p>
<p>为了科学、准确掌握投喂饲料的数量，除了计算对虾摄食量之外，还需加强观察检查，冬棚每个养虾池要设3-4缯网，定时详细观察虾的摄食和生长情况，根据缯网有无残饵<b>、</b>虾胃饱满程度及虾粪多少与长短等综合判断，调节饲料量，才能真正做到准确的投料。</p>
<h5>调控虾池水色</h5>
<p>冬棚几乎是封闭状态，水环境如温度<b>、</b><a href="http://baike.baidu.com/view/95835.htm">光照</a> 、气压等与自然环境有很大不同，经常出现虾池内水色、水质、pH值等因子不稳定<b>。</b>而池水的氨氮、<a href="http://baike.baidu.com/view/151075.htm">亚硝酸盐</a> 、<a href="http://baike.baidu.com/view/149186.htm">硫化氢</a> 等有害物质偏高，影响到南美白对虾生长、甚至导致养殖失败，如何保持池中优良<a href="http://baike.baidu.com/view/159230.htm">藻类</a> 的生长，维持良好的水色<b>、</b>水质，是南美白对虾冬棚养殖成功的关键。</p>
<p>由于冬棚养殖时间较长，投饵和对虾排泄物使虾池的残饵<b>、</b>粪便等有害的物质积累增多。且冬季阳光<a href="http://baike.baidu.com/view/95835.htm">光照</a> 弱，水中浮游植物差，难于消耗水中有害物质，水体环境平衡发生变化，常出现水色的种种变化，对虾易出现不正常状态，因此，在养殖后期应该加强监测，做到心中有数，并采取有效的措施调控水质，使对虾健康生长<b>。</b>常见不正常的水色有：</p>
<p>水色发暗或浑浊等现象 在<a href="http://baike.baidu.com/view/5778717.htm">淡水区</a> 冬棚养虾，对虾饲料投放过量或<a href="http://baike.baidu.com/view/1590784.htm">浸出物</a> 多，虾池水质过肥，水中绿藻及<a href="http://baike.baidu.com/view/4581.htm">蓝藻</a> 大量繁殖，多出现深绿色或暗绿色水色<b>。</b>如果<a href="http://baike.baidu.com/view/364300.htm">蓝绿藻</a> 大量繁殖，池水透明度低，可用漂白粉0<b>.</b>5～1克/米<sup>3</sup>加以杀除<a href="http://baike.baidu.com/view/697045.htm">部分</a> 藻类，但一定要准确用量，以免藻类大量死亡影响虾池水质<b>。</b>当有些<a href="http://baike.baidu.com/view/159230.htm">藻类</a> 大量生长，水中必需微量元素缺乏，影响到其他藻类无法正常繁殖生长，因而出现藻类老化<b>、</b>死亡，或者因用药不当，使用某些<a href="http://baike.baidu.com/view/1022503.htm">消毒药</a> 杀死藻类，产生<a href="http://baike.baidu.com/view/5796267.htm">水质老化</a> ，水色变浑浊现象时，可适量使用有益微生物如利生素<b>、</b>利生活菌<b>、</b><a href="http://baike.baidu.com/view/60970.htm">光合细菌</a> 、EM菌、<a href="http://baike.baidu.com/view/3854624.htm">单细胞藻类</a> 生长素及池底净等加以调控，促进有益藻类和有益菌群的繁衍，抑制有害的微生物的滋生<b>。</b>另外，需适当增氧。冬棚内气压低，空气不流通，使用叶轮式增氧或水车式增氧机效率不高，应采用底部增氧与水面增氧相结合，以底部增氧为主，使虾池底增加较多<a href="http://baike.baidu.com/view/48978.htm">氧气</a> ，有利于有益微生物形成优势种群，抑制厌氧细菌的滋生，稳定水质，利对虾生长<b>。</b></p>
<p>池水“<a href="http://baike.baidu.com/view/4189657.htm">倒藻</a> ”变清 此现象多发生冬棚养殖中期，藻类突然死亡，池水突然变清，亦是藻类老化所致<b>。</b>或者由于对虾饲料投放过量或<a href="http://baike.baidu.com/view/1590784.htm">浸出物</a> 多，使虾池水色变成暗红色或变浑浊，降低水中透明度，加上冬季光照强度较弱，<a href="http://baike.baidu.com/view/3830327.htm">浮游藻类</a> 难繁殖所致<b>。</b>如果未搭冬棚前水色良好，搭冬棚后光照强度减弱，<a href="http://baike.baidu.com/view/159230.htm">藻类</a> 生长不良，也容易发生此情况<b>。</b>因此，可以在冬季养虾过程定期施有益<a href="http://baike.baidu.com/view/3715094.htm">微生物制剂</a> 。如果池水突然变清，要马上施用有益微生物和水质<b>、</b>底质改良剂，防止“泛底”，然后再注入新水或换水5～10%、施<a href="http://baike.baidu.com/view/3854624.htm">单细胞藻类</a> 生长素等一些无机肥，把<a href="http://baike.baidu.com/view/241868.htm">水色</a> 培养起来<b>。</b>但施肥要减少<a href="http://baike.baidu.com/view/53491.htm">磷肥</a> 用量，避免<a href="http://baike.baidu.com/view/364300.htm">蓝绿藻</a> 大量繁殖<b>。</b></p>
<h4>6<b> </b>处理方案</h4>
<p>处理水变最直接、最有效的办法就是换水，应一边加注新水，一边抽出底水；</p>
<p>在处理水变过程中，主要把抗药型光合细菌和沸石粉混合剂，“高能速氧”结合使用<b>。</b>首先抗药型光合细菌和沸石粉混合后，可起吸附氨、氮和腐败有机质等有毒因子的作用，用量分别为2ppm～4ppm、5<b>.</b>6ppm～10ppm，在18～24小时内除去水体中有害氮可达40%～56%，且使用以上混合剂用量与除氮的作用成正比<b>。</b>使用“高能速氧”是为了向水体中补氧<b>。</b>“高能速氧”可降低有害因子对对虾的毒性，增加池塘对虾抗病能力，同时也能降低分子氨、亚硝酸盐的浓度。池塘使用6ppm的“高能速氧”48小时后对氨氮的消除率为42%～77%。<sup>[3]</sup></p>
<p>水变的原因如果是有机物过多造成的，可用2<b>.</b>5ppm“水清”全池泼洒，把所有的悬浮物凝聚沉淀后再用“氯宝抛洒剂”抛洒，杀灭水底层浮游动植物，调节水质<b>。</b>其次，肥水是水变处理后必须采取的一个主要措施<b>。</b>水质处理完后，可施“肥水素”肥水。因为水变后水体中总氮含量均偏高，调节水体氮、磷比有利于浮游植物的生长，同时也降低了水体中氮的浓度，使水体实现生态平衡，达到肥水的目的。</p>
<p>池水调控<sup>[4]</sup></p>
<p>1<b>、</b>池水<a href="http://baike.baidu.com/view/151075.htm">亚硝酸盐</a> 的调控 在冬棚养虾后期，由于残饵、虾粪便积累增多，池底有机物多，如果水中亚硝酸盐上升到0<b>.</b>1毫克/升以上，对虾会产生慢性中毒。即使池中溶氧充足，对虾也会出现水面浮游呈现病态，回转浮动或紧靠浅水岸边游泳<b>。</b>当虾池水中亚硝酸浓度达到0.25毫克/升以上，虾体发红，摄食量下降，呼吸困难，狂燥或反应迟钝，甚至死亡，处理措施：（1）加大增氧量；（2）使用生态制剂，如：活水素EM菌<b>、</b>加强型利生素等，以及生态护水灵，绿威王等。</p>
<p>2<b>、</b>调控水中氨氮 当虾池水中氨氮超过0.2毫克/升，对虾食料降低，生长速度下降，对环境适应力及疾病的抵抗力减弱，严重时出现池边浮头<b>。</b>遇到池水氨氮偏高时：（1）增大充气量，适当换水；（2）使用水质改良剂，如解毒王、氨氮净等；（3）同时使用益菌王<b>、</b><a href="http://baike.baidu.com/view/60970.htm">光合细菌</a> 或丰虾宝，可快速降低有益微生物氮；（4）使用底质改良剂、绿水宝<b>、</b>沸石粉也均可降低水中氨氮。</p>
<p>3<b>、</b>pH值偏低或偏高 冬棚养虾后期由于虾池底质有机物积累增多，往往池底及池水变酸，出现pH值偏低，导致对虾生长不良，甚至出现软壳或成活率降低<b>。</b>处理的方法：（1）适当施熟石灰或海中宝加以调节；（2）施少量无机肥<b>、</b>繁殖池中浮游植物，可使池水pH提高；（3）使用藻类再生剂处理。</p>
<p>冬棚养殖南美白对虾，有时也会出现pH值偏高（pH9<b>.</b>2以上）现象，或者一天当中pH值变化幅度大。处理方法：（1）适当换水，注入新水；（2）使用降碱灵或降氨灵或（黄）豆浆2<b>.</b>5～3.0千克/亩·米混合使用，效果明显。冬棚养虾可用食用醋全池泼洒，立即见效。</p>
<p>4<b>、</b><a href="http://baike.baidu.com/view/149186.htm">硫化氢</a> 过高 硫化氢主要来自水中的生物尸体、饲料中的蛋白质、残饵等。当池底<a href="http://baike.baidu.com/view/861629.htm">溶氧量</a> 不足时，这些含硫有机物在缺氧条件下，<a href="http://baike.baidu.com/view/1920693.htm">厌氧</a> 细菌分解产生毒性甚强的<a href="http://baike.baidu.com/view/149186.htm">硫化氢</a> ，在水中积累到一定数量，池底泥土变成黑色产生腐臭味，尤其在pH低时，水温较高时更易形成<b>。</b>在水中<a href="http://baike.baidu.com/view/149186.htm">硫化氢</a> 浓度达到0.1～0.2毫克/升时，南美白对虾身体失去平衡，当浓度为4.0毫克/升时，南美白对虾立即死亡<b>。</b>调控的方法：（1）合理准确的投饲料量；（2）施含铁的矿渣、<a href="http://baike.baidu.com/view/460260.htm">生石灰</a> 或水质<b>、</b>底质改良剂，施平炉渣或铁矾上渣，每亩施50～100千克净化底质，有明显效果；（3）施<a href="http://baike.baidu.com/view/432896.htm">硝化菌</a> <b>、</b><a href="http://baike.baidu.com/view/582501.htm">硫磺菌</a> 、酵母菌等有益<a href="http://baike.baidu.com/view/3715094.htm">微生物制剂</a> ，使<a href="http://baike.baidu.com/view/149186.htm">硫化氢</a> 转化，去除有明显作用；（4）通过增氧<b>、</b>投放增氧剂，换水等措施减少危害。</p>
<p>虾池中各种有害的物质多，最有效的方法，是收获虾之后彻底清除虾池的<a href="http://baike.baidu.com/view/89617.htm">淤泥</a> <b>、</b><a href="http://baike.baidu.com/view/416969.htm">污泥</a> 、曝晒、投放底质改良剂，使用各种消毒剂或有益微生物<b>。</b>用量参考说明书的用量，并结合虾池的具体情况，准确决定使用量，才能行之有效。</p>
<p><b>四</b>、调节虾池水温</p>
<p><a href="http://baike.baidu.com/view/80037.htm">南美白对虾</a> 要在水温20℃以上才能正常生长<b>。</b>水温16℃时摄食大量减少，水温低于12℃南美白对虾基本不摄食，而且易冻伤，甚至冻死。体长小于8cm的南美白对虾更易冻伤。被冻伤的虾活力较弱，弹跳无力，不摄食，体色偏深，不正常，通常体色偏红，体表有大量黑点<b>。</b>虾壳软，<a href="http://baike.baidu.com/view/14718.htm">肌肉</a> 不饱满，用手触摸体表较粗糙。<a href="http://baike.baidu.com/view/3018004.htm">肝胰脏</a> 偏红，肠道变细，要养殖成功的难度大<b>。</b></p>
<p>冬棚养虾保持较稳定水温20～25℃，是养殖成功的重要条件。因此，要求水深2m左右，冬棚要牢固<b>、</b>不漏风。后期冬棚养虾由于养殖时间较长，底质、水质污染较严重，水质容易发生变化，要求经常详细检查（注意冬棚破洞有漏风现象，使水温变化激烈），南美白对虾才能顺利健康生长<b>。</b>3月份之后寒潮减弱，气温逐渐升高，水温随之增高，在晴天光照强、气温高时应掀起冬棚两边的通风口，使空气对流。棚内空气新鲜，可以避免冬棚内长期处于低压状态，而造成对虾应激或各种病害发生<b>。</b>同时要加大增氧量，使水质新鲜，有利对虾后期生长。</p>
<h4>7<b> </b>育苗技术</h4>
<p><a href="http://baike.baidu.com/view/109083.htm">山东半岛</a> 6月份的水温提升较快，各种病原菌<b>、</b>寄生虫等繁殖旺盛，刺参幼体免疫力较弱，导致病害频发，而5月份水中敌害生物较少，可减少其对刺参幼体的危害<b>。</b>鉴于此，参虾结合育苗技术应运而生并走向成熟，其借助对虾育苗的多种有利条件，采用亲参室内升温、促熟的方法来培育稚参，既可降低成本，又能提高稚参的成活率。</p>
<h5>利用育虾升温</h5>
<p>对虾育苗自3月中旬就可开始，此时将亲参采捕入池，头3天不升温，待其生活稳定后，每日升温0<b>.</b>5℃～1℃，当温度升至13℃～16℃时恒温培育，直至采卵前7天～10天再继续升温。5月上旬，亲参的性腺能够成熟<b>。</b></p>
<p>利用育虾升温水培育刺参幼体饵料</p>
<p>金藻是对虾幼体<b>、</b>刺参浮游幼体的优良开口饵料，培养温度以18℃～28℃为宜。另外，还应培养盐藻、新月菱形藻<b>、</b>牟氏角毛藻等以供刺参浮游幼体食用。盐藻适温范围为25℃～35℃，新月菱形藻为15℃～20℃，牟氏角毛藻为25℃～30℃<b>。</b></p>
<p>底栖硅藻能促进稚参附着及生长发育，藻种选择处于指数生长期的卵形藻或聚生舟形藻，用波纹板组装的附着器提早接种2次～3次，光照控制在1000Lx～2000Lx，升温水保持在19℃～23℃，微充气，勤换水<b>。</b></p>
<p>利用育虾升温水培育刺参幼体刺参</p>
<p>浮游幼体<b>、</b>稚参的最适培育水温范围分别为18℃～22℃、19℃～23℃<b>。</b>5月中下旬，自然海水的平均水温在 14℃～16℃之间，因此该育苗阶段采用育虾升温水对刺参幼体进行培育，温度控制在20℃～22℃，一方面幼体长得快<b>、</b>齐<b>、</b>健康，另一方面节约了能源成本。</p>
<p>6月前后，伴随对虾育苗的结束，对虾育苗所用的水体转向饲育稚参，可提高育苗场的利用效率<b>。</b>通过扩大稚参培育水体，降低稚参的养殖密度，将加快稚参的变色速度，降低疾病的爆发几率，促进稚参的迅速长大，提高稚参的养殖效益<b>。</b><sup>[5]</sup></p>
<h4>8<b> </b>烹饪方法</h4>
<p>1<b>.</b> 整只对虾的烹调方法有红烧、油炸<b>、</b>甜烤，加工成片、段后，可熘、炒、烤<b>、</b>煮汤，制成泥茸，可制虾饺、虾丸；</p>
<p>2. 色发红、身软<b>、</b>掉拖的虾不新鲜尽量不吃，腐败变质虾不可食；虾背上的<a href="http://baike.baidu.com/view/558890.htm">虾线</a> 应挑去不吃。</p>
<p>主料：对虾1000克</p>
<p>调料：姜25克 小葱25克<a href="http://baike.baidu.com/view/316955.htm">料酒</a> 15克<a href="http://baike.baidu.com/view/21334.htm">味精</a> 2克 盐10克 胡椒粉3克 香油35克 白砂糖30克 </p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/30ecd5efe79a8576adafd571.html"><img title="Image(11)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(11)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image11.jpg" width="224" height="176" /></a></p>
<p>1<b>.</b> 葱去根须，洗净，切丝；</p>
<p>2. 姜洗净，切丝；</p>
<p>3<b>.</b> 将<a href="http://baike.baidu.com/view/1236.htm">大虾</a> 去头须划水，去掉沙肠；</p>
<p>4. 取煸锅上火烧热，注入少许香油，将大虾下锅两面煎红；</p>
<p>5<b>.</b> 投入葱姜丝一半，放料酒、盐<b>、</b>胡椒粉、味精、少许白糖、清水；</p>
<p>6<b>.</b> 大火烧开后用小火烤7～8 分钟，将大虾摆入盘中；</p>
<p>7. 原汁上火，收汁再放入少许白糖，投入另一半葱，姜丝，烧煮；</p>
<p>8<b>.</b> 汁收浓时淋少许香油，浇在大虾上即可。</p>
<p>主料：对虾500克</p>
<p><a href="http://baike.baidu.com/view/341750.htm">配料</a> ：黄芪30克 酸枣仁30克</p>
<p>调料：盐2克 黄酒5克 大葱5克 姜5克</p>
<p>1<b>.</b><a href="http://baike.baidu.com/view/30028.htm">黄芪</a> 、酸枣熬成药液。</p>
<p>2. 虾去须<b>、</b>爪，放入盛器内，加入芪枣药液、盐、料酒、葱段<b>、</b>姜片，蒸熟即可。</p>
<p>主料：对虾600克</p>
<p>调料：大葱10克 姜8克 盐6克 大蒜（白皮）7克 白砂糖25克 料酒25克 猪油（炼制）50克 胡麻油20克</p>
<p>1<b>.</b> 大虾洗净，去掉爪、须及虾枪，去掉沙包<b>、</b><a href="http://baike.baidu.com/view/1614833.htm">沙线</a> ，洗净；2. 炒勺加入热猪油，烧热后将6 只大虾并排放入，一边用热油煎，一边用手勺偏，让虾身直接接触到勺底；3<b>.</b> 先后将两面虾身皮煎出黄嘎，头部用手勺压出虾黄；4. 再将葱丝<b>、</b>姜丝、蒜片放入，煎出香味；5. 烹入调料，添<a href="http://baike.baidu.com/view/30770.htm">高汤</a> ，加盖慢火煨；6. 待大虾将入味，汤汁浓后，改用旺火收汁；7<b>.</b> 将主料摆放盘中。余汁淋花椒油，浇在虾身上即成。</p>
<p>主料：对虾500克</p>
<p><a href="http://baike.baidu.com/view/341750.htm">配料</a> ：竹笋10克 香菇（鲜）10克 番茄50克 青椒50克</p>
<p>调料：大蒜（白皮）5克 大葱5克 鸡蛋清10克 油皮5克 白砂糖5克 料酒5克 淀粉（豌豆）5克 味精1克 植物油70克</p>
<p>1<b>.</b> 虾剥去头、壳、尾，洗净，用干毛巾压干水份，用刀从虾背中间片一刀（不要片断）取出<a href="http://baike.baidu.com/view/5310948.htm">汤泥</a> ，在二侧再各片一刀，待用；</p>
<p>2<b>.</b> 竹笋、香菇、<a href="http://baike.baidu.com/view/7863.htm">西红柿</a> 、青椒切菱形片，葱白切马蹄形，大蒜头剁末；</p>
<p>3<b>.</b> 蛋清和干淀粉调蛋清浆，将虾上浆；</p>
<p>4. 精盐、白糖、料酒<b>、</b>味精、湿淀粉、上汤调匀成卤汁待用；</p>
<p>5. 锅置旺火上，下油烧五成热时，将上浆的虾倒入，用筷子扒散，虾肉卷成球并变色后用漏勺捞起，沥干；</p>
<p>6<b>.</b> 锅留余油，再置旺火上，倒入香菇、竹笋等<a href="http://baike.baidu.com/view/341750.htm">配料</a> ，翻炒几下，注入调好的卤汁，倒入过油的虾球，翻炒几下即成<b>。</b></p>
<p>类别：家常菜 补虚养身食谱 壮腰健肾食谱 补阳食谱 阳痿早泄食谱</p>
<p>口味：咸酸味 食用：中餐<b>、</b>晚餐</p>
<p>主料：对虾250克<a href="http://baike.baidu.com/view/56533.htm">鱿鱼</a> （鲜）250克</p>
<p>辅料：<a href="http://baike.baidu.com/view/7884.htm">柠檬</a> 50克</p>
<p>调料：盐3克 味精1克 料酒20克<a href="http://baike.baidu.com/view/344069.htm">色拉油</a> 20克 淀粉（玉米）10克</p>
<p>烹饪方法： 1<b>、</b> 将柠檬切成片，铺在盘中；</p>
<p>2、将鲜鱿鱼切成花刀，和对虾一起放入盛有精盐<b>、</b>味精、料酒的碗中<a href="http://baike.baidu.com/view/1293358.htm">腌渍</a> 2分钟；</p>
<p>3、把鱿鱼包在竹节虾外面，摆在柠檬上，入蒸锅用旺火蒸5分钟取出；</p>
<p>4、 将<a href="http://baike.baidu.com/view/3007397.htm">炒锅</a> 置于旺火上，放入色拉油，倒入清汤（200克）烧开，用湿淀粉勾芡，淋在对虾上即可<b>。</b><sup>[6]</sup></p>
<p>原料：虾二对，<a href="http://baike.baidu.com/view/168311.htm">青椒</a> 一个，红椒一个，粉丝二两，<a href="http://baike.baidu.com/view/8112.htm">菠萝</a> 丁少许，<a href="http://baike.baidu.com/view/867639.htm">绍酒</a> 25克，白糖20克，味精3<b>.</b>5克，熟猪油少许，鲜汤1000克<b>。</b> 制作过程：</p>
<p>1、砂锅上旺火，用油滑锅，将虾下锅稍煎，烹入绍酒和姜汁，加盖稍焖，加糖<b>、</b>鲜汤，加盖焖；</p>
<p>2、至八成熟，放入粉丝，味精，烧沸后，倒入大砂锅内，放在微火上煨5分钟，再移入中火烧约二三分钟，撇去浮沫，加青<b>、</b>红椒丝、味精，淋入熟猪油，原锅上桌即可。</p>
<p>营养成份：<a href="http://baike.baidu.com/view/24827.htm">胆固醇</a> 85mg 、<a href="http://baike.baidu.com/view/184.htm">碳水化合物</a> 10g <b>、</b><a href="http://baike.baidu.com/view/15472.htm">蛋白质</a> 13g 、<a href="http://baike.baidu.com/view/16.htm">脂肪</a> 19g 、<a href="http://baike.baidu.com/view/62743.htm">热量</a> 115cal 。</p>
<p>花椒蒸对虾的做法</p>
<p>1<b>.</b>材料：冰冻对虾，<a href="http://baike.baidu.com/view/31125.htm">辣椒</a> ，大蒜</p>
<p>2.大蒜去皮去蒂切成碎末，花椒亦切成末</p>
<p>3<b>.</b>花椒末和蒜末，撒上<a href="http://baike.baidu.com/view/316955.htm">料酒</a> ，香油，生抽，黑胡椒，糖盐搅拌均匀。</p>
<p>4<b>.</b>去虾线，中间切开，洗净沥干水份后摆在盘子里。（注意：对虾除了去掉头和尾部分，中间一定要彻底剖开，否则蒸之后会蜷起）</p>
<p>5<b>.</b>把彩椒末均匀的撒在虾身上</p>
<p>6.锅内水烧开后，入锅蒸3分钟左右<b>。</b>（虾身变色即可关火取出，保持虾的鲜嫩口感）<sup>[7]</sup></p>
<h4>9<b> </b>食用须知</h4>
<p>1<b>.</b> 虾营养丰富，且其肉质松软，易消化，对身体虚弱以及病后需要调养的人是极好的食物； </p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/7a8a1446938a70496a63e573.html"><img title="Image(12)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(12)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image12.jpg" width="224" height="205" /></a></p>
<p>2<b>.</b> 虾中含有丰富的镁，镁对<a href="http://baike.baidu.com/view/21941.htm">心脏</a> 活动具有重要的调节作用，能很好的保护心血管系统，它可减少血液中胆固醇含量，防止<a href="http://baike.baidu.com/view/84242.htm">动脉硬化</a> ，同时还能扩张冠状动脉，有利于预防高血压及心肌梗死；</p>
<p>3<b>.</b> 虾的<a href="http://baike.baidu.com/view/825178.htm">通乳</a> 作用较强，并且富含磷<b>、</b>钙、对小儿、<a href="http://baike.baidu.com/view/264048.htm">孕妇</a> 尤有补益功效；</p>
<p><sup>[8]</sup>4<b>.</b> 对虾体内很重要的一种物质就是<a href="http://baike.baidu.com/view/114538.htm">虾青素</a> ，就是表面红颜色的成分，虾青素是目前发现的最强的一种<a href="http://baike.baidu.com/view/53375.htm">抗氧化剂</a> ，颜色越深说明虾青素含量越高[1]<b>。</b>广泛用在化妆品、食品添加<b>、</b>以及药品。<a href="http://baike.baidu.com/view/54863.htm">日本大阪大学</a> 的科学家发现，虾体内的虾青素有助于消除因时差反应而产生的“时差症”<b>。</b></p>
<p>一般人群均可食用</p>
<p>1. 适宜中老年人缺钙所致的小腿抽筋者食用；适合孕妇和心<a href="http://baike.baidu.com/view/43285.htm">血管</a> 病患者食用；适宜肾虚阳痿<b>、</b>男性不 </p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/58c3acb75d34c2b430add17c.html"><img title="Image(13)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(13)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image13.jpg" width="224" height="163" /></a></p>
<p>育症、腰脚瘙弱无力之人食用<b>。</b></p>
<p>2.<a href="http://baike.baidu.com/view/2595833.htm">宿疾</a> 者<b>、</b>正值上火之时不宜食虾；患过敏性鼻炎、<a href="http://baike.baidu.com/view/54055.htm">支气管炎</a> 、反复发作性<a href="http://baike.baidu.com/view/39464.htm">过敏性皮炎</a> 的老年人不宜吃</p>
<p>虾为动风发物，患有皮肤<a href="http://baike.baidu.com/view/1370581.htm">疥癣</a> 者忌食<b>。</b></p>
<p>中医认为，海水虾性温湿、味甘咸，入肾、脾经；</p>
<p>虾肉有补肾壮阳，通乳抗毒<b>、</b>养血固精、化瘀解毒、益气滋阳、通络止痛<b>、</b>开胃化痰等功效；</p>
<p>适宜于肾虚阳痿、遗精早泄、乳汁不通、筋骨疼痛<b>、</b>手足抽搐、全身瘙痒、<a href="http://baike.baidu.com/view/1939278.htm">皮肤溃疡</a> 、身体虚弱和神经衰弱等病人食用<b>。</b></p>
<p>虾忌与某些水果同吃。虾含有比较丰富的蛋白质和钙等营养物质。如果把它们与含有<a href="http://baike.baidu.com/view/457462.htm">鞣酸</a> 的水果，如<a href="http://baike.baidu.com/view/5119.htm">葡萄</a> 、石榴<b>、</b><a href="http://baike.baidu.com/view/6877.htm">山楂</a> 、<a href="http://baike.baidu.com/view/37085.htm">柿子</a> 等同食，不仅会降低蛋白质的营养价值，而且鞣酸和钙离子结合形成不溶性结合物刺激肠胃，引起人体不适，出现呕吐<b>、</b>头晕、恶心和腹痛腹泻等症状<b>。</b><a href="http://baike.baidu.com/view/96886.htm">海鲜</a> 与这些水果同吃至少应间隔2小时。</p>
<h4>10<b> </b>种群分布</h4>
<p>中国对虾，体长大而侧扁<b>。</b>雌体长180～240mm，雄体长130～170mm，甲壳较薄，光滑略透明，头胸甲较坚硬宽大，中央前端延伸成长而呈尖的额角，上缘具7～9齿，下缘具3～4齿，额角下两侧具眼1对，有柄<b>。</b>额角侧脊伸至胃上刺附近；额角后脊仅伸至头胸甲中部。颈沟、肝沟细而明显，肝刺清晰，眼眶触角沟较宽，眼胃脊甚明显<b>。</b>头部有附肢5对，第1、第2对成为2对鞭状触角，其第2 对触角特别长，触角刺明显；其他3对附肢，成为1对大颚和2对小颚<b>。</b>胸部附肢8对，前3对成为颚足，均为口器的一部分；其余5对为步足，前3对步足的末端均为钳状，以第3对为最长大，后2对末端成为爪状<b>。</b>雌体交接器呈现圆盘状，位于第4、第5对步足基部之间，中央有一纵行裂口，内为受精囊，前方有一圆形突起，表面着生密毛。腹部7节，能屈曲，第4～6节背面中央具有纵脊；腹部附肢6对，第1对雌者内肢极小，雄者内肢变形为呈钟形的交接器<b>。</b>第6对为尾肢，短粗，与腹部第7节末端甚尖的尾节合为尾扇。雌体性生殖腺成熟前呈淡青蓝色，体表散布有棕蓝色色素细胞<b>。</b>雄体略呈棕黄色，胸部和腹部附肢微呈红色，尾肢的后半为深蓝并夹有红色。<sup>[1]</sup></p>
<p><a href="http://baike.baidu.com/view/61891.htm">中国</a> 明对虾（Fenneropenaeus chinensis）亦称“<a href="http://baike.baidu.com/view/79239.htm">中国对虾</a> ”<b>、</b>“<a href="http://baike.baidu.com/view/990213.htm">明虾</a> ”、“<a href="http://baike.baidu.com/view/631856.htm">东方对虾</a> ”、“对虾”。<a href="http://baike.baidu.com/view/30097.htm">软甲纲</a> ，对虾科<b>。</b>体形较大，体长达13～24cm。甲壳薄，光滑透明，雌体青蓝色，雄体呈综黄色。<a href="http://baike.baidu.com/view/731922.htm">额角</a> 平直，齿式为7～9/3～5。<a href="http://baike.baidu.com/view/731922.htm">额角</a> 侧脊不超过头胸甲中部<b>。</b>头胸甲无额胃脊和肝脊。<a href="http://baike.baidu.com/view/816524.htm">第一触角</a> 上鞭约等于头胸甲长 </p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/0db2c9ca2453c406f31fe77e.html"><img title="Image(14)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(14)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image14.jpg" width="224" height="224" /></a></p>
<p>的4/3<b>。</b>第三步足伸不到<a href="http://baike.baidu.com/view/816512.htm">第二触角</a> <a href="http://baike.baidu.com/view/419194.htm">鳞片</a> 的末端。雄性第三<a href="http://baike.baidu.com/view/2200565.htm">颚足</a> 指节与掌节约等长<b>。</b>常栖于浅海海底。喜食底栖小型<a href="http://baike.baidu.com/view/936591.htm">甲壳类</a> 、双壳类<a href="http://baike.baidu.com/view/21693.htm">软体动物</a> 和其他<a href="http://baike.baidu.com/view/3868.htm">无脊椎动物</a> ，也摄食<a href="http://baike.baidu.com/view/24499.htm">海藻</a> <b>。</b>中国沿海均产，主要分布在黄海、渤海及<a href="http://baike.baidu.com/view/119146.htm">朝鲜半岛</a> 西部沿海。经济价值高，是中国沿海的主要养殖虾类<b>。</b></p>
<p><a href="http://baike.baidu.com/view/3678092.htm">日本囊对虾</a> （Marsupenaeus japonicus）亦称“日本对虾”<b>、</b>“<a href="http://baike.baidu.com/view/718918.htm">竹节虾</a> ”<b>、</b>“<a href="http://baike.baidu.com/view/742.htm">斑竹</a> 虾”、“车虾”。软甲纲，对虾科。体长8～10 cm<b>。</b><a href="http://baike.baidu.com/view/731922.htm">额角</a> 齿式8～10/1～2。具额胃脊，后端双叉型。<a href="http://baike.baidu.com/view/731922.htm">额角</a> 侧沟长，伸至头胸甲后缘附近；额角后脊的中央沟长于头胸甲长的1/2。尾节具3对活动刺<b>。</b>雌性交接器囊状，前端开口，有一圆突；雄性交接器中叶突出，并向腹面弯折。体表具土黄色和蓝色相间的鲜明横斑，尾肢具棕色横带<b>。</b>主要摄食<a href="http://baike.baidu.com/view/345255.htm">底栖生物</a> 。中国浙江<b>、</b><a href="http://baike.baidu.com/view/2200.htm">台湾</a> 、福建、<a href="http://baike.baidu.com/view/7340.htm">广东</a> 、广西沿海均有分布<b>。</b><a href="http://baike.baidu.com/view/1554.htm">日本</a> 、朝鲜半岛、<a href="http://baike.baidu.com/view/3222.htm">菲律宾</a> 、印度尼西亚<b>、</b>马来西亚、<a href="http://baike.baidu.com/view/3692.htm">澳大利亚</a> 、斐济等沿海也有分布。生命力较强，出水后能经较长时间不死，耐运输<b>。</b>是<a href="http://baike.baidu.com/view/3850085.htm">人工养殖</a> 的对象，经济价值较高。</p>
<p>斑节对虾（Penaeus monodon）亦称<a href="http://baike.baidu.com/view/990071.htm">草虾</a> <b>。</b>软甲纲，对虾科。额角齿式为7～8/2～3<b>。</b>头胸甲具触角刺、肝刺及胃上齿，无额胃脊，肝脊明显而平直。<a href="http://baike.baidu.com/view/731922.htm">额角</a> 侧沟短，向后超不过头胸甲中部。第五步足无外肢<b>。</b>体由暗绿、深棕和浅黄横斑相间排列，构成腹部鲜艳的斑纹。生命力强，肉味鲜美，个体大，是对虾属中最大的一种，最大的雌虾长达33cm，体重超过500g。杂食性<b>。</b>是目前<a href="http://baike.baidu.com/view/20086.htm">东南亚</a> 一带最主要的养殖种类，中国广东、台湾大量养殖。</p>
<p><a href="http://baike.baidu.com/view/86474.htm">刀额新对虾</a> （Metapenaeus ensis）亦称“<a href="http://baike.baidu.com/view/102503.htm">基围虾</a> ”<b>、</b>“<a href="http://baike.baidu.com/view/665344.htm">沙虾</a> ”、“独角新对虾”。软甲纲，对虾科<b>。</b>体长8cm左右。体表有许多凹陷部分，其上生有短毛。<a href="http://baike.baidu.com/view/731922.htm">额角</a> 平直，仅上缘具7～9个齿。头胸甲具明显的心鳃沟和心鳃脊，肝沟明显，具肝刺<b>、</b><a href="http://baike.baidu.com/view/345568.htm">触角</a> 刺及眼上刺，无颊刺。前三对步足具基节刺，第一步足具座节刺，第五步足无外肢，第七胸节有侧鳃，第三<a href="http://baike.baidu.com/view/1392227.htm">鄂足</a> 无<a href="http://baike.baidu.com/view/1684859.htm">肢鳃</a> <b>。</b>是重要的经济种，为人工养殖对象。中国分布于东海和<a href="http://baike.baidu.com/view/15793.htm">南海</a> <b>。</b>日本、<a href="http://baike.baidu.com/view/7722.htm">斯里兰卡</a> 、马来西亚、印度尼西亚<b>、</b>澳大利亚等沿海也有分布。</p>
<p>凡纳滨对虾（Litopenaeus vannamei）亦称“南美白对虾”<b>、</b>“白对虾”、“太平洋白对虾”等<b>。</b>软甲纲，对虾科。额角具一或二腹缘齿，后齿位于背齿处或在其前；胃上齿前的齿式常为8～9/1～2。额角侧沟和侧脊短，止于胃上齿处或稍超出。头胸甲无额胃脊<b>。</b>雌性交接器为开放型，在第八胸节腹甲前部有1对斜锐脊，脊的中部向腹面突出成锐耳；第七胸节腹甲有大的半圆形至亚方形中央突<b>。</b>雄交接器无末中突，侧叶游离部分长，显著超出中央叶，亚椭圆形<b>。</b>该虾对盐度适应范围广，中国引进后已在南方大量人工养殖。</p>
<p>对虾是十足目对虾总科对虾科的1属<b>。</b>全世界共有28种，美洲<a href="http://baike.baidu.com/view/16056.htm">大西洋</a> 岸有7种，<a href="http://baike.baidu.com/view/1955.htm">太平洋</a> 岸6种，印度-西太平洋共14种，太平洋及<a href="http://baike.baidu.com/view/15817.htm">地中海</a> 1种，<a href="http://baike.baidu.com/view/307601.htm">西非</a> 1种<b>。</b>中国有10种，栖于<a href="http://baike.baidu.com/view/43791.htm">热带</a> 、亚热带浅海。养殖对虾的种类主要有：对虾属的日本对虾（Penaeus japonicus）<b>、</b>长毛对虾（P.Penicillatus）、中国对虾（P.orientalis）、<a href="http://baike.baidu.com/view/86230.htm">斑节对虾</a> （P.monodon）<a href="http://baike.baidu.com/view/124980.htm">墨吉对虾</a> （P.merguiensis）<b>、</b><a href="http://baike.baidu.com/view/122275.htm">短沟对虾</a> （P.semisulcatus）和新对虾属的刀额新对虾（Matapenaeus ensis）等<b>。</b></p>
<p><b>中国对虾</b></p>
<p>产于<a href="http://baike.baidu.com/view/327945.htm">中国大陆</a> ，主要分布于中国<a href="http://baike.baidu.com/view/45137.htm">渤海</a> <b>、</b><a href="http://baike.baidu.com/view/8520.htm">黄海</a> ，<a href="http://baike.baidu.com/view/48205.htm">东海</a> 北部也有少量分布，是中国主要的增养殖虾类<b>。</b>该品种 </p>
<p><a href="http://baike.baidu.com/picview/21682/21682/0/4e83cb6221ac2b9de6113a7f.html"><img title="Image(15)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(15)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image15.jpg" width="224" height="206" /></a></p>
<p>的优点是：①个体较大<b>。</b>自然海区雌虾一般体长16～20厘米，体重70～80克，最大体长为26厘米，体重150克；雄虾一般体长14～16厘米，体重40～50克<b>。</b>养殖对虾一般雌体12～15厘米，体重20～30克。②生长较快<b>。</b>在<a href="http://baike.baidu.com/view/4794895.htm">一般条件</a> 下养殖5个月可达12厘米以上。③适应性较广。养殖期间适宜水温为14～30℃，适宜盐度3～40‰。④养殖亲虾越冬<a href="http://baike.baidu.com/view/763319.htm">性腺</a> 易成熟，苗种易得到解决<b>。</b>⑤由于不像<a href="http://baike.baidu.com/view/112605.htm">日本对虾</a> 那样具有很强的潜沙习性，故可开闸放水收虾，收获方法简而易行<b>。</b></p>
<p><b>长毛对虾</b></p>
<p>中国主要分布在福建<b>、</b>台湾及<a href="http://baike.baidu.com/view/1125941.htm">粤东</a> 沿海，为福建和两广地区主要养殖种类。生长较快，一般4个月平均体长可达12厘米左右<b>。</b>该品种与其他南方虾种相比，较耐低温，但要求稍高盐度和溶解氧。由于在自然海区或人工养殖条件下均能获得成熟亲虾，所以可进行工厂化育苗，以满足养殖生产者的需要<b>。</b></p>
<p><b>斑节对虾</b></p>
<p>因其甲壳上有斑节而得名，又因喜栖于水草或藻全间，中国南方和台湾称为“草虾”<b>。</b>其个体大，为对虾属中个体最大<b>、</b>生长最快的种类。据报道，最大个体长达33厘米，体重达450克，最重可达500克以上，所以堪称“对虾之魁”<b>。</b>主要分布于中国南方沿海各省，如<a href="http://baike.baidu.com/view/9008.htm">海南</a> 、广东<b>、</b>广西福建和台湾等省区，以及东南亚国家。其食性广，不仅摄食动物性饵料，也摄食植物性饵料；适温16～32℃；盐度为10～35‰；生活力较强，由于离水后能活一段时间，因此便于活体运输和经营活虾出口<b>。</b></p>
<p><b>日本对虾</b></p>
<p>该品种是日本最主要的养殖种类，中国已进行养殖生产，在养殖条件下经4个多月，一般体长可达10厘米以上，亩产70～80公斤<b>。</b>本虾亦属<a href="http://baike.baidu.com/view/3357921.htm">广温性</a> 种类，在对虾属中除中国对虾外，其是较为耐低温的种类，据试养中观察，在12～30℃范围内无能正常摄食<b>。</b>日本对虾显著的特点是具有很强的潜沙习性，潜沙深度随体长增加而加深，前期深度为1～2厘米，后期为4～5厘米，昼伏夜出，养殖环境需在水质清新<b>、</b>沙质较细且松散的底质中生活。在自然海区和人工养殖条件下可获得成熟亲虾。由于其甲壳较厚，耐干露，所以便于活动和活虾出口<b>。</b> </p>
<p>&#160;</p>
<p><b></b></p>
<h2>基围虾</h2>
<p>&#160;</p>
<p> <b>来源网址：</b> <a href="http://baike.baidu.com/link?url=QIrBYCZiOXr_nL1bBrGY7CoUoJ7ZArZ6VdS4FFHe3urmUWfLl1mg_Zx2tGXq6Em6">http://baike.baidu.com/link?url=QIrBYCZiOXr_nL1bBrGY7CoUoJ7ZArZ6VdS4FFHe3urmUWfLl1mg_Zx2tGXq6Em6</a>
<p><a href="http://baike.baidu.com/view/86474.htm">刀额新对虾</a> （Metapenaeus ensis）亦称“基围虾”<b>、</b>“独角新对虾”<b>。</b><a href="http://baike.baidu.com/view/30097.htm">软甲纲</a> ，对虾科。体长8cm左右。体表有许多凹陷部分，其上生有短毛。<a href="http://baike.baidu.com/view/731922.htm">额角</a> 平直，仅上缘具7-9个齿<b>。</b>头胸甲具明显的心鳃沟和心鳃脊，肝沟明显，具肝刺、触角刺及眼上刺，无颊刺。前三对步足具基节刺，第一步足具座节刺，第五步足无外肢，第七胸节有侧鳃，第三<a href="http://baike.baidu.com/view/1392227.htm">鄂足</a> 无<a href="http://baike.baidu.com/view/1684859.htm">肢鳃</a> <b>。</b>是重要的经济种，为<a href="http://baike.baidu.com/view/3850085.htm">人工养殖</a> 对象。</p>
<p>体被淡棕色，腹部<a href="http://baike.baidu.com/view/3318.htm">游泳</a> 肢鲜红色，额角上缘<a href="http://baike.baidu.com/view/92799.htm">6</a> ～<a href="http://baike.baidu.com/view/73570.htm">9</a> 齿，下缘无齿，无中央沟<b>。</b>第一<a href="http://baike.baidu.com/view/345568.htm">触角</a> 上鞭短于头胸甲长的一半。腹部从第四节起背面有纵脊第一对<a href="http://baike.baidu.com/view/1869123.htm">步足</a> 无座节刺。雄性交接器为“<a href="http://baike.baidu.com/view/25401.htm">Y</a> ”形，雌性交接器<a href="http://baike.baidu.com/view/363772.htm">侧板</a> 为C形，中央板呈舌状<b>。</b>下缘无齿，第一触角上鞭约为头胸甲长的1/2，成熟虾雌大于雄，体长<a href="http://baike.baidu.com/view/1120012.htm">范目</a> 为<a href="http://baike.baidu.com/view/522184.htm">80</a> ～150<a href="http://baike.baidu.com/view/92333.htm">毫米</a> ，体重范围为5～<a href="http://baike.baidu.com/view/361649.htm">50</a> 克<b>。</b>产卵盛期为每年的4～8月，<a href="http://baike.baidu.com/view/8240361.htm">海捕</a> 虾成活率较高，为<a href="http://baike.baidu.com/view/32449.htm">珠江</a> 口一带渔民出口港澳活鲜虾之—<b>。</b><a href="http://baike.baidu.com/view/7340.htm">广东</a> 沿岸海域均有分布，自一九八六年进行人工育苗成功来，已开始养殖，是<a href="http://baike.baidu.com/view/7340.htm">广东</a> 海区重要经济虾类之一<b>。</b><sup>[1]</sup></p>
<h4>2<b> </b>营养价值</h4>
<p><a href="http://baike.baidu.com/picview/102503/102503/0/f29faa8f226144aef01f36d3.html"><img title="Image(16)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(16)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image16.jpg" width="224" height="155" /></a></p>
<p>营养丰富，其肉质松软，易消化，对身体虚弱以及病后需要调养的人是极好的食物；虾中含有丰富的<a href="http://baike.baidu.com/view/4779.htm">镁</a> ，能很好的保护<a href="http://baike.baidu.com/view/167598.htm">心血管系统</a> ，它可减少血液中<a href="http://baike.baidu.com/view/24827.htm">胆固醇</a> 含量，防止<a href="http://baike.baidu.com/view/84242.htm">动脉硬化</a> ，同时还能扩张冠状动脉，有利于预防<a href="http://baike.baidu.com/view/6632.htm">高血压</a> 及<a href="http://baike.baidu.com/view/37999.htm">心肌梗死</a> ；虾肉还有补肾壮阳，通乳抗毒<b>、</b>养血固精、化瘀解毒、益气滋阳、通络止痛<b>、</b>开胃化痰等功效。</p>
<h4>3<b> </b>适合人群</h4>
<p>基围虾老少皆宜；</p>
<p>1<b>.</b> 适宜肾虚阳痿、男性不育症<b>、</b>腰脚无力之人食用；适宜中老年人缺钙所致的小腿抽筋者食用；中老年人、孕妇和心血管病患者更适合食用；</p>
<p>2<b>.</b> 宿疾者、正值上火之时不宜食虾；患过敏性鼻炎<b>、</b>支气管炎、反复发作性过敏性皮炎的老年人不宜吃虾；虾为动风发物，患有皮肤疥癣者忌食。</p>
<h4>4<b> </b>产地分布</h4>
<p>主要分布于<a href="http://baike.baidu.com/view/1554.htm">日本</a> 东海岸，中国<a href="http://baike.baidu.com/view/48205.htm">东海</a> 与<a href="http://baike.baidu.com/view/15793.htm">南海</a> ，<a href="http://baike.baidu.com/view/3222.htm">菲律宾</a> <b>、</b><a href="http://baike.baidu.com/view/7009.htm">马来西亚</a> 、印尼及<a href="http://baike.baidu.com/view/3692.htm">澳大利亚</a> 一带</p>
<h4>5<b> </b>常见品种</h4>
<h5>近缘新对虾</h5>
<p>又名：麻虾<b>、</b>虎虾、花虎虾、泥虾<b>、</b>基围虾、砂虾、红爪虾。 </p>
<p><a href="http://baike.baidu.com/picview/102503/102503/0/2fdda3cc7cd98d107d1dc4c4203fb80e7aec907e.html"><img title="Image(17)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(17)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image17.jpg" width="224" height="217" /></a></p>
<p>产地：同上（产地分布）</p>
<p>动物形态：</p>
<p>体淡棕色，额角上缘6～9齿，下缘无齿<b>。</b>无中央沟，第一触角上鞭约为头胸甲技的1/2，腹部第l～6节背面具纵脊，其腹部游泳肢鲜红色、雄性交接器为“Y”形，雌性交接器为“C”形，中央板呈台状<b>。</b></p>
<h5>刀额新对虾</h5>
<p>概述：刀额新对虾俗称泥虾、麻虾<b>、</b>花虎虾、虎虾、砂虾、红爪虾<b>、</b>卢虾，商业上称基围虾。学名metapenaeus ensis(De Hann)，属<a href="http://baike.baidu.com/view/89922.htm">节肢动物门</a> <b>、</b><a href="http://baike.baidu.com/view/58453.htm">甲壳纲</a> 、<a href="http://baike.baidu.com/view/671646.htm">十足目</a> <b>、</b>游泳亚目、对虾科、新对虾属。最大体长可达19 cm<b>。</b>近岸浅海虾类，它具有杂食性强、广温、广盐和生长迅速、抗病害能力强等优点，而且能耐低氧，具有<a href="http://baike.baidu.com/view/5045095.htm">潜底</a> 习性<b>。</b>因壳薄体肥，肉嫩味美能活体销售而深受消费者青睐。是“<a href="http://baike.baidu.com/view/749061.htm">海虾</a> 淡养”的优良品种<b>。</b></p>
<p>产地产季：主要分布于<a href="http://baike.baidu.com/view/1554.htm">日本</a> 东海岸，在中国广泛分布于<a href="http://baike.baidu.com/view/35189.htm">山</a> 东半岛以南沿岸水域<b>。</b><a href="http://baike.baidu.com/view/3222.htm">菲律宾</a> 、马来西亚、印尼及澳大利亚一带也有分布<b>。</b>我国沿海5～8月为产卵盛期。</p>
<h4>6<b> </b>常见食谱</h4>
<h5>白灼基尾虾</h5>
<p>主料：鲜基尾虾500克，鲜嫩尖椒10克<b>。</b></p>
<p>辅料：葱30克，<a href="http://baike.baidu.com/view/21953.htm">香菜</a> 20克，<a href="http://baike.baidu.com/view/30248.htm">姜</a> 10克，酱油10克，白糖5克，<a href="http://baike.baidu.com/view/21334.htm">味精</a> 1克<b>。</b></p>
<p>1．将尖椒和15克葱均切成细丝放入碗中，放入白糖和少许酱油，调成味汁；其余的葱和姜切片；香菜切段<b>。</b></p>
<p>2.把酱油<b>、</b>味精和2杯开水同放入锅中，放入香菜段烧开，放入葱片、姜片和基尾虾，烧开后，捞出基尾虾，与味汁蘸食即可。<a href="http://baike.baidu.com/view/1619004.htm">椒盐基围虾</a></p>
<p>椒盐基围虾主料：基围虾250克</p>
<p>调料：<a href="http://baike.baidu.com/view/1837294.htm">精盐</a> 20克，味精1克，<a href="http://baike.baidu.com/view/21009.htm">花椒</a> 面5克，干细淀粉50克，<a href="http://baike.baidu.com/view/316955.htm">料酒</a> 20克，精炼油1000克（耗50克）<b>。</b></p>
<p>制作方法：</p>
<p>1．锅置小火上，放入精盐炒香，加入味精<b>、</b>花椒面对匀成<a href="http://baike.baidu.com/view/283609.htm">椒盐</a> 味碟。</p>
<p>2．基围虾洗净，放入少许精盐<b>、</b>料酒腌渍片刻，加入干细淀粉裹匀待用。</p>
<p>3．锅置旺火上，烧精炼油至八成油温，投入基围虾炸至色金黄<b>。</b>外酥内嫩时，捞出装入盘内，撒上椒盐即可。</p>
<h5>美极基围虾</h5>
<p>用料：基围虾500克，鲜酱油3/2汤匙，上汤1汤匙，<a href="http://baike.baidu.com/view/36617.htm">洋葱</a> 丝<b>、</b><a href="http://baike.baidu.com/view/30658.htm">芫荽</a> 各适量，白糖、绍酒、香油各少许。</p>
<p>1．将虾剪去须<b>、</b>虾爪等，剔去虾肠，并在虾腹处顺刀切一刀（不能切破脊背），下盐拌匀。</p>
<p>2．把鲜酱油<b>、</b>上汤、味精<b>、</b>白糖、香油调成汁料备用。</p>
<p>3．烧热锅，下油，烧至六成滚，将虾放入油锅中泡油至八成熟，倒起沥油。</p>
<p>主料：基围虾</p>
<p>辅料：青椒<b>、</b><a href="http://baike.baidu.com/view/17967.htm">胡萝卜</a> 、<a href="http://baike.baidu.com/view/53526.htm">香菇</a> 、姜片</p>
<p>调料：盐、天添鲜<b>、</b>白糖、白<a href="http://baike.baidu.com/view/111940.htm">胡椒粉</a> 、蛋清、生粉<b>、</b>水淀粉、<a href="http://baike.baidu.com/view/8052.htm">橄榄油</a></p>
<p>1．<a href="http://baike.baidu.com/view/801325.htm">虾仁</a> 用吸油布吸干水分</p>
<p>2．虾仁加入料酒<b>、</b>盐、天添鲜<b>、</b>蛋清、生粉腌制；</p>
<p>3．锅入油，烧热后倒入虾仁，至八成熟时捞起待用，吸干油分</p>
<p>4．用热油淋上香菇片<b>、</b>胡萝卜片；</p>
<p>5．锅入油，加入姜片、胡萝卜<b>、</b>香菇翻炒，加入水、虾仁、青椒</p>
<p>6．锅里加入盐、天添鲜<b>、</b>白胡椒粉、糖，水淀粉勾芡，淋上橄榄油即可。</p>
<p>茶香基围虾</p>
<p>茶香基围虾原料：活鲜基围虾，<a href="http://baike.baidu.com/view/37892.htm">龙井茶</a> 叶，青<a href="http://baike.baidu.com/view/1091227.htm">红椒</a> 粒</p>
<p>1．将活鲜基围虾清洗干净，加入姜葱，茶汁等腌制入味，将龙井茶叶用开水泡好，挤干水分待用<b>。</b></p>
<p>2．将腌好基围虾入5－6成油温炸至金黄色沥油待用，将茶叶炸至酥脆，再将基围虾，茶叶，青红椒粒，椒盐炒均匀入味装盘即成<b>。</b></p>
<p>特点：色泽金黄，外酥内嫩，茶香味浓，风味独特。</p>
<h5>桑拿基围虾</h5>
<p>材料：鲜活基围虾1斤，<a href="http://baike.baidu.com/view/229308.htm">鹅卵石</a> 一堆，纱布，烧烤架</p>
<p>调味：<a href="http://baike.baidu.com/view/1038205.htm">花雕酒</a> ，生抽，陈醋，蒜泥，姜泥，麻油</p>
<p>1．用生抽，陈醋，蒜泥，姜泥和麻油调好汁备用<b>。</b></p>
<p>2．将鹅卵石放在烧烤架上高温加热（需要达到的温度至少要加热40-60分钟），加热好的鹅卵石连同烧烤架小心取出<b>。</b></p>
<p>3<b>.</b>将鲜活的基围虾全部倒到鹅卵石上，花雕酒一淋，然后用纱布盖上大约一分钟即可食用。</p>
<p>4．基围虾体内混合了花雕酒和鹅卵石的香味儿，要趁热吃，沾前面调好的佐料，免得基围虾放在鹅卵石上太久了，肉质会变老<b>。</b> 酥脆金黄蒜茸基围虾</p>
<h5>酥脆基围虾</h5>
<p>原料：基围虾<b>、</b>大蒜、蛋黄、黄油<b>、</b>食用油</p>
<p>1．基围虾洗净把背部剪开，去肠泥。大蒜<a href="http://baike.baidu.com/view/3566250.htm">切末</a> <b>。</b></p>
<p>2．用热油把虾炸至外壳酥脆，颜色泛金黄。</p>
<p>3．锅中放少量油把蒜茸炒香，然后放入一块黄油，等黄油融化后继续翻炒蒜融，等蒜香和黄油的香味均炒香后放入虾翻炒，加入盐继续翻炒<b>。</b>炒到汤汁略微收干，盛出摆盘。</p>
<p>4．如果想要菜好看些，还可以炒一些蛋黄放在中间，方法是油温不是很热的时候放入蛋黄，然后用<a href="http://baike.baidu.com/view/9855.htm">筷子</a> 顺着一个方向不停的搅动<b>。</b>等熟后捞出就可以摆在盘子中央了。<a href="http://baike.baidu.com/view/138724.htm">姜葱基围虾</a></p>
<h5>姜葱基围虾</h5>
<p>用料：基围虾500克，精盐1克，味精2克，胡椒粉1克，姜片20克，长葱节50克，<a href="http://baike.baidu.com/view/30770.htm">高汤</a> 50克，水淀粉适量，<a href="http://baike.baidu.com/view/344069.htm">色拉油</a> 1000克<b>。</b></p>
<p>制作方法：</p>
<p>1．将基围虾用刀破背去沙肠，洗净<b>。</b>用碗将精盐<b>、</b>味精、胡椒粉、高汤、水淀粉对成味汁<b>。</b></p>
<p>2．炒锅置旺火上，放入色拉油烧至四成热，放入基围虾炸熟捞起。锅洗净，放入色拉油50克，姜片<b>、</b>长葱节，用中火炒出香味，倒入基围虾翻炒，烹入味汁炒至<a href="http://baike.baidu.com/view/1666209.htm">亮油</a> ，起锅装盘即成<b>。</b></p>
<p>特点：色泽鲜艳，姜葱味浓，清淡咸鲜。清蒸基围虾</p>
<p>材料：鲜活基围虾或<a href="http://baike.baidu.com/view/990071.htm">草虾</a> 一斤</p>
<p>配料：<a href="http://baike.baidu.com/view/16159.htm">酱油</a> <b>、</b>香油、</p>
<p>1．剪去须钳脚（不剪亦可）洗净，置盘中，锅内水开后放入，</p>
<p>2．蒸半小时，取出</p>
<p>3．煮熟酱油，加入少许香油</p>
<p>4．可以盛起来<b>、</b>尝尝了！！</p>
<p>5．注：蘸酱油吃，虾香四溢、原汁原味，爽！！！</p>
<h5>上汤基围虾</h5>
<p>原料：基围虾500克，鲜酱油1<b>.</b>5汤匙，上汤1汤匙，洋葱丝、芫荽(即香菜)各适量，<a href="http://baike.baidu.com/view/266276.htm">白糖</a> 、<a href="http://baike.baidu.com/view/867639.htm">绍酒</a> <b>、</b>香油各少许。</p>
<p>制作方法：</p>
<p>1．将虾剪去须<b>、</b>虾爪等，剔去虾肠，并在虾腹处顺刀切一刀(不能切破脊背)，下盐拌匀。</p>
<p>2．把鲜酱油<b>、</b>上汤、味精、白糖、香油调成汁料备用<b>。</b></p>
<p>3．烧热锅，下油，烧至六成滚，将虾故入油锅中泡油至八成熟，倒起滤油。随即把虾放回锅中，下绍酒，倒入汁料翻炒至虾熟<b>、</b>并有干香味，起锅上碟，香菜围边即成。</p>
<h5>椒盐爆中虾</h5>
<p>原料：净中虾500克，椒盐1<b>.</b>5茶匙，辣椒米2茶匙，花椒10克，蒜茸l茶匙，绍酒2茶匙。</p>
<p>制作：①将虾剪去虾须<b>、</b>虾爪等，剔去虾肠，洗净，滤水待用，②花椒挑去杂质、粗梗，炕炒干身盛起，碾成粉末状<b>。</b><a href="http://baike.baidu.com/view/985166.htm">粗盐</a> 下锅炒至微变色，离火，加入花椒末拌匀，晾凉，制成椒盐(500克花椒配1500克盐)<b>。</b>③烧热锅，下油，烧至七成熟，下虾炸约1分30秒钟，至虾身大红<b>、</b>熟，倒起滤油。④锅内留适量油，放入料头(蒜茸、椒米)、炸熟的鲜虾，下酒，加入椒盐速炒勺即可<b>。</b></p>
<h4>7<b> </b>食用禁忌</h4>
<p>虾尽量不与啤酒同食，不宜与<a href="http://baike.baidu.com/view/25682.htm">猪肉</a> 同食，损精；忌与狗肉<b>、</b>鸡肉<b>、</b><a href="http://baike.baidu.com/view/605326.htm">獐肉</a> 、鹿肉、<a href="http://baike.baidu.com/view/20966.htm">南瓜</a> 同食；忌糖。果汁与虾相克：同食会腹泻<b>。</b></p>
<h4>8<b> </b>史料记载</h4>
<p>《<a href="http://baike.baidu.com/view/6320.htm">本草纲目</a> 》：凡虾之大者蒸曝去壳，食以<a href="http://baike.baidu.com/view/493900.htm">姜醋</a> ，馔品所珍<b>。</b></p>
<p>《<a href="http://baike.baidu.com/view/1997363.htm">随息居饮食谱</a> 》：海虾，盐渍暴干，乃不发病，开胃化痰，病人可食<b>。</b></p>
<p>《纲目拾遗》：虾生淡水者色青，生咸水者色白，溪涧中出者壳厚气腥，湖泽池沼中者壳薄肉满，气不腥，味佳，海中者色白肉 粗，味殊劣<b>。</b>入药以湖泽中者为第一<b>。</b></p>
<p>《<a href="http://baike.baidu.com/view/1080230.htm">食疗本草</a> 》：动风、发疮疥。</p>
<p>《随息居饮食谱》：虾，发风动 疾，生食尤甚，病人忌之。</p>
<p>海虾补肾作用很好，不是发物，不过每个人的体质不同，如果有人吃了之后不能真正补到肾上去，就可能会发了，可以自己试试看，吃海虾可以治疗皮炎<b>、</b>湿疹及荨麻疹之类的病症，一点都不奇怪。</p>
<p>《饮食须知》：多食动风助火，发疮疾<b>。</b> 有病人及患冷积者勿食。</p>
<h4>9<b> </b>养殖技术</h4>
<p>基尾虾以壳薄<b>、</b>体肥、肉嫩、味美而著称。现将基尾虾的淡水池塘养殖技术介绍如下：</p>
<p>一<b>、</b>池塘选择</p>
<p><a href="http://baike.baidu.com/view/218789.htm">池塘</a> 面积以0.13公顷~0.2公顷、深1<b>.</b>5米~2米为宜。池底平坦，底部保留10厘</p>
<p>米左右的淤泥，四周开挖环沟，宽4米，深0<b>.</b>5米。池底防渗可以选择HDPE土工膜<b>。</b>池塘水源充足，<a href="http://baike.baidu.com/view/296465.htm">水质</a> 清新无污染，有独立的进<a href="http://baike.baidu.com/view/453077.htm">排水系统</a> <b>。</b>虾苗放养前，池塘要做好清池<a href="http://baike.baidu.com/view/124427.htm">消毒</a> 工作，清除<a href="http://baike.baidu.com/view/3868700.htm">野杂鱼</a> 和虾的其他敌害生物<b>。</b>在放养前20天左右，每亩水面用生石灰100公斤~150公斤化浆后进行全池泼洒<a href="http://baike.baidu.com/view/124427.htm">消毒</a> ；放养前7天，每亩水面投放<a href="http://baike.baidu.com/view/679996.htm">腐熟</a> 发酵过的有机肥150公斤（主要是畜禽粪），接着注水50厘米深<b>。</b>注水时注水口用40目筛绢网过滤，以防虾的敌害生物进入虾池；约7天后，池塘中便出现大量桡足类及<a href="http://baike.baidu.com/view/763476.htm">轮虫</a> 等<a href="http://baike.baidu.com/view/444692.htm">浮游动物</a> ，此时是虾苗下塘的最好时机<b>。</b></p>
<p>二、虾苗放养</p>
<p>因基尾虾原本生活在海水中，因此，其人工育苗也要在高盐度环境中进行（一般出苗时的海水相对密度为1<b>.</b>02）。虾苗移养到淡水中必须先经过淡化养殖，只有淡化好的虾苗才能进行放养<b>。</b>放养前1天，用体长2厘米~3厘米的青虾苗试水5小时~6小时，然后再放养基尾虾，每亩水面放养8万只~10万只；若经中间强化培育后，规格达1厘米~1<b>.</b>5厘米，每亩水面放养5万只~6万只，具体放养密度还应根据池塘的条件和技术状况而定<b>。</b>放养的虾苗要求外壳光洁晶莹，规格均匀，体质健壮，强跳有力。</p>
<p>三、饲养管理</p>
<p>1．投饵管理：养殖前期(虾苗体长3厘米)，即虾苗下塘的前1个月，主要依靠池中浮游生物为饵料或辅以少量细微颗粒<a href="http://baike.baidu.com/view/135183.htm">饲料</a> <b>。</b>虾苗下塘1个月后，投喂人工配合饲料(<a href="http://baike.baidu.com/view/48595.htm">沼虾</a> 饲料为主)。日投喂量为虾体重的4%~6%。在生长旺季，有条件的地方再辅投一些经破碎的螺蚬<b>、</b>小杂<a href="http://baike.baidu.com/view/2661.htm">鱼</a> 等。投饵量还要根据季节、水温、气候以及水质好坏灵活掌握，及时调整<b>。</b>如水温在25℃~30℃时，基尾虾摄食旺盛，应抓住时机，多投喂饲料，并在饲料中添加0.3%~0.5%多种<a href="http://baike.baidu.com/view/4576.htm">维生素</a> 和骨粉之类的添加剂，以保证虾生长的营养需要。白天投喂占日投饵量的1/3，傍晚占2/3，生长旺季半夜可增投一次<b>。</b></p>
<p>刀额新对虾</p>
<p>2．<a href="http://baike.baidu.com/view/1764387.htm">水质管理</a> ：虾苗下池时，水深控制在60厘米，并保持10天左右<b>。</b>以后每隔7天加水1 次~2次，每次加水深度10厘米~20厘米，最深水保持在1<b>.</b>5米~1.6米。池水满后，定期放掉<a href="http://baike.baidu.com/view/2817237.htm">底层水</a> 。选择晴天上午放水最佳，放掉50厘米~60厘米底层水，让阳光尽可能照射水体，使整个水体成为<a href="http://baike.baidu.com/view/881378.htm">富氧</a> 区，以加速虾的<a href="http://baike.baidu.com/view/5460426.htm">蜕壳</a> ，利于生长<b>。</b>要注意施肥培肥水质和机械增氧。施肥要根据水质肥瘦程度进行调控，控制水色为黄绿色或茶褐色，透明度掌握在30厘米~35厘米<b>。</b>刀额新对虾对于虾塘底质的要求高于其他虾类，因此，虾塘底质改良就显得十分重要。不定期撒施<a href="http://baike.baidu.com/view/460260.htm">生石灰</a> 对改良虾塘水质和底质有一定效果，每亩水面用量10公斤~15公斤<b>。</b></p>
<p>四、收获捕捞</p>
<p>基尾虾的收捕时间主要取决于成虾的生长情况和市场要求<b>。</b>一般在淡水池塘养殖80天~100天，即可达到7厘米~10厘米长的商品规格。也可进行轮捕，收捕方法有三种：地笼<b>、</b>拉网及干塘放水收捕。</p>
<p>一、稻田选择</p>
<p>稻田要求靠上下水渠近，水源充足，水质良好，排灌畅通，交通方便<b>。</b>具体要求如下。</p>
<p>1．条件：养虾稻田基本与稻田养蟹面积相似，以2～5亩为好，最大不超过10亩<b>。</b></p>
<p>2．田间工程：在确定养虾的稻田四周或田内挖有“口”、“王”字型环沟，沟深0.8～1m，宽1～1<b>.</b>5m，养虾沟占稻田面积15%，从沟内取土加宽加高四周堤坝，稻田进排水口设置双层防逃网。</p>
<p>二<b>、</b>放苗前的准备</p>
<p>1．清田：对耕整完的田块，每亩施生石灰50～75kg，杀死田中的野杂鱼和细菌等<b>。</b></p>
<p>2．培育基础饵料：清田7～8天后，稻田水位稳定在5～10cm，选择上午晴天施有机肥200～300kg；尿素3kg，过磷酸钙5kg，全池泼洒，以培育田中的生物饵料<b>。</b></p>
<p>3．水稻的栽插：水稻品种选用高产优质抗倒伏和病害。插秧方法同一般稻田，每亩穴数不少于15000<b>。</b>待秧苗已返青开始投放虾苗。</p>
<p>三、苗种投放</p>
<p>1．虾苗淡化：人工养殖基围虾苗种大多数为工厂化生产的，一般孵化苗海水比重为1<b>.</b>015～1.020左右，要移到淡水中养殖首先要淡化，将养殖虾苗淡化到1.002～1<b>.</b>003以下才能移入稻田中养殖。</p>
<p>2．苗种质量：虾苗体长为0.7～0.8cm，体质健壮，体表黄褐清洁整齐<b>。</b>供苗时池内与外界水温相似、温差不超过2～3℃。</p>
<p>3．虾苗放养量及放养时间：每亩稻田放苗3～4万尾，最多不超过5万尾。</p>
<p>四<b>、</b>饲养管理</p>
<p>1．投饵：虾苗下塘后一个月时主要摄食稻田中浮游生物，一个月后生长到2～3cm，投喂细微人工配合颗粒饵料(对虾饵料)为主，日投饵量为虾体重的5～6%；如水温达到24～30℃时，基围虾摄食旺盛，日投饵料增加到8～10%<b>。</b>每天投3～4次，傍晚一次饵料多投占全天的40%，有条件的地方从外部废坑或稻田捞取<a href="http://baike.baidu.com/view/167850.htm">浮游生物</a> 和野杂鱼做辅助饲料<b>。</b>每次投饵以虾2～3小时吃光为宜。</p>
<p>2．水位控制和水质管理：虾苗早期饲养水位保持在5cm左右，以后随着稻苗的生长水位逐渐加深<b>。</b>中期水位不得低于10cm。水质清新<b>、</b>肥度适中，养虾沟透明度在35―40cm之间，水色为淡绿色为好。每隔20一25天施生石灰一次，每亩7.5―10kg。</p>
<p>水质清新和理化因子相对稳定是基围虾蜕皮生长的重要保证，对虾与鱼类相比，水质条件要求高于鱼类，它们对水质污染反应较敏感<b>。</b>已知每升水溶氧在8―9mg时，可促进基围虾脱皮生长，而低于3―4mg时，则不利于生长。基围虾适宜pH值在7―9之间，低于7以下时，不利于蜕皮变态<b>。</b>在高温季节每2―3天换水一次。换水量为稻田的1/2，特别在雨季里日交换水量要达1/3以上，严防缺氧<b>。</b></p>
<p>3．病害防治：坚持以防为主，防重于治的原则。整个养殖期间定期泼洒生石灰5次，每次用量10―15ppm，以杀灭病菌和驱除敌害<b>。</b>同时，还需及时补充钙质有利于虾蜕皮生长。</p>
<p>4．做好记录：从放苗到捕捞建立档案记录，管理制度<b>。</b>每天对气温、水温、换水和注水及虾生长速度，摄食情况等搞好记录，发现问题及时解决。</p>
<p>基围虾的收捕时间：主要看成虾的生长情况和市场需求<b>。</b>一般在稻田中养殖90一110天即可生长到8―10cm商品虾。正值水稻成熟季节．这时在收割前将虾收捕完后可以开镰收割，常用收捕方法有以下几种<b>。</b></p>
<p>1．地笼收虾：在傍晚时将地笼下在稻田的养虾沟处，第二天早晨收笼，每笼可收0<b>.</b>5―1kg，每亩田可下25―30片笼。</p>
<p>2．拉网捕虾：将稻田水归入边沟，然后用小拉网在稻田沟内拉网．一般连续拉3―4网<b>。</b>起捕率达40一50%，拉网时间在傍晚进行。</p>
<p>3．干田放水收虾：水温在10一15℃时虾停止摄食和生长，这时稻田通过以上两种方法收捕，剩下数量不多，可放干边沟水干法收捕<b>。</b><sup>[1]</sup></p>
<dl>
<dt>参考资料 </dt>
<dd>
<ul>
<li>
<p>1．<a href="http://www.baike.com/wiki/%E5%9F%BA%E5%9B%B4%E8%99%BE%26amp;prd=button_doc_jinru">基围虾 </a>．互动百科 [引用日期2013-06-11] ．</p>
</li>
</ul>
</dd>
</dl>
<dl>
<dt>相关文献 </dt>
<dd>
<ul>
<li><a href="http://www.cqvip.com/QK/88929A/201212/43987034.html">别人的生活</a> -魅力中国：时文博览-2012年 第12期 (3) </li>
<li><a href="http://www.cqvip.com/QK/88391X/201106/39722314.html">价格的幌子</a> -商界：评论-2011年 第6期 (4) </li>
<li><a href="http://www.cqvip.com/QK/98307A/201101/38639901.html">鲜姜汁在基围虾防腐保鲜中的应用研究</a> -食品工程-2011年 第1期 (3) </li>
</ul>
</dd>
</dl>
<p>如果想投诉，请到<a href="http://tousu.baidu.com/baike">百度百科投诉中心</a> ；如果想提出意见<b>、</b>建议，请到<a href="http://baike.baidu.com/feedback">意见反馈</a> 。</p>
<p>&#160;</p>
<p>&#160;</p>
<p><b></b></p>
<h2>沼虾</h2>
<p>&#160;</p>
<p> <b>来源网址：</b> <a href="http://baike.baidu.com/link?url=0t2v-ic23AuK4zr8hbXbb5IzgZ9_7ZlSYrzeUbFSwUeLaNTnceSg7kaQe8icl7K4">http://baike.baidu.com/link?url=0t2v-ic23AuK4zr8hbXbb5IzgZ9_7ZlSYrzeUbFSwUeLaNTnceSg7kaQe8icl7K4</a>
<p>十足目真虾次目长臂虾科的 1属，为大、中型游泳虾类，体表大多有 </p>
<p><a href="http://baike.baidu.com/albums/48595/48595/1/2595731.html#2595731$"><img title="Image(18)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(18)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image18.jpg" width="224" height="151" />6</a></p>
<p><a href="http://baike.baidu.com/albums/48595/48595/1/2595731.html#2595731$">沼虾</a></p>
<p>暗褐绿色斑纹，俗称<a href="http://baike.baidu.com/view/977793.htm">青虾</a> <b>。</b>主要生活在<a href="http://baike.baidu.com/view/1306540.htm">池沼</a> 、湖泊或河流等淡水中，有些种也分布于<a href="http://baike.baidu.com/view/136516.htm">河口</a> 半咸水域，个别种如等齿沼虾等能栖于低盐浅海<b>。</b>最大的种如<a href="http://baike.baidu.com/view/120495.htm">罗氏沼虾</a> ，雄性体长可达400毫米,一般种体长50～100毫米。沼虾头胸甲发达,<a href="http://baike.baidu.com/view/731922.htm">额角</a> 上下缘有锯齿，具有肝刺<b>、</b><a href="http://baike.baidu.com/view/345568.htm">触角</a> 刺而无鳃甲刺。第 2腹节侧甲覆盖于第1<b>、</b>3节侧甲外面，后部腹节较细小。第 1<a href="http://baike.baidu.com/view/345568.htm">触角</a> 有3条触鞭。第1、2<a href="http://baike.baidu.com/view/1869123.htm">步足</a> 具螯<b>、</b>腕不分节，捕食和御敌；第2步足的螯特别强大,雄性的更长大,甚至可达长2倍，第3～5对爪状,用于爬行。<a href="http://baike.baidu.com/view/2200654.htm">腹肢</a> 具内附肢，能将左右内肢联在一起，便于游泳<b>。</b></p>
<h4>2<b> </b>生活习性</h4>
<p>沼虾一般生活在内陆的水域，淡水湖泊、河流以及河口区等<b>。</b></p>
<p><a href="http://baike.baidu.com/view/1883857.htm">沼虾属</a> 分布于热带<a href="http://baike.baidu.com/view/93914.htm">亚热带</a> 区，全世界共有 100多种，主要产于亚洲<b>、</b><a href="http://baike.baidu.com/view/6546.htm">非洲</a> <b>、</b>中南美洲的<a href="http://baike.baidu.com/view/3850288.htm">内陆水域</a> 。为杂食性，喜食小型动物或其尸体，也食水生植物或有机碎屑<b>。</b>中国已发现沼虾20多种，最常见的是<a href="http://baike.baidu.com/view/124243.htm">日本沼虾</a> ，广泛分布于<a href="http://baike.baidu.com/view/144248.htm">华北</a> 及南方各省；<a href="http://baike.baidu.com/view/738762.htm">海南沼虾</a> 分布于长江以南的<a href="http://baike.baidu.com/view/766578.htm">通海</a> 湖泊<b>、</b>河流及<a href="http://baike.baidu.com/view/56644.htm">河口区</a> 。此外还有<a href="http://baike.baidu.com/view/892029.htm">粗糙沼虾</a> 、细螯沼虾<b>、</b><a href="http://baike.baidu.com/view/7242.htm">云南</a> 沼虾等。<a href="http://baike.baidu.com/view/120495.htm">罗氏沼虾</a> 和海南沼虾等种的幼体阶段，必须在含盐的半咸水中生活才能发育变态，说明它们是自海水中进化而来，幼虫阶段与成体不同，不能适应纯淡水环境生活<b>。</b>沼虾刚孵化的幼体是原□状幼体，经几次蜕皮变为仔虾。华北常见的仅一种即<a href="http://baike.baidu.com/view/124243.htm">日本沼虾</a> ，夏初开始产卵繁殖<b>。</b><a href="http://baike.baidu.com/view/39161.htm">长江流域</a> 、<a href="http://baike.baidu.com/view/9229.htm">江南</a> 及西南各省种数增多。春季开始繁殖,4～11月均可见抱卵雌虾。5月份孵出的仔虾生长迅速,两个多月即可达性成熟而开始产卵<b>。</b></p>
<h4>4<b> </b>中国产地</h4>
<p>沼虾是淡水经济虾类中最重要的一类，中国产量最大的是<a href="http://baike.baidu.com/view/124243.htm">日本沼虾</a> ,以长江中下游及<a href="http://baike.baidu.com/view/144307.htm">华南</a> 各省产量较大;东南沿海各通海湖泊河流中则以海南沼虾为最多；山溪中常见的经济种为<a href="http://baike.baidu.com/view/892029.htm">粗糙沼虾</a> <b>。</b>这几种目前都能进行人工育苗和养殖<b>。</b></p>
<p>世界最重要的淡水养殖种是<a href="http://baike.baidu.com/view/120495.htm">罗氏沼虾</a> ，它原产于<a href="http://baike.baidu.com/view/20086.htm">东南亚</a> <a href="http://baike.baidu.com/view/653567.htm">热带区</a> 的淡水水域，自70年代人工育苗养殖成功以来，现已在全世界许多国家养殖<b>。</b>这种虾要求在24℃以上水温环境中才能迅速生长<b>。</b>另外个体较大的有<a href="http://baike.baidu.com/view/407791.htm">南亚</a> 常见的马氏沼虾,体长可达230毫米；<a href="http://baike.baidu.com/view/6891.htm">美洲</a> 的美洲沼虾体长可达250毫米；大臂沼虾在<a href="http://baike.baidu.com/view/122999.htm">中美洲</a> 产量大，体长可达233毫米;美洲及<a href="http://baike.baidu.com/view/76578.htm">西印度群岛</a> 常见的刺尾沼虾体长达166毫米<b>。</b>它们不仅为捕捞对象，近年来也都已进行<a href="http://baike.baidu.com/view/3850085.htm">人工养殖</a> <b>。</b></p>
<h4>5<b> </b>其他特征</h4>
<p>沼虾又称葡江大<a href="http://baike.baidu.com/view/1326510.htm">河虾</a> <b>、</b>白河虾<b>、</b>大钳虾，其主要分布于南方<a href="http://baike.baidu.com/view/59742.htm">沿海地区</a> ，<a href="http://baike.baidu.com/view/4150.htm">浙江</a> 葡江中下游盛产该虾，其个体大<b>、</b>可与<a href="http://baike.baidu.com/view/120495.htm">罗氏沼虾</a> 相媲美，发现最大雄性个体达200克，但肉味更鲜美<b>。</b>体色以白色透明为多，但会随着环境与水色而变化，适温范围广，5℃～35℃均能生存，最适温为20℃～28℃，pH值为6<b>.</b>3～7<b>.</b>5。其为<a href="http://baike.baidu.com/view/3358052.htm">广盐性</a> 虾类，幼体在河口咸、淡水区生活，可在低<a href="http://baike.baidu.com/view/94121.htm">盐度</a> 及纯淡水中生活。其喜集群<b>、</b>有趋弱光性，食性以<a href="http://baike.baidu.com/view/30439.htm">杂食性</a> 为主，偶有互相残食的现象发生，主要为食物短缺时较严重<b>。</b>雄虾钳大，紫蓝色；雌性钳小，个体小些<b>。</b>其壳薄，在溪流清水中生活时壳呈透明色，也有黄锈色，在河流中一般为玉白色。最长寿命可达2年，一般养殖经3个月～4个月可达5厘米以上<b>。</b>其<a href="http://baike.baidu.com/view/43019.htm">溶解氧</a> 要求较其他青虾高，喜欢生活在水质清新的溪滩中。因此养殖环境要求较高，但肉质鲜美，出肉率较<a href="http://baike.baidu.com/view/120495.htm">罗氏沼虾</a> <b>、</b>青虾高，是值得开发利用的一大淡水虾类。</p>
<p>&#160;</p>
<p>&#160;</p>
<p><b></b></p>
<h2>河虾</h2>
<p>&#160;</p>
<p> <b>来源网址：</b> <a href="http://baike.baidu.com/link?url=nVfeCERZaULPARjxlwR3ViocBkOA06prddZjzXnIC7VAi1YCd04HSTuhabQy5kDNo0tq0VwLGf7sXd3UyXH7Ma">http://baike.baidu.com/link?url=nVfeCERZaULPARjxlwR3ViocBkOA06prddZjzXnIC7VAi1YCd04HSTuhabQy5kDNo0tq0VwLGf7sXd3UyXH7Ma</a>
<p><sup>[1]</sup>市场对河虾的需求量与日俱增，畅销不衰，且价格较贵<b>。</b>在<a href="http://baike.baidu.com/view/24706.htm">鲈鱼</a> <b>、</b><a href="http://baike.baidu.com/view/1210285.htm">桂花鱼</a> 、<a href="http://baike.baidu.com/view/335479.htm">鳗鱼</a> 、<a href="http://baike.baidu.com/view/91907.htm">甲鱼</a> 、<a href="http://baike.baidu.com/view/228927.htm">鲟鱼</a> 等众多名优<a href="http://baike.baidu.com/view/27863.htm">鱼类</a> 价格大幅下跌的情况下，河虾价格仍十分坚挺<b>。</b></p>
<p><a href="http://baike.baidu.com/picview/1326510/1326510/0/314e251f95cad1c8b2766d8e7f3e6709c83d514d.html"><img title="Image(19)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(19)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image19.jpg" width="224" height="151" /></a></p>
<p><a href="http://baike.baidu.com/view/3578558.htm">广州黄沙水产交易市场</a> 的河虾，每公斤销售价格最高时达52元-56元<b>。</b>由于市场需求量较多，而野生资源量有限，加上江河水域污染而捕捞量日渐减少，故发展人工养殖前景看好<b>。</b>有行家认为，只要饲养得当，每亩养河虾的效益是养鱼的6倍-8倍，甚至更多。别据了解，养殖河虾并不复杂，一般水深1米-1<b>.</b>5米的池底有沙泥的<a href="http://baike.baidu.com/view/218789.htm">池塘</a> 都可作为河虾的养殖池，池塘应靠近水源，以便及时排水，增加氧气<b>。</b>河虾属于<a href="http://baike.baidu.com/view/30439.htm">杂食性</a> ，它繁殖力强，生长快，还可与<a href="http://baike.baidu.com/view/36718.htm">鲢</a> 、鲮等非肉食性的<a href="http://baike.baidu.com/view/27863.htm">鱼类</a> 混养，饲养得好，经济效益可观</p>
<p><a href="http://baike.baidu.com/picview/1326510/1326510/0/728da9773912b31bd5a55c808618367adbb4e14a.html"><img title="Image(20)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(20)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image20.jpg" width="224" height="169" /></a></p>
<p>河虾的哪些形态结构适应于它的<a href="http://baike.baidu.com/view/1773442.htm">水生环境</a> :</p>
<p>片状的泳足，扇状的尾，羽毛状的鳃，纤细的腿脚，<a href="http://baike.baidu.com/view/1216654.htm">曲度</a> 特别高的眼球<b>。</b></p>
<p><a href="http://baike.baidu.com/view/102503.htm">基围虾</a> 更好养</p>
<p><a href="http://baike.baidu.com/view/102503.htm">基围虾</a> 俗称<a href="http://baike.baidu.com/view/665344.htm">沙虾</a> ，属广温<b>、</b><a href="http://baike.baidu.com/view/3358052.htm">广盐性</a> 虾类。耐温范围10～37℃，最适温度17～32℃，耐低氧能力比<a href="http://baike.baidu.com/view/21682.htm">对虾</a> 强<b>。</b>一般亩产可达80～150公斤<sup>[2]</sup>，其养殖注意如下事项：</p>
<h5>池塘条件与清理</h5>
<p>选择面积3～5亩，水深1<b>.</b>5～2<b>.</b>5米，<a href="http://baike.baidu.com/view/114593.htm">淡水</a> 水源充足、无污染、沙质底的淡水池塘或虾塘为宜。</p>
<p>虾苗放养前1周，用60～80目筛绢网过滤，进水30厘米，亩施基肥（发酵畜粪）50公斤或尿素5公斤以培养基础饵料<b>。</b></p>
<p>一般5月下旬水温稳定在18～20℃时可放养虾苗。虾苗需经一星期以上时间的淡化处理，比重1<b>.</b>003以下方可放养。一般亩放0<b>.</b>7～1.0厘米虾苗3～4万尾，0.7厘米以下苗需暂养。虾塘可混养10～20厘米花白<a href="http://baike.baidu.com/view/74793.htm">鲢鱼</a> 种80～150尾<b>。</b></p>
<p>料 </p>
<p><a href="http://baike.baidu.com/albums/1326510/1326510/1/2203799.html#2203799$"><img title="Image(11)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Image(11)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image11.png" width="224" height="170" />5</a></p>
<p><a href="http://baike.baidu.com/albums/1326510/1326510/1/2203799.html#2203799$">河虾</a></p>
<p>投喂<b>。</b>虾苗下塘1月内基本不必投喂配合饵料，主要依靠塘中<a href="http://baike.baidu.com/view/167850.htm">浮游生物</a> 为食<b>。</b>1个月后投喂配合饵料，辅以鲜鱼、贝肉等，投饵率一般为虾体重的3%～5%。7～9月可适当增加投饵量，以不剩残饵为原则，投饵次数为每天2～3次，白天投量占1/3，傍晚2/3。</p>
<p>虾苗放养10天后，开始逐渐加水，每周加水10～15厘米<b>。</b>高温季节每2～3天换水20～30厘米。每半月左右，亩用<a href="http://baike.baidu.com/view/460260.htm">生石灰</a> 5～10公斤化浆全池泼洒，既改善水质和底质，又杀菌促进脱壳生长<b>。</b>同时，15～20天时，应拌制1‰～3‰大蒜药饵，连投3～5天。</p>
<p>一般养殖80～100天，虾体长达7～10厘米即可根据市场行情起捕出售<b>。</b>可用网捕或放水收捕，离水36小时干法活运，成活率可达90%。</p>
<h4>2<b> </b>营养分析</h4>
<p>1<b>.</b><a href="http://baike.baidu.com/view/69885.htm">虾</a> 营养丰富，且其肉质松软，易消化，对身体虚弱以及病后需要调养的人是极好的食物；</p>
<p>2<b>.</b> 虾中含有丰富的镁，镁对心脏活动具有重要的调节作用，能很好的保护<a href="http://baike.baidu.com/view/167598.htm">心血管系统</a> ，它可减少血液中胆固醇含量，防止<a href="http://baike.baidu.com/view/84242.htm">动脉硬化</a> ，同时还能扩张冠状动脉，有利于预防<a href="http://baike.baidu.com/view/6632.htm">高血压</a> 及心肌梗死；</p>
<p>3<b>.</b> 虾的<a href="http://baike.baidu.com/view/825178.htm">通乳</a> 作用较强，并且富含磷、钙<b>、</b>对小儿、<a href="http://baike.baidu.com/view/264048.htm">孕妇</a> 尤有补益功效；</p>
<p>4. 河虾体内很重要的一种物质就是<a href="http://baike.baidu.com/view/114538.htm">虾青素</a> ，就是表面红颜色的成分，虾青素（英文称astaxanthin，简称ASTA）是目前发现的最强的一种<a href="http://baike.baidu.com/view/595254.htm">抗氧化</a> 剂，颜色越深说明虾青素含量越高<b>。</b>广泛用在化妆品、食品添加、以及药品<b>。</b><a href="http://baike.baidu.com/view/54863.htm">日本大阪大学</a> 的科学家经考察发现，虾体内的<a href="http://baike.baidu.com/view/114538.htm">虾青素</a> 有助于消除因时差反应而产生的“时差症”<b>。</b></p>
<p>河虾的营养成分</p>
<p>含量(每100克)</p>
<p>含量(每100克)</p>
<p>87<i>大卡</i></p>
<p>329<i>毫克</i></p>
<p>325<i>毫克</i></p>
<p>240<i>毫克</i></p>
<p>186<i>毫克</i></p>
<p>133<b>.</b>8<i>毫克</i></p>
<p>60<i>毫克</i></p>
<p>48<i>微克</i></p>
<p>29<b>.</b>65<i>微克</i></p>
<p>16<b>.</b>4<i>克</i></p>
<p>5<b>.</b>33<i>毫克</i></p>
<p>4<i>毫克</i></p>
<p>2<b>.</b>4<i>克</i></p>
<p>2<b>.</b>24<i>毫克</i></p>
<p>0<b>.</b>64<i>毫克</i></p>
<p>0<b>.</b>27<i>毫克</i></p>
<p>0<b>.</b>04<i>毫克</i></p>
<p>0<b>.</b>03<i>毫克</i></p>
<h4>3<b> </b>食物相克</h4>
<p>虾忌与某些水果同吃<b>。</b>虾含有比较丰富的<a href="http://baike.baidu.com/view/15472.htm">蛋白质</a> 和钙等营养物质。如果把它们与含有<a href="http://baike.baidu.com/view/457462.htm">鞣酸</a> 的水果，如<a href="http://baike.baidu.com/view/5119.htm">葡萄</a> <b>、</b>石榴、<a href="http://baike.baidu.com/view/6877.htm">山楂</a> <b>、</b><a href="http://baike.baidu.com/view/37085.htm">柿子</a> 等同食，不仅会降低蛋白质的营养价值，而且鞣酸和钙离子结合形成不溶性结合物刺激肠胃，引起人体不适，出现呕吐<b>、</b>头晕<b>、</b>恶心和腹痛腹泻等症状。<a href="http://baike.baidu.com/view/96886.htm">海鲜</a> 与这些水果同吃至少应间隔2小时。</p>
<p>淡水虾性温味甘、微温，入肝<b>、</b>肾经；</p>
<p>虾肉有补肾壮阳，通乳抗毒、养血固精、化瘀解毒、益气滋阳<b>、</b>通络止痛、开胃化痰等功效；</p>
<p>适宜于肾虚阳痿、<a href="http://baike.baidu.com/view/8091.htm">遗精</a> 早泄、乳汁不通<b>、</b>筋骨疼痛、手足抽搐、全身瘙痒、<a href="http://baike.baidu.com/view/1939278.htm">皮肤溃疡</a> <b>、</b>身体虚弱和神经衰弱等病人食用。</p>
<p><a href="http://baike.baidu.com/view/302280.htm">长臂虾</a> 科动物<a href="http://baike.baidu.com/view/977793.htm">青虾</a> 等多种<a href="http://baike.baidu.com/view/114593.htm">淡水</a> 虾的全体或肉<b>。</b>分布于我国南北各地淡水湖泊、河流中<b>。</b>获得后，洗净鲜用或晒干备用。其大者，可蒸晒去皮用，亦称虾米。 </p>
<p>[性能]味甘，性微温<b>。</b>能补肾壮阳，下乳汁，托毒。</p>
<p>[参考]<a href="http://baike.baidu.com/view/977793.htm">青虾</a> 含<a href="http://baike.baidu.com/view/15472.htm">蛋白质</a> <b>、</b><a href="http://baike.baidu.com/view/16.htm">脂肪</a> 、维生素A、B1<b>、</b>B2，烟酸、钙、磷、铁等成分<b>。</b></p>
<p>犬静脉注射青虾肉提取物，可使淋巴中蛋白浓度升高、凝固性下降，脑导管淋巴流量显著增高，血浆中有磷酸腺苷类（ATP）出现，而组织胺无明显增加<b>。</b></p>
<p>[用途]用于肾虚阳痿；气血虚弱，乳汁减少<b>。</b></p>
<p>[用法]煮汤，油炸，烧菜，或研末。</p>
<p>1，虾蚧散：虾米500g，<a href="http://baike.baidu.com/view/36073.htm">蛤蚧</a> 1对（或120g），小茴香<b>、</b><a href="http://baike.baidu.com/view/21009.htm">花椒</a> 各60g。以<a href="http://baike.baidu.com/view/7349.htm">食盐</a> 10g，白酒200ml，炒至香脆，研为细末。每次服1匙，每日2次，温开水送下<b>。</b></p>
<p>源于《<a href="http://baike.baidu.com/view/6320.htm">本草纲目</a> 》。方中虾米、蛤蚧均能补肾壮阳，性温而不燥，为补阳之良品。兼用小茴香<b>、</b>花椒之温热以助温肾补阳之功。合而用之，其效颇著。用于肾阳不足，阳痿精少。</p>
<p>2，<a href="http://baike.baidu.com/view/106679.htm">韭菜炒鲜虾</a> ：韭菜（白色鳞茎最好）150g，鲜河虾240g<b>。</b>用<a href="http://baike.baidu.com/view/1752448.htm">食油</a> 、食盐适量，共炒熟食。</p>
<p>本方取河虾、韭菜补肾壮阳<b>。</b>用于肾虚阳痿、<a href="http://baike.baidu.com/view/8091.htm">遗精</a> 、遗尿、腰脚无力等<b>。</b></p>
<p>3，<a href="http://baike.baidu.com/view/620895.htm">虾米酒</a> ：鲜河虾180g，微炒。一日分3~5次嚼食，以黄酒煨热送下<b>。</b>可同时服用猪蹄汤。</p>
<p>源于《<a href="http://baike.baidu.com/view/172403.htm">本草纲目拾遗</a> 》<b>。</b>本方以鲜虾益气血而<a href="http://baike.baidu.com/view/825178.htm">通乳</a> 汁，并以黄酒助其药力。配服猪蹄汤则更为有效。用于乳汁减少。</p>
<p><b>注：请勿使用“</b><a href="http://baike.baidu.com/view/2463398.htm">洗虾粉</a> ”<a href="http://baike.baidu.com/view/21682.htm">对虾</a> 进行清洁<b>。</b></p>
<p>上海食品药品监管局曾发出紧急通知，禁止使用违法食品添加剂洗虾粉，洗虾粉主要被一些水产市场摊主用来给虾去污，主要成分是柠檬酸和亚硫酸盐<b>。</b>虽然这两种成分都属于合法，但洗虾粉中还有很多没有分离出来的成分，会给消费者健康带来隐患<b>。</b></p>
<h4>5<b> </b>烹饪指导</h4>
<p>色发红、身软、掉拖的虾不新鲜尽量不吃，腐败变质虾不可食；虾背上的<a href="http://baike.baidu.com/view/558890.htm">虾线</a> 应挑去不吃。</p>
<p><b>油爆大虾</b></p>
<p>原料： 大河虾350克，酱油20克，葱段2克，醋15克，白糖25克，熟菜油500克，<a href="http://baike.baidu.com/view/867639.htm">绍酒</a> 15克 （约耗50克） </p>
<p>制作： 1<b>、</b> 将虾剪去钳、须脚，洗净沥干水。</p>
<p>2、 炒锅下菜油，旺火烧至九成热，将虾入锅用手勺断推动，约5秒钏即用漏勺捞起，待油温回升到八成热，再将虾倒入复炸10秒钟，使肉与壳脱开，用漏勺带捞出<b>。</b></p>
<p>3、 将锅内油倒出，放入葱希略煸，倒入虾烹入绍酒，加酱油、白糖及少许水，颠动<a href="http://baike.baidu.com/view/3007397.htm">炒锅</a> [[越南]]烹入醋，出锅装盘即成。<sup>[3]</sup></p>
<p><b>素菜河虾</b></p>
<p>原料：小河虾<b>、</b>韭菜。 </p>
<p>辅料：姜1小块<b>、</b>红椒1个。</p>
<p>1<b>、</b>将虾洗净后，盛入大碗中，加2勺料酒，少许盐，适量清水，浸泡10分钟左右，冲水沥干；</p>
<p>2<b>、</b>韭菜摘洗干净后，切段；生姜切丝，红椒切丝，备用；</p>
<p>3<b>、</b>锅中倒油（稍多一些），丢入几粒花椒，油热后，将沥干后的虾下入油锅中，炸四五分钟，至虾身变红即可关火，倒入沥油容器中沥干油，取虾备用；</p>
<p>4<b>、</b>将沥出的虾油盛出一点，倒入炒锅中，下入红椒丝，生姜丝爆香，然后下入韭菜，炒1分钟；</p>
<p>5<b>、</b>倒入炸过的虾，加入适量盐，翻炒均匀；烹入少许料酒，继续炒至进味即可。<sup>[4]</sup></p>
<p>1<b>、</b>因为河虾比较小，又多，我是懒得去一个个剪掉那硬硬的虾嘴的，所以先用油把虾过一道，这样虾头吃起来就是脆脆的，那硬硬的虾嘴入口也是香脆，也不会扎到我们的嘴巴了<b>。</b>要是较大的虾，还是要耐心地剪去虾嘴的哈。</p>
<p>2、油锅中放几粒花椒，可以防止爆锅，但是虾还是要沥干水才能下锅的<b>。</b></p>
<p><b>爆墨鱼仔</b></p>
<p>原料：小墨鱼仔<b>、</b>小河虾<b>、</b>生姜芥兰、<a href="http://baike.baidu.com/view/657562.htm">小辣椒</a> 。</p>
<p>调料：盐 鸡精 、白糖 蚝油绍酒湿淀粉适量<b>、</b>麻油。</p>
<p>1、小墨鱼仔洗净，河虾去掉虾枪洗净，小红辣椒切圈。</p>
<p>2<b>、</b>生姜去皮切小片，芥兰切成片洗净。用开水加盐油烫一下捞出。过凉。</p>
<p>3<b>、</b>烧锅下油，待<a href="http://baike.baidu.com/view/305842.htm">油温</a> 140度时，放入墨鱼仔、河虾，泡炸2分钟至熟倒出把油控干<b>。</b></p>
<p>4、锅内留少许油，放入姜片爆香放入小红辣椒圈<b>、</b>煸炒片刻，投入小墨鱼仔、河虾，芥兰片倒入绍酒，爆炒狂翻。</p>
<p>5、用水调入盐<b>、</b>鸡精、白糖、蚝油，湿淀粉调成碗芡入锅勾芡，淋入麻油即可。<sup>[5]</sup></p>
<p><b>酥香小河虾</b></p>
<p>小河虾250g<b>、</b>料酒5ml、盐3g、胡椒粉1g、泡打粉1g<b>、</b>面粉3汤匙、五香粉1g、辣椒粉3g。</p>
<p>1<b>、</b>小河虾清理干净沥干水，装进大碗里，加盐，料酒腌10分钟。</p>
<p>2、3、加入五香粉，胡椒粉，泡打粉，面粉彻底拌匀<b>。</b></p>
<p>4、加入辣椒粉拌匀。</p>
<p>5、热锅上油，油温8成热时把拌好的小河虾倒进去<b>。</b></p>
<p>6、炸约十几秒起锅沥油即可。</p>
<p><b>晶莹剔透水晶虾饺</b></p>
<p>小麦面粉：70g；玉米淀粉：30g；五花肉;200g；虾;150g</p>
<p>甜玉米：50g；豌豆：50g；鸡蛋：1个；苏打粉：2g</p>
<p>食盐：适量；味精：少许；料酒：适量；白胡椒：适量；猪油：3g；水：105g；白糖：少许</p>
<p>做法明细：</p>
<p>1<b>、</b>猪五花肉末放入容器，加入鸡蛋、盐、细砂糖<b>、</b>白胡椒粉和少许味精，同一方向搅拌至起胶上劲，加入甜玉米和豌豆粒拌匀</p>
<p>2<b>、</b>虾仁剥好后切成大粒放入容器，加入少许小苏打<b>、</b>料酒、白胡椒粉和盐拌匀，加入玉米淀粉上浆，浆好的虾仁拌入肉馅待用</p>
<p>3、玉米淀粉、小麦淀粉<b>、</b>盐和猪油放入容器，将刚煮好的开水倒入烫面，筷子打成面絮后用手揉成面团</p>
<p>4<b>、</b>用面条机“1”档压制两到三遍至面皮平整，调到“5”档压制成合适厚度的面皮，用模具压成圆形面坯，面团制作时动作要快，否则面皮会干裂，虾饺面坯制好后需要盖上湿布待用（没有面条机，制坯过程手工操作也可，做法跟做饺子面坯一样）</p>
<p>5<b>、</b>包入馅料，制成虾饺状置于蒸屉上，底部垫胡萝卜片防粘（也可以在笼屉上刷油防粘）</p>
<p>6<b>、</b>蒸锅水沸，足气后上屉，大火蒸6-7分钟即可开盖取食</p>
<p>烹饪技巧：</p>
<p>1<b>、</b>小麦淀粉与玉米淀粉两种生粉混合使用。</p>
<p>2、如果是手工操作动作一定要快些，面团和面坯需要盖湿布防裂。</p>
<p>3<b>、</b>水晶皮的面团，一般制成虾饺面坯时，都是用刀拍皮，不会的话，也可以用擀面杖擀开。</p>
<p>4<b>、</b>水晶虾饺包好后，底部一定要做防粘处理，垫上胡萝卜片是个很好的方法，颜色也比较好看，也可以在笼屉上刷油防粘，蒸制的时候要等蒸锅内的水完全大沸，上足气后再上屉，全程大火蒸6-7分钟即可，关火就可以立即取食<b>。</b></p>
<p>虾类如需保存，需要剪掉胡须，在容器底部铺一层冰，再撒上盐，摆上虾，再铺一层冰，最后用麻袋或草袋封口，这样可以保存长达一周<b>。</b>或者把虾放在一个保鲜袋中（确保保险袋不漏水），然后往保险袋中灌进一些水，把保险袋袋口扎紧放入冰箱的速冻室里<b>。</b>需要注意，鲜虾不适合直接冰冻保存，解冻之后口感不佳。</p>
<h4>6<b> </b>适宜人群</h4>
<p>一般人群均可食用</p>
<p>1<b>.</b> 中老年人、<a href="http://baike.baidu.com/view/264048.htm">孕妇</a> 、<a href="http://baike.baidu.com/view/678604.htm">心血管病</a> 患者<b>、</b>肾虚阳痿、男性不育症、腰脚无力之人更适合食用；同时适宜中老年人缺钙所致的小腿抽筋者食用；</p>
<p>2<b>.</b><a href="http://baike.baidu.com/view/2595833.htm">宿疾</a> 者、正值上火之时不宜食虾；体质过敏，如患过敏性鼻炎、<a href="http://baike.baidu.com/view/54055.htm">支气管炎</a> <b>、</b>反复发作性<a href="http://baike.baidu.com/view/39464.htm">过敏性皮炎</a> 的老年人不宜吃虾；另外虾为动风发物，患有皮肤<a href="http://baike.baidu.com/view/1370581.htm">疥癣</a> 者忌食<b>。</b></p>
<h4>7<b> </b>选购技巧</h4>
<p>挑选河虾的时候要注意：</p>
<p>新鲜的虾头尾与身体紧密相连，虾身有一定的弯曲度<b>。</b></p>
<p>新鲜虾皮壳发亮，河虾呈青绿色，海虾呈青白色（雌虾）或蛋黄色（雄虾）。不新鲜的虾，皮壳发暗，虾略成红色或灰紫色<b>。</b></p>
<p>新鲜的虾肉质坚实细嫩，有弹性。</p>
<p>新鲜虾气味正常，无异味<b>。</b></p>
<p>此外，冰虾仁比鲜虾更容易保存，冻虾仁应挑选表面略带青灰色，手感饱满并富有弹性的；那些看上去个大<b>、</b>色红的最好别挑选<b>。</b><sup>[6]</sup></p>
<p><a rel="nofollow" href="http://www.lvjiyong.com/i542.html">对虾、基围虾、沼虾、河虾怎么区分</a>，首发于<a rel="nofollow" href="http://www.lvjiyong.com">吕的部落格</a>。</p>
]]></description>
		<wfw:commentRss>http://www.lvjiyong.com/i542.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用ILMerge将.net DLL EXE等程序集中打包成一个文件详解</title>
		<link>http://www.lvjiyong.com/i517.html</link>
		<comments>http://www.lvjiyong.com/i517.html#comments</comments>
		<pubDate>Wed, 25 Sep 2013 09:31:37 +0000</pubDate>
		<dc:creator><![CDATA[吕]]></dc:creator>
				<category><![CDATA[工具]]></category>
		<category><![CDATA[DLL文件打包]]></category>
		<category><![CDATA[ILMerge]]></category>
		<category><![CDATA[WinForm]]></category>

		<guid isPermaLink="false">http://www.lvjiyong.com/?p=517</guid>
		<description><![CDATA[<p>一直以来喜欢将程序的类库最大化分割，这在WEB应用程序中，DLL文件反正是部署在Bin目录下，对使用者都是透明的，但近期使用的Winform文件中含有大量的DLL文件，对于开发人员来说哪个才是主文件极其简单，但对于真正的使用者来说，却是十分复杂，一打开目录，几十个DLL，体验实在太大，所以使用了ILMerge进行打包，效果不错。</p>
<h3>.net DLL程序集中打包另一个DLL </h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/janet/p/3247536.html">http://www.cnblogs.com/janet/p/3247536.html</a>
<p>项目中做了一个通用组件的类库，类库中引用了几个第三方组件（DLL），组件发布给同事使用时，需要同时将这几个第三方的DLL一并复制过去，然后添加相关组件的引用<b>。</b></p>
<p>如何能够将这些第三方的DLL直接打包到我的组件中，而不暴露给调用者，首先想到的是将DLL包装成“嵌入的资源”，而这种方案需要在首先调用将资源程序自动解成物理文件，其结果仍旧是暴露了第三方组件<b>。</b></p>
<p>后来找到<a href="http://www.microsoft.com/downloads/details.aspx?familyid=22914587-b4ad-4eae-87cf-b14ae6a939b0&#38;displaylang=en">Ilmerge </a>这个工具，该工具是微软官方提供的程序集合并工具，使用方法：</p>
<p>安装后，CMD进入安装好的目录，打命令：</p>
<p>ilmerge Janet.DTest.Lib.dll AT.Lib.dll /ndebug /out:Janet.DTest.Lib2.dll</p>
<p>其中Janet.Dtest.Lib.dll是我的组件名称，AT.Lib.dll是第三方组件，Janet.Dtest.Lib2.dll是合并后的文件</p>
<p>在Janet.DTest.Lib中引用了AT.Lib组件，并调用了其中的函数，如下图所示，两个组件引用关系：</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image.png"><img title="Image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image_thumb.png" width="270" height="406" /></a></p>
<p>做一个测试的项目，直接引用生成后的Janet.DTest.Lib2.dll</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image1.png"><img title="Image(1)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(1)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image1_thumb.png" width="261" height="288" /></a></p>
<p>debug目录，生成结果，只有Janet.Dtest.Lib2.dll文件，没有其他第三方组件的DLL，测试运行直接通过<b>。</b></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image2.png"><img title="Image(2)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(2)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image2_thumb.png" width="441" height="115" /></a></p>
<p>注：Janet.Dtest.Lib2.dll文件名称可以自己改，也可以在生成时指定生成的目录<b>。</b></p>
<p><strong>附：</strong></p>
<p>ILMerge参考资料</p>
<p><a href="http://www.cnblogs.com/wuhenke/archive/2010/01/31/1660343.html">http://www.cnblogs.com/wuhenke/archive/2010/01/31/1660343.html</a></p>
<p>将ILMerge做成工具</p>
<p><a href="http://www.cnblogs.com/huangcong/archive/2010/03/29/1699904.html">http://www.cnblogs.com/huangcong/archive/2010/03/29/1699904.html</a></p>
<p><b></b></p>
<h3>C#版ILMerge-GUI,可将所有引用的DLL和exe文件打成一个exe文件,有图解</h3>
<p> <b>来源网址：</b> <a href="http://www.cnblogs.com/huangcong/archive/2010/03/29/1699904.html">http://www.cnblogs.com/huangcong/archive/2010/03/29/1699904.html</a>
<p>前天刚用了一下Micrsoft官网那个的ILMerge来实现exe以及dll文件的绑定<b>.</b></p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-B4AD-4EAE-87CF-B14AE6A939B0&#38;displaylang=en">http://www.microsoft.com/downloads/details.aspx<b>?</b>FamilyID=22914587-B4AD-4EAE-87CF-B14AE6A939B0&#38;displaylang=en</a></p>
<p> 不过操作是在CMD命令行中完成的,很不友好,便自己开发了一个程序,可以灵活操作,在此分享一下<b>.</b></p>
<p>这就是我写的ILMergeEx:</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image3.png"><img title="Image(3)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(3)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image3_thumb.png" width="93" height="67" /></a></p>
<p>下面介绍一下程序使用方法:</p>
<p>1<b>.</b>打开程序如下图所示:</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image4.png"><img title="Image(4)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(4)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image4_thumb.png" width="401" height="489" /></a></p>
<p>2<b>.</b>假设我要将桌面下”新建文件夹”中的WindowsFormsApplication2.exe与 newDll.dll, newExe.exe绑定生成一个exe文件<b>.</b> 其中newDll.dll, newExe.exe 为WindowsFormsApplication2.exe中的应用项:</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image5.png"><img title="Image(5)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(5)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image5_thumb.png" width="458" height="304" /></a></p>
<p>3<b>.</b>打开程序,主文件我们选择WindowsFormsApplication2.exe,引用程序集我们选择newExe.exe和newDll.dll,导出新exe文件名我们设置为HC,路径同样为桌面下的新建文件夹:</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image6.png"><img title="Image(6)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(6)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image6_thumb.png" width="414" height="487" /></a></p>
<p>4<b>.</b>点击导出,则程序会自动调用ILMerge完成主文件和引用程序的绑定,此时运行的DOS程序与直接在CMD下运行ILMerge是一样D:</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image7.png"><img title="Image(7)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(7)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image7_thumb.png" width="679" height="447" /></a></p>
<p>5<b>.</b>最后在回新建文件夹查看,就会看见捆绑好的新exe文件啦:</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image8.png"><img title="Image(8)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(8)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image8_thumb.png" width="317" height="181" /></a></p>
<p>以上在VS2008,WIN7,.NET3<b>.</b>5环境下测试通过.</p>
<p>程序下载地址:</p>
<p><a href="http://files.cnblogs.com/huangcong/ILMergeEx.rar">http://files.cnblogs.com/huangcong/ILMergeEx.rar</a></p>
<p><b></b></p>
<h3>ILMerge_C#</h3>
<p> <b>来源网址：</b> <a href="http://klnet.diandian.com/post/2012-03-04/15718892">http://klnet.diandian.com/post/2012-03-04/15718892</a>
<p>最近用C#写了个小程序需要引用dll文件，可是单单只复制exe文件到别的地方，无法运行；连dll&#160;&#160;&#160; 一起复制又太麻烦，因此google了一下，发现原来Microsoft提供了一个合并程序集的软件--&#160;&#160;&#160; ILMerge<b>.</b></p>
<p>可以<a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&#38;id=17630">点此下载ILMerge</a> ，并安装..<b>.</b></p>
<p>---接下来介绍一下怎么使用ILMerge:首先找到已经安装的ILMerge.exe的路径并复制，在此先把将要被合并的程序集复制到和ILMerge在同一个目录下，这样更容易操作；</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image.jpg"><img title="Image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image_thumb.jpg" width="179" height="157" /></a></p>
<p>然后Windows+R打开运行输入CMD进入DOS,接着进入ILMerge所在的路径（CD 路径）；按如下格式输入（ILMerge.exe /ndebug /target:winexe /out:生成的新程序的名称.exe 闹钟.exe /log 程序集1.dll 程序集2.dll），回车后等待程序合并完毕<b>。</b>提示：/target:winexe 意思是生成窗体应用程序<b>。</b>操作如图：</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image1.jpg"><img title="Image(1)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(1)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image1_thumb.jpg" width="244" height="77" /></a></p>
<p>最后在ILMerge目录下生成新的程序，以后只需复制这个exe文件即可运行程序..<b>.</b></p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image9.png"><img title="Image(9)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(9)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image9_thumb.png" width="185" height="170" /></a></p>
<p>最后，由于在DOS下用命令来生成稍微麻烦，在此提供一个图形化操作的另一个软件：ILMerge-GUI, the .NET merger，<a href="http://ilmergegui.codeplex.com/">点此下载</a> ---由于是界面操作，这里就不再赘述..<b>.</b>如图：</p>
<p><a href="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image10.png"><img title="Image(10)" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Image(10)" src="http://www.lvjiyong.com/wp-content/uploads/2013/09/Image10_thumb.png" width="499" height="494" /></a></p>
<p><a rel="nofollow" href="http://www.lvjiyong.com/i517.html">使用ILMerge将.net DLL EXE等程序集中打包成一个文件详解</a>，首发于<a rel="nofollow" href="http://www.lvjiyong.com">吕的部落格</a>。</p>
]]></description>
		<wfw:commentRss>http://www.lvjiyong.com/i517.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>正则表达式30分钟入门教程</title>
		<link>http://www.lvjiyong.com/i489.html</link>
		<comments>http://www.lvjiyong.com/i489.html#comments</comments>
		<pubDate>Mon, 08 Jul 2013 09:33:21 +0000</pubDate>
		<dc:creator><![CDATA[吕]]></dc:creator>
				<category><![CDATA[工具]]></category>
		<category><![CDATA[Regex]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.lvjiyong.com/?p=489</guid>
		<description><![CDATA[<p>版本：v2.32 (2011-8-17) 作者 deerchao 转载请注明<a href="http://www.jb51.net/tools/zhengze.html">来源</a></p>
<h4>本文目标</h4>
<p>30分钟内让你明白正则表达式是什么，并对它有一些基本的了解，让你可以在自己的程序或网页里使用它。</p>
<h4>如何使用本教程</h4>
<p>最重要的是——请给我<em>30分钟</em>，如果你没有使用正则表达式的经验，请不要试图在30<em>秒</em>内入门——除非你是超人 :)</p>
<p>别被下面那些复杂的表达式吓倒，只要跟着我一步一步来，你会发现正则表达式其实并没有你想像中的那么困难。当然，如果你看完了这篇教程之后，发现自己明白了很多，却又几乎什么都记不得，那也是很正常的——我认为，没接触过正则表达式的人在看完这篇教程后，能把提到过的语法记住80%以上的可能性为零。这里只是让你明白基本的原理，以后你还需要多练习，多使用，才能熟练掌握正则表达式。</p>
<p>除了作为入门教程之外，本文还试图成为可以在日常工作中使用的正则表达式语法参考手册。就作者本人的经历来说，这个目标还是完成得不错的——你看，我自己也没能把所有的东西记下来，不是吗？</p>
<p><a href="http://deerchao.net/tutorials/regex/regex.htm">清除格式</a> 文本格式约定：专业术语 元字符/语法格式 正则表达式 正则表达式中的一部分(用于分析) 对其进行匹配的源字符串 对正则表达式或其中一部分的说明</p>
<p><a href="http://deerchao.net/tutorials/regex/regex.htm">隐藏边注</a> 本文右边有一些注释，主要是用来提供一些相关信息，或者给没有程序员背景的读者解释一些基本概念，通常可以忽略。</p>
<h4>正则表达式到底是什么东西？</h4>
<p>字符是计算机软件处理文字时最基本的单位，可能是字母，数字，标点符号，空格，换行符，汉字等等。字符串是0个或更多个字符的序列。文本也就是文字，字符串。说某个字符串匹配某个正则表达式，通常是指这个字符串里有一部分（或几部分分别）能满足表达式给出的条件。</p>
<p>在编写处理字符串的程序或网页时，经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说，正则表达式就是记录文本规则的代码。</p>
<p>很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard)，也就是*和?。如果你想查找某个目录下的所有的Word文档的话，你会搜索*.doc。在这里，*会被解释成任意的字符串。和通配符类似，正则表达式也是用来进行文本匹配的工具，只不过比起通配符，它能更精确地描述你的需求——当然，代价就是更复杂——比如你可以编写一个正则表达式，用来查找所有以0开头，后面跟着2-3个数字，然后是一个连字号“-”，最后是7或8位数字的字符串(像010-12345678或0376-7654321)。</p>
<h4>入门</h4>
<p>学习正则表达式的最好方法是从例子开始，理解例子之后再自己对例子进行修改，实验。下面给出了不少简单的例子，并对它们作了详细的说明。</p>
<p>假设你在一篇英文小说里查找hi，你可以使用正则表达式hi。</p>
<p>这几乎是最简单的正则表达式了，它可以精确匹配这样的字符串：由两个字符组成，前一个字符是h,后一个是i。通常，处理正则表达式的工具会提供一个忽略大小写的选项，如果选中了这个选项，它可以匹配hi,HI,Hi,hI这四种情况中的任意一种。</p>
<p>不幸的是，很多单词里包含hi这两个连续的字符，比如him,history,high等等。用hi来查找的话，这里边的hi也会被找出来。如果要精确地查找hi这个单词的话，我们应该使用\bhi\b。</p>
<p>\b是正则表达式规定的一个特殊代码（好吧，某些人叫它元字符，metacharacter），代表着单词的开头或结尾，也就是单词的分界处。虽然通常英文的单词是由空格，标点符号或者换行来分隔的，但是\b并不匹配这些单词分隔字符中的任何一个，它<strong>只匹配一个位置</strong>。</p>
<p>如果需要更精确的说法，\b匹配这样的位置：它的前一个字符和后一个字符不全是(一个是,一个不是或不存在)\w。</p>
<p>假如你要找的是hi后面不远处跟着一个Lucy，你应该用\bhi\b.*\bLucy\b。</p>
<p>这里，.是另一个元字符，匹配除了换行符以外的任意字符。*同样是元字符，不过它代表的不是字符，也不是位置，而是数量——它指定*前边的内容可以连续重复使用任意次以使整个表达式得到匹配。因此，.*连在一起就意味着任意数量的不包含换行的字符。现在\bhi\b.*\bLucy\b的意思就很明显了：先是一个单词hi,然后是任意个任意字符(但不能是换行)，最后是Lucy这个单词。</p>
<p>换行符就是'\n',ASCII编码为10(十六进制0x0A)的字符。</p>
<p>如果同时使用其它元字符，我们就能构造出功能更强大的正则表达式。比如下面这个例子：</p>
<p>0\d\d-\d\d\d\d\d\d\d\d匹配这样的字符串：以0开头，然后是两个数字，然后是一个连字号“-”，最后是8个数字(也就是中国的电话号码。当然，这个例子只能匹配区号为3位的情形)。</p>
<p>这里的\d是个新的元字符，匹配一位数字(0，或1，或2，或……)。-不是元字符，只匹配它本身——连字符(或者减号，或者中横线，或者随你怎么称呼它)。</p>
<p>为了避免那么多烦人的重复，我们也可以这样写这个表达式：0\d{2}-\d{8}。 这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次)。</p>
<h4>测试正则表达式</h4>
<p>其它可用的测试工具:</p>
<ul>
<li><a href="http://www.regexbuddy.com/">RegexBuddy</a></li>
<li><a href="http://regexpal.com/">Javascript正则表达式在线测试工具</a></li>
</ul>
<p>如果你不觉得正则表达式很难读写的话，要么你是一个天才，要么，你不是地球人。正则表达式的语法很令人头疼，即使对经常使用它的人来说也是如此。由于难于读写，容易出错，所以找一种工具对正则表达式进行测试是很有必要的。</p>
<p>不同的环境下正则表达式的一些细节是不相同的，本教程介绍的是微软 .Net Framework 4.0 下正则表达式的行为，所以，我向你推荐我编写的.Net下的工具 <a href="http://www.jb51.net/tools/regex_tester/index.htm">正则表达式测试器</a>。请参考该页面的说明来安装和运行该软件。</p>
<h4>元字符</h4>
<p>现在你已经知道几个很有用的元字符了，如\b,.,*，还有\d.正则表达式里还有更多的元字符，比如\s匹配任意的空白符，包括空格，制表符(Tab)，换行符，中文全角空格等。\w匹配字母或数字或下划线或汉字等。</p>
<p>对中文/汉字的特殊处理是由.Net提供的正则表达式引擎支持的，其它环境下的具体情况请查看相关文档。</p>
<p>下面来看看更多的例子：</p>
<p>\ba\w*\b匹配以字母a开头的单词——先是某个单词开始处(\b)，然后是字母a,然后是任意数量的字母或数字(\w*)，最后是单词结束处(\b)。</p>
<p>好吧，现在我们说说正则表达式里的单词是什么意思吧：就是不少于一个的连续的\w。不错，这与学习英文时要背的成千上万个同名的东西的确关系不大 :)</p>
<p>\d+匹配1个或更多连续的数字。这里的+是和*类似的元字符，不同的是*匹配重复任意次(可能是0次)，而+则匹配重复1次或更多次。</p>
<p>\b\w{6}\b 匹配刚好6个字符的单词。</p>
<p>表1.常用的元字符</p>
<p>代码<br />
说明</p>
<p>.<br />
匹配除换行符以外的任意字符</p>
<p>\w<br />
匹配字母或数字或下划线或汉字</p>
<p>\s<br />
匹配任意的空白符</p>
<p>\d<br />
匹配数字</p>
<p>\b<br />
匹配单词的开始或结束</p>
<p>^<br />
匹配字符串的开始</p>
<p>$<br />
匹配字符串的结束</p>
<p>正则表达式引擎通常会提供一个“测试指定的字符串是否匹配一个正则表达式”的方法，如JavaScript里的RegExp.test()方法或.NET里的Regex.IsMatch()方法。这里的匹配是指是字符串里有没有符合表达式规则的部分。如果不使用^和$的话，对于\d{5,12}而言，使用这样的方法就只能保证字符串里包含5到12连续位数字，而不是整个字符串就是5到12位数字。</p>
<p>元字符^（和数字6在同一个键位上的符号）和$都匹配一个位置，这和\b有点类似。^匹配你要用来查找的字符串的开头，$匹配结尾。这两个代码在验证输入的内容时非常有用，比如一个网站如果要求你填写的QQ号必须为5位到12位数字时，可以使用：^\d{5,12}$。</p>
<p>这里的{5,12}和前面介绍过的{2}是类似的，只不过{2}匹配只能不多不少重复2次，{5,12}则是重复的次数不能少于5次，不能多于12次，否则都不匹配。</p>
<p>因为使用了^和$，所以输入的整个字符串都要用来和\d{5,12}来匹配，也就是说整个输入必须是5到12个数字，因此如果输入的QQ号能匹配这个正则表达式的话，那就符合要求了。</p>
<p>和忽略大小写的选项类似，有些正则表达式处理工具还有一个处理多行的选项。如果选中了这个选项，^和$的意义就变成了匹配行的开始处和结束处。</p>
<h4>字符转义</h4>
<p>如果你想查找元字符本身的话，比如你查找.,或者*,就出现了问题：你没办法指定它们，因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此，你应该使用\.和\*。当然，要查找\本身，你也得用\\.</p>
<p>例如：deerchao\.net匹配deerchao.net，C:\\Windows匹配C:\Windows。</p>
<h4>重复</h4>
<p>更多正则表达式相关资料可以到<a href="http://www.jb51.net/list/list_6_1.htm">http://www.jb51.net/list/list_6_1.htm</a>查看</p>
<p>你已经看过了前面的*,+,{2},{5,12}这几个匹配重复的方式了。下面是正则表达式中所有的限定符(指定数量的代码，例如*,{5,12}等)：</p>
<p>表2.常用的限定符</p>
<p>代码/语法<br />
说明</p>
<p>*<br />
重复零次或更多次</p>
<p>+<br />
重复一次或更多次</p>
<p>?<br />
重复零次或一次</p>
<p>{n}<br />
重复n次</p>
<p>{n,}<br />
重复n次或更多次</p>
<p>{n,m}<br />
重复n到m次</p>
<p>下面是一些使用重复的例子：</p>
<p>Windows\d+匹配Windows后面跟1个或更多数字</p>
<p>^\w+匹配一行的第一个单词(或整个字符串的第一个单词，具体匹配哪个意思得看选项设置)</p>
<h4>字符类</h4>
<p>要想查找数字，字母或数字，空白是很简单的，因为已经有了对应这些字符集合的元字符，但是如果你想匹配没有预定义元字符的字符集合(比如元音字母a,e,i,o,u),应该怎么办？</p>
<p>很简单，你只需要在方括号里列出它们就行了，像[aeiou]就匹配任何一个英文元音字母，[.?!]匹配标点符号(.或?或!)。</p>
<p>我们也可以轻松地指定一个字符范围，像[0-9]代表的含意与\d就是完全一致的：一位数字；同理[a-z0-9A-Z_]也完全等同于\w（如果只考虑英文的话）。</p>
<p>下面是一个更复杂的表达式：\(?0\d{2}[) -]?\d{8}。</p>
<p>“(”和“)”也是元字符，后面的<a href="http://www.jb51.net/tools/zhengze.html#grouping">分组节</a>里会提到，所以在这里需要使用<a href="http://www.jb51.net/tools/zhengze.html#escape">转义</a>。</p>
<p>这个表达式可以匹配几种格式的电话号码，像(010)88886666，或022-22334455，或02912345678等。我们对它进行一些分析吧：首先是一个转义字符\(,它能出现0次或1次(?),然后是一个0，后面跟着2个数字(\d{2})，然后是)或-或空格中的一个，它出现1次或不出现(?)，最后是8个数字(\d{8})。</p>
<h4>分枝条件</h4>
<p>不幸的是，刚才那个表达式也能匹配010)12345678或(022-87654321这样的“不正确”的格式。要解决这个问题，我们需要用到分枝条件。正则表达式里的分枝条件指的是有几种规则，如果满足其中任意一种规则都应该当成匹配，具体方法是用&#124;把不同的规则分隔开。听不明白？没关系，看例子：</p>
<p>0\d{2}-\d{8}&#124;0\d{3}-\d{7}这个表达式能匹配两种以连字号分隔的电话号码：一种是三位区号，8位本地号(如010-12345678)，一种是4位区号，7位本地号(0376-2233445)。</p>
<p>\(?0\d{2}\)?[- ]?\d{8}&#124;0\d{2}[- ]?\d{8}这个表达式匹配3位区号的电话号码，其中区号可以用小括号括起来，也可以不用，区号与本地号间可以用连字号或空格间隔，也可以没有间隔。你可以试试用分枝条件把这个表达式扩展成也支持4位区号的。</p>
<p>\d{5}-\d{4}&#124;\d{5}这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字，或者用连字号间隔的9位数字。之所以要给出这个例子是因为它能说明一个问题：<strong>使用分枝条件时，要注意各个条件的顺序</strong>。如果你把它改成\d{5}&#124;\d{5}-\d{4}的话，那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时，将会从左到右地测试每个条件，如果满足了某个分枝的话，就不会去再管其它的条件了。</p>
<h4>分组</h4>
<p>我们已经提到了怎么重复单个字符（直接在字符后面加上限定符就行了）；但如果想要重复多个字符又该怎么办？你可以用小括号来指定子表达式(也叫做分组)，然后你就可以指定这个子表达式的重复次数了，你也可以对子表达式进行其它一些操作(后面会有介绍)。</p>
<p>(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式，请按下列顺序分析它：\d{1,3}匹配1到3位的数字，(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次，最后再加上一个一到三位的数字(\d{1,3})。</p>
<p>IP地址中每个数字都不能大于255，大家千万不要被《24》第三季的编剧给忽悠了……</p>
<p>不幸的是，它也将匹配256.300.888.999这种不可能存在的IP地址。如果能使用算术比较的话，或许能简单地解决这个问题，但是正则表达式中并不提供关于数学的任何功能，所以只能使用冗长的分组，选择，字符类来描述一个正确的IP地址：((2[0-4]\d&#124;25[0-5]&#124;[01]?\d\d?)\.){3}(2[0-4]\d&#124;25[0-5]&#124;[01]?\d\d?)。</p>
<p>理解这个表达式的关键是理解2[0-4]\d&#124;25[0-5]&#124;[01]?\d\d?，这里我就不细说了，你自己应该能分析得出来它的意义。</p>
<h4>反义</h4>
<p>有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外，其它任意字符都行的情况，这时需要用到反义：</p>
<p>表3.常用的反义代码</p>
<p>代码/语法<br />
说明</p>
<p>\W<br />
匹配任意不是字母，数字，下划线，汉字的字符</p>
<p>\S<br />
匹配任意不是空白符的字符</p>
<p>\D<br />
匹配任意非数字的字符</p>
<p>\B<br />
匹配不是单词开头或结束的位置</p>
<p>[^x]<br />
匹配除了x以外的任意字符</p>
<p>[^aeiou]<br />
匹配除了aeiou这几个字母以外的任意字符</p>
<p>例子：\S+匹配不包含空白符的字符串。</p>
<p>&#60;a[^&#62;]+&#62;匹配用尖括号括起来的以a开头的字符串。</p>
<h4>后向引用</h4>
<p>使用小括号指定一个子表达式后，<strong>匹配这个子表达式的文本</strong>(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下，每个分组会自动拥有一个组号，规则是：从左向右，以分组的左括号为标志，第一个出现的分组的组号为1，第二个为2，以此类推。</p>
<p>呃……其实,组号分配还不像我刚说得那么简单：</p>
<ul>
<li>分组0对应整个正则表达式</li>
<li>实际上组号分配过程是要从左向右扫描两遍的：第一遍只给未命名组分配，第二遍只给命名组分配－－因此所有命名组的组号都大于未命名的组号</li>
<li>你可以使用(?:exp)这样的语法来剥夺一个分组对组号分配的参与权．</li>
</ul>
<p>后向引用用于重复搜索前面某个分组匹配的文本。例如，\1代表分组1匹配的文本。难以理解？请看示例：</p>
<p>\b(\w+)\b\s+\1\b可以用来匹配重复的单词，像go go, 或者kitty kitty。这个表达式首先是一个单词，也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b)，这个单词会被捕获到编号为1的分组中，然后是1个或几个空白符(\s+)，最后是分组1中捕获的内容（也就是前面匹配的那个单词）(\1)。</p>
<p>你也可以自己指定子表达式的组名。要指定一个子表达式的组名，请使用这样的语法：(?&#60;Word&#62;\w+)(或者把尖括号换成'也行：(?'Word'\w+)),这样就把\w+的组名指定为Word了。要反向引用这个分组捕获的内容，你可以使用\k&#60;Word&#62;,所以上一个例子也可以写成这样：\b(?&#60;Word&#62;\w+)\b\s+\k&#60;Word&#62;\b。</p>
<p>使用小括号的时候，还有很多特定用途的语法。下面列出了最常用的一些：</p>
<p>表4.常用分组语法</p>
<p>分类<br />
代码/语法<br />
说明</p>
<p>捕获<br />
(exp)<br />
匹配exp,并捕获文本到自动命名的组里</p>
<p>(?&#60;name&#62;exp)<br />
匹配exp,并捕获文本到名称为name的组里，也可以写成(?'name'exp)</p>
<p>(?:exp)<br />
匹配exp,不捕获匹配的文本，也不给此分组分配组号</p>
<p>零宽断言<br />
(?=exp)<br />
匹配exp前面的位置</p>
<p>(?&#60;=exp)<br />
匹配exp后面的位置</p>
<p>(?!exp)<br />
匹配后面跟的不是exp的位置</p>
<p>(?&#60;!exp)<br />
匹配前面不是exp的位置</p>
<p>注释<br />
(?#comment)<br />
这种类型的分组不对正则表达式的处理产生任何影响，用于提供注释让人阅读</p>
<p>我们已经讨论了前两种语法。第三个(?:exp)不会改变正则表达式的处理方式，只是这样的组匹配的内容不会像前两种那样被捕获到某个组里面，也不会拥有组号。“我为什么会想要这样做？”——好问题，你觉得为什么呢？</p>
<h4>零宽断言</h4>
<p>地球人，是不是觉得这些术语名称太复杂，太难记了？我也有同感。知道有这么一种东西就行了，它叫什么，随它去吧！人若无名，便可专心练剑；物若无名，便可随意取舍……</p>
<p>接下来的四个用于查找在某些内容(但并不包括这些内容)之前或之后的东西，也就是说它们像\b,^,$那样用于指定一个位置，这个位置应该满足一定的条件(即断言)，因此它们也被称为零宽断言。最好还是拿例子来说明吧：</p>
<p>断言用来声明一个应该为真的事实。正则表达式中只有当断言为真时才会继续进行匹配。</p>
<p>(?=exp)也叫零宽度正预测先行断言，它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=ing\b)，匹配以ing结尾的单词的前面部分(除了ing以外的部分)，如查找I'm singing while you're dancing.时，它会匹配sing和danc。</p>
<p>(?&#60;=exp)也叫零宽度正回顾后发断言，它断言自身出现的位置的前面能匹配表达式exp。比如(?&#60;=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分)，例如在查找reading a book时，它匹配ading。</p>
<p>假如你想要给一个很长的数字中每三位间加一个逗号(当然是从右边加起了)，你可以这样查找需要在前面和里面添加逗号的部分：((?&#60;=\d)\d{3})+\b，用它对1234567890进行查找时结果是234567890。</p>
<p>下面这个例子同时使用了这两种断言：(?&#60;=\s)\d+(?=\s)匹配以空白符间隔的数字(再次强调，不包括这些空白符)。</p>
<h4>负向零宽断言</h4>
<p>前面我们提到过怎么查找<strong>不是某个字符或不在某个字符类里</strong>的字符的方法(反义)。但是如果我们只是想要<strong>确保某个字符没有出现，但并不想去匹配它</strong>时怎么办？例如，如果我们想查找这样的单词--它里面出现了字母q,但是q后面跟的不是字母u,我们可以尝试这样：</p>
<p>\b\w*q[^u]\w*\b匹配包含<strong>后面不是字母u的字母q</strong>的单词。但是如果多做测试(或者你思维足够敏锐，直接就观察出来了)，你会发现，如果q出现在单词的结尾的话，像<strong>Iraq</strong>,<strong>Benq</strong>，这个表达式就会出错。这是因为[^u]总要匹配一个字符，所以如果q是单词的最后一个字符的话，后面的[^u]将会匹配q后面的单词分隔符(可能是空格，或者是句号或其它的什么)，后面的\w*\b将会匹配下一个单词，于是\b\w*q[^u]\w*\b就能匹配整个Iraq fighting。负向零宽断言能解决这样的问题，因为它只匹配一个位置，并不<strong>消费</strong>任何字符。现在，我们可以这样来解决这个问题：\b\w*q(?!u)\w*\b。</p>
<p>零宽度负预测先行断言(?!exp)，断言此位置的后面不能匹配表达式exp。例如：\d{3}(?!\d)匹配三位数字，而且这三位数字的后面不能是数字；\b((?!abc)\w)+\b匹配不包含连续字符串abc的单词。</p>
<p>同理，我们可以用(?&#60;!exp),零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp：(?&#60;![a-z])\d{7}匹配前面不是小写字母的七位数字。</p>
<p>请详细分析表达式(?&#60;=&#60;(\w+)&#62;).*(?=&#60;\/\1&#62;)，这个表达式最能表现零宽断言的真正用途。</p>
<p>一个更复杂的例子：(?&#60;=&#60;(\w+)&#62;).*(?=&#60;\/\1&#62;)匹配不包含属性的简单HTML标签内里的内容。(?&#60;=&#60;(\w+)&#62;)指定了这样的前缀：被尖括号括起来的单词(比如可能是&#60;b&#62;)，然后是.*(任意的字符串),最后是一个后缀(?=&#60;\/\1&#62;)。注意后缀里的\/，它用到了前面提过的字符转义；\1则是一个反向引用，引用的正是捕获的第一组，前面的(\w+)匹配的内容，这样如果前缀实际上是&#60;b&#62;的话，后缀就是&#60;/b&#62;了。整个表达式匹配的是&#60;b&#62;和&#60;/b&#62;之间的内容(再次提醒，不包括前缀和后缀本身)。</p>
<h4>注释</h4>
<p>小括号的另一种用途是通过语法(?#comment)来包含注释。例如：2[0-4]\d(?#200-249)&#124;25[0-5](?#250-255)&#124;[01]?\d\d?(?#0-199)。</p>
<p>要包含注释的话，最好是启用“忽略模式里的空白符”选项，这样在编写表达式时能任意的添加空格，Tab，换行，而实际使用时这些都将被忽略。启用这个选项后，在#后面到这一行结束的所有文本都将被当成注释忽略掉。例如，我们可以前面的一个表达式写成这样：</p>
<pre>      (?&#60;=    # 断言要匹配的文本的前缀
      &#60;(\w+)&#62; # 查找尖括号括起来的字母或数字(即HTML/XML标签)
      )       # 前缀结束
      .*      # 匹配任意文本
      (?=     # 断言要匹配的文本的后缀
      &#60;\/\1&#62;  # 查找尖括号括起来的内容：前面是一个"/"，后面是先前捕获的标签
      )       # 后缀结束</pre>
<h4>贪婪与懒惰</h4>
<p>当正则表达式中包含能接受重复的限定符时，通常的行为是（在使整个表达式能得到匹配的前提下）匹配<strong>尽可能多</strong>的字符。以这个表达式为例：a.*b，它将会匹配最长的以a开始，以b结束的字符串。如果用它来搜索aabab的话，它会匹配整个字符串aabab。这被称为贪婪匹配。</p>
<p>有时，我们更需要懒惰匹配，也就是匹配<strong>尽可能少</strong>的字符。前面给出的限定符都可以被转化为懒惰匹配模式，只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复，但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧：</p>
<p>a.*?b匹配最短的，以a开始，以b结束的字符串。如果把它应用于aabab的话，它会匹配aab（第一到第三个字符）和ab（第四到第五个字符）。</p>
<p>为什么第一个匹配是aab（第一到第三个字符）而不是ab（第二到第三个字符）？简单地说，因为正则表达式有另一条规则，比懒惰／贪婪规则的优先级更高：最先开始的匹配拥有最高的优先权——The match that begins earliest wins。</p>
<p>表5.懒惰限定符</p>
<p>代码/语法</p>
<p>说明</p>
<p>*?</p>
<p>重复任意次，但尽可能少重复</p>
<p>+?</p>
<p>重复1次或更多次，但尽可能少重复</p>
<p>??</p>
<p>重复0次或1次，但尽可能少重复</p>
<p>{n,m}?</p>
<p>重复n到m次，但尽可能少重复</p>
<p>{n,}?</p>
<p>重复n次以上，但尽可能少重复</p>
<h4>处理选项</h4>
<p>在C#中，你可以使用<a href="http://msdn2.microsoft.com/zh-cn/library/h5845fdz.aspx">Regex(String, RegexOptions)构造函数</a>来设置正则表达式的处理选项。如：Regex regex = new Regex(@"\ba\w{6}\b", RegexOptions.IgnoreCase);</p>
<p>上面介绍了几个选项如忽略大小写，处理多行等，这些选项能用来改变处理正则表达式的方式。下面是.Net中常用的正则表达式选项：</p>
<p>表6.常用的处理选项</p>
<p>名称</p>
<p>说明</p>
<p>IgnoreCase(忽略大小写)</p>
<p>匹配时不区分大小写。</p>
<p>Multiline(多行模式)</p>
<p>更改^和$的含义，使它们分别在任意一行的行首和行尾匹配，而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.)</p>
<p>Singleline(单行模式)</p>
<p>更改.的含义，使它与每一个字符匹配（包括换行符\n）。</p>
<p>IgnorePatternWhitespace(忽略空白)</p>
<p>忽略表达式中的非转义空白并启用由#标记的注释。</p>
<p>ExplicitCapture(显式捕获)</p>
<p>仅捕获已被显式命名的组。</p>
<p>一个经常被问到的问题是：是不是只能同时使用多行模式和单行模式中的一种？答案是：不是。这两个选项之间没有任何关系，除了它们的名字比较相似（以至于让人感到疑惑）以外。</p>
<h4>平衡组/递归匹配</h4>
<p>这里介绍的平衡组语法是由.Net Framework支持的；其它语言／库不一定支持这种功能，或者支持此功能但需要使用不同的语法。</p>
<p>有时我们需要匹配像( 100 * ( 50 + 15 ) )这样的可嵌套的层次性结构，这时简单地使用\(.+\)则只会匹配到最左边的左括号和最右边的右括号之间的内容(这里我们讨论的是贪婪模式，懒惰模式也有下面的问题)。假如原来的字符串里的左括号和右括号出现的次数不相等，比如( 5 / ( 3 + 2 ) ) )，那我们的匹配结果里两者的个数也不会相等。有没有办法在这样的字符串里匹配到最长的，配对的括号之间的内容呢？</p>
<p>为了避免(和\(把你的大脑彻底搞糊涂，我们还是用尖括号代替圆括号吧。现在我们的问题变成了如何把xx &#60;aa &#60;bbb&#62; &#60;bbb&#62; aa&#62; yy这样的字符串里，最长的配对的尖括号内的内容捕获出来？</p>
<p>这里需要用到以下的语法构造：</p>
<ul>
<li>(?'group') 把捕获的内容命名为group,并压入堆栈(Stack)</li>
<li>(?'-group') 从堆栈上弹出最后压入堆栈的名为group的捕获内容，如果堆栈本来为空，则本分组的匹配失败</li>
<li>(?(group)yes&#124;no) 如果堆栈上存在以名为group的捕获内容的话，继续匹配yes部分的表达式，否则继续匹配no部分</li>
<li>(?!) 零宽负向先行断言，由于没有后缀表达式，试图匹配总是失败</li>
</ul>
<p>如果你不是一个程序员（或者你自称程序员但是不知道堆栈是什么东西），你就这样理解上面的三种语法吧：第一个就是在黑板上写一个"group"，第二个就是从黑板上擦掉一个"group"，第三个就是看黑板上写的还有没有"group"，如果有就继续匹配yes部分，否则就匹配no部分。</p>
<p>我们需要做的是每碰到了左括号，就在压入一个"Open",每碰到一个右括号，就弹出一个，到了最后就看看堆栈是否为空－－如果不为空那就证明左括号比右括号多，那匹配就应该失败。正则表达式引擎会进行回溯(放弃最前面或最后面的一些字符)，尽量使整个表达式得到匹配。</p>
<pre>&#60;                         #最外层的左括号
    [^&#60;&#62;]*                #最外层的左括号后面的不是括号的内容
    (
        (
            (?'Open'&#60;)    #碰到了左括号，在黑板上写一个"Open"
            [^&#60;&#62;]*       #匹配左括号后面的不是括号的内容
        )+
        (
            (?'-Open'&#62;)   #碰到了右括号，擦掉一个"Open"
            [^&#60;&#62;]*        #匹配右括号后面不是括号的内容
        )+
    )*
    (?(Open)(?!))         #在遇到最外层的右括号前面，判断黑板上还有没有没擦掉的"Open"；如果还有，则匹配失败

&#62;                         #最外层的右括号</pre>
<p>平衡组的一个最常见的应用就是匹配HTML,下面这个例子可以匹配嵌套的&#60;div&#62;标签：&#60;div[^&#62;]*&#62;[^&#60;&#62;]*(((?'Open'&#60;div[^&#62;]*&#62;)[^&#60;&#62;]*)+((?'-Open'&#60;/div&#62;)[^&#60;&#62;]*)+)*(?(Open)(?!))&#60;/div&#62;.</p>
<h4>还有些什么东西没提到</h4>
<p>上边已经描述了构造正则表达式的大量元素，但是还有很多没有提到的东西。下面是一些未提到的元素的列表，包含语法和简单的说明。你可以在网上找到更详细的参考资料来学习它们--当你需要用到它们的时候。如果你安装了MSDN Library,你也可以在里面找到.net下正则表达式详细的文档。</p>
<p>这里的介绍很简略，如果你需要更详细的信息，而又没有在电脑上安装MSDN Library,可以查看<a href="http://msdn.microsoft.com/zh-cn/library/az24scfc.aspx">关于正则表达式语言元素的MSDN在线文档</a>。</p>
<p>表7.尚未详细讨论的语法</p>
<p>代码/语法</p>
<p>说明</p>
<p>\a</p>
<p>报警字符(打印它的效果是电脑嘀一声)</p>
<p>\b</p>
<p>通常是单词分界位置，但如果在字符类里使用代表退格</p>
<p>\t</p>
<p>制表符，Tab</p>
<p>\r</p>
<p>回车</p>
<p>\v</p>
<p>竖向制表符</p>
<p>\f</p>
<p>换页符</p>
<p>\n</p>
<p>换行符</p>
<p>\e</p>
<p>Escape</p>
<p>\0nn</p>
<p>ASCII代码中八进制代码为nn的字符</p>
<p>\xnn</p>
<p>ASCII代码中十六进制代码为nn的字符</p>
<p>\unnnn</p>
<p>Unicode代码中十六进制代码为nnnn的字符</p>
<p>\cN</p>
<p>ASCII控制字符。比如\cC代表Ctrl+C</p>
<p>\A</p>
<p>字符串开头(类似^，但不受处理多行选项的影响)</p>
<p>\Z</p>
<p>字符串结尾或行尾(不受处理多行选项的影响)</p>
<p>\z</p>
<p>字符串结尾(类似$，但不受处理多行选项的影响)</p>
<p>\G</p>
<p>当前搜索的开头</p>
<p>\p{name}</p>
<p>Unicode中命名为name的字符类，例如\p{IsGreek}</p>
<p>(?&#62;exp)</p>
<p>贪婪子表达式</p>
<p>(?&#60;x&#62;-&#60;y&#62;exp)</p>
<p>平衡组</p>
<p>(?im-nsx:exp)</p>
<p>在子表达式exp中改变处理选项</p>
<p>(?im-nsx)</p>
<p>为表达式后面的部分改变处理选项</p>
<p>(?(exp)yes&#124;no)</p>
<p>把exp当作零宽正向先行断言，如果在这个位置能匹配，使用yes作为此组的表达式；否则使用no</p>
<p>(?(exp)yes)</p>
<p>同上，只是使用空表达式作为no</p>
<p>(?(name)yes&#124;no)</p>
<p>如果命名为name的组捕获到了内容，使用yes作为表达式；否则使用no</p>
<p>(?(name)yes)</p>
<p>同上，只是使用空表达式作为no</p>
<h4>联系作者</h4>
<p>好吧,我承认,我骗了你,读到这里你肯定花了不止30分钟.相信我,这是我的错,而不是因为你太笨.我之所以说"30分钟",是为了让你有信心,有耐心继续下去.既然你看到了这里,那证明我的阴谋成功了.被忽悠的感觉很爽吧？</p>
<p>要投诉我,或者觉得我其实可以忽悠得更高明,或者有任何其它问题,欢迎来我的博客让我知道.</p>
<h4>网上的资源及本文参考文献</h4>
<ul>
<li><a href="http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/jscript7/html/jsreconintroductiontoregularexpressions.asp">微软的正则表达式教程</a></li>
<li><a href="http://msdn2.microsoft.com/zh-cn/library/system.text.regularexpressions.regex.aspx">System.Text.RegularExpressions.Regex类(MSDN)</a></li>
<li><a href="http://www.regular-expressions.info/">专业的正则表达式教学网站(英文)</a></li>
<li><a href="http://weblogs.asp.net/whaggard/archive/2005/02/20/377025.aspx">关于.Net下的平衡组的详细讨论（英文）</a></li>
<li><a href="http://www.oreilly.com/catalog/regex2/">Mastering Regular Expressions (Second Edition)</a></li>
</ul>
<h4>更新纪录</h4>
<ol>
<li>2006-3-27 第一版</li>
<li>2006-10-12 第二版
<ul>
<li>修正了几个细节上的错误和不准确的地方</li>
<li>增加了对处理中文时的一些说明</li>
<li>更改了几个术语的翻译（采用了MSDN的翻译方式）</li>
<li>增加了平衡组的介绍</li>
<li>放弃了对The Regulator的介绍，改用Regex Tester</li>
</ul>
</li>
<li>2007-3-12 V2.1
<ul>
<li>修正了几个小的错误</li>
<li>增加了对处理选项(RegexOptions)的介绍</li>
</ul>
</li>
<li>2007-5-28 V2.2
<ul>
<li>重新组织了对零宽断言的介绍</li>
<li>删除了几个不太合适的示例，添加了几个实用的示例</li>
<li>其它一些微小的更改</li>
</ul>
</li>
<li>2007-8-3 V2.21
<ul>
<li>修改了几处文字错误</li>
<li>修改/添加了对$,\b的精确说明</li>
<li>承认了作者是个骗子</li>
<li>给RegexTester添加了Singleline选项的相关功能</li>
</ul>
</li>
<li>2008-4-13 v2.3
<ul>
<li>调整了部分章节的次序</li>
<li>修改了页面布局，删除了专门的参考节</li>
<li>针对读者的反馈，调整了部分内容</li>
</ul>
</li>
<li>2009-4-11 v2.31
<ul>
<li>修改了几处文字错误</li>
<li>添加了一些注释说明</li>
<li>调整了一些措词</li>
</ul>
</li>
<li>2011-8-17 v2.32
<ul>
<li>更改了工具介绍，换用自行开发的正则表达式测试器</li>
</ul>
</li>
</ol>
<p><a rel="nofollow" href="http://www.lvjiyong.com/i489.html">正则表达式30分钟入门教程</a>，首发于<a rel="nofollow" href="http://www.lvjiyong.com">吕的部落格</a>。</p>
]]></description>
		<wfw:commentRss>http://www.lvjiyong.com/i489.html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>警惕企业中的五种虚假执行力</title>
		<link>http://www.lvjiyong.com/i487.html</link>
		<comments>http://www.lvjiyong.com/i487.html#comments</comments>
		<pubDate>Tue, 18 Jun 2013 14:24:16 +0000</pubDate>
		<dc:creator><![CDATA[吕]]></dc:creator>
				<category><![CDATA[读书]]></category>
		<category><![CDATA[执行力]]></category>

		<guid isPermaLink="false">http://www.lvjiyong.com/?p=487</guid>
		<description><![CDATA[<h2><strong>第一种虚假执行力：无条件服从——只强调员工“服从”，不强调员工的智慧</strong></h2>
<p>很多人讲执行力，很喜欢强调员工的无条件服从。这种观念是OEM(代工生产)制造业时代的产物。实际上这是一种基于“规模制造”的虚假执行力，其本质是把人当成了工具。而现在与过去的不同在于：</p>
<p>过去OEM时代，强调员工无条件服从，目的是进行机械化大生产，规模效率;</p>
<p>现在是品牌创造时代，强调要激发和运用员工的智慧，目的是关注消费者，提供个性化的独特价值!</p>
<p><strong>OEM时代，强调员工无条件服从</strong></p>
<p>改革开放初期，当时的形势是所谓的“两头在外”——原料在外，市场在外。在这个阶段，我们打造出来的是一大批代工企业，以山寨模仿为潮流，以速度为竞争优势。</p>
<p>拿温州打火机举个例子。20世纪90年代，国际上最新款的打火机，不出数月，温州就可以量产，并且不断改进，出厂价不到日本产的1/5。</p>
<p>温州的模仿速度最快，成本又最低，加上绝对的价格优势，市场几乎为之癫狂。按有人的话说：“货车就等在路边，一下装配线，马上打包发货。”</p>
<p>此时，以代工企业为代表的中国经济发展，技术是西方的，产品是西方的。企业要做的只是模仿，要的就是快，要的就是把成本降低，要的就是员工服从。</p>
<p>此一时，彼一时，现在时代变了，“无条件服从”反而成了劣势。</p>
<p><strong>品牌创造时代，强调员工智慧</strong></p>
<p>今天的中国经济正在从制造转向创造，从OEM制造转向品牌制造。</p>
<p>以玩具行业为例。中国的玩具企业70%做代工，这几年来，整个行业几乎都在冬天挣扎。合俊集团，曾是全球最大的玩具代工企业，但是在2008年，在东莞说倒闭就倒了。在这种经济局势下，员工再怎么无条件服从也无济于事!再怎么无条件服从，也不能让企业活得更好!</p>
<p>这说明，能够推动中国经济发展的，不再是员工的手脚，而是员工的头脑。</p>
<p>在愁云惨雾的玩具行业中，当其他玩具行业都在挣扎的时候，有一家玩具企业正相反，活得非常好，这家公司叫奥飞动漫。我亲自服务过这家企业，为这家公司提供过战略与执行一体化服务。这家公司的前身叫“奥迪玩具”，也是一家传统玩具公司，也做过代工。</p>
<p>奥飞动漫从2004年开始转型，目标是做“中国的迪斯尼”。他们自己拍动漫、收购电视台、开发动漫玩具，打造“奥迪玩具““奥飞文化”品牌。</p>
<p>2009年，在整个玩具行业最惨淡的时候，奥飞动漫A股火爆上市，被誉为“冬天里的一把火”。</p>
<p>品牌创造的时代，企业需要的执行力不是无条件服从，而是对目标客户需求的准确理解，而这种理解背后，需要的是员工的智慧。奥飞动漫恰恰就是抓准了目标客户的娱乐需求。</p>
<p>奥飞动漫为了满足目标客户的这种需求，在产品的创意和制作上花费很大的心力，对动画制作以及管理团队的素质也相当重视。它的动画制作及管理团队有上百名成员，其中动画、漫画、电视剧等主要创意和制作人员中，有相当一部分是高薪从中国香港请来的。这支团队打造了《火力少年》《铠甲勇士》《电击小子》《果宝特攻》等一系列经典动漫产品，深受孩子们的欢迎。</p>
<p>准，是这个时代的特点。谁能够准确理解消费者的内在需求，谁能够让员工创造性地满足客户，谁就能活得好。</p>
<p>准，就要关注消费者，就要激发员工的智慧!</p>
<h2><strong>第二种虚假执行力：没有任何借口——只强调员工责任，不强调领导者责任</strong></h2>
<p>“没有任何借口”是前些年很流行的口号。这个口号在军队也许很有价值，但在讲究品牌与创造力的今天，“没有任何借口”就是一种虚假执行力!</p>
<p>为什么?因为“将在外，君命有所不受”，让人把“借口”讲出来，也许正是我们改进工作、创造价值的地方。有句话说得好，“问题即机会”!</p>
<p>要知道，</p>
<p>但“执行力”已经变成了领导者的首选借口，如果公司做不好，一句话就推得干干净净——“执行力不行”。于是，我们常常听到这样的话：“公司战略是没有问题的，就是执行有问题。”</p>
<p>这句话表面上没有问题，但如果认真分析一下，就有问题了。我们只需要深入问一句：</p>
<p>拿学生学习打个比方。很多家长都会说：“这个小孩不认真读书。”那么，小孩为什么不认真读书呢?家长会说，他们其实给孩子制订了一个计划，给孩子构建了一个未来，战略没问题了，就是小孩执行力不行。</p>
<p>这样讲表面上没什么错，但我们都有切身体会，知道孩子不学习，是因为不想按家长提出的计划学习。换句话说：家长常常忽略了自己的责任，即尊重孩子，让孩子自己做计划。清楚了这一点，再去谈孩子的执行力。执行力的天然结构是不能切割的。</p>
<p>我的结论是：这个工作主要是领导者的责任，不应该是员工的责任!</p>
<p>北上抗日，毛泽东也要自己做通团队的思想工作。我们过去在强调员工执行力的时候，其实强调的是，不管黑猫白猫抓住老鼠就是好猫。因此，领导者不需要多说什么、做什么，考核就行了!发奖金就行了!</p>
<p>这是一种什么逻辑?!执行不是简单地让敢死队冲锋，这套逻辑的背后，是执行力的误区：我们过分地强调员工的责任，不强调领导者的责任。</p>
<h2><strong>第三种虚假执行力：心态决定一切——只强调员工心态，不强调制度和流程</strong></h2>
<p>大家要明白一点：现在很多公司热衷于心态游戏。可为什么执行力会变成心态游戏?</p>
<p>很重要的原因是，我们没有花时间去认真研究一件事情的顺序或者逻辑结构。公司没花最大的力气去做这件事，而只是呼吁让员工发挥主观能动性，去突破一切障碍、去战胜一切困难，这时候，执行就成了虚假的心态游戏。</p>
<p>举个例子，有人掐着时间赶飞机，稍微一堵车，主观能动性就出来了。他就猛跑、猛冲，甚至跟人吵架。为什么?没时间了。</p>
<p>为什么没时间?因为他没有提前做准备。</p>
<p>反过来，这个人如果先在网上把登机手续办了，然后坐地铁去机场，就不会有任何问题了。</p>
<p>这些准备工作没有做好，他选坐出租车，可能选的还是一个驾驶技术不怎么好的司机，然后时间还很赶，最后一切就都取决于执行力了。</p>
<p>所以，执行力有一个非常致命的假象：虚假执行力听起来很好，却很害人，因为虚假执行力导致的结果是：公司永远做不大!或者，做大了也会总出事，就像今天的蒙牛一样。强调员工的心态，不强调公司的组织制度和流程，公司小还没关系，公司一大就出大问题，这是虚假执行力的典型表现。</p>
<h2><strong>第四种虚假执行力：集体利益高于一切——只强调团队利益，不强调个人利益</strong></h2>
<p>虚假执行力的第四种表现，是强调在团队执行时，提倡所谓的“集体利益高于一切”，却不强调个人利益，更不强调个人利益与团队利益共赢的团队文化。</p>
<p>这样的结果是：时间一长，大家都反感集体，觉得被集体愚弄了。</p>
<p>为什么会感到愚弄?因为个人永远是商业的出发点，或者说，每个人参与商业活动，首先考虑的是个人利益，然后才是集体或团队利益。所谓的市场经济，就是一种制度设计，让个人追求利益的时候，他人利益与社会利益同时得到实现。</p>
<p>市场经济能够胜利是有原因的。同样，所谓的公司，也是一种制度设计。这种制度设计的核心在于，每个人为团队利益考虑的时候，个人利益会自动得到实现，而不是损害个人利益。</p>
<p>我们要明白一个基本点：现在很多公司都在讲团队执行，把团队抬得至高无上。这表面上没有错，但认真去看，会发现背后有很大的问题：在强调团队的时候，这不是真正的团队精神，也不是真正的团队管理!真正的团队是什么?</p>
<p>问自己一个简单的问题吧：家庭可以说是中国最好的团队了，那家庭是如何形成的?我们过年为什么要回家?清明为什么要回去祭祖?为什么要参加婚礼?为什么要给老人祝寿?</p>
<p>请问，家庭只不过是家庭中的每一个成员，基于血液关系的一种利益认同。大家相信，每一个人的付出，都会得到其他人同样的回报，这就是家庭文化，家庭凝聚力只是家庭文化的一个体现而已。</p>
<p>所以，真正的团队是什么?</p>
<p>只有让一个员工内心对团队有真正的归属感，感到团队的强大就是个人利益的强大，这个团队才是他的团队。</p>
<p>如果我们内心没有归属感，利益没有实现的渠道，对公司有不同意见也没有办法反映，有人破坏了公司的利益(或者个人利益)也没有办法制止……却在做一件事的时候说，“为了团队你必须这样做”，又会是怎样的场景?</p>
<p>所谓少数服从多数，就成为强迫的借口，第五种虚假执行力：“木桶短板”——只强调竞争力，不强调核心竞争力</p>
<h2><strong>第五个虚假执行力，体现在很多公司强调的执行中，没有强调独特的客户价值，执行远离了核心竞争能力的打造。</strong></h2>
<p><strong></strong>大家要明白：为什么真正有效的执行不是做多而是做少?德鲁克在《卓有成效的管理》中讲得很清楚：要想真正有效，一段时间只做一件事，要做到这一点，就要放弃不值得做的事。</p>
<p>这就是说，执行力的本质并不是木桶理论，去补短板，执行力是长木桶理论，要扬长避短。</p>
<p>在木桶理论下，由于找不到方向，于是到处补短，仿佛执行力就是勤奋、加班，就是玩命地工作。这是虚假执行力盲目执行的表现，同时也是对执行力最大的误解!</p>
<p>所谓执行，就是创造公司和客户想要的结果。问题是，结果有很多，你想做出什么结果?公司的事很多，员工的精力也有限，我们到底要做哪些事?</p>
<p><img src="http://www.cyzone.cn/uploadfile/2013/0618/20130618043930374.jpg" /></p>
<p>执行力的本质是做投资回报率最大的事，而最大投资回报率是由客户决定的，讲讲我自己的故事吧。大学四年，我非常清楚地知道，哪些课对我的未来非常有价值，哪些课其实可学可不学。我花了最大的精力学两门课，一门是数学，一门是英语。数学是一切东西的基础，必须通过数学来训练自己的逻辑能力。英语是我了解外部世界的窗口。</p>
<p>而非常空泛的课我基本不上，非常具体的操作性的课我也不上，未来要不要干这些事都不知道，现在玩命去学那些很专业的课干吗?所以，我与很多人相反，他们都强调专业课，而我强调基础课!我放弃了很多课，但我把数学和英语学得非常好。</p>
<p>我们班还有另一类人，他们每门课都学得特别好，拿到了奖学金。我从来没拿到过奖学金。但是现在来看，哪类人更有执行力?</p>
<p>我觉得我有执行力，他们没有执行力，因为像我这样学习的更适应社会。我们在大学时，所谓的计算机课是BASIC语言，我就不上，现在大家都知道，那东东可能已经成古董了!</p>
<p>如果凡事都要做好，就是让大家都去拿奖学金，都去做三好学生，这个执行力就太难了!这就是打造执行力很痛苦，不容易做到的原因。</p>
<p>如果打扫卫生不外包，绿化也不外包，员工要把所有工作上的事都做了，上完班之后还要打扫卫生，有哪件事能做到真正的高水平?员工执行力就超强了?</p>
<p>所以，执行力有个非常重要的前提：领导者要把最核心的客户价值(也叫独特客户价值)定义出来，作为员工的奋斗目标!</p>
<p>而聚焦的做法，理论上，称之为核心竞争力理论。核心竞争力强调的是发挥长处，而不是修补短板。</p>
<p>真正的执行力，强调的是“斜木桶理论”。执行力并不要求像木桶理论那样，每块木板都一样齐。真正的执行力，要求的是，我们的优势在什么地方，就应该把那块板加长，然后将木桶倾斜起来装水，这样不是一样可以装得了很多水吗?</p>
<p>换句话说，缺的东西怎么弥补?外包就行了，让别人去做。</p>
<p>耐克把运动产品的设计能力发挥到极致：美国人工成本高，就把生产外包给亚洲。扬长不补短，所以优秀!</p>
<p>想要核心竞争能力?就要懂得一点：取长补短、全面发展，只会造就平庸。请记住一句话：“均好”与“平庸”往往是同义词。</p>
<p>本文节选自姜汝祥新书《新执行》，上海财经大学出版社出版</p>
<p><a rel="nofollow" href="http://www.lvjiyong.com/i487.html">警惕企业中的五种虚假执行力</a>，首发于<a rel="nofollow" href="http://www.lvjiyong.com">吕的部落格</a>。</p>
]]></description>
		<wfw:commentRss>http://www.lvjiyong.com/i487.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.htaccess详解及.htaccess参数说明</title>
		<link>http://www.lvjiyong.com/i468.html</link>
		<comments>http://www.lvjiyong.com/i468.html#comments</comments>
		<pubDate>Sun, 31 Mar 2013 09:31:24 +0000</pubDate>
		<dc:creator><![CDATA[吕]]></dc:creator>
				<category><![CDATA[工具]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Rewrite]]></category>
		<category><![CDATA[RewriteCond]]></category>
		<category><![CDATA[RewriteRule]]></category>

		<guid isPermaLink="false">http://lvjiyong.com/?p=468</guid>
		<description><![CDATA[<p>.htaccess文件(或者"分布式配置文件"）提供了针对目录改变配置的方法， 即，在一个特定的文档目录中放置一个包含一个或多个指令的文件， 以作用于此目录及其所有子目录。作为用户，所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。</p>
<p>概述来说，htaccess文件是Apache服务器中的一个配置文件，它负责相关目录下的网页配置。通过htaccess文件，可以帮我们实现：网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。</p>
<h3>.htaccess 详解</h3>
<p>&#160;</p>
<p><b>来源网址：</b><span style="font-size: xx-small;"> <a href="http://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html">http://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html</a></span></p>
<p><strong>.htaccess是什么</strong></p>
<p>启用.htaccess，需要修改httpd.conf，启用AllowOverride，并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名，可以用AccessFileName指令来改变。例如，需要使用.config ，则可以在服务器配置文件中按以下方法配置：AccessFileName .config 。</p>
<p>笼统地说，.htaccess可以帮我们实现包括：文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表，以及使用其他文件作为index文件等一些功能。</p>
<p><strong>工作原理</strong></p>
<p>.htaccess文件(或者"分布式配置文件")提供了针对每个目录改变配置的方法，即在一个特定的目录中放置一个包含指令的文件，其中的指令作用于此目录及其所有子目录。<br />
说明：<br />
如果需要使用.htaccess以外的其他文件名，可以用AccessFileName指令来改变。例如，需要使用.config ，则可以在服务器配置文件中按以下方法配置：<br />
AccessFileName .config<br />
通常，.htaccess文件使用的配置语法和主配置文件一样。AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的。如果一个指令允许在.htaccess中使用，那么在本手册的说明中，此指令会有一个覆盖项段，其中说明了为使此指令生效而必须在AllowOverride指令中设置的值。</p>
<p><strong>(不)使用.htaccess文件的场合</strong></p>
<p>一般情况下，不应该使用.htaccess文件，除非你对主配置文件没有访问权限。有一种很常见的误解，认为用户认证只能通过.htaccess文件实现，其实并不是这样，把用户认证写在主配置文件中是完全可行的，而且是一种很好的方法。<br />
.htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下。如果服务器管理员不愿意频繁修改配置，则可以允许用户通过.htaccess文件自己修改配置，尤其是ISP在同一个机器上运行了多个用户站点，而又希望用户可以自己改变配置的情况下。<br />
虽然如此，一般都应该尽可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置，都可以放在主配置文件的&#60;Directory&#62;段中，而且更高效。<br />
避免使用.htaccess文件有两个主要原因。<br />
首先是性能。如果AllowOverride启用了.htaccess文件，则Apache需要在每个目录中查找.htaccess文件，因此，无论是否真正用到，启用.htaccess都会导致性能的下降。另外，对每一个请求，都需要读取一次.htaccess文件。<br />
还有，Apache必须在所有上级的目录中查找.htaccess文件，以使所有有效的指令都起作用(参见指令的生效)，所以，如果请求/www/htdocs/example中的页面，Apache必须查找以下文件：<br />
/.htaccess /www/.htaccess /www/htdocs/.htaccess /www/htdocs/example/.htaccess<br />
总共要访问4个额外的文件，即使这些文件都不存在。(注意，这可能仅仅由于允许根目录"/"使用.htaccess ，虽然这种情况并不多。)</p>
<p>其次是安全。这样会允许用户自己修改服务器的配置，这可能会导致某些意想不到的修改，所以请认真考虑是否应当给予用户这样的特权。但是，如果给予用户较少的特权而不能满足其需要，则会带来额外的技术支持请求，所以，必须明确地告诉用户已经给予他们的权限，说明AllowOverride设置的值，并引导他们参阅相应的说明，以免日后生出许多麻烦。<br />
注意，在/www/htdocs/example目录下的.htaccess文件中放置指令，与在主配置文件中&#60;Directory /www/htdocs/example&#62;段中放置相同指令，是完全等效的。</p>
<p>/www/htdocs/example目录下的.htaccess文件的内容：<br />
AddType text/example .exm<br />
httpd.conf文件中摘录的内容：<br />
&#60;Directory /www/htdocs/example&#62;<br />
AddType text/example .exm<br />
&#60;/Directory&#62;<br />
但是，把配置放在主配置文件中更加高效，因为只需要在Apache启动时读取一次，而不是在每次文件被请求时都读取。<br />
将AllowOverride设置为none可以完全禁止使用.htaccess文件：<br />
AllowOverride None</p>
<p><strong>指令的作用范围</strong></p>
<p>.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录，但是很重要的、需要注意的是，其上级目录也可能会有.htaccess文件，而指令是按查找顺序依次生效的，所以一个特定目录下的.htaccess文件中的指令可能会覆盖其上级目录中的.htaccess文件中的指令，即子目录中的指令会覆盖父目录或者主配置文件中的指令。</p>
<p><strong>疑难解答</strong></p>
<p>如果在.htaccess文件中的某些指令不起作用，可能有多种原因。<br />
最常见的原因是AllowOverride指令没有被正确设置，必须确保没有对此文件区域设置 AllowOverride None 。有一个很好的测试方法，就是在.htaccess文件随便增加点无意义的垃圾内容，如果服务器没有返回了一个错误消息，那么几乎可以断定设置了 AllowOverride None 。<br />
在访问文档时，如果收到服务器的出错消息，应该检查Apache的错误日志，可以知道.htaccess文件中哪些指令是不允许使用的，也可能会发现需要纠正的语法错误。</p>
<p><strong>.htaccess工具</strong></p>
<p>不会写的朋友,在这介绍一款很不错.htaccess的重定向—URL重写工具rewriting-tool</p>
<p>--------------------------------------------------------------------------------</p>
<p><strong>htaccess语法教程</strong></p>
<pre>RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /blog/$1

# 没有输入文件名的默认到到首页
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$
RewriteRule ^(/)?$ blog/index.php [L]</pre>
<p>下面我开始解说一下上面的意思：</p>
<p>【RewriteEngine On】</p>
<p>表示重写引擎开，关闭off，作用就是方便的开启或关闭以下的语句，这样就不需要一条一条的注释语句了。</p>
<p>【RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$】</p>
<p>这是重写条件，前面%{HTTP_HOST}表示当前访问的网址，只是指前缀部分，格式是www.xxx.com不包括“http://”和“/”，^表示 字符串开始，$表示字符串结尾，\.表示转义的. ，如果不转义也行，推荐转义，防止有些服务器不支持，?表示前面括号www\.出现0次或1次，这句规则的意思就是如果访问的网址是xxx.com或者 www.xxx.com就执行以下的语句，不符合就跳过。</p>
<p>【RewriteCond %{REQUEST_URI} !^/blog/】</p>
<p>也是重写条件，%{REQUEST_URI}表示访问的相对地址，就是相对根目录的地址，就是域名/后面的成分，格式上包括最前面的“/”，!表示非，这句语句表示访问的地址不以/blog/开头，只是开头^，没有结尾$</p>
<p>【RewriteCond %{REQUEST_FILENAME} !-f】</p>
<p>【RewriteCond %{REQUEST_FILENAME} !-d】</p>
<p>这两句语句的意思是请求的文件或路径是不存在的，如果文件或路径存在将返回已经存在的文件或路径</p>
<p>【RewriteRule ^(.*)$ /blog/$1】</p>
<p>重写规则，最重要的部分，意思是当上面的RewriteCond条件都满足的时候，将会执行此重写规则，^(.*)$是一个正则表达的 匹配，匹配的是当前请求的URL，^(.*)$意思是匹配当前URL任意字符，.表示任意单个字符，*表示匹配0次或N次（N&#62;0），后面 /blog/$1是重写成分，意思是将前面匹配的字符重写成/blog/$1，这个$1表示反向匹配，引用的是前面第一个圆括号的成分，即^(.*)$中 的.* ，其实这儿将会出现一个问题，后面讨论。</p>
<p>【RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$】</p>
<p>【RewriteRule ^(/)?$ blog/index.php [L]】</p>
<p>这两句的意思是指请求的host地址是www.xxx.com是，如果地址的结尾只有0个或者1个“/”时，将会重写到子目录下的主页，我猜想这主要因为重写后的地址是不能自动寻找主页的，需要自己指定。</p>
<p>现在说说出现的问题，RewriteRule ^(.*)$ /blog/$1 前部分 ^(.*)$ 将会匹配当前请求的url。</p>
<p>例如：请求网址是http://www.xxx.com/a.html，到底是匹配整个http://www.xxx.com/a.html，还是只匹配/a.html即反斜杠后面的成分，还是只匹配a.html。</p>
<p>答案是：根据RewriteBase规则规定，如果rewritebase 为/，将会匹配a.html，不带前面的反斜杠，所以上条语句应该写成RewriteRule ^(.*)$ blog/$1（不带/），不过实际应用上带上前面的反斜杠，也可以用，可能带不带都行。现在问题出来了，如果不设置rewritebase 为/ ，将会匹配整个网址http://www.xxx.com/a.html，显然这是错误的，所以应该添加这条：RewiteBase /</p>
<p>还有一个问题是，不能保证每个人输入的网址都是小写的，如果输入大写的呢，linux系统是区分大小写的，所以应该在RewriteCond后添加[NC]忽略大小写的。</p>
<p>至此，完整的语句应该是：</p>
<pre>RewriteEngine On
RewiteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ blog/$1

# 没有输入文件名的默认到到首页
RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$ [NC]
RewriteRule ^(/)?$ blog/index.php [L]</pre>
<p>如果后面还继续有语句的，就不应该加上最后的[L]，因为这是表示最后一条语句的意思。</p>
<p>防盗链的语句，同样需要添加RewiteBase /，如下：</p>
<pre>RewriteEngine on
RewiteBase /
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !xxx.info [NC]
RewriteRule \.(jpg&#124;gif&#124;png&#124;bmp&#124;swf&#124;jpeg)$ /error/daolian.gif [R,NC,L]</pre>
<p>如果后面还继续有语句的，就不应该加上最后的[L]，/error/daolian.gif为别人盗链时显示的图片。</p>
<p><strong>下面附上简单的语法规则和flags</strong></p>
<p><strong>【RewriteCond语法】</strong></p>
<p>RewriteCond TestString CondPattern [flags]</p>
<p>rewritecond的其他用法：</p>
<p>"-d"(目录)</p>
<p>将TestString视为一个路径名并测试它是否为一个存在的目录。</p>
<p>"-f"(常规文件)</p>
<p>将TestString视为一个路径名并测试它是否为一个存在的常规文件。</p>
<p>"-s"(非空的常规文件)</p>
<p>将TestString视为一个路径名并测试它是否为一个存在的、尺寸大于0的常规文件。</p>
<p>"-l"(符号连接)</p>
<p>将TestString视为一个路径名并测试它是否为一个存在的符号连接。</p>
<p>"-x"(可执行)</p>
<p>将TestString视为一个路径名并测试它是否为一个存在的、具有可执行权限的文件。该权限由操作系统检测。</p>
<p>"-F"(对子请求存在的文件)</p>
<p>检查TestString是否为一个有效的文件，而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查，由于会降低服务器的性能，所以请谨慎使用！</p>
<p>"-U"(对子请求存在的URL)</p>
<p>检查TestString是否为一个有效的URL，而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查，由于会降低服务器的性能，所以请谨慎使用！</p>
<p><strong>【RewriteRule语法：】</strong></p>
<p>RewriteRule Pattern Substitution [flags]</p>
<p>【flags】</p>
<p>"chain&#124;C"(链接下一规则)</p>
<p>此标记使当前规则与下一个规则相链接。它产生这样的效果：如果一个规则被匹配，则继续处理其后继规则，也就是这个标记不起作用；如果该规则不被匹配，则其后继规则将被跳过。比如，在一个目录级规则中执行一个外部重定向时，你可能需要删除”.www”(此处不应该出现”.www”)。</p>
<p>"cookie&#124;CO=NAME:VAL:domain[:lifetime[:path]]"(设置cookie)</p>
<p>在客户端设置一个cookie。cookie的名称是NAME，值是VAL。domain是该cookie的域，比如".apache.org"，可选的lifetime是cookie的有效期(分钟)，可选的path是cookie的路径。</p>
<p>"env&#124;E=VAR:VAL"(设置环境变量)</p>
<p>此标记将环境变量VAR的值为VAL，VAL可以包含可扩展的正则表达式反向引用($N和%N)。此标记可以多次使用以设置多个变量。这些变量可以在其后许多情况下被间接引用，通常是在XSSI(&#60;!–#echo var=”VAR”–&#62;)或CGI($ENV{"VAR"})中，也可以在后继的RewriteCond指令的CondPattern参数中通过%{ENV:VAR}引用。使用它可以记住从URL中剥离的信息。</p>
<p>"forbidden&#124;F"(强制禁止URL)</p>
<p>强制禁止当前URL，也就是立即反馈一个HTTP响应码403(被禁止的)。使用这个标记，可以链接若干个RewriteConds来有条件地阻塞某些URL。</p>
<p>"gone&#124;G"(强制废弃URL)</p>
<p>强制当前URL为已废弃，也就是立即反馈一个HTTP响应码410(已废弃的)。使用这个标记，可以标明页面已经被废弃而不存在了。</p>
<p>"handler&#124;H=Content-handler"(强制指定内容处理器)</p>
<p>强自制定目标文件的内容处理器为Content-handler。例如，用来模拟mod_alias模块的ScriptAlias指令，以强制映射文件夹内的所有文件都由”cgi-script”处理器处理。</p>
<p>"last&#124;L"(结尾规则)</p>
<p>立即停止重写操作，并不再应用其他重写规则。它对应于Perl中的last命令或C语言中的break命令。这个标记用于阻止当前已被重写的URL被后继规则再次重写。例如，使用它可以重写根路径的URL("/")为实际存在的URL(比如："/e/www/")。</p>
<p>"next&#124;N"(从头再来)</p>
<p>重新执行重写操作(从第一个规则重新开始)。此时再次进行处理的URL已经不是原始的URL了，而是经最后一个重写规则处理过的URL。它对应于Perl中的next命令或C语言中的continue命令。此标记可以重新开始重写操作(立即回到循环的开头)。但是要小心，不要制造死循环！</p>
<p>"nocase&#124;NC"(忽略大小写)</p>
<p>它使Pattern忽略大小写，也就是在Pattern与当前URL匹配时，"A-Z"和"a-z"没有区别。</p>
<p>"noescape&#124;NE"(在输出中不对URI进行转义)</p>
<p>此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。 一般情况下，特殊字符("%", "$", ";"等)会被转义为等值的十六进制编码("%25′, "%24′, "%3B"等)。此标记可以阻止这样的转义，以允许百分号等符号出现在输出中，比如：</p>
<p>RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]</p>
<p>可以使"/foo/zed转向到一个安全的请求"/bar?arg=P1=zed"。</p>
<p>"nosubreq&#124;NS"(不对内部子请求进行处理)</p>
<p>在当前请求是一个内部子请求时，此标记强制重写引擎跳过该重写规则。比如，在mod_include试图搜索目录默认文件(index.xxx)时，Apache会在内部产生子请求。对于子请求，重写规则不一定有用，而且如果整个规则集都起作用，它甚至可能会引发错误。所以，可以用这个标记来排除某些规则。</p>
<p>使用原则：如果你为URL添加了CGI脚本前缀，以强制它们由CGI脚本处理，但对子请求处理的出错率(或者资源开销)很高，在这种情况下，可以使用这个标记。</p>
<p>"proxy&#124;P"(强制为代理)</p>
<p>此标记使替换成分被内部地强制作为代理请求发送，并立即中断重写处理，然后把处理移交给mod_proxy模块。你必须确保此替换串是一个能够被mod_proxy处理的有效URI(比如以http://hostname开头)，否则将得到一个代理模块返回的错误。使用这个标记，可以把某些远程成分映射到本地服务器域名空间，从而增强了ProxyPass指令的功能。</p>
<p>注意：要使用这个功能，必须已经启用了mod_proxy模块。</p>
<p>"passthrough&#124;PT"(移交给下一个处理器)</p>
<p>此标记强制重写引擎将内部request_rec结构中的uri字段设置为filename字段的值，这个小小的修改使得RewriteRule指令的输出能够被(从URI转换到文件名的)Alias, ScriptAlias, Redirect等指令进行后续处理[原文：This flag is just a hack to enable post-processing of the output of RewriteRule directives, using Alias, ScriptAlias, Redirect, and other directives from various URI-to-filename translators.]。举一个能说明其含义的例子： 如果要将/abc重写为/def， 然后再使用mod_alias将/def转换为/ghi，可以这样：</p>
<p>RewriteRule ^/abc(.*) /def$1 [PT]</p>
<p>Alias /def /ghi</p>
<p>如果省略了PT标记，虽然将uri=/abc/…重写为filename=/def/…的部分运作正常，但是后续的mod_alias在试图将URI转换到文件名时会遭遇失效。</p>
<p>注意：如果需要混合使用多个将URI转换到文件名的模块时，就必须使用这个标记。。此处混合使用mod_alias和mod_rewrite就是个典型的例子。</p>
<p>"qsappend&#124;QSA"(追加查询字符串)</p>
<p>此标记强制重写引擎在已有的替换字符串中追加一个查询字符串，而不是简单的替换。如果需要通过重写规则在请求串中增加信息，就可以使用这个标记。</p>
<p>"redirect&#124;R [=code]"(强制重定向)</p>
<p>若Substitution以http://thishost[:thisport]/(使新的URL成为一个URI)开头，可以强制性执行一个外部重定向。如果没有指定code，则产生一个HTTP响应码302(临时性移动)。如果需要使用在300-400范围内的其他响应代码，只需在此指定即可(或使用下列符号名称之一：temp(默认), permanent, seeother)。使用它可以把规范化的URL反馈给客户端，如将”/~”重写为”/u/”，或始终对/u/user加上斜杠，等等。</p>
<p>注意：在使用这个标记时，必须确保该替换字段是一个有效的URL。否则，它会指向一个无效的位置！并且要记住，此标记本身只是对URL加上http://thishost[:thisport]/前缀，重写操作仍然会继续进行。通常，你还会希望停止重写操作而立即重定向，那么就还需要使用"L'标记。</p>
<p>"skip&#124;S=num"(跳过后继规则)</p>
<p>此标记强制重写引擎跳过当前匹配规则之后的num个规则。它可以模拟if-then-else结构：最后一个规则是then从句，而被跳过的skip=N个规则是else从句。注意：它和"chain&#124;C"标记是不同的！</p>
<p>"type&#124;T=MIME-type"(强制MIME类型)</p>
<p>强制目标文件的MIME类型为MIME-type，可以用来基于某些特定条件强制设置内容类型。比如，下面的指令可以让.php文件在以.phps扩展名调用的情况下由mod_php按照PHP源代码的MIME类型(application/x-httpd-php-source)显示：</p>
<p>RewriteRule ^(.+\.php)s$ $1 [T=application/x-httpd-php-source]</p>
<p><strong>.htaccess实例</strong></p>
<p><a href="http://www.chinaz.com/web/2010/0415/111514.shtml">http://cloudbbs.org/forum.php?mod=viewthread&#38;tid=7455&#38;page=1&#38;extra=#pid41053</p>
<p>http://www.chinaz.com/web/2010/0415/111514.shtml</a></p>
<p>参考：<a href="http://baike.baidu.com/view/91163.htm">http://baike.baidu.com/view/91163.htm </a></p>
<p><a href="http://hi.baidu.com/wojiubaibudu/item/4b3513c74a8fe47aced4f817">http://hi.baidu.com/wojiubaibudu/item/4b3513c74a8fe47aced4f817</a></p>
<h3>.htaccess rewrite 规则详细说明</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://www.cnphp.info/htaccess-rewrite.html">http://www.cnphp.info/htaccess-rewrite.html</a></p>
<p>作者: freemouse 日期 2010年07月22日 &#124; 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及<a href="http://creativecommons.org/licenses/by/2.5/cn/">版权声明</a></p>
<p>网址: <a href="http://www.cnphp.info/htaccess-rewrite.html">http://www.cnphp.info/htaccess-rewrite.html</a></p>
<p>用Apache虚拟主机的朋友很多，apache提供的<strong>.htaccess</strong>模块可以为每个虚拟主机设定<strong>rewrite规则</strong>，这对网站SEO优化相当有用，同时也改善了用户体验。国内的虚拟机一般不提供.htaccess功能（据我所知，discuz的主机好像提供此功能），而在国外主机中，.htaccess功能似乎是标配，笔者的Blog架在MT上，支持.htaccess，每次看到一堆别人写好了的.htaccess设置，很多命令都不甚了了，查看、修改起来很不方便，痛定思痛，潜心学习一下，知其所以然嘛～</p>
<p>学习前提：（不会的朋友要学习一下，才能更好的理解下面的文字呢）</p>
<ul>
<li><strong>Linux基础</strong>（不会也没事啦，写个.htaccess没必要大费周折啦，推荐：鸟哥私房菜linux基础）</li>
<li><strong>正则表达式</strong>（Rewrite规则建立在正则的基础之上，推荐：正则表达式30分钟入门教程）</li>
</ul>
<p><strong>rewrite的语法格式</strong>：</p>
<ol>
<li>RewriteEngine On #要想rewrite起作用，必须要写上哦</li>
<li>RewriteBase url-path #设定基准目录，例如希望对根目录下的文件rewrtie，就是”/”</li>
<li>RewriteCond test-string condPattern #写在RewriteRule之前，可以有一或N条，用于测试rewrite的匹配条件，具体怎么写，后面会详细说到。</li>
<li>RewriteRule Pattern Substitution #规则</li>
</ol>
<h4>RewriteEngine On&#124;Off</h4>
<p>RewriteEngine 用于开启或停用rewrite功能。</p>
<p>rewrite configurations 不会自动继承，因此你得给每个你想用 rewrite功能的虚拟主机目录中加上这个指令。</p>
<h4>RewriteBase URL-path</h4>
<p>RewriteBase用于设定重写的基准URL。在下文中，你可以看见RewriteRule可以用于目录级的配置文件中 (.htaccess)并在局部范围内起作用，即规则实际处理的只是剥离了本地路径前缀的一部分。处理结束后，这个路径会被自动地附着回去。默认值 是”RewriteBase physical-directory-path”。</p>
<p>在对一个新的URL进行替换时，此模块必须把这个URL重新注入到服务器处理中。为此，它必须知道其对应的URL前缀或者说URL基准。通常，此前缀就是 对应的文件路径。但是，大多数网站URL不是直接对应于其物理文件路径的，因而一般不能做这样的假定! 所以在这种情况下，就必须用RewriteBase指令来指定正确的URL前缀。</p>
<p>如果你的网站服务器URL不是与物理文件路径直接对应的，而又需要使用RewriteBase指令，则必须在每个对应的.htaccess文件中指定 RewriteRule 。</p>
<h4>RewriteCond TestString CondPattern [flags]</h4>
<p>RewriteCond指令定义了一个规则的条件，即，在一个RewriteRule指令之前有一个或多个RewriteCond指令。 条件之后的重写规则仅在当前URI与pattern匹配并且符合这些条件的时候才会起作用。</p>
<p>TestString是一个纯文本的字符串，但是还可以包含下列可扩展的成分：</p>
<ol>
<li>RewriteRule反向引用: 引用方法是 <strong>$N</strong>  (0 &#60;= N &#60;= 9) 引用当前(带有若干RewriteCond指令的)RewriteRule中的 与pattern匹配的分组成分(圆括号!)。</li>
<li>RewriteCond反向引用: 引用方法是 <strong>%N</strong>  (1 &#60;= N &#60;= 9) 引用当前若干RewriteCond条件中最后符合的条件中的分组成分(圆括号!)。</li>
<li>RewriteMap 扩展: 引用方法是 <strong>${mapname:key&#124;default}</strong></li>
<li>服务器变量: 引用方法是 <strong>%{ NAME_OF_VARIABLE }</strong>  这个是我们最常使用到的功能</li>
</ol>
<p><em>NAME_OF_VARIABLE</em>具体数值见下表:</p>
<p>HTTP headers:</p>
<p>connection &#38; request:</p>
<p>HTTP_USER_AGENT</p>
<p>HTTP_REFERER</p>
<p>HTTP_COOKIE</p>
<p>HTTP_FORWARDED</p>
<p>HTTP_HOST</p>
<p>HTTP_PROXY_CONNECTION</p>
<p>HTTP_ACCEPT</p>
<p>REMOTE_ADDR</p>
<p>REMOTE_HOST</p>
<p>REMOTE_USER</p>
<p>REMOTE_IDENT</p>
<p>REQUEST_METHOD</p>
<p>SCRIPT_FILENAME</p>
<p>PATH_INFO</p>
<p>QUERY_STRING</p>
<p>AUTH_TYPE</p>
<p>server internals:</p>
<p>system stuff:</p>
<p>specials:</p>
<p>DOCUMENT_ROOT</p>
<p>SERVER_ADMIN</p>
<p>SERVER_NAME</p>
<p>SERVER_ADDR</p>
<p>SERVER_PORT</p>
<p>SERVER_PROTOCOL</p>
<p>SERVER_SOFTWARE</p>
<p>TIME_YEAR</p>
<p>TIME_MON</p>
<p>TIME_DAY</p>
<p>TIME_HOUR</p>
<p>TIME_MIN</p>
<p>TIME_SEC</p>
<p>TIME_WDAY</p>
<p>TIME</p>
<p>API_VERSION</p>
<p>THE_REQUEST</p>
<p>REQUEST_URI</p>
<p>REQUEST_FILENAME</p>
<p>IS_SUBREQ</p>
<blockquote><p>这些都对应于类似命名的HTTP MIME头、Apache服务器的C变量以及Unix系统中的 struct tm字段，大多数都在其他的手册或者CGI规范中有所讲述。 而其中为mod_rewrite所特有的变量有:</p>
<p>IS_SUBREQ</p>
<p>如果正在处理的请求是一个子请求，它包含字符串”true”，否则就是”false”。 模块为了解析URI中的附加文件，有可能会产生子请求。</p>
<p>API_VERSION</p>
<p>这是正在使用的httpd中(服务器和模块之间内部接口)的Apache模块API的版本， 其定义位于include/ap_mmn.h中。此模块版本对应于正在使用的Apache的版本 (比如，在Apache 1.3.14的发行版中，这个值是19990320:10)。 通常，对它感兴趣的是模块的作者。</p>
<p>THE_REQUEST</p>
<p>这是由浏览器发送给服务器的完整的HTTP请求行。(比如, “GET /index.html HTTP/1.1″). 它不包含任何浏览器发送的附加头信息。</p>
<p>REQUEST_URI</p>
<p>这是在HTTP请求行中所请求的资源。(比如上述例子中的”/index.html”.)</p>
<p>REQUEST_FILENAME</p>
<p>这是与请求相匹配的完整的本地文件系统的文件路径名或描述.</p></blockquote>
<p>CondPattern是条件pattern, 即, 一个应用于当前实例TestString的正则表达式, 即, TestString将会被计算然后与CondPattern匹配.</p>
<p><strong>注意：</strong><em>CondPattern</em>是一个<em>兼容perl的正则表达式</em>， 但是还有若干补充：</p>
<ol>
<li>可以在pattern串中使用’<code>!</code>‘ 字符(惊叹号)来实现匹配的<strong>反转</strong>。</li>
</ol>
<h4>RewriteOptions Options</h4>
<p><code>RewriteOptions</code>指令为当前服务器级和目录级的配置设置一些选项。 <em>Option</em>可以是下列值之一：</p>
<dl>
<dt><code>inherit</code></dt>
<dd>此值强制当前配置可以继承其父配置。 在虚拟主机级配置中，它意味着主服务器的映射表、条件和规则可以被继承。 在目录级配置中，它意味着其父目录的<code>.htaccess</code>中的条件和规则可以被继承。</dd>
<dt><code>MaxRedirects=<var>number</var></code></dt>
<dd>为了避免目录级<code>RewriteRule</code>的无休止的内部重定向， 在此类重定向和500内部服务器错误次数达到一个最大值的时候， <code>mod_rewrite</code>会停止对此请求的处理。 如果你确实需要对每个请求允许大于10次的内部重定向，可以增大这个值。</dd>
</dl>
<h4>RewriteRule Pattern Substitution [flags]</h4>
<p><code>RewriteRule</code>指令是重写引擎的根本。此指令可以多次使用。 每个指令定义一个简单的重写规则。这些规则的<strong>定义顺序</strong>尤为<strong>重要</strong>, 因为，在运行时刻，规则是按这个顺序逐一生效的.</p>
<p><em>Pattern</em>是一个作用于当前URL的兼容perl的正则表达式。</p>
<p>此外，还可以使用否字符(‘<code>!</code>‘)的pattern前缀，以实现pattern的反转。但是，需要注意的是使用否字符以反转pattern时，pattern中不能使用分组的通配成分；即$N。</p>
<p>重写规则中的<em>Substitution</em>是， 当原始URL与<em>Pattern</em>相匹配时，用以替代(或替换)的字符串。除了纯文本，还可以使用</p>
<ul>
<li><code>$N</code> 反向引用RewriteRule的pattern</li>
<li><code>%N</code> 反向引用最后匹配的RewriteCond pattern</li>
<li>规则条件测试字符串中(<code>%{VARNAME}</code>)的服务器变量</li>
<li>映射函数调用(<code>${mapname:key&#124;default})</code></li>
</ul>
<pre><strong>下面给出几个完整的例子供各位参考：</strong></pre>
<blockquote><p><strong>一、防盗链功能</strong></p>
<p>只这四行就实现了防盗链是不是很神奇^_^，编写起来是不是又觉得复杂。</p>
<p>RewriteEngine On</p>
<p>RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]</p>
<p>RewriteCond %{HTTP_REFERER} !^$</p>
<p>RewriteRule .*.(jpe?g&#124;gif&#124;bmp&#124;png)$ /images/nohotlink.jpg [L]</p></blockquote>
<blockquote><p><strong>二、网址规范化</strong></p>
<p>这个是把所有二级域名都重定向到www.yourdomain.com的例子，现在看来是不是很简单了？</p>
<p>Options +FollowSymLinks</p>
<p>rewriteEngine on</p>
<p>rewriteCond %{http_host} ^yourdomain.com [NC]</p>
<p>rewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]</p></blockquote>
<blockquote><p><strong>三、临时错误页面</strong></p>
<p>当你的网站在升级、修改的时候，你最好让访客转到指定的页面，而不是没做完的页面或者是错误页。</p>
<p>RewriteEngine on</p>
<p>RewriteCond %{REQUEST_URI} !/maintenance.html$</p>
<p>RewriteCond %{REMOTE_ADDR} !^123.123.123.123</p>
<p>RewriteRule $ /error.html [R=302,L]</p></blockquote>
<blockquote><p><strong>四、重定向RSS地址到FeedSky</strong></p>
<p>除了可以更改模板里的RSS地址外，.htaccess也能实现RSS地址的更改，并更加方便。</p>
<p>RewriteEngine on</p>
<p>RewriteCond %{HTTP_USER_AGENT} !FeedSky [NC]</p>
<p>RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]</p>
<p>RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feed.feedsky.com/yours</p></blockquote>
<p>=========================================================================================</p>
<p><strong>附录：flags</strong></p>
<ol>
<li>
<h6>‘redirect&#124;R [=code]‘ (强制重定向 redirect)</h6>
<p>以http://thishost[:thisport]/(使新的URL成为一个URI) 为前缀的Substitution可以强制性执行一个外部重定向。 如果code没有指定，则产生一个HTTP响应代码302(临时性移动)。 如果需要使用在300-400范围内的其他响应代码，只需在此指定这个数值即可， 另外，还可以使用下列符号名称之一: temp (默认的), permanent, seeother. 用它可以把规范化的URL反馈给客户端，如, 重写“/~”为 “/u/”，或对/u/user加上斜杠，等等。 注意: 在使用这个标记时，必须确保该替换字段是一个有效的URL! 否则，它会指向一个无效的位置! 并且要记住，此标记本身只是对URL加上 http://thishost[:thisport]/的前缀，重写操作仍然会继续。 通常，你会希望停止重写操作而立即重定向，则还需要使用’L’标记.</li>
<li>
<h6>‘forbidden&#124;F’ (强制URL为被禁止的 forbidden)</h6>
<p>强制当前URL为被禁止的，即，立即反馈一个HTTP响应代码403(被禁止的)。 使用这个标记，可以链接若干RewriteConds以有条件地阻塞某些URL。</li>
<li>
<h6>‘gone&#124;G’ (强制URL为已废弃的 gone)</h6>
<p>强制当前URL为已废弃的，即，立即反馈一个HTTP响应代码410(已废弃的)。 使用这个标记，可以标明页面已经被废弃而不存在了.</li>
<li>
<h6>‘proxy&#124;P’ (强制为代理 proxy)</h6>
<p>此标记使替换成分被内部地强制为代理请求，并立即(即， 重写规则处理立即中断)把处理移交给代理模块。 你必须确保此替换串是一个有效的(比如常见的以 http://hostname开头的)能够为Apache代理模块所处理的URI。 使用这个标记，可以把某些远程成分映射到本地服务器名称空间， 从而增强了ProxyPass指令的功能。 注意: 要使用这个功能，代理模块必须编译在Apache服务器中。 如果你不能确定，可以检查“httpd -l”的输出中是否有mod_proxy.c。 如果有，则mod_rewrite可以使用这个功能； 如果没有，则必须启用mod_proxy并重新编译“httpd”程序。</li>
<li>
<h6>‘last&#124;L’ (最后一个规则 last)</h6>
<p>立即停止重写操作，并不再应用其他重写规则。 它对应于Perl中的last命令或C语言中的break命令。 这个标记可以阻止当前已被重写的URL为其后继的规则所重写。 举例，使用它可以重写根路径的URL(‘/’)为实际存在的URL, 比如, ‘/e/www/’.</li>
<li>
<h6>‘next&#124;N’ (重新执行 next round)</h6>
<p>重新执行重写操作(从第一个规则重新开始). 这时再次进行处理的URL已经不是原始的URL了，而是经最后一个重写规则处理的URL。 它对应于Perl中的next命令或C语言中的continue命令。 此标记可以重新开始重写操作，即, 立即回到循环的头部。 但是要小心，不要制造死循环!</li>
<li>
<h6>‘chain&#124;C’ (与下一个规则相链接 chained)</h6>
<p>此标记使当前规则与下一个(其本身又可以与其后继规则相链接的， 并可以如此反复的)规则相链接。 它产生这样一个效果: 如果一个规则被匹配，通常会继续处理其后继规则， 即，这个标记不起作用；如果规则不能被匹配， 则其后继的链接的规则会被忽略。比如，在执行一个外部重定向时， 对一个目录级规则集，你可能需要删除“.www” (此处不应该出现“.www”的)。</li>
<li>
<h6>‘type&#124;T=MIME-type’ (强制MIME类型 type)</h6>
<p>强制目标文件的MIME类型为MIME-type。 比如，它可以用于模拟mod_alias中的ScriptAlias指令， 以内部地强制被映射目录中的所有文件的MIME类型为“application/x-httpd-cgi”.</li>
<li>
<h6>‘nosubreq&#124;NS’ (仅用于不对内部子请求进行处理 no internal sub-request)</h6>
<p>在当前请求是一个内部子请求时，此标记强制重写引擎跳过该重写规则。 比如，在mod_include试图搜索可能的目录默认文件(index.xxx)时， Apache会内部地产生子请求。对子请求，它不一定有用的，而且如果整个规则集都起作用， 它甚至可能会引发错误。所以，可以用这个标记来排除某些规则。 根据你的需要遵循以下原则: 如果你使用了有CGI脚本的URL前缀，以强制它们由CGI脚本处理， 而对子请求处理的出错率(或者开销)很高，在这种情况下，可以使用这个标记。</li>
<li>
<h6>‘nocase&#124;NC’ (忽略大小写 no case)</h6>
<p>它使Pattern忽略大小写，即, 在Pattern与当前URL匹配时，’A-Z’ 和’a-z’没有区别。</li>
<li>
<h6>‘qsappend&#124;QSA’ (追加请求串 query string append)</h6>
<p>此标记强制重写引擎在已有的替换串中追加一个请求串，而不是简单的替换。 如果需要通过重写规则在请求串中增加信息，就可以使用这个标记。</li>
<li>
<h6>‘noescape&#124;NE’ (在输出中不对URI作转义 no URI escaping)</h6>
<p>此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。 一般情况下，特殊字符(如’%’, ‘$’, ‘;’等)会被转义为等值的十六进制编码。 此标记可以阻止这样的转义，以允许百分号等符号出现在输出中，如： RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]</p>
<p>可以使’/foo/zed’转向到一个安全的请求’/bar?arg=P1=zed’.</li>
<li>
<h6>‘passthrough&#124;PT’ (移交给下一个处理器 pass through)</h6>
<p>此标记强制重写引擎将内部结构request_rec中的uri字段设置为 filename字段的值，它只是一个小修改，使之能对来自其他URI到文件名翻译器的 Alias，ScriptAlias, Redirect 等指令的输出进行后续处理。举一个能说明其含义的例子： 如果要通过mod_rewrite的重写引擎重写/abc为/def， 然后通过mod_alias使/def转变为/ghi，可以这样: RewriteRule ^/abc(.*) /def$1 [PT]</p>
<p>Alias /def /ghi</p>
<p>如果省略了PT标记，虽然mod_rewrite运作正常， 即, 作为一个使用API的URI到文件名翻译器， 它可以重写uri=/abc/…为filename=/def/…， 但是，后续的mod_alias在试图作URI到文件名的翻译时，则会失效。</p>
<p>注意: 如果需要混合使用不同的包含URI到文件名翻译器的模块时， 就必须使用这个标记。混合使用mod_alias和mod_rewrite就是个典型的例子。</p>
<p>For Apache hackers</p>
<p>如果当前Apache API除了URI到文件名hook之外，还有一个文件名到文件名的hook， 就不需要这个标记了! 但是，如果没有这样一个hook，则此标记是唯一的解决方案。 Apache Group讨论过这个问题，并在Apache 2.0 版本中会增加这样一个hook。</li>
<li>
<h6>’skip&#124;S=num’ (跳过后继的规则 skip)</h6>
<p>此标记强制重写引擎跳过当前匹配规则后继的num个规则。 它可以实现一个伪if-then-else的构造: 最后一个规则是then从句，而被跳过的skip=N个规则是else从句. (它和’chain&#124;C’标记是不同的!)</li>
<li>
<h6>‘env&#124;E=VAR:VAL’ (设置环境变量 environment variable)</h6>
<p>此标记使环境变量VAR的值为VAL, VAL可以包含可扩展的反向引用的正则表达式$N和%N。 此标记可以多次使用以设置多个变量。 这些变量可以在其后许多情况下被间接引用，但通常是在XSSI (via or CGI (如 $ENV{‘VAR’})中， 也可以在后继的RewriteCond指令的pattern中通过%{ENV:VAR}作引用。 使用它可以从URL中剥离并记住一些信息。</li>
<li>
<h6>‘cookie&#124;CO=NAME:VAL:domain[:lifetime[:path]]’ (设置cookie)</h6>
<p>它在客户端浏览器上设置一个cookie。 cookie的名称是NAME，其值是VAL。 domain字段是该cookie的域，比如’.apache.org’, 可选的lifetime是cookie生命期的分钟数， 可选的path是cookie的路径。</li>
</ol>
<p><strong>深入阅读：http://oss.org.cn/man/newsoft/ApacheManual/mod/mod_rewrite.html</strong></p>
<h3>全面理解.htaccess语法中RewriteCond和RewriteRule意义</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://blog.sina.com.cn/s/blog_7048e38101017xdx.html">http://blog.sina.com.cn/s/blog_7048e38101017xdx.html</a></p>
<p>(2012-08-13 10:38:44)</p>
<p>关于.htaccess伪静态的使用，章郎虫一直没有好好想过。以前一直是在网上找现成的，然后修改下网址实现重定向。今天我专门找资料看了下RewriteCond和RewriteRule的意思及使用方法。然后回过头看《<a href="http://www.hellonet8.com/779.html">网站地址更改之htaccess和php的301重定向</a>》这篇文章，终于有些理解。现在不用一直找现成的代码，也可以自己写一些规则实现重定向了。下面就简单的介绍下他们的用法。</p>
<p><strong>RewriteCond的语法</strong></p>
<p>RewriteCond TestString CondPattern [Flags]</p>
<p>其中的TestString是指一个文本格式的条件，例子中用的是环境变量名HTTP_HOST所包含的内容（Name= Value），这是一个map（键值对）格式的数据类型。</p>
<p>CondPattern是条件参数，这儿以第一个例子为例，就是abc.com。</p>
<p>Flags标识是是第三个参数，可以用来紧跟下一个条件，这儿用OR表示或者，如果没有[Flags]，则用隐含的AND，表示并且。其它的还可以NC等等，表示忽略大小写</p>
<p>RewriteCond就像我们程序中的if语句一样，表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句，这就是RewriteCond最原始、基础的功能，为了方便理解，下面来看看几个例子。</p>
<p>RewriteEngine on</p>
<p>RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5.0.*</p>
<p>RewriteRule index.php index.m.php</p>
<p>RewriteCond %{HTTP_USER_AGENT} ^Lynx.*</p>
<p>RewriteRule index.php index.L.php</p>
<p>RewriteRule index.php index.b.php</p>
<p>上面语句的作用是当你是用FF浏览器访问index.php这个文件的时候，会自动让你访问到index.m.php这个文件，当你是用一些移动终端访问 的 时候，会让你对index.php这个文件的访问实际访问的是index.L.php去，如果你是用其它的浏览器访问的时候，会让你跳到 index.b.php。</p>
<p><strong>RewriteRule的语法</strong></p>
<p>RewriteRule Pattern Substitution [Flags]</p>
<p>其中的Pattern就是参数，一般为一些文件的扩展名，Substitution是用来替换前面用的，这儿的Flags，常用的R表示 redirect（强制重定向），F表示forbidden（禁止访问），L表示last（最后），通常当你希望停止重写操作而立即重定向时，可用它。</p>
<p><strong>.htaccess中用到的正则</strong></p>
<p>元字符^（和数字6在同一个键位上的符号）和$都匹配一个位置，这和\b有点类似。</p>
<p>^匹配你要用来查找的字符串的开头</p>
<p>$匹配结尾。</p>
<p>比如一个网站如果要求你填写的QQ号必须为5位到12位数字时，可以使用：^\d{5,12}$。</p>
<p>如果你对正则表达式不是很明白，可以看下<a href="http://fx.hellonet8.com/jiaocheng/regex.html">正则表达式的教程</a>。</p>
<p>Source from: <a href="http://www.hellonet8.com/897.html">http://www.hellonet8.com/897.html</a></p>
<p>&#160;</p>
<h3>URL重写 htaccess文件写法的10个技巧</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://blog.sina.com.cn/s/blog_7069146d01015ikf.html">http://blog.sina.com.cn/s/blog_7069146d01015ikf.html</a></p>
<p>(2012-07-26 03:25:44)</p>
<p>“.htaccess”文件往往被网页设计师们忽略。假如你还不知道什么是htaccess的话，你可以去查一下wikipedia。它是目录级别的配置文件，有常用的网页服务器支持这种配置，例如Apache。下面我将列出10条有用的.htaccess配置技巧。</p>
<p>1. 反盗链</p>
<p>那些盗用了你的内容，还不愿意自己存储图片的网站是无耻的。你可以通过以下配置来放置别人盗用你的图片：</p>
<p>RewriteBase /</p>
<p>RewriteCond %{HTTP_REFERER} !^$</p>
<p>RewriteCond %{HTTP_REFERER} !^http://(www.)?yoursite.com/.*$ [NC]</p>
<p>RewriteRule .(gif&#124;jpg&#124;swf&#124;flv&#124;png)$ /feed/ [R=302,L]</p>
<p>2. 防止目录浏览</p>
<p>有时候目录浏览是有用的，但大部分情况会有安全问题。为了让你的网站更安全，你可以通过htaccess文件来禁用这个功能：</p>
<p>Options All -Indexes</p>
<p>3. SEO友好的301永久重定向</p>
<p>这一招是我常用的。每次我更改网站URL结构的时候，我都会做301重定向：</p>
<p>Redirect 301 http://www.yoursite.com/article.html http://www.yoursite.com/archives/article 4. 显示个性化的 404 错误页面</p>
<p>当用户访问了一个不存在的页面的时候，网页服务器会显示“404 file not found”错误。有很多CMS可以让你设置自定义的错误页面，但最简单的方法是更改htaccess：</p>
<p>ErrorDocument 404 /404.html</p>
<p>5. 设置目录的默认页面</p>
<p>假如你需要为不同的目录设置不同的默认页面，你可以很容易的通过 .htaccess 实现：</p>
<p>DirectoryIndex about.html</p>
<p>6. 基于referer来限制网站访问</p>
<p>站长通常不会限制网站访问，但是当你发现有一些网站尽给你带来垃圾流量的话，你就应该屏蔽他们：</p>
<p>&#60;IfModule mod_rewrite.c&#62;</p>
<p>RewriteEngine on  RewriteCond %{HTTP_REFERER} spamteam.com [NC,OR]</p>
<p>RewriteCond %{HTTP_REFERER} trollteam.com [NC,OR]</p>
<p>RewriteRule .* – [F]</p>
<p>&#60;/ifModule&#62;</p>
<p>7. 限制PHP上传文件大小</p>
<p>这招在共享空间的服务器上很有用，可以让我的用户上传更大的文件。第一个是设置最大的上传文件大小，第二个是设置最大的POST请求大小，第三个PHP脚本最长的执行时间，最后一个是脚本解析上传文件的最长时间：</p>
<p>php_value upload_max_filesize 20M</p>
<p>php_value post_max_size 20M</p>
<p>php_value max_execution_time 200</p>
<p>php_value max_input_time 200</p>
<p>8. 压缩文件</p>
<p>你可以通过压缩文件来减少网络流量，也页面装载时间：</p>
<p>AddOutputFilterByType DEFLATE text/plain</p>
<p>AddOutputFilterByType DEFLATE text/html</p>
<p>AddOutputFilterByType DEFLATE text/xml</p>
<p>AddOutputFilterByType DEFLATE text/css</p>
<p>AddOutputFilterByType DEFLATE application/xml</p>
<p>AddOutputFilterByType DEFLATE application/xhtml+xml</p>
<p>AddOutputFilterByType DEFLATE application/rss+xml</p>
<p>AddOutputFilterByType DEFLATE application/javascript</p>
<p>AddOutputFilterByType DEFLATE application/x-javascript</p>
<p>9. 缓存文件</p>
<p>这一点还需要解释吗？</p>
<p>&#60;FilesMatch “.(flv&#124;gif&#124;jpg&#124;jpeg&#124;png&#124;ico&#124;swf&#124;js&#124;css&#124;pdf)$”&#62;</p>
<p>Header set Cache-Control “max-age=2592000〃</p>
<p>&#60;/FilesMatch&#62;</p>
<p>10. 添加尾部的反斜杠</p>
<p>我并不确定，但是很多文章，很多人都说添加尾部反斜杠有益于SEO：</p>
<p>&#60;IfModule mod_rewrite.c&#62;</p>
<p>RewriteCond %{REQUEST_URI} /+[^\.]+$</p>
<p>RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]</p>
<p>&#60;/IfModule&#62;</p>
<p>====================</p>
<p>引用：<a href="http://www.c658.com/658/html/xxlm/itxxl/882.html">http://www.c658.com/658/html/xxlm/itxxl/882.html</a></p>
<h4>.htaccess基本语法和应用</h4>
<p>.htaccess是Apache服务器的一个非常强大的分布式配置文件。</p>
<p>正确的理解和使用.htaccess文件，可以帮助我们优化自己的服务器或者虚拟主机。</p>
<h5>如何启用htaccess</h5>
<p>以windows为例，进入apache/conf目录，找到httpd.conf文件，去掉</p>
<p>LoadModule rewrite_module modules/mod_rewrite.so</p>
<p>前面的#，然后设置目录属性AllowOverride All，重启apache即可</p>
<p>下面是一个典型的htaccess文件</p>
<pre>           # 开启URL重写
RewriteEngine on
# URL重写的作用域
# RewriteBase /path/to/url
# 满足怎样的条件
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
# 应用怎样的规则
RewriteRule .? http://www.example.com%{REQUEST_URI} [R=301,L]</pre>
<p>来看看RewriteCond，首先有一个%，因为{HTTP_HOST}是一个apache变量，需要用%来指示。从!开始就是匹配的条件，支持 正则。!表示不等于，这句话的意思就是：如果HTTP_HOST不是www.example.com。后面的[NC](no case)表示忽略大小写，常见的还有</p>
<ul>
<li>[L](last)：终止一系列的RewriteCond和RewriteRule</li>
<li>[R](redirect)：触发一个显示的跳转，也可以指定跳转类型，如[R=301]</li>
<li>[F](forbidden)：禁止查看特定文件，apache会触发403错误</li>
</ul>
<p><strong>图片防盗链</strong></p>
<pre>           RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC]
RewriteRule \.(gif&#124;jpg&#124;png)$ - [F]</pre>
<p>由于是基于HTTP_REFERER的验证，所以只能防止一般的图片盗链，因为HTTP_REFERER是比较容易伪造的</p>
<p><strong>自定义404错误页面</strong></p>
<p>如果用户输入了一个不存在的url，那么就显示自定义的错误页面</p>
<pre>           ErrorDocument 404 /404.html
# 其他同理
ErrorDocument 500 /500.html</pre>
<p><strong>处理移动过的文件</strong></p>
<pre>           Redirect 301 /old.html http://yoursite.com/new.html
# 也可以是下面这样
RewriteRule /old.html http://yoursite.com/new.html [R=301,L]
# 如果想隐式跳转(URL地址不变，但实际上内容是其他URL的)，就使用下面的
RewriteRule /old.html http://yoursite.com/new.html [L]</pre>
<p>对于RewriteRule还有好多文章可以做，比如</p>
<pre>           # 把html后缀的url链接到php文件
# $1指代的是前面第1个用括号括起来的内容
RewriteRule ^/?([a-z/]+)\.html$ $1.php [L]
# 或者把旧文件夹的内容链接到新文件夹
RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,L]
# 隐藏文件名
RewriteRule ^/?([a-z]+)$ $1.php [L]</pre>
<h5>禁止显示目录列表</h5>
<p>如果目录里没有index文件，又没有对该目录做过特别的处理，尤其是windows主机，那么该目录里的内容就会显示出来，这时可以在根目录创建 一个.htaccess文件，然后写上</p>
<pre>           Options -Indexes
# 就这么一句就搞定了</pre>
<p><strong>阻止/允许特定IP/IP段</strong></p>
<pre>           # 禁止所有IP，除了指定的
order deny,allow
deny from all
# 如果想允许IP段，如123.123.123.0 ~ 123.123.123.255，则
# allow from 123.123.123.
allow from 123.123.123.123

ErrorDocument 403 /page.html

&#60;Files page.html&#62;
allow from all
&#60;/Files&#62;

#如果想禁止特定IP
deny from 123.123.123.123</pre>
<p><strong>添加MIME类型</strong></p>
<pre>           AddType video/x-flv .flv
# 如果设置类型为 application/octet-stream 将提示下载
AddType application/octet-stream .pdf</pre>
<h3>用.htaccess文件实现网站404错误</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://www.os1010.com/archives/618">http://www.os1010.com/archives/618</a></p>
<p>作者：admin  发表于：2012年06月11日 09:25  分类：<a href="http://www.os1010.com/archives/category/wordpress_seo">SEO技术 </a>    字体： <a>小 </a><a>中 </a><a>大</a></p>
<p>定义<a href="http://www.os1010.com/archives/tag/404%e9%94%99%e8%af%af">404错误 </a>页对网站SEO的作用还是很大的，404 错误意味着链接指向的网页不存在，即原始网页的URL失效，这种情况经常会发生，很难避免，当Web 服务器接到类似请求时，会返回一个404 状态码，告诉浏览器要请求的资源并不存在。但是，Web服务器默认的404错误页面，十分呆板，而且对SEO是不利，对于网站流量也是很大的损失。</p>
<p>现在大多数主机都提供设置404页面的接口，这样的无论是国内主机还是国外主机都很好设置，不过仍然有不少主机不提供设置页面，这样的多是国内主机和一些免费主机，本文主要是针对这些主机，而且是针对PHP主机。</p>
<p>1. Apache下设置404错误页面（一般是Linux主机）</p>
<p>(1)           在.htaccess 文件(如果没有则新建一个)中加入如下内容：ErrorDocument 404 /404.html，将.htaccess文件上传到网站根目录</p>
<p>注：也可以使用这样的命令</p>
<p>ErrorDocument 404 <a href="http://www.iewb.net/404.htm">http://www.iewb.net/404.htm </a></p>
<p>ErrorDocument 500 <a href="http://www.iewb.net/500.htm">http://www.iewb.net/500.htm </a></p>
<p>(2)           制作一个404页面，随便您设计，命名为404.html，同样上传到网站根目录。如果您还想设置500页面，还可以在.htaccess命令里加上ErrorDocument 404 /500.html 并制作一个500页面传到网站根目录</p>
<p>网友不必检验本站的404页面了，因为本站用的是godaddy免费的空间，404页面会有广告。</p>
<p><a href="http://www.os1010.com/">本文由新未来博客（www.os1010.com）整理，转载请注明!</a></p>
<p>本文固定链接: <a href="http://www.os1010.com/archives/618">http://www.os1010.com/archives/618 &#124; Wordpress主机&#124;香港主机空间&#124;香港高速主机&#124;新未来博客</a></p>
<h3>由浅入深剖析.htaccess</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://blog.csdn.net/cdefg198/article/details/6645759">http://blog.csdn.net/cdefg198/article/details/6645759</a></p>
<p>2011-07-29 23:36 210人阅读 <a>评论</a>(0) <a>收藏</a> <a>举报</a></p>
<h5>1、.htaccess文件使用前提</h5>
<p>.htaccess的主要作用就是实现url改写，也就是当浏览器通过url访问到服务器某个文件夹时，作为主人，我们可以来接待这个url，具体地怎样接待它，就是此文件的作用。所有的访问都是通过URL实现，所以.htaccess的作用非同小可。正因为此，所以一般地网站通过设置.htaccess，通过一个十分友好的url吸引用户进来，然后用.htaccess把用户带到需要访问的位置。</p>
<p>要想使用这个强大功能，就得开启apache里面的重写模块。</p>
<p>前面的文章中曾经讲到过<a href="http://www.nbphp.com/blog/windows-ubuntu-open-rewrite-mod-htaccess/">windows和ubuntu开启 rewrite模块使用.htaccess</a> 。</p>
<p>其实开启模块大体的步骤都是一样的，无论是Windows和linux。</p>
<h5>2、.htaccess基本语法介绍</h5>
<p>开启重写引擎 ：RewriteEngine on</p>
<p>设置重写的根目录：RewriteBase /     — 说明 ：因为定义了这个文件夹，所以对应的替换就有了一个参照。</p>
<p>匹配所有符合条件的请求：RewriteCond       — 说明：RewriteCond 定义了一系列规则条件，这个指令可以有一条或者多条，只有用户拿来的url符合这些条件之后，我们的.htaccess才开始接待，否则用户就直接自己去访问所需要的目录了。</p>
<p>举个例子，为了能让搜索引擎更多地抓取我们的网页而避免重复抓，我们通常把没有www的域名重定向到www.XXX.com，如下就实现了这个功能：</p>
<p>RewriteEngine On</p>
<p>RewriteCond %{HTTP_HOST}  ^nbphp\.com$ [NC]</p>
<p>RewriteRule ^(.*)$  http://www.nbphp.com/$1 [R=301,L]</p>
<p>上例便把nbphp.com 重定向到www.nbphp.com</p>
<p>%{HTTP_HOST} 是指取得用户访问的URL的主域名  然后空格后面是一个正则表达式匹配，意识就是说是否是 nbphp.com 。</p>
<p>如果用户访问使用的URL满足所有列出的RewriteCond 提出的条件，那么进行下一步RewriteRule 即开始进行引导，这才开始实现.htaccess文件的重要功能。</p>
<p>同样，前面是正则表达式，用户分析用户的除了主域名nbphp.com之外的URL ,^(.*)$的意思就是所有的内容。 然后空格后面写的是我们引导用户访问的目录，我们带着他走到新的一个域名上。$1 指的是前面括号里匹配url所得到的内容。</p>
<p>这样就是一个完整的小例子。关于RewriteCond里 如何调用url的某个部分，我们可以参考这篇文章（<a href="http://blog.csdn.net/keyunq/archive/2008/06/11/2536875.aspx">Apache的Mod_rewrite学习 (RewriteCond重写规则的条件</a>)；</p>
<h5>3、现学现用，学习正则表达式。</h5>
<p>推荐一个经典的教程： <a href="http://deerchao.net/tutorials/regex/regex.htm">正则表达式30分钟入门教程</a></p>
<p>这个教程的确很简单，看完基本上写一些简单的正则就没有问题了。正则是一个需要长期使用的工具，隔段时间不用会忘记，所以我每次都看一遍这个教程。其实学过之后重要的就是一点内容。我简单罗列了如下：</p>
<p>.  换行符以外的所有字符</p>
<p>\w匹配字母或数字或下划线或汉字</p>
<p>\s匹配任意的空白符</p>
<p>\d匹配数字</p>
<p>\b匹配单词的开始或结束</p>
<p>^匹配字符串的开始</p>
<p>$匹配字符串的结束</p>
<p>*重复零次或更多次</p>
<p>*重复零次或更多次</p>
<p>+重复一次或更多次</p>
<p>?重复零次或一次</p>
<p>{n}重复n次</p>
<p>{n,}重复n次或更多次</p>
<p>{n,m}重复n到m次</p>
<p>应用替换时，前面第一个（）中匹配的内容后面就用$1引用，第二个（）中匹配的就用$2应用……</p>
<p>推荐一个实用的正则在线测试网站 <a href="http://www.regextester.com/">http://www.regextester.com/</a></p>
<p>我们来分析一下 <a href="http://www.phplamp.org/2009/01/discuz7-htaccess-download/">discuz7.0 搜索引擎优化 htaccess </a>里面的重写。</p>
<p>RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$  forumdisplay.php?fid=$1&#38;page=$2</p>
<p>首先加入用户通过 nbphp.com/forum-2-3.html 访问discuz论坛，那么先通过.htaccess过滤，看看是否需要.htaccess引导一下用户，如果满足列出的一系列RewriteCond的条件那么就进行重写，discuz的没有列出RewriteCond 所以应该全部都进行重写。所以开始进行转写，forum-2-3.html 这个正好符合 列出的^forum-([0-9]+)-([0-9]+)\.html$ 正则表达式。并且 $1 为 2  ，$2为3 ，所以代入后面，即 forumdisplay.php?fid=2&#38;page=3 加上前面的RewriteBase 指定的文件目录，那么就带他到制定目录的forumdisplay.php?fid=2&#38;page=3 。</p>
<h5>4、常见的.htaccess应用举例（部分例子引自四个例子实战讲解.htaccess文件rewrite规则）</h5>
<h6>4.1防止盗链，如果来得要访问jpe jpg bmp png结尾的url 用户不是来自我们的网站，那么让他看一张我们网站的展示图片。</h6>
<p>RewriteEngine On</p>
<p>RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]</p>
<p>RewriteCond %{HTTP_REFERER} !^$</p>
<p>RewriteRule .*.(jpe?g&#124;gif&#124;bmp&#124;png)$ /images/nohotlink.jpg [L]</p>
<h6>4.2 网站升级的时候，只有特定IP才能访问，其他的用户将看到一个升级页面</h6>
<p>RewriteEngine on</p>
<p>RewriteCond %{REQUEST_URI} !/upgrade.html$</p>
<p>RewriteCond %{REMOTE_HOST} !^24\.121\.202\.30</p>
<p>RewriteRule $ http://www.nbphp.com/upgrade.html [R=302,L]</p>
<h6>4.3把老的域名转向新域名</h6>
<p># redirect from old domain to new domain</p>
<p>RewriteEngine On</p>
<p>RewriteRule ^(.*)$http://www.yourdomain.com/$1[R=301,L]</p>
<h5>5、一些其他功能</h5>
<h6>5.1 引出错误文档的目录</h6>
<p>ErrorDocument 400 /errors/badrequest.html</p>
<p>ErrorDocument 404   <a href="http://yoursite/errors/notfound.html">http://yoursite/errors/notfound.html</a></p>
<p>ErrorDocument 401 “Authorization Required</p>
<h6>5.2 Blocking users by IP 根据IP阻止用户访问</h6>
<p>order allow,deny</p>
<p>deny from 123.45.6.7</p>
<p>deny from 12.34.5. (整个C类地址)</p>
<p>allow from all</p>
<h6>5.3 防止目录浏览</h6>
<p># disable directory browsing</p>
<p>Options All -Indexes</p>
<h6>5.4设置默认首页</h6>
<p># serve alternate default index page</p>
<p>DirectoryIndex about.html</p>
<h6>5.5 把一些老的链接转到新的链接上——搜索引擎优化SEO</h6>
<p>Redirect 301 /d/file.htmlhttp://www.htaccesselite.com/r/file.html</p>
<h6>5.6为服务器管理员设置电子邮件。</h6>
<p>ServerSignature EMail</p>
<p>SetEnv SERVER_ADMINdefault@domain.com</p>
<p>本文章主要介绍了应用最广最实用的重写功能，记住.htaccess的权限要设置成644</p>
<p><a rel="nofollow" href="http://www.lvjiyong.com/i468.html">.htaccess详解及.htaccess参数说明</a>，首发于<a rel="nofollow" href="http://www.lvjiyong.com">吕的部落格</a>。</p>
]]></description>
		<wfw:commentRss>http://www.lvjiyong.com/i468.html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress自定义栏目、固定字段、文章形式 资料收集</title>
		<link>http://www.lvjiyong.com/i458.html</link>
		<comments>http://www.lvjiyong.com/i458.html#comments</comments>
		<pubDate>Sat, 30 Mar 2013 08:33:59 +0000</pubDate>
		<dc:creator><![CDATA[吕]]></dc:creator>
				<category><![CDATA[工具]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://lvjiyong.com/?p=458</guid>
		<description><![CDATA[<p>如何给WordPress的wp_posts表添加一个字段，然后每次发布文章时就自动给这个字段添加内容，这个字段也就和文章标题、内容、发布时间等平起平坐了，是文章的固有属性。</p>
<p>在通常情况下，我们如果想在WordPress博客中给文章添加额外的属性，那么我们一般都会想到使用自定义栏目(也称自定义字段)，这也极大的增强了WordPress的扩展性，如我想使用WordPress制作一个在线销售的网站，那么每件商品有价格、颜色、重量等属性，这个时候我就可以使用自定义栏目来记录这部分数据。</p>
<h3>WordPress给文章添加固定字段的方法</h3>
<p><b>来源网址：</b> <a href="http://www.veryhuo.com/a/view/168.html">http://www.veryhuo.com/a/view/168.html</a></p>
<p>在WordPress中自定义栏目的数据是存放在wp_postmeta这个表中的，如果你的一篇文章中创建了3个自定义栏目，那么对应的就要往wp_postmeta这个表中插入3行数据，这样就实现与wp_posts表的分离，好处是你可以无限制添加自定义栏目，坏处是有点浪费存储空间(此处为花生奶油网友的观点)。现在的需求是，每篇文章我都有一个固定的字段，就如同文章标题一样是不可或缺的，那么你可以参考我下面的代码(这里以添加两个固定字段keywords和description为例，多个依此类推)，将以下代码添加到主题的functions.php中即可：</p>
<p><span style="text-decoration: underline;">Copy to Clipboard</span>引用的内容：[www.veryhuo.com]</p>
<p>/* Define the custom box，适用WP 3.0以后的版本 */<br />
add_action( 'add_meta_boxes', 'myplugin_add_custom_box' );<br />
// 如果是WP 3.0之前的版本，使用以下一行代码<br />
// add_action( 'admin_init', 'myplugin_add_custom_box', 1 );<br />
/* Do something with the data entered */<br />
add_action( 'save_post', 'myplugin_save_postdata' );<br />
/* Adds a box to the main column on the Post and Page edit screens */<br />
function myplugin_add_custom_box() {<br />
add_meta_box(<br />
'myplugin_sectionid',<br />
'My_custom_box', // 可自行修改标题文字<br />
'myplugin_inner_custom_box',<br />
'post'<br />
);<br />
}<br />
/* Prints the box content */<br />
function myplugin_inner_custom_box( $post ) {<br />
global $wpdb;<br />
// Use nonce for verification<br />
wp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_noncename' );<br />
// 获取固定字段keywords和description的值，用于显示之前保存的值<br />
// 此处wp_posts新添加的字段为keywords和description，多个用半角逗号隔开<br />
$date = $wpdb-&#62;get_row( $wpdb-&#62;prepare( "SELECT keywords, description FROM $wpdb-&#62;posts WHERE ID = %d", $post-&#62;ID) );<br />
// Keywords 字段输入框的HTML代码<br />
echo '&#60;label for="keywords_new_field"&#62;Keywords&#60;/label&#62; ';<br />
echo '&#60;input type="text" id="keywords_new_field" name="keywords_new_field" value="'.$date-&#62;keywords.'" size="18" /&#62;';<br />
// description 字段输入框的HTML代码，即复制以上两行代码，并将keywords该成description<br />
echo '&#60;label for="description_new_field"&#62;Description&#60;/label&#62; ';<br />
echo '&#60;input type="text" id="description_new_field" name="description_new_field" value="'.$date-&#62;description.'" size="18" /&#62;';<br />
// 多个字段依此类推<br />
}<br />
/* 文章提交更新后，保存固定字段的值 */<br />
function myplugin_save_postdata( $post_id ) {<br />
// verify if this is an auto save routine.<br />
// If it is our form has not been submitted, so we dont want to do anything<br />
if ( defined( 'DOING_AUTOSAVE' ) &#38;&#38; DOING_AUTOSAVE )<br />
return;<br />
// verify this came from the our screen and with proper authorization,<br />
// because save_post can be triggered at other times<br />
if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename( __FILE__ ) ) )<br />
return;<br />
// 权限验证<br />
if ( 'post' == $_POST['post_type'] ) {<br />
if ( !current_user_can( 'edit_post', $post_id ) )<br />
return;<br />
}<br />
// 获取编写文章时填写的固定字段的值，多个字段依此类推<br />
$keywords = $_POST['keywords_new_field'];<br />
$description = $_POST['description_new_field'];<br />
// 更新数据库，此处wp_posts新添加的字段为keywords和description，多个根据你的情况修改<br />
global $wpdb;<br />
$wpdb-&#62;update( "$wpdb-&#62;posts",<br />
// 以下一行代码，多个字段的话参照下面的写法，单引号中是字段名，右边是变量值。半角逗号隔开<br />
array( 'keywords' =&#62; $keywords, 'description' =&#62; $description ),<br />
array( 'ID' =&#62; $post_id ),<br />
// 添加了多少个新字段就写多少个%s，半角逗号隔开<br />
array( '%s', '%s' ),<br />
array( '%d' )<br />
);<br />
}</p>
<p>保存之后，你需要使用phpMyAdmin或其他工具给wp_posts表添加字段keywords和description，，如下图：</p>
<p><a href="http://lvjiyong.com/wp-content/uploads/2013/03/Image5.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Image[5]" alt="Image[5]" src="http://lvjiyong.com/wp-content/uploads/2013/03/Image5_thumb.png" width="540" height="137" border="0" /></a></p>
<p>如果你想在读取固定字段keywords和description的值，可以使用wpdb类的get_row方法，示例代码：</p>
<p><span style="text-decoration: underline;">Copy to Clipboard</span>引用的内容：[www.veryhuo.com]</p>
<p>// $post-&#62;ID是文章id，自行修改<br />
$date = $wpdb-&#62;get_row( $wpdb-&#62;prepare( "SELECT keywords FROM $wpdb-&#62;posts WHERE ID = %d", $post-&#62;ID) );<br />
// keywords值<br />
$keywords = $date-&#62;keywords;<br />
// description值<br />
$description = $date-&#62;description;</p>
<p>好了，大概内容就这些。至于添加更多个固定字段等问题，那就自己慢慢研究一下以上代码吧，相信你能行！</p>
<h3>用Wordpress自定义栏目标注文章来源</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://www.admin5.com/article/20121113/471627.shtml">http://www.admin5.com/article/20121113/471627.shtml</a></p>
<p>来源:<a href="http://www.vxin78.com/">微信 </a>作者:<a href="http://www.admin5.com/member/index.php?uid=myxo762">感动 </a>2012-11-13 14:40 <a href="http://www.admin5.com/member/article_add.php">我来投稿 </a><a>参与评论</a></p>
<p>如果用wordpress做资讯网站通常会涉及到投稿或者转载其它站点的文章，需要我们标注文章来源。因为页面的美观，一般是在文章正文标题下注明。具体方法可以使用wordpress的自定义栏目。</p>
<p>1.在wordpress后台撰写文章页面右上角，点击如下图所示“显示选项”，在拉出的菜单中“自定义栏目”选项打钩。</p>
<p><a href="http://lvjiyong.com/wp-content/uploads/2013/03/Image24.gif"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Image(2)[4]" alt="Image(2)[4]" src="http://lvjiyong.com/wp-content/uploads/2013/03/Image24_thumb.gif" width="492" height="94" border="0" /></a></p>
<p>2.这时文章编辑框下面就增加了“自定义栏目”编辑菜单。在名称中填入”author”(其它英文也行)。在值中填入作者名字。</p>
<p><a href="http://lvjiyong.com/wp-content/uploads/2013/03/Image55.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Image(5)[5]" alt="Image(5)[5]" src="http://lvjiyong.com/wp-content/uploads/2013/03/Image55_thumb.jpg" width="487" height="211" border="0" /></a></p>
<p>3.接下来在文章页面中这个值。在single.php中标题对应代码下加入：</p>
<p>&#60; ?php echo get_post_meta($post-&#62;ID,”author”,true); ? &#62;</p>
<p>如果之前的文章没有这个选项，我们可以作个判断：</p>
<p>&#60; ?php $author = get_post_meta($post-&#62;ID, ‘author’, true); if ($author) { echo “$author”; } else echo”微信趣吧” ? &#62;</p>
<p>这样没有相应值的时候，会直接输出“微信趣吧”。效果如下：</p>
<p><a href="http://lvjiyong.com/wp-content/uploads/2013/03/Image64.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Image(6)[4]" alt="Image(6)[4]" src="http://lvjiyong.com/wp-content/uploads/2013/03/Image64_thumb.jpg" width="348" height="101" border="0" /></a></p>
<p>本文作者：微信趣吧：http://www.vxin78.com/ 转载请注明!</p>
<h3>zh-cn:自定义栏目 « WordPress Codex</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://codex.wordpress.org/zh-cn:%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%8F%E7%9B%AE">http://codex.wordpress.org/zh-cn:%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%8F%E7%9B%AE</a></p>
<p><a href="http://codex.wordpress.org/Multilingual_Codex">Languages </a>: <a href="http://codex.wordpress.org/Custom_Fields">English </a>• <a href="http://www.veryhuo.com/es:Using_Custom_Fields">Español </a>• <a href="http://www.veryhuo.com/nl:Custom_Fields">Nederlands </a>• <a href="http://wpdocs.sourceforge.jp/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9">日本語 </a>• <a href="http://www.veryhuo.com/mk:%D0%9F%D0%BE%D1%81%D0%B5%D0%B1%D0%BD%D0%B8_%D0%9F%D0%BE%D0%BB%D0%B8%D1%9A%D0%B0">Македонски </a>• <a href="http://www.veryhuo.com/pt-br:Campos_Personalizados">Português do Brasil </a>• <a href="http://codex.wordpress.org/%D0%9F%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8F">Русский </a>• <strong>中文(简体)</strong> • <small>(<a href="http://codex.wordpress.org/Multilingual_Codex#Language_Cross_Reference">Add your language</a>)</small></p>
<p>文章作者可以在 WordPress 中为其文章指定自定义栏目。类似任意的附加信息通常叫做<b>属性</b>。这些<b>属性</b>可以是：</p>
<ul>
<li><b>心情：</b>开心</li>
<li><b>正在阅读：</b>灰姑娘</li>
<li><b>正在收听：</b>加价热潮</li>
<li><b>天气：</b>闷热</li>
</ul>
<p>通过稍微多写的代码，还可以实现更多操作。比如使用<b>属性</b>来储存文章的到期时间。</p>
<p>属性的数据结构是<b>键—值一一对应</b>（key/value pair）。<b>键</b>就是属性元素的名称；<b>值</b>是会出现在信息所属的文章的属性列表中的信息。</p>
<p><b>键</b>可以在一篇文章中使用多次。比如，当您在阅读两本不同的书的时候（没准一本是上班时间阅读的技术书籍，一本是家中阅读的小说），您可以创建“正在阅读”键，然后在同一文章中使用两次。</p>
<p>这是在您文章中，信息可能的展现形式：</p>
<p>本文已被<a href="http://www.veryhuo.com/Category:zh-cn:Stubs">标记 </a>为未完成状态。您可以将其<b><a href="http://codex.wordpress.org/index.php?title=zh-cn:%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%8F%E7%9B%AE&#38;action=edit">补充或翻译完整 </a></b>，以此<a href="http://www.veryhuo.com/Codex:Contributing">帮助 </a>完善 Codex。</p>
<p><b>Currently Reading</b>: <i>Calvin and Hobbes</i></p>
<p><b>Today's Mood</b>: <i>Jolly and Happy</i></p>
<p>我们参考前面所提到的例子来操作. 我们将添加两个自定义栏目， 一个栏目称为 "正在阅读" 另一个栏目则称之为 "今天的心情". 下面我们演示如何使用自定义栏目显示信息。</p>
<ol>
<li>依照常规将您的文章书写完成, 卷动滚动条到<b>自定义栏目</b>位置.<br />
<b>Note:</b> 自WordPress<a href="http://codex.wordpress.org/Version_3.1">version 3.1 </a>起,默认情况下自定义栏目已经隐藏,您可以通过管理面板写文章和页面编辑的<a href="http://codex.wordpress.org/Administration_Panels#Screen_Options">显示选项</a>中勾选自定义栏目打开它.</li>
<li>创建一个名字为"正在阅读"的<b>自定义栏目</b> , 在<b>名称</b>的输入栏中输入"正在阅读"文字(不带引号).</li>
<li>为刚刚新创建的<b>名称</b>添加一个<b>值</b>, 我们举一个正在阅读"卡尔文与霍布斯"的例子. 在<i>值</i>的输入框中键入 "卡尔文与霍布斯"(不带引号).</li>
<li>单击<b>添加自定义栏目</b>按钮将以上内容保存到文章中.</li>
</ol>
<p>To add your "Today's Mood", repeat the process and add "Today's Mood" to the <b>key</b> and a description of your mood in the <b>value</b> text boxes and click <b>SAVE</b> to save this information with the post.</p>
<p>On your next post, you can add a new book and mood to your meta-data. In the <b>Custom Fields</b> section, the <b>Key</b> will now feature a pull down list with the previously entered Custom Fields. Choose "Currently Reading" and then enter the new book you are reading in the <b>value</b>. Click <b>Add Custom Field</b> and then repeat the process to add "Today's Mood".</p>
<p>You only need to create a new "KEY" <b>once</b>, after which you can assign a value to that key for every post, if you so desire. You can also assign more than one <i>Value</i> to a key, for a post. This will come in handy for people who read more than one book at a time.</p>
<h4>Displaying Custom Fields</h4>
<p>With a Custom Field added to the post, it's time to display your books and mood to the world. To display the Custom Fields for each post, use the <tt><a href="http://codex.wordpress.org/Template_Tags/the_meta">the_meta() </a></tt>template tag. The tag must be put within <a href="http://codex.wordpress.org/The_Loop">The Loop </a>in order to work. Many people add <tt>the_meta()</tt> template tag to the end of their post or in their <a href="http://codex.wordpress.org/Post_Meta_Data_Section">Post Meta Data Section </a>. Here is a basic example of using the tag:</p>
<pre>&#60;?php the_meta(); ?&#62;</pre>
<p>It might look like this in the source code:</p>
<pre>&#60;ul class='post-meta'&#62;
&#60;li&#62;&#60;span class='post-meta-key'&#62;Curently Reading:&#60;/span&#62; Calvin and Hobbes&#60;/li&#62;
&#60;li&#62;&#60;span class='post-meta-key'&#62;Today's Mood:&#60;/span&#62; Jolly and Happy&#60;/li&#62;
&#60;/ul&#62;</pre>
<p>The template tag automatically puts the entire meta-data into a CSS style called <tt>post-meta</tt>. The <b>key</b> is in a <tt>span</tt> called <tt>post-meta-key</tt> so you can style it in your style sheet. All of this is showcased in an unordered list.</p>
<p>To customize the look of the post-meta list, change the characteristics in your style sheet. For instance, let's add some style to our example from the top. The style sheet elements would look like this:</p>
<pre>.post-meta {font-variant: small-caps; color: maroon; }
.post-meta-key {color: green; font-weight: bold; font-size: 110%; }</pre>
<ul>
<li>Currently Reading: Calvin and Hobbes</li>
<li>Today's Mood: Jolly and Happy</li>
</ul>
<p>There are also many WordPress Plugins in the <a href="http://wordpress.org/extend/plugins/">Official WordPress Plugin Directory </a>that add some nice features to the job of displaying meta tags. A search for <a href="http://www.google.com/search?hl=en&#38;q=custom+fields+plugin+wordpress&#38;btnG=Google+Search">Custom Field plugins at Google </a>should help you find even more.</p>
<p>To register support for custom fields within a custom post type, simply list it in your 'supports' $args using 'custom-fields'.</p>
<pre>'supports' =&#62; array('title','editor','thumbnail','custom-fields')</pre>
<h4>自定义栏目的高级应用</h4>
<p>以下是使用更高级的方式获取自定义数据和自定义栏目的方法。</p>
<h5>Getting Custom Fields</h5>
<p>To fetch meta values use the <tt><a href="http://codex.wordpress.org/Function_Reference/get_post_meta">get_post_meta() </a></tt>function:</p>
<pre> get_post_meta($post_id, $key, $single);</pre>
<ul>
<li><tt>$post_id</tt> is the ID of the post you want the meta values for. Use <tt>$post-&#62;ID</tt> to get a post's ID within the $post variable scope. Use <tt><a href="http://codex.wordpress.org/Function_Reference/get_the_ID">get_the_ID() </a></tt>to retrieve the ID of the current item in the WordPress Loop.</li>
<li><tt>$key</tt> is a string containing the name of the meta value you want.</li>
<li><tt>$single</tt> can either be <tt>true</tt> or <tt>false</tt>. If set to true then the function will return a single result, as a <b>string</b>. If false, or not set, then the function returns an <b>array</b> of the custom fields.</li>
</ul>
<h6>Implementation Details</h6>
<p>The PostMeta information is stored in a new table, <tt>$wpdb-&#62;postmeta</tt>. This table has four fields:</p>
<dl>
<dd>'<tt>meta_id</tt>' - A unique id for each entry.</dd>
<dd>'<tt>post_id</tt>' - The ID of the post for this metadata.</dd>
<dd>'<tt>meta_key</tt>' - The name of the 'key'.</dd>
<dd>'<tt>meta_value</tt>' - The value associated with the key.</dd>
</dl>
<p>The values from this table are pulled into a structured multi-dimensional array called <tt>$post_meta_cache</tt>, just after the <tt>$posts</tt> array is fetched in <tt>wp-blog-header.php</tt>. This variable will only contain values for the list of posts fetched for the current page build. The structure of the array will look something like this:</p>
<pre>[
        postid1 =&#62; [
                key1 =&#62; [ val1, val2, ... ],
                key2 =&#62; [ val1, val2, ... ],
                ...
        ],
        postid2 =&#62; [
                key1 =&#62; [ val1, val2, ... ],
                key2 =&#62; [ val1, val2, ... ],
                ...
        ],
        ...
]</pre>
<p>So, if you wanted to fetch the "reading" values from post number 256, you use this PHP code:</p>
<pre>// Fetch an array of values for what I'm reading:
$readinglist = $post_meta_cache[256]['reading'];</pre>
<p><b>Note:</b> Don't forget that <tt>$readinglist</tt> will be an array, not a single value.</p>
<h5>PostMeta Functions</h5>
<h6>Internal Functions</h6>
<p>These functions are intended for use inside <a href="http://codex.wordpress.org/The_Loop">The Loop </a>, and all return arrays.</p>
<dl>
<dt><tt><a href="http://codex.wordpress.org/Function_Reference/get_post_custom">get_post_custom()</a></tt></dt>
<dd>Get all key/value data for the current post.</dd>
<dt><tt><a href="http://codex.wordpress.org/Function_Reference/get_post_custom_keys">get_post_custom_keys()</a></tt></dt>
<dd>Get a list of all key names for the current post.</dd>
<dt><tt><a href="http://codex.wordpress.org/Function_Reference/get_post_custom_values">get_post_custom_values($key)</a></tt></dt>
<dd>Get the list of values for a particular key on the current post.</dd>
<dt><tt><a href="http://codex.wordpress.org/Function_Reference/get_post_meta">get_post_meta($post_id, $key, $single = false)</a></tt></dt>
<dd>In WP 1.5 and beyond, this function returns the meta information without cache problems. The function requires the post id, the key, and if <tt>$single</tt> is set to TRUE, it returns only the first result (NOT as an array) for PHP use.</dd>
</dl>
<pre>This will output the resulting meta value (notice the addition of "echo"):
&#60;?php $key="mykey"; echo get_post_meta($post-&#62;ID, $key, true); ?&#62;</pre>
<h6>Template Functions</h6>
<p>At the time of this writing, there is only one template function.</p>
<dl>
<dt><tt><a href="http://codex.wordpress.org/Template_Tags/the_meta">the_meta()</a></tt></dt>
<dd>Echoes an unordered list containing the current post's meta-data with a class for the UL as <i>post-meta</i> and the LI as <i>post-meta-key</i>.</dd>
</dl>
<p>We expect that independent developers will come up with many interesting uses for post meta-data in the form of plugins. The <tt>the_meta()</tt> template function is just an extremely basic example.</p>
<h3>WordPress给分类添加自定义栏目的方法</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://down.chinaz.com/try/201211/2300_1.htm">http://down.chinaz.com/try/201211/2300_1.htm</a></p>
<p>作者：<em>匿名</em> 来源：<em>露兜博客</em> 浏览：<em>965次</em> 2012-11-4 11:51:59 字号：<a>大</a> <a>中</a> <a>小</a></p>
<p>[摘要]WordPress能不能实现分类目录添加固定字段呢？分类目录只有名称、别名、父级、描述这几个项目，比如我有一个电影分类，想再添加个电影分类的缩略图或者分类关键字就没法加了，本文就解决了这样的问题。</p>
<p><strong>  一、插件</strong></p>
<p><a href="http://wordpress.org/extend/plugins/wp-category-meta/installation/">Category Meta plugin</a>，功能比较强大，可以用于给分类、标签、自定义菜单、链接分类等添加自定义栏目，支持单行/多行文本框、多选框以及图片上传。</p>
<p><strong>使用方法</strong></p>
<p>激活插件后，进入后台 – 设置 – Category Meta，这里可以创建/管理你添加的自定义栏目。</p>
<p><a href="http://lvjiyong.com/wp-content/uploads/2013/03/Image14.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Image(1)[4]" alt="Image(1)[4]" src="http://lvjiyong.com/wp-content/uploads/2013/03/Image14_thumb.png" width="468" height="203" border="0" /></a></p>
<p><strong> Meta Name：</strong>添加自定义栏目的名称（用英文）；</p>
<p><strong>Sanitize meta name：</strong>一般都勾选吧；</p>
<p><strong>Meta Type：</strong>选择自定义栏目的类型，包括Text单行文本框、Text Area多行文本框、Image图片上传、Check Box多选框</p>
<p><strong>Meta Toxonomy：</strong>是要添加自定义栏目的地方，可选择category分类、post_tag标签、nav_menu菜单、link_category链接标签、post_format</p>
<p>最后，点击Add Meta，就可以添加想要的自定义栏目了。如我们Meta Toxonomy选的是category，那么在文章 – 分类目录下就可以看到刚才添加的自定义栏目color了。</p>
<p><a href="http://lvjiyong.com/wp-content/uploads/2013/03/Image24.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Image(2)[4]" alt="Image(2)[4]" src="http://lvjiyong.com/wp-content/uploads/2013/03/Image24_thumb.png" width="414" height="517" border="0" /></a></p>
<p>如何调用这个自定义栏目的值呢，可以使用下面php代码即可：</p>
<pre>if (function_exists('get_terms_meta')) {
  // $category_id是分类id，$meta_key是自定义栏目名称（就是你上面填的Meta Name）
  $metaValue = get_terms_meta($category_id, $meta_key);
  echo $metaValue[0];
}</pre>
<p>如在主题目录下，一般分类目录所使用的模板是category.php或这是archive.php，那么我们可以在这些php文件中添加代码：</p>
<pre>if ( is_category() ) {
    if (function_exists('get_terms_meta')) {
        // get_query_var('cat')是当前分类id，color是我使用的自定义栏目名称（就是上面填的Meta Name）
        $metaValue = get_terms_meta(get_query_var('cat'), 'color');
        echo $metaValue[0];
    }
}</pre>
<p><strong>二、教程</strong></p>
<p>下面这篇教程实现的功能比较强大，但是需要你对php代码有一点了解，当然还要会看点英文：<a href="http://en.bainternet.info/2012/wordpress-taxonomies-extra-fields-the-easy-way">WordPress taxonomies extra fields the easy way</a></p>
<p>原文地址：<a href="http://www.ludou.org/wordpress-taxonomies-extra-fields-the-easy-way.html">http://www.ludou.org/wordpress-taxonomies-extra-fields-the-easy-way.html</a></p>
<h3>wordpress自定义栏目设置使用详解</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://www.chinaz.com/web/2011/0824/206633.shtml?jtss=kaixin001">http://www.chinaz.com/web/2011/0824/206633.shtml?jtss=kaixin001</a></p>
<p>2011-08-24 14:58 [小 大] 来源: 魏星博客 <a href="http://app.chinaz.com/?app=comment&#38;controller=comment&#38;action=index&#38;topicid=136888">评论: 我来评论 </a>分享至:</p>
<p>还是做企业站的时候遇到的问题，因为做产品栏目的时候，产品有很多的参数需要显示，比如产品的大小、重量、单价等，于是我想到的方法就是使用自定义栏目给产品增加属性。</p>
<p>首先是开启自定义栏目模块，进入后台后，点击右上角的显示选项，在自定义栏目前打勾就行了，可以在编辑文章的下方看到自定义栏目模块，包括名称、值2方面。</p>
<p><a href="http://lvjiyong.com/wp-content/uploads/2013/03/Image74.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Image(7)[4]" alt="Image(7)[4]" src="http://lvjiyong.com/wp-content/uploads/2013/03/Image74_thumb.jpg" width="315" height="117" border="0" /></a></p>
<p><a href="http://lvjiyong.com/wp-content/uploads/2013/03/Image84.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Image(8)[4]" alt="Image(8)[4]" src="http://lvjiyong.com/wp-content/uploads/2013/03/Image84_thumb.jpg" width="430" height="183" border="0" /></a></p>
<p>好了，开始使用自定义栏目设置你的参数。填写自定义栏目中的名称，以及参数的值，比如我想加一个参数为高度：3米，那么你可以填他的名称为p_height（也可以是中文高度，亲测，可以中文），值为3米，保存，好了，下面开始在页面中调用这段自定义栏目的值了，在代码</p>
<blockquote><p>&#60;?php while (have_posts()): the_post(); &#62;&#62;</p></blockquote>
<p>循环内添加以下代码</p>
<blockquote><p>&#60;?php echo get_post_meta($post-&#62;ID,"p_height",true);?&#62;</p></blockquote>
<p>，其中“p_height”与你在自定义栏目中填写的名称是一致的，好了，运行一下看看吧，显示的时候就会出现“3米”的字样。你也可以添加多个自定义栏目，调用的时候添加多个就行了，希望对你有帮助！！</p>
<p><a href="http://lvjiyong.com/wp-content/uploads/2013/03/Image94.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Image(9)[4]" alt="Image(9)[4]" src="http://lvjiyong.com/wp-content/uploads/2013/03/Image94_thumb.jpg" width="556" height="135" border="0" /></a></p>
<p>原文地址：<a href="http://weixing.me/wordpress/wordpress-custom-field-explain/">魏星博客</a></p>
<h3>扩展wordpress的另类用途</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://www.chinaz.com/web/2010/0520/115667.shtml">http://www.chinaz.com/web/2010/0520/115667.shtml</a></p>
<p>2010-05-20 00:23 [小 大] 来源: 漠天博客 <a href="http://app.chinaz.com/?app=comment&#38;controller=comment&#38;action=index&#38;topicid=83960">评论: 我来评论 </a>分享至:</p>
<p>WordPress本身只是一款开源的、基于PHP的博客软件，但是由于WordPress的源码开源、结构优良、插件丰富、主题繁多，以至于是WordPress成为世界上最流行的博客程序。《<a href="http://www.chinaz.com/News/IT/1123bX22009.html">WordPress获得2009年度开源CMS大奖最佳综合表现奖 </a>》</p>
<p>没错，WordPress是世界上最好的博客程序，但是如果你单纯的认为WordPress只是一款博客程序的话，那就大错特错。通过WordPress插件和主题，我们可以将这款博客程序扩展成我们需要的、功能不凡的另类用途，例如CMS、链接目录、论坛、WIKI、电子商务、项目管理、微博、SNS、视频、图片网站等等。</p>
<p>其实还有一个令我们欣喜的、WordPress团队正在开发的WordPress 3.0，这个版本的程序在CMS功能得到了大大的加强，尤其为那些想建立多个博客的博主们提供了更好的功能。《<a href="http://www.chinaz.com/Webmaster/report/05111145622010.html">WordPress 3.0 五大新特征 </a>》《<a href="http://www.chinaz.com/Webmaster/report/031Q0Z142010.html">WordPress 3.0 十大看点 </a>》</p>
<p><strong>CMS</strong></p>
<p>CMS是Content Management System的缩写，意为”<a href="http://baike.baidu.com/view/857578.htm">内容管理系统 </a>“，可以让你不需要学习复杂的建站技术，不需要学习太多复杂的HTML语言，你就能够利用CMS构建出一个风格统一功能强大的专业网站。</p>
<p>在这推荐一款插件<a href="http://ilfilosofo.com/blog/home-page-control/">Filosofo Home-Page Control </a>，以及两篇文章：</p>
<p>《5个简单的步骤把 WordPress 打造成 CMS》</p>
<p>《11款CMS风格的Wordpress主题模板收集》</p>
<p><strong>链接目录</strong></p>
<p>链接目录一个通过分类和子分类进行分类排序的网页链接集。</p>
<p>免费的目录脚本是非常好的，但是他们运行于 WordPress 之外，所以并不是我们想要得。和往常一样，有人已经写出一个能够添加漂亮的链接目录功能到 WordPress的插件：<a href="http://www.seanbluestone.com/wp-link-directory">WP Link Directory</a></p>
<p>WP Link Directory是一个WordPress的链接目录插件，让你保持一个链接目录，并允许其他网站管理员申请链接到您的网站。它可以检查链接情况，甚至检查其他网站的Pagerank并接受或拒绝您指定的标准为基础的环节。</p>
<p><strong>其主要特点是：</strong></p>
<p>•自动检查由指定的Pagerank网页链接。</p>
<p>•在目录中显示所有站点的PageRank。</p>
<p>•显示每个链接的详细信息。</p>
<p>•提供多种语言。</p>
<p>•当有新的网址提交时，会自动通知管理员。</p>
<p>•可以和你当前使用的主题无缝的结合</p>
<p><strong>论坛</strong></p>
<p>论坛作为一个社区网站是必备的一个功能模块，但是当我们使用discuz、phpwind、phpbb等这些优秀的论坛程序时，不得不佩服他的功能强大，但是我们有没有自问过：”自己的网站需要这么复杂的程序吗？”，于是许多优秀的、注重效率、满足基本功能的论坛程序受到小站长的追捧。</p>
<p>WordPress团队开发了一个简单的论坛程序<a href="http://bbpress.org/">bbpress </a>（有点像百度贴吧）但是我们有时就是需要再简单点的论坛，这时我们可以使用WordPress插件论坛来扩展：<a href="http://simplepressforum.com/">Simple:Press </a>（《WordPress 论坛插件：Simple Forum》）</p>
<p><a href="http://www.fahlstad.se/wp-plugins/wp-forum/">WP-Forum </a>（《wordpress插件之WP-Forum：打造一个轻量级的wordpress论坛》）</p>
<p><strong>WIKI</strong></p>
<p>Wiki系统属于一种人类知识网格系统，我们可以在Web的基础上对Wiki文本进行浏览、创wiki建、更改，而且创建、更改、发布的代价远比HTML文本小；同时Wiki系统还支持面向社群的协作式写作，为协作式写作提供必要帮助；最后，Wiki的写作者自然构成了一个社群，Wiki系统为这个社群提供简单的交流工具。与其它超文本系统相比，Wiki有使用方便及开放的特点，所以Wiki系统可以帮助我们在一个社群内共享某领域的知识。</p>
<p>插件推荐：<a href="http://wp-wiki.org/">WP-WIKI</a></p>
<p>安装WP-WIKI插件后，添加了发布WordPress的页面或文章的”wiki维基编辑” 功能，当你编辑文章或者页面的屏幕的主编辑框下面会添加一个新的Wordpress Wiki复选框，你选中它后，那么就意味着任何人可以登陆到你的网站以一个WikiEditor维基编辑人的身份编辑这些特定的页面（测试时好像需要用户名和密码），如果你点击一个旧的修订链接，他只是展示让你详阅所有旧的修订链接。</p>
<p><strong>电子商务</strong></p>
<p>用WordPress做个电子商务网站，工作之余在网上卖点小东西，呵呵，是不是很不错的想法，如果你有这样的想法，那么，你就去做吧，为你介绍一款强大的插件<a href="http://www.instinct.co.nz/">WP e-Commerce </a>。</p>
<p>WP e-Commerce是一款电子商务购物车插件程序，它不仅操作方便并且功能强大，可以独立页面显示也可以嵌入到侧边栏中，非常适合在线销售你的服务和产品。此外它还内置多种包括Paypal等在内的支付网关，让收款和资金周转更加快捷有效！</p>
<p>支付网关：让你轻松接受在线支付</p>
<p>简化结算：让客户有更好的购物体验</p>
<p>社会化网络：更轻松的推荐你的产品</p>
<p>紧凑的WordPress整合：安装方便</p>
<p>更多的点击和更好的销售：让更多的人了解你的新产品</p>
<p><strong>项目管理</strong></p>
<p>在WordPress上轻松的创建并展示你的项目，跟踪项目和任务的进度。</p>
<p>推荐插件：<a href="http://wordpress.org/extend/plugins/wp-project/">WP-Project </a>、<a href="http://wordpress.org/extend/plugins/wp-advanced-trac/">WP-Advanced-Trac</a></p>
<p><strong>微博</strong></p>
<p>现在微博很火，就像当年的博客进入中国一样。但是中国微博异于twitter，在中国微博：娱乐、资讯，而twitter上是：资讯、娱乐。</p>
<p>在这微博混战的年代、在这追求新鲜与个性的时代，我注册了几乎所有能注册的微博，但是真正使用的也就是几个。</p>
<p>在这推荐一个非常强大的WordPress主题：<a href="http://wordpress.org/extend/themes/p2">P2主题 </a>，这是一款专门的微博主题。</p>
<p>《P2主题打造真正的多用户微博》</p>
<p><strong>SNS</strong></p>
<p>又是一个当下非常火的网络服务，但是微博来临的时候，SNS却黯然失色啦，只能说互联网的兴奋点只能是新生事物</p>
<p>推荐插件：<a href="http://buddypress.org/">BuddyPress </a>，与WordPress师出同门，质量还是可以保证的。BuddyPress主要包含了个人信息、博客、朋友圈、小组、微博客、状态更新和相册等功能</p>
<p><strong>视频网站</strong></p>
<p>WordPress通过在2.9版本中增强了视频嵌入功能，尤其是对国外网站视频的插入更是智能化。</p>
<p>如果我们想通过WordPress建立一个视频网站的话，我想没有比采用<a href="http://www.press75.com/demos/vodpod-theme/"> VodPod </a>主题更好了。《WordPress视频主题VodPod使用教程》</p>
<p><strong>图片网站</strong></p>
<p>如果是单纯的添加一个相册的话，我想采用<a href="http://alexrabe.de/wordpress-plugins/nextgen-gallery/">NextGEN Gallery </a>插件最好不过啦《<a href="http://paranimage.com/wordpress-plugin-for-picture-album/">21款Wordpress图片相册插件/ Gallery Plugins </a>》。</p>
<p>但是如果是建立一个图片网站的话，那么选择一款好的图片主题更为重要：《<a href="http://blogunion.org/wordpress/wordpress-themes/8-photoblog-themes.html">推荐8款wordpress图片模板 </a>》。</p>
<p>另外在推荐两款插件：<a href="http://johannes.jarolim.com/blog/wordpress/yet-another-photoblog/">Yet another photoblog </a>和 <a href="http://www.whoismanu.com/blog/2007/01/photoq-wordpress-plugin/">PhotoQ Wordpress Photoblog Plugin</a></p>
<p>注：在整理这篇文章难免会出现错误，请读者给以校正。</p>
<p>本作品采用知识共享署名 3.0 Unported许可协议进行许可。</p>
<p>转载请注明： 扩展wordpress的另类用途 &#124; <a href="http://motian.org/">漠天博客</a></p>
<h3>Wordpress企业网站如何充分利用文章属性</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://www.chinaz.com/web/2010/0728/123215.shtml">http://www.chinaz.com/web/2010/0728/123215.shtml</a></p>
<p>2010-07-28 15:25 [小 大] 来源: Chinaz用户投稿 <a href="http://app.chinaz.com/?app=comment&#38;controller=comment&#38;action=index&#38;topicid=88755">评论: 我来评论 </a>分享至:</p>
<p>第一次接触wordpress ，给wordpress强大的功能所压倒，很棒很不错。插件很多，模板也很多，但是企业类的模板还是比较少的，通常的都要收费的，比如wpyou开发。经过多翻学习，不断深入，结合wpyou提供的免费CMS模板以及其他模板，改成了我的第一个wordpress企业主题。严格来说，还是延续了wpyou的模板风格。</p>
<p>用wordpress做企业主题网站，主要有几个问题，比如导航、幻灯片、产品展示、sidebar等。以下会一一讲解。</p>
<p>1、在导航方面，我利用了Page和文章分类目录相结合的方法。比如调用页面参数wp_list_pages还有调用分类目录参数wp_list_categories。（不过这在wordpress3.0能够通过wp_nav参数来设置）</p>
<p>2、在幻灯片方面，充分利用文章的属性：缩略图和文章顶置功能。用缩略图来控制幻灯片图片的展示，用文章顶置功能来控制更换显示幻灯片图片。</p>
<p>3、在产品展示方面，也是充分利用文章的属性：缩略图功能。这样就可以对应的将所需类目的产品以图片的方式展示出来。另外要调用某个类型的商品，通过参数&#60;?php query_posts("showposts=X&#38;cat=W")?&#62;来控制。X：控制显示数量 W：一级分类ID</p>
<p>4、在sidebar方面，通过</p>
<p>以下为引用的内容：</p>
<p>&#60;?php $post = $wp_query-&#62;post;</p>
<p>if ( in_category('M')&#124;in_category('M'){ wp_list_categories('child_of=W&#38;hide_empty=0&#38;title_li=&#60;h2&#62;' . __('产品目录') . '&#60;/h2&#62;</p>
<p>');}</p>
<p>elseif ( in_category('M') &#124;in_category('M')&#124;in_category('M'))</p>
<p>{ wp_list_categories('child_of=W&#38;hide_empty=0&#38;title_li=&#60;h2&#62;' . __('新闻中心') . '&#60;/h2&#62;</p>
<p>');}</p>
<p>?&#62;</p>
<p>来控制调用所在分类的子分类。M：二级分类ID W：一级分类ID</p>
<p>在搜索引擎优化方面，特别针对百度做了优化，使用了关键字内链插件和百度XML插件、拼音插件等。</p>
<p>以下是网站效果图，欢迎大家访问：http://www.9102018.com/</p>
<p>&#160;</p>
<h3>WordPress数据库结构介绍</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://wpceo.com/wordpress-database-construct/">http://wpceo.com/wordpress-database-construct/</a></p>
<p>作者：neekey，发布于 2011年1月1日 ，已浏览6415次</p>
<p>WordPress使用MySQL数据库。作为一个开发者，我们有必要掌握<a href="http://codex.wordpress.org/Database_Description">WordPress数据库</a> 的基本构造，并在自己的插件或主题中使用他们。</p>
<p>截至WordPress3.0，WordPress一共有以下11个表。这里加上了默认的表前缀 <code>wp_</code> 。</p>
<ul>
<li><code>wp_commentmeta</code>：存储评论的元数据</li>
<li><code>wp_comments</code>：存储评论</li>
<li><code>wp_links</code>：存储友情链接（Blogroll）</li>
<li><code>wp_options</code>：存储WordPress系统选项和插件、主题配置</li>
<li><code>wp_postmeta</code>：存储文章（包括页面、上传文件、修订）的元数据</li>
<li><code>wp_posts</code>：存储文章（包括页面、上传文件、修订）</li>
<li><code>wp_terms</code>：存储每个目录、标签</li>
<li><code>wp_term_relationships</code>：存储每个文章、链接和对应分类的关系</li>
<li><code>wp_term_taxonomy</code>：存储每个目录、标签所对应的分类</li>
<li><code>wp_usermeta</code>：存储用户的元数据</li>
<li><code>wp_users</code>：存储用户</li>
</ul>
<p>在WordPress的数据库结构中，存储系统选项和插件配置的<code>wp_options</code>表是比较独立的结构，在<a href="http://wpceo.com/wordpress-options-api/">后文</a> 中会提到，它采用了key-value模式存储，这样做的好处是易于拓展，各个插件都可以轻松地在这里存储自己的配置。</p>
<p>post，comment，user 则是三个基本表加上拓展表的组合。以<code>wp_users</code>为例， <code>wp_users</code>已经存储了每个用户会用到的基本信息，比如 login_name、display_name、 password、email等常用信息，但如果我们还要存储一些不常用的数据，最好的做法不是去在表后加上一列，去破坏默认的表结构，而是将数据存在<code>wp_usermeta</code>中。<code>wp_usermeta</code>这个拓展表和<code>wp_options</code>表有类似的结构，我们可以在这里存储每个用户的QQ号码、手机号码、登录WordPress后台的主题选项等等。</p>
<p>比较难以理解的是term，即<code>wp_terms</code>、<code>wp_term_relationships</code>、<code>wp_term_taxonomy</code>。在WordPress的系统里，我们常见的分类有文章的分类、链接的分类，实际上还有TAG，它也是一种特殊的分类方式，我们甚至还可以创建自己的分类方法。WordPress将所有的分类及分类方法、对应结构都记录在这三个表中。<code>wp_terms</code>记录了每个分类的名字以及基本信息，如本站分为“WordPress开发”、“WPCEO插件”等，这里的分类指广义上的分类，所以每个TAG也是一个“分类”。<code>wp_term_taxonomy</code>记录了每个分类所归属的分类方法，如“WordPress开发”、“WPCEO插件”是文章分类（<code>category</code>），放置友情链接的“我的朋友”、“我的同事”分类属于友情链接分类（<code>link_category</code>）。<code>wp_term_relationships</code>记录了每个文章（或链接）所对应的分类方法。</p>
<p>庆幸的是，关于term的使用，WordPress中相关函数的使用方法还是比较清晰明了，我们就没必要纠结于它的构造了。</p>
<p>在下一篇文章中，WPCEO将介绍每个表中的具体信息，请持续关注WPCEO。</p>
<h3>WordPress固定字段--实现与wp_posts表的合并</h3>
<p>&#160;</p>
<p><b>来源网址：</b> <a href="http://hi.baidu.com/moliu001/item/6eb83f9b4cf4fcb983d295ac">http://hi.baidu.com/moliu001/item/6eb83f9b4cf4fcb983d295ac</a></p>
<p>如何给WordPress的wp_posts表添加一个字段，然后每次发布文章时就自动给这个字段添加内容，这个字段也就和文章标题、内容、发布时间等平起平坐了，是文章的固有属性。</p>
<p>在通常情况下，我们如果想在WordPress博客中给文章添加额外的属性，那么我们一般都会想到使用自定义栏目（也称自定义字段），这也极大的增强了WordPress的扩展性，如我想使用WordPress制作一个在线销售的网站，那么每件商品有价格、颜色、重量等属性，这个时候我就可以使用自定义栏目来记录这部分数据。</p>
<p>在WordPress中自定义栏目的数据是存放在wp_postmeta这个表中的，如果你的一篇文章中创建了3个自定义栏目，那么对应的就要往wp_postmeta这个表中插入3行数据，这样就实现与wp_posts表的分离，好处是你可以无限制添加自定义栏目，坏处是有点浪费存储空间（此处为花生奶油网友的观点）。现在的需求是，每篇文章我都有一个固定的字段，就如同文章标题一样是不可或缺的，那么你可以参考我下面的代码（这里以添加两个固定字段keywords和description为例，多个依此类推），将以下代码添加到主题的functions.php中即可：</p>
<p>/* Define the custom box，适用WP 3.0以后的版本 */</p>
<p>add_action( 'add_meta_boxes', 'myplugin_add_custom_box' );</p>
<p>// 如果是WP 3.0之前的版本，使用以下一行代码</p>
<p>// add_action( 'admin_init', 'myplugin_add_custom_box', 1 );</p>
<p>/* Do something with the data entered */</p>
<p>add_action( 'save_post', 'myplugin_save_postdata' );</p>
<p>/* Adds a box to the main column on the Post and Page edit screens */</p>
<p>function myplugin_add_custom_box() {</p>
<p>add_meta_box(</p>
<p>'myplugin_sectionid',</p>
<p>'My_custom_box', // 可自行修改标题文字</p>
<p>'myplugin_inner_custom_box',</p>
<p>'post'</p>
<p>);</p>
<p>}</p>
<p>/* Prints the box content */</p>
<p>function myplugin_inner_custom_box( $post ) {</p>
<p>global $wpdb;</p>
<p>// Use nonce for verification</p>
<p>wp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_noncename' );</p>
<p>// 获取固定字段keywords和description的值，用于显示之前保存的值</p>
<p>// 此处wp_posts新添加的字段为keywords和description，多个用半角逗号隔开</p>
<p>$date = $wpdb-&#62;get_row( $wpdb-&#62;prepare( "SELECT keywords, description FROM $wpdb-&#62;posts WHERE ID = %d", $post-&#62;ID) );</p>
<p>// Keywords 字段输入框的HTML代码</p>
<p>echo '&#60;label for="keywords_new_field"&#62;Keywords&#60;/label&#62; ';</p>
<p>echo '&#60;input id="keywords_new_field" name="keywords_new_field" value="'.$date-&#62;keywords.'" size="18" /&#62;';</p>
<p>// description 字段输入框的HTML代码，即复制以上两行代码，并将keywords该成description</p>
<p>echo '&#60;label for="description_new_field"&#62;Description&#60;/label&#62; ';</p>
<p>echo '&#60;input id="description_new_field" name="description_new_field" value="'.$date-&#62;description.'" size="18" /&#62;';</p>
<p>// 多个字段依此类推</p>
<p>}</p>
<p>/* 文章提交更新后，保存固定字段的值 */</p>
<p>function myplugin_save_postdata( $post_id ) {</p>
<p>// verify if this is an auto save routine.</p>
<p>// If it is our form has not been submitted, so we dont want to do anything</p>
<p>if ( defined( 'DOING_AUTOSAVE' ) &#38;&#38; DOING_AUTOSAVE )</p>
<p>return;</p>
<p>// verify this came from the our screen and with proper authorization,</p>
<p>// because save_post can be triggered at other times</p>
<p>if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename( __FILE__ ) ) )</p>
<p>return;</p>
<p>// 权限验证</p>
<p>if ( 'post' == $_POST['post_type'] ) {</p>
<p>if ( !current_user_can( 'edit_post', $post_id ) )</p>
<p>return;</p>
<p>}</p>
<p>// 获取编写文章时填写的固定字段的值，多个字段依此类推</p>
<p>$keywords = $_POST['keywords_new_field'];</p>
<p>$description = $_POST['description_new_field'];</p>
<p>// 更新数据库，此处wp_posts新添加的字段为keywords和description，多个根据你的情况修改</p>
<p>global $wpdb;</p>
<p>$wpdb-&#62;update( "$wpdb-&#62;posts",</p>
<p>// 以下一行代码，多个字段的话参照下面的写法，单引号中是字段名，右边是变量值。半角逗号隔开</p>
<p>array( 'keywords' =&#62; $keywords, 'description' =&#62; $description ),</p>
<p>array( 'ID' =&#62; $post_id ),</p>
<p>// 添加了多少个新字段就写多少个%s，半角逗号隔开</p>
<p>array( '%s', '%s' ),</p>
<p>array( '%d' )<br />
);</p>
<p>}</p>
<p>保存之后，你需要使用phpMyAdmin或其他工具给wp_posts表添加字段keywords和description.</p>
<p>如果你想在读取固定字段keywords和description的值，可以使用wpdb类的get_row方法，示例代码：</p>
<p>// $post-&#62;ID是文章id，自行修改</p>
<p>$date = $wpdb-&#62;get_row( $wpdb-&#62;prepare( "SELECT keywords FROM $wpdb-&#62;posts WHERE ID = %d", $post-&#62;ID) );</p>
<p>// keywords值</p>
<p>$keywords = $date-&#62;keywords;</p>
<p>// description值</p>
<p>$description = $date-&#62;description;</p>
<p>好了，大概内容就这些。</p>
<p><a rel="nofollow" href="http://www.lvjiyong.com/i458.html">WordPress自定义栏目、固定字段、文章形式 资料收集</a>，首发于<a rel="nofollow" href="http://www.lvjiyong.com">吕的部落格</a>。</p>
]]></description>
		<wfw:commentRss>http://www.lvjiyong.com/i458.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 3.612 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2015-12-08 21:27:55 -->

<!-- Compression = gzip -->