<?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>Erick &#187; 技术大类</title>
	<atom:link href="http://blog.xiongchuan.org/category/tech/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.xiongchuan.org</link>
	<description>Even a great life is only a life until you make it.</description>
	<lastBuildDate>Thu, 10 Mar 2011 14:44:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
	
<!-- Start Of Script Generated By WP-PostViews Plus -->
<script type='text/javascript' src='http://blog.xiongchuan.org/wp-includes/js/jquery/jquery.js?ver=1.4.4'></script>
<script type="text/javascript">
/* <![CDATA[ */
/* ]]> */
</script>
<!-- End Of Script Generated By WP-PostViews Plus -->
	<item>
		<title>终于下了决心，把博客从国内移到国外了</title>
		<link>http://blog.xiongchuan.org/blog-move-to-us.html</link>
		<comments>http://blog.xiongchuan.org/blog-move-to-us.html#comments</comments>
		<pubDate>Sun, 16 Jan 2011 04:49:38 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[删除空行]]></category>
		<category><![CDATA[迁移]]></category>

		<guid isPermaLink="false">http://www.pigblog.net/?p=672</guid>
		<description><![CDATA[再一次使用了sudu的在线压缩文件，打包下载快一点儿，又忘了上回的教训，直接上传到bluehost的空间， 可想而知，头部有输出，这回连后台都进不了。 用sudu的文件打包在所有文件末尾都加了一个空行，导致php包含的时候，就有空白输出了。 还好，哥为了解决这个问题，之前写过一段代码，现在又有用了。 删除所有文件的末行的空白。 如果有想要下载的哥，请稳步到 PHP批量删除空行&#124;wordpress迁移的艰辛 Related PostsPHP批量删除空行&#124;wordpress迁移的艰辛]]></description>
			<content:encoded><![CDATA[<p>再一次使用了sudu的在线压缩文件，打包下载快一点儿，又忘了上回的教训，直接上传到bluehost的空间，<br />
可想而知，头部有输出，这回连后台都进不了。</p>
<blockquote><p>用sudu的文件打包在所有文件末尾都加了一个空行，导致php包含的时候，就有空白输出了。</p></blockquote>
<p>还好，哥为了解决这个问题，之前写过一段代码，现在又有用了。<br />
删除所有文件的末行的空白。</p>
<p>如果有想要下载的哥，请稳步到 <a href="http://www.pigblog.net/batch-delete-blank-lines.html" rel="external nofollow">PHP批量删除空行|wordpress迁移的艰辛</a></p>
<h4  class="entry-title">Related Posts</h4><ul class="related_post"><li><a href="http://blog.xiongchuan.org/batch-delete-blank-lines.html" title="PHP批量删除空行|wordpress迁移的艰辛">PHP批量删除空行|wordpress迁移的艰辛</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.xiongchuan.org/blog-move-to-us.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP替换全角符合出现乱码的解决办法</title>
		<link>http://blog.xiongchuan.org/convert-encoding.html</link>
		<comments>http://blog.xiongchuan.org/convert-encoding.html#comments</comments>
		<pubDate>Fri, 02 Jul 2010 01:00:57 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[乱码]]></category>

		<guid isPermaLink="false">http://www.pigblog.net/?p=637</guid>
		<description><![CDATA[str_replace,strtr,mb_ereg_replace,替换如&#8217;：&#8217;=>&#8217;:'，遇到&#8217;。。。好&#8217;,这时候会出现乱码，估计还很多其他样的情况，GOOGLE一下，在进行替换之前把内容转码到UTF-8,完了后再转换到GBK。 PS:这是在GBK编码的情况下，遇到的。 Most Commented Posts发一个dedeEIMS企业模板Guestbook博客终于恢复啦MySQL Can&#8217;t find messagefile,解决方法2010沉默几天武汉的这个六月搬家啦,上班不怕迟到了……About]]></description>
			<content:encoded><![CDATA[<p>str_replace,strtr,mb_ereg_replace,替换如&#8217;：&#8217;=>&#8217;:'，遇到&#8217;。。。好&#8217;,这时候会出现乱码，估计还很多其他样的情况，GOOGLE一下，在进行替换之前把内容转码到UTF-8,完了后再转换到GBK。<br />
PS:这是在GBK编码的情况下，遇到的。</p>
<h4  class="entry-title">Most Commented Posts</h4><ul class="related_post"><li><a href="http://blog.xiongchuan.org/an-enterprise-theme-for-dedeeims.html" title="发一个dedeEIMS企业模板">发一个dedeEIMS企业模板</a></li><li><a href="http://blog.xiongchuan.org/guestbook" title="Guestbook">Guestbook</a></li><li><a href="http://blog.xiongchuan.org/blog-recovery-again.html" title="博客终于恢复啦">博客终于恢复啦</a></li><li><a href="http://blog.xiongchuan.org/cant-find-messagefile-resolve.html" title="MySQL Can&#8217;t find messagefile,解决方法">MySQL Can&#8217;t find messagefile,解决方法</a></li><li><a href="http://blog.xiongchuan.org/2010-bad-day.html" title="2010沉默几天">2010沉默几天</a></li><li><a href="http://blog.xiongchuan.org/these-days-in-wuhan.html" title="武汉的这个六月">武汉的这个六月</a></li><li><a href="http://blog.xiongchuan.org/move-house.html" title="搬家啦,上班不怕迟到了……">搬家啦,上班不怕迟到了……</a></li><li><a href="http://blog.xiongchuan.org/about" title="About">About</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.xiongchuan.org/convert-encoding.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Form表单的submit()，IE6下提交不了的解决办法</title>
		<link>http://blog.xiongchuan.org/javascript-form-submit-ie6.html</link>
		<comments>http://blog.xiongchuan.org/javascript-form-submit-ie6.html#comments</comments>
		<pubDate>Sun, 13 Jun 2010 05:07:26 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[ie6]]></category>

		<guid isPermaLink="false">http://www.pigblog.net/?p=625</guid>
		<description><![CDATA[今天遇到IE6下的submit不好使，baidu之后留下来了。 一般在A标签下面， $('submitA').onclick = function(){ $('formId').submit(); } 如果你的写法像上面一样， 这时候会发现IE6下面提交不了表单。解决的办法有两种 一、把A标签换个写法 把其中的javascript:void(0)换成#就可以了 二、在javascript里面，对submit动作处理一下 $('submitA').onclick = function(){ setTimeout(function(){$('formId').submit();},0); } Most Commented Posts发一个dedeEIMS企业模板Guestbook博客终于恢复啦MySQL Can&#8217;t find messagefile,解决方法2010沉默几天武汉的这个六月搬家啦,上班不怕迟到了……About]]></description>
			<content:encoded><![CDATA[<p>今天遇到IE6下的submit不好使，baidu之后留下来了。<br />
一般在A标签下面，</p>
<blockquote><pre name="code" class="html"><a href="javascript:void(0)" id="submitA"></a>

$('submitA').onclick = function(){
    $('formId').submit();
}</blockquote>

如果你的写法像上面一样，
这时候会发现IE6下面提交不了表单。解决的办法有两种
<blockquote>
一、把A标签换个写法
<pre name="code" class="html"><a href="#" id="submitA"></a></pre>
<p>把其中的javascript:void(0)换成#就可以了</p></blockquote>
<blockquote><p>二、在javascript里面，对submit动作处理一下<br />
$('submitA').onclick = function(){<br />
    setTimeout(function(){$('formId').submit();},0);<br />
}</p></blockquote>
<h4  class="entry-title">Most Commented Posts</h4><ul class="related_post"><li><a href="http://blog.xiongchuan.org/an-enterprise-theme-for-dedeeims.html" title="发一个dedeEIMS企业模板">发一个dedeEIMS企业模板</a></li><li><a href="http://blog.xiongchuan.org/guestbook" title="Guestbook">Guestbook</a></li><li><a href="http://blog.xiongchuan.org/blog-recovery-again.html" title="博客终于恢复啦">博客终于恢复啦</a></li><li><a href="http://blog.xiongchuan.org/cant-find-messagefile-resolve.html" title="MySQL Can&#8217;t find messagefile,解决方法">MySQL Can&#8217;t find messagefile,解决方法</a></li><li><a href="http://blog.xiongchuan.org/2010-bad-day.html" title="2010沉默几天">2010沉默几天</a></li><li><a href="http://blog.xiongchuan.org/these-days-in-wuhan.html" title="武汉的这个六月">武汉的这个六月</a></li><li><a href="http://blog.xiongchuan.org/move-house.html" title="搬家啦,上班不怕迟到了……">搬家啦,上班不怕迟到了……</a></li><li><a href="http://blog.xiongchuan.org/about" title="About">About</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.xiongchuan.org/javascript-form-submit-ie6.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Eclipse error:selection job title,已解决</title>
		<link>http://blog.xiongchuan.org/eclipse-erro-selection-job-title.html</link>
		<comments>http://blog.xiongchuan.org/eclipse-erro-selection-job-title.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 05:19:55 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.pigblog.net/?p=615</guid>
		<description><![CDATA[今天在ZOL，在一台很破的机器上，在一个老的XP上用Eclipse，出现 An internal error occurred during: &#8220;Selection Job titile&#8221;. 解决办法是 使用http://download.eclipse.org/technology/dltk/updates/进行更新 其他方法可以参考 http://wiki.eclipse.org/PDT/Installation#Known_Problems Related PostsCentOS下eclipse支持GBK编码eclipse语言包，用迅雷批量下载Eclipse3.5 中文语言包 下载PDT:创建PHP项目出现“Creation of element failed”错误的解决方法]]></description>
			<content:encoded><![CDATA[<p>今天在ZOL，在一台很破的机器上，在一个老的XP上用Eclipse，出现</p>
<blockquote><p>An internal error occurred during: &#8220;Selection Job titile&#8221;.</p></blockquote>
<p>解决办法是<br />
使用http://download.eclipse.org/technology/dltk/updates/进行更新</p>
<p>其他方法可以参考</p>
<p>http://wiki.eclipse.org/PDT/Installation#Known_Problems</p>
<h4  class="entry-title">Related Posts</h4><ul class="related_post"><li><a href="http://blog.xiongchuan.org/centos-eclipse-gbk-encoding.html" title="CentOS下eclipse支持GBK编码">CentOS下eclipse支持GBK编码</a></li><li><a href="http://blog.xiongchuan.org/batch-download-eclipse-language-package.html" title="eclipse语言包，用迅雷批量下载">eclipse语言包，用迅雷批量下载</a></li><li><a href="http://blog.xiongchuan.org/eclipse-for-php-3-5-downoad.html" title="Eclipse3.5 中文语言包 下载">Eclipse3.5 中文语言包 下载</a></li><li><a href="http://blog.xiongchuan.org/pdt-create-php-project-creation-of-element-failed-resove.html" title="PDT:创建PHP项目出现“Creation of element failed”错误的解决方法">PDT:创建PHP项目出现“Creation of element failed”错误的解决方法</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.xiongchuan.org/eclipse-erro-selection-job-title.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP批量删除空行&#124;wordpress迁移的艰辛</title>
		<link>http://blog.xiongchuan.org/batch-delete-blank-lines.html</link>
		<comments>http://blog.xiongchuan.org/batch-delete-blank-lines.html#comments</comments>
		<pubDate>Thu, 24 Dec 2009 08:48:03 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[删除空行]]></category>

		<guid isPermaLink="false">http://www.pigblog.net/?p=501</guid>
		<description><![CDATA[博客这些天一直处于死亡状态，昨天空间商帮忙把博客从浙江机房搬到河南机房了，暂时可以开通了。 Warning: Cannot modify header information &#8211; headers already sent by (output started at /*****/wp-includes/compat.php:230 头部有输出，昨天加班到比较晚，回家看《花木兰》，没去管博客，今天来公司，发现问题严重了，Google竟然抓取了页面 打开这些PHP的文件，发现下面全部都多了两行，就是php闭合标签之后多出了两个空行，造成在include 或是 require 后会有输出。 开始以为是只有几个文件是这样的，多打开几个发现，整个空间里面的php文件js,css,php都多出了两个空行，估计是华夏名网的在线文件管理器打包造成的。 因为本人对正则不熟悉，不过其实用正则替换倒不是太难，关键问题在于windows和linux下面的换行，回车符号的区别，费了不少时间研究。 虽然我知道windows下面是\r\n linux下面是\n 可是我用\r\n在windows系统上怎么也匹配不了，后来才发现我用的eclipse里面的我用的是Unix格式，换行就是\n，而不是\r\n，功夫不负苦心人哈，把代码贴出，也可以下载，有什么更好的方法，记得告诉我哈，各位！ //$path=__DIR__;//php 5.3 $path=dirname(__FILE__); function get_all_files($path,$pattern='/php$&#124;js$&#124;css$/i'){ $list = array(); foreach( glob( $path.DIRECTORY_SEPARATOR.'*') as $item ){ if( is_dir( $item ) ){ $list = array_merge( $list , get_all_files( $item,$pattern ) ); } else{ [...]]]></description>
			<content:encoded><![CDATA[<p>博客这些天一直处于死亡状态，昨天空间商帮忙把博客从浙江机房搬到河南机房了，暂时可以开通了。<br />
Warning: Cannot modify header information &#8211; headers already sent by (output started at /*****/wp-includes/compat.php:230<br />
头部有输出，昨天加班到比较晚，回家看《花木兰》，没去管博客，今天来公司，发现问题严重了，Google竟然抓取了页面<br />
<a href="http://www.pigblog.net/photos/photo/4210018847/pigblog.html" class="tt-flickr tt-flickr-Large" title="pigblog" rel="external nofollow"><img class="aligncenter" src="http://farm3.static.flickr.com/2556/4210018847_840f17f0ff_o.jpg" alt="pigblog" width="503" height="112" /></a><br />
打开这些PHP的文件，发现下面全部都多了两行，就是php闭合标签之后多出了两个空行，造成在include 或是 require 后会有输出。<br />
开始以为是只有几个文件是这样的，多打开几个发现，整个空间里面的php文件js,css,php都多出了两个空行，估计是华夏名网的在线文件管理器打包造成的。<br />
因为本人对正则不熟悉，不过其实用正则替换倒不是太难，关键问题在于windows和linux下面的换行，回车符号的区别，费了不少时间研究。<br />
虽然我知道windows下面是\r\n linux下面是\n  可是我用\r\n在windows系统上怎么也匹配不了，后来才发现我用的eclipse里面的我用的是Unix格式，换行就是\n，而不是\r\n，功夫不负苦心人哈，把代码贴出，也可以下载，有什么更好的方法，记得告诉我哈，各位！</p>
<pre name="code" class="php">
//$path=__DIR__;//php 5.3
$path=dirname(__FILE__);
function get_all_files($path,$pattern='/php$|js$|css$/i'){
    $list = array();
    foreach( glob( $path.DIRECTORY_SEPARATOR.'*') as $item ){
        if( is_dir( $item ) ){
         $list = array_merge( $list , get_all_files( $item,$pattern ) );
        }
        else{
            if(preg_match($pattern,$item)){
                $list[] = $item;
        	}
        }
    }
    return $list;
}
$list=get_all_files($path,'/php$/i');
foreach($list as $v){
$str=file_get_contents($v);
//var_dump($str);
$str=preg_replace("/\?>\s*$/i",'?>',$str);
//var_dump($str);
file_put_contents($v,$str);
}
header('Content-Type:text/html;Charset=utf-8');
echo "删除空白完成，Have a good time!";
echo "<a href="/index.php" >回首页</a>";
</pre>
<p><a href="http://www.pigblog.net/removespace.rar" rel="external nofollow">点这里下载文件</a><br />
解压后放到空间的根目录下面，会遍历所有子目录，并删除末尾的空行。</p>
<h4  class="entry-title">Related Posts</h4><ul class="related_post"><li><a href="http://blog.xiongchuan.org/blog-move-to-us.html" title="终于下了决心，把博客从国内移到国外了">终于下了决心，把博客从国内移到国外了</a></li><li><a href="http://blog.xiongchuan.org/blog-back.html" title="博客归来，更简洁了">博客归来，更简洁了</a></li><li><a href="http://blog.xiongchuan.org/flickr-photo-album-for-wordpress.html" title="Flickr Photo Album for WordPress|wp 相册">Flickr Photo Album for WordPress|wp 相册</a></li><li><a href="http://blog.xiongchuan.org/centos-5-3-apache2-mysql5-php-5-3-server.html" title="CentOS 5.3搭建Apache2.2.4+Mysql5.1.4+PHP5.3服务器">CentOS 5.3搭建Apache2.2.4+Mysql5.1.4+PHP5.3服务器</a></li><li><a href="http://blog.xiongchuan.org/warning-strtotime-function-strtotime-it-is-not-safe-to-rely-on-the-system-timezone-settings-resolve.html" title="Warning: strtotime() [function.strtotime]: It is not safe to rely on the system’s timezone settings. 解决方法">Warning: strtotime() [function.strtotime]: It is not safe to rely on the system’s timezone settings. 解决方法</a></li><li><a href="http://blog.xiongchuan.org/add-author-name-for-wordpress.html" title="给博客加个作者|wordpress作者函数">给博客加个作者|wordpress作者函数</a></li><li><a href="http://blog.xiongchuan.org/change-blog-program-to-wordpress.html" title="换博客啦">换博客啦</a></li><li><a href="http://blog.xiongchuan.org/php-braces-description.html" title="PHP的大括号，详解">PHP的大括号，详解</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.xiongchuan.org/batch-delete-blank-lines.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>MySQL Can&#8217;t find messagefile,解决方法</title>
		<link>http://blog.xiongchuan.org/cant-find-messagefile-resolve.html</link>
		<comments>http://blog.xiongchuan.org/cant-find-messagefile-resolve.html#comments</comments>
		<pubDate>Tue, 08 Dec 2009 14:02:00 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Windows相关]]></category>
		<category><![CDATA[xampp]]></category>

		<guid isPermaLink="false">http://www.pigblog.net/?p=491</guid>
		<description><![CDATA[今天新本本到了，晚上回家来安装xampp，APACHE还是一样好装，加入服务后，关闭80端口后，就启动了。 mysql竟然出问题，这还是第一次启动不了呢。1067错误，在windows的日志里查看，错误如下 Can&#8217;t find messagefile &#8216;\xampp\mysql\share\english\errmsg.sys&#8217; Can&#8217;t create test file \xampp\mysql\data\cherry-PC.lower-test 在WINDOWS XP下没有问题，因为我现在用的是VISTA，解决办法是找到xampp\mysql\bin\mysql.ini 把其中的\xampp\ 加上盘符，比如我的xampp装在E盘，改变后就是E:\xampp\ 这样就可以启动啦。 Related Postsmysql 查找重复记录 删除重复记录CentOS 5.3搭建Apache2.2.4+Mysql5.1.4+PHP5.3服务器MySQL备份Mysql ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217;]]></description>
			<content:encoded><![CDATA[<p>今天新本本到了，晚上回家来安装xampp，APACHE还是一样好装，加入服务后，关闭80端口后，就启动了。<br />
mysql竟然出问题，这还是第一次启动不了呢。1067错误，在windows的日志里查看，错误如下</p>
<blockquote><p>Can&#8217;t find messagefile &#8216;\xampp\mysql\share\english\errmsg.sys&#8217;<br />
Can&#8217;t create test file \xampp\mysql\data\cherry-PC.lower-test</p></blockquote>
<p>在WINDOWS XP下没有问题，因为我现在用的是VISTA，解决办法是找到xampp\mysql\bin\mysql.ini<br />
把其中的\xampp\ 加上盘符，比如我的xampp装在E盘，改变后就是E:\xampp\<br />
这样就可以启动啦。</p>
<h4  class="entry-title">Related Posts</h4><ul class="related_post"><li><a href="http://blog.xiongchuan.org/mysql-find-and-delete-duplicate-records.html" title="mysql 查找重复记录 删除重复记录">mysql 查找重复记录 删除重复记录</a></li><li><a href="http://blog.xiongchuan.org/centos-5-3-apache2-mysql5-php-5-3-server.html" title="CentOS 5.3搭建Apache2.2.4+Mysql5.1.4+PHP5.3服务器">CentOS 5.3搭建Apache2.2.4+Mysql5.1.4+PHP5.3服务器</a></li><li><a href="http://blog.xiongchuan.org/mysql-backup.html" title="MySQL备份">MySQL备份</a></li><li><a href="http://blog.xiongchuan.org/mysql-error-1045-28000-access-denied-for-user-rootlocalhost.html" title="Mysql ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217;">Mysql ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.xiongchuan.org/cant-find-messagefile-resolve.html/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>[转]大型网站系统架构分析</title>
		<link>http://blog.xiongchuan.org/the-design-of-the-big-site.html</link>
		<comments>http://blog.xiongchuan.org/the-design-of-the-big-site.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 02:19:25 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[架构设计]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[大型网站]]></category>
		<category><![CDATA[架构]]></category>
		<category><![CDATA[系统架构]]></category>

		<guid isPermaLink="false">http://www.pigblog.net/?p=482</guid>
		<description><![CDATA[收藏下，讲到的多，可惜没有深入，学习中&#8230; 来源:http://www.cnblogs.com/silverLee/archive/2009/11/05/1596418.html 千万级的注册用户，千万级的帖子，nTB级的附件，还有巨大的日访问量，大型网站采用什么系统架构保证性能和稳定性？ 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理：负载量不大的情况下select、delete和update是响应很迅速的，最多加几个索引就可以搞定，但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下，更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。 高并发死锁：平时我们感觉不到，但数据库死锁在高并发的情况下的出现的概率是非常高的。 文件存储的问题：大型网站有海量图片数据、视频数据、文件数据等等，他们如何存储并被有效索引？高并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮服务器能解决眼下的问题，但是还有个问题就是各地的访问问题，也许我们的服务器在北京，可能在云南或者***的访问速度如何解决?如果做分布式，那么我们的文件索引以及架构该如何规划。 接下来讨论大型网站的底层系统架构，来有效的解决上述问题。 毋庸置疑，对于规模稍大的网站来说，其背后必然是一个服务器集群来提供网站服务，例如，2004年eBay的服务器有2400台，估计现在更多。当然，数据库也必然要和应用服务分开，有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言，就是应用也分成很多组。 下面，就从服务器操作系统与Web服务器、数据库、服务器集群与负载均衡、缓存、独立的图片服务器、其它等几个方面来分析大型网站的系统架构。 服务器操作系统与Web服务器 最底层首先是操作系统。好的操作系统能提高好的性能、稳定性和安全性，而这些对大型网站的性能、安全性和稳定性都是至关重要的。 淘宝网（阿里巴巴）: Linux操作系统 + Web 服务器: Apache 新浪：FreeBSD + Web 服务器：Apache Yahoo：FreeBSD + Web 服务器：自己的 Google: 部分Linux + Web 服务器：自己的 百度：Linux + Web 服务器: Apache 网易：Linux + Web 服务器: Apache eBay: Windows Server 2003/8 (大量) + Web 服务器：Microsoft IIS MySpace: Windows Server 2003/8 + [...]]]></description>
			<content:encoded><![CDATA[<p>收藏下，讲到的多，可惜没有深入，学习中&#8230;<br />
来源:<a href="http://www.cnblogs.com/silverLee/archive/2009/11/05/1596418.html" rel="external nofollow">http://www.cnblogs.com/silverLee/archive/2009/11/05/1596418.html</a><br />
千万级的注册用户，千万级的帖子，nTB级的附件，还有巨大的日访问量，大型网站采用什么系统架构保证性能和稳定性？</p>
<p>首先讨论一下大型网站需要注意和考虑的问题。<br />
数据库海量数据处理：负载量不大的情况下select、delete和update是响应很迅速的，最多加几个索引就可以搞定，但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下，更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。<br />
高并发死锁：平时我们感觉不到，但数据库死锁在高并发的情况下的出现的概率是非常高的。<br />
文件存储的问题：大型网站有海量图片数据、视频数据、文件数据等等，他们如何存储并被有效索引？高并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮服务器能解决眼下的问题，但是还有个问题就是各地的访问问题，也许我们的服务器在北京，可能在云南或者***的访问速度如何解决?如果做分布式，那么我们的文件索引以及架构该如何规划。</p>
<p>接下来讨论大型网站的底层系统架构，来有效的解决上述问题。</p>
<p>毋庸置疑，对于规模稍大的网站来说，其背后必然是一个服务器集群来提供网站服务，例如，2004年eBay的服务器有2400台，估计现在更多。当然，数据库也必然要和应用服务分开，有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言，就是应用也分成很多组。</p>
<p style="text-align: center;"><a class="tt-flickr tt-flickr-Medium" title="大型网站系统架构_thumb" href="http://www.pigblog.net/photos/photo/4164302873/%e5%a4%a7%e5%9e%8b%e7%bd%91%e7%ab%99%e7%b3%bb%e7%bb%9f%e6%9e%b6%e6%9e%84_thumb.html" rel="external nofollow"><img class="aligncenter" src="http://farm3.static.flickr.com/2506/4164302873_9eeeda64f4.jpg" alt="大型网站系统架构_thumb" width="500" height="493" /></a></p>
<p><span id="more-482"></span><br />
下面，就从服务器操作系统与Web服务器、数据库、服务器集群与负载均衡、缓存、独立的图片服务器、其它等几个方面来分析大型网站的系统架构。</p>
<p><strong>服务器操作系统与Web服务器</strong></p>
<p>最底层首先是操作系统。好的操作系统能提高好的性能、稳定性和安全性，而这些对大型网站的性能、安全性和稳定性都是至关重要的。<br />
淘宝网（阿里巴巴）: Linux操作系统 + Web 服务器: Apache<br />
新浪：FreeBSD + Web 服务器：Apache<br />
Yahoo：FreeBSD + Web 服务器：自己的<br />
Google: 部分Linux + Web 服务器：自己的<br />
百度：Linux + Web 服务器: Apache<br />
网易：Linux + Web 服务器: Apache<br />
eBay: Windows Server 2003/8 (大量) + Web 服务器：Microsoft IIS<br />
MySpace: Windows Server 2003/8 + Web 服务器：Microsoft IIS</p>
<p>由此可见，开源操作系统做Web应用是首选已经是一个既定事实。在开源操作系统中Linux和FreeBSD差不太多，很难说哪个一定比另外一个要优秀很多、能够全面的超越对手，应该是各有所长。但熟悉Linux的技术人员更多些，利于系统管理、优化等，所以Linux使用更广泛。而Windows Server和IIS虽然有的网站使用，但不开源，而且需要购买微软的一系列应用产品，限制了其使用。总之，开源操作系统，尤其是Linux做Web应用是首选已经是一个既定事实。</p>
<p>常用的系统架构是:<br />
Linux + Apache + PHP + MySQL<br />
Linux + Apache + Java (WebSphere) + Oracle<br />
Windows Server 2003/2008 + IIS + C#/ASP.NET + 数据库</p>
<p><strong>数据库</strong></p>
<p>因为是千万人同时访问的网站，所以一般是有很多个数据库同时工作的，说明白一点就是数据库集群和并发控制，数据分布到地理位置不同的数据中心，以免发生断电事故。</p>
<p>主流的数据库有Sun的是MySQL和Oracle。</p>
<p>Oracle是一款优秀的、广泛采用的商业数据库管理软件。有很强大的功能和安全性，可以处理相对海量的数据。而MySQL是一款非常优秀的开源数据库管理软件，非常适合用多台PC Server组成多点的存储节点阵列(这里我所指的不是MySQL自身提供的集群功能)，每单位的数据存储成本也非常的低廉。用多台PC Server安装MySQL组成一个存储节点阵列，通过MySQL自身的Replication或者应用自身的处理，可以很好的保证容错(允许部分节点失效)，保证应用的健壮性和可靠性。可以这么说，在关系数据库管理系统的选择上，可以考虑应用本身的情况来决定。</p>
<p>MySQL数据库服务器的master-slave模式，利用数据库服务器在主从服务器间进行同步，应用只把数据写到主服务器，而读数据时则根据负载选择一台从服务器或者主服务器来读取，将数据按不同策略划分到不同的服务器（组）上，分散数据库压力。</p>
<p><strong>服务器集群与负载均衡</strong></p>
<p>服务器群集中每个服务结点运行一个所需服务器程序的独立拷贝，而网络负载均衡则将工作负载在这些主机间进行分配。负载均衡建立在现有网络结构之上，它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量，加强网络数据处理能力，提高网络的灵活性和可用性。它主要完成以下任务:解决网络拥塞问题，服务就近提供，实现地理位置无关性 ;为用户提供更好的访问质量;提高服务器响应速度;提高服务器及其他资源的利用效率;避免了网络关键部位出现单点失效。</p>
<p>常用的服务器集群和数据库集群负载均衡实现方法：<br />
CitrixNetScaler的硬件负载均衡交换机做服务器集群的负载均衡。<br />
MySQL Proxy做MySQL服务器集群的负载均衡并实现读写分离。其实现读写分离的基本原理是让主数据库处理事务性查询，而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。<br />
CDN(Content Delivery Network): 几乎在各大网站都有使用该技术。例如，使得你的网站在各省市访问更快，其原理是采取了分布式网络缓存结构（即国际上流行的web cache技术），通过在现有的Internet中增加一层新的网络架构，将网站的内容发布到最接近用户的cache服务器内，通过DNS负载均衡的技术，判断用户来源就近访问cache服务器取得所需的内容，解决Internet网络拥塞状况，提高用户访问网站的响应速度，如同提供了多个分布在各地的加速器，以达到快速、可冗余的为多个网站加速的目的。</p>
<p><strong>缓存</strong></p>
<p>众所周知，使用缓存能有效应对大负载，减少数据库的压力，并显著提高**应用程序的性能，如果某个用户多次请求同一资源，则可以从缓存返回该资源，从而避免了重新从服务器或数据库请求该资源而产生的系统开销。缓存可以通过减少获取请求的资源所需的时间，提高应用程序性能。缓存还可以通过减少到服务器的往返次数，降低网络通信量。尽管缓存可以提高性能，但它也增加了返回到应用程序的资源可能变得陈旧的风险。这意味着，返回的资源可能与假设没有使用缓存的情况下，服务器有可能发送的资源并不完全相同(即取得“脏数据”)。</p>
<p>即便如此，简单的缓存策略也能大大提升网站性能。例如，Youtube把首页最新的视频列表缓存60秒，也就是说60秒内并发的request都是从缓存读取的，大大减少了数据库压力。再加上CDN，使得Youtube首页的并发访问速度很快。</p>
<p>单机内存缓存、文件缓存、数据库缓存等的策略都是可以很简单的实现的，例如可以使用微软的Caching Application Block，但如何在集群环境中使多个缓存、**缓存并保存同步是个重大问题。大型网站一般都使用缓存服务器群，并使用**缓存。业内最常用的有：<br />
Squidcache，Squid服务器群，把它作为web服务器端前置cache服务器缓存相关请求来提高web服务器速度。Squid将大部分静态资源(图片，js，css等）缓存起来，直接返回给访问者，减少应用服务器的负载<br />
memcache，memcache服务器群，一款分布式缓存产品，很多大型网站在应用; 它可以应对任意多个连接，使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间，然后建立一个HashTable，Memcached自管理这些HashTable。因为通常网站应用程序中最耗费时间的任务是数据在数据库的检索，而多个用户查询相同的SQL时，数据库压力会增大，而通过memcache的查询缓存命中，数据直接从memcache内存中取，每次缓存命中将替换到数据库服务器的一次往返，到达数据库服务器的请求更少，间接地提高了数据库服务器的性能，从而使应用程序运行得更快。它通过基于内存缓存对象来减少数据库查询的方式改善网站系统的反应，其最吸引人的一个特性就是支持分布式部署。有关memcache，以下文章可以参考：参考1，参考2，参考3官方站点。<br />
e-Accelerator，比较特殊，PHP的缓存和加速器。是一个免费开源的PHP加速、优化、编译和动态缓存的项目，它可以通过缓存PHP代码编译后的结果来提高PHP脚本的性能，使得一向很复杂和离我们很远的 PHP脚本编译问题完全得到解决。通过使用eAccelerator，可以优化你的PHP代码执行速度，降低服务器负载，可以提高PHP应用执行速度最高达10倍。</p>
<p><strong>独立的图片服务器</strong></p>
<p>无论从管理上，还是从性能上看，只要有可能，尽量部署独立的图片服务器。这几乎成为常识了。具备独立的图片服务器或者服务器集群后，在 Web 服务器上就可以有针对性的进行配置优化。</p>
<p><strong>其他</strong></p>
<p>一个互联网应用，除了服务器的操作系统，Web Server软件，应用服务器软件，数据库软件外，我们还会涉及到一些其他的系统，比如一些中间件系统、文件存储系统（图片服务器，视频服务器，管理服务器，RSS和广告服务器等等）、全文检索、搜索、等等。会在以后介绍。</p>
<h4  class="entry-title">Most Commented Posts</h4><ul class="related_post"><li><a href="http://blog.xiongchuan.org/an-enterprise-theme-for-dedeeims.html" title="发一个dedeEIMS企业模板">发一个dedeEIMS企业模板</a></li><li><a href="http://blog.xiongchuan.org/guestbook" title="Guestbook">Guestbook</a></li><li><a href="http://blog.xiongchuan.org/blog-recovery-again.html" title="博客终于恢复啦">博客终于恢复啦</a></li><li><a href="http://blog.xiongchuan.org/cant-find-messagefile-resolve.html" title="MySQL Can&#8217;t find messagefile,解决方法">MySQL Can&#8217;t find messagefile,解决方法</a></li><li><a href="http://blog.xiongchuan.org/2010-bad-day.html" title="2010沉默几天">2010沉默几天</a></li><li><a href="http://blog.xiongchuan.org/these-days-in-wuhan.html" title="武汉的这个六月">武汉的这个六月</a></li><li><a href="http://blog.xiongchuan.org/move-house.html" title="搬家啦,上班不怕迟到了……">搬家啦,上班不怕迟到了……</a></li><li><a href="http://blog.xiongchuan.org/about" title="About">About</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.xiongchuan.org/the-design-of-the-big-site.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>windows下安装svn服务器和客户端</title>
		<link>http://blog.xiongchuan.org/windows-setup-svn-server-client.html</link>
		<comments>http://blog.xiongchuan.org/windows-setup-svn-server-client.html#comments</comments>
		<pubDate>Thu, 26 Nov 2009 16:59:35 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[Windows相关]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[TortoiseSVN]]></category>
		<category><![CDATA[版本控制]]></category>

		<guid isPermaLink="false">http://www.pigblog.net/?p=478</guid>
		<description><![CDATA[在家里的电脑上，安装svn，当然今天是突发奇想。 说来也真是见鬼了，subversion的官网竟然进不去了，只有用代理才能进，可是网页代理进了又不能下载。。。，http://subversion.tigris.org/，害得我到处找安装文件，最后还是在csdn上面下载的。 svn-1.5.6-setup.exe 客户端就好下载的多： TortoiseSVN-1.6.6.17493-win32-svn-1.6.6.msi LanguagePack_1.6.6.17493-win32-zh_CN.msi 今天不是讲教程，只是写下今天安装的经历。。。 先安装的TortoiseSVN 再安装svn-1.5.6-setup，很简单，在F盘随便建立一个文件夹，SVNprojects\project1，然后通过TortoiseSVN 遇到的第一个问题： 在\project1里面建立版本控制，进入subversion\bin\启动服务，浏览svn，结果报错，什么format 3..format 5之类的，不记得了，有人说这个应该是客户端和服务端兼容的问题，知道原因后，删除project1里面的内容，然后通过subverion\bin\svnadmin.exe 建立版本控制，再启动服务，果然可以正常浏览SVN了 第二个问题： 编辑svnserve.conf这个文件， 去掉[general]，anon-access = none。。。前面的#号后，又报错，原因是这些语句必须顶格写，前面不能有空格。 Most Commented Posts发一个dedeEIMS企业模板Guestbook博客终于恢复啦MySQL Can&#8217;t find messagefile,解决方法2010沉默几天武汉的这个六月搬家啦,上班不怕迟到了……About]]></description>
			<content:encoded><![CDATA[<p>在家里的电脑上，安装svn，当然今天是突发奇想。<br />
说来也真是见鬼了，subversion的官网竟然进不去了，只有用代理才能进，可是网页代理进了又不能下载。。。，http://subversion.tigris.org/，害得我到处找安装文件，最后还是在csdn上面下载的。<br />
svn-1.5.6-setup.exe<br />
客户端就好下载的多：<br />
TortoiseSVN-1.6.6.17493-win32-svn-1.6.6.msi<br />
LanguagePack_1.6.6.17493-win32-zh_CN.msi</p>
<p>今天不是讲教程，只是写下今天安装的经历。。。<br />
先安装的TortoiseSVN<br />
再安装svn-1.5.6-setup，很简单，在F盘随便建立一个文件夹，SVNprojects\project1，然后通过TortoiseSVN<br />
遇到的第一个问题：<br />
在\project1里面建立版本控制，进入subversion\bin\启动服务，浏览svn，结果报错，什么format 3..format 5之类的，不记得了，有人说这个应该是客户端和服务端兼容的问题，知道原因后，删除project1里面的内容，然后通过subverion\bin\svnadmin.exe 建立版本控制，再启动服务，果然可以正常浏览SVN了</p>
<p>第二个问题：<br />
编辑svnserve.conf这个文件，<br />
去掉[general]，anon-access = none。。。前面的#号后，又报错，原因是这些语句必须顶格写，前面不能有空格。</p>
<h4  class="entry-title">Most Commented Posts</h4><ul class="related_post"><li><a href="http://blog.xiongchuan.org/an-enterprise-theme-for-dedeeims.html" title="发一个dedeEIMS企业模板">发一个dedeEIMS企业模板</a></li><li><a href="http://blog.xiongchuan.org/guestbook" title="Guestbook">Guestbook</a></li><li><a href="http://blog.xiongchuan.org/blog-recovery-again.html" title="博客终于恢复啦">博客终于恢复啦</a></li><li><a href="http://blog.xiongchuan.org/cant-find-messagefile-resolve.html" title="MySQL Can&#8217;t find messagefile,解决方法">MySQL Can&#8217;t find messagefile,解决方法</a></li><li><a href="http://blog.xiongchuan.org/2010-bad-day.html" title="2010沉默几天">2010沉默几天</a></li><li><a href="http://blog.xiongchuan.org/these-days-in-wuhan.html" title="武汉的这个六月">武汉的这个六月</a></li><li><a href="http://blog.xiongchuan.org/move-house.html" title="搬家啦,上班不怕迟到了……">搬家啦,上班不怕迟到了……</a></li><li><a href="http://blog.xiongchuan.org/about" title="About">About</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.xiongchuan.org/windows-setup-svn-server-client.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Flickr Photo Album for WordPress&#124;wp 相册</title>
		<link>http://blog.xiongchuan.org/flickr-photo-album-for-wordpress.html</link>
		<comments>http://blog.xiongchuan.org/flickr-photo-album-for-wordpress.html#comments</comments>
		<pubDate>Thu, 19 Nov 2009 14:32:32 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[flickr photo album]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[相册]]></category>

		<guid isPermaLink="false">http://www.pigblog.net/?p=440</guid>
		<description><![CDATA[这几天突然想弄一个相册，放点图片。决定放Flickr上面，寻觅这样的插件，发现很多人说用Falbum，有很不错的评价，可惜我下载了最新版本，安装了却老有问题，要放弃时，偶然发现了这个插件，觉得挺好用的。Flickr Photo Album for WordPress，可以在sidebar提供照片，可以单独设置一个页面放相册。 讲一下安装吧： 1、当然下载这个zip的插件包，点这里下载 2、在wp后台，添加新插件，上传，激活插件 3、如果你想要单独的页面放相册，那么要开启rewrite，把原来的固定链接改成其它的样子 4、配置photo album 首先是授权，你必须要有一个Flickr的账号，这个自己解决吧，操作也明显。 相片集聚合 这个选项，设置路径，比如我设置的是photos/ 下面的按你的想法配置了。 5、为了在导航部分显示一个 相册 的链接我们要添加一个页面。先看效果图： 具体做法如下： A、左边menu的页面-&#62;添加新页面 B、标题处写上 相册 二字(当然你可以写其他的) C、点击右上角的 显示选项 在弹出菜单上 选择 页面别名选项 如下图 D、在下面 的页面别名处 填写 photos(和你在photo album的相片集处填写的路径一样) E、保存，完成。 这个时候，在你的博客页面，就可以看到相册的导航了，如果rewrite开启了的话，点击相册，就可以看到photo album上面的内容了，前提是你要有照片。效果： 但是你可能在你的博客里看到的效果和我的不一样，我是指没有排列好，这个是和具体模板有联系的。为了配合当前的模板，你需要修改这个文件。 /wp-content/plugins/tantan-flickr/templates/photoalbum-index.php 这个文件负责人布局，修改的话你要参照当前的模板，比如我现在用的是elegant-box这个主题，我就从这个目录下面找到/wp-content/themes/elegant-boxindex.php文件，参看布局，进行修改具体细节不想讲了，因为现在比较晚了，我要看火影了。针对我这个模板的photoalbum-index.php我放出来，如果有出现某种巧合你也用了这个模板，可以方便的把这个文件拿去覆盖啦。 getDisplayTemplate($photoTemplate)); // uncomment this line to print out the template being used // echo 'Photo [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">这几天突然想弄一个相册，放点图片。决定放Flickr上面，寻觅这样的插件，发现很多人说用Falbum，有很不错的评价，可惜我下载了最新版本，安装了却老有问题，要放弃时，偶然发现了这个插件，觉得挺好用的。<a href="http://tantannoodles.com/toolkit/photo-album/" target="_blank" rel="external nofollow">Flickr Photo Album for WordPress</a>，可以在sidebar提供照片，可以单独设置一个页面放相册。<br />
讲一下安装吧：<br />
1、当然下载这个zip的插件包，<a href="http://tantannoodles.com/toolkit/photo-album/" rel="external nofollow">点这里下载</a><br />
2、在wp后台，添加新插件，上传，激活插件<br />
3、如果你想要单独的页面放相册，那么要开启rewrite，把原来的固定链接改成其它的样子<br />
<a href="http://www.pigblog.net/wp-content/uploads/2009/11/4444.jpg" rel="external nofollow"><img class="aligncenter size-full wp-image-441" title="4444" src="http://www.pigblog.net/wp-content/uploads/2009/11/4444.jpg" alt="4444" width="570" height="309" /></a><br />
4、配置photo album<br />
首先是授权，你必须要有一个Flickr的账号，这个自己解决吧，操作也明显。<br />
相片集聚合 这个选项，设置路径，比如我设置的是photos/<br />
<a href="http://www.pigblog.net/wp-content/uploads/2009/11/5555.jpg" rel="external nofollow"><img class="aligncenter size-full wp-image-442" title="5555" src="http://www.pigblog.net/wp-content/uploads/2009/11/5555.jpg" alt="5555" width="596" height="101" /></a><br />
下面的按你的想法配置了。<br />
<span id="more-440"></span><br />
5、为了在导航部分显示一个 相册 的链接我们要添加一个页面。先看效果图：<br />
<a href="http://www.pigblog.net/wp-content/uploads/2009/11/6666.jpg" rel="external nofollow"><img class="aligncenter size-full wp-image-443" title="6666" src="http://www.pigblog.net/wp-content/uploads/2009/11/6666.jpg" alt="6666" width="128" height="41" /></a><br />
具体做法如下：<br />
A、左边menu的页面-&gt;添加新页面<br />
<a href="http://www.pigblog.net/wp-content/uploads/2009/11/77.jpg" rel="external nofollow"><img class="aligncenter size-full wp-image-444" title="77" src="http://www.pigblog.net/wp-content/uploads/2009/11/77.jpg" alt="77" width="143" height="74" /></a><br />
B、标题处写上 相册 二字(当然你可以写其他的)<br />
<a href="http://www.pigblog.net/wp-content/uploads/2009/11/888.jpg" rel="external nofollow"><img class="aligncenter size-full wp-image-446" title="888" src="http://www.pigblog.net/wp-content/uploads/2009/11/888.jpg" alt="888" width="394" height="107" /></a><br />
C、点击右上角的 显示选项 在弹出菜单上 选择 页面别名选项 如下图<br />
<a href="http://www.pigblog.net/wp-content/uploads/2009/11/99999.jpg" rel="external nofollow"><img class="aligncenter size-full wp-image-447" title="99999" src="http://www.pigblog.net/wp-content/uploads/2009/11/99999.jpg" alt="99999" width="970" height="154" /></a><br />
D、在下面 的页面别名处 填写 photos(和你在photo album的相片集处填写的路径一样)<br />
<a href="http://www.pigblog.net/wp-content/uploads/2009/11/111111111111.jpg" rel="external nofollow"><img class="aligncenter size-full wp-image-448" title="111111111111" src="http://www.pigblog.net/wp-content/uploads/2009/11/111111111111.jpg" alt="111111111111" width="212" height="152" /></a><br />
E、保存，完成。<br />
这个时候，在你的博客页面，就可以看到相册的导航了，如果rewrite开启了的话，点击相册，就可以看到photo album上面的内容了，前提是你要有照片。效果：<br />
<a href="http://www.pigblog.net/wp-content/uploads/2009/11/123456.jpg" rel="external nofollow"></a><a href="http://www.pigblog.net/wp-content/uploads/2009/11/123456.jpg" rel="external nofollow"><img class="size-full wp-image-455 aligncenter" title="123456" src="http://www.pigblog.net/wp-content/uploads/2009/11/123456.jpg" alt="123456" width="600" height="200" /></a></p>
<p>但是你可能在你的博客里看到的效果和我的不一样，我是指没有排列好，这个是和具体模板有联系的。为了配合当前的模板，你需要修改这个文件。<br />
/wp-content/plugins/tantan-flickr/templates/photoalbum-index.php<br />
这个文件负责人布局，修改的话你要参照当前的模板，比如我现在用的是elegant-box这个主题，我就从这个目录下面找到/wp-content/themes/elegant-boxindex.php文件，参看布局，进行修改具体细节不想讲了，因为现在比较晚了，我要看火影了。针对我这个模板的photoalbum-index.php我放出来，如果有出现某种巧合你也用了这个模板，可以方便的把这个文件拿去覆盖啦。</p>
<pre class="php" style="text-align: left;"><!--p /* Template Name: Photo Album If you want to customize the look and feel of your photo album, follow these steps.  You'll probably need a good understanding of HTML and CSS! 1. Copy this file into your current active theme's directory 2. Also copy all the files starting with "photoalbum-" into your theme's directory       * Alternatively, you could only copy just the "photoalbum-" file you want to customize into your current themes directory. 3. Customize the CSS in photoalbum-header.html to your liking. 4. That's it :) The main template files: - photoalbum-albums-index.html shows all your Flickr sets (aka albums) - photoalbum-album.html displays a highlight photo and all the photos for an album - photoalbum-photo.html displays one photo, along with next and previous photo links  Troubleshooting Tips: Not all WordPress themes are created equal, so default look and feel might look a little weird on your blog. Try looking at your theme's "index.php" and copy and paste any extra HTML or PHP into this file. $Revision: 128 $ $Date: 2008-04-24 00:16:32 -0400 (Thu, 24 Apr 2008) $ $Author: joetan54 $ */ global $TanTanFlickrPlugin; if (!is_object($TanTanFlickrPlugin)) wp_die('Flickr Photo Album plugin is not installed / activated!'); get_header(); // load the appropriate albums index, album's photos, or individual photo template. // $photoTemplate contains the template being used-->
<!--
<div id="content" class="narrowcolumn">-->
<div class="post"><!--p include($tpl = $TanTanFlickrPlugi-->getDisplayTemplate($photoTemplate));
// uncomment this line to print out the template being used
// echo 'Photo Album Template: '.$tpl;
?&gt;</div>

<!--p get_sidebar();-->
<div id="bottom"><!--p get_footer()--></div>
</pre>
<p>6、设置sidebar上面的图片<br />
这个很简单，在左边menu-&gt;小工具-&gt;把Flickr sidebar拖到右边 激活就OK了，你可以选择显示几张，如果你不选择随机显示相片的话，那么 第二栏的 标签对你来说很重要，因为显示的相片是根据你填写的标签，在flickr上你的相册里搜索的，所以呢，要怎么做，你知道了吧。<br />
<span style="color: #ff0000;">PS：如果你填写的标签，但是又没有显示出相片来，而你的相册确实是有相片的，并且也加了标签，这个的时候你要做的是，在photo album处刷新相集，清除cache这个选项选上，因为这个插件是有缓存的。</span></p>
<p>7、尽情享受吧！<br />
这是新手的天堂，高手闪开！</p>
<h4  class="entry-title">Related Posts</h4><ul class="related_post"><li><a href="http://blog.xiongchuan.org/blog-back.html" title="博客归来，更简洁了">博客归来，更简洁了</a></li><li><a href="http://blog.xiongchuan.org/batch-delete-blank-lines.html" title="PHP批量删除空行|wordpress迁移的艰辛">PHP批量删除空行|wordpress迁移的艰辛</a></li><li><a href="http://blog.xiongchuan.org/firefox-plugins-reboot-failed-resolve.html" title="Firefox安装插件后，重启无效的解决方法">Firefox安装插件后，重启无效的解决方法</a></li><li><a href="http://blog.xiongchuan.org/make-a-change-google-syntax-highlighter-for-wordpress.html" title="小小改动高亮插件Google Syntax Highlighter for WordPress">小小改动高亮插件Google Syntax Highlighter for WordPress</a></li><li><a href="http://blog.xiongchuan.org/add-author-name-for-wordpress.html" title="给博客加个作者|wordpress作者函数">给博客加个作者|wordpress作者函数</a></li><li><a href="http://blog.xiongchuan.org/change-blog-program-to-wordpress.html" title="换博客啦">换博客啦</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.xiongchuan.org/flickr-photo-album-for-wordpress.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>mysql 查找重复记录 删除重复记录</title>
		<link>http://blog.xiongchuan.org/mysql-find-and-delete-duplicate-records.html</link>
		<comments>http://blog.xiongchuan.org/mysql-find-and-delete-duplicate-records.html#comments</comments>
		<pubDate>Tue, 17 Nov 2009 09:14:40 +0000</pubDate>
		<dc:creator>Erick</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[重复记录]]></category>

		<guid isPermaLink="false">http://www.pigblog.net/?p=414</guid>
		<description><![CDATA[几天没更新了，比较懒。 在公司，我重新设计了SP系统，并完全废掉了原系统，我来做新的，现在基本可以投入使用，为了兼容原来的数据，要把旧数据迁移过来， 中途就会有一些重复记录，需要消灭。 所谓重复，那肯定是记录里的某些字段有一样的，根据这个来判断了。 一，查找重复 表person id int 10 name varchar 20 这样的一个表，根据name来判断重复，我们可以把记录都查找出来 select *,count(*) as total from person group by name order by total desc group by name 按name进行分组，name一样的记录只显示一条，count(*) as total ，用这个可以看到name一样的记录有多少条,为了直观,order by total desc 把重复记录的排在前面，这样就可以找出这个表里面的重复记录了。 PS：这里是把所有的数据显示出来了，那些total=1的是没有重复的，如果只想要重复的在group by name 后面加having 子句 如下 select *,count(*) as total from person group by name having total&#62;1 order [...]]]></description>
			<content:encoded><![CDATA[<p>几天没更新了，比较懒。<br />
在公司，我重新设计了SP系统，并完全废掉了原系统，我来做新的，现在基本可以投入使用，为了兼容原来的数据，要把旧数据迁移过来，<br />
中途就会有一些重复记录，需要消灭。<br />
所谓重复，那肯定是记录里的某些字段有一样的，根据这个来判断了。<br />
一，<span style="color: #ff0000;">查找重复</span><br />
表person<br />
id       int          10<br />
name varchar 20<br />
这样的一个表，根据name来判断重复，我们可以把记录都查找出来<br />
select *,count(*) as total from person group by name order by total desc<br />
group by name 按name进行分组，name一样的记录只显示一条，count(*) as total ，用这个可以看到name一样的记录有多少条,为了直观,order by total desc 把重复记录的排在前面，这样就可以找出这个表里面的重复记录了。<br />
PS：这里是把所有的数据显示出来了，那些total=1的是没有重复的，如果只想要重复的在group by name 后面加having 子句 如下<br />
<span style="color: #ff0000;">select *,count(*) as total from person group by name having total&gt;1 order by total desc</span><br />
这样就只有重复的记录了  当然你的表 肯定 不会这么简单,在group by 前面可以添加where子句</p>
<p>二，<span style="color: #ff0000;">删除重复</span><br />
1.这个是从网上随便找的(改了下，适用上面的那个表)，像我这样的门外汉，还看不明白，来分析下<br />
delete from person where name  in (select  name  from person  group  by  name   having  count(*) &gt; 1)<br />
and id not in (select min(id) from  person  group by name  having count(*)&gt;1)<br />
name  in (select  name  from person  group  by  name   having  count(*) &gt; 1) 这一句找出name有重复的所有记录<br />
id not in (select min(id) from  person  group by name  having count(*)&gt;1)这一句找出id不等于这些重复记录的最小id<br />
用and连接起来就是，删除重复记录，且保留id最小的那一条，要不然全删除了<br />
2.还看了个，不用连接来做的，思路是用连接选出除了最小id可是最大id的所有记录，然后删除，具体代码不想找了。<br />
以上的方法虽然说可以实现，但是代码量太大了。。。。。。<br />
3.我用的是下面这种，简单直观<br />
<span style="color: #ff0000;">delete a from person a left join person b on a.name=b.name where a.id&gt;b.id</span><br />
对person做自身连接，找出name一样的记录,附加条件是a.id&gt;b.id这样就把重复记录里面id最小的值保留下来了</p>
<p><span style="color: #ff0000;">后记：留给新手，老手一边玩去！</span><br />
<span style="color: #0000ff;">非常感谢网友 chopper 的发问，在上面第三种方法删除重复语句的时候，少写了一个字母，否则有语法错误</span></p>
<h4  class="entry-title">Related Posts</h4><ul class="related_post"><li><a href="http://blog.xiongchuan.org/cant-find-messagefile-resolve.html" title="MySQL Can&#8217;t find messagefile,解决方法">MySQL Can&#8217;t find messagefile,解决方法</a></li><li><a href="http://blog.xiongchuan.org/centos-5-3-apache2-mysql5-php-5-3-server.html" title="CentOS 5.3搭建Apache2.2.4+Mysql5.1.4+PHP5.3服务器">CentOS 5.3搭建Apache2.2.4+Mysql5.1.4+PHP5.3服务器</a></li><li><a href="http://blog.xiongchuan.org/mysql-backup.html" title="MySQL备份">MySQL备份</a></li><li><a href="http://blog.xiongchuan.org/mysql-error-1045-28000-access-denied-for-user-rootlocalhost.html" title="Mysql ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217;">Mysql ERROR 1045 (28000): Access denied for user &#8216;root&#8217;@'localhost&#8217;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.xiongchuan.org/mysql-find-and-delete-duplicate-records.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

