如果纯粹比较数字或字符,建议使用switch,因为它只会在一开始的switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值,效率的差异就在这儿。例如:
if(a == 1)
//...
else if(a == 2)
//...
else if(a == 3)
//...
这个程序片段在最差的状况下,也就是a = 3时,共需3次比较,而每次比较都必须取出变量a的值一次。如果换成switch:
switch(a)
{
case 1:
//...
break;
case 2:
//...
break;
case 3:
//...
break;
}
在这个程序片段中,只在开头switch的括号中取出变量a的值,然后逐一比较下面的case,效率的差别就在这儿。当然并不是使用if就不好,遇到复合条件时,switch就帮不上忙了,由于无法在switch中组合复杂的条件语句,这时就得使用if了。简单地说,if与switch两者可以搭配着灵活使用。
if(a == 1)
//...
else if(a == 2)
//...
else if(a == 3)
//...
这个程序片段在最差的状况下,也就是a = 3时,共需3次比较,而每次比较都必须取出变量a的值一次。如果换成switch:
switch(a)
{
case 1:
//...
break;
case 2:
//...
break;
case 3:
//...
break;
}
在这个程序片段中,只在开头switch的括号中取出变量a的值,然后逐一比较下面的case,效率的差别就在这儿。当然并不是使用if就不好,遇到复合条件时,switch就帮不上忙了,由于无法在switch中组合复杂的条件语句,这时就得使用if了。简单地说,if与switch两者可以搭配着灵活使用。
要用FAST-CGI模式,还要用非线程的PHP版本,但是ZEND 还没有NTS的PHP版本,,,唉!
http://forums.iis.net/t/1160823.aspx
zendcore是好东西,在win下,跑fastcgi。但我不是很喜欢这种集成的系统。我用2003跑fastchi,用nts版的5.2.4,运行的很好,但就是装不上ZendOptimizer,甚至把zendcore里面的ZendOptimizer.dll复制过来,把zendcore里面php.ini的[zend]参数复制到系统的php.ini,一样不能正确运行zo。
请问在win2003,iis6下跑fastcgi,用nts版本的php,怎么才能安装zo?
据专家近日评测报道,通过他们的实际测试发现,Windows Server 2008下的web应用程序性能可获得不错的提升。例如Windows Server 2008下通过FastCGI实现的PHP支持,对比Linux操作系统的PHP支持,可获得更快的运行速度。
通过以上图表可以看出,基于Windows Server 2008的PHP性能在用户介于200至3000范围时提升较为明显,但是在用户数达到4000的时候,Linux略有超出。总体而言,Windows Server 2008下的性能更为良好。
这些结果证明了Windows Server 2008的核心服务完全超出了预期,基本上不需要做出调整已经可以满足性能需求。
http://forums.iis.net/t/1160823.aspx
zendcore是好东西,在win下,跑fastcgi。但我不是很喜欢这种集成的系统。我用2003跑fastchi,用nts版的5.2.4,运行的很好,但就是装不上ZendOptimizer,甚至把zendcore里面的ZendOptimizer.dll复制过来,把zendcore里面php.ini的[zend]参数复制到系统的php.ini,一样不能正确运行zo。
请问在win2003,iis6下跑fastcgi,用nts版本的php,怎么才能安装zo?
据专家近日评测报道,通过他们的实际测试发现,Windows Server 2008下的web应用程序性能可获得不错的提升。例如Windows Server 2008下通过FastCGI实现的PHP支持,对比Linux操作系统的PHP支持,可获得更快的运行速度。
通过以上图表可以看出,基于Windows Server 2008的PHP性能在用户介于200至3000范围时提升较为明显,但是在用户数达到4000的时候,Linux略有超出。总体而言,Windows Server 2008下的性能更为良好。
这些结果证明了Windows Server 2008的核心服务完全超出了预期,基本上不需要做出调整已经可以满足性能需求。
第一次读这么长的帖,也是第一次看完这么长的帖。心里终于开始有点堵了,不得不一吐为快。
先说一下我自己吧,免得引起误会。我不是一个开发人员,仅仅是一个在准备考研的信息工程专业的学生,用了一年多的Linux,也算是开源爱好者吧!
似乎中国IT业目前最大的矛盾之一便是知识产权问题了:用不起正版的Windows,又都知道盗版不好。寻求解决办法,发现GPL软件、发现Linux似乎是个出路,可是客户需求的又必须是Windows的平台,因为他们只会用Win。如此一来,我们不得不盗版,不得不冠冕地祭出无数的理由来。。。。
我是不支持盗版的,但我也不支持现在坚决地打击盗版。因为的确是盗版把PC在中国乃至全世界普及开来,也正是盗版造成了Windows在全世界的垄断地位。我们已经快要到了离开盗版就不能使用计算机的时候了,试问那些坚决反对、打击盗版的人:我相信你的Windows,你的office是正版的。但是请问,你的其他工具也都是正版的吗?你用ACDsee吗?你用Acrobat吗?你用VB吗?你用.NET吗?你玩游戏吗?如果有,我敢打赌,你有盗版!不要拿出“我是用公司的软件,都是正版的”的理由,你的公司老板他多半也是中国人,这些软件都是他血汗钱买来的。不要不把别人的钱不当回事!
正如各位仁兄所说的,我们的国家底子薄,消费水平低。杜绝盗版将是一个长期的过程,10年能解决就算不错了。问题是,我们为什么要用盗版,不是有免费的开源软件吗?不是有Linux吗?!为什么盗版的问题依然在恶化着呢?没错,这就是矛盾!
全中国的人都只认Windows!这就是根源所在,是盗版创造了Windows的垄断地位,我们应该“后悔”、应该“反思”;但也是盗版普及了电脑,不是吗?我想,windows横行的原因,盗版是一方面,但决不是主要的一方面!
是教育!!!
为什么新开发的软件(主要是国产软件)市场打不开?为什么WPS相对便宜得多却还需要靠有限的政府采购维持发展?为什么Linux+GPL软件的操作系统发展得如此完善还依然只能在所谓“开源爱好者”的圈子里流行?为什么国家明令出厂计算机需要预装正版系统后第一个传来的却是和微软十几亿美元的采购合同而不是我们所期望的Linux?我想,教育!是我们的教育让Windows太横行了。
放眼望去,好奇心和求知欲最强的学生群体都装了什么操作系统?是Windows!现在的孩子们,哪一个不是从Win98、WinXP开始接触电脑的?哪一个不是从盗版游戏开始自己的计算机史的?Linux真的是不适合初学者吗?错!Linux是不适合有经验的Windows用户初学!
很多欧洲的年轻人(25岁左右)从一开始接触电脑就是Linux或者其他Unix系统,怎么没见他们抱怨Linux不好上手?试问,我们谁学Win98的时候不是先练个开机关机?连编辑个普通文档都要花个一节课学习?现在好了,你受Windows浸染了近十年,再来接触一个新的环境,发现不好对付还怪人家不好?那要好对付了还是新东西吗?
这样也就罢了,我们的教育倒是搞笑了。一边在叫嚷着素质教育,要响应国家号召提高创新研究能力,提倡着尊重知识产权。一边在学校的机房里大肆装着盗版Windows。初中、高中也就罢了,毕竟是打基础的时候。可大学呢?偌大一个大学,知道Linux的有几个人?用着,或者干脆更低级的,看过Linux系统什么样子的有几个人?国家的计算机等级考试又是在考些什么?什么Word、VB等等,拿出去也不怕别人笑话!我们大一的计算机基础教育课教的又是些什么东西?全中国有几个大学开设Linux系统方面的课程?你堂堂大学都不教Linux,堂堂的大学生都不知Linux和开源为何物,还怎么能让普通民众接受它?国家还叫嚣着支持开源,大把大把的钱投给红旗、麒麟,这不是往水里砸钱听个响又是什么?还不如拿这些钱去改善西部的基础教育。
所以我想说,大学的计算机教育,才是Windows横行而我们却无可奈何的根本原因!
撇开操作系统不谈,说说应用软件。
先说办公软件。OpenOffice.org和WPS的发展已经到了完全可以取代MS Office的地步,但是现实情况又是怎么样的呢?答:丑陋!2亿网民不知道有多少人知道OpenOffice是什么东西。大量的盗版Office装在普通民众的电脑上,这也就算了。而学校呢?却也依然如此!甚至一些大学教授的电脑上也是盗版横行,他们甚至也不知道office原来不单有盗版的免费,还有正版的免费呢!最具有讽刺意义的是,国内大部分大学的学生毕业论文居然强制性地要求doc格式!简直荒唐之极!!!PDF的格式他们都会不认,更别说LaTeX做出来的ps格式。可能有大量的教授博导们都不知道还有LaTeX这种东西吧!不知道他们去国外学术交流的时候怎么拿得出手他们的论文的!
再说说开发。我不是一个开发人员,甚至不是计算机科学专业的学生。但我多少知道gcc,知道php,perl和python。再看看我们国家的大学计算机专业的学生,谁不是有一堆.NET、MFC、ASP的书?谁的电脑上装的不是微软的Studio?而又有谁用gcc编译过程序?不知道的就算了,知道的也许也只认为gcc是个玩具罢了!我不是反对学.NET这类微软的东西,但开源的开发工具它也是科学,你为什么教学中丝毫都不涉及呢?像perl,python这些国外热用的语言,我们的计算机科班学生们又有多少会?又有多少人知道?!噢,你一个大学生,社会的栋梁都只知道微软的东西,都用他们来开发,将来走上社会又怎么可能不依靠微软的产品?又怎么可能不去买他们的软件?到了那时候,你再抱怨人家东西贵,你的盗版是生计所迫?天大的笑话!所以,计算机教育的“微软软件”化,是社会普遍依赖Windows的直接原因!
阅读全文
先说一下我自己吧,免得引起误会。我不是一个开发人员,仅仅是一个在准备考研的信息工程专业的学生,用了一年多的Linux,也算是开源爱好者吧!
似乎中国IT业目前最大的矛盾之一便是知识产权问题了:用不起正版的Windows,又都知道盗版不好。寻求解决办法,发现GPL软件、发现Linux似乎是个出路,可是客户需求的又必须是Windows的平台,因为他们只会用Win。如此一来,我们不得不盗版,不得不冠冕地祭出无数的理由来。。。。
我是不支持盗版的,但我也不支持现在坚决地打击盗版。因为的确是盗版把PC在中国乃至全世界普及开来,也正是盗版造成了Windows在全世界的垄断地位。我们已经快要到了离开盗版就不能使用计算机的时候了,试问那些坚决反对、打击盗版的人:我相信你的Windows,你的office是正版的。但是请问,你的其他工具也都是正版的吗?你用ACDsee吗?你用Acrobat吗?你用VB吗?你用.NET吗?你玩游戏吗?如果有,我敢打赌,你有盗版!不要拿出“我是用公司的软件,都是正版的”的理由,你的公司老板他多半也是中国人,这些软件都是他血汗钱买来的。不要不把别人的钱不当回事!
正如各位仁兄所说的,我们的国家底子薄,消费水平低。杜绝盗版将是一个长期的过程,10年能解决就算不错了。问题是,我们为什么要用盗版,不是有免费的开源软件吗?不是有Linux吗?!为什么盗版的问题依然在恶化着呢?没错,这就是矛盾!
全中国的人都只认Windows!这就是根源所在,是盗版创造了Windows的垄断地位,我们应该“后悔”、应该“反思”;但也是盗版普及了电脑,不是吗?我想,windows横行的原因,盗版是一方面,但决不是主要的一方面!
是教育!!!
为什么新开发的软件(主要是国产软件)市场打不开?为什么WPS相对便宜得多却还需要靠有限的政府采购维持发展?为什么Linux+GPL软件的操作系统发展得如此完善还依然只能在所谓“开源爱好者”的圈子里流行?为什么国家明令出厂计算机需要预装正版系统后第一个传来的却是和微软十几亿美元的采购合同而不是我们所期望的Linux?我想,教育!是我们的教育让Windows太横行了。
放眼望去,好奇心和求知欲最强的学生群体都装了什么操作系统?是Windows!现在的孩子们,哪一个不是从Win98、WinXP开始接触电脑的?哪一个不是从盗版游戏开始自己的计算机史的?Linux真的是不适合初学者吗?错!Linux是不适合有经验的Windows用户初学!
很多欧洲的年轻人(25岁左右)从一开始接触电脑就是Linux或者其他Unix系统,怎么没见他们抱怨Linux不好上手?试问,我们谁学Win98的时候不是先练个开机关机?连编辑个普通文档都要花个一节课学习?现在好了,你受Windows浸染了近十年,再来接触一个新的环境,发现不好对付还怪人家不好?那要好对付了还是新东西吗?
这样也就罢了,我们的教育倒是搞笑了。一边在叫嚷着素质教育,要响应国家号召提高创新研究能力,提倡着尊重知识产权。一边在学校的机房里大肆装着盗版Windows。初中、高中也就罢了,毕竟是打基础的时候。可大学呢?偌大一个大学,知道Linux的有几个人?用着,或者干脆更低级的,看过Linux系统什么样子的有几个人?国家的计算机等级考试又是在考些什么?什么Word、VB等等,拿出去也不怕别人笑话!我们大一的计算机基础教育课教的又是些什么东西?全中国有几个大学开设Linux系统方面的课程?你堂堂大学都不教Linux,堂堂的大学生都不知Linux和开源为何物,还怎么能让普通民众接受它?国家还叫嚣着支持开源,大把大把的钱投给红旗、麒麟,这不是往水里砸钱听个响又是什么?还不如拿这些钱去改善西部的基础教育。
所以我想说,大学的计算机教育,才是Windows横行而我们却无可奈何的根本原因!
撇开操作系统不谈,说说应用软件。
先说办公软件。OpenOffice.org和WPS的发展已经到了完全可以取代MS Office的地步,但是现实情况又是怎么样的呢?答:丑陋!2亿网民不知道有多少人知道OpenOffice是什么东西。大量的盗版Office装在普通民众的电脑上,这也就算了。而学校呢?却也依然如此!甚至一些大学教授的电脑上也是盗版横行,他们甚至也不知道office原来不单有盗版的免费,还有正版的免费呢!最具有讽刺意义的是,国内大部分大学的学生毕业论文居然强制性地要求doc格式!简直荒唐之极!!!PDF的格式他们都会不认,更别说LaTeX做出来的ps格式。可能有大量的教授博导们都不知道还有LaTeX这种东西吧!不知道他们去国外学术交流的时候怎么拿得出手他们的论文的!
再说说开发。我不是一个开发人员,甚至不是计算机科学专业的学生。但我多少知道gcc,知道php,perl和python。再看看我们国家的大学计算机专业的学生,谁不是有一堆.NET、MFC、ASP的书?谁的电脑上装的不是微软的Studio?而又有谁用gcc编译过程序?不知道的就算了,知道的也许也只认为gcc是个玩具罢了!我不是反对学.NET这类微软的东西,但开源的开发工具它也是科学,你为什么教学中丝毫都不涉及呢?像perl,python这些国外热用的语言,我们的计算机科班学生们又有多少会?又有多少人知道?!噢,你一个大学生,社会的栋梁都只知道微软的东西,都用他们来开发,将来走上社会又怎么可能不依靠微软的产品?又怎么可能不去买他们的软件?到了那时候,你再抱怨人家东西贵,你的盗版是生计所迫?天大的笑话!所以,计算机教育的“微软软件”化,是社会普遍依赖Windows的直接原因!
阅读全文
我想用DS18B20做一个测温电路,但是DS18B20固有的分辨率是0.5度,怎样用编程的方法使它的分辨率提高到0.1度,DS18B20的最高分辨率为0.065度.
回复:怎样提高DS18B20的精度
18B20最小分辨力是0.0625,把12位用int读出来除以16就行了
回复:怎样提高DS18B20的精度
我现在做的就是显示小数点后1位。
回复:怎样提高DS18B20的精度
哈哈,楼上的朋友把精度与分辨率混为一谈了。
DS18B20的测温精度是0.5度,分辨率是0.0625度。分辨率可以人为改变,测温精度是不能变的。
回复:怎样提高DS18B20的精度
楼上说是对,精度和分辨率是两回事。
但我还是没有看明白楼主的意思
选一款PT100,再选一款仪表,建议宇电的ai-708t
具体应用时标定。或PT100加XTR105加ai-708t那样分辨率更高。如果你们公司有标定环境,就好办。如果没有,那我感觉不太好办。给我的感觉0。1度的精度很高,虽然我们用的分辨率大于0。01度。
还有ai-708有数字标定功能,他们的精度都是0。2或0。5级的,工业环境。
回复:怎样提高DS18B20的精度
18B20最小分辨力是0.0625,把12位用int读出来除以16就行了
回复:怎样提高DS18B20的精度
我现在做的就是显示小数点后1位。
回复:怎样提高DS18B20的精度
哈哈,楼上的朋友把精度与分辨率混为一谈了。
DS18B20的测温精度是0.5度,分辨率是0.0625度。分辨率可以人为改变,测温精度是不能变的。
回复:怎样提高DS18B20的精度
楼上说是对,精度和分辨率是两回事。
但我还是没有看明白楼主的意思
选一款PT100,再选一款仪表,建议宇电的ai-708t
具体应用时标定。或PT100加XTR105加ai-708t那样分辨率更高。如果你们公司有标定环境,就好办。如果没有,那我感觉不太好办。给我的感觉0。1度的精度很高,虽然我们用的分辨率大于0。01度。
还有ai-708有数字标定功能,他们的精度都是0。2或0。5级的,工业环境。
前些日子访问O-blog 首页就看见了了了数字:"谁终将声震人间,必长久深自缄默;谁终将点燃闪电,必长久如云漂泊。就让我们只留下回忆!"。在论坛中管理员风色的答复是:"因为学业上的问题,我得离开一些日子。2.7暂时不开发了,不过如果现在的版本出现 BUG 或者安全漏洞,我会及时给出补丁。谢谢大家关注。O-blog 并没有死亡。 …… 因为离开的时候会比较长,比较长,比较长......"
一张完美无瑕的脸蛋,远不如一对傲人的双峰,更容易抓住男人的眼球。近日,英国《每日邮报》公布的一项最新研究显示,47%的男性在和异性面对面交流时,第一眼就会注意女性的胸部;其次,近1/3的人首先关注女性的腰部和臀部;只有不到20%的人会一眼望向女性的脸。
据了解,这项研究由新西兰惠灵顿大学完成。研究人员对一名普通女性的全身照进行了修改,如有的将胸部放大,有的则是模糊胸部形状。研究人员记录了受访者的一系列表现,如第一眼看哪里,来回看多少次,每次看多久。任何细微的眼神转动,都会被拍摄下来。结果显示,多数男性能精准地一眼在胸部定位;即使没有,也会在0.2秒内向那个区域移动。此外,无论其看着哪里,最后在交谈中,都会在胸部附近来回打转。
这一研究充分证明,胸部不仅能第一时间“收集”男性的视线,更能让他们长时间聚焦。研究人员表示,这项研究一方面显示了人的动物性,“胸部丰满、腰部纤细,可能意味着女性体内雌激素水平更高,其生育能力也更强。”另一方面,也许完全是本性使然,“无论大小,女性的胸部都会给男人以美好、愉悦的冲动。所以,男性难免会出于对女性的爱慕,而对这一部位怀有憧憬。”
据了解,这项研究由新西兰惠灵顿大学完成。研究人员对一名普通女性的全身照进行了修改,如有的将胸部放大,有的则是模糊胸部形状。研究人员记录了受访者的一系列表现,如第一眼看哪里,来回看多少次,每次看多久。任何细微的眼神转动,都会被拍摄下来。结果显示,多数男性能精准地一眼在胸部定位;即使没有,也会在0.2秒内向那个区域移动。此外,无论其看着哪里,最后在交谈中,都会在胸部附近来回打转。
这一研究充分证明,胸部不仅能第一时间“收集”男性的视线,更能让他们长时间聚焦。研究人员表示,这项研究一方面显示了人的动物性,“胸部丰满、腰部纤细,可能意味着女性体内雌激素水平更高,其生育能力也更强。”另一方面,也许完全是本性使然,“无论大小,女性的胸部都会给男人以美好、愉悦的冲动。所以,男性难免会出于对女性的爱慕,而对这一部位怀有憧憬。”
很久不上网了,今天又来“放水”。 既然您要问我,我也不妨告诉您。做企业其实并没有任何秘密,关键在于是否能够坚持而不浮躁,做技术同样如此,所以我专心做PHILIPS,适当做些其他的,只是不将产品信息放在网站上而已。第二我这个人有自知之明,我做不了“联想”这样的企业,我只做我喜欢的事情,所以说我是属于赚小钱的那种人,做不了大事。事实上销售芯片、做技术方案与技术支持,那都属于周立功公司的业务。 阅读全文
http://topic.csdn.net/u/20070929/14/b183cd03-d780-4c59-a666-ab127f12f7b1.html
#include <stdio.h>
void sift(int a[], int i, int n)/* i为根节点,n为节点总数 */
{
int child, tmp;
for (tmp = a[i]; n > 2 * i; i = child)
{
child = 2 * i; /* i的左孩子为2*i,右孩子为2*i+1 */
if ((child != n-1) && (a[child+1] > a[child])) /* 让child指向孩子中较大的一个 */
{
child++;
}
if (tmp < a[child])/* 如果孩子节点大 */
{
a[i] = a[child];/* 交换孩子节点和根节点 */
}
else
break;
}
a[i] = tmp; /* 将根放在合适位置 */
}
void heapsort(int a[],int n)/* 对a[1...n]进行排序 */
{
int i, tmp;
for (i = n / 2; i >= 0; i--)/* 建立初始堆 */
{
sift(a, i, n);
}
for (i = n - 1; i > 0; i--)/* 进行n-1趟排序 */
{
tmp = a[0]; /* 交换堆顶元素和最后一个元素 */
a[0] = a[i];
a[i] = tmp;
sift(a, 0, i); /* 将a[1..n-1]重建为堆 */
}
}
int main(int argc, char* argv[])
{
int a[7] = {8,9,3,5,1,6,4};
int i;
heapsort(a, 7);
for (i = 0; i < 7; i++)
printf("%d \n", a[i]);
return 0;
}
#include <stdio.h>
#define PARENT(i) i >> 1
#define LEFT(i) i << 1
#define RIGHT(i) (i << 1) + 1
#define HeapBase 1
long HeapSize = 0;
void Exchange(long* a, long* b)
{
long t = 0;
t = *a;
*a = *b;
*b = t;
}
void MaxHeapify(long* Ary, long i)
{
long l = LEFT(i);
long r = RIGHT(i);
long largest = 0;
if (l <= HeapSize)
{
if (*(Ary + l) > *(Ary + i))
largest = l;
else
largest = i;
}
if (r <= HeapSize)
if (*(Ary + r) > *(Ary + largest)) largest = r;
if ((largest != i) && (largest >= HeapBase) && (largest <= HeapSize))
{
Exchange(Ary + i, Ary + largest);
MaxHeapify(Ary, largest);
}
}
void BuildMaxHeap(long* Ary)
{
long i = 0;
for (i = HeapSize / 2; i >= HeapBase; i--)
{
MaxHeapify(Ary, i);
}
}
//Ary[1..n]
void HeapSort(long* Ary, long dwSize)
{
long i = 0;
HeapSize = dwSize;
BuildMaxHeap(Ary);
for (i = dwSize; i >= HeapBase; i--)
{
Exchange(Ary + HeapBase, Ary + i);
HeapSize--;
MaxHeapify(Ary, HeapBase);
}
}
int main()
{
long a[4] = {0};
a[1] = 2;
a[2] = 1;
a[3] = 8;
HeapSort(a, 3);
printf("%ld\n", a[1]);
printf("%ld\n", a[2]);
printf("%ld\n", a[3]);
return 0;
}
#include <stdio.h>
void sift(int a[], int i, int n)/* i为根节点,n为节点总数 */
{
int child, tmp;
for (tmp = a[i]; n > 2 * i; i = child)
{
child = 2 * i; /* i的左孩子为2*i,右孩子为2*i+1 */
if ((child != n-1) && (a[child+1] > a[child])) /* 让child指向孩子中较大的一个 */
{
child++;
}
if (tmp < a[child])/* 如果孩子节点大 */
{
a[i] = a[child];/* 交换孩子节点和根节点 */
}
else
break;
}
a[i] = tmp; /* 将根放在合适位置 */
}
void heapsort(int a[],int n)/* 对a[1...n]进行排序 */
{
int i, tmp;
for (i = n / 2; i >= 0; i--)/* 建立初始堆 */
{
sift(a, i, n);
}
for (i = n - 1; i > 0; i--)/* 进行n-1趟排序 */
{
tmp = a[0]; /* 交换堆顶元素和最后一个元素 */
a[0] = a[i];
a[i] = tmp;
sift(a, 0, i); /* 将a[1..n-1]重建为堆 */
}
}
int main(int argc, char* argv[])
{
int a[7] = {8,9,3,5,1,6,4};
int i;
heapsort(a, 7);
for (i = 0; i < 7; i++)
printf("%d \n", a[i]);
return 0;
}
#include <stdio.h>
#define PARENT(i) i >> 1
#define LEFT(i) i << 1
#define RIGHT(i) (i << 1) + 1
#define HeapBase 1
long HeapSize = 0;
void Exchange(long* a, long* b)
{
long t = 0;
t = *a;
*a = *b;
*b = t;
}
void MaxHeapify(long* Ary, long i)
{
long l = LEFT(i);
long r = RIGHT(i);
long largest = 0;
if (l <= HeapSize)
{
if (*(Ary + l) > *(Ary + i))
largest = l;
else
largest = i;
}
if (r <= HeapSize)
if (*(Ary + r) > *(Ary + largest)) largest = r;
if ((largest != i) && (largest >= HeapBase) && (largest <= HeapSize))
{
Exchange(Ary + i, Ary + largest);
MaxHeapify(Ary, largest);
}
}
void BuildMaxHeap(long* Ary)
{
long i = 0;
for (i = HeapSize / 2; i >= HeapBase; i--)
{
MaxHeapify(Ary, i);
}
}
//Ary[1..n]
void HeapSort(long* Ary, long dwSize)
{
long i = 0;
HeapSize = dwSize;
BuildMaxHeap(Ary);
for (i = dwSize; i >= HeapBase; i--)
{
Exchange(Ary + HeapBase, Ary + i);
HeapSize--;
MaxHeapify(Ary, HeapBase);
}
}
int main()
{
long a[4] = {0};
a[1] = 2;
a[2] = 1;
a[3] = 8;
HeapSort(a, 3);
printf("%ld\n", a[1]);
printf("%ld\n", a[2]);
printf("%ld\n", a[3]);
return 0;
}
一个普通朋友见了你点头微笑,一个真正朋友见了你没有问候;
阅读全文
阅读全文
一个成功的人如何定义成功?一个成功的人如何从成功中获得启发?这个命题无疑会让许多人充满了悬念与期待.2008年11月30日下午,北京青年报大厦的 20层大会议室迎来了北青教育大讲堂活动开办以来最爆满的盛况,谷歌全球副总裁、大中华区总裁李开复的到来,让许多人对于成功的定义有了崭新的认识.阅读全文
LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
对于大流量、大并发量的网站系统架构来说,除了硬件上使用高性能的服务器、负载均衡、CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS)、高性能的网页服务器(Web Server)、高性能的数据库(Databse)、高效率的编程语言等。下面我将从这几点对其一一讨论。
操作系统
Linux操作系统有很多个不同的发行版,如Red Hat Enterprise Linux、SUSE Linux Enterprice、Debian、Ubuntu、CentOS等,每一个发行版都有自己的特色,比如RHEL的稳定,Ubuntu的易用,基于稳定性和性能的考虑,操作系统选择CentOS(Community ENTerprise Operating System)是一个理想的方案。
CentOS(Community ENTerprise Operating System)是Linux发行版之一,是RHEL/Red Hat Enterprise Linux的精简免费版,和RHEL为同样的源代码,不过,RHEL和SUSE LE等企业版,提供的升级服务均是收费升级,无法免费在线升级,因此要求免费的高度稳定性的服务器可以用CentOS替代Red Hat Enterprise Linux使用。
LAMP网站架构图
Web服务器、缓存和PHP加速
Apache是LAMP架构最核心的Web Server,开源、稳定、模块丰富是Apache的优势。但Apache的缺点是有些臃肿,内存和CPU开销大,性能上有损耗,不如一些轻量级的Web服务器(例如nginx)高效,轻量级的Web服务器对于静态文件的响应能力来说远高于Apache服务器。
Apache做为Web Server是负载PHP的最佳选择,如果流量很大的话,可以采用nginx来负载非PHP的Web请求。nginx是一个高性能的HTTP和反向代理服务器,Nginx以它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx不支持PHP和CGI等动态语言,但支持负载均衡和容错,可和Apache配合使用,是轻量级的HTTP服务器的首选。
Web服务器的缓存也有多种方案,Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。Squid Cache是一个Web缓存服务器,支持高效的缓存,可以作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,把Squid放在Apache的前端来缓存Web服务器生成的动态内容,而Web应用程序只需要适当地设置页面实效时间即可。如访问量巨大则可考虑使用memcache作为分布式缓存。
PHP的加速使用eAccelerator加速器,eAccelerator是一个自由开放源码PHP加速器,优化和动态内容缓存,提高了性能PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使PHP程序代码执效率能提高1-10倍。
具体的解决方案有以下几种:
1、squid + Apache + PHP + eAccelerator
使用Apache负载PHP,使用squid进行缓存,html或图片的请求可以直接由squid返回给用户。很多大型网站都采用这种架构。
2、nginx/Apache + PHP(fastcgi) + eAccelerator
使用nginx或Apache负载PHP,PHP使用fastcgi方式运行,效率较高。
3、nginx + Apache + PHP + eAccelerator
此方案综合了nginx和Apache的优点,使用Apache负载PHP,nginx负责解析其他Web请求,使用nginx的rewrite模块,Apache端口不对外开放。
数据库
开源的数据库中,MySQL在性能、稳定性和功能上是首选,可以达到百万级别的数据存储,网站初期可以将MySQL和Web服务器放在一起,但是当访问量达到一定规模后,应该将MySQL数据库从Web Server上独立出来,在单独的服务器上运行,同时保持Web Server和MySQL服务器的稳定连接。
当数据库访问量达到更大的级别,可以考虑使用MySQL Cluster等数据库集群或者库表散列等解决方案。
总的来说,LAMP架构的网站性能会远远优于Windows IIS + ASP + Access(例如月光博客)这样的网站,可以负载的访问量也非常大,国内的大量个人网站如果想要支撑大访问量,采用LAMP架构是一个不错的方案。
综上所述,基于LAMP架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是Web网络应用和环境的优秀组合。
对于大流量、大并发量的网站系统架构来说,除了硬件上使用高性能的服务器、负载均衡、CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS)、高性能的网页服务器(Web Server)、高性能的数据库(Databse)、高效率的编程语言等。下面我将从这几点对其一一讨论。
操作系统
Linux操作系统有很多个不同的发行版,如Red Hat Enterprise Linux、SUSE Linux Enterprice、Debian、Ubuntu、CentOS等,每一个发行版都有自己的特色,比如RHEL的稳定,Ubuntu的易用,基于稳定性和性能的考虑,操作系统选择CentOS(Community ENTerprise Operating System)是一个理想的方案。
CentOS(Community ENTerprise Operating System)是Linux发行版之一,是RHEL/Red Hat Enterprise Linux的精简免费版,和RHEL为同样的源代码,不过,RHEL和SUSE LE等企业版,提供的升级服务均是收费升级,无法免费在线升级,因此要求免费的高度稳定性的服务器可以用CentOS替代Red Hat Enterprise Linux使用。
LAMP网站架构图
Web服务器、缓存和PHP加速
Apache是LAMP架构最核心的Web Server,开源、稳定、模块丰富是Apache的优势。但Apache的缺点是有些臃肿,内存和CPU开销大,性能上有损耗,不如一些轻量级的Web服务器(例如nginx)高效,轻量级的Web服务器对于静态文件的响应能力来说远高于Apache服务器。
Apache做为Web Server是负载PHP的最佳选择,如果流量很大的话,可以采用nginx来负载非PHP的Web请求。nginx是一个高性能的HTTP和反向代理服务器,Nginx以它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx不支持PHP和CGI等动态语言,但支持负载均衡和容错,可和Apache配合使用,是轻量级的HTTP服务器的首选。
Web服务器的缓存也有多种方案,Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。Squid Cache是一个Web缓存服务器,支持高效的缓存,可以作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,把Squid放在Apache的前端来缓存Web服务器生成的动态内容,而Web应用程序只需要适当地设置页面实效时间即可。如访问量巨大则可考虑使用memcache作为分布式缓存。
PHP的加速使用eAccelerator加速器,eAccelerator是一个自由开放源码PHP加速器,优化和动态内容缓存,提高了性能PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使PHP程序代码执效率能提高1-10倍。
具体的解决方案有以下几种:
1、squid + Apache + PHP + eAccelerator
使用Apache负载PHP,使用squid进行缓存,html或图片的请求可以直接由squid返回给用户。很多大型网站都采用这种架构。
2、nginx/Apache + PHP(fastcgi) + eAccelerator
使用nginx或Apache负载PHP,PHP使用fastcgi方式运行,效率较高。
3、nginx + Apache + PHP + eAccelerator
此方案综合了nginx和Apache的优点,使用Apache负载PHP,nginx负责解析其他Web请求,使用nginx的rewrite模块,Apache端口不对外开放。
数据库
开源的数据库中,MySQL在性能、稳定性和功能上是首选,可以达到百万级别的数据存储,网站初期可以将MySQL和Web服务器放在一起,但是当访问量达到一定规模后,应该将MySQL数据库从Web Server上独立出来,在单独的服务器上运行,同时保持Web Server和MySQL服务器的稳定连接。
当数据库访问量达到更大的级别,可以考虑使用MySQL Cluster等数据库集群或者库表散列等解决方案。
总的来说,LAMP架构的网站性能会远远优于Windows IIS + ASP + Access(例如月光博客)这样的网站,可以负载的访问量也非常大,国内的大量个人网站如果想要支撑大访问量,采用LAMP架构是一个不错的方案。
综上所述,基于LAMP架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是Web网络应用和环境的优秀组合。
第一类是异物入侵导致的慢性咽炎,如经常吸入有毒有害的气体,刺激呼吸道,破坏粘膜,导致病菌入侵而成慢性咽炎。这类慢性咽炎很少见,并且会同时有鼻炎、支气管炎和肺炎出现。阅读全文
普通石英电子表每日误差小于0.5秒,是机械表的几十分之一,这主要归功于石英表中石英振荡器高而稳定的振荡频率。频率高走时准的道理,是人们在长期研究如何提高钟表走时准确的过程中发现的一个原理,振荡器的频率越高,振荡越稳定,抗干扰能力越强,手表就越准确.石英电子表的振荡频率为32768Hz,要比普通快摆机械表每秒3Hz的频率高1万倍.因此石英电子表要比机械手表准确得多.另外机械手表由于表身结构问题,受地球引力作用,水平位置和竖直位置的偏移会产生位差,发条从上紧到放松,力矩不平衡,在加之受外界温度、磁场、 震动等影响,机械手表即使再提高一些频率,也不可能达到石英电子表的精度。