2007年9月12日
- tar -xvzf db2exc_970_LNX_x86.tar.gz
tar -xvzf db2exc_nlpack_970_LNX_x86.tar.gz
網(wǎng)上說(shuō), 可以解壓到同一個(gè)目錄里面, 自動(dòng)整合, 這個(gè)我沒(méi)有試驗(yàn), 今天晚上試試。 - 這個(gè)時(shí)候, 如果執(zhí)行db2setup的話(huà), 會(huì)報(bào)少一個(gè)包. The required library file libaio.so.1 is not found on the system.
Ubuntu的好處體現(xiàn)出來(lái)了,sudo apt-get install libaio1 安裝缺少的包。
其實(shí)我第一次安裝的是libaio, apt-get提示我說(shuō)不可用, 可以用libaio1替代。
安裝完依賴(lài)包, 就可以用db2setup來(lái)安裝了。 因?yàn)閁buntu一般不允許root登陸, 為了方便, 我用我的用戶(hù)安裝的。 用root權(quán)限安裝的話(huà), 會(huì)安裝到/opt/ibm/db2下面, 用普通用戶(hù)的話(huà), 會(huì)安裝的用戶(hù)目錄。
嗯, 高手也可以用db2-install命令行模式安裝。 其實(shí)期間沒(méi)有交互信息的, 哪個(gè)都行。
安裝的過(guò)程, 就不細(xì)說(shuō)了, 一路next過(guò)來(lái)的。 - 安裝結(jié)束以后, 得記著, 要運(yùn)行安裝目錄下的db2profile, 添加環(huán)境變量。. /home/richar/sqllib/db2profile 自己看清楚目錄哦。
- 執(zhí)行結(jié)束, 運(yùn)行db2start命令, 它報(bào)給我個(gè)錯(cuò):
SQL1220NThedatabasemanagersharedmemorysetcannotbeallocated.
網(wǎng)上搜了些資料, 說(shuō)是共享緩存不足, 具體原理我也不清楚了。 用sysctl kernel.shmmax命令查看了共享內(nèi)存。kernel.shmmax=33554432(32MB), 設(shè)置成256M
echo 268435456 > /proc/sys/kernel/shmmax
之后再次執(zhí)行db2start, 啟動(dòng)成功。
本文出自 “立子” 博客,請(qǐng)務(wù)必保留此出處http://leaze.blog.51cto.com/83088/195583
網(wǎng)站開(kāi)發(fā)時(shí)經(jīng)常需要在某個(gè)頁(yè)面需要實(shí)現(xiàn)對(duì)大量圖片的瀏覽,如果考慮流量的話(huà),大可以像pconline一樣每個(gè)頁(yè)面只顯示一張圖片,讓用戶(hù)每看一張圖片就需要重新下載一下整個(gè)頁(yè)面。不過(guò),在web2.0時(shí)代,更多人愿意用javascript來(lái)實(shí)現(xiàn)一個(gè)圖片瀏覽器,讓用戶(hù)無(wú)需等待過(guò)長(zhǎng)的時(shí)間就能看到其他圖片。
知道了一張圖片的地址,需要把它在一個(gè)固定大小的html容器(可以是div等)里邊顯示出來(lái),最重要的當(dāng)然是需要知道這張即將顯示的圖片的寬和高,然后再結(jié)合容器的寬和高,按照一定的縮放比例使圖片顯示出來(lái)。因此,實(shí)現(xiàn)圖片預(yù)加載就成為圖片瀏覽器的核心功能了。
做過(guò)圖片翻轉(zhuǎn)效果的朋友其實(shí)都知道,要讓圖片輪換的時(shí)候不出現(xiàn)等待,最好是先讓圖片下載到本地,讓瀏覽器緩存起來(lái)。這時(shí),一般都會(huì)用到j(luò)s里邊的Image對(duì)象。一般的手段無(wú)非這樣:
function preLoadImg(url) {
var img = new Image();
img.src = url;
}
通過(guò)調(diào)用preLoadImg函數(shù),傳入圖片的url,就能使圖片預(yù)先下載下來(lái)了。實(shí)際上,這里用到的預(yù)下載功能也和這基本一致。圖片預(yù)下載下來(lái)后,通過(guò) img的width和height屬性,就能知道圖片的寬和高了。但是需要考慮到,在做圖片瀏覽器功能時(shí),圖片都是實(shí)時(shí)顯示的。比如你點(diǎn)了顯示的按鈕,這個(gè)時(shí)候才會(huì)調(diào)用上邊類(lèi)似的代碼來(lái)加載圖片。因此,如果你直接用img.width的時(shí)候,圖片還沒(méi)有完全下載下來(lái)。因此,需要用一些異步的方法,等到圖片下載完畢的時(shí)候才會(huì)再對(duì)img的width和height進(jìn)行調(diào)用。
實(shí)現(xiàn)這樣的異步方法實(shí)際上不難,圖片的下載完畢事件也很簡(jiǎn)單,就是簡(jiǎn)單的onload事件。因此,我們可以寫(xiě)出下面的代碼:
function loadImage(url, callback) {
var img = new Image();
img.src = url;
img.onload = function(){ //圖片下載完畢時(shí)異步調(diào)用callback函數(shù)。
callback.call(img); // 將callback函數(shù)this指針切換為img。
};
}
好了,再來(lái)寫(xiě)一個(gè)測(cè)試用例。
function imgLoaded(){
alert(this.width);
}
<input type="button" value="loadImage" onclick="loadImage('aaa.jpg',imgLoaded)"/>
在firefox中測(cè)試一下,發(fā)現(xiàn)不錯(cuò),果然和預(yù)想的效果一樣,在圖片下載后,就會(huì)彈出圖片的寬度來(lái)。無(wú)論點(diǎn)擊多少次或者刷新結(jié)果都一樣。
不過(guò),做到這一步,先別高興太早——還需要考慮一下瀏覽器的兼容性,于是,趕緊到ie里邊測(cè)試一下。沒(méi)錯(cuò),同樣彈出了圖片的寬度。但是,再點(diǎn)擊load的時(shí)候,情況就不一樣了,什么反應(yīng)都沒(méi)有了。刷新一下,也同樣如此。
經(jīng)過(guò)對(duì)多個(gè)瀏覽器版本的測(cè)試,發(fā)現(xiàn)ie6、opera都會(huì)這樣,而firefox和safari則表現(xiàn)正常。其實(shí),原因也挺簡(jiǎn)單的,就是因?yàn)闉g覽器的緩存了。當(dāng)圖片加載過(guò)一次以后,如果再有對(duì)該圖片的請(qǐng)求時(shí),由于瀏覽器已經(jīng)緩存住這張圖片了,不會(huì)再發(fā)起一次新的請(qǐng)求,而是直接從緩存中加載過(guò)來(lái)。對(duì)于 firefox和safari,它們視圖使這兩種加載方式對(duì)用戶(hù)透明,同樣會(huì)引起圖片的onload事件,而ie和opera則忽略了這種同一性,不會(huì)引起圖片的onload事件,因此上邊的代碼在它們里邊不能得以實(shí)現(xiàn)效果。
怎么辦呢?最好的情況是Image可以有一個(gè)狀態(tài)值表明它是否已經(jīng)載入成功了。從緩存加載的時(shí)候,因?yàn)椴恍枰却@個(gè)狀態(tài)值就直接是表明已經(jīng)下載了,而從http請(qǐng)求加載時(shí),因?yàn)樾枰却螺d,這個(gè)值顯示為未完成。這樣的話(huà),就可以搞定了。
經(jīng)過(guò)一些分析,終于發(fā)現(xiàn)一個(gè)為各個(gè)瀏覽器所兼容的Image的屬性——complete。所以,在圖片onload事件之前先對(duì)這個(gè)值做一下判斷即可。最后,代碼變成如下的樣子:
function loadImage(url, callback) {
var img = new Image(); //創(chuàng)建一個(gè)Image對(duì)象,實(shí)現(xiàn)圖片的預(yù)下載
img.src = url;
if (img.complete) { // 如果圖片已經(jīng)存在于瀏覽器緩存,直接調(diào)用回調(diào)函數(shù)
callback.call(img);
return; // 直接返回,不用再處理onload事件
}
img.onload = function () { //圖片下載完畢時(shí)異步調(diào)用callback函數(shù)。
callback.call(img);//將回調(diào)函數(shù)的this替換為Image對(duì)象
};
};
經(jīng)過(guò)這么一番折騰,總算是讓各個(gè)瀏覽器都能滿(mǎn)足我們的目標(biāo)了。雖然代碼很簡(jiǎn)單,但是卻把圖片瀏覽器中最核心的問(wèn)題解決掉了,接下來(lái)你所要做的,僅僅是圖片如何呈現(xiàn)的問(wèn)題了。
常用JDBC連接字符串
1.MySQL
代碼:
Class.forName( " org.gjt.mm.mysql.Driver " );
Connection conn = DriverManager.getConnection( " jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName " , sUsr, sPwd );
代碼:
Class.forName( " com.microsoft.jdbc.sqlserver.SQLServerDriver " );
Connection conn = DriverManager.getConnection( "
jdbc:microsoft:sqlserver://MyDbComputerNameOrIP:1433;databaseName=master
" , sUsr, sPwd );
代碼:
Class.forName( " oracle.jdbc.driver.OracleDriver " );
Connection conn = DriverManager.getConnection ("jdbc: oracle:thin: @MyDbComputerNameOrIP:1521: ORCL " , sUsr, sPwd );
代碼:
Class.forName( " com.ibm.db2.jdbc.net.DB2Driver " );
String url = " jdbc:db2://192.9.200.108:6789/SAMPLE "
Connection conn = DriverManager.getConnection( url, sUsr, sPwd );
代碼:
Class.forName( " sun.jdbc.odbc.JdbcOdbcDriver " );
Connection conn = DriverManager.getConnection("jdbc: odbc: " + sDsn, sUsr, sPwd );
代碼:
Class.forName( " org.postgresql.Driver " );
Connection conn = DriverManager.getConnection( " jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName " , sUsr, sPwd );
showModalDialog()、showModelessDialog()方法使用詳解
Javascript有許多內(nèi)建的方法來(lái)產(chǎn)生對(duì)話(huà)框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持對(duì)話(huà)框。如:
showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)
window.showModalDialog()方法用來(lái)創(chuàng)建一個(gè)顯示HTML內(nèi)容的模態(tài)對(duì)話(huà)框,由于是對(duì)話(huà)框,因此它并沒(méi)有一般用window.open()打開(kāi)的窗口的所有屬性。
window.showModelessDialog()方法用來(lái)創(chuàng)建一個(gè)顯示HTML內(nèi)容的非模態(tài)對(duì)話(huà)框。
當(dāng)我們用showModelessDialog()打開(kāi)窗口時(shí),不必用window.close()去關(guān)閉它,當(dāng)以非模態(tài)方式[IE5]打開(kāi)時(shí), 打開(kāi)對(duì)話(huà)框的窗口仍可以進(jìn)行其他的操作,即對(duì)話(huà)框不總是最上面的焦點(diǎn),當(dāng)打開(kāi)它的窗口URL改變時(shí),它自動(dòng)關(guān)閉。而模態(tài)[IE4]方式的對(duì)話(huà)框始終有焦點(diǎn)(焦點(diǎn)不可移走,直到它關(guān)閉)。模態(tài)對(duì)話(huà)框和打開(kāi)它的窗口相聯(lián)系,因此我們打開(kāi)另外的窗口時(shí),他們的鏈接關(guān)系依然保存,并且隱藏在活動(dòng)窗口的下面。
使用方法如下:
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])
參數(shù)說(shuō)明:
sURL
必選參數(shù),類(lèi)型:字符串。用來(lái)指定對(duì)話(huà)框要顯示的文檔的URL。
vArguments
可選參數(shù),類(lèi)型:變體。用來(lái)向?qū)υ?huà)框傳遞參數(shù)。傳遞的參數(shù)類(lèi)型不限,包括數(shù)組等。對(duì)話(huà)框通過(guò)window.dialogArguments來(lái)取得傳遞進(jìn)來(lái)的參數(shù)。
sFeatures
可選參數(shù),類(lèi)型:字符串。用來(lái)描述對(duì)話(huà)框的外觀(guān)等信息,可以使用以下的一個(gè)或幾個(gè),用分號(hào)“;”隔開(kāi)。
dialogHeight 對(duì)話(huà)框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默認(rèn)的單位是em,而IE5中是px,為方便其見(jiàn),在定義modal方式的對(duì)話(huà)框時(shí),用px做單位。
dialogWidth: 對(duì)話(huà)框?qū)挾取?nbsp;
dialogLeft: 距離桌面左的距離。
dialogTop: 離桌面上的距離。
center: {yes | no | 1 | 0 }:窗口是否居中,默認(rèn)yes,但仍可以指定高度和寬度。
help: {yes | no | 1 | 0 }:是否顯示幫助按鈕,默認(rèn)yes。
resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改變大小。默認(rèn)no。
status: {yes | no | 1 | 0 } [IE5+]:是否顯示狀態(tài)欄。默認(rèn)為yes[ Modeless]或no[Modal]。
scroll:{ yes | no | 1 | 0 | on | off }:指明對(duì)話(huà)框是否顯示滾動(dòng)條。默認(rèn)為yes。
還有幾個(gè)屬性是用在HTA中的,在一般的網(wǎng)頁(yè)中一般不使用。
dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印預(yù)覽時(shí)對(duì)話(huà)框是否隱藏。默認(rèn)為no。
edge:{ sunken | raised }:指明對(duì)話(huà)框的邊框樣式。默認(rèn)為raised。
unadorned:{ yes | no | 1 | 0 | on | off }:默認(rèn)為no。
傳入?yún)?shù):
要想對(duì)話(huà)框傳遞參數(shù),是通過(guò)vArguments來(lái)進(jìn)行傳遞的。類(lèi)型不限制,對(duì)于字符串類(lèi)型,最大為4096個(gè)字符。也可以傳遞對(duì)象,例如:
test1.htm
====================
<script>
var mxh1 = new Array("mxh","net_lover","孟子E章")
var mxh2 = window.open("about:blank","window_mxh")
// 向?qū)υ?huà)框傳遞數(shù)組
window.showModalDialog("test2.htm",mxh1)
// 向?qū)υ?huà)框傳遞window對(duì)象
window.showModalDialog("test3.htm",mxh2)
</script>
test2.htm
====================
<script>
var a = window.dialogArguments
alert("您傳遞的參數(shù)為:" + a)
</script>
test3.htm
====================
<script>
var a = window.dialogArguments
alert("您傳遞的參數(shù)為window對(duì)象,名稱(chēng):" + a.name)
</script>
可以通過(guò)window.returnValue向打開(kāi)對(duì)話(huà)框的窗口返回信息,當(dāng)然也可以是對(duì)象。例如:
test4.htm
===================
<script>
var a = window.showModalDialog("test5.htm")
for(i=0;i<a.length;i++) alert(a[i])
</script>
test5.htm
===================
<script>
function sendTo()
{
var a=new Array("a","b")
window.returnValue = a
window.close()
}
</script>
<body>
<form>
<input value="返回" type=button onclick="sendTo()">
</form>
常見(jiàn)問(wèn)題:
1,如何在模態(tài)對(duì)話(huà)框中進(jìn)行提交而不新開(kāi)窗口?
如果你 的 瀏覽器是IE5.5+,可以在對(duì)話(huà)框中使用帶name屬性的iframe,提交時(shí)可以制定target為該iframe的name。對(duì)于IE4+,你可以用高度為0的frame來(lái)作:例子,
test6.htm
===================
<script>
window.showModalDialog("test7.htm")
</script>
test7.htm
===================
if(window.location.search) alert(window.location.search)
<frameset rows="0,*">
<frame src="about:blank">
<frame src="test8.htm">
</frameset>
test8.htm
===================
<form target="_self" method="get">
<input name=txt value="test">
<input type=submit>
</form>
<script>
if(window.location.search) alert(window.location.search)
</script>
2,可以通過(guò)http://servername/virtualdirname/test.htm?name=mxh方式直接向?qū)υ?huà)框傳遞參數(shù)嗎?
答案是不能。但在frame里是可以的。