我的評論
re: 時間控件(可含時分秒) 末日風情 2011-07-07 20:28
re: 快速訪問Map的方法 末日風情 2009-09-27 13:40
public static void main(String[] args) {
Map cacheResult = new HashMap();
cacheResult.put("A", "a");
cacheResult.put("B", "b");
cacheResult.put("C", "c");
Set entries = cacheResult.entrySet();
for (Iterator it = entries.iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + "---" + value);
}
}
Map cacheResult = new HashMap();
cacheResult.put("A", "a");
cacheResult.put("B", "b");
cacheResult.put("C", "c");
Set entries = cacheResult.entrySet();
for (Iterator it = entries.iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + "---" + value);
}
}
truncate,delete,drop的異同點 末日風情 2009-06-18 12:46
注意:這里說的delete是指不帶where子句的delete語句
相同點:truncate和不帶where子句的delete, 以及drop都會刪除表內的數據
不同點:
1. truncate和 delete只刪除數據不刪除表的結構(定義)
drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴于該表的存儲過程/函數將保留,但是變為invalid狀態.
2.delete語句是dml,這個操作會放到rollback segement中,事務提交之后才生效;如果有相應的trigger,執行的時候將被觸發.
truncate,drop是ddl, 操作立即生效,原數據不放到rollback segment中,不能回滾. 操作不觸發trigger.
3.delete語句不影響表所占用的extent, 高水線(high watermark)保持原位置不動
顯然drop語句將表所占用的空間全部釋放
truncate 語句缺省情況下將空間釋放到 minextents個 extent,除非使用reuse storage; truncate會將高水線復位(回到最開始).
4.速度,一般來說: drop> truncate > delete
5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及
使用上,想刪除部分數據行用delete,注意帶上where子句. 回滾段要足夠大.
想刪除表,當然用drop
想保留表而將所有數據刪除. 如果和事務無關,用truncate即可. 如果和事務有關,或者想觸發trigger,還是用delete.
如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據
相同點:truncate和不帶where子句的delete, 以及drop都會刪除表內的數據
不同點:
1. truncate和 delete只刪除數據不刪除表的結構(定義)
drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴于該表的存儲過程/函數將保留,但是變為invalid狀態.
2.delete語句是dml,這個操作會放到rollback segement中,事務提交之后才生效;如果有相應的trigger,執行的時候將被觸發.
truncate,drop是ddl, 操作立即生效,原數據不放到rollback segment中,不能回滾. 操作不觸發trigger.
3.delete語句不影響表所占用的extent, 高水線(high watermark)保持原位置不動
顯然drop語句將表所占用的空間全部釋放
truncate 語句缺省情況下將空間釋放到 minextents個 extent,除非使用reuse storage; truncate會將高水線復位(回到最開始).
4.速度,一般來說: drop> truncate > delete
5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及
使用上,想刪除部分數據行用delete,注意帶上where子句. 回滾段要足夠大.
想刪除表,當然用drop
想保留表而將所有數據刪除. 如果和事務無關,用truncate即可. 如果和事務有關,或者想觸發trigger,還是用delete.
如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據
Oracle 中truncate與delete的區別 末日風情 2009-06-18 12:46
1、 在功能上,truncate是清空一個表的內容,它相當于delete from table_name。
2、delete是dml操作,truncate是ddl操作;因此,用delete刪除整個表的數據時,會產生大量的roolback,占用很多的rollback segments, 而truncate不會。
3、在內存中,用delete刪除數據,表空間中其被刪除數據的表占用的空間還在,便于以后的使用,另外它是“假相”的刪除,相當于windows中用delete刪除數據是把數據放到回收站中,還可以恢復,當然如果這個時候重新啟動系統(OS或者RDBMS),它也就不能恢復了!
而用truncate清除數據,內存中表空間中其被刪除數據的表占用的空間會被立即釋放,相當于windows中用shift+delete刪除數據,不能夠恢復!
4、truncate 調整high water mark 而delete不;truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默認)delete 則不可以。
5、truncate 只能對TABLE,delete 可以是table,view,synonym。
6、TRUNCATE TABLE 的對象必須是本模式下的,或者有drop any table的權限 而 DELETE 則是對象必須是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的權限。
7、在外層中,truncate或者delete后,其占用的空間都將釋放。
8、truncate和delete只刪除數據,而drop則刪除整個表(結構和數據)。
2、delete是dml操作,truncate是ddl操作;因此,用delete刪除整個表的數據時,會產生大量的roolback,占用很多的rollback segments, 而truncate不會。
3、在內存中,用delete刪除數據,表空間中其被刪除數據的表占用的空間還在,便于以后的使用,另外它是“假相”的刪除,相當于windows中用delete刪除數據是把數據放到回收站中,還可以恢復,當然如果這個時候重新啟動系統(OS或者RDBMS),它也就不能恢復了!
而用truncate清除數據,內存中表空間中其被刪除數據的表占用的空間會被立即釋放,相當于windows中用shift+delete刪除數據,不能夠恢復!
4、truncate 調整high water mark 而delete不;truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默認)delete 則不可以。
5、truncate 只能對TABLE,delete 可以是table,view,synonym。
6、TRUNCATE TABLE 的對象必須是本模式下的,或者有drop any table的權限 而 DELETE 則是對象必須是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的權限。
7、在外層中,truncate或者delete后,其占用的空間都將釋放。
8、truncate和delete只刪除數據,而drop則刪除整個表(結構和數據)。
Oracle中存儲過程和Sql語句的優化重點 末日風情 2008-07-29 09:14
1.全表掃描和索引掃描
大數據量表盡量要避免全表掃描,全部掃描會按順序每條記錄掃描,對于>100萬數據表影響很大。
Oracle中通過RowID訪問數據是最快的方式
對字段進行函數轉換,或者前模糊查詢都會導致無法應用索引而進行全表掃描
對Oracle共享池和緩沖區中的Sql必須要大小寫都完全用上才能夠匹配上
2.順序問題
Oracle按照從右到左的順序對數據表進行解析。因此From最后面的表為基礎表,一般要選擇記錄數最少的表作為基礎表。
對于Where條件的順序,過濾到最大查詢記錄數量的條件必須寫在Where條件的結尾處。
Where條件中涉及到使用復雜函數判定的必須注意要寫到Where條件的最前面
3.索引方面
記錄數少的表保留有主鍵索引就可以了,不要再去建其它索引,全表掃描也很快
索引最好單獨建立表空間,必要時候對索引進行重建
必要時候可以使用函數索引,但不推薦使用
Oracle中的視圖也可以增加索引,但一般不推薦使用
*Sql語句中大量使用函數時候會導致很多索引無法使用上,要針對具體問題分析
4.其它
避免使用Select *,因為系統需要去幫你將*轉換為所有的列名,這個需要額外去查詢數據字典。
Count(1)和Count(*)差別不大。
多使用Decode函數來作簡單的代碼和名稱間的轉換,以減少表關聯
使用Truncate替代delete來刪除記錄,但Truncate數據不記錄日志,無法進行回滾
對于復雜的存儲過程可以多次提交的數據的要多分多次Commit,否則長事務對系統性能影響很大
Distinct和Having子句都是耗時操作,應該盡可能少使用
在不需要考慮重復記錄合并時候用Union All來代替Union
使用顯性游標而不使用隱性游標,特別是大數據量情況下隱性游標對性能影響很大
是否使用函數的問題
用直接的表關聯來代替Exist.用Exist或Not Exists來代理In。In進行子查詢效率很差。
5.SQL語句分析
通過SQLPLUS中的SET TRACE 功能對Sql語句的性能進行分析
通過Toad或PL/SQL Developer對語句的性能進行和索引的使用情況進行分析
對Oracle缺省的優化不滿意可以強制使用Hint,但一般不推薦使用
對Flag等只存儲是或否信息的字段,一般不推薦建立索引。必要可以采用位圖索引
*存在遞歸查詢情況如果關聯Table太多對性能會造成較大影響,往往推薦采用臨時表轉為分步驟操作提高性能
*盡量使用表關聯查詢而不使用函數,但涉及類似于代碼表要重復關聯多次取數據問題時候又適合使用函數
大數據量表盡量要避免全表掃描,全部掃描會按順序每條記錄掃描,對于>100萬數據表影響很大。
Oracle中通過RowID訪問數據是最快的方式
對字段進行函數轉換,或者前模糊查詢都會導致無法應用索引而進行全表掃描
對Oracle共享池和緩沖區中的Sql必須要大小寫都完全用上才能夠匹配上
2.順序問題
Oracle按照從右到左的順序對數據表進行解析。因此From最后面的表為基礎表,一般要選擇記錄數最少的表作為基礎表。
對于Where條件的順序,過濾到最大查詢記錄數量的條件必須寫在Where條件的結尾處。
Where條件中涉及到使用復雜函數判定的必須注意要寫到Where條件的最前面
3.索引方面
記錄數少的表保留有主鍵索引就可以了,不要再去建其它索引,全表掃描也很快
索引最好單獨建立表空間,必要時候對索引進行重建
必要時候可以使用函數索引,但不推薦使用
Oracle中的視圖也可以增加索引,但一般不推薦使用
*Sql語句中大量使用函數時候會導致很多索引無法使用上,要針對具體問題分析
4.其它
避免使用Select *,因為系統需要去幫你將*轉換為所有的列名,這個需要額外去查詢數據字典。
Count(1)和Count(*)差別不大。
多使用Decode函數來作簡單的代碼和名稱間的轉換,以減少表關聯
使用Truncate替代delete來刪除記錄,但Truncate數據不記錄日志,無法進行回滾
對于復雜的存儲過程可以多次提交的數據的要多分多次Commit,否則長事務對系統性能影響很大
Distinct和Having子句都是耗時操作,應該盡可能少使用
在不需要考慮重復記錄合并時候用Union All來代替Union
使用顯性游標而不使用隱性游標,特別是大數據量情況下隱性游標對性能影響很大
是否使用函數的問題
用直接的表關聯來代替Exist.用Exist或Not Exists來代理In。In進行子查詢效率很差。
5.SQL語句分析
通過SQLPLUS中的SET TRACE 功能對Sql語句的性能進行分析
通過Toad或PL/SQL Developer對語句的性能進行和索引的使用情況進行分析
對Oracle缺省的優化不滿意可以強制使用Hint,但一般不推薦使用
對Flag等只存儲是或否信息的字段,一般不推薦建立索引。必要可以采用位圖索引
*存在遞歸查詢情況如果關聯Table太多對性能會造成較大影響,往往推薦采用臨時表轉為分步驟操作提高性能
*盡量使用表關聯查詢而不使用函數,但涉及類似于代碼表要重復關聯多次取數據問題時候又適合使用函數
re: Onunload與Onbeforeunload 末日風情 2008-02-04 13:42
onload //在頁面加載完成后執行函數
onunload //在頁面卸載時候執行函數
onunload //在頁面卸載時候執行函數
js中SetInterval與setTimeout用法 末日風情 2007-12-21 16:15
JS里設定延時:
使用SetInterval和設定延時函數setTimeout 很類似。setTimeout 運用在延遲一段時間,再進行某項操作。
setTimeout("function",time) 設置一個超時對象
setInterval("function",time) 設置一個超時對象
SetInterval為自動重復,setTimeout不會重復。
clearTimeout(對象) 清除已設置的setTimeout對象
clearInterval(對象) 清除已設置的setInterval對象
使用SetInterval和設定延時函數setTimeout 很類似。setTimeout 運用在延遲一段時間,再進行某項操作。
setTimeout("function",time) 設置一個超時對象
setInterval("function",time) 設置一個超時對象
SetInterval為自動重復,setTimeout不會重復。
clearTimeout(對象) 清除已設置的setTimeout對象
clearInterval(對象) 清除已設置的setInterval對象
屏蔽退格刪除鍵,屏蔽F5 刷新鍵,Ctrl+R 末日風情 2007-12-14 13:37
<body onkeydown="KeyDown()">
<script language=javascript>
function KeyDown()
{
//屏蔽退格刪除鍵,屏蔽 F5 刷新鍵,Ctrl + R
if ((event.keyCode==116)||(event.ctrlKey && event.keyCode==82))
{
event.keyCode=0;
event.returnValue=false; //為什么還要加上這一句
}
</script>
<script language=javascript>
function KeyDown()
{
//屏蔽退格刪除鍵,屏蔽 F5 刷新鍵,Ctrl + R
if ((event.keyCode==116)||(event.ctrlKey && event.keyCode==82))
{
event.keyCode=0;
event.returnValue=false; //為什么還要加上這一句
}
</script>
windows.open()參數列表 末日風情 2007-12-14 12:05
<SCRIPT LANGUAGE="javascript">
<!--
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no') //這句要寫成一行
-->
</SCRIPT>
參數解釋:
<SCRIPT LANGUAGE="javascript"> js腳本開始;
window.open 彈出新窗口的命令;
'page.html' 彈出窗口的文件名;
'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替;
height=100 窗口高度;
width=400 窗口寬度;
top=0 窗口距離屏幕上方的象素值;
left=0 窗口距離屏幕左側的象素值;
toolbar=no 是否顯示工具欄,yes為顯示;
menubar,scrollbars 表示菜單欄和滾動欄。
resizable=no 是否允許改變窗口大小,yes為允許;
location=no 是否顯示地址欄,yes為允許;
status=no 是否顯示狀態欄內的信息(通常是文件已經打開),yes為允許;
</SCRIPT> js腳本結束
<!--
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no') //這句要寫成一行
-->
</SCRIPT>
參數解釋:
<SCRIPT LANGUAGE="javascript"> js腳本開始;
window.open 彈出新窗口的命令;
'page.html' 彈出窗口的文件名;
'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替;
height=100 窗口高度;
width=400 窗口寬度;
top=0 窗口距離屏幕上方的象素值;
left=0 窗口距離屏幕左側的象素值;
toolbar=no 是否顯示工具欄,yes為顯示;
menubar,scrollbars 表示菜單欄和滾動欄。
resizable=no 是否允許改變窗口大小,yes為允許;
location=no 是否顯示地址欄,yes為允許;
status=no 是否顯示狀態欄內的信息(通常是文件已經打開),yes為允許;
</SCRIPT> js腳本結束
indexOf方法 末日風情 2007-11-14 13:38
indexOf 方法
返回 String 對象內第一次出現子字符串的字符位置。
strObj.indexOf(subString[, startIndex])
參數
strObj
必選項。String 對象或文字。
subString
必選項。要在 String 對象中查找的子字符串。
starIndex
可選項。該整數值指出在 String 對象內開始查找的索引。如果省略,則從字符串的開始處查找。
說明
indexOf 方法返回一個整數值,指出 String 對象內子字符串的開始位置。如果沒有找到子字符串,則返回 -1。
如果 startindex 是負數,則 startindex 被當作零。如果它比最大的字符位置索引還大,則它被當作最大的可能索引。
從左向右執行查找。否則,該方法與 lastIndexOf 相同。
示例
下面的示例說明了 indexOf 方法的用法。
function IndexDemo(str2){
var str1 = "BABEBIBOBUBABEBIBOBU"
var s = str1.indexOf(str2);
return(s);
}
返回 String 對象內第一次出現子字符串的字符位置。
strObj.indexOf(subString[, startIndex])
參數
strObj
必選項。String 對象或文字。
subString
必選項。要在 String 對象中查找的子字符串。
starIndex
可選項。該整數值指出在 String 對象內開始查找的索引。如果省略,則從字符串的開始處查找。
說明
indexOf 方法返回一個整數值,指出 String 對象內子字符串的開始位置。如果沒有找到子字符串,則返回 -1。
如果 startindex 是負數,則 startindex 被當作零。如果它比最大的字符位置索引還大,則它被當作最大的可能索引。
從左向右執行查找。否則,該方法與 lastIndexOf 相同。
示例
下面的示例說明了 indexOf 方法的用法。
function IndexDemo(str2){
var str1 = "BABEBIBOBUBABEBIBOBU"
var s = str1.indexOf(str2);
return(s);
}
典型問題以及解決辦法 末日風情 2007-10-31 20:04
1. 點擊年份,月份下拉的時候顯示 ?/td>
答:請下載3.0.1版本
2. 多框架時,其他框架里點的鏈接替換了本頁,時間框不會消失
答:請下載3.0.1版本
3.在ff下,看著是正常的,但在錯誤查看器里每點擊一次,就會記一個錯誤,錯誤地址是:錯誤: this.win.attachEvent is not a function
源文件:file:///F:/My97DatePicker3.0/My97DatePicker3.0/My97DatePicker/WdatePicker.js
行:128
答:請下載3.0.1版本
4.在showModalDialog窗口中使用時,會打不開窗口,系統提示:無法打開internet站點 。。。。。已終止操作
答:完全可以使用的
IE7中沒有注意點
IE6中使用時,如果有 base target標簽 必須在日期控件載入后設置
即
<script language="javascript" type="text/javascript" src="../My97DatePicker/WdatePicker.js"></script>
<base target="_self" />
5.maxdate 和 自定義日期new WdatePicker(this,'%Y年%M月',false,'whyGreen'),會報日期格式錯誤,感覺是maxdate格式是類似2007-07-03而自定義不等同這個
答:MAXDATE 和 MINDATE 的格式和自定義日期的格式是不一樣的,MAXDATE 和 MINDATE 的格式可以在config.js里面設置對應的參數是 dpcfg.realValueShortFmt
6.starttime定義了 maxdate="#F{$('endtime').value}" 動態定義最大值,根據endtime來獲得的,endtime這欄我設當前日期為最大值,可是當我endtime沒選擇時為空,starttime就沒有限制了,所以我想問的是當我動態starttime 最大值時,能不能給個初始值
答:= #F{} 是自定義函數,他可以實現你想要的所有功能,不過你得懂點JS了,還要懂點腦子,像你剛剛所說的功能其實可以這樣實現(假設默認值是2007-7-1,當然你也可以用JS的日期函數取得動態日期,如今天等) #F{if($('endtime').value!='') return $('endtime').value else return '2007-7-1';}
7:在母版頁只要加入MAXDATE和MINDATE屬性就報錯,錯誤信息是: obj為空或不是對象
答:這是問題是因為使用了母板頁之后它的ID和ClientID是不一樣的,這就導致取$('id').value的時候,js找不到這個ID對象,解決辦法是在初始化的時候使用ClientID。
如:Text1.Attributes["MAXDATE"] = "#F{$('"+Text2.ClientID+"').value}";
或者你也可以用<%=Text2.ClientID%>的形式,把代碼寫在aspx文件里面
答:請下載3.0.1版本
2. 多框架時,其他框架里點的鏈接替換了本頁,時間框不會消失
答:請下載3.0.1版本
3.在ff下,看著是正常的,但在錯誤查看器里每點擊一次,就會記一個錯誤,錯誤地址是:錯誤: this.win.attachEvent is not a function
源文件:file:///F:/My97DatePicker3.0/My97DatePicker3.0/My97DatePicker/WdatePicker.js
行:128
答:請下載3.0.1版本
4.在showModalDialog窗口中使用時,會打不開窗口,系統提示:無法打開internet站點 。。。。。已終止操作
答:完全可以使用的
IE7中沒有注意點
IE6中使用時,如果有 base target標簽 必須在日期控件載入后設置
即
<script language="javascript" type="text/javascript" src="../My97DatePicker/WdatePicker.js"></script>
<base target="_self" />
5.maxdate 和 自定義日期new WdatePicker(this,'%Y年%M月',false,'whyGreen'),會報日期格式錯誤,感覺是maxdate格式是類似2007-07-03而自定義不等同這個
答:MAXDATE 和 MINDATE 的格式和自定義日期的格式是不一樣的,MAXDATE 和 MINDATE 的格式可以在config.js里面設置對應的參數是 dpcfg.realValueShortFmt
6.starttime定義了 maxdate="#F{$('endtime').value}" 動態定義最大值,根據endtime來獲得的,endtime這欄我設當前日期為最大值,可是當我endtime沒選擇時為空,starttime就沒有限制了,所以我想問的是當我動態starttime 最大值時,能不能給個初始值
答:= #F{} 是自定義函數,他可以實現你想要的所有功能,不過你得懂點JS了,還要懂點腦子,像你剛剛所說的功能其實可以這樣實現(假設默認值是2007-7-1,當然你也可以用JS的日期函數取得動態日期,如今天等) #F{if($('endtime').value!='') return $('endtime').value else return '2007-7-1';}
7:在母版頁只要加入MAXDATE和MINDATE屬性就報錯,錯誤信息是: obj為空或不是對象
答:這是問題是因為使用了母板頁之后它的ID和ClientID是不一樣的,這就導致取$('id').value的時候,js找不到這個ID對象,解決辦法是在初始化的時候使用ClientID。
如:Text1.Attributes["MAXDATE"] = "#F{$('"+Text2.ClientID+"').value}";
或者你也可以用<%=Text2.ClientID%>的形式,把代碼寫在aspx文件里面
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
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 | 1 | 2 | 3 | 4 | 5 |
常用鏈接
留言簿(4)
隨筆分類
- AJAX(2)
- CSS(4)
- freemarker
- hibernate
- HTML/XML(6)
- Jasper Report(1)
- javascript(26)
- java編程(20)
- JSP基礎(4)
- oracle(18)
- spring(1)
- struts(3)
- 其他(13)
- 架構設計(2)
- 編碼規范
- 設計模式(1)
隨筆檔案
- 2012年8月 (1)
- 2011年4月 (2)
- 2011年2月 (2)
- 2010年8月 (9)
- 2010年7月 (1)
- 2009年11月 (2)
- 2009年10月 (3)
- 2009年9月 (11)
- 2009年8月 (4)
- 2009年6月 (7)
- 2008年12月 (1)
- 2008年10月 (3)
- 2008年8月 (4)
- 2008年7月 (1)
- 2008年6月 (2)
- 2008年4月 (2)
- 2008年3月 (1)
- 2008年2月 (1)
- 2008年1月 (3)
- 2007年12月 (15)
- 2007年11月 (14)
- 2007年10月 (12)
- 2007年8月 (2)
搜索
最新評論

- 1.?re: Blowfish加密算法之Java實現[未登錄]
- 這個有c語言版沒
- --小丸子
- 2.?re: SSH實現分頁
-
我和上面的一樣,你的分頁很簡單,能否發一份給我呢?
我的QQ郵箱是511775600@qq.com - --瞇露
- 3.?re: String.equals()和String.equalsIgnoreCase()的區別
- 觀后感矛
- --和規劃局
- 4.?re: 時間控件(可含時分秒)
- thank you 樓主
- --yaoj
- 5.?re: 時間控件(可含時分秒)
- 評論內容較長,點擊標題查看
- --末日風情