<?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"
	>

<channel>
	<title>Slyar Home</title>
	<atom:link href="http://www.slyar.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.slyar.com/blog</link>
	<description>Slyar的个人博客</description>
	<pubDate>Wed, 19 Nov 2008 15:29:27 +0000</pubDate>
	<generator>http://wordpress.org/?v=8.0.0 Final</generator>
	<language>en</language>
			<item>
		<title>悲哀的大学教育</title>
		<link>http://www.slyar.com/blog/sorrowful-college-education.html</link>
		<comments>http://www.slyar.com/blog/sorrowful-college-education.html#comments</comments>
		<pubDate>Wed, 19 Nov 2008 13:34:14 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[心情感悟]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[感悟]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=458</guid>
		<description><![CDATA[场景一：
"说个通知，下周我们有个XXX活动，希望大家踊跃报名！"班长喊道。
"......"众人沉默，该干啥干啥。
"参加活动的期末有加分！"班长补充道。
"我报我报！"、"我也报！"、"去哪报名？"......大家很踊跃。

场景二：
"下周我们有个辩论赛，有没有volunteer(志愿者)主动参加？"英语老师说道。
"......"计算机专业的人都比较含蓄。
"要参加的人把名字写到黑板上。"老师补充道。
"......"大家都无动于衷。
"参加的人平时成绩加5分！"重点出来了。
"冲呀！"、"别抢，那个是我的！"、"我先写！"......只能说刚才的沉默是暴风雨前的宁静......
哎，这就是大学，这就是大学的教育，这就是师范大学的教育。"分分分，学生的命根"，连培养老师的师范大学的学生都是如此，更何况这些将来的老师他们的学生呢？大学生的学习、活动必须靠"分"来维持，岂不悲哉！
哎，不说了，省的有的人说我粪青。韩愈说，业精于勤慌于嬉，行成于思毁于随。勤和思不是靠分来推动的，分是假的，本事才是真的......
PS.大一的孩子真可怜...
]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;">场景一：</span></p>
<p><span style="color: #0000ff;">"说个通知，下周我们有个XXX活动，希望大家踊跃报名！"班长喊道。</span></p>
<p><span style="color: #0000ff;">"......"众人沉默，该干啥干啥。</span></p>
<p><span style="color: #0000ff;">"参加活动的期末有加分！"班长补充道。</span></p>
<p><span style="color: #0000ff;">"我报我报！"、"我也报！"、"去哪报名？"......大家很踊跃。</span><br />
<span style="color: #ff0000;"><br />
场景二：</span></p>
<p><span style="color: #0000ff;">"下周我们有个辩论赛，有没有volunteer(志愿者)主动参加？"英语老师说道。</span></p>
<p><span style="color: #0000ff;">"......"计算机专业的人都比较含蓄。</span></p>
<p><span style="color: #0000ff;">"要参加的人把名字写到黑板上。"老师补充道。</span></p>
<p><span style="color: #0000ff;">"......"大家都无动于衷。</span></p>
<p><span style="color: #0000ff;">"参加的人平时成绩加5分！"重点出来了。</span></p>
<p><span style="color: #0000ff;">"冲呀！"、"别抢，那个是我的！"、"我先写！"......只能说刚才的沉默是暴风雨前的宁静......</span></p>
<p>哎，这就是大学，这就是大学的教育，这就是师范大学的教育。"分分分，学生的命根"，连培养老师的师范大学的学生都是如此，更何况这些将来的老师他们的学生呢？大学生的学习、活动必须靠"分"来维持，岂不悲哉！</p>
<p>哎，不说了，省的有的人说我粪青。韩愈说，业精于勤慌于嬉，行成于思毁于随。勤和思不是靠分来推动的，分是假的，本事才是真的......</p>
<p><span style="color: #ff0000;">PS.大一的孩子真可怜...</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/sorrowful-college-education.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用memset函数初始化数组</title>
		<link>http://www.slyar.com/blog/c-memset.html</link>
		<comments>http://www.slyar.com/blog/c-memset.html#comments</comments>
		<pubDate>Tue, 18 Nov 2008 14:48:28 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[编程相关]]></category>

		<category><![CDATA[C语言]]></category>

		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=455</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
初级介绍，大牛请飘过。。。
在初始化数组尤其是需要每次都初始化的时候，很多同学使用循环来进行，这样不但速度慢，而且写起来也很长。所以现在提供一个函数来实现这个功能。。。
原型：extern void *memset(void *buffer, int c, int count);
功能：把buffer所指内存区域的前count个字节设置成字符c。
包含头文件：&#60;string.h&#62;
注意这个函数是字符串函数，所以一定要包含字符串头文件。
使用方法：
int a[50];
memset(a,0,sizeof(a));
这样呢，就将数组a内所有的值都赋成0了，sizeof也是一个函数，得到数组a的字节大小。
另外需要注意的是，memset函数是逐字节进行填充，所以a一般为char *型。对于其它类型的a，可以填充的值有两个，0和-1。因为计算机中用二进制补码表示数字，0和二进制补码为全0，-1的二进制补码为全1。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>初级介绍，大牛请飘过。。。</p>
<p>在初始化数组尤其是需要每次都初始化的时候，很多同学使用循环来进行，这样不但速度慢，而且写起来也很长。所以现在提供一个函数来实现这个功能。。。</p>
<p><span style="color: #0000ff;">原型：extern void *memset(void *buffer, int c, int count);</span></p>
<p><span style="color: #0000ff;">功能：把buffer所指内存区域的前count个字节设置成字符c。</span></p>
<p><span style="color: #0000ff;">包含头文件：&lt;string.h&gt;</span></p>
<p>注意这个函数是字符串函数，所以一定要包含字符串头文件。</p>
<p>使用方法：</p>
<p><span style="color: #0000ff;">int a[50];</span></p>
<p><span style="color: #ff0000;">memset(a,0,sizeof(a));</span></p>
<p>这样呢，就将数组a内所有的值都赋成0了，sizeof也是一个函数，得到数组a的字节大小。</p>
<p>另外需要注意的是，memset函数是逐字节进行填充，所以a一般为char *型。对于其它类型的a，可以填充的值有两个，0和-1。因为计算机中用二进制补码表示数字，0和二进制补码为全0，-1的二进制补码为全1。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/c-memset.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>一不小心提前完成A题任务了</title>
		<link>http://www.slyar.com/blog/ahead-online-judge.html</link>
		<comments>http://www.slyar.com/blog/ahead-online-judge.html#comments</comments>
		<pubDate>Mon, 17 Nov 2008 14:51:12 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[大学生活]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=453</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
首先呢，今天是Jet同学的生日，按照国际惯例呢，先说生日快乐！
本来是打算寒假之前A到80题的，可是最近2个周末不知道自己怎么了，看见题就想做，然后不知不觉一个周末A掉20几道，2个周末加起来，到今天已经A到80题了。。。囧
截个图吧，最近博客少图~也不知道怎么了，最近Firefox在WP上面不能传图片，原因还没查明。。。

以后大规模A题的次数可能会减少，我需要时间好好学习一下高等数学和英语了。高数留了一堆作业，做啊做啊做啊。。。痛苦。。。
今天把GPRS又开启了，因为广东移动开了5元的GPRS，还是可以忍受的。
哦对了，传说晚上1点以后有流星雨，如果天气晴朗我就去看看，哈哈~
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>首先呢，今天是Jet同学的生日，按照国际惯例呢，先说生日快乐！</p>
<p>本来是打算寒假之前A到80题的，可是最近2个周末不知道自己怎么了，看见题就想做，然后不知不觉一个周末A掉20几道，2个周末加起来，到今天已经A到80题了。。。囧</p>
<p>截个图吧，最近博客少图~也不知道怎么了，最近Firefox在WP上面不能传图片，原因还没查明。。。</p>
<p><a href="http://www.slyar.com/blog/wp-content/uploads/2008/11/ac80rank11.gif"><img class="alignnone size-full wp-image-454" title="bnuoj" src="http://www.slyar.com/blog/wp-content/uploads/2008/11/ac80rank11.gif" alt="" width="281" height="93" /></a></p>
<p>以后大规模A题的次数可能会减少，我需要时间好好学习一下高等数学和英语了。高数留了一堆作业，做啊做啊做啊。。。痛苦。。。</p>
<p>今天把GPRS又开启了，因为广东移动开了5元的GPRS，还是可以忍受的。</p>
<p>哦对了，传说晚上1点以后有流星雨，如果天气晴朗我就去看看，哈哈~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/ahead-online-judge.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>C语言 读入字符时需要注意的一个问题</title>
		<link>http://www.slyar.com/blog/c-char-getchar.html</link>
		<comments>http://www.slyar.com/blog/c-char-getchar.html#comments</comments>
		<pubDate>Sun, 16 Nov 2008 15:21:58 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[编程相关]]></category>

		<category><![CDATA[C语言]]></category>

		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=452</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
