while(rs.next()){//取得欄數ResultSetMetaDatarsmd=rs.getMetaData();intrs_count=rsmd.getColumnCount();setLog4J("info","oracle2mysql","欄位數量:"+rs_count+"<br>");//取得欄位型態for(intii=1;ii<=rs_count;ii++){setLog4J("info","oracle2mysql","ColumnName:"+rsmd.getColumnName(ii)+""+"type:"+rsmd.getColumnType(ii)+"");if(java.sql.Types.VARCHAR==rsmd.getColumnType(ii)){setLog4J("info","oracle2mysql","type:varchar");}elseif(java.sql.Types.DATE==rsmd.getColumnType(ii)){setLog4J("info","oracle2mysql","type:date");}elseif(java.sql.Types.NUMERIC==rsmd.getColumnType(ii)){setLog4J("info","oracle2mysql","type:numeric");setLog4J("info","oracle2mysql","precision:"+rsmd.getPrecision(ii)+""+"scale:"+rsmd.getScale(ii));}elseif(java.sql.Types.LONGVARCHAR==rsmd.getColumnType(ii)){setLog4J("info","oracle2mysql","type:longvarchar");}elseif(java.sql.Types.BLOB==rsmd.getColumnType(ii)){setLog4J("info","oracle2mysql","type:blob");}elseif(java.sql.Types.LONGVARBINARY==rsmd.getColumnType(ii)){setLog4J("info","oracle2mysql","type:LONGVARBINARY");}setLog4J("info","oracle2mysql",rs.getString(ii));}}
2015年4月19日 星期日
oracle型態分類
2015年4月16日 星期四
2015年4月13日 星期一
java File讀檔案列表
當要讀檔案列表使用類似下面程式,File.list()其實不能保證順序。
public static void main(String[] args) {
File a = new File("data");
String[] filenames;
String fullpath = a.getAbsolutePath();
if(a.isDirectory()){
filenames=a.list();
for (int i = 0 ; i < filenames.length ; i++){
File tempFile = new File(fullpath + "\\" + filenames[i]);
if(tempFile.isDirectory()){
System.out.println("目錄:" + filenames[i]);
}
else
System.out.println("檔案:" + filenames[i]);
}
}
else{
System.out.println("[" + a + "]不是目錄");
}
}
一般人跑出來的順序多半是字母順序,但這不是每個平台都一致的。
比較好的方法是用定義的Comparator排序一下才能確定順序。
一種改寫方式如下:
public class fileNameReadTest {
public static void main(String[] args) {
File a = new File("data");
File[] allfile;
String[] filenames;
String fullpath = a.getAbsolutePath();
if(a.isDirectory()){
filenames = a.list();
allfile = a.listFiles();
Arrays.sort(allfile, lastModified);
for (int i = 0 ; i < filenames.length ; i++){
File tempFile = new File(fullpath + "\\" + filenames[i]);
System.out.println("自然排序:" + filenames[i] + ", 時間排序:"+ allfile[i].getName());
}
}
else{
System.out.println("[" + a + "]不是目錄");
}
}
private static final Comparator lastModified = new Comparator() {
@Override
public int compare(File o1, File o2) {
return o1.lastModified() == o2.lastModified() ? 0 : (o1.lastModified() < o2.lastModified() ? 1 : -1 ) ;
}
};
}
本例子示範以最後修改時間方式排序,也可自行定義其他方式排序。
以下順便介紹常用的File處理會使用到的API。
FilenameFilter
這是一個interface,定義完後可以自行選擇要讀入的檔案名稱條件。
例如:
final List files = java.util.Arrays.asList("c", "b", "a");
FilenameFilter filenameFilter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return files.contains(name);
}
};
File[] ondisk = new File(".").listFiles(filenameFilter);
P.S.:1. File.list() 功能為取得目錄下檔案名稱字串
2. File.listFiles() 功能為取得目錄下檔案
3. 想要真正的字母排序(包含大小寫判斷)要使用apache commonIO函式庫NameFileComparator
2015年4月12日 星期日
snmp簡易操作教學
會用到snmp的人員應該很少,
但是這是系統維運人員必備的知識。
以下簡單列出一些基本用法。
查數值
snmpwalk -v2c -c (密碼) (IP) (node, ex: .1.3.6.1.4.1.2021.4.14)
完整表格說明與數值
snmptable -c (密碼) -v 1 (IP) (參數, ex: HOST-RESOURCES-MIB::hrStorageTable)
查項目名稱
snmpwalk -v2c -c (密碼) (IP) (參數, ex: hrStorageDescr)
查系統資訊
snmpwalk -v2c -c (密碼) (IP) system
參數意義
-v2c 表示snmpwalk版本
-c community
snmptranslate
轉換oid與mib name, 查本機mib架構
snmptranslate -Of (node, ex: .1.3.6.1.4.1.2021.11.11.0)
snmptranslate -On (node, ex: .iso.org.dod.internet.private.enterprises.ucdavis.systemStats.ssCpuIdle.0)
-Of 數字轉文字
-On 文字轉數字
snmpwalk也可使用-On -Of
ex. snmpwalk -v2c -c (密碼) -Of (IP) hrStorageUsed
實例練習:
snmp如何取得linux之memory使用量
用snmp求出下列數值
.iso.org.dod.internet.private.enterprises.ucdavis.memory.memTotalReal
.iso.org.dod.internet.private.enterprises.ucdavis.memory.memAvailReal
.iso.org.dod.internet.private.enterprises.ucdavis.memory.memBuffer
.iso.org.dod.internet.private.enterprises.ucdavis.memory.memCached
一般memory計算只要使用 memAvailReal/memTotalReal 即可算出空閒memory數量,
但由於linux不會讓memory擺著浪費,會主動把剩下的memory挪作他用,
因此這樣算出之數值會無法反映現況,會搞得系統維運人員認為memory滿載。
比較正確之算法應該使用
(memTotalReal-(memAvailReal+memBuffer+memCached))/memTotalReal
這樣就能正確反映使用者程式所消耗後,剩餘可用memory之數量
但是這是系統維運人員必備的知識。
以下簡單列出一些基本用法。
查數值
snmpwalk -v2c -c (密碼) (IP) (node, ex: .1.3.6.1.4.1.2021.4.14)
完整表格說明與數值
snmptable -c (密碼) -v 1 (IP) (參數, ex: HOST-RESOURCES-MIB::hrStorageTable)
查項目名稱
snmpwalk -v2c -c (密碼) (IP) (參數, ex: hrStorageDescr)
查系統資訊
snmpwalk -v2c -c (密碼) (IP) system
參數意義
-v2c 表示snmpwalk版本
-c community
snmptranslate
轉換oid與mib name, 查本機mib架構
snmptranslate -Of (node, ex: .1.3.6.1.4.1.2021.11.11.0)
snmptranslate -On (node, ex: .iso.org.dod.internet.private.enterprises.ucdavis.systemStats.ssCpuIdle.0)
-Of 數字轉文字
-On 文字轉數字
snmpwalk也可使用-On -Of
ex. snmpwalk -v2c -c (密碼) -Of (IP) hrStorageUsed
實例練習:
snmp如何取得linux之memory使用量
用snmp求出下列數值
.iso.org.dod.internet.private.enterprises.ucdavis.memory.memTotalReal
.iso.org.dod.internet.private.enterprises.ucdavis.memory.memAvailReal
.iso.org.dod.internet.private.enterprises.ucdavis.memory.memBuffer
.iso.org.dod.internet.private.enterprises.ucdavis.memory.memCached
一般memory計算只要使用 memAvailReal/memTotalReal 即可算出空閒memory數量,
但由於linux不會讓memory擺著浪費,會主動把剩下的memory挪作他用,
因此這樣算出之數值會無法反映現況,會搞得系統維運人員認為memory滿載。
比較正確之算法應該使用
(memTotalReal-(memAvailReal+memBuffer+memCached))/memTotalReal
這樣就能正確反映使用者程式所消耗後,剩餘可用memory之數量
2015年4月10日 星期五
開站紀念
這是第一篇文章!!
本網誌將會記錄一些學習程式的學習筆記,
歡迎大家留言!
目前計畫會寫一些關於 jQuery, javascript, jsp, jsf 等的主流網頁技術。
還會寫一些相關的好用開源API的介紹,像是quartz, iReport, ApachePOI, mysql等...
敬請期待!!
本網誌將會記錄一些學習程式的學習筆記,
歡迎大家留言!
目前計畫會寫一些關於 jQuery, javascript, jsp, jsf 等的主流網頁技術。
還會寫一些相關的好用開源API的介紹,像是quartz, iReport, ApachePOI, mysql等...
敬請期待!!
訂閱:
文章 (Atom)