﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-yehao's Blog-文章分类-其他</title><link>http://www.cppblog.com/yehao/category/17918.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 01 Apr 2014 03:34:58 GMT</lastBuildDate><pubDate>Tue, 01 Apr 2014 03:34:58 GMT</pubDate><ttl>60</ttl><item><title>Google的云存储技术：Google Storage的开通试用及其API的简单应用</title><link>http://www.cppblog.com/yehao/articles/206379.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Fri, 28 Mar 2014 08:55:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/206379.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/206379.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/206379.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/206379.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/206379.html</trackback:ping><description><![CDATA[<div>http://www.cnblogs.com/tevin/archive/2011/01/21/Googles_cloud_storage_technology_GoogleStorage_open_trial_and_easy_API_usage.html</div><img src ="http://www.cppblog.com/yehao/aggbug/206379.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2014-03-28 16:55 <a href="http://www.cppblog.com/yehao/articles/206379.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Storage for Developers初体验</title><link>http://www.cppblog.com/yehao/articles/206378.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Fri, 28 Mar 2014 08:43:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/206378.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/206378.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/206378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/206378.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/206378.html</trackback:ping><description><![CDATA[<div class="introduction" style="margin: 0px auto 3px; padding: 10px 24px 10px 20px; vertical-align: baseline; overflow: auto; zoom: 1; width: 586px; border-width: 1px 0px; border-top-style: solid; border-bottom-style: solid; border-top-color: #e5e5e5; border-bottom-color: #e5e5e5; background-color: #fbfbfb; line-height: 24px; font-size: 16px; color: #434343; font-family: 微软雅黑, Tahoma, Verdana, 宋体;"><strong>感谢<a target="_blank" href="http://ioio.name/" style="color: #003366; text-decoration: none; cursor: pointer;">枯藤昏鸦</a>的投递</strong><br />周日还在写邮件询问<a target="_blank" href="http://code.google.com/apis/storage/docs/overview.html" style="color: #003366; text-decoration: none; cursor: pointer;">Google Storage</a>的事，它现在只针对美国开发者开放。周一还是意外收到邮件拿到了邀请，免不得晚上 熬夜把玩了一番。现在收到邀请的开发者配额有100GB的数据存储空间和300GB的月流量，超过使用可以向他们开发团队申请增加。</div><p style="width: 560px; overflow-x: auto; overflow-y: hidden; color: #666666; font-family: tahoma, arial, 宋体, sans-serif;"><br /></p><div style="margin: 0px 10px 10px; padding-right: 10px; padding-left: 10px; vertical-align: baseline; line-height: 23px; min-height: 150px; font-size: 16px; overflow: hidden; font-family: 微软雅黑, Tahoma, Verdana, 宋体; background-color: #ffffff;"><a href="http://ioio.name/wp-content/uploads/2010/06/gs_invite.png" _hover-ignore="1" style="color: #003366; text-decoration: none; cursor: pointer;"><img width="300" height="152" src="http://static.cnbetacdn.com/newsimg/100629/2209010246241583.png" alt="" title="gs_invite" size-medium=""  wp-image-1398"="" original="http://static.cnbetacdn.com/newsimg/100629/2209010246241583.png" style="border: 0px; display: block; margin: 0px auto; max-width: 630px;" /></a><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">&nbsp;</p><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">Google Storage for Developers（简称GS）目前提供三种形式的管理工具，基于网页界面的<a href="https://sandbox.google.com/storage/" target="_blank" style="color: #003366; text-decoration: none; cursor: pointer;">Google Storage Manager</a>，开源的命令行管理工具<a href="http://code.google.com/apis/storage/docs/gsutil.html" target="_blank" style="color: #003366; text-decoration: none; cursor: pointer;">GSUtil Tool</a>和<a href="http://code.google.com/apis/storage/docs/gspythonlibrary.html" target="_blank" style="color: #003366; text-decoration: none; cursor: pointer;">Python Library</a>（改进过的<a href="http://code.google.com/p/boto" target="_blank" style="color: #003366; text-decoration: none; cursor: pointer;">boto</a>，原为Amazon S3的）。</p><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;"><span style="font-weight: 700;">Google Storage Manager</span><br /><a href="http://ioio.name/wp-content/uploads/2010/06/google_storage_manager.png" _hover-ignore="1" style="color: #003366; text-decoration: none; cursor: pointer;"><img width="300" height="129" src="http://static.cnbetacdn.com/newsimg/100629/22090312029541917.png" alt="" title="google_storage_manager" size-medium=""  wp-image-1399"="" original="http://static.cnbetacdn.com/newsimg/100629/22090312029541917.png" style="border: 0px; display: block; margin: 0px auto; max-width: 630px;" /></a><br />Google Storage Manager的界面比较简单，只能新建Bucket(存储库)，新建文件夹，批量上传，批量删除和共享文件，虽然GS有严格的访问控制权限 （ACLs），但在Google Storage Manager里面还无法管理权限分配。同时还提供了一个类似书签的地方保存经常使用的存储库和文件夹用于快捷访问。<br />Google Storage Manager 不能单独使用IE访问，可以使用下面版本的浏览器访问：</p><ul style="margin: 0px; padding: 0px; vertical-align: baseline; list-style: none;"><li style="margin: 0px; padding: 0px; vertical-align: baseline; list-style: none;">Google Chrome 4.1+</li><li style="margin: 0px; padding: 0px; vertical-align: baseline; list-style: none;">Chrome Frame for IE</li><li style="margin: 0px; padding: 0px; vertical-align: baseline; list-style: none;">Firefox 3.6+</li><li style="margin: 0px; padding: 0px; vertical-align: baseline; list-style: none;">Safari 4.0+</li></ul><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">这主要原因可能是IE原生不支持多文件的选取与上传。</p><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;"><span style="font-weight: 700;">GSUtil Tool</span><br /><a href="http://ioio.name/wp-content/uploads/2010/06/gsutil_tool.png" _hover-ignore="1" style="color: #003366; text-decoration: none; cursor: pointer;"><img width="300" height="186" src="http://static.cnbetacdn.com/newsimg/100629/2209042755330269.png" alt="" title="gsutil_tool" size-medium=""  wp-image-1400"="" original="http://static.cnbetacdn.com/newsimg/100629/2209042755330269.png" style="border: 0px; display: block; margin: 0px auto; max-width: 630px;" /></a><br />GSUtil Tool是更强大的命令行管理工具，可以安装在Linux和Mac OS上，也可以通过Cygwin安装在Windows上。第一次运行GSUtil Tool时候需要进行简单的配置，如果还没有手工配置直接输入命令就会出现提示，输入授权ID和访问KEY重新执行刚才的命令就可以了。<br /><a href="http://ioio.name/wp-content/uploads/2010/06/gs_boto.png" _hover-ignore="1" style="color: #003366; text-decoration: none; cursor: pointer;"><img width="300" height="83" src="http://static.cnbetacdn.com/newsimg/100629/2209063115915265.png" alt="" title="gs_boto" size-medium=""  wp-image-1402"="" original="http://static.cnbetacdn.com/newsimg/100629/2209063115915265.png" style="border: 0px; display: block; margin: 0px auto; max-width: 630px;" /></a></p><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">通过GSUtil Tool可以直接像操作本地文件一样操作远程文件，它提供一些类似本地shell的命令：<br />创建存储库</p><div style="margin: 0px; vertical-align: baseline;"><div style="margin: 0px; vertical-align: baseline;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; vertical-align: baseline;">gsutil mb gs://cats gs://dogs</pre></div></div><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">上传文件</p><div style="margin: 0px; vertical-align: baseline;"><div style="margin: 0px; vertical-align: baseline;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; vertical-align: baseline;">gsutil cp *.jpg gs://dogs</pre></div></div><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">列出存储库或文件</p><div style="margin: 0px; vertical-align: baseline;"><div style="margin: 0px; vertical-align: baseline;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; vertical-align: baseline;">gsutil ls gsutil ls gs://dogs</pre></div></div><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">移动或改名</p><div style="margin: 0px; vertical-align: baseline;"><div style="margin: 0px; vertical-align: baseline;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; vertical-align: baseline;">gsutil mv gs://dogs/*.jpg gs://cats/ gsutil mv gs://cats/poodle.jpg gs://cats/siamese.jpg</pre></div></div><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">下载</p><div style="margin: 0px; vertical-align: baseline;"><div style="margin: 0px; vertical-align: baseline;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; vertical-align: baseline;">gsutil cp gs://cats/*.jpg file://pets/</pre></div></div><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">改变授权</p><div style="margin: 0px; vertical-align: baseline;"><div style="margin: 0px; vertical-align: baseline;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; vertical-align: baseline;">gsutil setacl acls.txt gs://cats/siamese.jpg gsutil setacl bucket-owner-full-control gs://cats/siamese.jpg</pre></div></div><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">删除文件或者存储库</p><div style="margin: 0px; vertical-align: baseline;"><div style="margin: 0px; vertical-align: baseline;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; vertical-align: baseline;">gsutil rm gs://cats/collie.jpg gsutil rb gs://dogs</pre></div></div><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;"><span style="font-weight: 700;">Python Library</span><br />Python Library是提供的一组Python API用于访问Google Storage，它源自boto（AS3的访问接口）。使用Python Library访问Google Storage仍然需要依赖GSUtil。目前Google App Engine已经支持使用Python Library访问Google Storage。</p><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;">此外Google Storage API提供了非常RESTful的接口用于访问Google Storage，除了使用上面的工具，你还可以自己动手通过API访问Google Storage。<br />我在GAE上放了一个<a href="http://storage-cdn.appspot.com/" target="_blank" style="color: #003366; text-decoration: none; cursor: pointer;">DEMO</a>用 于遍历存储库中文件及提供下载链接，欢迎<a href="http://commondatastorage.googleapis.com/ioio/diveintohtml5.tar.gz" target="_blank" style="color: #003366; text-decoration: none; cursor: pointer;">测试速度</a>。</p><p style="margin-top: 8px; margin-bottom: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word; line-height: 26px; text-indent: 2em;"><em>题外话：</em><br />Google Storage的出现弥补了Google App Engine文件存储的缺陷，但是GAE文件执行时间的问题导致还是无法利用GAE来传送大文件到GS。虽然网站上已经对资源的标了价格，但目前 Google还没有提供查询资源使用情况及付费的入口。另一方面GS比S3吸引力更大的地方是有免费配额，无疑为在项目初期选择它又多了一道砝码。<br />-EOF</p>原文地址：<a href="http://ioio.name/google-storage-for-developers-preview.html" _hover-ignore="1" _orighref="http://ioio.name/google-storage-for-developers-preview.html" _tkworked="true" style="color: #003366; text-decoration: none; cursor: pointer;">http://ioio.name/google-storage-for-developers-preview.html</a></div><img src ="http://www.cppblog.com/yehao/aggbug/206378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2014-03-28 16:43 <a href="http://www.cppblog.com/yehao/articles/206378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>视频流处理和检索技术概述</title><link>http://www.cppblog.com/yehao/articles/206169.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Fri, 14 Mar 2014 01:55:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/206169.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/206169.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/206169.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/206169.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/206169.html</trackback:ping><description><![CDATA[<p style="color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 14.924799919128418px; background-color: #ffffff;"><span style="font-family: verdana, 'courier new'; font-size: 14px; line-height: 21px;">http://www.iipl.fudan.edu.cn/research/mt.html<br /></span>在当今网络技术高速发展、各种媒体信息大量涌现的背景下，为了实现对多媒体信息的高效访问，多媒体信息处理和检索工具的研制成为当务之急。视频实际上是集图像序列、图像、文字等为一体的、被人们广泛使用的一种综合性媒体，视频信息处理和检索已成为当前研究热点。</p><p style="color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 14.924799919128418px; background-color: #ffffff;">视频是在时间上连续的一系列图像帧的集合，是一种没有结构的图像流。我们可以把视频看作一本没有目录和索引的书，那么一幅图像帧就相当于书中的一页。由于视频这部书缺乏目录和索引信息，人们就无法对它进行高效浏览和检索，无法快速阅读。为寻找感兴趣的视频片段，人们只能采取&#8220;快进&#8221;和&#8220;快倒&#8221;这种耗时的阅读方式线性浏览。</p><p style="color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 14.924799919128418px; background-color: #ffffff;">随着数字视频数据量迅速增加，传统的&#8220;线性&#8221;浏览方式已远不能满足人们对视频内容的访问和查询需求。用惯了文本搜索引擎的用户越来越希望能在海量视频库中快速找到自己感兴趣的视频片段，因此就需要为视频建立有效的目录结构，以方便查找。一般来说，按照视频内容粒度可以把视频分为多个层次，从高到低依次为：节目、场景（故事）、镜头组、镜头和关键帧。</p><p style="color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 14.924799919128418px; background-color: #ffffff;">镜头是指摄像机从打开到关闭的过程中记录下来的一组连续图像帧。镜头边界是客观存在的，可以采用一定的方法自动检测镜头边界。在实际应用中，用户浏览一个镜头中所有图像帧是非常耗时的，因此常用关键帧技术实现快速浏览。关键帧是指代表镜头中最重要的、有代表性的一幅或多幅图像。依据镜头内容的复杂程度，可以从一个镜头中提取一个或多个关键帧或构造一个关键帧。为了在语义层建立视频结构模型，需要对视频进行场景划分。场景定义为语义上相关、时间上相邻的一组镜头，它们能够表达视频的高层次概念或故事等。镜头是组成视频的基本物理单位，而场景（又称故事）则是视频在语义层的单位，通常只有场景才能向观看者传达相对完整的语义。镜头组是一组在时间上相邻并在内容上相似的一组镜头，它是界于镜头和场景之间的一组连续的物理实体，是联系镜头和场景的桥梁。节目则是由时间上有序的场景组成，例如新闻节目、娱乐节目、体育节目、天气预报等。</p><p style="color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 14.924799919128418px; background-color: #ffffff;">基于上述的视频内容的结构化分析框架，自动镜头边界检测和关键帧提取技术的研究是视频内容分析中的重要研究课题，也是场景构造的基础。在镜头边界检测之后，就要提取相应的关键帧。提取关键帧的方法有很多，最简单的方法是提取每个镜头的第一帧和最后一帧作为关键帧。更好的方法是根据镜头的视觉内容和运动提取关键帧，甚至可以用拼接方法生成一个全景图作为关键帧。</p><p style="color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 14.924799919128418px; background-color: #ffffff;">一旦镜头和关键帧提取出来后，一种简单且直观的方法就是用关键帧的顺序排列来表示或展现视频内容。用户可以通过浏览关键帧序列来了解视频内容，并可根据自己感兴趣的关键帧来选择性播放或下载视频片段。当视频长度较短且内容简单时，少量的关键帧就可以较好地表示整段视频；然而当镜头和关键帧数量巨大时，这种方法对用户检索和浏览来说仍是困难的和繁琐的。例如，一部故事片可能包含数千个镜头和更多的关键帧，如果仅用这些关键帧序列来表示节目内容是没有意义的，因为人们更关心的是故事情节而不是镜头和关键帧。为了使用户更好地访问视频数据库，人们提出了视频摘要技术。顾名思义，视频摘要是对视频内容的高度概括，是视频中最重要、最精彩的总结。如何为视频构造良好的摘要是视频处理和检索中的另一个重要研究课题。目前，对视频摘要的研究主要集中在场景分割上，人们试图通过对视频场景的分析来实现视频摘要。</p><p style="color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 14.924799919128418px; background-color: #ffffff;">在视频流的层次性结构建立后，就可以对视频内容进行快速浏览和检索了。在视频浏览中，用户可以通过对视频摘要的浏览来确定是否观看某段视频，并可直接定位到感兴趣的关键帧，从而免去&#8220;快进&#8221;和&#8220;快倒&#8221;的烦恼。除了方便浏览外，还应为用户提供高效检索手段。通过检索，用户可以快速查找到自己感兴趣的视频内容。实现检索的关键是为视频内容建立有效索引结构，其中视频片段、关键帧、关键词、目录结构、特定对象（例如人脸、汽车等）、叠加字符、伴音和特定运动等都是建立索引的重要内容。建好索引的视频数据库相当于一个层次式的语义网络，用户可以根据需要采用多种不同的方式提出查询请求，实现多模态的人机查询界面。</p><p style="color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 14.924799919128418px; background-color: #ffffff;">视频信息处理和检索技术具有非常广阔的应用前景，目前世界上很多著名的研究机构在研究视频信息检索技术及其应用，并开发了一些原型系统，如UIUC的MARS系统、IBM的CueVideo系统、Microsoft的新闻视频浏览系统、Columbia大学的VideoQ系统以及CMU的IDVLS系统等等。</p><p style="color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 14.924799919128418px; background-color: #ffffff;">视频信息处理和检索是一个内容非常广泛的、交叉性很强的研究领域，涉及到多方面关键技术。一个高效的视频处理和检索系统需要由各个处理模块的相互配合，而其中每一个模块的实现都是一项细致的、复杂的工程。从目前的研究来看，要实现真正实用的视频处理和检索系统，还需要做很多工作。相信随着网络技术和多媒体技术的发展，在研究人员的共同努力下，视频处理和检索技术的研究将跨上一个新的台阶。</p><img src ="http://www.cppblog.com/yehao/aggbug/206169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2014-03-14 09:55 <a href="http://www.cppblog.com/yehao/articles/206169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>视频关键帧的提取</title><link>http://www.cppblog.com/yehao/articles/206168.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Fri, 14 Mar 2014 01:54:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/206168.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/206168.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/206168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/206168.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/206168.html</trackback:ping><description><![CDATA[<div><span style="color: #333333; font-family: tahoma, arial, 宋体; line-height: 25px; background-color: #ffffff;">镜头通常是在一个场景下拍摄的，所以一个镜头下的各帧图像会有相当多的重复信息。因此，通常选取能够描述镜头主要内容的帧，作为关键帧，来简洁的表达镜头。一个镜头可以有一个或多个关键帧，这取决于镜头内容的复杂程度。</span><br style="color: #333333; font-family: tahoma, arial, 宋体; line-height: 25px; background-color: #ffffff;" /><span style="color: #333333; font-family: tahoma, arial, 宋体; line-height: 25px; background-color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 提取关键帧的目的有两个方面：（1）静态表示视频节目的主题和主要内容，而不是动态的细节。(2)从关键帧中提取颜色、纹理和形状特征，以作为视频摘要和数据库索引的数据源，而不需要对每个画面都重复。因此，关键帧应该具有代表性，不仅应代表主题方面的特征，还应该视特征的不同而不同。因此，对关键帧的选取一般采用保守原则，即&#8220;宁多勿少&#8221;。同时，在代表特征不具体的情况一下，一般去掉重复(或冗余)帧。当选取多幅关键帧时，用于关键帧选取的准则是优先考虑关键帧之间的不相似性，即以帧之间相似度作为衡量依据，每次寻找关键帧都保证各关键帧之间具有最小相似度，以使关键帧带有最大信息量。下面介绍关键帧提取的经典方法&#8212;&#8212;基于帧平均的算法<br /></span><img src="http://a2.att.hudong.com/33/98/19300534085492134871987317362_950.jpg" alt="1" /><br /><span style="color: #333333; font-family: tahoma, arial, 宋体; line-height: 25px; background-color: #ffffff;">像素帧平均法和直方图帧平均法是关键帧提取的经典方法。由于它们具有相同的基本思想，不同的只是选取的衡量平均值的特征，所以将其归为一类，并统称为帧平均法。像素帧平均法是取一视频段中所有帧的某位置上的像素值求其平均来作为比较的标准，将视频段中此位置像素值最为接近平均值的帧，作为该视频段的关键帧。直方图帧平均法则是选取所有帧直图的平均值作为标准，将直方图最接近平均值的帧作为该视频段的关键帧。该算法虽然计算简单，所选取的帧也能最大程度上接近平均值，但是对一个镜头只选取一个关键帧，不能够全面的描述其内容，尤其是对内容变化较大的镜头。</span><br /></div><img src ="http://www.cppblog.com/yehao/aggbug/206168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2014-03-14 09:54 <a href="http://www.cppblog.com/yehao/articles/206168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于ipcam的UPnP或NAT的知识</title><link>http://www.cppblog.com/yehao/articles/202389.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Wed, 07 Aug 2013 02:02:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/202389.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/202389.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/202389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/202389.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/202389.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 网络摄像机使用NAT还是UPnP的原则：&nbsp; &nbsp;当一个路由器下最多有3个设备时，使用UPnP功能，&nbsp; &nbsp;当一个路由器下大于3个网络摄像机时，建议使用手动NAT方式或使用企业级路由器。NAT/UPnP介绍：通常路由器NAT的映射的规则是：路由器的外网端口N ----映射为-&#224;&nbsp;设备的内网IP的端口N即：路由器的外网的某个端口N，对应内网某个I...&nbsp;&nbsp;<a href='http://www.cppblog.com/yehao/articles/202389.html'>阅读全文</a><img src ="http://www.cppblog.com/yehao/aggbug/202389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2013-08-07 10:02 <a href="http://www.cppblog.com/yehao/articles/202389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[网络安全]硬件防火墙端口映射配置及应用（网站发布、远程桌面、P2P软件等）</title><link>http://www.cppblog.com/yehao/articles/200662.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Tue, 28 May 2013 15:26:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/200662.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/200662.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/200662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/200662.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/200662.html</trackback:ping><description><![CDATA[转自<a href="http://kppx.blog.hexun.com/14523639_d.html">http://kppx.blog.hexun.com/14523639_d.html</a><br /><br />好几天没更新了，最近在玩仙剑4，就等今天晚上打完最后6个BOSS就终局了。绫纱最后不知会怎么样，念咒念咒念咒。。。 
<p>&nbsp;&nbsp;&nbsp; 进入正题，今天说说硬件防火墙的端口映射配置，以及端口映射的应用。所谓端口映射，就是把&#8220;某个IP地址的某个端口（也叫套接字）映射到另一个IP地址的某个端口&#8221;，其实和NAT一样，本来都是路由器的专利。但出于加强安全性的考虑，一般现在在内网出口布置的都是硬件防火墙，路由器的大部分功能也能实现。当然了，现在的新趋势是IPS。。。</p>
<p>&nbsp;&nbsp;&nbsp; 时下IPv4地址短缺，一个单位有一两个固定IP就算不错了，要实现内部网多台主机上公网，不用说需要作NAT，把内部私有IP转换成公网IP就搞定了。但如果需要对外发布一个以上的网站或其他服务，或是没有VPN但需要作多台主机（服务器）远程控制，一两个IP怎么说也是不够的，这种时候就需要用到端口映射了（莫急，这就开始说了）。</p>
<p>　一般来讲，防火墙的默认包过滤规则是禁止，如果不做端口映射，外网地址的所有端口都是关闭（隐藏，检测不到）的，不允许从外网主动发起的任何连接（这就是在内网使用某些P2P软件显示&#8220;您的外网端口无法被连接&#8221;之类信息的原因）。下面结合实际讲讲配置。俺公司两台防火墙，一台天融信一台联想网御，联想网御作外网应用。比如，现有如下需求：</p>
<p style="color: #ffff00">外网ＩＰ地址123.123.123.123，需要将内部网192.168.1.10和192.168.1.11两台服务器上的HTTP服务对外发布。</p>
<p><span>　外网地址只有1个，外网地址的80端口也只有1个，既然要发布两个HTTP，也就不必（也没办法）拘泥于80端口。我们可以随便选择外网的端口号，比如，指定外网地址123.123.123.123的8080端口映射至内网192.168.1.10的80端口，指定外网地址123.123.123.123的8081端口映射至内网192.168.1.11的80端口。这里，如果没有特殊要求，外网端口的选择是任意的，外网用户只要在IE的地址栏输入&#8220;123.123.123.123:端口号&#8221;就可以访问相应服务。当然，也可以指定外网地址123.123.123.123的80端口映射至内网192.168.1.10的80端口，这样用浏览器访问时就不用加端口号。</span></p>
<p><span>　添加端口映射配置的步骤，各品牌的防火墙不太一样，但大同小异。</span></p>
<p><span>　比如，天融信没有专门的端口映射配置，直接在NAT中配置即可。进入防火墙引擎－地址转换－添加配置，源area选择接外网的以太网口，源地址选any（有特殊需要的可以做源地址限制），源端口为空即可（即允许源端口为任何端口）；目的area为空（空即任意），目的地址选择外网地址123.123.123.123（需预先定义），服务选择TCP8081(或TCP8082，服务也需要预先定义)，下面目的地址转换为192.168.1.10(192.168.1.11)，目的端口转换为80（HTTP），启用规则即可。</span></p>
<p><span>　网御直接有专门的端口映射配置，比较好理解，添加规则，选择源地址（any，或自定），对外服务（8080或8081），源地址不转换，公开地址选外网地址（123.123.123.123），内部地址选择内网服务器地址（192.168.1.10或192.168.1.11），内部服务选80，启用规则即可。</span></p>
<p><span>　至此，我们实现了两条端口映射规则：123.123.123.123:8080--192.168.1.10:80和123.123.123.123:8081--192.168.1.11:80。</span></p>
<p><span>　同理，我们如果想让p2p软件在内网能正常工作的话，即让外网用户能连接p2p软件的监听端口，也需要作端口映射。比如，如果内网192.168.1.13运行Bitcomet监听22345端口，显示黄灯阻塞，我们作一条端口映射规则123.123.123.123:22345--192.168.1.13:22345，就可以变绿灯了，电驴也是一样。</span></p>
<p><span>　下面谈谈端口映射配合远程桌面的应用。以前公司没有VPN，为了能在家远程办公通过远程桌面访问我的机器192.168.1.15，于是通过端口映射作123.123.123.123:3389--192.168.1.15:3389来实现，这样在家里运行Windows自带的远程桌面（其实远程控制软件很多，但为了能在紧急情况时随便找一台能上网的机器就能用，所以还是选用系统自带的），输入地址123.123.123.123就可以远程登陆到我公司内网的机器。但3389端口只有一个，这样就只能我自己用。后来发现，在远程桌面中输入IP地址加端口号也可以。这样就好办了，作123.123.123.123:9991--192.168.1.15，然后在家运行远程桌面，输入123.123.123.123:9991，就可以登陆我的机器；再作</span>123.123.123.123:9992--192.168.1.16等等，就可以实现多人通过一个公网IP远程桌面访问自己的机器，没有VPN远程办公也很方便。但要注意这样有一定的危险性，因为家里一般用ADSL，IP地址不是固定的，所以作规则时源地址一般支能选any，即允许任何人连接9991端口，不过问题一般不大。</p>
<p>　综上，端口映射可以将内网的任何服务发布到外网地址的任何端口，非常方便，灵活运用的话对网管工作很有帮助。但切记，这种方法有一定的安全隐患，需慎用，最好在地址、端口、连接数、带宽等各方面做好限制，以将危险减至最低。累死我了，下班了，回家吃饭。。。</p><img src ="http://www.cppblog.com/yehao/aggbug/200662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2013-05-28 23:26 <a href="http://www.cppblog.com/yehao/articles/200662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这些霸主是怎么成功的？</title><link>http://www.cppblog.com/yehao/articles/191628.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Sat, 22 Sep 2012 13:49:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/191628.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/191628.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/191628.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/191628.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/191628.html</trackback:ping><description><![CDATA[<p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 21pt; text-indent: 21pt; "><span style="font-family: 宋体; ">中国的互联网历史是短暂的，然而也不短了，十多年的历史。中国的互联网产生了数家成功的企业</span>:</p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 21pt; text-indent: 21pt; "><span style="font-family: 宋体; ">新浪是怎么成功的？</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">1、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">抓住了中文信息资源缺乏的历史初期网民对信息资源的整合需求。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">2、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">一个技术背景的管理领袖但是却绝对没有一般技术人员的狭隘性</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">3、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">历史机遇，抓住了发展时期的历史性机遇</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">4、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">足够的股份制企业的运营资源使得能够等到互联网免费到增值收费的那一天</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 42pt; "><span style="font-family: 宋体; ">搜狐是怎么成功的？</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">1、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">主要是张朝阳的对公司的掌控，更重要的是美国商业文化在中国的成功结合实施</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">2、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">跟在新浪后复制而幸运的是中国市场很大，网民数量增长空间足够两家资讯门户成长</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">3、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">足够的发展资源</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">4、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">分类搜索迎合了该阶段的网民需求</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 42pt; "><span style="font-family: 宋体; ">网易是怎么咸鱼翻身的？</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">1、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">网易是丁磊一个人的</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">2、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">抓住了短信、抓住了网游，年轻网民的需求</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">3、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">早期的发展积累了大量的人气是其咸鱼翻身的重要保证</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 42pt; ">TOM<span style="font-family: 宋体; ">是怎么上来的？</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">1、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">资本的力量，具有近乎无限的资源以及资源的整合能力，收购再收购</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">2、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">收购了</span>163.net<span style="font-family: 宋体; ">，绝对是经典的&#8220;豪夺&#8221;，否则，哪里来的网民占有率</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">3、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">不同于现有领先者的发展路径（不跟你现有大门户正面竞争，你做短信，我也做，但我更注重做</span>IVR<span style="font-family: 宋体; ">，没有产品，咱就收购，收购。。。</span>.<span style="font-family: 宋体; ">），很聪明的发展策略。如果没有那些收购来的公司，</span>TOM<span style="font-family: 宋体; ">就是一个</span>163.net<span style="font-family: 宋体; ">。当初，李财神准备招股书那会儿，</span>TOM<span style="font-family: 宋体; ">的主页上就只有一个</span>LOGO<span style="font-family: 宋体; ">呢。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 42pt; "><span style="font-family: 宋体; ">腾讯是怎么成功的？</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">1、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">抓住了网民中文即时通讯的需求，用户的使用习惯成就了藤讯的成长</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">2、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">对手长期忽视（就像</span>IBM<span style="font-family: 宋体; ">忽视了</span>MS<span style="font-family: 宋体; ">的成长，</span>YAHOO<span style="font-family: 宋体; ">忽视了</span>Google<span style="font-family: 宋体; ">一样），侥幸，否则。。。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 81pt; text-indent: -18pt; ">3、<span style="font-size: 7pt; line-height: normal; ">&nbsp;&nbsp;</span><span style="font-family: 宋体; ">移动增值的业务发展抓住了</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 42pt; "><span style="font-family: 宋体; ">盛大是怎么成功？</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 42pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 宋体; ">就不说了。其实要说的就只有陈天桥了，因为网游最早的是联众，而当联众初卖出去</span>1000<span style="font-family: 宋体; ">万，创始人还高兴得不得了，唉。。。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 42pt; text-indent: 21pt; "><span style="font-family: 宋体; ">同样是程序员，同王志东比为什么差别就那么大呢？</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 42pt; text-indent: 21pt; "></p><p style="color: #333333; font-family: Arial; line-height: 26px; margin: 0cm 0cm 0pt 42pt; text-indent: 21pt; "><span style="font-size: 10.5pt; font-family: 宋体; ">看到没有，都是成功抓住了网民的需求。</span></p><img src ="http://www.cppblog.com/yehao/aggbug/191628.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2012-09-22 21:49 <a href="http://www.cppblog.com/yehao/articles/191628.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HostsX ——在国内上网的利器</title><link>http://www.cppblog.com/yehao/articles/166865.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Thu, 01 Mar 2012 06:41:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/166865.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/166865.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/166865.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/166865.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/166865.html</trackback:ping><description><![CDATA[<p><!--StartFragment -->
</p>
<div><img alt="" src="file:///C:/Documents%20and%20Settings/yehao/Application%20Data/Tencent/Users/515805655/QQ/WinTemp/RichOle/I~Z][OITT}CXYAS4O{JMO73.jpg" />&nbsp;<br /></div>
<p><img alt="" src="file:///C:/Documents%20and%20Settings/yehao/Application%20Data/Tencent/Users/515805655/QQ/WinTemp/RichOle/CDWO7GHFGS53{%FH5M`[8]W.jpg" />&nbsp;<br /><!--StartFragment -->
</p>
<div><img src="file:///C:/Documents%20and%20Settings/yehao/Application%20Data/Tencent/Users/515805655/QQ/WinTemp/RichOle/5J0N{6_9ELK]8ZA2WDAAK(G.jpg"  alt="" /> </div>
<p>&nbsp;</p>
<p>&nbsp;</p><img src ="http://www.cppblog.com/yehao/aggbug/166865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2012-03-01 14:41 <a href="http://www.cppblog.com/yehao/articles/166865.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【科普一下】About Wall</title><link>http://www.cppblog.com/yehao/articles/166863.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Thu, 01 Mar 2012 06:21:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/166863.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/166863.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/166863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/166863.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/166863.html</trackback:ping><description><![CDATA[<div><img height="657" alt="" src="http://www.cppblog.com/images/cppblog_com/yehao/未命名1.jpg" width="897" border="0" longdesc="" /><img height="657" alt="" src="http://www.cppblog.com/images/cppblog_com/yehao/未命名22.jpg" width="900" border="0" longdesc="" /><img height="689" alt="" src="http://www.cppblog.com/images/cppblog_com/yehao/未命名333.jpg" width="897" border="0" longdesc="" /><img height="252" alt="" src="http://www.cppblog.com/images/cppblog_com/yehao/未命名44.jpg" width="888" border="0" longdesc="" /></div><img src ="http://www.cppblog.com/yehao/aggbug/166863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2012-03-01 14:21 <a href="http://www.cppblog.com/yehao/articles/166863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Nginx</title><link>http://www.cppblog.com/yehao/articles/165231.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Thu, 09 Feb 2012 10:59:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/165231.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/165231.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/165231.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/165231.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/165231.html</trackback:ping><description><![CDATA[<p minmax_bound="true"><strong minmax_bound="true">Nginx</strong>（发音同 engine x）是一款轻量级的Web 服务器／反向代理服务器及电子邮件（IMAP/POP3）代理服务器，并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发，最初供俄国大型的入口网站及搜寻引擎Rambler（俄文：Рамблер）使用。&nbsp; 其特点是占有内存少，并发能力强，事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有：新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。</p><img src ="http://www.cppblog.com/yehao/aggbug/165231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2012-02-09 18:59 <a href="http://www.cppblog.com/yehao/articles/165231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C/C++程序员必须熟练应用的开源项目</title><link>http://www.cppblog.com/yehao/articles/165121.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Tue, 07 Feb 2012 13:36:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/165121.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/165121.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/165121.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/165121.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/165121.html</trackback:ping><description><![CDATA[<p align="left">作为一个经验丰富的C/C++程序员， 肯定亲手写过各种功能的代码， 比如封装过数据库访问的类， 封装过网络通信的类，封装过日志操作的类， 封装过文件访问的类， 封装过UI界面库等， 也在实际的项目中应用过， 但是回过头仔细想想，其实以前自己写过的这些代码，只能是在特定的项目或者特定的环境中使用， 对于自己来说， 在不同的项目中应用， 只需要复制代码， 改改也就可以了， 因为自己写的代码自己很熟悉。问题是， 你封装的这些库， 在给别人使用的时候， 别人用起来是否很方便， 跨平台方面是不是也很通用， 性能是不是足够的好， 是不是支持多线程， 功能是不是也足够强大，可以适用于各种不同的需求。如果你上面这些都做到了， 证明你在这个库上确实花费了一番功夫， 经过了持续的改进和优化。 </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在日常的开发中， 作为一个程序员， 很多东西已经没有必要再重新开发了， 可以直接拿过来使用， 毕竟21世纪都已经过了N年了。我们没有必要重新发明轮子(不可否认发明轮子的过程可以学到很多东西，我就是这么走过来的)。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面结合自己多年的开发经验， 想到哪里写到哪里， 希望对新人有一定的帮助。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一、网络</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 网络库必须掌握 ACE 和 libevent， 一个是重量级的网络库， 一个是轻量级的网络库。仔细想想，现在那个程序不用网络啊。不懂网络， 你将寸步难行啊。 熟悉这两个开源库的前提是你必须懂socket的原理， 给大家推荐的好书就是 《UNIX网络编程》，看懂这本书就可以了， 其他的什么《windows网络编程》这些都不用看， 因为网络编程，你学会了伯克利的套接字， 你就可以在任何平台上进行网络编程了， 不需要学什么windows下的网络编程， 因为windows下的网络也是从伯克利套接字搞过来的， 如果你学习《windows网络编程》， 那么你那天在linux，unix下进行网络编程，你还得在学习一下。没有那个必要。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 二、数据库</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据库嘛， 开源的Mysql和开源的PostgreSQL只要懂其中一个就可以了， 商业数据库在掌握一个Oracle就可以了，文件数据库掌握 sqlite。&nbsp;不过请大家注意， 不要被上面数据库名字给迷惑了， 数据库的本质是SQL语句， 一定要懂数据库的基本原理，熟练应用SQL语言，懂数据库的优化，存储过程等。数据库的原理搞懂了， 拿什么数据库过来都轻松掌握， 就不会在乎是Mysql还是Oracle了。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 三、日志操作</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 日志操作推荐大家熟悉 log4cpp这个日志库， 支持多线程， 日志重定向到网络等都有， 反正你能想到的日志的功能， 都有。</p>
<p>日志嘛，一个是方便查找问题， 方便记录程序运行的一些情况。这是必须的。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 四、管理后台</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 众所周知， 写程序是给其他人用的，不是自己用， 所以在程序的易用性上，多给对方提供一些可以直接查看的管理界面， 显得分成重要。为程序提供一个web的管理界面，方便用户登录上去查看程序的各种信息， 很有必要。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我这里有一个方便的web后台管理的http实现， 可以方便的集成到应用程序中。在IE里面输入监听的端口，就可以查看程序的状态。代码还没有仔细整理。有需要的弟兄可以给我留言， 给大家发。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 五、读取配置文件</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有的程序都必须有配置文件， 方便配置一些项目， 为程序提供灵活性。 所以写程序，必须有读取配置文件的封装类。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 六、内存池</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有的进程都需要分配内存， 对C/C++来说， 分配和管理内存是已经很有挑战性的工作。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 给大家推荐 nedmalloc 这个开源的内存池库。nedmalloc是一个跨平台的高性能多线程内存分配库，很多库都使用它。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 七、缓存库</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 众所周知， 缓存库用得最多的就是 memcache 了。在做数据库开发的时候特别有用。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 八、脚本</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 脚本是一个很有意思的东西，很多功能，其实我们只要写个脚本就可以完成，代码量少，开发速度快。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须掌握的脚本，比较通用的要算 perl 了， 很古老的语言，但是功能太强大了。&nbsp;我可以保证的说，.net，java能干的工作，肯定可以让perl来干。 C能干的， perl不一定能干。 perl作为linux， unix的系统集成的脚本语言，必须学会。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lua 语言， 这个语言， 在游戏行业用得比较多。不推荐学。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; python 脚本， 功能很强大， 推荐学。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上面这些是所有程序都会用到的比较通用的功能。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在不同的应用领域， 需要掌握不同开源库， 比如搞游戏开发的， 可能需要掌握开源的UI库CEGUI, 开源的3D引擎OGRE等。</p>
<p>搞分布式开发的可能会有分布式的文件系统库等。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天就为大家介绍到这里， 慢慢完善慢慢补充。<br /></p>
<p align="left"><a href="http://blog.csdn.net/langeldep/article/details/6293655">http://blog.csdn.net/langeldep/article/details/6293655</a></p><img src ="http://www.cppblog.com/yehao/aggbug/165121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2012-02-07 21:36 <a href="http://www.cppblog.com/yehao/articles/165121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用双网卡+路由器实现内网外网互联</title><link>http://www.cppblog.com/yehao/articles/162379.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Mon, 19 Dec 2011 01:37:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/162379.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/162379.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/162379.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/162379.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/162379.html</trackback:ping><description><![CDATA[<p>随着实验室规模不断扩大，对外IP渐渐不够用。于是在原有网络的基础上，重新划出一块区域作为实验室&#8220;内网&#8221;，这面临着两个需求：内网机器必须访问互联网；实验室其他外网IP的机器能够访问内网机器。以下是规划中的网络拓扑图： </p>
<p><a href="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image.png"><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="378" alt="image" src="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image-thumb.png" width="634" border="0" /></a> </p>
<h2>概念</h2>
<h3>路由</h3>
<p>路由（routing）就是通过互联的网络把信息从源地址传输到目的地址的活动。这里需要明确两点：</p>
<p>路由不等于路由器，很多人一提起路由，就想到路由器，实际上这是不对的。路由器仅仅作为路由的一个硬件实现，同样，我们还可以借助一些软件实现&#8220;软路由&#8221;。</p>
<p>既然路由是通过互联的网络把信息从源地址传输到目的地址的活动，那么存在着从源地址到目标地址的&#8220;路径&#8221;，至于这个&#8220;路径&#8221;是如何找到的，可以通过一系列算法得到动态路由，或者直接手动设置静态路由。</p>
<p>我们平常设定的&#8220;网关&#8221;，实际上就相当于手动设置的静态路由。</p>
<h3>路由器</h3>
<p>路由器(router)是路由的实现者，它工作在OSI第三层(网络层)上、具有连接不同类型网络的能力并能够选择数据传送路径的网络设备。路由器有三个特征：工作在网络层上、能够连接不同类型的网络、能够选择数据传递路径。它能理解数据中的IP地址，如果它接收到一个数据包，就检查其中的IP地址，如果目标地址是本地网络的就不理会，如果是其他网络的，就将数据包转发出本地网络。</p>
<h3>TTL</h3>
<p>TTL（Time To Live）是IP协议包中的一个值，它告诉网络路由器包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。例如，不正确的路由表可能导致包的无限循环。一个解决方法就是在一段时间后丢弃这个包，然后给发送者一个报文，由发送者决定是否要重发。TTL的初值通常是系统缺省值，是包头中的8位的域。TTL的最初设想是确定一个时间范围，超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减一，TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时，路由器决定丢弃该包，并发送一个ICMP报文给最初的发送者。</p>
<h3>NAT</h3>
<p>NAT，网络地址转换（Network Address Translation），是通过将专用网络地址（如企业内部网Intranet）转换为公用地址（如互联网Internet），从而对外隐藏了内部管理的 IP 地址。这样，通过在内部使用非注册的 IP 地址，并将它们转换为一小部分外部注册的 IP 地址，从而减少了IP 地址注册的费用以及节省了目前越来越缺乏的地址空间（即IPV4）。同时，这也隐藏了内部网络结构，从而降低了内部网络受到攻击的风险。 </p>
<p>在一个典型的配置中，一个本地网络使用一个专有网络的指定子网（比如192.168.x.x或10.x.x.x）和连在这个网络上的一个路由器。这个路由器占有这个网络地址空间的一个专有地址（比如 192.168.0.1），同时它还通过一个或多个因特网服务提供商提供的公有的IP地址（叫做&#8220;过载&#8221; NAT）连接到因特网上。当信息由本地网络向因特网传递时，源地址被立即从专有地址转换为公用地址。由路由器跟踪每个连接上的基本数据，主要是目的地址和端口。 当有回复返回路由器时，它通过输出阶段记录的连接跟踪数据来决定该转发给内部网的哪个主机；如果有多个公用地址可用，当数据包返回时，TCP或UDP客户机的端口号可以用来分解数据包。对于因特网上的一个系统，路由器本身充当通信的源和目的地址。</p>
<p>我们通常使用的路由器一般都自动集成了NAT。</p>
<h3>LAN路由</h3>
<p>Windows Server 系列，可以在路由和远程访问中设置LAN 路由，这仅仅是路由的一个实现，不存在NAT功能。</p>
<h2>最初规划</h2>
<p>最初，我采用最简单的路由器组网方式，来组建实验室网络：在网络中接入路由器，设置路由器WAN端IP地址为222.200.176.144，对内网段为10.96.32.*。这时，内网地址能轻松访问外网机器，但是，外网机器却不能访问内网机器：</p>
<p><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="300" alt="image" src="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image-thumb1.png" width="521" border="0" />执行tracert命令，结果如下：</p>
<p><a href="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image1.png"><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="300" alt="image" src="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image-thumb2.png" width="521" border="0" /></a>这说明，tracert试图通过默认路由（222.200.176.254）来查找路径，这显然到达不了目标。</p>
<p>既然我们的内网是通过222.200.176.144这个IP连接互联网的，因此我需要在我的机器里手动添加一条静态路由，告诉网络，如果访问10.96.32.*段的东西，直接从222.200.176.144这个地址寻找就好了，不要麻烦222.200.176.254。</p><pre>route add -p 10.96.32.0 mask 255.255.255.0 222.200.176.144</pre>
<p>在执行tracert，结果&#8230;&#8230;</p>
<p><a href="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image2.png"><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="300" alt="image" src="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image-thumb3.png" width="521" border="0" /></a>#@￥#@！￥@</p>
<h3>这是为什么呢？</h3>
<p>请教某网络牛人，得到答案如下：</p>
<p>路由器上是做了NAT的，当信息由本地网络向因特网传递时，源地址被立即从专有地址转换为公用地址。由路由器跟踪每个连接上的基本数据，主要是目的地址和端口。<strong>当有回复返回路由器时，它通过输出阶段记录的连接跟踪数据来决定该转发给内部网的哪个主机。</strong>这就意味着，NAT和路由冲突！或者说，路由器下的网络，只允许内网主动连接外网，不允许外网直接访问内网。</p>
<h3>解决办法一</h3>
<p>既然知道原因，就寻求解决方案，牛人给出的方案有两个：</p>
<ol><li>取消路由器的NAT功能，改用CCProxy之类的代理提供内网机器连接互联网。</li><li>在路由器上开设端口映射。 </li></ol>
<p>不过，以上两个方案都是无法接受的：CCProxy共享版只支持有限的客户端，而且，对于某些不支持代理服务器的软件，使用该方案无疑断送了这些软件上网的可能！至于第二种方案，很多服务所使用的端口是不确定的（例如FTP的被动模式），根本无法一一设定这些端口。</p>
<h2>添加双网卡服务器</h2>
<p>既然上述的两个解决方案都出局了，还有其他的途径吗？这个问题如鲠在喉，不吐不行。为此我在网上查了些资料，终于想到了一个可行的解决方案：既然外网机器无法通过路由器（222.200.176.144）访问内网，那么是不是可以开辟另一条路呢？于是我在内外网间增加一台Server 2008服务器，该服务器有两块网卡，一块接入外网（222.200.176.148），另一块则接入内网（10.96.32.148）。同时，在路由和远程连接中添加&#8220;LAN路由&#8221;：</p>
<p><a href="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image3.png"><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="399" alt="image" src="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image-thumb4.png" width="581" border="0" /></a> </p>
<p>在本机的静态路由修改为：</p><pre>route add -p 10.96.32.0 mask 255.255.255.0 222.200.176.148</pre>
<p>再执行tracert，结果：</p>
<p><a href="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image4.png"><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="300" alt="image" src="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image-thumb5.png" width="521" border="0" /></a>再度 #@￥#@！￥@</p>
<h3>这是为什么呢？</h3>
<p>牛人联系不上，只好自己解决。从上图tracert的记录，数据包到了222.200.176.148，就不知道该如何发送到目标了。按理说，在222.200.176.148的机器上，开启了LAN路由服务，应该没什么问题啊？百思不得其解。</p>
<h2>不是办法的办法</h2>
<p>最后，只能采用以下方案，暂时解决了问题：</p>
<p>在内网的机器上添加一条静态路由，指明：通过IP10.96.32.148访问222.200.176.*网段：</p><pre>route add -p 222.200.176.0 mask 255.255.255.0 10.96.32.148</pre>
<p>尝试一下在本机tracert 10.96.32.144，奇迹般的可以了！</p>
<p><a href="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image5.png"><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="300" alt="image" src="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image-thumb6.png" width="521" border="0" /></a>最后的网络拓扑图如下：</p>
<p>&nbsp;<a href="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image6.png"><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="559" alt="image" src="http://newinfo.sysu.edu.cn/Snowwaft/wp-content/uploads/2009/03/image-thumb7.png" width="603" border="0" /></a></p>
<h2>小节</h2>
<p>我在内网和实验室外网间，设置了两个节点&#8212;&#8212;路由器和部署了LAN路由的双网卡服务器&#8212;&#8212;如果内网的机器想访问Internat（非实验室外网），则以路由器为网关，进行网络地址转换。如果内网机器想和实验室外网互联，则通过双网卡服务器进行地址交换。在一定程度上解决了NAT和LAN路由不能共存的问题。</p><img src ="http://www.cppblog.com/yehao/aggbug/162379.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2011-12-19 09:37 <a href="http://www.cppblog.com/yehao/articles/162379.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>架构师之我见</title><link>http://www.cppblog.com/yehao/articles/158241.html</link><dc:creator>厚积薄发</dc:creator><author>厚积薄发</author><pubDate>Thu, 13 Oct 2011 10:21:00 GMT</pubDate><guid>http://www.cppblog.com/yehao/articles/158241.html</guid><wfw:comment>http://www.cppblog.com/yehao/comments/158241.html</wfw:comment><comments>http://www.cppblog.com/yehao/articles/158241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehao/comments/commentRss/158241.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehao/services/trackbacks/158241.html</trackback:ping><description><![CDATA[<span style="color: #333333; font-family: Arial; font-size: 14px; line-height: 26px; "><p>以下内容发表在8月份的InfoQ中文站电子刊物《架构师》中，主要谈到了我对架构师这个角色的一些理解与认识，有兴趣的朋友也可以留言，我们共同探讨这个话题。</p><p>&nbsp;</p><center><span style="font-size: large; "><strong>架构师之我见</strong></span></center><p>架构师是一个项目组的灵魂人物，他决定着整个系统的技术选型、整体架构以及模块划分，同时还可能担当与领导层的沟通角色，从某种意义上来说，架构师在很大程度上决定着项目的成败与否，正所谓火车跑得快，全靠车头带。</p><p>很多优秀的架构师都是从一个优秀的开发人员转变过来的，但优秀的开发人员未见得都能成为合格的架构师。与架构师相比，开发人员所需担当的任务相对狭隘的多，其最大的目标就是编写出精良的代码、做好充分的测试以及撰写高质量的文档等；而架构师所要面对的则相对宽泛得多，除了过硬的技术之外，还需要有良好的表达能力，同时还要有宏观的驾驭整个系统的能力。</p><p>有人曾说过，20几岁的编程天才好找，但30多岁的优秀架构师难寻。架构师何其难？除了敏锐的洞察力之外，我认为一个好的架构师必须具备如下几方面的素质：</p><p>A． 过硬的技术能力。有人说架构师就不需要编写代码，只需设计整体架构就行了。但我认为这是很片面的，试想一个人如果长时间不写代码，他还能具备持续的技术敏感度么？当然了，这里所说的写代码并非一般开发人员的行为，而是让自己保持住对代码的感觉。还有人说架构师不一定是技术高手，这一点我很同意，但他一定是个优秀的开发者。</p><p>B． 良好的沟通能力。这一点尤为重要，因为架构师需要与项目组的开发人员以及领导层不断交换意见，向对方传递自己的设计意图与思想，没有良好的表达与沟通能力是很容易出现问题的。这一点在沟通方式并非母语的企业中尤为明显。</p><p>C． 良好的软件工程素质。虽说架构师不是项目经理，但我认为他需要对软件开发过程有清晰明确的认识，这里的开发过程是个泛指，也许是RUP，也许是XP，是什么无所谓，但这种工程素质是每个优秀架构师必备的品格之一。</p><p>D． 宽广的知识领域。架构师的眼界一定要开阔，绝对不能局限于眼前的小范围事务，否则极易出现&#8220;鼠目寸光&#8221;的后果。这就需要架构师不断学习，这里的学习既包括技术上的，同时也包括业务上的以及沟通上的。</p><p>E． &nbsp;领域知识。架构师务必对自己所从事的业务领域有深刻的认识，他未必要成为业务专家，但他一定要对业务知识有深刻的理解。很难想象经常从事金融领域项目的架构师能轻松设计好电信领域的项目架构。知识需要积累，业务也是这样的。</p><p>F． &nbsp;处理系统非功能性需求的本领。架构师尤其需要对系统的性能、容错、并发等非功能性需求方面有独到的认识与解决办法。一个项目到了后期，往往都是这些问题成为整个项目的瓶颈，这时架构师就要发挥其优势了。</p><p>架构师之路是崎岖的，充满了荆棘与挑战，但这却是无数开发者的梦想。架构师是多项技能与素质的综合体，每一位以此为目标的开发者都需要在平日的工作中不断提升自己，在这里我衷心的祝愿架构师这个梦想能照进每一位有心人的现实。<br /><div><a href="http://blog.csdn.net/ricohzhanglong/article/details/6472689">http://blog.csdn.net/ricohzhanglong/article/details/6472689</a></div></p></span><img src ="http://www.cppblog.com/yehao/aggbug/158241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehao/" target="_blank">厚积薄发</a> 2011-10-13 18:21 <a href="http://www.cppblog.com/yehao/articles/158241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>