今天做题时候遇到的问题，先看一段代码：
#include &#60;stdio.h&#62;
int main(){
int n;
char a;
scanf("%d",&#38;n);
scanf("%c",&#38;a);
printf("%c\n",a);
return 0;
}
我们希望先读入一个整数n，然后再读入一个字符a，最后输出字符a。但是经过测试我们发现上面这段代码是无法实现我们的要求的，它只会输出一个空行，这是为什么呢？
我们一步一步分析，当我们输入数字n以后，会按一个回车确认输入。我们知道换行符也是字符(\n)，所以这个换行符也同样进入了等待读入字符的a，因此我们输出的a就是一个换行符。。。
那么怎么解决呢？很简单，只要我们使用getchar()函数忽略这个换行符就可以了，最后的代码如下：
#include &#60;stdio.h&#62;
int main(){
int n;
char a;
scanf("%d",&#38;n);
getchar();
scanf("%c",&#38;a);
printf("%c\n",a);
return 0;
}
今天做题的时候不止一次遇到这个问题，特地写出来。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>今天做题时候遇到的问题，先看一段代码：</p>
<p><span style="color: #0000ff;">#include &lt;stdio.h&gt;<br />
int main(){<br />
int n;<br />
char a;<br />
scanf("%d",&amp;n);<br />
scanf("%c",&amp;a);<br />
printf("%c\n",a);<br />
return 0;<br />
}</span></p>
<p>我们希望先读入一个整数n，然后再读入一个字符a，最后输出字符a。但是经过测试我们发现上面这段代码是无法实现我们的要求的，它只会输出一个空行，这是为什么呢？</p>
<p>我们一步一步分析，当我们输入数字n以后，会按一个回车确认输入。我们知道换行符也是字符(\n)，所以这个换行符也同样进入了等待读入字符的a，因此我们输出的a就是一个换行符。。。</p>
<p>那么怎么解决呢？很简单，只要我们使用getchar()函数忽略这个换行符就可以了，最后的代码如下：</p>
<p><span style="color: #0000ff;">#include &lt;stdio.h&gt;<br />
int main(){<br />
int n;<br />
char a;<br />
scanf("%d",&amp;n);<br />
<span style="color: #ff0000;">getchar();</span><br />
scanf("%c",&amp;a);<br />
printf("%c\n",a);<br />
return 0;<br />
}</span></p>
<p>今天做题的时候不止一次遇到这个问题，特地写出来。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/c-char-getchar.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>感怀:又是一年NOIP之时</title>
		<link>http://www.slyar.com/blog/2008-noip.html</link>
		<comments>http://www.slyar.com/blog/2008-noip.html#comments</comments>
		<pubDate>Sat, 15 Nov 2008 05:17:00 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[心情感悟]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=449</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
11月15日，又到了一年NOIP复赛之时。两年前的今天，我通宵未眠。。。
我不后悔因为参加NOIP而丢掉的东西，不管输赢，我曾经都是OIer中的一员，我为此而努力过，这就够了。
----尽吾志也，而不能至者，可以无悔矣，其孰能讥之乎？此余之所得也！
那段时间真的是值得我一生怀念的，因为之前我从来没有如此专注和认真地做一件事情，虽然结果是失败的。。。
2年后的今天，我已经坐在大学的寝室里以一个旁观者和过来人的心态看所有的OIer，看着他们为了自己的理想而奋斗，加油！
PS.刚才翻以前的东西，翻出了2张截图，是我当时编程时候的电脑。可以看到配置很低，只是奔腾233，而且硬盘只有3GB哈~为了装这个XP我可以费了不少功夫的，精简了N多东西，最后进程只有17个，是不是很爽~~虽然配置低，不过它的性能却很好，从开机启动到桌面也就1分钟而已，我认为很快了~当然了，这台电脑除了编程是啥也干不了的，嘎嘎~


]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>11月15日，又到了一年NOIP复赛之时。两年前的今天，我通宵未眠。。。</p>
<p>我不后悔因为参加NOIP而丢掉的东西，不管输赢，我曾经都是OIer中的一员，我为此而努力过，这就够了。</p>
<p style="text-align: right;"><span style="color: #ff0000;">----尽吾志也，而不能至者，可以无悔矣，其孰能讥之乎？此余之所得也！</span></p>
<p>那段时间真的是值得我一生怀念的，因为之前我从来没有如此专注和认真地做一件事情，虽然结果是失败的。。。</p>
<p>2年后的今天，我已经坐在大学的寝室里以一个旁观者和过来人的心态看所有的OIer，看着他们为了自己的理想而奋斗，加油！</p>
<p>PS.刚才翻以前的东西，翻出了2张截图，是我当时编程时候的电脑。可以看到配置很低，只是奔腾233，而且硬盘只有3GB哈~为了装这个XP我可以费了不少功夫的，精简了N多东西，最后进程只有17个，是不是很爽~~虽然配置低，不过它的性能却很好，从开机启动到桌面也就1分钟而已，我认为很快了~当然了，这台电脑除了编程是啥也干不了的，嘎嘎~</p>
<p><a href="http://www.slyar.com/blog/wp-content/uploads/2008/11/p2cpu.jpg"><img class="alignnone size-full wp-image-450" title="NOIP时候的电脑配置" src="http://www.slyar.com/blog/wp-content/uploads/2008/11/p2cpu.jpg" alt="" width="419" height="490" /></a></p>
<p><a href="http://www.slyar.com/blog/wp-content/uploads/2008/11/p2process.gif"><img class="alignnone size-full wp-image-451" title="进程数目" src="http://www.slyar.com/blog/wp-content/uploads/2008/11/p2process.gif" alt="" width="428" height="469" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/2008-noip.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>今天在淘宝上买了一个耳机</title>
		<link>http://www.slyar.com/blog/taobao-earphones-sennheiser.html</link>
		<comments>http://www.slyar.com/blog/taobao-earphones-sennheiser.html#comments</comments>
		<pubDate>Fri, 14 Nov 2008 15:49:47 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[大学生活]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=448</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
学校通知期末英语考试要用耳机，没有的赶紧买，而我就是那个没有的。。。
那种头戴式的大耳机我很不喜欢，所以我还是想买普通的那种小耳机，至于品牌没选的，森海塞尔。
中午吃完饭回到宿舍就开始在"淘宝"上淘宝，价格小于50，包邮费，一个大搜索就出来N多。对比了一下，最终我买了森海塞尔MX400RC耳机，看起来还不错，等货到了听听效果~
今天从箱子里拿出了冬天用的被子，凉席也该进仓库了，这种温度我很喜欢，因为身上几乎不出汗，可以少洗两件衣服。。。囧
本来说这个星期不A题的，可是看见别人在A题，我还是忍不住又做了几道。。。最后没办法把原来做过的题拿出来优化了重新提交。。。大囧
已经68题了，说好期末之前A到80就停手，我得留着点。。。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>学校通知期末英语考试要用耳机，没有的赶紧买，而我就是那个没有的。。。</p>
<p>那种头戴式的大耳机我很不喜欢，所以我还是想买普通的那种小耳机，至于品牌没选的，森海塞尔。</p>
<p>中午吃完饭回到宿舍就开始在"淘宝"上淘宝，价格小于50，包邮费，一个大搜索就出来N多。对比了一下，最终我买了森海塞尔MX400RC耳机，看起来还不错，等货到了听听效果~</p>
<p>今天从箱子里拿出了冬天用的被子，凉席也该进仓库了，这种温度我很喜欢，因为身上几乎不出汗，可以少洗两件衣服。。。囧</p>
<p>本来说这个星期不A题的，可是看见别人在A题，我还是忍不住又做了几道。。。最后没办法把原来做过的题拿出来优化了重新提交。。。大囧</p>
<p>已经68题了，说好期末之前A到80就停手，我得留着点。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/taobao-earphones-sennheiser.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP爆绝对路径的另类方法</title>
		<link>http://www.slyar.com/blog/php-route-slowly.html</link>
		<comments>http://www.slyar.com/blog/php-route-slowly.html#comments</comments>
		<pubDate>Thu, 13 Nov 2008 15:58:08 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[网络相关]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=447</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
今天有人留言问我关于php爆绝对路径的事，这其实是个很古老的问题，网上也有很多解法。除了利用漏洞爆绝对路径外，我们最常见的方法就是利用php的最大执行时间来爆出绝对路径。
自己手工设置过php的人都知道，在php.ini里有一条语句"max_execution_time"，这个就是php的最大执行时间。如果某个php页面在这个时间内没有执行完毕，就会报错，而php报错的话一般都会将绝对路径爆出来。php之所以有这样的设置是为了减小服务器的负担，但同时也给了黑客可乘之机。
问我的人他知道这个原理，所以他使用了DOS方式，打算使目标网站的速度减慢，从而爆出路径。但在操作的过程中发现目标网站的防DOS系统做得很好，因此他不能成功获取绝对路径，那么怎么办呢？
解决方法其实也很简单，既然我们不能减慢目标网站的速度，那我们就想办法减慢自己的速度，这样达到的效果是一样的。那么怎么减慢我们自己的速度呢？也很简单，只要我们找一个速度极慢的代理，挂上以后再上目标网站，就有可能将绝对路径爆出来。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>今天有人留言问我关于php爆绝对路径的事，这其实是个很古老的问题，网上也有很多解法。除了利用漏洞爆绝对路径外，我们最常见的方法就是利用php的最大执行时间来爆出绝对路径。</p>
<p>自己手工设置过php的人都知道，在php.ini里有一条语句"max_execution_time"，这个就是php的最大执行时间。如果某个php页面在这个时间内没有执行完毕，就会报错，而php报错的话一般都会将绝对路径爆出来。php之所以有这样的设置是为了减小服务器的负担，但同时也给了黑客可乘之机。</p>
<p>问我的人他知道这个原理，所以他使用了DOS方式，打算使目标网站的速度减慢，从而爆出路径。但在操作的过程中发现目标网站的防DOS系统做得很好，因此他不能成功获取绝对路径，那么怎么办呢？</p>
<p>解决方法其实也很简单，<span style="color: #ff0000;">既然我们不能减慢目标网站的速度，那我们就想办法减慢自己的速度</span>，这样达到的效果是一样的。那么怎么减慢我们自己的速度呢？也很简单，只要我们找一个速度极慢的代理，挂上以后再上目标网站，就有可能将绝对路径爆出来。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/php-route-slowly.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>二道数学题阐释递归思想</title>
		<link>http://www.slyar.com/blog/recursion-math-questions.html</link>
		<comments>http://www.slyar.com/blog/recursion-math-questions.html#comments</comments>
		<pubDate>Wed, 12 Nov 2008 15:55:05 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[编程相关]]></category>

		<category><![CDATA[C语言]]></category>

		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=446</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
有同学问什么是递归，我懒得说，拿两道数学题来阐释好了。。。
1、两个人从1开始，轮流报数，每个人都只能报接下来的一个数或两个数。比如第一个人可以报1，也可以报1、2；如果第一个人报1、2，第二个人就可以报3或者3、4；然后第一个人又报......这样报下去，最先报到30的人获胜，求必胜策略。
解答：最先报到30的人获胜，那么先报到27的人就一定可以获胜，同理先报到24的人就一定能获胜……递归下去。21，18，15……，最终得到的结论就是先报到3的人必胜。也就是说，后报者必胜。不管先报者报多少，后报者始终能报到3的倍数，必胜。
如果先报到30的人输，同理，先报到29的人就赢了，然后同样递归，26，23，20……
2、有10枚硬币，每人轮流取硬币，可以拿一枚、两枚或四枚，取到最后一枚硬币者胜。求必胜策略。
利用递归思想解答：
硬币总数是一枚，先取者赢；
硬币总数是两枚，先取者赢；
硬币总数是三枚，先取者输；
硬币总数是四枚，先取者赢；
硬币总数是五枚，先取者赢（自己取两枚，对方面临三枚的情形，必输）；
硬币总数是六枚，先取者输（不管取多少，对方面临的情形都是必胜的）；
硬币总数是七枚，先取者赢（自己取一枚，对方面临六枚的情形，必输）；
硬币总数是八枚，先取者赢（自己取两枚，对方面临六枚的情形，必输）；
硬币总数是九枚，先取者赢（不管取多少，对方面临的情形都是必胜的）；
硬币总数是十枚，先取者赢（自己取一枚，对方面临九枚的情形，必输）。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>有同学问什么是递归，我懒得说，拿两道数学题来阐释好了。。。</p>
<p><span style="color: #ff0000;">1、两个人从1开始，轮流报数，每个人都只能报接下来的一个数或两个数。比如第一个人可以报1，也可以报1、2；如果第一个人报1、2，第二个人就可以报3或者3、4；然后第一个人又报......这样报下去，最先报到30的人获胜，求必胜策略。</span></p>
<p><span style="color: #0000ff;">解答：最先报到30的人获胜，那么先报到27的人就一定可以获胜，同理先报到24的人就一定能获胜……递归下去。21，18，15……，最终得到的结论就是先报到3的人必胜。也就是说，后报者必胜。不管先报者报多少，后报者始终能报到3的倍数，必胜。</span></p>
<p><span style="color: #0000ff;">如果先报到30的人输，同理，先报到29的人就赢了，然后同样递归，26，23，20……</span></p>
<p><span style="color: #ff0000;">2、有10枚硬币，每人轮流取硬币，可以拿一枚、两枚或四枚，取到最后一枚硬币者胜。求必胜策略。</span></p>
<p><span style="color: #0000ff;">利用递归思想解答：</span></p>
<p><span style="color: #0000ff;">硬币总数是一枚，先取者赢；<br />
硬币总数是两枚，先取者赢；<br />
硬币总数是三枚，先取者输；<br />
硬币总数是四枚，先取者赢；<br />
硬币总数是五枚，先取者赢（自己取两枚，对方面临三枚的情形，必输）；<br />
硬币总数是六枚，先取者输（不管取多少，对方面临的情形都是必胜的）；<br />
硬币总数是七枚，先取者赢（自己取一枚，对方面临六枚的情形，必输）；<br />
硬币总数是八枚，先取者赢（自己取两枚，对方面临六枚的情形，必输）；<br />
硬币总数是九枚，先取者赢（不管取多少，对方面临的情形都是必胜的）；<br />
硬币总数是十枚，先取者赢（自己取一枚，对方面临九枚的情形，必输）。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/recursion-math-questions.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>忙碌的一天，早出晚归</title>
		<link>http://www.slyar.com/blog/busy-day-1111.html</link>
		<comments>http://www.slyar.com/blog/busy-day-1111.html#comments</comments>
		<pubDate>Tue, 11 Nov 2008 15:11:12 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[大学生活]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=445</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
今天是11月11日，传说中的光棍节，呵呵，笑笑而已~
从早晨出去上课到晚上快断网，我都一直在外面，宿舍也没回，当然也就没开电脑，没上网了。
上午的C语言实验课是用WinTC画图，没什么意思，我随便搞了几个循环加变色画圆就交了。。。
中午本来应该是网络部开例会的，但是今天突然通知主席要开紧急会议，所以一下课我们就马不停蹄地奔向远在粤华的校会办公室，等啊等啊等啊。。。主席来了。。。开啊开啊开啊。。。会议结束了。。。闪啊闪啊闪啊。。。上课迟到了。。。
呵呵，四个部门将近50个人开到1:40才散会，当然了，几乎所有的人中午都没吃饭，然后我又一路狂奔到丽泽楼上语文。。。今天语文考试，我晕。
语文上完继续狂奔到综合楼上英语，今天居然被叫起来回答问题，不过还好我会，哈哈。
上完英语就5:10了，去食堂5分钟消灭了一顿晚餐，鼓捣了一些事情就又向励耘楼冲去，听我在大学的第一次"形势与政策"课。。。
等到了励耘楼的800人大教室，我才知道大学的"占座"是何等的壮观，君不见一排座位上面那些各式各样的书：英语书、语文书、程序设计、法律、金融、会计。。。都在向我们传递一个信息"小样儿，你新来的吧，这有人了"。。。
跟同学在教室里漫无目标地寻找安身之所，终于让我们在放着二本"Windows CE 系统"的座位旁边找到了空位。。。
今天形势与政策讲的是奥巴马。。。猜见也是。。。当然了，几乎是没有什么人听的，大家不是在看书，就是在聊天，无所事事的就趴下睡觉，还不就是为了那个破章。。。
上完形势与政策还没完，跑去乐育上心理学。。。
上完心理学总该回宿舍了吧？不！吃宵夜去。。。
吃完宵夜再不回宿舍的就是神经病了。。。
不过今天貌似神经病还真不少，大晚上的在外面鬼哭狼嚎，吵得我连日志都写不下去。。。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>今天是11月11日，传说中的光棍节，呵呵，笑笑而已~</p>
<p>从早晨出去上课到晚上快断网，我都一直在外面，宿舍也没回，当然也就没开电脑，没上网了。</p>
<p>上午的C语言实验课是用WinTC画图，没什么意思，我随便搞了几个循环加变色画圆就交了。。。</p>
<p>中午本来应该是网络部开例会的，但是今天突然通知主席要开紧急会议，所以一下课我们就马不停蹄地奔向远在粤华的校会办公室，等啊等啊等啊。。。主席来了。。。开啊开啊开啊。。。会议结束了。。。闪啊闪啊闪啊。。。上课迟到了。。。</p>
<p>呵呵，四个部门将近50个人开到1:40才散会，当然了，几乎所有的人中午都没吃饭，然后我又一路狂奔到丽泽楼上语文。。。今天语文考试，我晕。</p>
<p>语文上完继续狂奔到综合楼上英语，今天居然被叫起来回答问题，不过还好我会，哈哈。</p>
<p>上完英语就5:10了，去食堂5分钟消灭了一顿晚餐，鼓捣了一些事情就又向励耘楼冲去，听我在大学的第一次"形势与政策"课。。。</p>
<p>等到了励耘楼的800人大教室，我才知道大学的"占座"是何等的壮观，君不见一排座位上面那些各式各样的书：英语书、语文书、程序设计、法律、金融、会计。。。都在向我们传递一个信息"小样儿，你新来的吧，这有人了"。。。</p>
<p>跟同学在教室里漫无目标地寻找安身之所，终于让我们在放着二本"Windows CE 系统"的座位旁边找到了空位。。。</p>
<p>今天形势与政策讲的是奥巴马。。。猜见也是。。。当然了，几乎是没有什么人听的，大家不是在看书，就是在聊天，无所事事的就趴下睡觉，还不就是为了那个破章。。。</p>
<p>上完形势与政策还没完，跑去乐育上心理学。。。</p>
<p>上完心理学总该回宿舍了吧？不！吃宵夜去。。。</p>
<p>吃完宵夜再不回宿舍的就是神经病了。。。</p>
<p>不过今天貌似神经病还真不少，大晚上的在外面鬼哭狼嚎，吵得我连日志都写不下去。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/busy-day-1111.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>MySQL之命令行导入大文件</title>
		<link>http://www.slyar.com/blog/mysql-import-largefile.html</link>
		<comments>http://www.slyar.com/blog/mysql-import-largefile.html#comments</comments>
		<pubDate>Mon, 10 Nov 2008 13:04:07 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[数据库相关]]></category>

		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=443</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
随着数据库越来越大，转移起来也出现了问题。用phpmyadmin导入大数据库的时候，服务商会限制数据库的大小，有时候即使服务商没限制，导入的时候也超时......
今天就遇到了这个问题，不过还好可以使用shell......
mysql -uUsername -pPassword DatabaseName &#60;备份文件的路径\slyar.sql
使用上面这条命令就可以无视数据库大小限制导入数据库备份文件啦，当然有导入就有导出，只要把"&#60;"改成"&#62;"就可以导出了。
有时候由于数据库字符集的问题会出现ERROR at line : Unknown command '\''.这时只要在最后加上以下命令就可以解决了。
--default-character-set=utf8
即
mysql -u用户名-p密码 数据库名 &#60; SQL文件路径 --default-character-set=utf8
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>随着数据库越来越大，转移起来也出现了问题。用phpmyadmin导入大数据库的时候，服务商会限制数据库的大小，有时候即使服务商没限制，导入的时候也超时......</p>
<p>今天就遇到了这个问题，不过还好可以使用shell......</p>
<p><span style="color: #0000ff;">mysql -uUsername -pPassword DatabaseName &lt;备份文件的路径\slyar.sql</span></p>
<p>使用上面这条命令就可以无视数据库大小限制导入数据库备份文件啦，当然有导入就有导出，只要把"&lt;"改成"&gt;"就可以导出了。</p>
<p>有时候由于数据库字符集的问题会出现ERROR at line : Unknown command '\''.这时只要在最后加上以下命令就可以解决了。</p>
<p>--default-character-set=utf8</p>
<p>即</p>
<p><span style="color: #0000ff;">mysql -u用户名-p密码 数据库名 &lt; SQL文件路径 --default-character-set=utf8</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/mysql-import-largefile.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>简单说下XP/Vista的粘滞键漏洞</title>
		<link>http://www.slyar.com/blog/stickykeys-leak.html</link>
		<comments>http://www.slyar.com/blog/stickykeys-leak.html#comments</comments>
		<pubDate>Sun, 09 Nov 2008 04:04:27 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[单机相关]]></category>

		<category><![CDATA[安全]]></category>

		<category><![CDATA[系统]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=442</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
大学里面有同学问，我直接写出来凑文章数好了。某几个人勿要鄙视我，看看你们写那么高深的东西有几个人去看......我这叫普及安全知识，懂不懂？
好了，回归正题，既然是粘滞键漏洞，首先我们要知道粘滞键是什么。
"粘滞键"是为同时按下两个或更多个键有困难的人设计的。当快捷方式要求使用诸如 CTRL 键 + S 键等的组合键时，“粘滞键”允许用户按下修改键(CTRL 键、ALT 键或 SHIFT 键)或 Windows 徽标键之后，它能保持这些键的活动状态直到按下其他键。
那么怎么调用出粘滞键呢？很简单，按五次shift键，之后就会出现粘滞键的应用程序了。
重点在这。既然按五次shift键会出现粘滞键程序，那么就一定有一个exe跟他关联，而这个exe是可以通过按五次shift键来运行的。如果我们把这个被激活的程序替换成cmd.exe，那么只要我们按五次shift键，就会得到一个cmdshell了。
del /q %systemroot%\system32\dllcache\sethc.exe
del /q %systemroot%\system32\sethc.exe
copy %systemroot%\system32\cmd.exe %systemroot%\system32\dllcache\sethc.exe
copy %systemroot%\system32\cmd.exe %systemroot%\system32\sethc.exe
恩，差不多就是这些命令，把sethc.exe替换成我们的cmd.exe，运行之后按五次shift看看，是不是出现了shell？
这个应用应该是很广泛的，比如我们在SQL里把粘滞键程序换掉，然后直接3389登陆上去，再之后按五次shift，最后加用户，登入......恩，就这样吧，简单介绍，其他应用自己琢磨去。
最后说一下如何禁用粘滞键功能。开始--设置--控制面板--辅助功能选项--(粘滞键)设置--把"使用快捷键"前面的勾去掉，完成。现在按五次shift就无法调出粘滞键程序了。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>大学里面有同学问，我直接写出来凑文章数好了。某几个人勿要鄙视我，看看你们写那么高深的东西有几个人去看......我这叫普及安全知识，懂不懂？</p>
<p>好了，回归正题，既然是粘滞键漏洞，首先我们要知道粘滞键是什么。</p>
<blockquote><p>"粘滞键"是为同时按下两个或更多个键有困难的人设计的。当快捷方式要求使用诸如 CTRL 键 + S 键等的组合键时，“粘滞键”允许用户按下修改键(CTRL 键、ALT 键或 SHIFT 键)或 Windows 徽标键之后，它能保持这些键的活动状态直到按下其他键。</p></blockquote>
<p>那么怎么调用出粘滞键呢？很简单，按五次shift键，之后就会出现粘滞键的应用程序了。</p>
<p>重点在这。<span style="color: #ff0000;">既然按五次shift键会出现粘滞键程序，那么就一定有一个exe跟他关联，而这个exe是可以通过按五次shift键来运行的。如果我们把这个被激活的程序替换成cmd.exe，那么只要我们按五次shift键，就会得到一个cmdshell了。</span></p>
<p><span style="color: #0000ff;">del /q %systemroot%\system32\dllcache\sethc.exe<br />
del /q %systemroot%\system32\sethc.exe<br />
copy %systemroot%\system32\cmd.exe %systemroot%\system32\dllcache\sethc.exe<br />
copy %systemroot%\system32\cmd.exe %systemroot%\system32\sethc.exe</span></p>
<p>恩，差不多就是这些命令，把sethc.exe替换成我们的cmd.exe，运行之后按五次shift看看，是不是出现了shell？</p>
<p>这个应用应该是很广泛的，比如我们在SQL里把粘滞键程序换掉，然后直接3389登陆上去，再之后按五次shift，最后加用户，登入......恩，就这样吧，简单介绍，其他应用自己琢磨去。</p>
<p>最后说一下如何禁用粘滞键功能。<span style="color: #ff0000;">开始--设置--控制面板--辅助功能选项--(粘滞键)设置--把"使用快捷键"前面的勾去掉，完成</span>。现在按五次shift就无法调出粘滞键程序了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/stickykeys-leak.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>C语言中 scanf()的返回值是成功读入参数的个数</title>
		<link>http://www.slyar.com/blog/scanf-return-value.html</link>
		<comments>http://www.slyar.com/blog/scanf-return-value.html#comments</comments>
		<pubDate>Sat, 08 Nov 2008 15:01:12 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[编程相关]]></category>

		<category><![CDATA[C语言]]></category>

		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=441</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
