$_FILES["表单上文件框的名称"]["相关内容"]为上传后台接收到的文件的相关信息,是内置的一个超全局变量,相关内容一共包括五种内容:
原文件名及路径:[name]
文件的MIME类型:[type],例如"image/gif"
已上传文件的大小:[size]
错误信息:[error](0为正常,1234分别代表四个不同的错误信息)
文件被上传后在服务器端临时存储的文件名及路径:[tmp_name]
我们可以通过判断error是否为0来判断上传是否出错,例:
$_FILES["uppic"]["error"]==0 判断上传是否出错
还可以通过判断name是否为空来判断用户是否选择过要上传的文件
$_FILES["uppic"]["name"]=="" 判断用户是否选择过要上传的文件
原文件名及路径:[name]
文件的MIME类型:[type],例如"image/gif"
已上传文件的大小:[size]
错误信息:[error](0为正常,1234分别代表四个不同的错误信息)
文件被上传后在服务器端临时存储的文件名及路径:[tmp_name]
我们可以通过判断error是否为0来判断上传是否出错,例:
$_FILES["uppic"]["error"]==0 判断上传是否出错
还可以通过判断name是否为空来判断用户是否选择过要上传的文件
$_FILES["uppic"]["name"]=="" 判断用户是否选择过要上传的文件
潜水至今,仍没有发现大家讨论embedded 的话题。那么我先抛砖引玉了。
关于embedded system,大家都不陌生,伸手就摸到的手机,抬眼就看到的冰箱电视,出门开的汽车,工厂里的工业自动化控件。说到工业自动化,工业机器人、医药设备、电话系统、卫星、飞行系统等领域,embedded system更是无处不在。通常这些都是被控制执行某些专用功能系统或者设备,它所运行的软件也通常都是固化的(firmware),终端用户很难或者不可能改变。所以一直以来embedded system的性能和可扩展性都是一个关键。Intel多核和虚拟化技术为这个问题开启了一片窗。这两项技术让硬件和IA构架集中化处理以达到降低成本的目的。Intel一直都在努力完善这两项技术在embedded system上面的应用和扩展,对Wind River 的收购,显然也是看重了Wind River在embedded system 上面成熟的软件框架。当然MS 也有一套针对于embedded system的产品:Windows Embedded Enterprise。但是显然,在Embedded 领域,Linux 比 Windows 系统在功耗和占用空间上更有优势。Embedded Linux 已经对标准的Linux经过了针对embedded system的量身定做,裁剪处理,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。发展至今,Embedded Linux具备了广泛的硬件支持和稳定的市场。
关于embedded system,大家都不陌生,伸手就摸到的手机,抬眼就看到的冰箱电视,出门开的汽车,工厂里的工业自动化控件。说到工业自动化,工业机器人、医药设备、电话系统、卫星、飞行系统等领域,embedded system更是无处不在。通常这些都是被控制执行某些专用功能系统或者设备,它所运行的软件也通常都是固化的(firmware),终端用户很难或者不可能改变。所以一直以来embedded system的性能和可扩展性都是一个关键。Intel多核和虚拟化技术为这个问题开启了一片窗。这两项技术让硬件和IA构架集中化处理以达到降低成本的目的。Intel一直都在努力完善这两项技术在embedded system上面的应用和扩展,对Wind River 的收购,显然也是看重了Wind River在embedded system 上面成熟的软件框架。当然MS 也有一套针对于embedded system的产品:Windows Embedded Enterprise。但是显然,在Embedded 领域,Linux 比 Windows 系统在功耗和占用空间上更有优势。Embedded Linux 已经对标准的Linux经过了针对embedded system的量身定做,裁剪处理,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。发展至今,Embedded Linux具备了广泛的硬件支持和稳定的市场。
但是用的onclick事件,所以点击一下,就放大或者缩小一点.
来源:http://www.85flash.com/Get/JavaScript/2006-8-17/115327705.htm
<script language="javascript">
var oTime;
function chgSize(args) {
var oImg = document.all['oImg'];
oImg.style.zoom = parseInt(oImg.style.zoom) + (args ? +1 : -1) + '%';
oTime = window.setTimeout('chgSize(' + args + ')', 100);
}
document.onmouseup = function() {
window.clearTimeout(oTime);
}
</script>
<div style="height: 200px; overflow: auto;">
<img id="oImg" src="/Files/BeyondPic/2006-8/14/28youandi.jpg" style="zoom: 100%;">
</div>
<button onmousedown="chgSize(true);" onmouseup="window.clearTimeout(oTime);">↑</button>
<button onmousedown="chgSize(false);" onmouseup="window.clearTimeout(oTime);">↓</button>
var oTime;
function chgSize(args) {
var oImg = document.all['oImg'];
oImg.style.zoom = parseInt(oImg.style.zoom) + (args ? +1 : -1) + '%';
oTime = window.setTimeout('chgSize(' + args + ')', 100);
}
document.onmouseup = function() {
window.clearTimeout(oTime);
}
</script>
<div style="height: 200px; overflow: auto;">
<img id="oImg" src="/Files/BeyondPic/2006-8/14/28youandi.jpg" style="zoom: 100%;">
</div>
<button onmousedown="chgSize(true);" onmouseup="window.clearTimeout(oTime);">↑</button>
<button onmousedown="chgSize(false);" onmouseup="window.clearTimeout(oTime);">↓</button>
来源:http://www.85flash.com/Get/JavaScript/2006-8-17/115327705.htm
TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
TCPDUMP简介
在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一。sniffer工具首先是为网络管理员和网络程序员进行网络分析而设计的。对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际情况,在网络性能急剧下降的时候,可以通过sniffer工具来分析原因,找出造成网络阻塞的来源。对于网络程序员来说,通过sniffer工具来调试程序。
用过windows平台上的sniffer工具(例如,netxray和sniffer pro软件)的朋友可能都知道,在共享式的局域网中,采用sniffer工具简直可以对网络中的所有流量一览无余!Sniffer工具实际上就是一个网络上的抓包工具,同时还可以对抓到的包进行分析。由于在共享式的网络中,信息包是会广播到网络中所有主机的网络接口,只不过在没有使用sniffer工具之前,主机的网络设备会判断该信息包是否应该接收,这样它就会抛弃不应该接收的信息包,sniffer工具却使主机的网络设备接收所有到达的信息包,这样就达到了网络监听的效果。
Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是必不可少的。所以,今天我们就来看看Linux中强大的网络数据采集分析工具——TcpDump。
用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。
作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的东东之一。
顾名思义,TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的 FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。
普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。
-----------------------
bash-2.02# tcpdump
tcpdump: listening on eth0
11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50
11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43
0000 0000 0080 0000 1007 cf08 0900 0000
0e80 0000 902b 4695 0980 8701 0014 0002
000f 0000 902b 4695 0008 00
11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97
ffff 0060 0004 ffff ffff ffff ffff ffff
0452 ffff ffff 0000 e85b 6d85 4008 0002
0640 4d41 5354 4552 5f57 4542 0000 0000
0000 00
^C
------------------------
首先我们注意一下,从上面的输出结果上可以看出来,基本上tcpdump总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数
TcpDump的参数化支持
tcpdump支持相当多的不同参数,如使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,使用-c参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存,等等。
然而更复杂的tcpdump参数是用于过滤目的,这是因为网络中流量很大,如果不加分辨将所有的数据包都截留下来,数据量太大,反而不容易发现需要的数据包。使用这些参数定义的过滤规则可以截留特定的数据包,以缩小目标,才能更好的分析网络中存在的问题。tcpdump使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,充分利用这些过滤规则就能达到迅速定位故障的目的。请使用man tcpdump查看这些过滤规则的具体用法。
显然为了安全起见,不用作网络管理用途的计算机上不应该运行这一类的网络分析软件,为了屏蔽它们,可以屏蔽内核中的bpfilter伪设备。一般情况下网络硬件和TCP/IP堆栈不支持接收或发送与本计算机无关的数据包,为了接收这些数据包,就必须使用网卡的混杂模式,并绕过标准的TCP/IP 堆栈才行。在FreeBSD下,这就需要内核支持伪设备bpfilter。因此,在内核中取消bpfilter支持,就能屏蔽tcpdump之类的网络分析工具。
并且当网卡被设置为混杂模式时,系统会在控制台和日志文件中留下记录,提醒管理员留意这台系统是否被用作攻击同网络的其他计算机的跳板。
May 15 16:27:20 host1 /kernel: fxp0: promiscuous mode enabled
虽然网络分析工具能将网络中传送的数据记录下来,但是网络中的数据流量相当大,如何对这些数据进行分析、分类统计、发现并报告错误却是更关键的问题。网络中的数据包属于不同的协议,而不同协议数据包的格式也不同。因此对捕获的数据进行解码,将包中的信息尽可能的展示出来,对于协议分析工具来讲更为重要。昂贵的商业分析工具的优势就在于它们能支持很多种类的应用层协议,而不仅仅只支持tcp、udp等低层协议。
从上面tcpdump的输出可以看出,tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump 截获数据并保存到文件中,然后再使用其他程序进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。
TCP功能
数据过滤
不带任何参数的TcpDump将搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。所以,我们应当先想好需要哪些数据,TcpDump提供以下参数供我们选择数据:
-b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。
例如:tcpdump -b arp 将只显示网络中的arp即地址转换协议信息。
-i 选择过滤的网络接口,如果是作为路由器至少有两个网络接口,通过这个选项,就可以只过滤指定的接口上通过的数据。例如:
tcpdump -i eth0 只显示通过eth0接口上的所有报头。
src、dst、port、host、net、ether、gateway这几个选项又分别包含src、dst 、port、host、net、ehost等附加选项。他们用来分辨数据包的来源和去向,src host 192.168.0.1指定源主机IP地址是192.168.0.1,dst net 192.168.0.0/24指定目标是网络192.168.0.0。以此类推,host是与其指定主机相关无论它是源还是目的,net是与其指定网络相关的,ether后面跟的不是IP地址而是物理地址,而gateway则用于网关主机。可能有点复杂,看下面例子就知道了:
tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24
过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头。
tcpdump ether src 00:50:04:BA:9B and dst……
过滤源主机物理地址为XXX的报头(为什么ether src后面没有host或者net?物理地址当然不可能有网络喽)。
Tcpdump src host 192.168.0.1 and dst port not telnet
过滤源主机192.168.0.1和目的端口不是telnet的报头。
ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。
例如:
tcpdump ip src……
只过滤数据-链路层上的IP报头。
tcpdump udp and src host 192.168.0.1
只过滤源主机192.168.0.1的所有udp报头。
数据显示/输入输出
TcpDump提供了足够的参数来让我们选择如何处理得到的数据,如下所示:
-l 可以将数据重定向。
如tcpdump -l >tcpcap.txt将得到的数据存入tcpcap.txt文件中。
-n 不进行IP地址到主机名的转换。
如果不使用这一项,当系统中存在某一主机的主机名时,TcpDump会把IP地址转换为主机名显示,就像这样:eth0 < ntc9.1165> router.domain.net.telnet,使用-n后变成了:eth0 < 192.168.0.9.1165 > 192.168.0.1.telnet。
-nn 不进行端口名称的转换。
上面这条信息使用-nn后就变成了:eth0 < ntc9.1165 > router.domain.net.23。
-N 不打印出默认的域名。
还是这条信息-N 后就是:eth0 < ntc9.1165 > router.telnet。
-O 不进行匹配代码的优化。
-t 不打印UNIX时间戳,也就是不显示时间。
-tt 打印原始的、未格式化过的时间。
-v 详细的输出,也就比普通的多了个TTL和服务类型
select FQQ,FScoreCount from Tbl_User into outfile "/tmp/terminatedtest.txt" fields terminated by ",";
select * from test into outfile '/home/user/test.txt'
在linux(centos)下 ,启动了mysql 并给用户文件读写的权利
grant file on *.* to root@localhost;
在linux系统上,目录的权限全部是 rwxrwxrwx
chmod 777 ...
/home/user/test
drwxrwxrwx 4 root root 4096 Sep 3 18:42 home
drwxrwxrwx 10 mapuser mapuser 4096 Sep 4 03:41 user
drwxrwxrwx 5 mapuser mapuser 4096 Sep 3 17:57 test
阅读全文
select FQQ,FScoreCount from Tbl_User into outfile "/tmp/terminatedtest.txt" fields terminated by ",";
TERMINATED BY 'n'...TERMINATED 表示字段分隔
我写这个脚本的目的是利用MySQL的select * from tablename into outfile ...语句来备份MySQL数据库,虽然没有MYSQLDUMP导出数据快,可是恢复的时候却非常快。阅读全文
Form的表头中有这样一句,
encType="multipart/form-data"
代表什么意思?删除可以么?
有下面几个值:
MIME(多用途网际邮件扩充协议)的编码类型。
脚本里的用法是form.encoding=XXX
MSDN原文,我的翻译能力比较差。
用Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。
下边是说明:
application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
用于表单里有图片上传。
<form name="userInfo" method="post" action="first_submit.jsp" ENCTYPE="multipart/form-data">
表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码。
如下:
就得加ENCTYPE="multipart/form-data"。
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是 application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
enctype=\"multipart/form-data\"是上传二进制数据; form里面的input的值以2进制的方式传过去。
form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,
取表单值加入数据库时,用到下面的:
当值很多时,使用数组传值是个不错的选择。
encType="multipart/form-data"
代表什么意思?删除可以么?
有下面几个值:
<form action="./fileupload.php" method="post" enctype="multipart/form-data" enctype="application/x-www-form-urlencoded" enctype="text/plain">
MIME(多用途网际邮件扩充协议)的编码类型。
脚本里的用法是form.encoding=XXX
MSDN原文,我的翻译能力比较差。
Optional. Describes the content of the body section of the message. It can have one of the following values (the default is "text/plain; charset=us-ascii"):
text/plain; charset=us-ascii
This means that this is a regular message, and the body section contains the message text.
Example: Content-Type: text/plain; charset=us-ascii
application/x-ms-tnef
This means that this is a TNEF message and the body section contains the TNEF data of the message.
Example: Content-Type: application/x-ms-tnef
multipart/form-data; boundary=boundary-string
This means that the form and body section have multiple parts, and each part describes a single form field (name, value, and so on). The boundary-string separates multiple parts in the body section (see Body Section).
Example: Content-Type: multipart/form-data;
boundary=xyz12sssdeeggg
注意:multipart/form-data是上传文件用的,不能删除。
text/plain; charset=us-ascii
This means that this is a regular message, and the body section contains the message text.
Example: Content-Type: text/plain; charset=us-ascii
application/x-ms-tnef
This means that this is a TNEF message and the body section contains the TNEF data of the message.
Example: Content-Type: application/x-ms-tnef
multipart/form-data; boundary=boundary-string
This means that the form and body section have multiple parts, and each part describes a single form field (name, value, and so on). The boundary-string separates multiple parts in the body section (see Body Section).
Example: Content-Type: multipart/form-data;
boundary=xyz12sssdeeggg
注意:multipart/form-data是上传文件用的,不能删除。
用Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。
下边是说明:
application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
用于表单里有图片上传。
<form name="userInfo" method="post" action="first_submit.jsp" ENCTYPE="multipart/form-data">
表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码。
如下:
<tr>
<td height="30" align="right">上传企业营业执照图片:</td>
<td><INPUT TYPE="FILE" NAME="uploadfile" SIZE="34" ōnChange="checkimage()"></td>
</tr>
<td height="30" align="right">上传企业营业执照图片:</td>
<td><INPUT TYPE="FILE" NAME="uploadfile" SIZE="34" ōnChange="checkimage()"></td>
</tr>
就得加ENCTYPE="multipart/form-data"。
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是 application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
enctype=\"multipart/form-data\"是上传二进制数据; form里面的input的值以2进制的方式传过去。
form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,
取表单值加入数据库时,用到下面的:
SmartUpload su = new SmartUpload();//新建一个SmartUpload对象
su.getRequest().getParameterValues();取数组值
su.getRequest().getParameter( );取单个参数单个值
su.getRequest().getParameterValues();取数组值
su.getRequest().getParameter( );取单个参数单个值
当值很多时,使用数组传值是个不错的选择。
<input type='text' name='formVar[year1]' value=''>
function toHere($formVar)
{
echo $formVar['year1'];
}
function toHere($formVar)
{
echo $formVar['year1'];
}
select distinct(fild1),FScoreCount from Tbl_User order by FScoreCount desc limit 10.
select distinct(fild1),FScore from Tbl_Score where FYear = 2009 and FWeek = '44' order by FScore desc limit 0,10;
Array
(
[seconds] => 55
[minutes] => 41
[hours] => 11
[mday] => 26
[wday] => 1
[mon] => 10
[year] => 2009
[yday] => 298
[weekday] => Monday
[month] => October
[0] => 1256528515
)
select distinct(fild1),FScore from Tbl_Score where FYear = 2009 and FWeek = '44' order by FScore desc limit 0,10;
<?php
$today = getdate ();
print_r($today);
?>
$today = getdate ();
print_r($today);
?>
Array
(
[seconds] => 55
[minutes] => 41
[hours] => 11
[mday] => 26
[wday] => 1
[mon] => 10
[year] => 2009
[yday] => 298
[weekday] => Monday
[month] => October
[0] => 1256528515
)
$currYear = $today ['year'];
select distinct(fild1),FScore from Tbl_Score where FYear = ".$currYear ."and FWeek = '44' order by FScore desc limit 0,10;
select distinct(fild1),FScore from Tbl_Score where FYear = ".$currYear ."and FWeek = '44' order by FScore desc limit 0,10;
这篇文章是《北京青年报》的记者范海涛据我在北青教育大讲堂的演讲所写,我的演讲是北青教育大讲堂活动的第二讲,原文来自《北京青年报》12月2日刊,在此以飨读者。 一个成功的人如何定义成功?一个成功的人如何从成功中获得启发?这个命题无疑会让许多人充满了悬念与期待。2008年11月30日下午,北京青年报大厦的20层大会议室迎来了北青教育大讲堂活动开办以来最爆满的盛况,谷歌全球副总裁、大中华区总裁李开复的到来,让许多人对于成功的定义有了崭新的认识。对于成功,不仅仅是对名利的追逐,不应该完全用世俗的价值观去衡量成功与否,而是实现自己的价值,关爱自己身边的人,给这个世界带来更多的影响力,用自己的力量去感染周围的磁场。当你某一天逝去的时候,你的墓志铭上应该撰写的是对你最公平的评价。成功的定义应该是多元化的。
在这个下午,谷歌大中华区总裁李开复用平实而不失幽默的语言,讲述了自己成长中的很多故事。和许多人的成长经历相似,他的成长中也有儿时的淘气顽皮,学生时代的疑问与困惑,有获得成功时的泪水与喜悦,也有经历困难与挫折时的蹉跎与彷徨。甚至有经历人生最低潮时期的痛苦与煎熬。但是与众不同的是,李开复在成功中收获了经验,在失败中得到了成长。他把富有传奇的人生经历浓缩成为十句具有启发性的箴言,在如同与你交谈般的娓娓道来中,将这种宝贵的人生经验像冬日暖阳一样,洒满了整个房间。阅读全文
在这个下午,谷歌大中华区总裁李开复用平实而不失幽默的语言,讲述了自己成长中的很多故事。和许多人的成长经历相似,他的成长中也有儿时的淘气顽皮,学生时代的疑问与困惑,有获得成功时的泪水与喜悦,也有经历困难与挫折时的蹉跎与彷徨。甚至有经历人生最低潮时期的痛苦与煎熬。但是与众不同的是,李开复在成功中收获了经验,在失败中得到了成长。他把富有传奇的人生经历浓缩成为十句具有启发性的箴言,在如同与你交谈般的娓娓道来中,将这种宝贵的人生经验像冬日暖阳一样,洒满了整个房间。阅读全文
我想让我的电脑象服务器一样运行长时间开机
不过开久了玩魔兽这类稍微大点的游戏就开始卡了
答:很正常,尤其是大量使用交换文件的时候,时间长了内存和交换文件频繁存取,会变得零碎,影响了数据的存取。只要不是频繁的进行交换文件的读取操作,系统就会长时间运行
我一台普通电脑非服务器机器,XP sp3,当公司档案服务器。
平时没有人用,因公司性质需要7×24小时开机。
一开始连续开机3个多月没有问题,但是最近连续2天出现了同样的问题。
问题说明:
我公司客户端机器无法访问服务器,后查明是服务器当机。
表现形式为显示器黑屏,亮黄灯。主机电源灯亮,动鼠标没反应。
电源设置为5分钟关显示器,其他从不。
从起后一切正常。
还真没开过那么久的机器,楼主平时有时间维护机器么?如果没有那估计是过热吧,要定时维护的
不过开久了玩魔兽这类稍微大点的游戏就开始卡了
答:很正常,尤其是大量使用交换文件的时候,时间长了内存和交换文件频繁存取,会变得零碎,影响了数据的存取。只要不是频繁的进行交换文件的读取操作,系统就会长时间运行
我一台普通电脑非服务器机器,XP sp3,当公司档案服务器。
平时没有人用,因公司性质需要7×24小时开机。
一开始连续开机3个多月没有问题,但是最近连续2天出现了同样的问题。
问题说明:
我公司客户端机器无法访问服务器,后查明是服务器当机。
表现形式为显示器黑屏,亮黄灯。主机电源灯亮,动鼠标没反应。
电源设置为5分钟关显示器,其他从不。
从起后一切正常。
还真没开过那么久的机器,楼主平时有时间维护机器么?如果没有那估计是过热吧,要定时维护的
感觉黑客是一种精神 而不是大家所说的这些东西!
至于用什么语言,这个不一定的,看目标是什么了?
锁定目标,寻找目标,以及获取Shell可能要非常多的方法,或许某些时候简单的JS都可以作为最厉害的武器!
讨论这样的东西其实根本就没有价值,黑客的目的是来维护网络的正常运作,寻找bug,修复bug,而不是商业的运用!
Linus Torvalds你说他是黑客吗?那你说他用什么语言呢? 一个合格的黑客首先是人格,其次才是一流的技术,包含对操作系统的理解,网络协议的理解,加密算法的理解,当然这个理解都是原理级别的。
锁定目标,寻找目标,获取shell,提升shell,保护shell,干净离开 这一系列的动作不是仅仅懂得某个语言或者精通C/C++就可以做得到的!
当然说这么多,只是希望学习开发的人正确自己的心态,想学是好的,但是我们离hacker还差太多太多,个人心目中,国内能算得上的黑客 只在政府,军队,部分高校,其他的只是商业的利用者!他们没有资格被称为黑客!
至于用什么语言,这个不一定的,看目标是什么了?
锁定目标,寻找目标,以及获取Shell可能要非常多的方法,或许某些时候简单的JS都可以作为最厉害的武器!
讨论这样的东西其实根本就没有价值,黑客的目的是来维护网络的正常运作,寻找bug,修复bug,而不是商业的运用!
Linus Torvalds你说他是黑客吗?那你说他用什么语言呢? 一个合格的黑客首先是人格,其次才是一流的技术,包含对操作系统的理解,网络协议的理解,加密算法的理解,当然这个理解都是原理级别的。
锁定目标,寻找目标,获取shell,提升shell,保护shell,干净离开 这一系列的动作不是仅仅懂得某个语言或者精通C/C++就可以做得到的!
当然说这么多,只是希望学习开发的人正确自己的心态,想学是好的,但是我们离hacker还差太多太多,个人心目中,国内能算得上的黑客 只在政府,军队,部分高校,其他的只是商业的利用者!他们没有资格被称为黑客!
QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不是QQ的对手,因为QQ除了这100万的游戏在线人数外,它还拥有3亿多的注册量(当然很多是重复注册的)以及QQ聊天软件900万的同时在线率,我们已经可以预见未来由QQ构建起来的强大棋牌休闲游戏帝国。
那么,在技术上,QQ游戏到底是如何实现百万人同时在线并保持游戏高效率的呢?
事实上,针对于任何单一的网络服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判定这个连接理论峰值是65535,也就是说,你的单个服务器程序,最多可以承受6万多的用户同时连接。但是,在实际应用中,能达到一万人的同时连接并能保证正常的数据交换已经是很不容易了,通常这个值都在2000到5000之间,据说QQ的单台服务器同时连接数目也就是在这个值这间。
如果要实现2000到5000用户的单服务器同时在线,是不难的。在windows下,比较成熟的技术是采用IOCP--完成端口。与完成端口相关的资料在网上和CSDN论坛里有很多,感兴趣的朋友可以自己搜索一下。只要运用得当,一个完成端口服务器是完全可以达到2K到5K的同时在线量的。但,5K这样的数值离百万这样的数值实在相差太大了,所以,百万人的同时在线是单台服务器肯定无法实现的。
要实现百万人同时在线,首先要实现一个比较完善的完成端口服务器模型,这个模型要求至少可以承载2K到5K的同时在线率(当然,如果你MONEY多,你也可以只开发出最多允许100人在线的服务器)。在构建好了基本的完成端口服务器之后,就是有关服务器组的架构设计了。之所以说这是一个服务器组,是因为它绝不仅仅只是一台服务器,也绝不仅仅是只有一种类型的服务器。
简单地说,实现百万人同时在线的服务器模型应该是:登陆服务器+大厅服务器+房间服务器。当然,也可以是其它的模型,但其基本的思想是一样的。下面,我将逐一介绍这三类服务器的各自作用。
登陆服务器:一般情况下,我们会向玩家开放若干个公开的登陆服务器,就如QQ登陆时让你选择的从哪个QQ游戏服务器登陆一样,QQ登陆时让玩家选择的六个服务器入口实际上就是登陆服务器。登陆服务器主要完成负载平衡的作用。详细点说就是,在登陆服务器的背后,有N个大厅服务器,登陆服务器只是用于为当前的客户端连接选择其下一步应该连接到哪个大厅服务器,当登陆服务器为当前的客户端连接选择了一个合适的大厅服务器后,客户端开始根据登陆服务器提供的信息连接到相应的大厅上去,同时客户端断开与登陆服务器的连接,为其他玩家客户端连接登陆服务器腾出套接字资源。在设计登陆服务器时,至少应该有以下功能:N个大厅服务器的每一个大厅服务器都要与所有的登陆服务器保持连接,并实时地把本大厅服务器当前的同时在线人数通知给各个登陆服务器,这其中包括:用户进入时的同时在线人数增加信息以及用户退出时的同时在线人数减少信息。这里的各个大厅服务器同时在线人数信息就是登陆服务器为客户端选择某个大厅让其登陆的依据。举例来说,玩家A通过登陆服务器1连接到登陆服务器,登陆服务器开始为当前玩家在众多的大厅服务器中根据哪一个大厅服务器人数比较少来选择一个大厅,同时把这个大厅的连接IP和端口发给客户端,客户端收到这个IP和端口信息后,根据这个信息连接到此大厅,同时,客户端断开与登陆服务器之间的连接,这便是用户登陆过程中,在登陆服务器这一块的处理流程。
大厅服务器:大厅服务器,是普通玩家看不到的服务器,它的连接IP和端口信息是登陆服务器通知给客户端的。也就是说,在QQ游戏的本地文件中,具体的大厅服务器连接IP和端口信息是没有保存的。大厅服务器的主要作用是向玩家发送游戏房间列表信息,这些信息包括:每个游戏房间的类型,名称,在线人数,连接地址以及其它如游戏帮助文件URL的信息。从界面上看的话,大厅服务器就是我们输入用户名和密码并校验通过后进入的游戏房间列表界面。大厅服务器,主要有以下功能:一是向当前玩家广播各个游戏房间在线人数信息;二是提供游戏的版本以及下载地址信息;三是提供各个游戏房间服务器的连接IP和端口信息;四是提供游戏帮助的URL信息;五是提供其它游戏辅助功能。但在这众多的功能中,有一点是最为核心的,即:为玩家提供进入具体的游戏房间的通道,让玩家顺利进入其欲进入的游戏房间。玩家根据各个游戏房间在线人数,判定自己进入哪一个房间,然后双击服务器列表中的某个游戏房间后玩家开始进入游戏房间服务器。
游戏房间服务器:游戏房间服务器,具体地说就是如“斗地主1”,“斗地主2”这样的游戏房间。游戏房间服务器才是具体的负责执行游戏相关逻辑的服务器。这样的游戏逻辑分为两大类:一类是通用的游戏房间逻辑,如:进入房间,离开房间,进入桌子,离开桌子以及在房间内说话等;第二类是游戏桌子逻辑,这个就是各种不同类型游戏的主要区别之处了,比如斗地主中的叫地主或不叫地主的逻辑等,当然,游戏桌子逻辑里也包括有通用的各个游戏里都存在的游戏逻辑,比如在桌子内说话等。总之,游戏房间服务器才是真正负责执行游戏具体逻辑的服务器。
这里提到的三类服务器,我均采用的是完成端口模型,每个服务器最多连接数目是5000人,但是,我在游戏房间服务器上作了逻辑层的限定,最多只允许300人同时在线。其他两个服务器仍然允许最多5000人的同时在线。如果按照这样的结构来设计,那么要实现百万人的同时在线就应该是这样:首先是大厅,1000000/5000=200。也就是说,至少要200台大厅服务器,但通常情况下,考虑到实际使用时服务器的处理能力和负载情况,应该至少准备250台左右的大厅服务器程序。另外,具体的各种类型的游戏房间服务器需要多少,就要根据当前玩各种类型游戏的玩家数目分别计算了,比如斗地主最多是十万人同时在线,每台服务器最多允许300人同时在线,那么需要的斗地主服务器数目就应该不少于:100000/300=333,准备得充分一点,就要准备350台斗地主服务器。
除正常的玩家连接外,还要考虑到:
对于登陆服务器,会有250台大厅服务器连接到每个登陆服务器上,这是始终都要保持的连接;
而对于大厅服务器而言,如果仅仅有斗地主这一类的服务器,就要有350多个连接与各个大厅服务器始终保持着。所以从这一点看,我的结构在某些方面还存在着需要改进的地方,但核心思想是:尽快地提供用户登陆的速度,尽可能方便地让玩家进入游戏中。
看到最新的一届学生,我很失望,真的很失望,一直困扰在心中的那句话:一届不如一届真的很是一针见血。
从他们卖的书中,我就能大概了解这一届学生的水平,成本成本的都是什么四级,六级,专业课(都很新,不知道为什么),考研数学,政治,外语,专业课,连一些人文的书都非常少,更别说什么历史,传记,技术(比如电脑)的书籍,或许现在的学生除了玩,会考试之外,别的好像没有任何涉入。昨天(6月17日),我纵观了所有的卖书的地方,仅仅看到了大概两个还算过的去的学生,从他们的谈吐,他们的卖的书籍,我能看出他们的水平所在,当然,或许也有一些高人没有出来,但是从我所见到的那些,真的很让我失望,吉林工业大学(我喜欢这么叫),或许真的没落了,或许老师有失职,但是更多的是学生的不觉悟,或许没有意识到生活的艰辛,或许没有意识到技术的需求究竟在哪里? 我想,根源是学校的风气有问题了。
一届将近几千人的队伍,竟然只培养出来大概两三个可以过的去的学生,作为一个相对来说是名校的大学,我们还有什么期盼?或许这些学生靠着那些六级证,奖学金证,那些虚无飘渺的成绩,可以找到一个好的工作,但是你们能作什么?你们想过没有?当然可以说大学是你们打基础基本功的时候,但是四年,你就仅仅学习了那些专业课?基础理论课?你觉得你不是浪费生命是什么?也许我说的事情有点严重,可是我想我还是比较客观的,的确,有一些分数相当高的人,去了更好的大学深造,但是你们不觉得有点高分低能吗?那些虚幻的成绩能说明什么问题吗? 那张六级的纸你真正拿的起吗? 扪心自问,这四年,你们过得充实吗?有那个面目去见你的父母吗?你去新的公司能承担那些项目的责任吗?
我也是一个学生,但是我觉得,至少现在我觉得,很多的学生是白念了。很多学生认为大学的条条框框没有让自己更加强大,而是束缚了你,让你失去了更多的空间,然而,事实是这样的吗? 事实是你自己没有摆正自己的位置,没有认识到自己究竟要成为一个什么样的人?或者说在这个社会中,我以后要出在一个什么脚色?
我得不少朋友,他们也是学习机械的,但是他们成了公司的管理层,为什么?或许搞管理的人物并不是何搞管理,而我们搞工科的人,因为他们的逻辑思维能力,他们的理性思维,加上自己的后天培养,使得他们成就了事业,他们是我们的楷模。
那些朋友时常提醒我,学好机械的同时,可以多看看兵法,比如(孙子兵法,鬼谷子传奇),名著,尤其提到的是 三国演义,还有人物传记,比如拿破仑,希特勒,等等,尽管他们这些人物并不一定是正面人物,但是他们有他们成功的地方,为什么成功,为什么失败,拿破仑和希特勒都攻打过原苏联,为什么他们都失败了,拿破仑为什么最后在滑铁卢打败了,其实我们都可以借鉴的,当然我这里说的正面人物和非正面人物也不一定正确,成王败寇嘛。还有历史,尤其是我们自己国家的历史,真的,读史可以铭志,我深信不疑,中国的上下五千年,多少优秀的君主,多少优秀的将领,我们可以从他们身上学到无数的经验。国外的历史也同样的重要,比如最近的世界大战,工业革命等等,我们可以用一年半载就了解几千年发生的事情,这是多么快乐的事情,同时借鉴他们成功的原因,防备失败的条件。
我是一个搞技术出身的,所以或许更了解一些行业的事情。
不想多写了,总之,很失望。
有兴趣的朋友可以看看我得网站
www.libing.net.cn
blog.libing.net.cn
从他们卖的书中,我就能大概了解这一届学生的水平,成本成本的都是什么四级,六级,专业课(都很新,不知道为什么),考研数学,政治,外语,专业课,连一些人文的书都非常少,更别说什么历史,传记,技术(比如电脑)的书籍,或许现在的学生除了玩,会考试之外,别的好像没有任何涉入。昨天(6月17日),我纵观了所有的卖书的地方,仅仅看到了大概两个还算过的去的学生,从他们的谈吐,他们的卖的书籍,我能看出他们的水平所在,当然,或许也有一些高人没有出来,但是从我所见到的那些,真的很让我失望,吉林工业大学(我喜欢这么叫),或许真的没落了,或许老师有失职,但是更多的是学生的不觉悟,或许没有意识到生活的艰辛,或许没有意识到技术的需求究竟在哪里? 我想,根源是学校的风气有问题了。
一届将近几千人的队伍,竟然只培养出来大概两三个可以过的去的学生,作为一个相对来说是名校的大学,我们还有什么期盼?或许这些学生靠着那些六级证,奖学金证,那些虚无飘渺的成绩,可以找到一个好的工作,但是你们能作什么?你们想过没有?当然可以说大学是你们打基础基本功的时候,但是四年,你就仅仅学习了那些专业课?基础理论课?你觉得你不是浪费生命是什么?也许我说的事情有点严重,可是我想我还是比较客观的,的确,有一些分数相当高的人,去了更好的大学深造,但是你们不觉得有点高分低能吗?那些虚幻的成绩能说明什么问题吗? 那张六级的纸你真正拿的起吗? 扪心自问,这四年,你们过得充实吗?有那个面目去见你的父母吗?你去新的公司能承担那些项目的责任吗?
我也是一个学生,但是我觉得,至少现在我觉得,很多的学生是白念了。很多学生认为大学的条条框框没有让自己更加强大,而是束缚了你,让你失去了更多的空间,然而,事实是这样的吗? 事实是你自己没有摆正自己的位置,没有认识到自己究竟要成为一个什么样的人?或者说在这个社会中,我以后要出在一个什么脚色?
我得不少朋友,他们也是学习机械的,但是他们成了公司的管理层,为什么?或许搞管理的人物并不是何搞管理,而我们搞工科的人,因为他们的逻辑思维能力,他们的理性思维,加上自己的后天培养,使得他们成就了事业,他们是我们的楷模。
那些朋友时常提醒我,学好机械的同时,可以多看看兵法,比如(孙子兵法,鬼谷子传奇),名著,尤其提到的是 三国演义,还有人物传记,比如拿破仑,希特勒,等等,尽管他们这些人物并不一定是正面人物,但是他们有他们成功的地方,为什么成功,为什么失败,拿破仑和希特勒都攻打过原苏联,为什么他们都失败了,拿破仑为什么最后在滑铁卢打败了,其实我们都可以借鉴的,当然我这里说的正面人物和非正面人物也不一定正确,成王败寇嘛。还有历史,尤其是我们自己国家的历史,真的,读史可以铭志,我深信不疑,中国的上下五千年,多少优秀的君主,多少优秀的将领,我们可以从他们身上学到无数的经验。国外的历史也同样的重要,比如最近的世界大战,工业革命等等,我们可以用一年半载就了解几千年发生的事情,这是多么快乐的事情,同时借鉴他们成功的原因,防备失败的条件。
我是一个搞技术出身的,所以或许更了解一些行业的事情。
不想多写了,总之,很失望。
有兴趣的朋友可以看看我得网站
www.libing.net.cn
blog.libing.net.cn
香港大学面试部分讨论话题:
1.老人越来越多,会对这个社会产生什么影响?你有什么解决的办法?
2.北京2008年举办奥运的利与弊?
3.对婚前同居的看法?
4.香港电影事业和唱片事业
5.香港电影为什么短期内会发展得如此繁荣?
6.如果给你300亿,你如何改进中国状况?
7.最难忘的事情是什么?
8.比尔·盖茨从哈佛退学创建了微软,你认为中途退学对个人的成功好不好?
9.有没有必要在上海建迪士尼乐园?
10.在公共场合吸烟应不应该被罚款?
11.为什么中国的电影不如好莱坞的?
12.世界联系越来越紧密,你认为国际人才的要求是什么?
13.如果你跟胡锦涛见面,你会跟他讲什么?
参考答案:
1、浪费社会资源,建议杀掉;
2、绝对的利,让中国多赚点老外的钱,也让老外来看看,中国的首都北京有多么的烂;
3、双手双脚赞成;
4、香港的电影现在走下坡路,唱片事业嘛,什么?香港现在有唱片事业吗?已经和台湾完全没法相比了;
5、天时与地利;
6、把300亿据为已有,使中国拥有世界首富;
7、小时候没啥零食吃,挖下的鼻shi都舍不得丢掉;
8、退学然后事业成功的叫牛逼,但是有更多更多退学而且没有成功的,他们叫傻逼,你可以确定你真的牛逼吗,如果不行,那就别让自己做傻逼;
9、非常有必要,我可不想为了玩一趟迪斯尼就跑香港去;
10、不应该,应该罚在一分钟之内抽掉10根烟;
11、电影工业发展不起来,没钱;
12、国际人才,就是专业人才+流利英语;
13、我会说:锦涛兄,让我加入国务院常委会吧。
1.老人越来越多,会对这个社会产生什么影响?你有什么解决的办法?
2.北京2008年举办奥运的利与弊?
3.对婚前同居的看法?
4.香港电影事业和唱片事业
5.香港电影为什么短期内会发展得如此繁荣?
6.如果给你300亿,你如何改进中国状况?
7.最难忘的事情是什么?
8.比尔·盖茨从哈佛退学创建了微软,你认为中途退学对个人的成功好不好?
9.有没有必要在上海建迪士尼乐园?
10.在公共场合吸烟应不应该被罚款?
11.为什么中国的电影不如好莱坞的?
12.世界联系越来越紧密,你认为国际人才的要求是什么?
13.如果你跟胡锦涛见面,你会跟他讲什么?
参考答案:
1、浪费社会资源,建议杀掉;
2、绝对的利,让中国多赚点老外的钱,也让老外来看看,中国的首都北京有多么的烂;
3、双手双脚赞成;
4、香港的电影现在走下坡路,唱片事业嘛,什么?香港现在有唱片事业吗?已经和台湾完全没法相比了;
5、天时与地利;
6、把300亿据为已有,使中国拥有世界首富;
7、小时候没啥零食吃,挖下的鼻shi都舍不得丢掉;
8、退学然后事业成功的叫牛逼,但是有更多更多退学而且没有成功的,他们叫傻逼,你可以确定你真的牛逼吗,如果不行,那就别让自己做傻逼;
9、非常有必要,我可不想为了玩一趟迪斯尼就跑香港去;
10、不应该,应该罚在一分钟之内抽掉10根烟;
11、电影工业发展不起来,没钱;
12、国际人才,就是专业人才+流利英语;
13、我会说:锦涛兄,让我加入国务院常委会吧。
1.bool update(int _fd, int _timeout, char *buffer){
2.
3. //cout << "update +++++++" << endl;
4. fd_set fdClient;
5.
6. FD_ZERO( &fdClient );
7. FD_SET( _fd, &fdClient );
8.
9. struct timeval tv;
10.
11. tv.tv_sec = _timeout;
12. tv.tv_usec = 0;
13.
14.
15. if( select( _fd + 1, &fdClient, NULL, NULL, &tv ) == -1 ) {
16. return true;
17. }
18.
19. if( FD_ISSET( _fd, &fdClient ) ) {
20. memset( buffer, 0, sizeof( char ) * GPBUF_SIZE );
21.
22. int c = recv( _fd, buffer, GPBUF_SIZE, 0 );
23.
24. if( c == -1 && errno != EWOULDBLOCK ) {
25. if( errno != ECONNRESET )
26. //cout << "peer reset the connection" << endl;
27. return true;
28. }
29. if( c == 0 )
30. return true;
31.
32. }
33. return false;
34.}
2.
3. //cout << "update +++++++" << endl;
4. fd_set fdClient;
5.
6. FD_ZERO( &fdClient );
7. FD_SET( _fd, &fdClient );
8.
9. struct timeval tv;
10.
11. tv.tv_sec = _timeout;
12. tv.tv_usec = 0;
13.
14.
15. if( select( _fd + 1, &fdClient, NULL, NULL, &tv ) == -1 ) {
16. return true;
17. }
18.
19. if( FD_ISSET( _fd, &fdClient ) ) {
20. memset( buffer, 0, sizeof( char ) * GPBUF_SIZE );
21.
22. int c = recv( _fd, buffer, GPBUF_SIZE, 0 );
23.
24. if( c == -1 && errno != EWOULDBLOCK ) {
25. if( errno != ECONNRESET )
26. //cout << "peer reset the connection" << endl;
27. return true;
28. }
29. if( c == 0 )
30. return true;
31.
32. }
33. return false;
34.}
最近接手的一项工作是重构职友集 http://www.jobui.com 和百才招聘 http://www.baicai.com,找到一个非常快速的PHP模板引擎:Blitz Templates。顺便就花了1天时间翻译了一下它的文档,希望对大家有用!
文档路径:http://www.igaom.cn/blitz/Blitz_Docs.html
简介:
Blitz templates 是一个用C语言开发的快速的PHP模板引擎,它是作为一个PHP的扩展功能。它开始作为一个php_templates更换,但发展到更多的工作。它是基于可扩展的模板控制器(自定义视图类在PHP )和简单的逻辑 。基准测试表明,这是最快的一个PHP的模板引擎,使Web应用程序更接近于一个聪明的MVC 结构模型,最大从您的代码分离出HTML。 这是专为大高负荷的有许多复杂的演示文稿的逻辑的互联网项目。
下图是几个模板的性能测试结果:
示例模板代码:
index.html
index.html
Html代码
index.php
Php代码
文档路径:http://www.igaom.cn/blitz/Blitz_Docs.html
简介:
Blitz templates 是一个用C语言开发的快速的PHP模板引擎,它是作为一个PHP的扩展功能。它开始作为一个php_templates更换,但发展到更多的工作。它是基于可扩展的模板控制器(自定义视图类在PHP )和简单的逻辑 。基准测试表明,这是最快的一个PHP的模板引擎,使Web应用程序更接近于一个聪明的MVC 结构模型,最大从您的代码分离出HTML。 这是专为大高负荷的有许多复杂的演示文稿的逻辑的互联网项目。
下图是几个模板的性能测试结果:
示例模板代码:
index.html
index.html
Html代码
<html>
<head><title>{{ $title }}</title></head>
<body >
{{ include('header.tpl') }}
{{ list_news() }}
{{ include('footer.tpl') }}
</body>
</html>
<head><title>{{ $title }}</title></head>
<body >
{{ include('header.tpl') }}
{{ list_news() }}
{{ include('footer.tpl') }}
</body>
</html>
index.php
Php代码
<?php
$view = new Blitz('index.html');
function list_news(){
....
}
$view -> parse();
?>
$view = new Blitz('index.html');
function list_news(){
....
}
$view -> parse();
?>
http://www.linuxsir.org/bbs/printthread.php?t=266890阅读全文