re: 時間控件(可含時分秒) 末日風(fēng)情 2011-07-07 20:28
re: 快速訪問Map的方法 末日風(fēng)情 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);
}
}
truncate,delete,drop的異同點 末日風(fēng)情 2009-06-18 12:46
注意:這里說的delete是指不帶where子句的delete語句
相同點:truncate和不帶where子句的delete, 以及drop都會刪除表內(nèi)的數(shù)據(jù)
不同點:
1. truncate和 delete只刪除數(shù)據(jù)不刪除表的結(jié)構(gòu)(定義)
drop語句將刪除表的結(jié)構(gòu)被依賴的約束(constrain),觸發(fā)器(trigger),索引(index); 依賴于該表的存儲過程/函數(shù)將保留,但是變?yōu)閕nvalid狀態(tài).
2.delete語句是dml,這個操作會放到rollback segement中,事務(wù)提交之后才生效;如果有相應(yīng)的trigger,執(zhí)行的時候?qū)⒈挥|發(fā).
truncate,drop是ddl, 操作立即生效,原數(shù)據(jù)不放到rollback segment中,不能回滾. 操作不觸發(fā)trigger.
3.delete語句不影響表所占用的extent, 高水線(high watermark)保持原位置不動
顯然drop語句將表所占用的空間全部釋放
truncate 語句缺省情況下將空間釋放到 minextents個 extent,除非使用reuse storage; truncate會將高水線復(fù)位(回到最開始).
4.速度,一般來說: drop> truncate > delete
5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及
使用上,想刪除部分?jǐn)?shù)據(jù)行用delete,注意帶上where子句. 回滾段要足夠大.
想刪除表,當(dāng)然用drop
想保留表而將所有數(shù)據(jù)刪除. 如果和事務(wù)無關(guān),用truncate即可. 如果和事務(wù)有關(guān),或者想觸發(fā)trigger,還是用delete.
如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,再重新導(dǎo)入/插入數(shù)據(jù)
1、 在功能上,truncate是清空一個表的內(nèi)容,它相當(dāng)于delete from table_name。
2、delete是dml操作,truncate是ddl操作;因此,用delete刪除整個表的數(shù)據(jù)時,會產(chǎn)生大量的roolback,占用很多的rollback segments, 而truncate不會。
3、在內(nèi)存中,用delete刪除數(shù)據(jù),表空間中其被刪除數(shù)據(jù)的表占用的空間還在,便于以后的使用,另外它是“假相”的刪除,相當(dāng)于windows中用delete刪除數(shù)據(jù)是把數(shù)據(jù)放到回收站中,還可以恢復(fù),當(dāng)然如果這個時候重新啟動系統(tǒng)(OS或者RDBMS),它也就不能恢復(fù)了!
而用truncate清除數(shù)據(jù),內(nèi)存中表空間中其被刪除數(shù)據(jù)的表占用的空間會被立即釋放,相當(dāng)于windows中用shift+delete刪除數(shù)據(jù),不能夠恢復(fù)!
4、truncate 調(diào)整high water mark 而delete不;truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默認(rèn))delete 則不可以。
5、truncate 只能對TABLE,delete 可以是table,view,synonym。
6、TRUNCATE TABLE 的對象必須是本模式下的,或者有drop any table的權(quán)限 而 DELETE 則是對象必須是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的權(quán)限。
7、在外層中,truncate或者delete后,其占用的空間都將釋放。
8、truncate和delete只刪除數(shù)據(jù),而drop則刪除整個表(結(jié)構(gòu)和數(shù)據(jù))。
Oracle中存儲過程和Sql語句的優(yōu)化重點 末日風(fēng)情 2008-07-29 09:14
1.全表掃描和索引掃描
大數(shù)據(jù)量表盡量要避免全表掃描,全部掃描會按順序每條記錄掃描,對于>100萬數(shù)據(jù)表影響很大。
Oracle中通過RowID訪問數(shù)據(jù)是最快的方式
對字段進(jìn)行函數(shù)轉(zhuǎn)換,或者前模糊查詢都會導(dǎo)致無法應(yīng)用索引而進(jìn)行全表掃描
對Oracle共享池和緩沖區(qū)中的Sql必須要大小寫都完全用上才能夠匹配上
2.順序問題
Oracle按照從右到左的順序?qū)?shù)據(jù)表進(jìn)行解析。因此From最后面的表為基礎(chǔ)表,一般要選擇記錄數(shù)最少的表作為基礎(chǔ)表。
對于Where條件的順序,過濾到最大查詢記錄數(shù)量的條件必須寫在Where條件的結(jié)尾處。
Where條件中涉及到使用復(fù)雜函數(shù)判定的必須注意要寫到Where條件的最前面
3.索引方面
記錄數(shù)少的表保留有主鍵索引就可以了,不要再去建其它索引,全表掃描也很快
索引最好單獨建立表空間,必要時候?qū)λ饕M(jìn)行重建
必要時候可以使用函數(shù)索引,但不推薦使用
Oracle中的視圖也可以增加索引,但一般不推薦使用
*Sql語句中大量使用函數(shù)時候會導(dǎo)致很多索引無法使用上,要針對具體問題分析
4.其它
避免使用Select *,因為系統(tǒng)需要去幫你將*轉(zhuǎn)換為所有的列名,這個需要額外去查詢數(shù)據(jù)字典。
Count(1)和Count(*)差別不大。
多使用Decode函數(shù)來作簡單的代碼和名稱間的轉(zhuǎn)換,以減少表關(guān)聯(lián)
使用Truncate替代delete來刪除記錄,但Truncate數(shù)據(jù)不記錄日志,無法進(jìn)行回滾
對于復(fù)雜的存儲過程可以多次提交的數(shù)據(jù)的要多分多次Commit,否則長事務(wù)對系統(tǒng)性能影響很大
Distinct和Having子句都是耗時操作,應(yīng)該盡可能少使用
在不需要考慮重復(fù)記錄合并時候用Union All來代替Union
使用顯性游標(biāo)而不使用隱性游標(biāo),特別是大數(shù)據(jù)量情況下隱性游標(biāo)對性能影響很大
是否使用函數(shù)的問題
用直接的表關(guān)聯(lián)來代替Exist.用Exist或Not Exists來代理In。In進(jìn)行子查詢效率很差。
5.SQL語句分析
通過SQLPLUS中的SET TRACE 功能對Sql語句的性能進(jìn)行分析
通過Toad或PL/SQL Developer對語句的性能進(jìn)行和索引的使用情況進(jìn)行分析
對Oracle缺省的優(yōu)化不滿意可以強制使用Hint,但一般不推薦使用
對Flag等只存儲是或否信息的字段,一般不推薦建立索引。必要可以采用位圖索引
*存在遞歸查詢情況如果關(guān)聯(lián)Table太多對性能會造成較大影響,往往推薦采用臨時表轉(zhuǎn)為分步驟操作提高性能
*盡量使用表關(guān)聯(lián)查詢而不使用函數(shù),但涉及類似于代碼表要重復(fù)關(guān)聯(lián)多次取數(shù)據(jù)問題時候又適合使用函數(shù)
re: Onunload與Onbeforeunload 末日風(fēng)情 2008-02-04 13:42
onload //在頁面加載完成后執(zhí)行函數(shù)
onunload //在頁面卸載時候執(zhí)行函數(shù)
js中SetInterval與setTimeout用法 末日風(fēng)情 2007-12-21 16:15
JS里設(shè)定延時:
使用SetInterval和設(shè)定延時函數(shù)setTimeout 很類似。setTimeout 運用在延遲一段時間,再進(jìn)行某項操作。
setTimeout("function",time) 設(shè)置一個超時對象
setInterval("function",time) 設(shè)置一個超時對象
SetInterval為自動重復(fù),setTimeout不會重復(fù)。
clearTimeout(對象) 清除已設(shè)置的setTimeout對象
clearInterval(對象) 清除已設(shè)置的setInterval對象
屏蔽退格刪除鍵,屏蔽F5 刷新鍵,Ctrl+R 末日風(fēng)情 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>
windows.open()參數(shù)列表 末日風(fēng)情 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>
參數(shù)解釋:
<SCRIPT LANGUAGE="javascript"> js腳本開始;
window.open 彈出新窗口的命令;
'page.html' 彈出窗口的文件名;
'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替;
height=100 窗口高度;
width=400 窗口寬度;
top=0 窗口距離屏幕上方的象素值;
left=0 窗口距離屏幕左側(cè)的象素值;
toolbar=no 是否顯示工具欄,yes為顯示;
menubar,scrollbars 表示菜單欄和滾動欄。
resizable=no 是否允許改變窗口大小,yes為允許;
location=no 是否顯示地址欄,yes為允許;
status=no 是否顯示狀態(tài)欄內(nèi)的信息(通常是文件已經(jīng)打開),yes為允許;
</SCRIPT> js腳本結(jié)束
indexOf方法 末日風(fēng)情 2007-11-14 13:38
indexOf 方法
返回 String 對象內(nèi)第一次出現(xiàn)子字符串的字符位置。
strObj.indexOf(subString[, startIndex])
參數(shù)
strObj
必選項。String 對象或文字。
subString
必選項。要在 String 對象中查找的子字符串。
starIndex
可選項。該整數(shù)值指出在 String 對象內(nèi)開始查找的索引。如果省略,則從字符串的開始處查找。
說明
indexOf 方法返回一個整數(shù)值,指出 String 對象內(nèi)子字符串的開始位置。如果沒有找到子字符串,則返回 -1。
如果 startindex 是負(fù)數(shù),則 startindex 被當(dāng)作零。如果它比最大的字符位置索引還大,則它被當(dāng)作最大的可能索引。
從左向右執(zhí)行查找。否則,該方法與 lastIndexOf 相同。
示例
下面的示例說明了 indexOf 方法的用法。
function IndexDemo(str2){
var str1 = "BABEBIBOBUBABEBIBOBU"
var s = str1.indexOf(str2);
return(s);
}
典型問題以及解決辦法 末日風(fēng)情 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窗口中使用時,會打不開窗口,系統(tǒng)提示:無法打開internet站點 。。。。。已終止操作
答:完全可以使用的
IE7中沒有注意點
IE6中使用時,如果有 base target標(biāo)簽 必須在日期控件載入后設(shè)置
即
<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里面設(shè)置對應(yīng)的參數(shù)是 dpcfg.realValueShortFmt
6.starttime定義了 maxdate="#F{$('endtime').value}" 動態(tài)定義最大值,根據(jù)endtime來獲得的,endtime這欄我設(shè)當(dāng)前日期為最大值,可是當(dāng)我endtime沒選擇時為空,starttime就沒有限制了,所以我想問的是當(dāng)我動態(tài)starttime 最大值時,能不能給個初始值
答:= #F{} 是自定義函數(shù),他可以實現(xiàn)你想要的所有功能,不過你得懂點JS了,還要懂點腦子,像你剛剛所說的功能其實可以這樣實現(xiàn)(假設(shè)默認(rèn)值是2007-7-1,當(dāng)然你也可以用JS的日期函數(shù)取得動態(tài)日期,如今天等) #F{if($('endtime').value!='') return $('endtime').value else return '2007-7-1';}
7:在母版頁只要加入MAXDATE和MINDATE屬性就報錯,錯誤信息是: obj為空或不是對象
答:這是問題是因為使用了母板頁之后它的ID和ClientID是不一樣的,這就導(dǎo)致取$('id').value的時候,js找不到這個ID對象,解決辦法是在初始化的時候使用ClientID。
如:Text1.Attributes["MAXDATE"] = "#F{$('"+Text2.ClientID+"').value}";
或者你也可以用<%=Text2.ClientID%>的形式,把代碼寫在aspx文件里面