如果纯粹比较数字或字符,建议使用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两者可以搭配着灵活使用。
要用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的核心服务完全超出了预期,基本上不需要做出调整已经可以满足性能需求。



我想用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级的,工业环境。
         前些日子访问O-blog 首页就看见了了了数字:"谁终将声震人间,必长久深自缄默;谁终将点燃闪电,必长久如云漂泊。就让我们只留下回忆!"。在论坛中管理员风色的答复是:"因为学业上的问题,我得离开一些日子。2.7暂时不开发了,不过如果现在的版本出现 BUG 或者安全漏洞,我会及时给出补丁。谢谢大家关注。O-blog 并没有死亡。 …… 因为离开的时候会比较长,比较长,比较长......"
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;
}
 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网络应用和环境的优秀组合。
#AddDefaultCharset GB2312
AddDefaultCharset utf-8
現在有另外一隻更方便的程式囉~ 就是下述:

    * convmv - convert filenames to utf8 or any other charset

這隻主要是隻 Perl script, 該做 轉換/備份/測試/偵測環境 等等, 都寫的蠻完整的.
convmv 轉換編碼指令

    * convmv -f big5 -t utf-8 -r --notest *
    * -f big5: 從 Big5 編碼轉換 (不過標準應該是要寫 big5-eten, 但是我測試 big5 也可以動. :P)
    * -t utf-8: 轉換編碼到 UTF-8
    * -r: 遞迴的將目錄下的所有檔名都做轉換
    * --notest: 如果不下這個, 一切動作都只是測試, 會直接將轉換前和轉換後的檔名列給你看, 這加下去, 才會實際轉換檔名.
    * *: 所有檔案

其他參數

    * --list : 列出所有可用的編碼
    * --unescape : 轉換檔名中 %xx 這種 16 進位的編碼 (mv "./a%20x.jpg" "./a x.jpg")
    * --lower : 將所有檔名都轉小寫(ex: convmv --lower LOWER.txt)
    * --upper : 將所有檔名都轉大寫
    * -i : 互動模式, 轉換前會先經過 y/n 確認
    * 更多詳細可 man convmv 或 convmv --help, 除此之外, 可以另外再搭配 rename 做些其他應用~ :)

实例:
convmv -f gb2312 -t utf-8 -r --notest *

来源:http://plog.longwin.com.tw/news-unix/2008/07/15/convmv_utf8_big5_convert_linux_2008
header.php:

<script type="text/javascript" src="/js/jquery/jquery.js" ></script>
<script type="text/javascript" src="/js/jquery/jquery.webinfo-min.js" ></script>
<script type="text/javascript" src="/js/jquery/jquery.form.js" ></script>

jquerytest.php


<img src="images/grym_32.jpg" class="bt_vote_test" ref_test="test..."></img>


<script >
  $('.bt_vote_test').click(function(){dosomething($(this).attr('ref_test'));});
  function dosomething(value)
  {
    
    alert(value);
  }
  
</script>

如果你在网上搜索 “apache配置”,搜到的页面大多都会建议你在httpd.conf中加上这么一句:AddDefaultCharset GB2312。对于新手而且是只用GB2312编码的开发人来说,这么做是ok的。阅读全文
转载自:http://www.javaeye.com/topic/5009

Ps:
在onsubmit函数里加上一个documents.write会显不出来的,也就破坏了函数的意意。

众所周知,在表单中加上onsubmit="return false;"可以阻止表单提交。
下面是简单的一小段代码:


java代码:  


<form action="index.jsp" method="post" onsubmit="submitTest();">
    <INPUT value="www">
    <input type="submit" value="submit">
</form>

<SCRIPT LANGUAGE="JavaScript">
<!--
    function submitTest() {
        // 一些逻辑判断
     return false;
    }
//-->
</SCRIPT>



大家判断像上面的写法,点击submit按钮该表单是否提交?

若答案为是,就不用往下看了。

若答案为否,错了。实际情况是表单正常提交,若想它不提交,应该将
java代码:  


<form action="index.jsp" method="post" onsubmit="submitTest();">


改为
java代码:  


<form action="index.jsp" method="post" onsubmit="return submitTest();">




为何?

原来onsubmit属性就像是<form>这个html对象的一个方法名,其值(一字符串)就是其方法体,默认返回true;

和Java一样,在该方法体中你可以写任意多个语句,包括内置函数和自定义函数,如
java代码:  


onsubmit="
    alert('haha'); // 内置函数
    submitTest();  // 自定义函数
    alert(this.tagName); // 用到了this关键词
    ......(任意多条语句)    
    return false;
"



就相当于
java代码:  


Form.prototype.onsubmit = function() {
    alert('haha'); // 内置函数
    submitTest();  // 自定义函数
    alert(this.tagName); // 用到了this关键词
    ......(任意多条语句)    
    return false;
};



这样的话你就覆写了(override)其默认方法(默认返回true)
大家注意到方法体中可以用this这个关键词,这里即代表了<form>的对象实例。

经过这样的分析后,以上情况就不难理解了:
java代码:  


<form action="index.jsp" method="post" onsubmit="submitTest();">


这样写,override方法的效果为:
java代码:  


Form.prototype.onsubmit = function() {
    submitTest();
};


在这里submitTest()虽然返回false,但我们只执行了此函数,没有对其结果进行任何处理。而
java代码:  


<form action="index.jsp" method="post" onsubmit="return submitTest();">


override方法的效果为:
java代码:  

Form.prototype.onsubmit = function() {
    return submitTest();
};


这样,我们利用到了它的返回值,达到了预期效果。
这样理解的话我想印象会深刻得多,就不易出错了

