深入理解按位异或运算符

发表时间:2011-02-12 03:01:55 文章分类:IT周边 阅读:26252
参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。即:   0^0 = 0,      1^0 = 1,      0^1 = 1,      1^1 = 0例如:10100001^00010001=10110000按位异或的3个特点:(1) 0^0=0,0^1=1  0异或任何数=任何数(2) 1^0=1,1^1=0  1异或任何数-任何数取反(3)              任何数异或自己=把自己置0                 按位异或的几个常见用途:(1) 使某些特定的位翻转    例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。       10100001^00000110 = 10100111(2) 实现两个值的交换,而不必使用临时变量。    例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:    a = a^b;   //a=10100111    b =

用于微软云计算的新PHP开发工具Companion

发表时间:2011-02-11 10:03:15 文章分类:IT周边 阅读:6314
近日,针对PHP开发人员和那些对Windows Azure上部署应用程序感兴趣的管理员带来了一个惊喜,Windows Azure Companion ,这是微软新发布的一个新工具。更新了Windows Azure Tools for Eclipse for PHP和Windows Azure Command-line Tools for PHP。只有Windows Azure Companion是全新的工具,其他的都是更新或者老工具/SDK的新版本。Windows Azure Companion能用来在Azure上安装PHP平台组件(PHP运行时、扩展)或者PHP Web应用程序。Windows Azure Companion使用Atom订阅源作为配置文件,其中包含了想要运行的Web应用程序所需组件的名称和URL。Vijay Rajagopalan,微软互操作策略部门(Interoperability Strategy)的首席构架师说道:Companion的早期版本主要针对PHP的,不过它可以扩展成部署“任何开源组件或应用程序到Windows Azure中运行”。Rajagopalan没有解释哪些非PHP Web应用程序可以部署到Azure中,不过似乎通过编辑订阅源和使用Companion就可以实现。Windows Azure for Eclipse for PHP September CTP更新了Eclipse插件,以支持在2010年6月发布的Windows Azure SDK 1.2中的最新增强,也为11月最终版做好准备。新特性有:◆在启用了SSL的HTTP端点上托管PHP应用程序◆在PHP编辑器中支持Windows Azure的代码模板◆Windows Azure诊断支持◆集成开源的AppFabric SDK for PHP Developers◆支持在Worker Role中执行P

时间换空间的方案解决嵌入式系统中性能问题

发表时间:2011-02-11 10:02:48 文章分类:IT周边 阅读:9109
时间换空间的方案解决性能问题的情形比较少。有时会出现在对内存要求十分苛刻的地方,比如嵌入式操作系统中。程序设计的要求是不设中间变量,交换两个变量的值。我们通常的中间变量的解决方案是:[img]http://tech.ccidnet.com/col/attachment/2010/10/2086449.jpg[/img]但这里需要在程序中为temp变量在栈上分配一个空间。可不可以不用这个temp变量呢?解决:修改程序如下:[img]http://tech.ccidnet.com/col/attachment/2010/10/2086451.jpg[/img]原理:修改之后,多了运算复杂度,但没有使用第三方变量,减少了空间的占用。

如何彻底消除软件对空间和时间不必要的浪费

发表时间:2011-02-11 10:01:24 文章分类:IT周边 阅读:6974
软件的高性能并不是凭空产生的,在解决了空间和时间浪费的问题之后,如果用户还有更高的性能要求,我们软件人员只好“偷梁换柱”,做一下调整,而这种调整往往是很灵活的。空间换时间是软件人员解决性能问题最常见的方法。是在系统功能正常的前提下增大软件空间开销的方法来缩减运行的时间。一般的方法有算法调整、并行计算方法、体系结构方法和一些不是“办法”的办法。通常的解决方案有Cache缓存、数据库的index等。
案例:一个动态网站服务器总发生CPU耗尽的问题,因此造成给用户的响应缓慢或者长时间没有响应,进而引起Server的宕机。经调查分析,网站首页是个PHP程序,每次用户访问都要多次查询数据库,也没有Cache机制,数据库查询负荷过高,耗尽CPU。
解决:改写网站首页以及部分频繁访问的程序,增加Cache机制,减少数据库访问。原理:将常用数据放在服务器的内存中,虽然增加了内存的开销,但带来了时间上的优化,对用户而言,提高了处理速度。

如何去破解开发人员视为大忌的内存泄漏问题

发表时间:2011-02-11 10:00:00 文章分类:IT周边 阅读:32517
严格地说,内存泄漏应该属于软件程序设计的一种缺陷,该缺陷直接导致了程序在运行过程中无法释放不再需要的内存空间,从而造成内存资源浪费,严重的会造成无可用内存,导致系统崩溃。具体来说,当用户程序在运行过程中需要动态获得内存时,操作系统总是从堆(heap)上分配相应的空间给应用,分配的结果是将该堆内存的起始地址通过指针返回给应用。正常情况下,使用完这块内存后,应通过系统调用主动通知操作系统回收这些堆内存以便重用。但是,如果由于设计缺陷导致在某些情况下程序没有主动地通知到操作系统,而后应用又失去了对这块内存的引用时,则该堆内存块将成为既不受程序控制,又不能被系统回收重用的“孤儿”内存,这便是我们所指的内存泄漏。案例1[img]http://tech.ccidnet.com/col/attachment/2010/10/2086421.jpg[/img]解决:C语言中malloc和free函数要配对使用。案例2[img]http://tech.ccidnet.com/col/attachment/2010/10/2086423.jpg[/img]解决:在程序堆上分配内存后,要在使用完后及时释放,同时避免野指针的产生,比如string1。原理:内存是软件运行的重要的空间资源,内存泄漏实际上是浪费了软件的空间资源。因此,内存泄漏对软件的性能影响十分重要。另外,对于程序在时间上的浪费,我们通常是采用优化算法和数据结构的解决策略。案例3最近几年,很多知名软件公司在招聘软件测试人员,考察代码能力的时候,内存泄露和算法优化是经常的试题之一。这说明了用户对软件性能的要求越来越严格,已经传递到了软件公司。