apache 工作模式

apache作为现今web服务器用的最广泛也是最稳定的开源服务器软件,其工作模式有许多中,目前主要有两种模式:prefork模式和worker模式
prefork模式:
这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。
这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。

Read More

Apache的多处理模块MPM

本博文主要参数 Apache 2.2文档以及Apache模块开发指南

Apache的整个运行可以分为两个阶段:启动阶段和运行阶段。
在启动阶段时,它以ROOT特权来启动,进行解析配置文件(一般就是httpd.conf)、加载模块和初始化一些日志文件及内存共享段等操作,在启动阶段准备结束时,apache的控制转向多处理模块MPM,此时使得MPM能够在系统特权级运行,从而管理接下来的运行阶段。因为当处于运行阶段时,程序会放弃ROOT特权,以接收并处理网络中用户的服务请求,所以MPM也是在启动阶段初始化。

Read More

js实现表单项的全选、反选以及删除操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>
<title>网站会员激活码管理</title>
<script language="javascript">
function ReSel(){
for(i=0;i<document.form1.logs.length;i++){ //这一用法只对form表单有效
document.form1.logs[i].checked = true; //如果是实现【全不选】的话,改成false即可
}
}
function SeSel(){
for(i=0;i<document.form1.logs.length;i++){
if(document.form1.logs[i].checked) document.form1.logs[i].checked = false;
else document.form1.logs[i].checked = true;
}
}
function DelSel(){
var nid = getCheckboxItem();
if(nid==""){
alert("请选择项目!\r\n");
return ;
}
location.href = "member_activation.php?dopost=del&ids="+nid;
}
//获得选中文件的文件名
function getCheckboxItem(){
var allSel="";
if(document.form1.logs.value) return document.form1.logs.value;
for(i=0;i<document.form1.logs.length;i++)
{
if(document.form1.logs[i].checked){
if(allSel=="")
allSel=document.form1.logs[i].value;
else
allSel=allSel+"-"+document.form1.logs[i].value;
}
}
//alert(allSel); //1-2-7
return allSel;
}
</script>

</head>
<body background='images/allbg.gif' leftmargin='8' topmargin='8'>

<table width="98%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#cfcfcf">
<tr>
<td>激活码列表</td>
</tr>
<tr bgcolor="#FEFCEF" height="30" align="center">
<td width="3%">选择</td>
<td width="5%">id</td>
<td width="30%">激活码</td>
</tr>
<form name="form1">
{dede:datalist}
<tr height="26" align="center" bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';"
onMouseOut="javascript:this.bgColor='#FFFFFF';"><!--onMouseMove/onMouseOut:鼠标移动到该行后,被选中的行变色-->
<td><input name='logs' type='checkbox' value='{dede:field.id/}' /></td>
<td>{dede:field.id/}</td>
<td>{dede:field.core/}</td>
</tr>
{/dede:datalist}
</form>
<tr bgcolor="#ffffff">
<td height="36" colspan="9">
<a class="coolbg" onClick="ReSel();" >全选</a>
<a class="coolbg" onClick="SeSel();" >反选</a>
<a class="coolbg" onClick="DelSel();">删除</a>
</td>
</tr>
</table>

</body>
</html>

member_activation.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//删除选定状态  
if($dopost=="del")
{
$ids = explode('-',$ids);
$dquery = "";
foreach($ids as $id)
{
if($dquery=="")
{
$dquery .= "id='$id' ";
}
else
{
$dquery .= " OR id='$id' ";
}
}
if($dquery!="") $dquery = " WHERE ".$dquery;
$dsql->ExecuteNoneQuery("DELETE FROM cr_member_activation $dquery");
ShowMsg("成功删除指定的记录!","./index.php");
exit();
}

JS中比较的数值如何比较大小

1
2
3
4
5
6
7
8
9
10
11
12
13
<script type="text/javascript">  
function check_num(){
var num=document.getElementById("num").value;
//alert(num);
if(isNaN(num)){ //用于检查其参数是否是非数字值
alert("必须输入入0-100之间的数字!");
return false;
}else if(parseInt(num)<=0 || parseInt(num)>100){ //注意‘或’的写法
alert("必须输入0-100之间的数字!");
return false;
}
}
</script>

其实document.getElementById("num").value;获取的是一个字符串,如果要和数字比较大小的话要用到parseInt()函数。

Read More

android模拟器创建时的PANIC: Could not open:错误的解决

创建AVD之后,在启动时报如下错误,解决方法如下:

在环境变量中创建ANDROID_SDK_HOME=D:\Program Files (x86)\Android\android-sdk,后面的当然是你的SDK目录。

然后可在path中添加%ANDROID_SDK_HOME%/tools;和%ANDROID_SDK_HOME%platform-tools目录,前一个目录增加后,即可正常启动android模拟器,后一个则是为了运行adb命令,因现在版本的adb.exe已由tools移入platform-tools。