忘了是谁前天问的了，本来是打算昨天写的，不过昨天有讲座写，于是乎就改今天写了。
他问我为什么 while(scanf("%d",&#38;a)!=0) 这样的语句不能中断程序。OK，我们知道while()的参数是一个值，而这个值是scanf()函数返回的，所以我们到MSDN里面看一下相关的说明：
Both scanf and wscanf return the number of fields successfully converted and assigned; the return value does not include fields that were read but not assigned. A return value of 0 indicates that no fields were assigned. The return value is EOF for an error or if the end-of-file [...]]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>忘了是谁前天问的了，本来是打算昨天写的，不过昨天有讲座写，于是乎就改今天写了。</p>
<p>他问我为什么 while(scanf("%d",&amp;a)!=0) 这样的语句不能中断程序。OK，我们知道while()的参数是一个值，而这个值是scanf()函数返回的，所以我们到MSDN里面看一下相关的说明：</p>
<p>Both scanf and wscanf <span style="color: #ff0000;">return the number of fields successfully converted and assigned</span>; the return value does not include fields that were read but not assigned. A return value of 0 indicates that no fields were assigned. The return value is EOF for an error or if the end-of-file character or the end-of-string character is encountered in the first attempt to read a character.</p>
<p>通过这段话，我们可以知道scanf()的返回值并不是参数的值，而是成功读入参数的个数，举例说明：</p>
<p><span style="color: #0000ff;">scanf("%d%d",&amp;a, &amp;b);</span></p>
<p><span style="color: #ff0000;">如果a和b都被成功读入，scanf()的返回值是2</span></p>
<p><span style="color: #ff0000;">如果只有a被成功读入或者只有b被成功读入，scanf()的返回值为1</span></p>
<p><span style="color: #ff0000;">如果a和b都未被成功读入，scanf()的返回值为0</span></p>
<p><span style="color: #ff0000;">如果遇到错误或遇到End Of File，scanf()的返回值为EOF。</span></p>
<p>所以呢，文章开头提到的那句代码是不能正常中断程序的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/scanf-return-value.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>听了一个网络安全讲座</title>
		<link>http://www.slyar.com/blog/network-security-course-1.html</link>
		<comments>http://www.slyar.com/blog/network-security-course-1.html#comments</comments>
		<pubDate>Fri, 07 Nov 2008 14:22:10 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[大学生活]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=440</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
今天周五，没课。上午去听一个图形学的专业方向介绍，没什么感觉，因为我对图形图像一向不敏感......只是惊讶地发现班主任居然还认识我......
几天前就知道了今天晚上有一个网络安全讲座，提到了网络安全，咱不能不去听一听，可是听完以后我才觉得这讲座真的不是我该听的......倒不是说老师讲的不好，而是老师讲的真的是太基础了，而且也太古老了，基本上都是04-07年的技术。像什么windows弱口令、MSSQL的Sa空密码、啊D注入工具使用、radmin使用......现在基本上都不能用了。
而且不知道是不是老师觉得我们真的是"菜鸟"而忽略了，反正有二个地方我认为他说错了：
1、"Windows XP的administrator用户空密码会导致黑客入侵"。其实不是这样的，XP默认的设置是不允许administrator用户空密码远程连接的。
2、"Windows XP不能多人同时3389登陆"。默认设置是只允许单一用户登陆XP，但是黑客可以通过修改注册表使得XP SP2以上支持多用户终端登录，我博客里也有相应的文章介绍方法。
总体来说老师讲的还是不错的，只是希望以后的讲座可以讲一些高级的东西......
PS.据说组织者要求老师讲一些实战的东西，结果老师就开始一个一个讲工具的使用......殊不知网络安全最主要的不是工具，而是网络基础和网络入侵思想么......这样一个一个讲工具最后出来的还不都是一堆脚本小子......
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>今天周五，没课。上午去听一个图形学的专业方向介绍，没什么感觉，因为我对图形图像一向不敏感......只是惊讶地发现班主任居然还认识我......</p>
<p>几天前就知道了今天晚上有一个网络安全讲座，提到了网络安全，咱不能不去听一听，可是听完以后我才觉得这讲座真的不是我该听的......倒不是说老师讲的不好，而是老师讲的真的是太基础了，而且也太古老了，基本上都是04-07年的技术。像什么windows弱口令、MSSQL的Sa空密码、啊D注入工具使用、radmin使用......现在基本上都不能用了。</p>
<p>而且不知道是不是老师觉得我们真的是"菜鸟"而忽略了，反正有二个地方我认为他说错了：</p>
<p>1、"Windows XP的administrator用户空密码会导致黑客入侵"。其实不是这样的，XP默认的设置是不允许administrator用户空密码远程连接的。</p>
<p>2、"Windows XP不能多人同时3389登陆"。默认设置是只允许单一用户登陆XP，但是黑客可以通过修改注册表使得XP SP2以上支持多用户终端登录，我博客里也有相应的文章介绍方法。</p>
<p>总体来说老师讲的还是不错的，只是希望以后的讲座可以讲一些高级的东西......</p>
<p><span style="color: #ff0000;">PS.</span>据说组织者要求老师讲一些实战的东西，结果老师就开始一个一个讲工具的使用......殊不知网络安全最主要的不是工具，而是网络基础和网络入侵思想么......这样一个一个讲工具最后出来的还不都是一堆脚本小子......</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/network-security-course-1.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>天气开始转凉了</title>
		<link>http://www.slyar.com/blog/bnuep-getting-cold-2008.html</link>
		<comments>http://www.slyar.com/blog/bnuep-getting-cold-2008.html#comments</comments>
		<pubDate>Thu, 06 Nov 2008 14:23:39 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[大学生活]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=439</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
这两天男生们都不约而同地换上了长裤，因为天气开始转凉了。令人惊讶的是很多女生却依然是七分裤、裙子出门，至于原因我是懒得去想的。。。
天气转凉，外出是舒服了，可是学校却把中央空调关了，搞得教室里跟蒸笼似的。。。那种教室自带立柜空调的还好，没有的就比较惨了。当然了，没有立柜空调的教室毕竟是少数，嘎嘎。
天气转凉带来的消极影响就是洗过的衣服越来越难干了，这不我前天洗的衣服早晨从外面拿进来还没干，搞得我不得不用吹风机把衣服吹干。。。囧
最近活动和作业都比较多，搞得人怪紧张的。抓紧时间A学校OJ的题，争取寒假之前A到80题~~
PS.突然发现live现在的模板好难看。。。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>这两天男生们都不约而同地换上了长裤，因为天气开始转凉了。令人惊讶的是很多女生却依然是七分裤、裙子出门，至于原因我是懒得去想的。。。</p>
<p>天气转凉，外出是舒服了，可是学校却把中央空调关了，搞得教室里跟蒸笼似的。。。那种教室自带立柜空调的还好，没有的就比较惨了。当然了，没有立柜空调的教室毕竟是少数，嘎嘎。</p>
<p>天气转凉带来的消极影响就是洗过的衣服越来越难干了，这不我前天洗的衣服早晨从外面拿进来还没干，搞得我不得不用吹风机把衣服吹干。。。囧</p>
<p>最近活动和作业都比较多，搞得人怪紧张的。抓紧时间A学校OJ的题，争取寒假之前A到80题~~</p>
<p>PS.突然发现live现在的模板好难看。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/bnuep-getting-cold-2008.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>C语言 多组数据for循环的一个小技巧</title>
		<link>http://www.slyar.com/blog/c-for-circles-technique.html</link>
		<comments>http://www.slyar.com/blog/c-for-circles-technique.html#comments</comments>
		<pubDate>Wed, 05 Nov 2008 14:38:16 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[编程相关]]></category>

		<category><![CDATA[C语言]]></category>

		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=438</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
