发布新日志

  • 从UNIX/Linux访问Windows共享目录

    2012-01-05 12:50:51

    Windows网络共享的核心是SMB/CIFS,在linux下要挂接(mount)windows的磁盘共享,就必须安装和使用samba软件包。现在流行的linux发行版绝大多数已经包含了samba软件包,如果安装linux系统时未安装samba请首先安装samba。当然也可以到http://www.samba.org/网站下载。
     
    查看是否安装samba:
    首先验证您的机器中是否已经安装samba 


    rpm -qa|grep samba,如果出现
    samba-common-2.2.7a-7.9.0
    samba-client-2.2.7a-7.9.0
    samba-2.2.7a-7.9.0
    那么恭喜你,你已经安装好了samba,如果没有以上那些东东,请安装,

          当windows系统共享设置好以后,就可以在linux客户端挂接(mount)了,具体操作如下:  
    # mkdir –p /mnt/win   
    # mount -t smbfs -o username=administrator,password=test123  //IP地址/共享目录名   /mnt/win
    如:
    mount -t smbfs -o username=test,password=swqa#123 //192.168.25.50/rc.icafe8.net /mnt/win
     
     
    执行命令时提示:mount: unknown filesystem type 'smbfs'
    系统已经不能识别smbfs文件系统了

    查资料说RHE5的kernel已经不再支持smbfs,而改用Common Internet File Systemcifs(cifs)取代了原有的smbfs,猜想fc6也做了这个改动,所以命令就改为:
    # mount -t cifs -o username=xxx,password=xxx //hostname/dir /mnt/tmp

    很顺利地mount上了

  • [转] 我的助理辞职了!——我想大家对这篇文章应该很有感触

    2012-01-04 15:22:27

    无意间在一个朋友的qq空间上看到这篇文章,很有感触,转载出来跟大家分享。

    讲述的是一个人如果在工作上有所成就,就应该从点滴做起,用心学习,持之以恒,并保持良好的心态和工作态度。

    当时公司招了大批应届本科和研究生毕业的新新人类。平均年龄25岁。那个新的助理,是经过多次面试后,我亲自招回来的一个女孩。名牌大学本科毕业,聪明,性格活泼。私下里我得承认,我招她的一个很重要的原因,除了她在大学里优秀的表现之外,还因为她写了一手漂亮的字。女孩能写一手好字的不多,尤其像她,看起来长发飘飘,多么女性化的一个姑娘,一手字却写的铿锵倜傥,让我对她不由多了很多好感。 ­   ­
      手把手的教。从工作流程到待人接物。她也学的快。很多工作一教就上手。一上手就熟练。跟各位同事也相处的颇融洽。我开始慢慢的给她一些协调的工作,各部门之间以及各分公司之间的业务联系和沟通让她尝试着去处理。 ­
       ­
      开始经常出错。她很紧张,来找我谈。我告诉她:错了没关系,你且放心按照你的想法去做。遇到问题了,来问我,我会告诉你该怎么办。仍然错。又来找我,这次谈的比较深入,她的困惑是,为什么总是让她做这些琐碎的事情?我当时问她:什么叫做不琐碎的工作呢? ­
      她答不上来,想了半天,跟我说:我总觉得,我的能力不仅仅能做这些,我还能做一些更加重要的事情。那次谈话,进行了1小时。我知道,我说的话,她没听进去多少。后来我说,先把手头的工作做好,先避免常识性错误的发生。然后循序渐进罢。 ­
       ­
      半年以后,她来找我,第一次提出辞职。我推掉了约会,跟她谈辞职的问题。问起辞职的原因,她跟我直言:本科四年,功课优秀,没想到毕业后找到了工作,却每天处理的都是些琐碎的事情。没有成就感。我又问她:你觉得,在你现在所有的工作中,最没有意义的最浪费你的时间精力的工作,是什么?她马上答我:帮您贴发票,然后报销,然后到财务去走流程,然后把现金拿回来给您。 ­
       ­
      我笑着问她:你帮我贴发票报销有半年了吧?通过这件事儿,你总结出了一些什么信息? ­
       ­
    她呆了半天,答我:贴发票就是贴发票,只要财务上不出错,不就行了呗,能有什么信息? ­
       ­
      我说,我来跟你讲讲,当年我的做法吧:98年的时候,我从财务被调到了总经理办公室,担任总经理助理的工作。其中有一项工作,就是跟你现在做的一样,帮总经理报销他所有的票据。本来这个工作就像你你刚才说的,把票据贴好,然后完成财务上的流程,就可以了。 ­
      其实票据是一种数据记录,它记录了和总经理乃至整个公司营运有关的费用情况。看起来没有意义的一堆数据,其实它们涉及到了公司各方面的经营和运作。于是我建立了一个表格,将所有总经理在我这里报销的数据按照时间,数额,消费场所,联系人,电话等等记录下来。­
      我起初建立这个表格的目的很简单,我是想在财务上有据可循,同时万一我的上司有情况来询问我的时候,我会有准确的数据告诉他。通过这样的一份数据统计,渐渐的我发现了一些上级在商务活动中的规律,比如,哪一类的商务活动,经常在什么样的场合,费用预算大概是多少;总经理的公共关系常规和非常规的处理方式。等等等等。 ­
      当我的上级发现,他布置工作给我的时候,我会处理的很妥贴。有一些信息是他根本没有告诉我的,我也能及时准确的处理。他问我为什么,我告诉了他我的工作方法和信息来源。 ­
      渐渐的,他基于这种良性积累,越来越多的交待更加重要的工作。再渐渐的,一种信任和默契就此产生,我升职的时候,他说我是他用过的最好用的助理。 ­
       ­
      说完这些长篇大论,我看着这个姑娘,她愣愣的看着我。我跟她直言:我觉得你最大的问题,是你没有用心。在看似简单不动脑子就能完成的工作里,你没有把你的心沉下去,所以,半年了,你觉得自己没有进步。她不出声。但是收回了辞职报告。 ­
    又坚持了3个月,她还是辞职了。这次我没有留她。让她走了。 ­
      后来她经常在MSN上跟我聊天。告诉我她的新工作的情况。一年内,她换了三份工作。每一次都坚持不了多久。每一次她都说新的工作不是她想要的工作。05年的时候,她又一次辞职了。很苦恼,跑来找我,要跟我吃饭。我请她去写字楼后面的商场吃日本料理。吃到中途,忽然跟我说:我有些明白你以前说的话是什么意思了。 ­
       ­
      所谓的职业生涯,其实你很难预测到你将来真正要从事什么工作,将来所要从事的工作,是否跟你在大学里学的专业有关。大多数人,很有可能将来所作的工作,跟他当初所学的专业一点关系都没有。从22岁大学毕业在26岁之间这四年,重要的不是你做了什么,重要的是你在工作中养成了怎么样的良好的工作习惯。这个良好的工作习惯,指的是:认真,踏实的工作作风,以及是否学会了如何用最快的时间接受新的事物,发现新事物的内在规律,比别人更短时间内掌握这些规律并且处理好它们。具备了以上的要素,你就成长为一个被人信任的工作的人。 ­
       ­
      人都有惰性,也都愿意用那些用起来顺手的人。当你具备了被人信任的基础,并且在日常的工作中逐渐表现出你的踏实,聪明,和细致的时候,越来越多的工作机会就会提供到你面前。原因很简单,用一句话就能交代清楚并且能被你顺利完成的工作,谁愿意说三句话甚至半小时交待一个怎么都不明白的人呢?沟通也是一种成本,沟通的时间越少,内耗越少,这是作为管理者最清楚的一件事。 ­
       ­
      当你有比别人更多的工作机会去接触那些你没有接触过的工作的时候,你就有了比别人多的学习机会,人人都喜欢聪明勤奋的学生,作为管理者,大概更是如此。 ­
       ­
      一个新手,大多数新手,在这四年里,是看不出太大的差距的。但是这四年的经历,为以后的职业生涯的发展奠定的基础,是至关重要的。很多人不在乎年轻时走弯路,很多人觉得日常的工作人人都能做好没什么了不起。然而就是这些简单的工作,循序渐进的、隐约的,成为今后发展的分水岭。 ­
    漫不经心的对待基层工作的最大的损失,就是将看似简单的事物性处理方式,分界成为长远发展的能力问题。 ­
       ­
      聪明的人,总是不认为自己的能力有问题。时间长了,他会抱怨自己运气不好,抱怨那些看起来资质普通的人,总能比自己更能走狗屎运。抱怨她容貌比自己好,或者他更会讨领导欢心。等等等等。慢慢的,影响心态。所谓的怀才不遇,有时是这种情况。 ­
       ­
      工作需要一个聪明人,工作其实更需要一个踏实的人。在聪明和踏实之间,我更愿意选择后者。 ­

     

  • 【转】监控Tomcat服务器性能

    2012-01-04 15:16:55

    转自:http://www.51testing.com/?uid-217803-action-viewspace-itemid-805600

    在进行性能测试时,一般都需要对应用服务器进行监控,监控的指标包括应用服务器的JVM使用状况、可用连接数、队列长度等信息。商业的应用服务器如WebLogicWebSphere等都提供了Console对这些指标进行监控,在性能测试时可以很容易观察这些指标的情况。

      Tomcat作为在国内得到广泛应用的J2EE服务器,在不少项目中都得到了使用。Tomcat小巧灵活、配置简单,非常适合小的WEB应用使用。但在对使用Tomcat的应用系统进行性能测试时,最头疼的问题就是不能获得应用服务器的相关性能指标数据。

      其实,从Tomcat 5.0开始,Tomcat就已经为自己提供了一个用于监控应用服务器性能指标的servelet —— status servelet。安装完Tomcat 5之后,通过访问http://yourhost:port/manager/status就可以获得当时的应用服务器监控数据。

      当然,为了安全起见,Tomcat 5在缺省安装时是不允许用户直接访问http://yourhost:port/manager/status的,访问的时候会给出一个403(forbidden)的错误信息。在Tomcat的Manual里说明了允许用户访问的方法:

       1. 转到Tomcat的安装目录下;
       2. 修改conf/tomcat-users.xml文件,在其中加入一行  <user username="servermon" password="passwd" roles="manager"/>

      这样就可以在访问http://yourhost:port/manager/status时给出 servermon 的用户名与口令,查看到应用服务器的相关性能指标数据。


     

  • 【转】在做性能测试之前需要知道什么

    2012-01-04 15:06:58

    转自:http://www.51testing.com/html/61/n-249061.html

    最近群里来了很多新朋友,大都是新做测试或准备做测试工作的,见好多新手上来就问关于LoadRunner的使用上的问题。对性能测试的理解也不是太清楚。公司说让他们对系统做个性能测试,他们听说LoadRunner是做性能测试的,在网上找了点LoadRunner的使用说明就开始对系统下刀了。对于一些大公司的专业性能测试人员来说,这个很可笑,但是这种情况是存在的,我当初刚到公司时也这么干的。

      那时还真把性能测报告给整出来了,现在看来那报告没有任何意义。虽然对现在的我来说性能测试也只是只懂皮毛。但还是希望通过我这篇文章能让那些新手们对于性能测试有个入门的了解。

      ----//理发店模式

      关于理解性能,记得我那时是看了“《LoadRunner没有告诉你的》之三---理发店模式”不管你有没有看过,我这重提一下理发店模式。

      前提:

      1、一个理发店有三位理发师傅

      2、每位理发师傅理一个发需要一小时

      3、顾客都很忙,从进理发店起最多只等三小时(等待时间+理发时间),如果三小时后还没轮到自己理发,立马走人。

      思考:

      这里我们来理解“最佳用户数”和“最大用户数”。

      最佳用户数:

      理发店的最佳状态,理发店收入最多(理发师傅没有休息时间,一直在理发),顾客满意度最高(顾客随时到随时理,无需要等待)。在一个时间点来说,三个理发师傅服务于三位顾客,那么这个最佳用户数是三。

      最大用户数:

      理发店的最大承受状态,理发店收入最多(理发师傅没有休息时间,一直在理发),顾客的最大忍耐度(来的顾客等待+理发需要等上三个小时)。

      假如理发店生意非常好,早上一开门一下子来了一群顾客(很多),A、B、C三位顾客先理,D、E、F顾客需要等待一小时才能得到理发师傅的服务,G、H、I三位顾客等待了两小时才得到服务,后面排队的J、K、L.....等顾客,已经等了三小时还没得到服务,因为这已经得达到了他们等待的极限,所以后他们气愤和无奈离开。

      当然,理发店还会不断的来新的顾客,不断有等了三小时而没有得到服务的顾客离开,但对于理发店而言,他们在一个时间点上,能服务的最大用户数是九(三位正在接受服务、三位已经等待一小时,三们已经等待两小时)。

      对于最大用户数,需要注意的两点:

      1、在理发店里很大,可以容纳很多位顾客(大于9),总有一部分在这里等待了三小时而没有得到服务离开,不要把等待了三小而没有得到服务的顾客纳入最大用户数里。

      2、假如理发店很小,最多只能容纳六位顾客,当第七个顾客来时,虽然,我们知道他只需要等待两小时就可得到服务(这个时间是他可以接受的等待时间),但由于理发店容量有量,这第七个顾客只有改天再来了。

      关于理发店原理,详细请浏览http://www.51testing.com/html/58/n-10558.html

      不知道通过上面对理发店的分析,你对性能有了一些眉目。假如理发店相当于我们的系统的话,顾客就我们向服务器所发送的请求,最佳用户数和最大用户数是我们衡量一个系统的处理能力的一种方法。

    ----//要帐的模式

      注:上图是自己找来修改的,凑合着看吧!呵呵

      这个是我在给一朋友说浏览器与服务器之间交流时用到的例子,感觉比容易理解,所以拿来分享一下。

      假设:

      1)A、B、C三个人。

      2)C欠A钱(这里不考虑多少)

      3)B是专门要账

      思考:

      浏览器与服务器的信息传递次数:

      A对B说,C欠我钱,你帮我去要。B接到指令后就去找C要钱。

      B对C说,给我20块钱。

      C说,没有。

      B对C说,给我10块钱。

      C说,没有。

      B对C说,给我5块钱。

      .........

      最后,B回来对A说,哎呀妈呀,C那丫的忒抠门了,一分钱没有。

      对于A来讲,只是来说,它只是让B问C要钱,具体的B与C之间交互了几次,A是不知道的,它所知道的就是B返回给它的结果,C一分钱没有。

      浏览器与服务器传递数据的大小:

      还是上面的过程,A对B说,C欠我钱,你帮我去要。B接到指令后就去找C要钱。

      B对C说,给我20万块钱。

      C说,没问题,没支票,只有1元硬币。

      ..........

      B终于把钱拿回来给A。A很纳闷,怎么去了那么久,B委屈的说,丫的,C给我整了一堆硬币,太重了,路上走的慢,都快累死我了。

      对于A来讲,只是来说,它只是让B问C要钱,谁知道C给的是支票还是硬币。所以,B去要钱消耗的时间就很长。

      所以,要想提高浏览器对服务器的访问速度,应该减少数据传递次数与数据传递的大小。

      这样就很自然的引出了浏览器的cookie

      A在C哪里存了5毛钱。

      A对B说,我在C哪里存了5毛钱,你去拿来我看看。B跑去问C要了5毛钱回来给A看。

      过了一会,A又对B说,我在C哪里存了5毛钱,你去拿来我看看。B跑去问C要了5毛钱回来给A看。

      过了一会,A又对B说,我在C哪里存了5毛钱,你去拿来我看看。这次C烦了,对B说,你把钱放自己口袋里吧,等A要的时候,你来问我5毛的人民币有没有改版,没有改版的话,你就直接把口袋里的5毛钱给A看就行了。

      在这里A就相当于我们用户,B相当于浏览器,C是服务器。而cookie就是B的口袋,当然了cookie的用处还很多。比如我们登陆一个系统,提示我们是否保存密码(有的还有期限比如,一个星期或一个月),如果我们保存了,下次再访问登陆时,浏览器就已经帮我们填写好了账户密码或直接帮我们登陆。那这个账户密码就放在我们浏览器的cookie中。

      为什么要说上面的例子呢?因为我们大部分的一部分性能测试是基于B/S架构系统的,理解了浏览器与服务器之间的数据传递,有助于我们理解性能测试。

    ----//在开始性能测试之前,我们需要知道什么?

      当客户或老板把你叫来,对你说,去给我们系统做个性能测试,千万别傻傻的说“好!”然后,就走了,我以前这么干过(那时不懂,打肿了脸充胖子),回到座位后,不知从何下手了。

      那么,我们需要知道什么呢?

      1、性能测试的目的

      首先要知道客户的要求。

      我把性能测试按目的分以下几种

      1)客户有明确要求

      这是一个好的结果,这说明客户对性能测试有一定的了解,知道他们需要的系统要达到一个什么样的标准。如:系统要求同时满足100用户登陆,平均每个用户登陆时间不能超过5秒。这个需求很明确,当然也不排除一些不懂装懂的用户,提一些不现实的要求。

      不管怎么说,用户提要求了,这个比较容易,你可以对现系统做一次性能测试,至于,是通过优化系统还是增加硬件设备才能达到要求。就不是我们考虑的问题了。

      2)只是想知道目前系统性能(容量测试)

      可以把我们的目的就是求得最大用户数和最佳用户数。但是,这仍然是比较含糊的一个需求,我们需要对系统做出分析,找出系统的压力点。

      3)找出系统性能瓶颈

      这个同样需要分析可能对系统造成瓶颈的逻辑业务,然后才能进行性能测试。

      4)了系统在长时间的压力下性能状况(强度测试)

      这个一般验证系统的稳定性,因为系统一旦上线,就有可能会长期处在大用户的访问状态,可能以前没发现的一些问题就会暴漏出来。比较典型的就是内存溢出。

      2、性能测试的环境

      确定了我们的测试目的,当然需要测试环境。这里的环境,我们需要考虑一下几点

      1)硬件环境

      我们需要了解被测服务器硬件配置,用于加压客户端的机子配置,CPU 内存  等

      2)软件环境

      我们需要了解被测系统的架构,前端、中间件、服务器(这里指运行系统软件服务器,如tomcat)、数据库,以及他们的部署位置。

      用于加压的客户端采用什么性能测试工具进行加压。

      3)网络环境

      网络环境很重要。在上面的几个目的中,除了找出系统性能瓶颈可以在广域网进行,因为这个目的可以不用设置太多的虚拟用户,只要找出系统哪个地方影响了整个系统的性能就行。

      其他目的的测试都需要在,局域网进行,不然你压力工具所发送的请求都会卡死在网络的传输过程中。

      3、寻找系统的压力点

      我们需要对系统的哪个页面或业务进行加压。这个不是自己想出来的,需要与开发人员的沟通。系统的首页?系统的登录?还是系统的交易过程?各个业务的用户比例是多少?

      只有获得有效的性能需求,才容易寻找和定位压力点。

      获得有效的需求:http://www.51testing.com/html/68/n-10568.html

      如果上面的几点,你都很清晰了,那么打开你的性能测试工具开始录制(或编写)你的性能测试脚本吧!

      注:以上个人观点,如有错误的之处,请高手指证,以免误导别人。

  • 【转】软件性能测试总结

    2012-01-04 15:04:28

    转自:http://www.51testing.com/html/42/n-805042.html

    为什么要做性能测试

      性能测试前几年被关注的较少,近几年备受重视,那为什么要做性能测试呢?有很多种说法,个人比较认可下面这个,分享给大家:

      1、评估系统的能力

      2、识别体系中的弱点

      3、系统调优

      4、验证稳定性(resilience)可靠性(reliability)

      针对上面这几种目的,针对不同的结果,给出不同的应对方案和措施,这才是性能测试的最终目标:

      1、测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。

      2、受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。

      3、重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。

      4、检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。

      5、在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法

      如何提炼性能测试点?

      没有接触过性能测试的同学会觉得性能测试很深奥,很神秘,提到性能测试让人无从下手的感觉,其实,性能测试没想象中那么复杂,简单的说,性能测试就是功能测试量变达到质变的一个过程。简言之,哪些功能可能被大量用户访问的点,就是性能测试的重点之一。

      之前做过一些小项目的性能测试,经常容易出现问题的点做了一个分类,之后我们在提炼性能测试点的时候会关注这些方面:

      ● 前端页面上

      1、页面上本身有计算内容的地方 减少运算次数
      2、通过接口取其他系统数据的地方
      3、页面展现内容较多时是否翻页
      4、iframe. 静态文件和缓存
      5、页面上的静态文件,如JS,更新频率
      6、读取排行榜如果不是从数据库读取可能会有性能问题

      ● 数据库上的

      1、读取数据库
      2、写入数据库
      3、存储过程
      4、数据库之间同步
      5、数据库检索、查询
      6、索引
      7、sql语句
      8、数据类型

      ● 程序本身上的

      1、程序与其他系统交互的
      2、代码效率

      业务功能,数据库及程序本身涉及到上面这些内容的,都需要注意性能问题,可以结合业务和项目实际情况,考虑把这些点作为性能测试的一个关注点。当然,性能测试上手容易,做好难,想做好性能测试,还是需要慢慢不断深入和积累的

  • 【转】Nginx是什么?Nginx介绍及Nginx的优点

    2011-12-21 18:08:37

    转自:
    http://linuxbpm.blog.51cto.com/1823930/386763
     

    Nginx是什么?Nginx介绍及Nginx的优点

         Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev在建立的项目时,使用基于BSD许可。

       据说他当初是F5的成员之一,英文主页:http://nginx.net

       俄罗斯的一些大网站已经使用它超过两年多了, 一直表现不凡,相信想了解nginx的朋友都读过阿叶大哥的利用nginx实现负载均衡.直到2007年4月,俄罗 斯大约有20%左右的虚拟主机是由nignx服务或代理的。Google在线安全博客中统计nginx服务或代理了大约所有Internet虚拟主机的 4%。而netcraft的统计显示,nginx服务的主机在过去的一年里以四倍的速度增长。短短的几年里,它的排名已跃进第9。(参见:http://survey.netcraft.com/Reports/200707/ )

        Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。

        因此我打算用其替代Apache应用于Linux服务器上。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。那么我们必须使用FastCGI方式来执行PHP程序。

        现在,Igor将源代码以类BSD许可证的形式发布。Nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是 Apache2.2+mod_proxy_balancer的轻量级代替者,不仅是因为响应静态页面的速度非常快,而且它的模块数量达到Apache的近 2/3。对proxy
    和 rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts ,适合用来做mongrel clusters的前端HTTP响应。

      nginx做为HTTP服务器,有以下几项基本特性:

    处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.
    无缓存的反向代理加速,简单的负载均衡和容错.
    FastCGI,简单的负载均衡和容错.
    模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。
    支持SSL 和 TLSSNI.

      Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。

      Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响 应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的 CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上 是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。

      Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

      Nginx采用master-slave模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O的阻塞延迟。当采用select()/poll()调用时,还可以限制每个进程的连接数。

      Nginx代码质量非常高,代码很规范,手法成熟, 模块扩展也很容易。特别值得一提的是强大的Upstream与Filter链。 Upstream为诸如reverse proxy,与其他服务器通信模块的编写奠定了很好的基础。而Filter链最酷的部分就是各个filter不必等待前一个filter执行完毕。它可以 把前一个filter的输出做为当前filter的输入,这有点像Unix的管线。这意味着,一个模块可以开始压缩从后端服务器发送过来的请求,且可以在 模块接收完后端服务器的整个请求之前把压缩流转向客户端。

      Nginx采用了一些os提供的最新特性如对sendfile (Linux2.2+),accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,从而大大提高了性能。

      当然,nginx还很年轻,多多少少存在一些问题,比如:Nginx是俄罗斯人创建,目前文档方面还不是很完善.因为文档大多是俄语,所以文档方面这也是个障碍.尽管nignx的模块比较多,但它们还不够完善。对脚本的支持力度不够。

      这些问题,nginx的作者和社区都在努力解决,我们有理由相信nginx将继续以高速的增长率来分享轻量级HTTP服务器市场,会有一个更美好的未来。

  • memcache相关

    2011-09-06 00:05:20

    首先声明:本文出自孤风颠影|网站运维 网址:http://yunhaozou.org/mysql/229.html.转载请保留.(一个很不错地运维学习网站很好^^!)

    1.memcached简介
    memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
    2.memcached的特征
    memcached作为高速运行的分布式缓存服务器,具有以下的特点:
    1)协议简单:memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、取得数据。
    2)基于libevent的事件处理:libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。
    3)内置内存存储方式:为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
    4)memcached不互相通信的分布式:memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,分布式是完全取决于客户端的实现。
    ——————————————————————————————————————————
    3.Slab Allocation机制:整理内存以便重复使用
    目前memcached采用Slab Allocator的机制分配、管理内存。Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题。
    1)如上图所示,Slab Allocation将分配的内存分割成各种尺寸的块(chunk,用于缓存记录的内存空间),并把尺寸相同的块分成组(chunk的集合,每个chunk的大小相同)。默认一个slab(chunks)的大小是1MB,叫1Page。
    2)slab allocator有重复使用已分配的内存的目的。也就是说,分配到的内存不会释放,而是重复利用。
    3)memcached根据收到的数据的大小,选择最适合数据大小的slab。 memcached中保存着slab内空闲chunk的列表,根据该列表选择chunk, 然后将数据缓存于其中。如当来了100bytes数据,会选择最合适的112bytes的chunk(假如slab classes中chunk的大小包含有88bytes、112bytes、144bytes……)
    4)Slab Allocator解决了当初的内存碎片问题,但由于分配的是特定长度的内存,因此无法有效利用分配的内存。例如,将100字节的数据缓存到128字节的chunk中,剩余的28字节就浪费了。
    ——————————————————————————————————————————
    4.memcached的删除机制
    1)memcached是缓存,所以数据不会永久保存在服务器上,其实数据不会真正从memcached中消失。实际上memcached不会释放已分配的内存,记录超时后,客户端就无法再看见该记录,其存储空间即可重复使用。
    2)Lazy Expiration:memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间。
    3)memcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。 顾名思义,这是删除“最近最少使用”的记录的机制。因此,当memcached的内存空间不足时(无法从slab class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。
    ——————————————————————————————————————————
    5.memcached的分布式
    1)memcached但服务器端并没有“分布式”功能。分布式是完全由客户端程序库实现的。这种分布式是memcached的最大特点。
    2)set(存数据到memcached)时,set(‘key’,data),将’key’传给客户端程序库后,客户端实现的算法就会根据“键”来决定保存数据的memcached服务器。服务器选定后,即命令它保存(’key’,data);
    3)get(从memcached取数据)时,get(‘key’),此时客户端把’key’传递给函数库,函数库通过与数据保存时相同的算法,根据“键”选择服务器。使用的算法相同,就能选中与保存时相同的服务器,然后发送get命令。只要数据没有因为某些原因被删除,就能获得保存的值。
    4)以上将不同的键保存到不同的服务器上,就实现了memcached的分布式。 memcached服务器增多后,键就会分散,即使一台memcached服务器发生故障无法连接,也不会影响其他的缓存,系统依然能继续运行。
    5)Cache::Memcached的分布式算法简单来说,就是“根据服务器台数的余数进行分散”。 求得键的整数哈希值[使用crc32函数,如crc32($key)],再除以服务器台数,根据其余数来选择服务器。余数计算的方法简单,数据的分散性也相当优秀,但也有其缺点。那就是当添加或移除服务器时,缓存重组的代价相当巨大。

    1.memcached的安装
    1)memcached是基于libevent的事件处理,所以安装memcached时先要安装libevent库。
    yum -y install libevent libevent-devel
    2)memcached编译安装比较简单,一般都采用编译安装的方式如下:
    wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
    tar -zxvf memcached-1.4.5.tar.gz
    cd  memcached-1.4.5
    ./configure
    make && make install
    ——————————————————————————————————————————
    2.memcached启动
    1)memcached常用参数:(/usr/local/bin/memcached -h)
    -p <num>      TCP port number to listen on (default: 11211)
    -U <num>      UDP port number to listen on (default: 11211, 0 is off)
    -l <ip_addr>  interface to listen on (default: INADDR_ANY, all addresses)
    -d            run as a daemon
    -u <username> assume identity of <username> (only when run as root)
    -m <num>      max memory to use for items in megabytes (default: 64 MB)
    -c <num>      max simultaneous connections (default: 1024)
    -P <file>     save PID in <file>, only used with -d option
    -f <factor>   chunk size growth factor (default: 1.25)
    2)以daemon的方式启动memcached
    /usr/local/bin/memcached -u nobody -p 11211 -m 64 -c 128 -d
    ——————————————————————————————————————————
    3.memcached结合mysql、perl的实践
    cat memcached_mysql.pl
    #!/usr/bin/perl
    #Usage: test memcahed with mysql and perl
    #Made by yunhaozou@gmail.com,2010/12/20
    #
    use Cache::Memcached;
    use DBI;
    use Data::Dumper;
    use Digest::MD5 qw(md5_hex);
    use strict;
    #
    my $host = “127.0.0.1″;  #db相关信息
    my $port = “3306″;
    my $db = “zichan_db”;
    my $user = “root”;
    my $password = “”;
    my $dsn = “dbi:mysql:database=$db:hostname=$host:port=$port”;
    my $dbh = DBI->connect($dsn,$user,$password) or die “Couldn’t connect to database: ” . DBI->errstr;  #连接db
    my $memcached = Cache::Memcached->new({ servers=>["127.0.0.1:11211"],compress_threshold=>10_000});   #连接memcached
    #$memcached = Cache::Memcached->new({ servers=>["127.0.0.1:11211","192.168.2.1:11211"],compress_threshold=>10_000}); #表示连接两台机的memcached,这样可以实现负载均衡,一个机器挂了,另一个可以继续用
    my $zcsql = “select sn,model,cab_no,func,intra_ip,man_addr,contact from equipment where sn=’0917QAR012′;”;
    #
    my $result = query_result($zcsql);
    print Dumper $result;
    $dbh->disconnect();
    #
    sub query_result{
    my $query_sql = shift;
    my $query_key = md5_hex($query_sql);  #把查询sql语句转换为MD5值的key
    my $query_result = $memcached->get($query_key);
    return $query_result if $query_result;  #当在memcaed有缓存时直接返回
    $query_result = $dbh->selectrow_hashref($query_sql);
    $memcached->set(“$query_key”, $query_result); #当在memcached没有缓存时从数据查询,并缓存memcached
    return $query_result;
    }
    ——————————————————————————————————————————
    4.日常运维
    1)memcached是典型的是耗内存不耗CPU。而通常web进程(如Apache)是CPU敏感,内存不那么敏感的。因此可将memcached直接跑在前台web主机上,作为数据缓存(或数据库连接池)使用,也就是在web程序与数据库之间多加了一层。
    2)尽量使用memcached分布式部署。但各个模块尽量做到memcached资源隔离(之前因为社区前端公用memcached,有一次广东综合通信上线了一个页面,因工程师写代码时失误,显式调用了flush memcache,从而每次访问都清空整个memcached,把整个网站社区前端memcached资源清空,而且过几秒又被清空,这样造成的后果有多严重就不说了,写那代码的哥们有多惨也不说了~~)
    3)用telnet测试memcached
    telnet 127.0.0.1 11211
    Trying 127.0.0.1…
    Connected to zou.yunhao (127.0.0.1).
    Escape character is ‘^]’.
    set key 0 10 6   //10表示过期时间10秒,6表示将要存入数据字节为6(这里result为6)
    result
    STORED
    get key
    VALUE key 0 6
    result
    END
    4)memcached性能查看命令stats
    telnet 127.0.0.1 11211
    stats
    STAT pid 18006
    STAT uptime 702   //memcached运行的秒数
    STAT time 1292904537 //memcached服务器所在主机当前系统的时间,单位是秒。
    STAT version 1.4.5
    STAT pointer_size 64  //服务器所在主机操作系统的指针大小,一般为32或64
    STAT rusage_user 0.003999
    STAT rusage_system 0.013997
    STAT curr_connections 10   //表示当前的连接数
    STAT total_connections 11   //表示从memcached服务启动到当前时间,系统打开过的连接的总数。
    STAT connection_structures 11
    STAT cmd_get 0   //查询缓存的次数,平均每秒缓存次数cmd_get/uptime
    STAT cmd_set 0   //设置key=>value的次数
    STAT cmd_flush 0
    STAT get_hits 0  //缓存命中的次数,缓存命中率=get_hits/cmd_get*100%
    STAT get_misses 0  //cmd_get-get_hits
    STAT delete_misses 0
    STAT delete_hits 0
    STAT incr_misses 0
    STAT incr_hits 0
    STAT decr_misses 0
    STAT decr_hits 0
    STAT cas_misses 0
    STAT cas_hits 0
    STAT cas_badval 0
    STAT auth_cmds 0
    STAT auth_errors 0
    STAT bytes_read 7  //memcached服务器从网络读取的总的字节数
    STAT bytes_written 0  //memcached服务器发送到网络的总的字节数。
    STAT limit_maxbytes 67108864  //memcached服务缓存允许使用的最大字节数
    STAT accepting_conns 1
    STAT listen_disabled_num 0
    STAT threads 4
    STAT conn_yields 0
    STAT bytes 0
    STAT curr_items 0
    STAT total_items 0
    STAT evictions 0
    STAT reclaimed 0
    END
    ——————————————————————————————————————————
    5.监控
    1)nagios监控
    a. check_memcached
    先要安装check_memcached插件
    wget http://search.cpan.org/CPAN/authors/id/Z/ZI/ZIGOROU/Nagios-Plugins-Memcached-0.02.tar.gz
    tar xzvf Nagios-Plugins-Memcached-0.02.tar.gz
    cd Nagios-Plugins-Memcached-0.02
    perl Makefile.PL   (可能需要其他perl的modules,依照提示通过cpan安装即可)
    make && make install
    check_memcached [-H host:port] [-w warnings] [-c critical] [--size-warnng size-warnng] [--size-critical size-critical] [--hit-warning hit-warning] [--hit-critical
    hit-critical] [-t timeout]
    b. /check_tcp -H host -p 11211 -t 5 -E -s ‘stats\r\nquit\r\n’ -e ‘uptime’ -M crit
    2)cacti监控
    一台服务器起多个memcached,多端口cacti部署监控。
    a. 需要一个 Python memcached Client API
    wget ftp://ftp.tummy.com/pub/python-memcached/python-memcached-1.45.tar.gz
    tar xzvf python-memcached-1.45.tar.gz
    cd python-memcached-1.45
    python setup.py install
    b. 加模板memcached multiport
    wget http://tag1consulting.com/blog/cacti-memcache-multi-port-templates
    cp memcached.py   <cacti install目录>/scripts/memcachedmultiport.py
    c. 增加监控时devices->des && ip->host template选择memcachedmultiport->Downed Device Detection选择none->SNMP Version选择not in use->create graphs->Port to query for memcached statistics填写memcached端口。
    3)也可以自定义nagios、cacti监控,通过memcached命令stats取相关数据
  • 新生活、新起点

    2011-05-25 12:59:47

       离开软件测试行业快1年啦~

       今天工作确定下来了~ 新的起点、加油~ 谢谢老大、还有吕老大的关照呢~    感恩~

       接下来要心无旁骛的好好工作,坚持软件测试这条路,“杀出一条血路”,呵呵~  玩笑玩笑~ 总之就是好好工作、努力学习,提高技能,fighting~

  • 软件测试中桩模块与驱动模块的概念与区别(转载)

    2011-05-17 12:13:46

    桩模块和驱动模块(以C语言为例):

      很多人对桩模块和驱动模块的概念会搞不清楚,那么下面来介绍这两个概念:

      模块结构实例图:

     
      假设现在项目组把任务分给了7个人,每个人负责实现一个模块。你负责的是B模块,你很优秀,第一个完成了编码工作,现在需要开展单元测试工作,先分析结构图:

      1、由于B模块不是最顶层模块,所以它一定不包含main函数(A模块包含main函数),也就不能独立运行。

      2、B模块调用了D模块和E模块,而目前D模块和E模块都还没有开发好,那么想让B模块通过编译器的编译也是不可能的。

      那么怎样才能测试B模块呢?需要做:

      1、写两个模块Sd和Se分别代替D模块和E模块(函数名、返回值、传递的参数相同),这样B模块就可以通过编译了。Sd模块和Se模块就是桩模块。

      2、写一个模块Da用来代替A模块,里面包含main函数,可以在main函数中调用B模块,让B模块运行起来。Da模块就是驱动模块。

      知识点:

      桩模块的使命除了使得程序能够编译通过之外,还需要模拟返回被代替的模块的各种可能返回值(什么时候返回什么值需要根据测试用例的情况来决定)。

      驱动模块的使命就是根据测试用例的设计去调用被测试模块,并且判断被测试模块的返回值是否与测试用例的预期结果相符

     

    转载出处:http://blog.csdn.net/snlying/archive/2011/04/28/6370067.aspx

  • 你的终身职业与我不知道自己想做什么?

    2011-05-11 10:48:18

    这是人生哲学——我们只有一个人生,应该用来做自己关心的事。你首先必须接受两个观念:
    一、做自己爱做的事是有可能的——即使一时不能在工作上完全如意,至少也可以在闲暇时达成心愿。有些人象烈士一样,从来不会专门拨出时间为自己做任何事。但是如果闲暇的时候尚且无法做自己爱做的事,要想允许自己去做真正喜爱的工作,恐怕也一样不容易!
    二、拿报酬的工作也可以是自己喜爱的。很多人从小就有一个错误观念:工作就是负担。大错特错!事实上千千万万的人做着自己喜欢的工作,并且从中获得酬劳。
    让我们从“相反”的角度来解释什么叫做“做自己爱做的事”。做自己爱做的事就是——不会一边躺在热带海滩上享受,一边伸手接过工资。做自己爱做的事,是热爱一件事,并且投入所有的爱、活力和创造力,使它发挥作用。这是需要冒险的,而且惟有达成目标,你才能养活自己。
    因为不知道成果如何,那种提心吊胆的滋味也增添了几分乐趣。如果完全不需要努力,就仿佛缺少了某些东西。正因为如此,许多有钱人和名人子弟,就是因为根本不需要工作就可以得到物质上的满足,生活中毫无挑战,才会借吸毒来寻求刺激。
    惟有为自己的选择负全部责任,人生才有意义。选择职业,更是首要的项目。
    问弗雷德:“你为什么做这份工作?”他说:“每个人都要有工作嘛!”这是不够的,弗雷德。没有人会因为你浪费一辈子去做你讨厌的工作,而给你一个奖章。如果你相信眼前的工作不适合你,赶快换一个工作,做自己爱做的事吧!
    我不知道自己想做什么
    如果你不知道自己喜欢做什么,可能是因为你已经很多年没有聆听自己的心声了。很多人为了让家人高兴,把自己弄得面目全非……你想打垒球,妈妈却要你学弹钢琴;你想买跑车,但是几次换车都买了“实用型”;你想做新闻记者,结果却当了会计;你一直渴望到南美去旅游,却总是到表叔家度假。就这样,你选择了“适当的”嗜好,做“家人期望的”工作。有朝一日你会大梦初醒,说:“我不知道自己到底是谁,我只知道我再也不想扮演现在这个角色了。”
    一旦长期压抑自己的兴趣,以后会根本不记得自己真正喜欢什么。内心里,也许会有一个声音提醒你:做自己真正想做的事是自私的表现。那个小小的声音甚至会说:“你讨厌自己的工作是罪有应得的”。
    也有可能你觉得自己喜欢做这份工作,因为大家都认为你会喜欢它。当你真正喜欢做一件事的时候,你会:
    l 、早早起床,根本不想休息。
    2 、忘记了时间,忘了自己。
    3 、根本不在乎花费多少心血。说到工作,你会滔滔不绝的谈好几个小时。

    如何重新找回自己的热情?

    尽量使生活简单,不要做那些处于惯性的事。把日常生活中的垃圾清除,使你更清楚地看到自己的方向。把电视关掉一个月,注意自己想些什么,阅读什么。
    聆听自己的话。下次内心那个小声音说;“我喜欢这个,它令我兴奋。”耐心聆听!到公立图书馆,从图书馆的一端踱到另一端,仔细浏览每一个书架,有什么吸引你的吗?
    尝试新事物:学油画、园艺、当儿童足球队的教练、学意大利文。10件事当中,也许9件都不能引起你的兴趣,但是也许第10件就会为你开启一个全新的世界。如果这10件都不对你的胃口,就再尝试另外的10件。
    用心去找寻,才会有所发现。如果你已经失去人生的方向,大概不可能在酒吧的灯红酒绿之间找回来。让自己喘口气,给自己一点时间和空间,去找出什么对你是重要的。自己一个人到山上或海边住上一个星期。弗雷德说:“我哪有时间?”那等于是说:“我迷路了,因为时间来不及了,我没空看地图。”
    最重要的是,要心安理得的去做自己喜欢的事。要做你爱做的事,你必须相信这是有可能的。等你发现自己喜欢做的事,你就能够回答这个问题:“我这辈子想做什么?”

    善用闲暇!

    “工作就是把爱具体表现出来。”

    很多人把嗜好变成全职的工作,可是从“嗜好”到“生计”的转变,是一步一步慢慢来的……
    弗雷德喜欢摄影,闲暇时间完全花在这上面。他经常为朋友拍结婚照,也赢过几次业余比赛。慢慢地,他的工作量越来越大。几年的工夫,他在周末所赚的钱已经超过了上班的收入。当然,偶尔有些婚礼会临时取消,也有些客人会赖账,他也不是每个月都有那么多收入,但是对弗雷德而言,他已经心满意足了。
    玛丽亚喜欢学习语言,除了能说流利的意大利语和英语之外,她决定学西班牙语。她度假的时候特别选择巴塞罗那,又在下班后免费教南美移民说英文。不到两年,她已经能流利的运用3种语言了。玛丽亚申请了3份导游的工作,都没有成功——但是她并不气馁,又进修翻译课程为了操练语言技巧。最后,她在语言学校找到了一份工作。
    吉姆热爱爬山和露营,也拥有各种装备:爬山靴、帐篷、背囊。他发现很多人想露营,但却没有装备。他就把装备租给他们。有时候,他还替他们安排整个行程,并且用车接送他们——当然是要收费的。偶尔,露营的人会遗失他的绳索,甚至烧破他的帐篷,但是吉姆安慰自己说:“没有任何工作是十全十美的——这份工作起码比我上次在太平间那份好的多!”
              我们从这些人身上学到什么呢:
    1、做自己喜欢的事也可以维生。
    2、世界是一个大集市。只要你有本事,总会有人付钱给你。
    此外,我们还发现真实生活和肥皂剧是不一样的。电视上的剧情是:
    l、晚上7时30分,第一幕——萨曼莎决定开一家模特代理公司。
    2、晚上7时34分,第二幕——萨曼莎租了一间网球场那么大的办公室。
    3、晚上7时36分,第三幕——萨曼莎聘请一位经理,她到夏威夷度假。
    现实生活中,萨曼莎可能要到8家银行去贷款;现实生活中,萨曼莎可能周末要到汉堡包连锁店去做兼职;现实生活中,萨曼莎开业时的办公室只有你的浴室一样大小。
    现实生活是令人困扰的。现实生活需要多一点时间。
    说到肥皂剧,那些把业余嗜好转变成职业的人,都不会花太多时间去观看肥皂剧。幻想自己是剧中人,总不如好好过自己的生活。

     

    转载自冠威博客 [ http://www.guanwei.org/ ]
    本文链接地址:http://www.guanwei.org/post/qiuzhi/09/你的终身职业与我不知道自己想做什么.html

  • 一个学中医的女生写出的保养大法(转)

    2011-05-10 15:14:07

         ­
    一个学中医的女生写出的保养大法!!~~教你怎么解决头发油、毛孔问题、美白、牙齿、细纹、太全了、、大家们看了都会有好处的、、、实在是好东东、、、怕弄丢了、、、就转到这里来、、、、      ­

       
       如果你问“怎么我的头发那么油啊?”,那是因为你肝火太旺了,身体里内脏不能消化油脂,所以就把它排到脸上和头上了”,你还是会问,“那怎么办啊?”,我就会说“每天晚上用滚烫的热水泡脚泡上半个小时,慢慢就会好了”注:水不会一直热,所以要不断的注入热水,用冷水和温水泡都没有这么好的效果的、、、、  ­

    我认为泡到出汗效果最好了,其实姐妹们如果满头满脸的出油的话,都可以通过这个方法调理肝脏,油慢慢就会少了。  ­ ­

    朋友因为出油的原因毛孔也非常粗大,我就会用盐给他按摩脸,出油的皮肤质地都比较粗糙和硬,所以不用担心盐太粗。如果实在嫌盐不好的话,可以用盐加精油。特别是鼻子周围仔细的按摩,洗干净之后,是不是毛孔特别的小啊? 注:这里提到的盐可以是食用盐,因为如果你买到的浴盐不够好,还会刺激皮肤,反而不如便宜又好用的食用盐。  ­     ­

    油脂球一定不能挤和抠,用按摩的方法最好了。去油的同时还能缩小毛孔和去角质,最后洗脸的时候,最好用冷热水交替洗,其实我强烈建议所有的女人都这样洗脸!热水肯定是不能单独用来洗脸的,温水和冷水还行,冷热水交替最好。  ­     ­

    我是用脸盆装热水,洗脸池对着水龙头直接用冷水,就这样交替洗,很方便,但洗出来小脸白里透红,粉粉嫩嫩的,不但洗得非常干净,而且毛孔也缩小到不能再小了!  ­  ­

    同时,冷热水交替对黑眼圈也非常有效。因为冷水洗脸虽然很好,但刺激脸部,会使黑眼圈加重!  ­

    (注:很多妹妹说道冷热水洗脸会产生红血丝,我这里提到的热水跟上面说要泡脚用的热水完全是不同概念的,这里洗脸的热水只要温热的就可以了哦、、这样就避免红血丝的产生咯、、、、 ) ­


     

    同事买了一枚半克拉的钻戒,当她向我展示戒指时,我的感受只是“天呐,好糙好黑的手指”。钻石确实很大很美,装饰着美丽的你。但如果手不好好保养,那就变成反衬喽。  ­

          ­

    关于双手和脚的皮肤保养,最实用的DIY手膜就是红糖和蜂蜜混合后不停的按摩,一般的建议都是,要随身带护手霜,只要手沾到水就要涂一层。这种方法真的很麻烦!  ­

          ­

    其实只要大家好好的利用夜晚,白天就不用麻烦了。  ­

          ­

    准备一副宽松的手套,每天晚上睡觉前,就用橄榄油 美加净混合起来,厚厚的涂在手上,戴上手套睡觉,坚持一段时间以后,双手就会越来越嫩,小细纹也都淡化了。  ­

          ­

    如果手指关节粗大,就一定要按摩。用大拇指和食指逐个按摩每个手指头,最关键的是按摩手指的两侧,从根部到指尖,一个一个的按摩,这个按摩的方法可以使得关节粗大的问题得到解决,手指慢慢的就会粗细均匀了。  ­

          ­

    脚底的死皮是一定要磨的。大S之所以不推荐刨刀样的磨脚板,是因为她们艺人的脚经过长时间的保养,已经很嫩,刨刀就容易流血了。而刚开始护脚,刨刀能够快速的磨去死皮,开水先泡脚,然后磨,磨完之后涂厚厚的橄榄油 美加净,穿上厚棉袜。磨脚是每周一次,而涂霜和穿袜子就是要每天都要。双脚就会越来越嫩!真的是非常嫩和光滑,一点瑕疵都不会有。  ­

          ­

    有的女生脚后跟会开裂,那就要先用膏药贴,贴足三天之后,再用橄榄油 美加净厚厚的敷,等到裂开的口子消失了再开始磨脚。  ­

          ­

    我推荐的是美加净的珍珠银耳营养霜,超市有卖,九毛钱一包,保湿效果很好。它是上海家化的老牌产品了,这个厂同时还生产百草集,对于他家的精油和头发护理系列,确实要赞一个!至于面部护理系列,那就仁者见仁了。  ­

         ­

          ­

    加夜班非常伤身体,如果每天连睡眠都保证不了,还怎么谈保养呢.你能不能早上早起去上班?你是不是在外企?可以早去干活,晚上早点走吗?因为前半夜的睡眠非常重要,后半夜就相对来说可以浪费。你可以五六点就起床,去上班,晚上早点回家睡觉。  ­

          ­

    如果不行的话,那真是可怜了!那你就每天都吃阿胶,红枣和桂圆来代替肝脏补血吧。这三样是补血圣品,桂圆少吃,一天三粒,红枣10-20粒,阿胶早晚都要吃,一天两遍。  ­

          ­

        

    电脑有辐射,所以samantha你的隔离霜一定要用,半天补一次,不要早上涂一遍就算,中午补,晚上加班之前再补,不能怕浪费。还有绿茶要每天当水喝,外企喜欢喝咖啡,你就喝绿茶,加点当归和黄芪,补血补气,一定要大量的喝水。眼睛一定会不舒服吧?再加枸杞和白菊花,记得是白色的不是黄色的。不要担心这样混合茶会不会发生反应,嘻嘻,向你保证,不会滴!  ­

          ­

    在电脑前养一两棵仙人球,替你吸收辐射。中途站起来活动活动,深呼吸,不要一直坐着。离公司的打印机远一点,那个的辐射更厉害!如果公司是铺地毯的话,那肺也要受残害了。买点杏仁或者喝杏仁露也行,养养肺。  ­

          ­

    长期对着电脑,肝脏也很疲劳,所以心情一定要尽量舒畅。我再教你一个小方法,就是每天睡前使劲捏捏腋窝,大臂还有肋骨两侧,使劲的捏,这是通过疏通经络,来防止乳房的疾病,并且能让你心情舒畅,心里不觉得压得慌。  ­

          ­

    几乎所有的女人都对脸上的这点田地特别的关注,美白其实谁都会,用一些美白产品都可以拥有均匀的肤色。不过美白产品还是要少用,美白除了百草集它家是白芷,茯苓等中药配方,都肯定要含铅,对皮肤还是有伤害。使用美白产品并配合正确的洗脸之后,很快就会白回来。一旦白了就要换保湿的面霜。  ­

          ­

    美白的同时配合喝牛奶和薏仁粉,整天喝柠檬水可以加快美白。  ­

          ­

    美白还有一个小秘方,就是用白醋做主水,加如五分之一的甘油或者橄榄油,如果嫌刺激的话,可以加纯净水在里面。坚持每天涂两遍,一个星期就能看到效果。  ­

          ­

    建议大家在使用护肤品时,要注意看自己的皮肤是不是产生了依赖?比如说,不好的护肤品,一旦你不用,那一整天的皮肤都会让你非常难受,那这个产品就不要再用了。好的产品是就算偶尔有一天不用,皮肤还是能保持很好,那就是好东西!  ­

          ­

    如果你的工作是脑力劳动用脑过度,那额头是无法避免要比眉毛以下部分要黑,这个真的是没有办法。  ­

          ­

    白白的之后就是要防止细纹的产生。方法就是要保湿保湿加强保湿!怎么样保湿都不过分!别人都会说,“天呐,我的眼睛下面有细纹了!”“那就保湿啊!”  ­

          ­

    对!产生细纹的原因就是保湿的力度不够。这个时候就要用面膜或者眼膜。对于干性皮肤,橄榄油可以做保湿面膜,做加强保养。中性和油性可以每天晚上用喝剩一点酸奶。面膜做频繁了,自然细纹就LEAVE啦!  ­

          ­

    这里介绍一个方,就是在酸奶里面加入酵母粉,发酵,隔天用它敷脸,脸上的粗糙小凸起立刻就消失,并且皮肤能变白变亮。  ­

          ­

    油性皮肤更要加强保湿,补充水分,不然肤质粗糙得更快。  ­

          ­

    保湿的一个重要一环就是爽肤水,一定要配合化妆棉使用!洗完脸之后不要用毛巾擦,就用化妆棉擦干,然后用水泡湿了的化妆棉粘取爽肤水使用。  ­

          ­

    按摩的方法是额头从中间向两边打圈圈,眼睛下面的皮肤是从眼角向太阳穴拉,鼻子从上向下,面颊我们之前讲过了,嘴巴下面是从中间向嘴角向上提。  ­

          ­

    爽肤水一定要多敷,不要怕浪费,多敷几遍。保湿做好了,就不用怕细纹。  ­

          ­

       

    很多人都有口腔异味的问题,不过有的人是短期,有的人是长期。  ­

        

    我的好朋友是长期的口臭,同时她还有刷牙出血的症状,后来因为一直只要刷牙就出血,后来去口腔医院看,有牙菌斑,同时有非常多的牙龈结石,还有一颗大龋齿,后来拔牙,洗牙,开刀除结石,来回去医院折腾了好几次,牙齿健康了,口臭也消失了。真是意外的收获。长期的便秘症状,得不到解决,身体里的有害物质不能及时排出体外,容易产生,腹胀,容易生气,嘴巴里有异味,没有食欲等等现象。这主要是由于,平时吃得多,而且吃粗粮太少,工作忙碌,心理压力大,精神过于兴奋或者压抑,作息时间不规律,就会便秘。  ­

          ­

        

    便秘了,早饭就一定要吃燕麦片,白天多喝水,香蕉和苹果也要多吃,心情保持放松舒畅,按照前面讲过的方法按摩,问题就解决了。  ­

     

    茶叶和酸奶,包括芹菜,柠檬水都可以帮助排出身体里的毒素。大量补充维生素的同时,抑制细菌生长的环境,当然如果吃维生素药片的话,里面的添加剂反而会造成消化功能紊乱。  ­

     

    中医上认为口臭是胃的原因,有虚火,而肠胃功能不好,主要原因是心理因素造成,所以不建议吃降火的东西,而是从心理上进行调节,使紊乱的肠胃恢复正常。同时要提高身体免疫力,增强肾脏功能。脾虚的表现是,食欲不振,神倦乏力,严重的情况会内脏下垂,脱肛,子宫下垂,脾脏是我们每个男人女人三十岁之前都非常重视的脏器,它事关食物的消化和吸收,所以,不要吃乱七八糟的药,伤害它。肺虚的表现是,少气懒言,容易出虚汗,肾气虚则腰酸,三者合在一起被称为气虚。  ­

          ­

    气虚脸颊就下垂,越虚垂得越厉害,直到五官内脏都下垂,人也就丑了。气虚是所有虚症中,最容易补充的身体能量。少说话,少提重物,多注意休息睡眠,都能补充元气。因为气能产生血,所以补气就能补血。山药是非常好的东西,一个身体不大好的朋友去看中医,据说还是当地最有名的,回来除了带一堆中药之外,就带了这个偏方:每天喝山药炖冰糖。价值四百块的偏方。山药补气健脾胃,养阴益肺,补肾固精,把脾脏,肺和肾脏都补了,确实值这个钱了!阴虚亏损的人容易咳嗽,可以用它煮汤当水喝,可以治愈虚劳咳嗽的毛病。山药因为益肺,而“肺主皮毛”,所以山药可以滋润皮肤。虚弱羸瘦,皮肤干燥,记忆力减退,过劳和疾病后体虚,都要多吃山药,可以强壮身体,抵抗衰老。但应该注意到的是,它滋阴的同时助湿邪,所以我在吃完它之后,肯定要吃祛湿的东东,像薏仁,茯苓。我不加冰糖,直接水煮山药,把山药打成浓浆,然后煮开就当水喝,不喝多,喝完之后,再喝水我就加薏仁粉。  ­

       

    大米也是补气的,吃惊吗?女人一定要每天都吃米饭,脾胃健康就靠它呢!米都补脾,但五谷中它补脾的效果最好,中气不足,疲倦乏力就要吃它了,像脾胃虚寒,心烦口渴,就喝大米稀饭就行啦。中医书上说“稀饭为世间第一补人之物”。所以就算你在减肥,也一定每天至少吃一碗大米饭,不然瘦下来,脸颊胸部都下来了。  ­

       

    好东西,还有大枣,蜂蜜等。皆补脾,益虚损,令人好颜色。  ­

       

     

    抗衰老(一)  ­

       

    如果看贴的你已经超过35岁,这篇就是专门为你所写。  ­

        

    很可能超过30岁的女性,已经会有中医上称为“损容性”面部特征了。比如说皱纹,斑点,黑眼圈,眼袋,法令纹,脸颊下垂,皮肤粗糙等等岁月的痕迹。包括身材的彻底变形等等。一句话,就是现在的你已经基本上向中性人过渡了,女人味在渐渐的离你而去。你甚至基本上想不起来自己还是个女人。只有在买衣服,去理发店的时候,释放歇斯底里想挽回的绝望。看到一句话,很适合这里,“美的关键在于心态”。特别是超过28岁,脸上写的全是你的心。心里妒忌别人,重视利益大于一切,欺上昧下,等等所有这些心理,都一定会以世上最快的速度让你衰老变丑!而自卑,消极,懒惰也是加速衰老的元勋。张曼玉说她维持年轻的秘诀就是“心里永远都有梦想”。你要时刻提醒自己,你是个女人。当你拖地累得满头大汗,提很重的东西时,建议你,量力而行。我拖地的时间男朋友可以把整个厨房从屋顶到地面刷洗的干干净净。你把自己当男人使,还想做女人? 这并不是一个美好的社会,心里有了沙子,有本事的女人可以把沙子养成珍珠,而大部分是要释放的。过度的忍耐也会加速衰老,心理的衰老更可怕,对于维持家庭幸福也没有好处。你完全可以充满自信的把不满全都说出来,如果他连这个都提供不给你,那他的作用是什么?两个人之间花钱肯定是不能你省给他花,要不就两个都节省,要不就你花他省,如果是你省他花,那你的他基本上很有问题。  ­

     

     

    抗衰老(二)  ­

        

    面部皱纹一是因为平时表情比较丰富,或者经常用手托着脸等不好的动作,二是因为心事很重,时间长了心情得不到改善,就出现皱纹了,三是酸性体质,也就是体质不大好;四是没有及时给予皮肤充分的保湿。  ­

       

    按摩很重要啊!自己要有耐心的按摩,用之前介绍祛皱纹的手法,脸上到处都仔仔细细的按摩,轻轻的,可以每天都按,只要坚持就一定可以消除皱纹。按摩完之后一定要加强保湿,多使用保湿水,保湿面膜,一切都要很保湿。推荐牛尔玫瑰保湿晚安睡膜,50块钱,保湿效果很赞!又耐用,一瓶不知道什么时候才能用完。而且还是天然配方,我很佩服牛老师!美中不足的缺憾就是他有一次说“上海人到现在(2007年)才知道喝银耳汤,真的很落后”,当时就把我气倒了。不提了不提了,人无完人。  ­

        

    眼袋和黑眼圈的方法之前都介绍过,很有效。祛斑的方法之前也有,不过比较慢,不能着急。法令纹之前也介绍过方法,祛除的效果很明显。脸颊肯定会有下垂或松弛或者凹陷,多吃米饭早睡觉,一定要补血。  ­

        

    眼睛很疲劳,就补肝肾,多休息,眼球多转转圈,头发又干又粗糙,那就多做头发护理,多吃黑芝麻和海带,不要烫发染发,头发就不那么老气了。  ­

       

    脸色发黄,如果是非体质因素,就用绿茶水敷脸;皮肤有疙瘩,就用之前介绍的酸奶酵母面膜;身体的皮肤肯定是越来越粗,坚持用美白保湿的甘油加白醋,身体光滑又白嫩;到了这个年纪,产品是一定要认真使用了。 一般脸部皮肤会越来越薄,但越来越硬,所以感觉很沧桑。从体质改变,皮肤就会越来越嫩,只要皮肤嫩了,就会显年轻。而这个是产品做不到的。其实之前所有脸上衰老问题,除了保湿之外,产品都无法解决。抗衰老(三)  ­

       

    检查一下,你的生活满足以下条件吗?每天都早睡早起,最好九点就躺着;每天早晚都要吃水果;按时认真吃三餐,一定吃大米饭;心情安宁;隔天锻炼;每天中午都午休一个小时。其实大多数人这些基本的都不能保证。  ­

        

    身材变形是身体内脏衰老,血液老化,毒素堆积的一个信号。健康的身体,就应该有美丽的外表。酸性的体质必然对应一个不完美的外表。肝肾脏的护理之前都介绍过,脾胃的护理关键在心情,五脏六腑都是我们运转的关键零件,发胖了零件就松了,重新拧紧了,机器就好了。血液浓稠了,机器就转不动了,还伤害机器。毒素太多了,机器就容易变形。  ­

          ­

    只要从今天开始,你认真的对待你的脸部皮肤,花时间照顾她,有规律的生活,重视你的睡眠和心情,健康的饮食,爱惜你的身体内脏,你的状态一定会越来越好。 补气和补血是相辅相成的两个食补步骤。单纯补气而不补血,就像烧得很旺的炉子上放了一个空锅,补血就是在锅里放入美味。补气的食物之前讲过了,我还是要强调最重要的米饭,其它的要注意多吃土豆,红薯/地瓜,红枣和蜂蜜。香菇虽然也很好,但有皮肤病的要注意少吃,不要空腹吃。  ­

        

    补血就一定要吃阿胶啊,没理由!我妈妈坚持吃了那么多年,由我爸制作,加足了爱心在里面!以前的阿胶还没有打粉的说法,都是我爸用捣大蒜的东西捣成碎块,然后炒黑芝麻,炒熟了再用擀面杖辗成末,然后再炒核桃,剁碎,手续比现在复杂!折腾好几个晚上才能做好。  ­

     

    冬天吃效果最好。补血的同时滋补阴虚,消除内热,补肺虚,含有大量的胶原蛋白,因为它是血肉有情之物,滋补效果更明显。脸色不好看,就要靠它了。不过建议除了以上两味之外不要再多加东西,顶多再加味桂圆足够了。你加那么多好东西在里面,那还不如直接吃十全大补丸算了,还要阿胶干吗?谁主谁辅还是要分清楚。  ­

        

    最好的吃法是用黄酒浸泡,黄酒温胃,而阿胶质黏腻,两个正好相助吸收。补血的同时建议多吃甘蔗,胡萝卜,菠菜,桂圆和豆浆,都是补铁的食物。不推荐红糖,过甜伤脾脏,脾虚则面色发黑。  ­

        

    要纠正一个观念,不能单独靠某一味食物补身体,饮食要全面,比如你现在已经知道,补血和补气的食物了,那这两种都要常吃,单独吃效果肯定不会明显,这个是肯定的。  ­

        

    隆重介绍两个要经常吃的好东西!银耳和黑木耳,古时候都是皇家的营养品。黑白木耳的营养丰富,成份大致相近,都含有丰富的胶质。胶质对于女人很重要!  ­

        

    黑木耳蛋白质含量与肉相同,铁的含量是鱼肉的70倍,是菠菜的20倍,是猪肝的7倍,所以黑木耳是一味重要的补血食物哦!现在专门把它们俩挑出来讲,是因为它和白木耳具有太多对女人好的东西了。现在的女人喜欢在外面吃饭,而且口味都很重,胆固醇等脂肪含量很容易就高了,血液中有害脂肪含量一旦高,皮肤和身体状态就不会好,老化得也快,皱纹也多,血液的质量对于美容来说太重要!  ­

       

    黑木耳能够阻止有害脂肪在血液里的停留,它最大的好处就是从吃进身体里开始,就从气管开始,从上到下的,包括肺,胃,肠道,血液,身体里的灰尘,二手烟灰,不好的异物,环境污染物,全都能带出体外。身体里面也能洗澡。  ­

        

    黑白木耳有很强抗癌功能,并能提高肝脏的解毒能力。  ­

        

    银耳要买黄色的不要白色的,滋润效果一流!润燥,润肺,和血,阴虚火旺体质就要指望它了!肺健康了,皮肤自然娇嫩。  ­

        

    补阴的食物除了梨,甘蔗,黑芝麻,豆浆,银耳,百合,这些偏素的之外,荤菜推荐鸭子,不光滋阴清热,还有利水的功能,夏天吃它可以防止妇科炎症的发生。太多的疾病都是因为体内废水到处乱跑,所以多吃吃意仁没坏处。  ­

        

    阳虚必须摄入大量肉类,虽然之前推荐的都是素菜,但从没有说过要吃素,荤一定要吃,完全吃素对身体很有害。牛羊肉是一定要吃的,这两种肉摄入后,不会产生湿气,脂肪含量也少,能量和铁都含量足够高。  ­

        

    冬天一定要多吃羊肉,男女都要多吃。羊肉能够大补虚损,补益元气,能治疗肾脏阳虚,温补暖身,能够治疗脾胃虚寒,即虚寒体质要多吃,健胃壮脾,对脾肾都非常有好处。虚劳瘦弱的体质多吃羊肉可以使人强壮。  ­

          ­

    狗肉也是一样要多吃,补益力气,补脾胃,暖肾脏,强筋健骨,但不宜和杏仁一起服用。还有一味菜补阳,醉虾,就是用酒浸泡活虾服用,可以治疗四肢寒冷,脾肾阳虚。  ­

      

    除了以上的四味肉类食物之外,核桃治疗肾虚腰痛,耳鸣,滋补肝肾脏,能够治疗肺虚寒,改善肠道便秘,滋润五脏。长久服用,皮肤细腻光滑,头发乌黑有光泽,延缓衰老。  ­

          ­

    除了牛羊肉之外,其它的温补阳虚的食物,阴虚火旺体质的人都要少吃。  ­

     

    一位姐妹的LG肾脏炎症,还有一个姐妹内脏下垂严重,这里讲到脾脏的各种症状以及保养的方法对她们来说非常重要,对于身体健康来说,脾脏一旦虚弱,全身九脉皆堵。对于每个想变美的女人来说,脾脏统领血液,是我们美丽的根本。  

    脾胃通过经脉相关联,脾胃功能好的人,肌肤一定是滋润,丰腴的。相反的,如果一个人枯瘦,皮肤没有光泽,则脾胃功能不好,所以身体气血不足。脾脏的健康状况也可以从嘴唇的颜色来看,如果是深红色,是内热,如果是浅红色,是虚寒,如果嘴唇皮肤很干燥,是体内津液不足.因为脾脏通过消化食物来造血,所以和女人的月经周期也有关系。它是我们女人的福音,如果你掌握了保养脾脏的方法,你就可以一辈子都不要做黄脸婆,就算是到了五十多岁也一样,脸色不会枯黄。因为不善保养,脾脏失去统血功能之后,皮肤就会干枯发黄,虽然皮肤自然的颜色是黄色,这里的意思是焦黄色。首先是脾气虚,然后再发展成为脾不统血。身体内的元气和脾胃消化的食物一起生产出血液,首先就是要保证正常健康的饮食。  ­

       

    如果你脸色发黄了,就一定要常常吃芋头。紫色的芋头对脾胃最好,造血,统血效果好,能够使皮肤和肌肉润泽丰腴。还有一道食补方,春夏秋冬坚持吃,非常有效,就是菱角,土豆,红豆,山药,茨实,莲子,红枣和大米一起煮熟,这些饭全是补脾脏的,能够造血,逐步改善肤色。 脸色萎黄是从气虚发展而来的,除了情绪,疲劳的因素之外,不吃米饭是最主要的原因。所以,为了能有一个好脸色,每天至少吃两碗米饭。  ­

     

     

    这些真的都好有用好有用、、、、、大家不妨都试试、、、

  • oracle-merge(合并语句)用法详解

    2011-05-10 00:38:24

    Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和updates操作. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表.在Oracle 10g中MERGE有如下一些改进:

    1、UPDATE或INSERT子句是可选的

    2、UPDATE和INSERT子句可以加WHERE子句

    3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表

    4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行

    首先创建示例表:

    create table PRODUCTS
        (
        PRODUCT_ID INTEGER,
        PRODUCT_NAME VARCHAR2(60),
        CATEGORY VARCHAR2(60)
        );
    
        insert into PRODUCTS values (1501, 'VIVITAR 35MM', 'ELECTRNCS');
        insert into PRODUCTS values (1502, 'OLYMPUS IS50', 'ELECTRNCS');
        insert into PRODUCTS values (1600, 'PLAY GYM', 'TOYS');
        insert into PRODUCTS values (1601, 'LAMAZE', 'TOYS');
        insert into PRODUCTS values (1666, 'HARRY POTTER', 'DVD');
        commit;
    
        create table NEWPRODUCTS
        (
        PRODUCT_ID INTEGER,
        PRODUCT_NAME VARCHAR2(60),
        CATEGORY VARCHAR2(60)
        );
    
        insert into NEWPRODUCTS values (1502, 'OLYMPUS CAMERA', 'ELECTRNCS');
        insert into NEWPRODUCTS values (1601, 'LAMAZE', 'TOYS');
        insert into NEWPRODUCTS values (1666, 'HARRY POTTER', 'TOYS');
        insert into NEWPRODUCTS values (1700, 'WAIT INTERFACE', 'BOOKS');
        commit;

    1、可省略的UPDATE或INSERT子句

    在Oracle 9i, MERGE语句要求你必须同时指定INSERT和UPDATE子句.而在Oracle 10g, 你可以省略UPDATE或INSERT子句中的一个. 下面的例子根据表NEWPRODUCTS的PRODUCT_ID字段是否匹配来updates表PRODUCTS的信息:

    SQL> MERGE INTO products p
        2 USING newproducts np
        3 ON (p.product_id = np.product_id)
        4 WHEN MATCHED THEN
        5 UPDATE
        6 SET p.product_name = np.product_name,
        7 p.category = np.category;
    
        3 rows merged.
    
        SQL> SELECT * FROM products;
    
        PRODUCT_ID PRODUCT_NAME CATEGORY
        ---------- -------------------- ----------
        1501 VIVITAR 35MM ELECTRNCS
        1502 OLYMPUS CAMERA ELECTRNCS
        1600 PLAY GYM TOYS
        1601 LAMAZE TOYS
        1666 HARRY POTTER TOYS
        SQL>
        SQL> ROLLBACK;
        Rollback complete.
        SQL>

    在上面例子中, MERGE语句影响到是产品id为1502, 1601和1666的行. 它们的产品名字和种 类被更新为表newproducts中的值. 下面例子省略UPDATE子句, 把表NEWPRODUCTS中新的PRODUCT_ID插入到表PRODUCTS中, 对于在两个表中能够匹配上PRODUCT_ID的数据不作任何处理. 从这个例子你能看到PRODUCT_ID=1700的行被插入到表PRODUCTS中.

    SQL> MERGE INTO products p
        2 USING newproducts np
        3 ON (p.product_id = np.product_id)
        4 WHEN NOT MATCHED THEN
        5 INSERT
        6 VALUES (np.product_id, np.product_name,
        7 np.category);
    
        1 row merged.
    
        SQL> SELECT * FROM products;
    
        PRODUCT_ID PRODUCT_NAME CATEGORY
        ---------- -------------------- ----------
        1501 VIVITAR 35MM ELECTRNCS
        1502 OLYMPUS IS50 ELECTRNCS
        1600 PLAY GYM TOYS
        1601 LAMAZE TOYS
        1666 HARRY POTTER DVD
        1700 WAIT INTERFACE BOOKS

    2、带条件的Updates和Inserts子句

    你能够添加WHERE子句到UPDATE或INSERT子句中去, 来跳过update或insert操作对某些行的处理. 下面例子根据表NEWPRODUCTS来更新表PRODUCTS数据, 但必须字段CATEGORY也得同时匹配上:

    SQL> MERGE INTO products p
        2 USING newproducts np
        3 ON (p.product_id = np.product_id)
        4 WHEN MATCHED THEN
        5 UPDATE
        6 SET p.product_name = np.product_name
        7 WHERE p.category = np.category;
    
        2 rows merged.
    
        SQL> SELECT * FROM products;
    
        PRODUCT_ID PRODUCT_NAME CATEGORY
        ---------- -------------------- ----------
        1501 VIVITAR 35MM ELECTRNCS
        1502 OLYMPUS CAMERA ELECTRNCS
        1600 PLAY GYM TOYS
        1601 LAMAZE TOYS
        1666 HARRY POTTER DVD
        SQL>
        SQL> rollback;

    在这个例子中, 产品ID为1502,1601和1666匹配ON条件但是1666的category不匹配. 因此MERGE命令只更新两行数据. 下面例子展示了在Updates和Inserts子句都使用WHERE子句:

    SQL> MERGE INTO products p
        2 USING newproducts np
        3 ON (p.product_id = np.product_id)
        4 WHEN MATCHED THEN
        5 UPDATE
        6 SET p.product_name = np.product_name,
        7 p.category = np.category
        8 WHERE p.category = 'DVD'
        9 WHEN NOT MATCHED THEN
        10 INSERT
        11 VALUES (np.product_id, np.product_name, np.category)
        12 WHERE np.category != 'BOOKS'
        SQL> /
    
        1 row merged.
    
        SQL> SELECT * FROM products;
    
        PRODUCT_ID PRODUCT_NAME CATEGORY
        ---------- -------------------- ----------
        1501 VIVITAR 35MM ELECTRNCS
        1502 OLYMPUS IS50 ELECTRNCS
        1600 PLAY GYM TOYS
        1601 LAMAZE TOYS
        1666 HARRY POTTER TOYS
    
        SQL>

    注意由于有WHERE子句INSERT没有插入所有不匹配ON条件的行到表PRODUCTS.

    3、无条件的Inserts

    你能够不用连接源表和目标表就把源表的数据插入到目标表中. 这对于你想插入所有行到目标表时是非常有用的. Oracle 10g现在支持在ON条件中使用常量过滤谓词. 举个常量过滤谓词例子ON (1=0). 下面例子从源表插入行到表PRODUCTS, 不检查这些行是否在表PRODUCTS中存在:






    SQL> MERGE INTO products p
        2 USING newproducts np
        3 ON (1=0)
        4 WHEN NOT MATCHED THEN
        5 INSERT
        6 VALUES (np.product_id, np.product_name, np.category)
        7 WHERE np.category = 'BOOKS'
        SQL> /
    
        1 row merged.
    
        SQL> SELECT * FROM products;
    
        PRODUCT_ID PRODUCT_NAME CATEGORY
        ---------- -------------------- ----------
        1501 VIVITAR 35MM ELECTRNCS
        1502 OLYMPUS IS50 ELECTRNCS
        1600 PLAY GYM TOYS
        1601 LAMAZE TOYS
        1666 HARRY POTTER DVD
        1700 WAIT INTERFACE BOOKS
        6 rows selected.
        SQL>

    4、新增加的DELETE子句

    Oracle 10g中的MERGE提供了在执行数据操作时清除行的选项. 你能够在WHEN MATCHED THEN UPDATE子句中包含DELETE子句. DELETE子句必须有一个WHERE条件来删除匹配某些条件的行.匹配DELETE WHERE条件但不匹配ON条件的行不会被从表中删除.

    下面例子验证DELETE子句. 我们从表NEWPRODUCTS中合并行到表PRODUCTS中, 但删除category为ELECTRNCS的行.

    SQL> MERGE INTO products p
        2 USING newproducts np
        3 ON (p.product_id = np.product_id)
        4 WHEN MATCHED THEN
        5 UPDATE
        6 SET p.product_name = np.product_name,
        7 p.category = np.category
        8 DELETE WHERE (p.category = 'ELECTRNCS')
        9 WHEN NOT MATCHED THEN
        10 INSERT
        11 VALUES (np.product_id, np.product_name, np.category)
        SQL> /
    
        4 rows merged.
    
        SQL> SELECT * FROM products;
    
        PRODUCT_ID PRODUCT_NAME CATEGORY
        ---------- -------------------- ----------
        1501 VIVITAR 35MM ELECTRNCS
        1600 PLAY GYM TOYS
        1601 LAMAZE TOYS
        1666 HARRY POTTER TOYS
        1700 WAIT INTERFACE BOOKS
        SQL>

    产品ID为1502的行从表PRODUCTS中被删除, 因为它同时匹配ON条件和DELETE WHERE条件. 产品ID为1501的行匹配DELETE WHERE条件但不匹配ON条件, 所以它没有被删除. 产品ID为1700 的行不匹配ON条件, 所以被插入表PRODUCTS. 产品ID为1601和1666的行匹配ON条件但不匹配DELETE WHERE条件, 所以被更新为表NEWPRODUCTS中的值.

     

    转自:http://blogold.chinaunix.net/u/12457/showart_346642.html

  • insert WITH CHECK OPTION的用法

    2011-05-10 00:17:58

    insert into (<select clause> WITH CHECK OPTION) values (...)

    例如:

    SQL> insert into (select object_id,object_name,object_type from xxx where object_id<1000  WITH CHECK OPTION)
      2  values(999,'testbyhao','testtype');

    这样的语法看起来很特殊,其实是insert进subquery里的这张表里,只不过如果不满足subquery里的where条件的话,就不允许插入。

    如果插入的列有不在subquery作为检查的where条件里,那么也会不允许插入。

    如果不加WITH CHECK OPTION则在插入时不会检查。

    这里注意,subquery其实是不会实际执行的。

     

    例如:

    SQL> insert into (select object_id,object_name,object_type from xxx where object_id<1000)
      2  values(1001,'testbyhao','testtype');

    1 row created.


    SQL> insert into (select object_id,object_name,object_type from xxx where object_id<1000with check option)
      2  values(1001,'testbyhao','testtype');
    insert into (select object_id,object_name,object_type from xxx where object_id<1000 with check option)
                                                               *
    ERROR at line 1:
    ORA-01402: view WITH CHECK OPTION where-clause violation

    这里插入的列中没有object_id,也是不允许插入的:

    SQL> insert into (select object_name,object_type from xxx where object_id<1000 with check option)
      2  values('testbyhao','testtype');
    insert into (select object_name,object_type from xxx where object_id<1000 with check option)
                                                     *
    ERROR at line 1:
    ORA-01402: view WITH CHECK OPTION where-clause violation

    为什么说subquery没有实际执行呢?看统计信息吧:


    SQL> set autotrace trace exp stat
    SQL> select object_id,object_name,object_type from xxx where object_id<1000;

    955 rows selected.


            197  consistent gets

    SQL> insert into (select object_id,object_name,object_type from xxx where object_id<1000)
      2  values(999,'testbyhao','testtype');

    1 row created.


              1  consistent gets

     

     

    转自:http://space.itpub.net/15415488/viewspace-673594

     

  • Oracle内连接、左外连接、右外连接、全外连接小总结

    2011-05-09 17:24:06

    数据库版本:Oracle 9i
    表TESTA,TESTB,TESTC,各有A, B两列
    *******TESTA*******
    A      B 
    001   10A 
    002   20A
     
    *********TESTB******

    A      B 
    001   10B
    003   30B
    ********TESTC*******
    A      B 
    001   10C 
    004   40C
     

    连接分为两种:内连接与外连接。

    A.内连接
    内连接,即最常见的等值连接,例:

    SELECT *
    FROM TESTA,TESTB
    WHERE TESTA.A=TESTB.A
    结果
    A      B      A      B
     
    001   10A    001    10B
     

    B.外连接
    (1)使用外连接可以查询不满足连接条件的数据
    (2)外连接的符号是(+)

    外连接分为左外连接,右外连接和全外连接。
    1.  左外连接 left outer join 或者 left join
    左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:

    SELECT *
    FROM TESTA
    LEFT OUTER JOIN TESTB
    ON TESTA.A=TESTB.A
     
    Oracle 支持另一种写法
     
    SELECT *
    FROM TESTA,TESTB
    WHERE TESTA.A=TESTB.A(+)
    结果:
    A      B      A      B
     
    001   10A    001    10B
     
    002   10B
      
     

    三个表做左外连接
    SELECT *
    FROM TESTA
    LEFT OUTER JOIN TESTB
    ON TESTA.A=TESTB.A
    LEFT OUTER JOIN TESTC
    ON TESTA.A=TESTC.A
     
    Oracle 支持的另外一种写法
     
    SELECT *
    FROM TESTA,TESTB,TESTC
    WHERE TESTA.A=TESTB.A(+)
    AND TESTA.A=TESTC.A(+)
     
    结果:
    A     B    A    B     A     B
    001  10A  001  10B   001   10C
    002  20A 
      
      
      
     

    2. 右外连接
    right outer join 或者 right join
    右外连接是在等值连接的基础上加上被连接表的不匹配数据
     
    SELECT *
    FROM TESTA
    RIGHT OUTER JOIN TESTB
    ON TESTA.A=TESTB.A

    Oracle支持的另一种写法
     
    SELECT *
    FROM TESTA,TESTB
    WHERE TESTA.A(+)=TESTB.A
     
    结果:
    A    B    A    B
    001 10A  001  10B
     
             003  30B
     

    3.全外连接
    full outer join 或者 full join
    全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上
     
    SELECT *
    FROM TESTA
    FULL OUTER JOIN TESTB
    ON TESTA.A=TESTB.A
     
    全外连接的等价写法,对同一表先做左连接,然后右连接
     
    SELECT  TESTA.*,TESTB.*
    FROM TESTA
    LEFT OUTER JOIN TESTB
    ON TESTA.A=TESTB.A
    UNION
    SELECT TESTA.*,TESTB.*
    FROM TESTB
    LEFT OUTER JOIN TESTA
    ON TESTA.A=TESTB.A
     
    结果:
    A     B    A    B
     
    001  10A  001  10B
     
    002  20A
      
              003  30B
     
  • 【转】 标准http状态码

    2011-05-07 17:42:55

    Number
        Description
     
    100
     Continue
     
    101
     Switching protocols
     
    200
     OK
     
    201
     Created
     
    202
     Accepted
     
    203
     Non-Authoritative Information
     
    204
     No Content
     
    205
     Reset Content
     
    206
     Partial Content
     
    300
     Multiple Choices
     
    301
     Moved Permanently
     
    302
     Found
     
    303
     See Other
     
    304
     Not Modified
     
    305
     Use Proxy
     
    307
     Temporary Redirect
     
    400
     Bad Request
     
    401
     Unauthorized
     
    402
     Payment Required
     
    403
     Forbidden
     
    404
     Not Found
     
    405
     Method Not Allowed
     
    406
     Not Acceptable
     
    407
     Proxy Authentication Required
     
    408
     Request Timeout
     
    409
     Conflict
     
    410
     Gone
     
    411
     Length Required
     
    412
     Precondition Failed
     
    413
     Request Entity Too Large
     
    414
     Request-URI Too Long
     
    415
     Unsupported Media Type
     
    416
     Requested Range Not Suitable
     
    417
     Expectation Failed
     
    500
     Internal Server Error
     
    501
     Not Implemented
     
    502
     Bad Gateway
     
    503
     Service Unavailable
     
    504
     Gateway Timeout
     
    505
     HTTP Version Not Supported
     

     
     
     
     
    1.1 消息1xx(Informational 1xx)
    该类状态代码用于表示临时回应。临时回应由状态行(Status-Line)及可选标题组成,由空行终止。HTTP/1.0中没有定义任何1xx的状态代码,所以它们不是对HTTP/1.0请求的合法回应。实际上,它们主要用于实验用途,这已经超出本文档的范围。
    1.2 成功2xx(Successful 2xx)
    表示客户端请求被成功接收、理解、接受。
    200 OK
    请求成功。回应的信息依赖于请求所使用的方法,如下:
    GET 要请求的资源已经放在回应的实体中了。
    HEAD 没有实体主体,回应中只包括标题信息。 
    POST 实体(描述或包含操作的结果)。
    201 Created
    请求完成,结果是创建了新资源。新创建资源的URI可在回应的实体中得到。原始服务器应在发出该状态代码前创建该资源。如果该操作不能立即完成,服务器必须在该资源可用时在回应主体中给出提示,否则,服务器端应回应202(可被接受)。
    在本文定义的方法,只有POST可以创建资源。
    202 Accepted
    请求被接受,但处理尚未完成。请求可能不一定会最终完成,有可能被处理过程随时中断,在这种情况下,没有办法在异步操作中重新发送状态代码。
    202回应是没有义务的,这样做的目的是允许服务器不必等到用户代理和服务器间的连接结束,就可以响应其它过程的请求(象每天运行一次的,基于批处理的过程)。
    在某些回应中返回的实体中包括当前请求的状态指示、状态监视器指针或用户对请求能否实现的评估信息。
    204 No Content
    服务器端已经实现了请求,但是没有返回新的信息。如果客户是用户代理,则勿需为此更新自身的文档视图。该回应主要是为了在不影响用户代理激活文档视图的前提下,进行script语句的输入及其它操作。该回应还可能包括新的、以实体标题形式表示的元信息,它可被当前用户代理激活视图中的文档所使用。
    1.3 重定向(Redirection 3xx)
    该类状态码表示用户代理要想完成请求,还需要发出进一步的操作。这些操作只有当后跟的请求是GET或HEAD时,才可由用户代理来实现,而不用与用户进行交互。用户代理永远也不要对请求进行5次以上的重定向操作,这样可能导致无限循环。
    300 Multiple Choices
    该状态码不被HTTP/1.0的应用程序直接使用,只是做为3xx类型回应的缺省解释。存在多个可用的被请求资源。
    除非是HEAD请求,否则回应的实体中必须包括这些资源的字符列表及位置信息,由用户或用户代理来决定哪个是最适合的。
    如果服务器有首选,它应将对应的URL信息存放在位置域(Location field)处,用户代理会根据此域的值来实现自动的重定向。
    301 Moved Permanently
    请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源。有编辑链接功能的客户端会尽可能地根据服务器端传回的新链接而自动更新请求URI。新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体(Entity-Body)必须包括对新URL超链接的简要描述。
    如果用POST方法发出请求,而接收到301回应状态码。在这种情况下,除非用户确认,否则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。
    注意:当在接收到301状态码后而自动重定向POST请求时,一些现存的用户代理会错误地将其改为GET请求。
    302 Moved Temporarily
    请求到的资源在一个不同的URL处临时保存。因为重定向有时会被更改,客户端应继续用请求URI来发出以后的请求。新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体(Entity-Body)必须包括对新URL超链接的简要描述。
    如果用POST方法发出请求,而接收到302回应状态码。在这种情况下,除非用户确认,否则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。
    注意:当在接收到302状态码后而自动重定向POST请求时,一些现存的用户代理会错误地将其改为GET请求。
    304 Not Modified
    如果客户端成功执行了条件GET请求,而对应文件自If-Modified-Since域所指定的日期以来就没有更新过,服务器应当回应此状态码,而不是将实体主体发送给客户端。回应标题域中只应包括一些相关信息,比如缓存管理器、与实体最近更新(entity's Last-Modified)日期无关的修改。相关标题域的例子有:日期、服务器、过期时间。每当304回应中给出的域值发生变化,缓存都应当对缓存的实体进行更新。
    1.4 客户端错误(Client Error)4xx
    4xx类的状态码表示客户端发生错误。如果客户端在收到4xx代码时请求还没有完成,它应当立即终止向服务器发送数据。除了回应HEAD请求外,不论错误是临时的还是永久的,服务器端都必须在回应的实体中包含错误状态的解释。这些状态码适用于任何请求方法。
    注意:如果客户端正在发送数据,服务器端的TCP实现应当小心,以确保客户端在关闭输入连接之前收到回应包。如果客户端在关闭后仍旧向服务器发送数据,服务器会给客户  端发送一个复位包,清空客户端尚未处理的输入缓冲区,以终止HTTP应用程序的读取、解释活动。
    400 非法请求(Bad Request)
    如果请求的语法不对,服务器将无法理解。客户端在对该请求做出更改之前,不应再次向服务器重复发送该请求。
    401 未授权(Unauthorized)
    请求需要用户授权。回应中的WWW-Authenticate标题域(10.16节)应提示用户以授权方式请求资源。客户端应使用合适的授权标题域(10.2节)来重复该请求。如果请求中已经包括了授权信任信息,那回应的401表示此授权被拒绝。如果用户代理在多次尝试之后,回应一样还是返回401状态代码,用户应当察看一下回应的实体,因为在实体中会包括一些相关的动态信息。HTTP访问授权会在11节中解释。
    403 禁止(Forbidden)
    服务器理解请求,但是拒绝实现该请求。授权对此没有帮助,客户端应当停止重复发送此请求。如果不是用HEAD请求方法,而且服务器端愿意公布请求未被实现原因的前提下,服务器会将拒绝原因写在回应实体中。该状态码一般用于服务器端不想公布请求被拒绝的细节或没有其它的回应可用。
    404 没有找到(Not Found)
    服务器没有找到与请求URI相符的资源。404状态码并不指明状况是临时性的还是永久性的。如果服务器不希望为客户端提供这方面的信息,还回应403(禁止)状态码。
    1.5 服务器错误(Server Error )5xx
    回应代码以‘5’开头的状态码表示服务器端发现自己出现错误,不能继续执行请求。如果客户端在收到5xx状态码时,请求尚未完成,它应当立即停止向服务器发送数据。除了回应HEAD请求外,服务器应当在其回应实体中包括对错误情况的解释、并指明是临时性的还永久性的。
    这类回应代码没有标题域,可适用于任何请求方法。
    500 服务器内部错误(Internal Server Error)
    服务器碰到了意外情况,使其无法继续回应请求。
    501 未实现(Not Implemented)
    服务器无法提供对请求中所要求功能的支持。如果服务器无法识别请求方法就会回应此状态代码,这意味着不能回应请求所要求的任何资源。
    502 非法网关(Bad Gateway)
    充当网关或代理的服务器从要发送请求的上游(upstream)服务器收到非法的回应。
    503 服务不可用(Service Unavailable)
    服务器当前无法处理请求。这一般是由于服务器临时性超载或维护引起的。该状态码暗示情况是暂时性的,要产生一些延迟。
    注意:503状态码并没有暗示服务器在超载时一定要返回此状态码。一些服务器可能希望在超载时采用简单处理,即断掉连接。
    IIS 错误代码大汇总
    400 无法解析此请求。
    401.1 未经授权:访问由于凭据无效被拒绝。
    401.2 未经授权: 访问由于服务器配置倾向使用替代身份验证方法而被拒绝。
    401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
    401.4 未经授权:Web 服务器上安装的筛选器授权失败。
    401.5 未经授权:ISAPI/CGI 应用程序授权失败。
    401.7 未经授权:由于 Web 服务器上的 URL 授权策略而拒绝访问。
    403 禁止访问:访问被拒绝。
    403.1 禁止访问:执行访问被拒绝。
    403.2 禁止访问:读取访问被拒绝。
    403.3 禁止访问:写入访问被拒绝。
    403.4 禁止访问:需要使用 SSL 查看该资源。
    403.5 禁止访问:需要使用 SSL 128 查看该资源。
    403.6 禁止访问:客户端的 IP 地址被拒绝。
    403.7 禁止访问:需要 SSL 客户端证书。
    403.8 禁止访问:客户端的 DNS 名称被拒绝。
    403.9 禁止访问:太多客户端试图连接到 Web 服务器。
    403.10 禁止访问:Web 服务器配置为拒绝执行访问。
    403.11 禁止访问:密码已更改。
    403.12 禁止访问:服务器证书映射器拒绝了客户端证书访问。
    403.13 禁止访问:客户端证书已在 Web 服务器上吊销。
    403.14 禁止访问:在 Web 服务器上已拒绝目录列表。
    403.15 禁止访问:Web 服务器已超过客户端访问许可证限制。
    403.16 禁止访问:客户端证书格式错误或未被 Web 服务器信任。
    403.17 禁止访问:客户端证书已经到期或者尚未生效。
    403.18 禁止访问:无法在当前应用程序池中执行请求的 URL。
    403.19 禁止访问:无法在该应用程序池中为客户端执行 CGI。
    403.20 禁止访问:Passport 登录失败。
    404 找不到文件或目录。
    404.1 文件或目录未找到:网站无法在所请求的端口访问。
    注意 404.1 错误只会出现在具有多个 IP 地址的计算机上。如果在特定 IP 地址/端口组合上收到客户端请求,而且没有将 IP 地址配置为在该特定的端口上侦听,则 IIS 返回 404.1 HTTP 错误。例如,如果一台计算机有两个 IP 地址,而只将其中一个 IP 地址配置为在端口 80 上侦听,则另一个 IP 地址从端口 80 收到的任何请求都将导致 IIS 返回 404.1 错误。只应在此服务级别设置该错误,因为只有当服务器上使用多个 IP 地址时才会将它返回给客户端。
    404.2 文件或目录无法找到:锁定策略禁止该请求。
    404.3 文件或目录无法找到:MIME 映射策略禁止该请求。
    405 用于访问该页的 HTTP 动作未被许可。
    406 客户端浏览器不接受所请求页面的 MIME 类型。
    407 Web 服务器需要初始的代理验证。
    410 文件已删除。
    412 客户端设置的前提条件在 Web 服务器上评估时失败。
    414 请求 URL 太大,因此在 Web 服务器上不接受该 URL。
    500 服务器内部错误。
    500.11 服务器错误:Web 服务器上的应用程序正在关闭。
    500.12 服务器错误:Web 服务器上的应用程序正在重新启动。
    500.13 服务器错误:Web 服务器太忙。
    500.14 服务器错误:服务器上的无效应用程序配置。
    500.15 服务器错误:不允许直接请求 GLOBAL.ASA。
    500.16 服务器错误:UNC 授权凭据不正确。
    500.17 服务器错误:URL 授权存储无法找到。
    500.18 服务器错误:URL 授权存储无法打开。
    500.19 服务器错误:该文件的数据在配置数据库中配置不正确。
    500.20 服务器错误:URL 授权域无法找到。
    500.100 内部服务器错误:ASP 错误。
    501 标题值指定的配置没有执行。
    502 Web 服务器作为网关或代理服务器时收到无效的响应。
     
  • 解决SysFader:IEXPLORE.EXE应用程序错误

    2011-01-27 14:50:05

    最近将浏览器从IE6升级到IE8,结果----在访问很多网页的时候,经常会出现“ysFader:IEXPLORE.EXE - 应用程序错误”的提示,提示内容为“0x0262d580指令引用的0x0262d580内存。改内存不能read”,每次不一定相同,但是都是由于SysFader引起的错误。
     

    解决方法--去掉“启用第三方浏览器扩展”

      打开IE8,找到“工具 -> Internet选项 -> 高级 -> 浏览 -> 启用第三方浏览器扩展*”,取消选中后重新启动IE8浏览器,问题成功解决。

     

  • Suse Linux的IP设置

    2010-06-08 13:26:33

    转自:http://os.51cto.com/art/200911/165014.htm

    第一种SUSE Linux IP设置方法
    ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up
    route add default gw 192.168.1.2

    释义:
    #IP配置,包括子网掩码,看情况修改eth0和192.168.1.22
    #网关修改 ,看情况修改192.168.1.2

    第二种SUSE Linux IP设置方法

    在suse操作系统中每个网卡都有一个配置文件,在/etc/sysconfig/network/目录下。用root登录,编辑ifcfg-eth0-你的网卡的物理地址的那个文件:
    把BOOTPROTO的赋值改成成static,也就是BOOTPROTO=static
    然后增加如下内容:
    IPADDR=192.168.1.110
    NETMASK=255.255.255.0
    NETWORK=192.168.1.0
    BROADCAST=192.168.1.255

    配置完后 要让它生效,就输入/etc/init.d/network restart就可以生效,注意suse9的网管配置是在/etc/sysconfig/network/目录下的 routes这个文件配置的。这样你就学会了SUSE Linux IP的两种设置方法了。

  • LINUX--Telnet root用户的登入

    2010-06-07 16:23:20

    Telnet root用户的登入

      Telnet 不是很安全,默认的情况之下不允许 root 以 telnet 进入 Linux 主机 。若要允许root用

    户登入,可用下列方法:

    (1)

      [root @echo /root]# vi /etc/pam.d/login

      #auth       required    /lib/security/pam_securetty.so   #将这一行加上注释!

      或

      [root@echo root]# mv /etc/securetty /etc/securetty.bak

      

    (2)编辑/etc/securetty 文件,加上下面几行:

    pts/0

    pts/1

    pts/2

    pts/3

  • 【转】Solaris-vi编辑文件时出现“Terminal too wide”的提示

    2010-06-03 15:53:19

    由于我在SecureCRT里把Columns设成了256,在用vi编辑文件时遇到“Terminal too wide”(终端太宽)的提示(Solaris平台),如下:

    # vi hosts
    Terminal too wide
    :
    At EOF
    :
    At EOF
    :q!
    # uname -a
    SunOS fs-cluster1 5.8 Generic_108528-13 sun4u sparc SUNW,Sun-Fire-280R
    #

    后来搜了一下,说宽屏电脑也有这个问题,是vi在Solaris上的缺陷。

    通过以下方式解决了:

    check you columns setting:
    # stty -a
    # stty columns 132

    搞定!

    --End--
  • 【LINUX】查找空间最大的目录

    2010-05-26 13:24:18

    先进入相关目录,之后执行:

    du -h --max-depth=1|grep G|sort -n

Open Toolbar