PHP cookie相关的问题
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-12-04 21:46
Java Servlet specification
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-11-28 22:06
PHP正则表达式匹配多行
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-11-27 22:16
使用header实现PHP页面重定向
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-11-24 17:44
假设有一个带form的查询页面index.php,只有一个元素keyword
有一个显示结果的query.php
如果要在没有输入keyword的时候或者其它情况返回index.php
在query.php可以这样写
<?php
if(empty($_REQUEST['keyword'])){
header( "HTTP/1.1 301 Moved Permanently" );
header("Location: ./index.php");exit;
}
//后面再写其它内容
?>
即用header实现PHP的redirect要注意header指令的前面不能有任何其它输出。
因此还有一个地方要注意:
如果PHP文件保存为UTF-8格式,切记不要保存为带BOM的,因为在PHP看来,BOM是一个字符,并且会将这个字符输出。
如果保存为带BOM的,会出现
Warning: Cannot modify header information
有一个显示结果的query.php
如果要在没有输入keyword的时候或者其它情况返回index.php
在query.php可以这样写
<?php
if(empty($_REQUEST['keyword'])){
header( "HTTP/1.1 301 Moved Permanently" );
header("Location: ./index.php");exit;
}
//后面再写其它内容
?>
即用header实现PHP的redirect要注意header指令的前面不能有任何其它输出。
因此还有一个地方要注意:
如果PHP文件保存为UTF-8格式,切记不要保存为带BOM的,因为在PHP看来,BOM是一个字符,并且会将这个字符输出。
如果保存为带BOM的,会出现
Warning: Cannot modify header information
标签: PHP
Java Web 应用程序打包发布
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-11-22 22:15
关键字: Java 打包 发布
1.最简单也是最复杂的方法
直接将所有文件复制到应用服务器相关目录下。
以Tomcat为例,直接复制到webapps下面即可。
此方法的缺点,如果要上传到远程服务器上,传输多个文件会比较慢,这时可以打包成war文件。
2.用jar命令打包
这个其实最简单,我一般用这个,一行命令搞定。以windows 2000下为例,新建一个war.cmd文件(就是一个文本文件,改名成这个就行了)。其内容如下:
jar cvf appname.war -C webroot .
webroot就是包括所有WEB程序文件的文件夹,把这个文件放在webroot的上一级目录(一般就是你的工程目录),执行就可以了。如果一切顺利的话就这么简单,你会看到生成了appname.war。如果不顺利,象找不到jar文件,还有你不想把这个文件夹下的所有文件打包,你想创建不同的版本等等。那么可以这样:
rem 设置jar路径
set path=d:\
1.最简单也是最复杂的方法
直接将所有文件复制到应用服务器相关目录下。
以Tomcat为例,直接复制到webapps下面即可。
此方法的缺点,如果要上传到远程服务器上,传输多个文件会比较慢,这时可以打包成war文件。
2.用jar命令打包
这个其实最简单,我一般用这个,一行命令搞定。以windows 2000下为例,新建一个war.cmd文件(就是一个文本文件,改名成这个就行了)。其内容如下:
jar cvf appname.war -C webroot .
webroot就是包括所有WEB程序文件的文件夹,把这个文件放在webroot的上一级目录(一般就是你的工程目录),执行就可以了。如果一切顺利的话就这么简单,你会看到生成了appname.war。如果不顺利,象找不到jar文件,还有你不想把这个文件夹下的所有文件打包,你想创建不同的版本等等。那么可以这样:
rem 设置jar路径
set path=d:\
标签: Java
Standard C++ Library Header Files
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-11-21 10:21
Standard C++ Library Header Files
The following Standard C++ Library header files are documented:
标签: 手册
百度面试题一道2
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-11-20 10:03
题目:有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
以上题目来源:http://www.blog.sh/user3/king821221/110716.html
问题分析:
1.最小时间肯家是各自朝最近的一端跑,27-11=14,11<14,所以中间的蚂蚁会朝11cm那端跑,最适时短时间11。
2.最长时间呢,肯定两端的蚂蚁都往中间跑,具体怎么跑好像有点儿想不清楚,那试算之,假设3cm处的和7cm处的相对而行,碰面后会怎样?如果你眼神不好,你会发现你分不出来哪个是哪个,因为3cm的转头后就相当于7cm的一直在走。到这里,一切就已经没有刚开始那样想不清楚了,事情很清楚:蚂蚁碰头可以用等量代换的思想,在这种情况下,任何蚂蚁都是自由地向它面向的一端直接爬过去。那最长时间就清楚了:27-3=24,27-
以上题目来源:http://www.blog.sh/user3/king821221/110716.html
问题分析:
1.最小时间肯家是各自朝最近的一端跑,27-11=14,11<14,所以中间的蚂蚁会朝11cm那端跑,最适时短时间11。
2.最长时间呢,肯定两端的蚂蚁都往中间跑,具体怎么跑好像有点儿想不清楚,那试算之,假设3cm处的和7cm处的相对而行,碰面后会怎样?如果你眼神不好,你会发现你分不出来哪个是哪个,因为3cm的转头后就相当于7cm的一直在走。到这里,一切就已经没有刚开始那样想不清楚了,事情很清楚:蚂蚁碰头可以用等量代换的思想,在这种情况下,任何蚂蚁都是自由地向它面向的一端直接爬过去。那最长时间就清楚了:27-3=24,27-
标签: 面试
一个从CStatic派生的动态曲线图绘制控件
作者: 王者之剑(http://www.albertsong.com/) 日期: 2007-11-19 20:04
关键词:MFC GDI 曲线图绘制
本控件只是一个很简单的控件,比任务管理器里的曲线图略复杂,不具有图例、鼠标移动可以捕捉曲线上的坐标等特性。
具体如下:
1)从CStatic派生,容易在对话框中使用。
2)能够随对话框的缩放自动改变大小,这里假设对话框中其它元素的位置基本不变。
3)曲线的粗细,颜色,线型(实,虚线)可以自由设置。
4)可以控制曲线的隐藏/显示。
5)两个坐标轴,Y轴根据数据自适应,实际数据最大最小值各偏离5%是坐标轴的最大最小值(简化起见,坐标轴采用五等分)。X轴是时间轴,一个像素点代表一个数据点,假设采样按一定的频率。
6)可以添加多条曲线。
7) 使用双缓冲,避免图形闪烁。
做一个CStatic派生控件的基本步骤:
1)定义一个从CStatic派生的类。
2)重载有关消息映射,WM_PAINT,WM_ERASEBKGND
3) 在OnPaint中绘图,在这里根据实际的需要做不同的计算,绘制。大致可分为以下几步,I布局计算,CStatic是整个绘图区,将这个区域划分为边缘空白,坐标轴区,曲线区等几个部分,需要算出各个部分的矩形顶点,以便控制曲线的绘制。II绘制背景。III绘制坐标轴。IV绘制曲线。其中需要用到简单的坐标映射知识。
运行截图:



具体的可以看源代码。
LineChartControlDemo.rar (200.48 KB , 下载:1426次)
可以作为控件使用的是LineChartCtrl.h,LineChartCtrl.cpp,MemDC.h这三个文件。
其它可供参考的源代码链接:
http://www.codeproject.com/dialog/CStatusGraphCtrl.asp
http://www.vchelp.net/vchelp/zsrc/realtime_plot.zip
http://www.codeproject.com/miscctrl/histogramctrl.asp
http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=1631
需要更强大的绘图功能怎么办?只要理解了计算图形布局和画图的过程,会使用双缓冲,如果需要在单文档的视图中使用,同样在OnPaint中处理绘制,并处理其它有关消息就可以了(主要是ON_SIZE时要重新计算布局),如果要做一个通用的控件,只需要从CWnd派生即可,要多强大就看你的想像力了。
对话框中的控件随对话框的大小改变做相应的变化,本例仅展示了控制图形显示控件和Exit按钮。要做更复杂的控制,原理是一样的,无非是记住和计算更多的位置,主要需要处理WM_SIZE消息和利用MoveWindow函数。
总之,图形界面的程序,无论是绘制曲线还是绘制窗口,无非就是计算位置(在哪儿绘制,这需要处理相关消息以取得窗口,客户区大小的变化),用GDI函数绘图(MoveWindow也是调用了系统的绘图函数才能画出窗口)。
Update:
2008-8-11 有同学反应源代码在VC6.0下无法编译通过,将源代码中的CArray用vector替换,对C++稍微熟悉一点儿的话,做这件事需要5~20分钟。
源代码这里下载。
LineChartControlDemo.rar (210.67 KB , 下载:494次)
本控件只是一个很简单的控件,比任务管理器里的曲线图略复杂,不具有图例、鼠标移动可以捕捉曲线上的坐标等特性。
具体如下:
1)从CStatic派生,容易在对话框中使用。
2)能够随对话框的缩放自动改变大小,这里假设对话框中其它元素的位置基本不变。
3)曲线的粗细,颜色,线型(实,虚线)可以自由设置。
4)可以控制曲线的隐藏/显示。
5)两个坐标轴,Y轴根据数据自适应,实际数据最大最小值各偏离5%是坐标轴的最大最小值(简化起见,坐标轴采用五等分)。X轴是时间轴,一个像素点代表一个数据点,假设采样按一定的频率。
6)可以添加多条曲线。
7) 使用双缓冲,避免图形闪烁。
做一个CStatic派生控件的基本步骤:
1)定义一个从CStatic派生的类。
2)重载有关消息映射,WM_PAINT,WM_ERASEBKGND
3) 在OnPaint中绘图,在这里根据实际的需要做不同的计算,绘制。大致可分为以下几步,I布局计算,CStatic是整个绘图区,将这个区域划分为边缘空白,坐标轴区,曲线区等几个部分,需要算出各个部分的矩形顶点,以便控制曲线的绘制。II绘制背景。III绘制坐标轴。IV绘制曲线。其中需要用到简单的坐标映射知识。
运行截图:



具体的可以看源代码。
LineChartControlDemo.rar (200.48 KB , 下载:1426次)可以作为控件使用的是LineChartCtrl.h,LineChartCtrl.cpp,MemDC.h这三个文件。
其它可供参考的源代码链接:
http://www.codeproject.com/dialog/CStatusGraphCtrl.asp
http://www.vchelp.net/vchelp/zsrc/realtime_plot.zip
http://www.codeproject.com/miscctrl/histogramctrl.asp
http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=1631
需要更强大的绘图功能怎么办?只要理解了计算图形布局和画图的过程,会使用双缓冲,如果需要在单文档的视图中使用,同样在OnPaint中处理绘制,并处理其它有关消息就可以了(主要是ON_SIZE时要重新计算布局),如果要做一个通用的控件,只需要从CWnd派生即可,要多强大就看你的想像力了。
对话框中的控件随对话框的大小改变做相应的变化,本例仅展示了控制图形显示控件和Exit按钮。要做更复杂的控制,原理是一样的,无非是记住和计算更多的位置,主要需要处理WM_SIZE消息和利用MoveWindow函数。
总之,图形界面的程序,无论是绘制曲线还是绘制窗口,无非就是计算位置(在哪儿绘制,这需要处理相关消息以取得窗口,客户区大小的变化),用GDI函数绘图(MoveWindow也是调用了系统的绘图函数才能画出窗口)。
Update:
2008-8-11 有同学反应源代码在VC6.0下无法编译通过,将源代码中的CArray用vector替换,对C++稍微熟悉一点儿的话,做这件事需要5~20分钟。
源代码这里下载。
LineChartControlDemo.rar (210.67 KB , 下载:494次)标签: MFC