在OJ做题的时候，我们经常会看到题目说：输入有多组数据。输入的第一行输入一整数N，表示有多少组数据。
这时我们就会写出如下代码来实现这句话：
int i,n;
scanf("%d",&#38;n);
for (i=1;i&#60;=n;i++){
}
这样写没错，但是有一种更好的方法：
int n;
scanf("%d",&#38;n);
for (;n&#62;0;n--){
}
或者(felix提醒)
int n;
scanf("%d",&#38;n);
while(n--){
}
看到了么？使用这个小技巧，就可以让我们节省一个变量。所以，当我们的循环变量不参与循环体的操作时，我们就可以用这个方法来使得程序更加小巧。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>在OJ做题的时候，我们经常会看到题目说：输入有多组数据。输入的第一行输入一整数N，表示有多少组数据。</p>
<p>这时我们就会写出如下代码来实现这句话：</p>
<p><span style="color: #0000ff;">int i,n;<br />
scanf("%d",&amp;n);<br />
for (i=1;i&lt;=n;i++){<br />
}</span></p>
<p>这样写没错，但是有一种更好的方法：</p>
<p><span style="color: #0000ff;">int n;<br />
scanf("%d",&amp;n);<br />
for (;n&gt;0;n--){<br />
}</span></p>
<p>或者(felix提醒)</p>
<p><span style="color: #0000ff;">int n;<br />
scanf("%d",&amp;n);<br />
while(n--){<br />
}</span></p>
<p>看到了么？使用这个小技巧，就可以让我们节省一个变量。所以，当我们的<span style="color: #ff0000;">循环变量不参与循环体的操作</span>时，我们就可以用这个方法来使得程序更加小巧。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/c-for-circles-technique.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>李开复：算法的力量(转载)</title>
		<link>http://www.slyar.com/blog/likaifu-algorithm-power.html</link>
		<comments>http://www.slyar.com/blog/likaifu-algorithm-power.html#comments</comments>
		<pubDate>Tue, 04 Nov 2008 15:59:35 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[资源收集]]></category>

		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=437</guid>
		<description><![CDATA[算法是计算机科学领域最重要的基石之一，但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门，就产生了一种误解，认为学计算机就是学各种编程语言，或者认为，学习最新的语言、技术、标准就是最好的铺路方法。其实，大家被这些公司误导了。编程语言虽然该学，但是学习计算机算法和理论更重要，因为计算机语言和开发平台日新月异，但万变不离其宗的是那些算法和理论，例如数据结构、算法、编译原理、计算机体系结构、关系型数据库原理等等。在“开复学生网”上，有位同学生动地把这些基础课程比拟为“内功”，把新的语言、技术、标准比拟为“外功”。整天赶时髦的人最后只懂得招式，没有功力，是不可能成为高手的。
算法与我
当我在1980年转入计算机科学系时，还没有多少人的专业方向是计算机科学。有许多其他系的人嘲笑我们说：“知道为什么只有你们系要加一个‘科学’，而没有‘物理科学系’或‘化学科学系’吗？因为人家是真的科学,不需要画蛇添足，而你们自己心虚，生怕不‘科学’，才这样欲盖弥彰。” 其实，这点他们彻底弄错了。真正学懂计算机的人（不只是“编程匠”）都对数学有相当的造诣，既能用科学家的严谨思维来求证，也能用工程师的务实手段来解决问题——而这种思维和手段的最佳演绎就是“算法”。
记得我读博时写的Othello对弈软件获得了世界冠军。当时，得第二名的人认为我是靠侥幸才打赢他，不服气地问我的程序平均每秒能搜索多少步棋，当他发现我的软件在搜索效率上比他快60多倍时，才彻底服输。为什么在同样的机器上，我可以多做60倍的工作呢？这是因为我用了一个最新的算法，能够把一个指数函数转换成四个近似的表，只要用常数时间就可得到近似的答案。在这个例子中，是否用对算法才是能否赢得世界冠军的关键。
还记得1988年贝尔实验室副总裁亲自来访问我的学校，目的就是为了想了解为什么他们的语音识别系统比我开发的慢几十倍，而且，在扩大至大词汇系统后，速度差异更有几百倍之多。他们虽然买了几台超级计算机，勉强让系统跑了起来，但这么贵的计算资源让他们的产品部门很反感，因为“昂贵” 的技术是没有应用前景的。在与他们探讨的过程中，我惊讶地发现一个O(n*m)的动态规划（dynamic programming）居然被他们做成了 O(n*n*m)。更惊讶的是，他们还为此发表了不少文章，甚至为自己的算法起了一个很特别的名字，并将算法提名到一个科学会议里，希望能得到大奖。当时，贝尔实验室的研究员当然绝顶聪明，但他们全都是学数学、物理或电机出身，从未学过计算机科学或算法，才犯了这么基本的错误。我想那些人以后再也不会嘲笑学计算机科学的人了吧!
网络时代的算法
有人也许会说：“今天计算机这么快，算法还重要吗?”其实永远不会有太快的计算机，因为我们总会想出新的应用。虽然在摩尔定律的作用下，计算机的计算能力每年都在飞快增长，价格也在不断下降。可我们不要忘记，需要处理的信息量更是呈指数级的增长。现在每人每天都会创造出大量数据（照片，视频，语音，文本等等）。日益先进的记录和存储手段使我们每个人的信息量都在爆炸式的增长。互联网的信息流量和日志容量也在飞快增长。在科学研究方面，随着研究手段的进步，数据量更是达到了前所未有的程度。无论是三维图形、海量数据处理、机器学习、语音识别，都需要极大的计算量。在网络时代，越来越多的挑战需要靠卓越的算法来解决。
再举另一个网络时代的例子。在互联网和手机搜索上，如果要找附近的咖啡店，那么搜索引擎该怎么处理这个请求呢?
最简单的办法就是把整个城市的咖啡馆都找出来,然后计算出它们的所在位置与你之间的距离,再进行排序,然后返回最近的结果。但该如何计算距离呢？图论里有不少算法可以解决这个问题。
这么做也许是最直观的，但绝对不是最迅速的。如果一个城市只有为数不多的咖啡馆,那这么做应该没什么问题,反正计算量不大。但如果一个城市里有很多咖啡馆,又有很多用户都需要类似的搜索,那么服务器所承受的压力就大多了。在这种情况下,我们该怎样优化算法呢?
首先，我们可以把整个城市的咖啡馆做一次“预处理”。比如，把一个城市分成若干个“格子(grid)”,然后根据用户所在的位置把他放到某一个格子里，只对格子里的咖啡馆进行距离排序。
问题又来了，如果格子大小一样，那么绝大多数结果都可能出现在市中心的一个格子里，而郊区的格子里只有极少的结果。在这种情况下，我们应该把市中心多分出几个格子。更进一步，格子应该是一个“树结构”，最顶层是一个大格——整个城市，然后逐层下降，格子越来越小，这样有利于用户进行精确搜索——如果在最底层的格子里搜索结果不多，用户可以逐级上升，放大搜索范围。
上述算法对咖啡馆的例子很实用，但是它具有通用性吗？答案是否定的。把咖啡馆抽象一下，它是一个“点”，如果要搜索一个“面”该怎么办呢？比如，用户想去一个水库玩，而一个水库有好几个入口，那么哪一个离用户最近呢？这个时候，上述“树结构”就要改成“r-tree”,因为树中间的每一个节点都是一个范围，一个有边界的范围。
通过这个小例子，我们看到，应用程序的要求千变万化，很多时候需要把一个复杂的问题分解成若干简单的小问题，然后再选用合适的算法和数据结构。
并行算法：Google的核心优势
上面的例子在Google里就要算是小case了！每天Google的网站要处理十亿个以上的搜索，GMail要储存几千万用户的2G邮箱，Google Earth要让数十万用户同时在整个地球上遨游，并将合适的图片经过互联网提交给每个用户。如果没有好的算法，这些应用都无法成为现实。
在这些的应用中，哪怕是最基本的问题都会给传统的计算带来很大的挑战。例如，每天都有十亿以上的用户访问Google的网站，使用 Google的服务，也产生很多很多的日志（Log）。因为Log每分每秒都在飞速增加，我们必须有聪明的办法来进行处理。我曾经在面试中问过关于如何对 log进行一些分析处理的问题，有很多面试者的回答虽然在逻辑上正确，但在实际应用中是几乎不可行的。按照他们的算法，即便用上几万台机器，我们的处理速度都跟不上数据产生的速度。
那么Google是如何解决这些问题的呢？
首先，在网络时代，就算有最好的算法，也要能在并行计算的环境下执行。在Google的数据中心，我们使用的是超大的并行计算机。但传统的并行算法运行时，效率会在增加机器数量后迅速降低，也就是说，十台机器如果有五倍的效果，增加到一千台时也许就只有几十倍的效果。这种事倍功半的代价是没有哪家公司可以负担得起的。而且，在许多并行算法中，只要一个结点犯错误，所有计算都会前功尽弃。
那么Google是如何开发出既有效率又能容错的并行计算的呢？
Google最资深的计算机科学家Jeff Dean认识到， Google 所需的绝大部分数据处理都可以归结为一个简单的并行算法：Map and Reduce。 这个算法能够在很多种计算中达到相当高的效率，而且是可扩展的（也就是说，一千台机器就算不能达到一千倍的效果，至少也可以达到几百倍的效果）。 Map and Reduce的另外一大特色是它可以利用大批廉价的机器组成功能强大的server farm。最后，它的容错性能异常出色，就算一个 server farm里面的机器down掉一半，整个farm依然能够运行。正是因为这个天才的认识,才有了Map and Reduce算法。借助该算法，Google几乎能无限地增加计算量，与日新月异的互联网应用一同成长。
算法并不局限于计算机和网络
举一个计算机领域外的例子：在高能物理研究方面，很多实验每秒钟都产生几个TB的数据量。但因为处理能力和存储能力的不足，科学家不得不把绝大部分未经处理的数据丢弃掉。可大家要知道，新元素的信息很有可能就藏在我们来不及处理的数据里面。同样的，在其他任何领域里，算法都可以改变人类的生活。例如人类基因的研究，就可能因为算法而发明新的医疗方式。在国家安全领域，有效的算法可能避免下一个911的发生。在气象方面，算法可以更好地预测未来天灾的发生，以拯救生命。
所以，如果你把计算机的发展放到应用和数据飞速增长的大环境下，你一定会发现，算法的重要性不是在日益减小，而是在日益加强。
给程序员的七个建议
（1）练内功。不要只花功夫学习各种流行的编程语言和工具，以及某些公司招聘广告上要求的科目。要把数据结构、算法、数据库、操作系统原理、计算机体系结构、计算机网络，离散数学等基础课程学好。大家不妨试试高德纳所著The Art of Computer Programming里的题目，如果你能够解决其中的大部分题目，就说明你在算法方面有一定的功力了。
（2）多实战。通过编程的实战积累经验、巩固知识。很多中国大学毕业生缺乏编程和调试经验；学习C语言，考试过关就算学会了；课题项目中，只要程序能够编译，运行，并且输入输出满足要求就算了事。这些做法是不行的。写程序的时候，大家必须多想想如何把程序写得更加精炼、高效、高质量。建议大家争取在大学四年中积累编写十万行代码的经验。我们必须明白的是：好程序员是写出来的，不是学出来的。
（3）求实干。不要轻视任何实际工作，比如一些看似简单的编码或测试。要不懈追求对细节一丝不苟的实干作风与敬业精神。我发现不少程序员对于知识的掌握很肤浅，不求甚解，没有好奇心，不会刨根问底。比如，学会了C++，是否了解一个对象在编译后，在汇编代码中是如何被初始化的？这个对象的各个成员在内存中是如何存放的？当一个成员函数被调用时，编译器在汇编代码中加入了哪些额外的动作？虚函数的调用是如何实现的? 这些东西恐怕在编程语言或编译原理中都没有详细提到，只有通过踏实的实干才能真正掌握。
（4）重视数学学习。数学是思维的体操，数学无处不在。学计算机至少要学习离散数学、概率论、布尔代数、集合论和数理逻辑。这些知识并不难，但是对你未来的工作帮助会很大。 尤其当你对一些“数学密集型”的领域如视频、图像处理等有兴趣时，这些知识将成为你手中的利器。
（5）培养团队精神，学会与人合作。今天的软件工程早已经不是一个人可以单独操作的，而必须靠团队合作才能成功。不懂得合作的人是不能成大器的。大家要多去寻找可以与人一起做项目的机会。
（6）激励创新意识，培养好奇心，不要死记硬背。没有掌握某种算法技术的根本原理，就不会有应变和创新的能力。想成为一位好程序员（其实从事任何一个行业都是如此），重要的是要养成钻研，好奇，创新，动手，合作的优秀习惯，不满足于填鸭，不满足于考试交差，不满足于表象。这不是学几门课能够一蹴而就的。
（7）有策略地“打工”。在不影响学业的前提下，寻找真正有意义的暑期工作或兼职。去找一个重视技术的公司，在一个好的“老板”指导下完成真正会被用户使用的程序。不要急于去一个要你做“头”而独挡一面的地方，因为向别人学习才是你的目的。找工作也是一样，不要只看待遇和职衔，要挑一个你能够学习的环境，一个愿意培养员工的企业，一个重视你的专业的公司。最后，还要挑一个好老板。
希望大家都能把握机会，养成好的学习习惯，把算法学精学透；希望大家都能有一个美好的未来！
]]></description>
			<content:encoded><![CDATA[<p>算法是计算机科学领域最重要的基石之一，但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门，就产生了一种误解，认为学计算机就是学各种编程语言，或者认为，学习最新的语言、技术、标准就是最好的铺路方法。其实，大家被这些公司误导了。编程语言虽然该学，但是学习计算机算法和理论更重要，因为计算机语言和开发平台日新月异，但万变不离其宗的是那些算法和理论，例如数据结构、算法、编译原理、计算机体系结构、关系型数据库原理等等。在“开复学生网”上，有位同学生动地把这些基础课程比拟为“内功”，把新的语言、技术、标准比拟为“外功”。整天赶时髦的人最后只懂得招式，没有功力，是不可能成为高手的。</p>
<p><span id="more-437"></span><span style="color: #0000ff;">算法与我</span></p>
<p>当我在1980年转入计算机科学系时，还没有多少人的专业方向是计算机科学。有许多其他系的人嘲笑我们说：“知道为什么只有你们系要加一个‘科学’，而没有‘物理科学系’或‘化学科学系’吗？因为人家是真的科学,不需要画蛇添足，而你们自己心虚，生怕不‘科学’，才这样欲盖弥彰。” 其实，这点他们彻底弄错了。真正学懂计算机的人（不只是“编程匠”）都对数学有相当的造诣，既能用科学家的严谨思维来求证，也能用工程师的务实手段来解决问题——而这种思维和手段的最佳演绎就是“算法”。</p>
<p>记得我读博时写的Othello对弈软件获得了世界冠军。当时，得第二名的人认为我是靠侥幸才打赢他，不服气地问我的程序平均每秒能搜索多少步棋，当他发现我的软件在搜索效率上比他快60多倍时，才彻底服输。为什么在同样的机器上，我可以多做60倍的工作呢？这是因为我用了一个最新的算法，能够把一个指数函数转换成四个近似的表，只要用常数时间就可得到近似的答案。在这个例子中，是否用对算法才是能否赢得世界冠军的关键。</p>
<p>还记得1988年贝尔实验室副总裁亲自来访问我的学校，目的就是为了想了解为什么他们的语音识别系统比我开发的慢几十倍，而且，在扩大至大词汇系统后，速度差异更有几百倍之多。他们虽然买了几台超级计算机，勉强让系统跑了起来，但这么贵的计算资源让他们的产品部门很反感，因为“昂贵” 的技术是没有应用前景的。在与他们探讨的过程中，我惊讶地发现一个O(n*m)的动态规划（dynamic programming）居然被他们做成了 O(n*n*m)。更惊讶的是，他们还为此发表了不少文章，甚至为自己的算法起了一个很特别的名字，并将算法提名到一个科学会议里，希望能得到大奖。当时，贝尔实验室的研究员当然绝顶聪明，但他们全都是学数学、物理或电机出身，从未学过计算机科学或算法，才犯了这么基本的错误。我想那些人以后再也不会嘲笑学计算机科学的人了吧!</p>
<p><span style="color: #0000ff;">网络时代的算法</span></p>
<p>有人也许会说：“今天计算机这么快，算法还重要吗?”其实永远不会有太快的计算机，因为我们总会想出新的应用。虽然在摩尔定律的作用下，计算机的计算能力每年都在飞快增长，价格也在不断下降。可我们不要忘记，需要处理的信息量更是呈指数级的增长。现在每人每天都会创造出大量数据（照片，视频，语音，文本等等）。日益先进的记录和存储手段使我们每个人的信息量都在爆炸式的增长。互联网的信息流量和日志容量也在飞快增长。在科学研究方面，随着研究手段的进步，数据量更是达到了前所未有的程度。无论是三维图形、海量数据处理、机器学习、语音识别，都需要极大的计算量。在网络时代，越来越多的挑战需要靠卓越的算法来解决。</p>
<p>再举另一个网络时代的例子。在互联网和手机搜索上，如果要找附近的咖啡店，那么搜索引擎该怎么处理这个请求呢?</p>
<p>最简单的办法就是把整个城市的咖啡馆都找出来,然后计算出它们的所在位置与你之间的距离,再进行排序,然后返回最近的结果。但该如何计算距离呢？图论里有不少算法可以解决这个问题。</p>
<p>这么做也许是最直观的，但绝对不是最迅速的。如果一个城市只有为数不多的咖啡馆,那这么做应该没什么问题,反正计算量不大。但如果一个城市里有很多咖啡馆,又有很多用户都需要类似的搜索,那么服务器所承受的压力就大多了。在这种情况下,我们该怎样优化算法呢?</p>
<p>首先，我们可以把整个城市的咖啡馆做一次“预处理”。比如，把一个城市分成若干个“格子(grid)”,然后根据用户所在的位置把他放到某一个格子里，只对格子里的咖啡馆进行距离排序。</p>
<p>问题又来了，如果格子大小一样，那么绝大多数结果都可能出现在市中心的一个格子里，而郊区的格子里只有极少的结果。在这种情况下，我们应该把市中心多分出几个格子。更进一步，格子应该是一个“树结构”，最顶层是一个大格——整个城市，然后逐层下降，格子越来越小，这样有利于用户进行精确搜索——如果在最底层的格子里搜索结果不多，用户可以逐级上升，放大搜索范围。</p>
<p>上述算法对咖啡馆的例子很实用，但是它具有通用性吗？答案是否定的。把咖啡馆抽象一下，它是一个“点”，如果要搜索一个“面”该怎么办呢？比如，用户想去一个水库玩，而一个水库有好几个入口，那么哪一个离用户最近呢？这个时候，上述“树结构”就要改成“r-tree”,因为树中间的每一个节点都是一个范围，一个有边界的范围。</p>
<p>通过这个小例子，我们看到，应用程序的要求千变万化，很多时候需要把一个复杂的问题分解成若干简单的小问题，然后再选用合适的算法和数据结构。</p>
<p><span style="color: #0000ff;">并行算法：Google的核心优势</span></p>
<p>上面的例子在Google里就要算是小case了！每天Google的网站要处理十亿个以上的搜索，GMail要储存几千万用户的2G邮箱，Google Earth要让数十万用户同时在整个地球上遨游，并将合适的图片经过互联网提交给每个用户。如果没有好的算法，这些应用都无法成为现实。</p>
<p>在这些的应用中，哪怕是最基本的问题都会给传统的计算带来很大的挑战。例如，每天都有十亿以上的用户访问Google的网站，使用 Google的服务，也产生很多很多的日志（Log）。因为Log每分每秒都在飞速增加，我们必须有聪明的办法来进行处理。我曾经在面试中问过关于如何对 log进行一些分析处理的问题，有很多面试者的回答虽然在逻辑上正确，但在实际应用中是几乎不可行的。按照他们的算法，即便用上几万台机器，我们的处理速度都跟不上数据产生的速度。</p>
<p><span style="color: #0000ff;">那么Google是如何解决这些问题的呢？</span></p>
<p>首先，在网络时代，就算有最好的算法，也要能在并行计算的环境下执行。在Google的数据中心，我们使用的是超大的并行计算机。但传统的并行算法运行时，效率会在增加机器数量后迅速降低，也就是说，十台机器如果有五倍的效果，增加到一千台时也许就只有几十倍的效果。这种事倍功半的代价是没有哪家公司可以负担得起的。而且，在许多并行算法中，只要一个结点犯错误，所有计算都会前功尽弃。</p>
<p><span style="color: #0000ff;">那么Google是如何开发出既有效率又能容错的并行计算的呢？</span></p>
<p>Google最资深的计算机科学家Jeff Dean认识到， Google 所需的绝大部分数据处理都可以归结为一个简单的并行算法：Map and Reduce。 这个算法能够在很多种计算中达到相当高的效率，而且是可扩展的（也就是说，一千台机器就算不能达到一千倍的效果，至少也可以达到几百倍的效果）。 Map and Reduce的另外一大特色是它可以利用大批廉价的机器组成功能强大的server farm。最后，它的容错性能异常出色，就算一个 server farm里面的机器down掉一半，整个farm依然能够运行。正是因为这个天才的认识,才有了Map and Reduce算法。借助该算法，Google几乎能无限地增加计算量，与日新月异的互联网应用一同成长。</p>
<p><span style="color: #0000ff;">算法并不局限于计算机和网络</span></p>
<p>举一个计算机领域外的例子：在高能物理研究方面，很多实验每秒钟都产生几个TB的数据量。但因为处理能力和存储能力的不足，科学家不得不把绝大部分未经处理的数据丢弃掉。可大家要知道，新元素的信息很有可能就藏在我们来不及处理的数据里面。同样的，在其他任何领域里，算法都可以改变人类的生活。例如人类基因的研究，就可能因为算法而发明新的医疗方式。在国家安全领域，有效的算法可能避免下一个911的发生。在气象方面，算法可以更好地预测未来天灾的发生，以拯救生命。</p>
<p>所以，如果你把计算机的发展放到应用和数据飞速增长的大环境下，你一定会发现，算法的重要性不是在日益减小，而是在日益加强。</p>
<p><span style="color: #0000ff;">给程序员的七个建议</span></p>
<p><span style="color: #ff0000;">（1）练内功。</span>不要只花功夫学习各种流行的编程语言和工具，以及某些公司招聘广告上要求的科目。要把数据结构、算法、数据库、操作系统原理、计算机体系结构、计算机网络，离散数学等基础课程学好。大家不妨试试高德纳所著The Art of Computer Programming里的题目，如果你能够解决其中的大部分题目，就说明你在算法方面有一定的功力了。</p>
<p><span style="color: #ff0000;">（2）多实战。</span>通过编程的实战积累经验、巩固知识。很多中国大学毕业生缺乏编程和调试经验；学习C语言，考试过关就算学会了；课题项目中，只要程序能够编译，运行，并且输入输出满足要求就算了事。这些做法是不行的。写程序的时候，大家必须多想想如何把程序写得更加精炼、高效、高质量。建议大家争取在大学四年中积累编写十万行代码的经验。我们必须明白的是：好程序员是写出来的，不是学出来的。</p>
<p><span style="color: #ff0000;">（3）求实干。</span>不要轻视任何实际工作，比如一些看似简单的编码或测试。要不懈追求对细节一丝不苟的实干作风与敬业精神。我发现不少程序员对于知识的掌握很肤浅，不求甚解，没有好奇心，不会刨根问底。比如，学会了C++，是否了解一个对象在编译后，在汇编代码中是如何被初始化的？这个对象的各个成员在内存中是如何存放的？当一个成员函数被调用时，编译器在汇编代码中加入了哪些额外的动作？虚函数的调用是如何实现的? 这些东西恐怕在编程语言或编译原理中都没有详细提到，只有通过踏实的实干才能真正掌握。</p>
<p><span style="color: #ff0000;">（4）重视数学学习。</span>数学是思维的体操，数学无处不在。学计算机至少要学习离散数学、概率论、布尔代数、集合论和数理逻辑。这些知识并不难，但是对你未来的工作帮助会很大。 尤其当你对一些“数学密集型”的领域如视频、图像处理等有兴趣时，这些知识将成为你手中的利器。</p>
<p><span style="color: #ff0000;">（5）培养团队精神，学会与人合作。</span>今天的软件工程早已经不是一个人可以单独操作的，而必须靠团队合作才能成功。不懂得合作的人是不能成大器的。大家要多去寻找可以与人一起做项目的机会。</p>
<p><span style="color: #ff0000;">（6）激励创新意识，培养好奇心，不要死记硬背。</span>没有掌握某种算法技术的根本原理，就不会有应变和创新的能力。想成为一位好程序员（其实从事任何一个行业都是如此），重要的是要养成钻研，好奇，创新，动手，合作的优秀习惯，不满足于填鸭，不满足于考试交差，不满足于表象。这不是学几门课能够一蹴而就的。</p>
<p><span style="color: #ff0000;">（7）有策略地“打工”。</span>在不影响学业的前提下，寻找真正有意义的暑期工作或兼职。去找一个重视技术的公司，在一个好的“老板”指导下完成真正会被用户使用的程序。不要急于去一个要你做“头”而独挡一面的地方，因为向别人学习才是你的目的。找工作也是一样，不要只看待遇和职衔，要挑一个你能够学习的环境，一个愿意培养员工的企业，一个重视你的专业的公司。最后，还要挑一个好老板。</p>
<p>希望大家都能把握机会，养成好的学习习惯，把算法学精学透；希望大家都能有一个美好的未来！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/likaifu-algorithm-power.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>期中了，考试了，我...饿了</title>
		<link>http://www.slyar.com/blog/bnu-first-midterm-exam.html</link>
		<comments>http://www.slyar.com/blog/bnu-first-midterm-exam.html#comments</comments>
		<pubDate>Mon, 03 Nov 2008 13:34:32 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[大学生活]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=436</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
不知不觉来到大学已经2个月了，在感慨时光飞逝，岁月如梭的时候，伴随而来的N多科目期中考试也让我心力交瘁、手忙脚乱，头痛不已。。。
虽然有点夸张，不过最近的考试还真是很多，先是语文，然后是数学，上星期C语言也留了一个大作业，今天思修又布置了了一个N千字的社会实践调查报告，刚刚去上民俗文化的选修课，老师再一次布置了一个N千字的论文。。。哦对了，明天英语考试。。。疯狂中。。。
这周和下周有的忙了，论文。。。我得找Google大神帮我了。。。
这几天没事就在刷学校OJ上面的水题，因为老师说做得多者期末有加分。。。为了那点分数，我还是不得不刷那些水得不能再水的水题。。。
明天考英语，Vocabulary和Translation，还好是给定范围的，只要背一背就行~
PS.腾讯啊，你赶紧把彩虹QQ外挂给封杀吧。。。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>不知不觉来到大学已经2个月了，在感慨时光飞逝，岁月如梭的时候，伴随而来的N多科目期中考试也让我心力交瘁、手忙脚乱，头痛不已。。。</p>
<p>虽然有点夸张，不过最近的考试还真是很多，先是语文，然后是数学，上星期C语言也留了一个大作业，今天思修又布置了了一个N千字的社会实践调查报告，刚刚去上民俗文化的选修课，老师再一次布置了一个N千字的论文。。。哦对了，明天英语考试。。。疯狂中。。。</p>
<p>这周和下周有的忙了，论文。。。我得找Google大神帮我了。。。</p>
<p>这几天没事就在刷学校OJ上面的水题，因为老师说做得多者期末有加分。。。为了那点分数，我还是不得不刷那些水得不能再水的水题。。。</p>
<p>明天考英语，Vocabulary和Translation，还好是给定范围的，只要背一背就行~</p>
<p><span style="color: #ff0000;">PS.腾讯啊，你赶紧把彩虹QQ外挂给封杀吧。。。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/bnu-first-midterm-exam.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>大学第一次夜不归宿</title>
		<link>http://www.slyar.com/blog/bnu-play-all-night.html</link>
		<comments>http://www.slyar.com/blog/bnu-play-all-night.html#comments</comments>
		<pubDate>Sun, 02 Nov 2008 07:25:01 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[大学生活]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=432</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
话说我刚刚睡醒。。。
昨晚是第七届校园歌手大赛的总决赛，几乎所有的校会成员都出动了，场面和音响效果都不错，歌手能力就不评价了。。。
歌手大赛结束后，我们收拾了场地，然后惯例地跟随大部队出去玩通宵。以往校会大型活动后都有这样的小型活动，当然这也是我大学第一次玩通宵，夜不归宿~
两辆大车，近100人，拱北附近，唱K，喝酒。
和文艺部的唱K，我是沉默的。主要是文艺部的人都太HIGH了，我还是喝酒吧，不过怎么看那啤酒都不是好货。。。
我们一直玩到早晨5点才驱车返回，到学校就差不多7点了，回宿舍，睡觉。。。
好水的文章。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>话说我刚刚睡醒。。。</p>
<p>昨晚是第七届校园歌手大赛的总决赛，几乎所有的校会成员都出动了，场面和音响效果都不错，歌手能力就不评价了。。。</p>
<p>歌手大赛结束后，我们收拾了场地，然后惯例地跟随大部队出去玩通宵。以往校会大型活动后都有这样的小型活动，当然这也是我大学第一次玩通宵，夜不归宿~</p>
<p>两辆大车，近100人，拱北附近，唱K，喝酒。</p>
<p>和文艺部的唱K，我是沉默的。主要是文艺部的人都太HIGH了，我还是喝酒吧，不过怎么看那啤酒都不是好货。。。</p>
<p>我们一直玩到早晨5点才驱车返回，到学校就差不多7点了，回宿舍，睡觉。。。</p>
<p>好水的文章。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/bnu-play-all-night.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>正负数十进制转二进制 位运算 C语言版</title>
		<link>http://www.slyar.com/blog/decimal-to-binary-digit.html</link>
		<comments>http://www.slyar.com/blog/decimal-to-binary-digit.html#comments</comments>
		<pubDate>Sat, 01 Nov 2008 10:03:48 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[编程相关]]></category>

		<category><![CDATA[C语言]]></category>

		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=431</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
今天在论坛上看到一个负十进制数转二进制的问题，于是小研究了一下，顺便学习位运算。。。
我们知道负数的二进制是由其正数的二进制取反(求反码)再加一(求补码)得到的，例如：
十进制数528的二进制码为：0000001000010000
将其取反(求反码)后的结果：1111110111101111
将反码加一(求补码)后结果：1111110111110000
所以，-528的二进制码为1111110111110000
小说一下概念，然后看一个位运算符,按位与(&#38;) ：0&#38;0=0 , 0&#38;1=0 , 1&#38;0=0 , 1&#38;1=1
我们知道，奇数的二进制最后一位全部为1，而偶数的二进制最后一位全部为0，那么用按位与运算符我们可以很方便地知道一个数是奇数还是偶数，只要让数字 &#38;1 就可以了，因为 奇数&#38;1=1 ，而 偶数&#38;1=0
现在看一段代码，作用是将十进制数转换为二进制数。
#include &#60;stdio.h&#62;
int main()
{
int x,i;
scanf("%d",&#38;x);
for(i=31;i&#62;=0;i--) printf("%d",x&#62;&#62;i&#38;1);
system("pause");
}
重点就在 x&#62;&#62;i&#38;1 啦，每次按照能否被二整除来确定0或者1，然后一位一位的移动，这样处理负数也是可以的，很爽~详细解释太麻烦，自己思考吧，嘎嘎~
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>今天在论坛上看到一个负十进制数转二进制的问题，于是小研究了一下，顺便学习位运算。。。</p>
<p>我们知道负数的二进制是由其正数的二进制取反(求反码)再加一(求补码)得到的，例如：</p>
<p><span style="color: #0000ff;">十进制数528的二进制码为：0000001000010000</span></p>
<p><span style="color: #0000ff;">将其取反(求反码)后的结果：1111110111101111</span></p>
<p><span style="color: #0000ff;">将反码加一(求补码)后结果：1111110111110000</span></p>
<p>所以，-528的二进制码为1111110111110000</p>
<p>小说一下概念，然后看一个位运算符,按位与(&amp;) ：0&amp;0=0 , 0&amp;1=0 , 1&amp;0=0 , 1&amp;1=1</p>
<p>我们知道，<span style="color: #0000ff;">奇数的二进制最后一位全部为1</span>，<span style="color: #0000ff;">而偶数的二进制最后一位全部为0</span>，那么用按位与运算符我们可以很方便地知道一个数是奇数还是偶数，只要让数字 &amp;1 就可以了，因为 <span style="color: #0000ff;">奇数&amp;1=1</span> ，而 <span style="color: #0000ff;">偶数&amp;1=0</span></p>
<p>现在看一段代码，作用是将十进制数转换为二进制数。</p>
<p><span style="color: #0000ff;">#include &lt;stdio.h&gt;</span></p>
<p><span style="color: #0000ff;">int main()<br />
{<br />
int x,i;<br />
scanf("%d",&amp;x);<br />
for(i=31;i&gt;=0;i--) printf("%d",x&gt;&gt;i&amp;1);<br />
system("pause");<br />
}</span></p>
<p>重点就在 <span style="color: #ff0000;">x&gt;&gt;i&amp;1</span> 啦，每次按照能否被二整除来确定0或者1，然后一位一位的移动，这样处理负数也是可以的，很爽~详细解释太麻烦，自己思考吧，嘎嘎~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/decimal-to-binary-digit.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Slyar Home 十月博客总结(2008)</title>
		<link>http://www.slyar.com/blog/08-10-slyar-summary.html</link>
		<comments>http://www.slyar.com/blog/08-10-slyar-summary.html#comments</comments>
		<pubDate>Fri, 31 Oct 2008 16:05:30 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[网络生活]]></category>

		<category><![CDATA[博客]]></category>

		<category><![CDATA[博客总结]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=433</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
Slyar Home又长大了一个月，让我们看看Slyar Home十月份的表现吧。

1、博客文章。Slyar Home十月份发表文章31篇，主要记录C语言的一些技巧以及大学生活。
2、博客评论。2008年10月Slyar Home评论之星为：
第一名：Felix021 - www.19880711.com - 31条
第二名：zonghua - aspx1314.cn - 20条
第三名：午夜 - www.wuyeah.com - 12条
第四名：自然堂 - www.shichangzhi.cn - 12条
第五名：And You - 12条
3、博客流量。博客统计使用第三方的雅虎统计，十月详细统计信息如下，日IP量依旧在200上下波动。

4、收录状况
Google PR=4,Alexa排名466023，Sogou Rank=52。
收录总体没什么变化，Alexa排名上升了20万左右，博客处于稳定期。

]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="../../" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>Slyar Home又长大了一个月，让我们看看Slyar Home十月份的表现吧。</p>
<p><span id="more-433"></span></p>
<p>1、博客文章。Slyar Home十月份发表文章31篇，主要记录C语言的一些技巧以及大学生活。</p>
<p>2、博客评论。2008年10月Slyar Home评论之星为：</p>
<blockquote><p>第一名：Felix021 - <a href="http://www.19880711.com/" target="_blank">www.19880711.com</a> - <span style="color: #ff0000;">31条</span></p>
<p>第二名：zonghua - <a href="http://aspx1314.cn/" target="_blank">aspx1314.cn</a> - <span style="color: #ff0000;">20</span><span style="color: #ff0000;">条</span></p>
<p>第三名：午夜 - <a href="http://www.wuyeah.com" target="_blank">www.wuyeah.com</a> - <span style="color: #ff0000;">12条</span></p>
<p>第四名：自然堂 - <a href="http://www.shichangzhi.cn/" target="_blank">www.shichangzhi.cn</a> - <span style="color: #ff0000;">12</span><span style="color: #ff0000;">条</span></p>
<p>第五名：And You - <span style="color: #ff0000;">12</span><span style="color: #ff0000;">条</span></p></blockquote>
<p>3、博客流量。博客统计使用第三方的雅虎统计，十月详细统计信息如下，日IP量依旧在200上下波动。</p>
<p><a href="http://www.slyar.com/blog/wp-content/uploads/2008/11/slyar0810tongji.gif"><img class="alignnone size-full wp-image-434" title="slyar.com08年10月统计" src="http://www.slyar.com/blog/wp-content/uploads/2008/11/slyar0810tongji.gif" alt="" width="335" height="392" /></a></p>
<p>4、收录状况</p>
<p>Google PR=4,Alexa排名466023，Sogou Rank=52。</p>
<p>收录总体没什么变化，Alexa排名上升了20万左右，博客处于稳定期。</p>
<p><a href="http://www.slyar.com/blog/wp-content/uploads/2008/11/slyar0810shoulu.gif"><img class="alignnone size-full wp-image-435" title="slyar.com08年10月收录" src="http://www.slyar.com/blog/wp-content/uploads/2008/11/slyar0810shoulu.gif" alt="" width="500" height="204" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/08-10-slyar-summary.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>你能看出几个旋转方向？</title>
		<link>http://www.slyar.com/blog/dancing-girl-around.html</link>
		<comments>http://www.slyar.com/blog/dancing-girl-around.html#comments</comments>
		<pubDate>Fri, 31 Oct 2008 03:49:51 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[网络生活]]></category>

		<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=430</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。

据说是美国耶鲁大学研究出来的，什么顺时针用右脑，逆时针用左脑。
不过我倒觉得这就是个视错觉问题。我一开始看就是顺时针，然后怎么也看不出逆时针的。。。大约过了3分钟我才看出来逆时针旋转，之后就可以自由控制旋转方向了，眨一下眼，顺时针；再眨一下眼，逆时针。。。
不知道大家看出来几个旋转方向？
PS.此幅旋转图一共有34帧，每帧是0.03秒，小于人的视觉停留时间（0.05-0.2S）。一个周期是1.02秒，前12帧（0.36S）是顺时针旋转特 征明显，后22帧（0.66S）是逆时针旋转的特征明显。但是每一帧都可以理解为顺转或逆转。秘密就在这里，当你第一眼接触到的几帧图片是前12帧时，知 觉的识别性首先判定为顺转，又由于知觉的滞留性，顺转的感觉会一直持续影响知觉对后面一些帧的判定，因此整幅图片看起来都是顺转。反之，当你第一眼接触到的几帧图片是后22帧时，知觉的识别性首先判定为逆转，又由于知觉的滞留性，逆转的感觉会一直持续影响知觉对后面一些帧的判定，因此整幅图片看起来都是逆 转。调整自己的注意力，你还可以控制舞女旋转的方向。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p><a href="http://www.slyar.com/blog/wp-content/uploads/2008/10/xuanzhuan.gif"><img class="alignnone size-full wp-image-429" title="slyar旋转舞女" src="http://www.slyar.com/blog/wp-content/uploads/2008/10/xuanzhuan.gif" alt="" width="300" height="400" /></a></p>
<p>据说是美国耶鲁大学研究出来的，什么顺时针用右脑，逆时针用左脑。</p>
<p>不过我倒觉得这就是个视错觉问题。我一开始看就是顺时针，然后怎么也看不出逆时针的。。。大约过了3分钟我才看出来逆时针旋转，之后就可以自由控制旋转方向了，眨一下眼，顺时针；再眨一下眼，逆时针。。。</p>
<p><span style="color: #ff0000;">不知道大家看出来几个旋转方向？</span></p>
<p>PS.此幅旋转图一共有34帧，每帧是0.03秒，小于人的视觉停留时间（0.05-0.2S）。一个周期是1.02秒，前12帧（0.36S）是顺时针旋转特 征明显，后22帧（0.66S）是逆时针旋转的特征明显。但是每一帧都可以理解为顺转或逆转。秘密就在这里，当你第一眼接触到的几帧图片是前12帧时，知 觉的识别性首先判定为顺转，又由于知觉的滞留性，顺转的感觉会一直持续影响知觉对后面一些帧的判定，因此整幅图片看起来都是顺转。反之，当你第一眼接触到的几帧图片是后22帧时，知觉的识别性首先判定为逆转，又由于知觉的滞留性，逆转的感觉会一直持续影响知觉对后面一些帧的判定，因此整幅图片看起来都是逆 转。调整自己的注意力，你还可以控制舞女旋转的方向。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/dancing-girl-around.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>碾转相除法求最大公约数不用比较两数大小</title>
		<link>http://www.slyar.com/blog/c-euclidean-algorithm.html</link>
		<comments>http://www.slyar.com/blog/c-euclidean-algorithm.html#comments</comments>
		<pubDate>Thu, 30 Oct 2008 11:24:42 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[编程相关]]></category>

		<category><![CDATA[C语言]]></category>

		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=427</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
辗转相除，又名欧几里德算法(Euclidean algorithm)，是求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至前300年。它首次出现于欧几里德的《几何原本》中，而在中国则可以追溯至东汉出现的《九章算术》。
以前学碾转相除的时候也没怎么考虑，看到书上说要先比较两个数的大小再碾转相除我就习惯性地先比较大小了，可是今天发现碾转相除法是不用比较两个数的大小的。。。
设我们有两个数m、n
1、用m除以n，得余数r
2、使m=n ，n=r
3、若r=0，则m就是最大公约数；若r不等于0，返回第1步
我们可以看到，如果m&#62;n，那么没说的；如果m&#60;n，在第一次m除以n后，余数恰好为m，这样一交换，最后还会变成m&#62;n的情况。
C语言实现代码为：
#include &#60;stdio.h&#62;
int main()
{
int m, n, r = 1;
scanf("%d%d", &#38;m, &#38;n);
while (r != 0)
{
r = m % n;
m = n;
n = r;
}
printf("%d", m);
return 0;
}
还有一个利用条件运算符写的求最大公约数程序代码
#include&#60;stdio.h&#62;
int main()
{
int m, n;
scanf("%d%d", &#38;m, &#38;n);
while(m &#62; n ? (m = m % n) : (n = n % m));
printf("%d", m + n);
return 0;
}
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>辗转相除，又名欧几里德算法(Euclidean algorithm)，是求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至前300年。它首次出现于欧几里德的《几何原本》中，而在中国则可以追溯至东汉出现的《九章算术》。</p>
<p>以前学碾转相除的时候也没怎么考虑，看到书上说要先比较两个数的大小再碾转相除我就习惯性地先比较大小了，可是今天发现碾转相除法是不用比较两个数的大小的。。。</p>
<p><span style="color: #0000ff;">设我们有两个数m、n</span></p>
<p><span style="color: #0000ff;">1、用m除以n，得余数r</span></p>
<p><span style="color: #0000ff;">2、使m=n ，n=r</span></p>
<p><span style="color: #0000ff;">3、若r=0，则m就是最大公约数；若r不等于0，返回第1步</span></p>
<p>我们可以看到，如果m&gt;n，那么没说的；如果m&lt;n，在第一次m除以n后，余数恰好为m，这样一交换，最后还会变成m&gt;n的情况。</p>
<p>C语言实现代码为：</p>
<p>#include &lt;stdio.h&gt;</p>
<p>int main()<br />
{<br />
int m, n, r = 1;<br />
scanf("%d%d", &amp;m, &amp;n);<br />
while (r != 0)<br />
{<br />
r = m % n;<br />
m = n;<br />
n = r;<br />
}<br />
printf("%d", m);<br />
return 0;<br />
}</p>
<p>还有一个利用条件运算符写的求最大公约数程序代码</p>
<p>#include&lt;stdio.h&gt;</p>
<p>int main()<br />
{<br />
int m, n;<br />
scanf("%d%d", &amp;m, &amp;n);<br />
while(m &gt; n ? (m = m % n) : (n = n % m));<br />
printf("%d", m + n);<br />
return 0;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/c-euclidean-algorithm.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>八皇后问题 回溯递归 C语言版</title>
		<link>http://www.slyar.com/blog/eight-queen-c-program.html</link>
		<comments>http://www.slyar.com/blog/eight-queen-c-program.html#comments</comments>
		<pubDate>Wed, 29 Oct 2008 14:50:14 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[编程相关]]></category>

		<category><![CDATA[C语言]]></category>

		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=426</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
八皇后问题是一个古老而著名的问题，是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出：在8X8格的国际象棋上摆放八个皇后，使其不能互相攻击，即任意两个皇后都不能处于同一行、同一列或同一斜线上，问有多少种摆法。
今天听陈星火老师(火爷)的讲座提到了八皇后问题，正好今天没写的，于是晚上上完课回来就写了一段回溯递归解决八皇后问题的代码，当然也可以解决N皇后问题。运行后得到解为92组。
/* Code by Slyar */
#include &#60;stdio.h&#62;
#include &#60;stdlib.h&#62;
#define max 8
int queen[max], sum=0;/* max为棋盘最大坐标 */
void show()/* 输出所有皇后的坐标 */
{
int i;
for(i = 0; i &#60; max; i++)
{
printf("(%d,%d) ", i, queen[i]);
}
printf("\n");
sum++;
}
int check(int n)/* 检查当前列能否放置皇后 */
{
int i;
for(i = 0; i &#60; n; i++)/* 检查横排和对角线上是否可以放置皇后 */
{
if(queen[i] == queen[n] &#124;&#124; abs(queen[i] - queen[n]) == (n - i))
{
return 1;
}
}
return 0;
}
void [...]]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<blockquote><p>八皇后问题是一个古老而著名的问题，是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出：在8X8格的国际象棋上摆放八个皇后，使其不能互相攻击，即任意两个皇后都不能处于同一行、同一列或同一斜线上，问有多少种摆法。</p></blockquote>
<p>今天听陈星火老师(火爷)的讲座提到了八皇后问题，正好今天没写的，于是晚上上完课回来就写了一段回溯递归解决八皇后问题的代码，当然也可以解决N皇后问题。运行后得到解为92组。</p>
<p><span style="color: #99cc00;">/* Code by Slyar */</span><br />
#include &lt;stdio.h&gt;<br />
#include &lt;stdlib.h&gt;</p>
<p>#define max 8</p>
<p>int queen[max], sum=0;<span style="color: #99cc00;">/* max为棋盘最大坐标 */</span></p>
<p>void show()<span style="color: #99cc00;">/* 输出所有皇后的坐标 */</span><br />
{<br />
int i;<br />
for(i = 0; i &lt; max; i++)<br />
{<br />
printf("(%d,%d) ", i, queen[i]);<br />
}<br />
printf("\n");<br />
sum++;<br />
}</p>
<p>int check(int n)<span style="color: #99cc00;">/* 检查当前列能否放置皇后 */</span><br />
{<br />
int i;<br />
for(i = 0; i &lt; n; i++)<span style="color: #99cc00;">/* 检查横排和对角线上是否可以放置皇后 */</span><br />
{<br />
if(queen[i] == queen[n] || abs(queen[i] - queen[n]) == (n - i))<br />
{<br />
return 1;<br />
}<br />
}<br />
return 0;<br />
}</p>
<p>void put(int n)<span style="color: #99cc00;">/* 回溯尝试皇后位置,n为横坐标 */</span><br />
{<br />
int i;<br />
for(i = 0; i &lt; max; i++)<br />
{<br />
queen[n] = i;<span style="color: #99cc00;">/* 将皇后摆到当前循环到的位置 */</span><br />
if(!check(n))<br />
{<br />
if(n == max - 1)<br />
{<br />
show();<span style="color: #99cc00;">/* 如果全部摆好，则输出所有皇后的坐标 */</span><br />
}<br />
else<br />
{<br />
put(n + 1);<span style="color: #99cc00;">/* 否则继续摆放下一个皇后 */</span><br />
}<br />
}<br />
}<br />
}</p>
<p>int main()<br />
{<br />
put(0);<span style="color: #99cc00;">/* 从横坐标为0开始依次尝试 */</span><br />
printf("%d", sum);<br />
system("pause");<br />
return 0;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/eight-queen-c-program.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>突然发现宵夜是会越吃越饿的</title>
		<link>http://www.slyar.com/blog/night-snack-hungry.html</link>
		<comments>http://www.slyar.com/blog/night-snack-hungry.html#comments</comments>
		<pubDate>Tue, 28 Oct 2008 15:20:57 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[网络相关]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=425</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
今天课多，事情也多。刚才上完选修课陪同学去吃宵夜，既然是"陪"，我就没打算多吃，而且我本来也就不是很习惯吃宵夜，所以我就买了一笼蒸饺，结果这不吃没事，一吃可就不得了了......吃完那笼蒸饺我惊愕地发现我居然饿了......既然饿了，那就再吃吧，于是我就又买了一笼蒸饺，我心说这下吃完不会饿了，结果......我又吃了一碗炒河粉才解决问题......
结论：宵夜不能随便吃，因为宵夜是会越吃越饿的......
今天事情超级多，多到我都一天没时间开电脑。下午骑车去上课的时候来了一个急刹车，结果车是刹住了，不过车闸也英勇就义了......没辙，叫上Jet跟我去北理工那边换车闸，叫Jet是去是因为那车行老板是潮汕人，咱没法交流......
明天要上台讲高数，题咱还没做；下星期考英语，单词咱还没背；形式与政策的课，咱还没去听；饭卡快没钱了，咱还没去充值......
结论：所有的事情堆在一起是会忙死人的......
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>今天课多，事情也多。刚才上完选修课陪同学去吃宵夜，既然是"陪"，我就没打算多吃，而且我本来也就不是很习惯吃宵夜，所以我就买了一笼蒸饺，结果这不吃没事，一吃可就不得了了......吃完那笼蒸饺我惊愕地发现我居然饿了......既然饿了，那就再吃吧，于是我就又买了一笼蒸饺，我心说这下吃完不会饿了，结果......我又吃了一碗炒河粉才解决问题......</p>
<p><span style="color: #ff0000;">结论：宵夜不能随便吃，因为宵夜是会越吃越饿的......</span></p>
<p>今天事情超级多，多到我都一天没时间开电脑。下午骑车去上课的时候来了一个急刹车，结果车是刹住了，不过车闸也英勇就义了......没辙，叫上Jet跟我去北理工那边换车闸，叫Jet是去是因为那车行老板是潮汕人，咱没法交流......</p>
<p>明天要上台讲高数，题咱还没做；下星期考英语，单词咱还没背；形式与政策的课，咱还没去听；饭卡快没钱了，咱还没去充值......</p>
<p><span style="color: #ff0000;">结论：所有的事情堆在一起是会忙死人的......</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/night-snack-hungry.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>大学啥都好,除了得自己洗衣服...囧</title>
		<link>http://www.slyar.com/blog/i-hate-washing-clothes.html</link>
		<comments>http://www.slyar.com/blog/i-hate-washing-clothes.html#comments</comments>
		<pubDate>Mon, 27 Oct 2008 14:28:48 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[大学生活]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=424</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
刚刚上完选修课回来，打开柜子的时候突然发现如果今天再不洗衣服明天就没穿的了。。。
哎，来了大学感觉其他的一切都好，但自己洗衣服真是一件最痛苦的事情，每次洗完衣服都是一身汗。最不能忍的是那个水池，修的那么低，而我个子高，洗衣服的时候身体几乎就成直角了。。。每次洗那么几分钟就得直起来休息一会。。。痛苦。。。
貌似我最近越来越懒了，干什么事情都要算最短路径和最优计划。。。我已经不想做任何多余的动作了，准确地说，是我懒得做一切无意义地动作。。。
PS.刚才妹子在QQ上说我不洗衣服懒，但是发日志很勤快。。。最后她得出的结论是电脑对于我就像菠菜对于大力水手。。。囧
I hate washing clothes......
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>刚刚上完选修课回来，打开柜子的时候突然发现如果今天再不洗衣服明天就没穿的了。。。</p>
<p>哎，来了大学感觉其他的一切都好，但自己洗衣服真是一件最痛苦的事情，每次洗完衣服都是一身汗。最不能忍的是那个水池，修的那么低，而我个子高，洗衣服的时候身体几乎就成直角了。。。每次洗那么几分钟就得直起来休息一会。。。痛苦。。。</p>
<p>貌似我最近越来越懒了，干什么事情都要算最短路径和最优计划。。。我已经不想做任何多余的动作了，准确地说，是我懒得做一切无意义地动作。。。</p>
<p>PS.刚才妹子在QQ上说我不洗衣服懒，但是发日志很勤快。。。最后她得出的结论是电脑对于我就像菠菜对于大力水手。。。囧</p>
<p><span style="color: #ff0000;">I hate washing clothes......</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/i-hate-washing-clothes.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Slyar的珠海一日行</title>
		<link>http://www.slyar.com/blog/slyar-zhuhai-one-day.html</link>
		<comments>http://www.slyar.com/blog/slyar-zhuhai-one-day.html#comments</comments>
		<pubDate>Sun, 26 Oct 2008 12:52:26 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[大学生活]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=421</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
呼，刚刚回到宿舍，有点累的感觉。早晨就和Jet坐车去市区了，要问我这个懒仙为什么会出门？~嘿嘿，当然是我带着某个神秘的任务啦~~
因为今天是星期天，所以市区里是万人空巷；又因为坐车花了很久的时间，所以上午在吉之岛转了转就到了吃午饭的时间；再因为不知道吃什么，所以我们选择了KFC。。。貌似我也有2个月没吃过“垃圾食品”了，令我惊讶的是KFC居然价格上涨了，难道就因为我2个月没吃他就......(打雷了)
吃过饭后我们又跑去了拱北。为什么是"又"呢，因为刚来珠海的时候我也到拱北玩过，不过那时时间比较紧张，所以没怎么玩。今天就好好地转了转拱北的地下商场，转过后才发现原来这个商场是有2层的，而且超级大，居然还有一个设备很好的电玩场和一个碰碰车场。。。汗，以前一直以为那里很小的......
在拱北地下商场，我真真切切地领教了一回“砍价”的威力：我走到一个摊位前，发现了一把我也有的多功能军刀，于是我就向摊主询问军刀的价格......
"老板，这个多少钱？"
"30"，摊主冷冷地回答。
"......"，我被雷了一下，然后转身，走了一步。
"20给你"，摊主急忙改口。
"......"，我又走了一步。
"15要不要，靓仔!"，摊主急切地说。
"我有一个一样的，2元"，我头也不回地丢下一句话，继续迈步......
结论：砍价的威力是无穷的，地摊太危险了，我们还是选择品牌店吧......
出了地下商场，我们继续漫无目标地瞎逛，途中我是见了世面了。看到一部近一米长、半米高的摩托车，起初我还以为是模型，结果被告知那是真的，我汗......在某宾馆门口看到一排珠海车和方向盘右置的黑牌澳门车：路虎、奔驰、宝马、奥迪、保时捷、本田、丰田......另外插一句，市区里的美女密度大大低于我们学校......
被雷的差不多的时候，我们跑去华润万家采购，然后坐车回学校，吃饭，走路回宿舍。。。
PS.还有几段行程过几天再说，现在保密，嘿嘿~
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>呼，刚刚回到宿舍，有点累的感觉。早晨就和Jet坐车去市区了，要问我这个懒仙为什么会出门？~嘿嘿，当然是我带着某个神秘的任务啦~~</p>
<p><span style="color: #ff0000;">因为</span>今天是星期天，所以市区里是万人空巷；<span style="color: #ff0000;">又因为</span>坐车花了很久的时间，所以上午在吉之岛转了转就到了吃午饭的时间；<span style="color: #ff0000;">再因为</span>不知道吃什么，所以我们选择了KFC。。。貌似我也有2个月没吃过“垃圾食品”了，令我惊讶的是KFC居然价格上涨了，难道就因为我2个月没吃他就......(打雷了)</p>
<p>吃过饭后我们又跑去了拱北。为什么是"又"呢，因为刚来珠海的时候我也到拱北玩过，不过那时时间比较紧张，所以没怎么玩。今天就好好地转了转拱北的地下商场，转过后才发现原来这个商场是有2层的，而且超级大，居然还有一个设备很好的电玩场和一个碰碰车场。。。汗，以前一直以为那里很小的......</p>
<p>在拱北地下商场，我真真切切地领教了一回“砍价”的威力：我走到一个摊位前，发现了一把我也有的多功能军刀，于是我就向摊主询问军刀的价格......</p>
<p><span style="color: #0000ff;">"老板，这个多少钱？"</span></p>
<p><span style="color: #339966;">"30"，摊主冷冷地回答。</span></p>
<p><span style="color: #0000ff;">"......"，我被雷了一下，然后转身，走了一步。</span></p>
<p><span style="color: #339966;">"20给你"，摊主急忙改口。</span></p>
<p><span style="color: #0000ff;">"......"，我又走了一步。</span></p>
<p><span style="color: #339966;">"15要不要，靓仔!"，摊主急切地说。</span></p>
<p><span style="color: #0000ff;">"我有一个一样的，2元"，我头也不回地丢下一句话，继续迈步......</span></p>
<p><span style="color: #ff0000;">结论：砍价的威力是无穷的，地摊太危险了，我们还是选择品牌店吧......</span></p>
<p>出了地下商场，我们继续漫无目标地瞎逛，途中我是见了世面了。看到一部近一米长、半米高的摩托车，起初我还以为是模型，结果被告知那是真的，我汗......在某宾馆门口看到一排珠海车和方向盘右置的黑牌澳门车：路虎、奔驰、宝马、奥迪、保时捷、本田、丰田......另外插一句，市区里的美女密度大大低于我们学校......</p>
<p>被雷的差不多的时候，我们跑去华润万家采购，然后坐车回学校，吃饭，走路回宿舍。。。</p>
<p>PS.还有几段行程过几天再说，现在保密，嘿嘿~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/slyar-zhuhai-one-day.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>突然发现QQ等级明天就到2个太阳了,不好看了</title>
		<link>http://www.slyar.com/blog/slyar-qq-update-2sun.html</link>
		<comments>http://www.slyar.com/blog/slyar-qq-update-2sun.html#comments</comments>
		<pubDate>Sat, 25 Oct 2008 12:59:57 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[大学生活]]></category>

		<category><![CDATA[大学]]></category>

		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=420</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
今天登陆的时候突然发现这个QQ还差一天就到2个太阳了，不爽。本来1个太阳3个月亮3个星星多好看，非要整2个太阳出来。。。看看自己其他的QQ，郁闷，貌似都是2个太阳以上的，而且离那种2个太阳3个月亮3个星星的还有好久。。。
俺不挂Q的，费电。。。截个图留个纪念，这个等级多好看~~~下次再截图就得2个太阳3个月亮3个星星了。。。不晓得不挂Q的话大学毕业前能不能达到。。。

今天上午给一个朋友的本本重装了一套系统，感觉还算满意，貌似这是我第7次给别人装吧。这里多说一句废话，以后要是我答应给你重装系统，麻烦把驱动程序先准备好。。。囧
今天Vijos一直上不了，又挂了，所以也没去做题~以后先离线拷贝几道题，免得Vijos挂了的时候不能做题，嘿嘿~
哎~明天出门呀，见见世面。。。
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>今天登陆的时候突然发现这个QQ还差一天就到2个太阳了，不爽。本来1个太阳3个月亮3个星星多好看，非要整2个太阳出来。。。看看自己其他的QQ，郁闷，貌似都是2个太阳以上的，而且离那种2个太阳3个月亮3个星星的还有好久。。。</p>
<p>俺不挂Q的，费电。。。截个图留个纪念，这个等级多好看~~~下次再截图就得2个太阳3个月亮3个星星了。。。不晓得不挂Q的话大学毕业前能不能达到。。。</p>
<p><a href="http://www.slyar.com/blog/wp-content/uploads/2008/10/qqlevel2.gif"><img class="alignnone size-full wp-image-419" style="border: 1px solid black;" title="QQ等级slyar" src="http://www.slyar.com/blog/wp-content/uploads/2008/10/qqlevel2.gif" alt="" width="327" height="168" /></a></p>
<p>今天上午给一个朋友的本本重装了一套系统，感觉还算满意，貌似这是我第7次给别人装吧。这里多说一句废话，以后要是我答应给你重装系统，麻烦把驱动程序先准备好。。。囧</p>
<p>今天Vijos一直上不了，又挂了，所以也没去做题~以后先离线拷贝几道题，免得Vijos挂了的时候不能做题，嘿嘿~</p>
<p>哎~明天出门呀，见见世面。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slyar.com/blog/slyar-qq-update-2sun.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>C语言运算符优先级 详细列表</title>
		<link>http://www.slyar.com/blog/c-operator-priority.html</link>
		<comments>http://www.slyar.com/blog/c-operator-priority.html#comments</comments>
		<pubDate>Fri, 24 Oct 2008 03:58:59 +0000</pubDate>
		<dc:creator>Slyar</dc:creator>
		
		<category><![CDATA[编程相关]]></category>

		<category><![CDATA[C语言]]></category>

		<guid isPermaLink="false">http://www.slyar.com/blog/?p=417</guid>
		<description><![CDATA[文章作者：Slyar 文章来源：Slyar Home (www.slyar.com) 转载请注明，谢谢合作。
恩，问这个问题的人太多了，懒得继续回答，直接贴上来自己看。。。




优先级


运算符


名称或含义


使用形式


结合方向


说明




1


[]


数组下标


数组名[常量表达式]


左到右





()


圆括号


（表达式）/函数名(形参表)





.


成员选择（对象）


对象.成员名





-&#62;


成员选择（指针）


对象指针-&#62;成员名





2


-


负号运算符


-表达式


右到左


单目运算符




(类型)


强制类型转换


(数据类型)表达式





++


自增运算符


++变量名/变量名++


单目运算符




--


自减运算符


--变量名/变量名--


单目运算符




*


取值运算符


*指针变量


单目运算符




&#38;


取地址运算符


&#38;变量名


单目运算符




!


逻辑非运算符


!表达式


单目运算符




~


按位取反运算符


~表达式


单目运算符




sizeof


长度运算符


sizeof(表达式)





3


/


除


表达式/表达式


左到右


双目运算符




*


乘


表达式*表达式


双目运算符




%


余数（取模）


整型表达式/整型表达式


双目运算符




4


+


加


表达式+表达式


左到右


双目运算符




-


减


表达式-表达式


双目运算符




5


&#60;&#60;


左移


变量&#60;&#60;表达式


左到右


双目运算符




&#62;&#62;


右移


变量&#62;&#62;表达式


双目运算符




6


&#62;


大于


表达式&#62;表达式


左到右


双目运算符




&#62;=


大于等于


表达式&#62;=表达式


双目运算符




&#60;


小于


表达式&#60;表达式


双目运算符




&#60;=


小于等于


表达式&#60;=表达式


双目运算符




7


==


等于


表达式==表达式


左到右


双目运算符




!=


不等于


表达式!= 表达式


双目运算符




8


&#38;


按位与


表达式&#38;表达式


左到右


双目运算符




9


^


按位异或


表达式^表达式


左到右


双目运算符




10


&#124;


按位或


表达式&#124;表达式


左到右


双目运算符




11


&#38;&#38;


逻辑与


表达式&#38;&#38;表达式


左到右


双目运算符




12


&#124;&#124;


逻辑或


表达式&#124;&#124;表达式


左到右


双目运算符




13


?:


条件运算符


表达式1? 表达式2: 表达式3


右到左


三目运算符




14


=


赋值运算符


变量=表达式


右到左





/=


除后赋值


变量/=表达式





*=


乘后赋值


变量*=表达式





%=


取模后赋值


变量%=表达式





+=


加后赋值


变量+=表达式





-=


减后赋值


变量-=表达式





&#60;&#60;=


左移后赋值


变量&#60;&#60;=表达式





&#62;&#62;=


右移后赋值


变量&#62;&#62;=表达式





&#38;=


按位与后赋值


变量&#38;=表达式





^=


按位异或后赋值


变量^=表达式





&#124;=


按位或后赋值


变量&#124;=表达式





15


,


逗号运算符


表达式,表达式,…


左到右


从左向右顺序运算




说明：
同一优先级的运算符，运算次序由结合方向所决定。
简单记就是：！ &#62; 算术运算符 &#62; 关系运算符 &#62; &#38;&#38; &#62; &#124;&#124; &#62; 赋值运算符
]]></description>
			<content:encoded><![CDATA[<p>文章作者：<span style="color: #0000ff;">Slyar </span>文章来源：Slyar Home (<a title="Slyar" href="http://www.slyar.com" target="_blank">www.slyar.com</a>) 转载请注明，谢谢合作。</p>
<p>恩，问这个问题的人太多了，懒得继续回答，直接贴上来自己看。。。</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="68">
<p align="center">优先级</p>
</td>
<td width="64">
<p align="center">运算符</p>
</td>
<td width="126">
<p align="center">名称或含义</p>
</td>
<td width="144">
<p align="center">使用形式</p>
</td>
<td width="72">
<p align="center">结合方向</p>
</td>
<td width="86">
<p align="center">说明</p>
</td>
</tr>
<tr>
<td rowspan="4" width="68">
<p align="center">1</p>
</td>
<td width="64">
<p align="center">[]</p>
</td>
<td width="126">
<p align="center">数组下标</p>
</td>
<td width="144">
<p align="center">数组名[常量表达式]</p>
</td>
<td rowspan="4" width="72">
<p align="center">左到右</p>
</td>
<td width="86"></td>
</tr>
<tr>
<td width="64">
<p align="center">()</p>
</td>
<td width="126">
<p align="center">圆括号</p>
</td>
<td width="144">
<p align="center">（表达式）/函数名(形参表)</p>
</td>
<td width="86"></td>
</tr>
<tr>
<td width="64">
<p align="center">.</p>
</td>
<td width="126">
<p align="center">成员选择（对象）</p>
</td>
<td width="144">
<p align="center">对象.成员名</p>
</td>
<td width="86"></td>
</tr>
<tr>
<td width="64">
<p align="center">-&gt;</p>
</td>
<td width="126">
<p align="center">成员选择（指针）</p>
</td>
<td width="144">
<p align="center">对象指针-&gt;成员名</p>
</td>
<td width="86"></td>
</tr>
<tr>
<td rowspan="9" width="68">
<p align="center">2</p>
</td>
<td width="64">
<p align="center">-</p>
</td>
<td width="126">
<p align="center">负号运算符</p>
</td>
<td width="144">
<p align="center">-表达式</p>
</td>
<td rowspan="9" width="72">
<p align="center">右到左</p>
</td>
<td width="86">
<p align="center">单目运算符</p>
</td>
</tr>
<tr>
<td width="64">
<p align="center">(类型)</p>
</td>
<td width="126">
<p align="center">强制类型转换</p>
</td>
<td width="144">
<p align="center">(数据类型)表达式</p>
</td>
<td width="86"></td>
</tr>
<tr>
<td width="64">
<p align="center">++</p>
</td>
<td width="126">
<p align="center">自增运算符</p>
</td>
<td width="144">
<p align="center">++变量名/变量名++</p>
</td>
<td width="86">
<p align="center">单目运算符</p>
</td>
</tr>
<tr>
<td width="64">
<p align="center">--</p>
</td>
<td width="126">
<p align="center">自减运算符</p>
</td>
<td width="144">
<p align="center">--变量名/变量名--</p>
</td>
<td width="86">
<p align="center">单目运算符</p>
</td>
</tr>
<tr>
<td width="64">
<p align="center">*</p>
</td>
<td width="126">
<p align="center">取值运算符</p>
</td>
<td width="144">
<p align="center">*指针变量</p>
</td>
<td width="86">
<p align="center">单目运算符</p>
</td>
</tr>
<tr>
<td width="64">
<p align="center">&amp;</p>
</td>
<td width="126">
<p align="center">取地址运算符</p>
</td>
<td width="144">
<p align="center">&amp;变量名</p>
</td>
<td width="86">
<p align="center">单目运算符</p>
</td>
</tr>
<tr>
<td width="64">
<p align="center">!</p>
</td>
<td width="126">
<p align="center">逻辑非运算符</p>
</td>
<td width="144">
<p align="center">!表达式</p>
</td>
<td width="86">
<p align="center">单目运算符</p>
</td>
</tr>
<tr>
<td width="64">
<p align="center">~</p>
</td>
<td width="126">
<p align="center">按位取反运算符</p>
</td>
<td width="144">
<p align="center">~表达式</p>
</td>
<td width="86">
<p align="center">单目运算符</p>
</td>
</tr>
<tr>
<td width="64">
<p align="center">sizeof</p>
</td>
<td width="126">
<p align="center">长度运算符</p>
</td>
<td width="144">
<p align="center">sizeof(表达式)</p>
</td>
<td width="86"></td>
</tr>
<tr>
<td rowspan="3" width="68">
<p align="center">3</p>
</td>
<td width="64">
<p align="center">/</p>
</td>
<td width="126">
<p align="center">除</p>
</td>
<td width="144">
<p align="center">表达式/表达式</p>
</td>
<td rowspan="3" width="72">
<p align="center">左到右</p>
</td>
<td width="86">
<p align="center">双目运算符</p>
</td>
</tr>
<tr>
<td width="64">
<p align="center">*</p>
</td>
<td width="126">
<p align="center">乘</p>
</td>
<td width="144">
<p align="center">表达式*表达式</p>
</td>
<td width="86">
<p align="center">双目运算符</p>
</td>
</tr>
<tr>
<td width="64">
<p align="center">%</p>
</td>
<td width="126">
<p align="center">余数（取模）</p>
</td>
<td width="144">
<p align="center">整型表达式/整型表达式</p>
</td>
<td width="86">
<p align="center">双