随笔-8  评论-2  文章-24  trackbacks-0
  2006年6月8日

   很多人都分不清GET与POST的区别,以及什么时候用GET?什么时候用POST?
GET和POST两种方法都是将数据送到服务器,但你该用哪一种呢?
HTTP标准包含这两种方法是为了达到不同的目的。POST用于创建资源,资源的内容会被编入HTTP请示的内容中。例如,处理订货表单、在数据库中加入新数据行等。
当请求无副作用时(如进行搜索),便可使用GET方法;当请求有副作用时(如在数据库添加数据行),则用POST方法。一个比较实际的问题是:GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长度的限制。
若符合下列任一情况,则用POST方法:

请求的结果有持续性的副作用,例如,数据库内添加新的数据行。    
若使用GET方法,则表单上收集的数据可能让URL过长。    
要传送的数据不是采用7位的ASCII编码。
 
    若符合下列任一情况,则用GET方法: 
    
请求是为了查找资源,HTML表单数据仅用来帮助搜索。    
请求结果无持续性的副作用。    
收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符。
本文来自: 中国自学编程网(www.zxbc.cn) 详细出处参考:http://www.zxbc.cn/html/article/aspprog/0916120715029.html

posted @ 2008-02-26 09:57 MyBox 阅读(632) | 评论 (0)编辑 收藏
    J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
posted @ 2008-02-25 16:10 MyBox 阅读(230) | 评论 (0)编辑 收藏
web.xml文件的格式-必须注意顺序

    由于Web程序开发中各种人员有不同分工,而Web程序的部署描述文件是程序构件提供者、程序组装者和程序部署者之间的沟通机制;Servlet 2.4之前的版本规定了在Web服务器中使用DTD格式的web.xml,而Servlet 2.4将依照XML schema格式定义web.xml;实际上这两种格式的web.xml只是在头部有区别,其内容都是描述Web程序的部署信息。在web.xml中出现的部署元素主要包含以下信息:

ServletContext的初始化变量(Init Parameters);
交互会话(Session)的设置;
Servlet的声明定义;
Servlet和网址URL的映射(Mapping);
应用程序生命周期的监听器(Application Lifecycle Listener);
过滤器声明;
过滤器和网址URL或Servlet/JSP的映射;
MIME类型;
欢迎文件(Welcome File);
错误网页(Error Pages);
安全设置信息;
taglib配置;
JNDI对象(env-entry,ejb-ref,ejb-local-ref,resource-ref,resource-env-ref)。

在web.xml中具体标识为:

icon?,
display-name?,
description?,
distributable?,
context-param*,
filter*,
filter-mapping*,
listener*,
servlet*,
servlet-mapping*,
session-config?,
mime-mapping*,
welcome-file-list?,
error-page*,
taglib*,
resource-env-ref*,
resource-ref*,
security-constraint*,
login-config?,
sec..............

其中taglib配置与JNDI对象这两项是支持J2EE的Web服务器必须要求的。对于不支持J2EE的servlet/JSP服务器,不需要这两项;在web.xml中的元素需要按照规定的大小写和顺序出现。

posted @ 2007-07-12 09:52 MyBox 阅读(1232) | 评论 (1)编辑 收藏
        用JBoss 3.2.1架站以来,始终是一个大问题。不大的站点,1G的内存都不够用,经常要消耗500Mb的交换内存(swap)。
        JAVA_OPTS(bin/run.conf)写法: -Xms 520m -Xmx 1220m -Xss 15120k +XX:AggressiveHeap
这个JAVA_OPTS犯了2个致命的错误:
   1. +XX:AggressiveHeap会使得 Xms 1220m没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
另外Xmx作为允许jvm使用的最大内存数量,不应该超过物理内存的90%。
而之所以使用了这个参数,是因为不加的话,JBoss会在运行一天左右的时间后迅速崩溃,上机课是,甚至出现过半个小时就崩溃的情况。
之所以要用这个参数,用swap支持服务器运行,是因为犯了下面的错误:
   2. -Xss 15120k