结论:
我 们可以用Java里的思维方式来思考模拟JavaScript中的类似情况(JavaScript中基于prototype的面向对象技术也确实是这样做 的),但他们毕竟还是有本质上的区别,如Java是强类型的,有严格的语法限制,而JavaScript是松散型的。象上述方法:
java代码:  



Form.prototype.onsubmit = function() {  
};



既可以有返回值,又可以没有返回值,在Java里是通不过的,毕竟Java里面不能靠方法的返回值不同来重载(overload)方法,而JavaScript中的重载要松散得多.

比如一个页面里有两个form,如下:


<form id="form1" name="form1" method="post" action="http://127.0.0.1/">
  <input type="submit" name="Submit2" value="提交表单" />
</form>



<form name="form2"  onsubmit="return false">
input name="" type="submit" value="提交" onclick="bian()" />
</form>
两个form里分别有一个type为submit的按扭


如果想按第二个按钮不想提交表单,只想执行bian()方法时,如果不用onsubmit="return false">就达不到效果,就会提交表单了!
而加上后就可以了!!
onsubmit="
    alert('haha'); // 内置函数
    submitTest();  // 自定义函数
    alert(this.tagName); // 用到了this关键词
    ......(任意多条语句)    
    return false;
"



jquery写法:
function submituserinfocheck()
{
  alert("Hello the world...");
  if($('#FCollege').val()=="")
  {
    alert("学校不能为空!");
    $('#FCollege').focus();
    return false;
  }
  
  if($('#FNick').val()=="")
  {
    alert("昵称不能为空!");
    $('#FNick').focus();
    return false;
  }  
  return true;
}


再加上:
document.forms[0].onsubmit = function(){
    return false;
}

$("form#addForm").submit(function(evt){
    return false;
    evt.preventDefault();
});
step的:

function ChangeMV(vid,width,height,auto)
{
  var w,h;
  w=147;h=117;
  if(width)w=width;
  if(height)h=height;
  var a=0;
  if(auto)a=1;
  var v='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+w+'" height="'+h+'">                        <param name="movie" value="http://cache.tv.qq.com/qqplayerout.swf" />                        <param name="allowFullScreen" value="true" />                        <param name="flashvars" value="f=3&vid='+vid+'&auto='+a+'"  <param name="wmode" value="transparent" />                        <embed type="application/x-shockwave-flash" src="http://cache.tv.qq.com/qqplayerout.swf" width="'+w+'" height="'+h+'" id="flashplayer" quality="high" allowScriptAccess="sameDomain" allowFullScreen="true" flashvars="vid='+vid+'&auto='+a+'" wmode="transparent"></embed>                    </object>';  
  return v;
}




dc的:

function bofang(url)
{
var brodcast = '<object name="wmplayer" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"  codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" type="application/x-oleobject" width=328 height=220 hspace="0" standby="Loading Microsoft Windows Media Player components..." id="NSPlay">    <param name="AutoRewind" value=0>    <param name="FileName" value="http://newalto.qq.com/data/'+url+'">    <param name="ShowControls" value="1">    <param name="ShowPositionControls" value="0">    <param name="ShowAudioControls" value="1">    <param name="ShowTracker" value="0">    <param name="ShowDisplay" value="0">    <param name="ShowStatusBar" value="1">    <param name="ShowGotoBar" value="0">    <param name="ShowCaptioning" value="0">    <param name="AutoStart" value="1">    <param name="Volume" value="2000">    <param name="AnimationAtStart" value="0">    <param name="TransparentAtStart" value="0">    <param name="AllowChangeDisplaySize" value="1">    <param name="AllowScan" value="0">    <param name="EnableContextMenu" value="0">    <param name="ClickToPlay" value="0"></object>';
document.getElementById('video_img_panel').innerHTML = brodcast;
}


原名:<<Pro PHP Patterns, Frameworks, Testing and More>>
作者:Kevin MCArthur
出版者: APress,Mar 24,2008。
页数:349页。
------------------------------------------

难度指数:中-高级。阅读全文
经过二十多年的快速发展, 目前我国已是世界第二大禽肉生产国。然而, 与此地位不相符合的是我国禽肉出口量仅为生产量的3%左右, 典型的生产上的“巨人”和出口上的“矮子”。美国、荷兰、土耳其、澳大利亚等国饲料原料价格较低, 设备先进, 大规模饲养成本比我国低20%~30%。1996年, 欧盟禁止我国禽肉产品进入其市场, 使我国失去了欧盟市场3~4 万吨的冻鸡产品份额; 而日本也一再对中国肉鸡采取歧视性采样检查, 以限制中国廉价肉鸡对其国内的冲击。我国肉鸡产品的年增长率从1996 年的14%陡降为2000 年的4%, 预计再有10~15 年的时间, 中国家禽业便可全部与世界接轨, 而肉鸡业首当其冲; 肉鸡业显然面临极大的挑战, 肉鸡生产中的许多问题亟待解决。阅读全文
RewriteRule ^/con/([a-z]*)/act/([a-z]*)$ /index.php?con=$1&act=$2&%1
用PHP去正则表达式匹配:
erg.php

<?php
$str_temp = "/con/user/act/introl";
preg_match("/^\/con\/([a-z]*)\/act\/([a-z]*)$/i", $str_temp, $out);
print_r($out);
?>



[root@localhost ~]# php erg.php
Array
(
    [0] => /con/user/act/introl
    [1] => user
    [2] => introl
)
分页: 209/272 第一页 上页 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 下页 最后页 [ 显示模式: 摘要 | 列表 ]