
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 閱讀(647) |
評論 (0) |
編輯 收藏
J2EE服務器啟動時會建立一定數量的池連接,并一直維持不少于此數目的池連接。客戶端程序需要連接時,池驅動程序會返回一個未使用的池連接并將其表記為忙。如果當前沒有空閑連接,池驅動程序就新建一定數量的連接,新建連接的數量有配置參數決定。當使用的池連接調用完成后,池驅動程序將此連接表記為空閑,其他調用就可以使用這個連接。
posted @
2008-02-25 16:10 MyBox 閱讀(238) |
評論 (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 閱讀(1244) |
評論 (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 閱讀(801) |
評論 (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 閱讀(3667) |
評論 (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 閱讀(405) |
評論 (0) |
編輯 收藏