这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
这就是JBoss刚启动时,还有200Mb内存富余,但会在一个小时内迅速用完,因为服务器的threads在迅速增加。前3天,每天都多吃80Mb左右的swap.在第四天开始稳定下来。今年春节在外度假,观察到了这个现象,却不理解其原因:服务器在线程到达100之后,一般不再增加新的线程,新增加的在用完之后,会被迅速destroy,1.25-2.10所使用的线程基本是1.21- 1.23创建的,因此没有再消耗新的内存。服务器持续运行时间,也因此大大超乎我5天的预期,到达了20天。
修改:
1.修改JAVA_OPTS,去掉+XX:AggressiveHeap,修改Xss。现在的JAVA_OPTS为:
-Xms 520m -Xmx 900m -Xss 128k
2.修改deploy/jbossweb-tomcat55.sar/service.xml
将maxThreads根据目前的访问量由默认的250降为75,并使用jboss 4默认未写在标准service.xml里面而jboss 3写入了的2个参数: maxSparseThreads=55,minSparseThreads=25
3.修改了oracle-ds.xml将最大连接数有150降为50.
4.去掉了一些不用的服务。
posted @ 2007-05-30 11:01 MyBox 阅读(792) | 评论 (0)编辑 收藏

oracle number类型的数值存储空间是几个字节?

其实有公式可以计算:
number(p,s)占用得空间为:
length = floor((p+1)/2) + 1   
备注:如果该数值为负数,需要再加一个字节。

----------------
例如:NUMBER(14,4)的类型数值,存储空间为

select floor((14+1)/2) + 1  from dual 
结果输出为: 8

posted @ 2007-04-10 14:43 MyBox 阅读(3653) | 评论 (0)编辑 收藏
/*
*
* 如果需要精确计算,非要用String来够造BigDecimal不可
*/

import java.math.BigDecimal;
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入。
*/

public class Arith
{
//默认除法运算精度 
   private static final int DEF_DIV_SCALE = 10;
//这个类不能实例化 
   private Arith() 
   { 
   }
/**
* 提供精确的加法运算。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/
 
   public static double add(double v1, double v2) 
   { 
      BigDecimal b1 = new BigDecimal(Double.toString(v1)); 
      BigDecimal b2 = new BigDecimal(Double.toString(v2)); 

      return b1.add(b2).doubleValue(); 
   }
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/ 

   public static double sub(double v1, double v2) 
   { 
      BigDecimal b1 = new BigDecimal(Double.toString(v1)); 
      BigDecimal b2 = new BigDecimal(Double.toString(v2)); 

      return b1.subtract(b2).doubleValue(); 
   }
/**
* 提供精确的乘法运算。
* @param v1 被乘数
* @param v2 乘数
* @return 两个参数的积
*/

   public static double mul(double v1, double v2) 
   { 
      BigDecimal b1 = new BigDecimal(Double.toString(v1)); 
      BigDecimal b2 = new BigDecimal(Double.toString(v2)); 

      return b1.multiply(b2).doubleValue(); 
   }
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/ 

   public static double div(double v1, double v2) 
   { 
      return div(v1, v2, DEF_DIV_SCALE); 
   }
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
 
   public static double div(double v1, double v2, int scale) 
   { 
      if (scale < 0) { 
         throw new IllegalArgumentException("The scale must be a positive integer or zero"); 
      } 
      BigDecimal b1 = new BigDecimal(Double.toString(v1)); 
      BigDecimal b2 = new BigDecimal(Double.toString(v2)); 

      return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); 
   }
/**
* 提供精确的小数位四舍五入处理。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/ 

   public static double round(double v, int scale) 
   { 
      if (scale < 0) 
      { 
         throw new IllegalArgumentException("The scale must be a positive integer or zero"); 
      } 
      BigDecimal b = new BigDecimal(Double.toString(v)); 
      BigDecimal one = new BigDecimal("1"); 

      return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); 
   }
}
posted @ 2006-06-08 18:51 MyBox 阅读(396) | 评论 (0)编辑 收藏