2010年9月22日 星期三

(MySQL)group by



加上having
找出銷售額大於300000店鋪(sid)

(MySQL) AVG

2010年9月18日 星期六

(SQL Server 2008)

SELECT  *  FROM  dbo.T01客戶, dbo.T01員工

執行語法會被自動轉成下面語法,結果16筆
SELECT  *  FROM  dbo.T01客戶 ===>  結果4筆
SELECT  *  FROM  dbo.T01員工 ===>  結果4筆
SELECT  *  FROM  dbo.T01客戶, dbo.T01員工  ===>  結果16筆

SELECT     dbo.T01客戶.負責人代號, dbo.T01客戶.客戶代號, dbo.T01客戶.地區代號, dbo.T01員工.員工代號, dbo.T01員工.姓名, dbo.T01員工.部門, dbo.T01員工.職稱
FROM         dbo.T01客戶 CROSS JOIN
                      dbo.T01員工

2010年8月18日 星期三

(DB2)修改Decimal

V9後才支援直接修改Decimal長度及精確度

db2 => describe table emp_act

                                資料類型                     直欄
直欄名稱                     綱目    資料類型名稱      長度     比例 Null
------------------------------- --------- ------------------- ---------- ----- -
-----
EMPNO                           SYSIBM    CHARACTER                    6     0

PROJNO                          SYSIBM    CHARACTER                    6     0

ACTNO                           SYSIBM    SMALLINT                     2     0

EMPTIME                         SYSIBM    DECIMAL                      6     3

EMSTDATE                        SYSIBM    DATE                         4     0

EMENDATE                        SYSIBM    DATE                         4     0


    已選取 6 個記錄。

db2 => alter table EMP_ACT alter column emptime set data type decimal(9,2)
DB20000I  SQL 指令已順利完成。
db2 => describe table emp_act

                                資料類型                     直欄
直欄名稱                     綱目    資料類型名稱      長度     比例 Null
------------------------------- --------- ------------------- ---------- ----- -
-----
EMPNO                           SYSIBM    CHARACTER                    6     0

PROJNO                          SYSIBM    CHARACTER                    6     0

ACTNO                           SYSIBM    SMALLINT                     2     0

EMPTIME                         SYSIBM    DECIMAL                      9     2

EMSTDATE                        SYSIBM    DATE                         4     0

EMENDATE                        SYSIBM    DATE                         4     0


    已選取 6 個記錄。

db2 =>

MySQL Workbench

http://wb.mysql.com

2010年8月15日 星期日

(MySQL)修改Decimal

Decimal to Decimal:














Varchar to Decimal:





























p.s.
DB2指令(好像只能9.1之後版本):
alter table alter column set data type decimal(x,y).

2010年8月11日 星期三

2010年8月9日 星期一

Spring設定character encoding(解決中文亂碼)

org.springframework.web.filter.CharacterEncodingFilter

ref:
SetCharacterEncodingFilter.java

Tomcat 7實作功能

Servlet 3.0
JavaServer Pages 2.2
Expression Language (EL) 2.2

ref:
https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces5
http://tomcat.apache.org/tomcat-7.0-doc/index.html

實作Apache mod_rewrite功能

http://www.tuckey.org/urlrewrite/

UrlRewriteFilter is a Java Web Filter for any J2EE compliant web application server (such as Resin, Orion or Tomcat)

在Tomcat 7 和glassfish3跑都成功
其他沒有試過


ref:
http://en.wikipedia.org/wiki/Application_server#Java_application_servers

2010年8月7日 星期六

java.lang.NoClassDefFoundError: antlr/ANTLRException

缺少antlr*.jar
Ex:antlr-2.7.6.jar
該檔案在\hibernate-distribution-X.X.X-Final\lib\required下


Antlr和其他jar檔相比是比較特殊的,他不是函式庫,是個工具程式
利用hql.g hql-sql.g sql-gen.q文件定義了把HQL轉換成SQL的相關解析類
Hibernate的Source Code找grammar資料夾,裡面就有這三個檔案

ANTLR官方網站:
http://www.antlr.org

ref:
http://caterpillar.onlyfun.net/Gossip/HibernateGossip/setUpHibernate.html

把字串(String)轉成Date(yyyy-MM-dd)

DateFormat
import java.text.DateFormat;
DateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateformat.parse(sDate);


java.sql.Date
import java.sql.Date;
Date date = Date.valueOf(sDate);

Hibernate設定檔載入順序

properties->xml
兩個都存在,後(xml)蓋前(properties)

xml比properties多了一個功能,就是可以設定要載入哪個mapping檔進來

2010年4月21日 星期三

得到資料庫編碼資訊

db2 => get db cfg for sample

資料庫 sample 的資料庫配置

資料庫配置版次 = 0x0d00
資料庫版次 = 0x0d00

資料庫專屬區 = TW
資料庫字碼頁 = 1208
資料庫字碼集 = UTF-8
資料庫國碼/地區碼 = 88
資料庫對照順序 = IDENTITY
替代對照順序 (ALT_COLLATE) =
號碼相容性 = OFF
Varchar2 相容性 = OFF
日期相容性 = OFF
資料庫分頁大小 = 8192

「動態 SQL 查詢」管理 (DYN_QUERY_MGMT) = DISABLE

陳述式集中器 (STMT_CONC) = OFF

此資料庫的探索支援 (DISCOVER_DB) = ENABLE

限制存取 = NO
預設最佳查詢方式 (DFT_QUERYOPT) = 5
平行化程度 (DFT_DEGREE) = 1
繼續運算的異常狀況 (DFT_SQLMATHWARN) = NO
預設重新整理經歷時間 (DFT_REFRESH_AGE) = 0
作業的預設維護表格類型 (DFT_MTTB_TYPES) = SYSTEM
保留的經常值數目 (NUM_FREQVALUES) = 10
保留數量 (NUM_QUANTILES) = 20

小數浮點捨入模式 (DECFLT_ROUNDING) = ROUND_HALF_EVEN

備份擱置 = NO

所有已確定的交易已寫入至磁碟 = YES
Roll-Forward 擱置 = NO
還原擱置中 = NO

已啟用多頁檔案配置 = YES

回復狀態的日誌保留 = NO
記載狀態的使用者跳出程式 = NO

自身調整記憶體 (SELF_TUNING_MEM) = OFF
資料庫共用記憶體大小 (4KB) (DATABASE_MEMORY) = AUTOMATIC(26576)
資料庫記憶體臨界值 (DB_MEM_THRESH) = 10
鎖定清單的最大儲存體 (4KB) (LOCKLIST) = 4096
每一個應用程式的鎖定清單百分比 (MAXLOCKS) = 22
資料包快取記憶體大小 (4KB) (PCKCACHESZ) = (MAXAPPLS*8)
共用排序的排序資料堆臨界值 (4KB) (SHEAPTHRES_SHR) = 5000
排序清單資料堆 (4KB) (SORTHEAP) = 256

資料庫資料堆 (4KB) (DBHEAP) = AUTOMATIC(600)
型錄快取大小 (4KB) (CATALOGCACHE_SZ) = (MAXAPPLS*5)
日誌緩衝區大小 (4KB) (LOGBUFSZ) = 256
公用程式資料堆大小 (4KB) (UTIL_HEAP_SZ) = 5000
緩衝池大小 (頁) (BUFFPAGE) = 250
SQL 陳述式資料堆 (4KB) (STMTHEAP) = AUTOMATIC(2048)
預設應用程式資料堆 (4KB) (APPLHEAPSZ) = AUTOMATIC(256)
應用程式記憶體大小 (4KB) (APPL_MEMORY) = AUTOMATIC(10000)
統計資料堆大小 (4KB) (STAT_HEAP_SZ) = AUTOMATIC(4384)

檢查死鎖的間隔 (毫秒) (DLCHKTIME) = 10000
鎖定逾時 (秒) (LOCKTIMEOUT) = -1

已變更的頁面臨界值 (CHNGPGS_THRESH) = 60
非同步頁面清除器數目 (NUM_IOCLEANERS) = AUTOMATIC(1)
I/O 伺服器數目 (NUM_IOSERVERS) = AUTOMATIC(3)
索引排序旗標 (INDEXSORT) = YES
循序偵測旗標 (SEQDETECT) = YES
預設預先提取大小 (頁) (DFT_PREFETCH_SZ) = AUTOMATIC

追蹤已修改的頁面 (TRACKMOD) = OFF

儲存器的預設數目 = 1
預設表格空間擴充大小 (頁) (DFT_EXTENT_SZ) = 32

作用中應用程式的最大數目 (MAXAPPLS) = AUTOMATIC(40)
作用中應用程式的平均值 (AVG_APPLS) = AUTOMATIC(1)
每一個應用程式已開啟的 DB 檔案數目上限 (MAXFILOP) = 32768

日誌檔大小 (4KB) (LOGFILSIZ) = 1000
主要日誌檔的數目 (LOGPRIMARY) = 3
次要日誌檔的數目 (LOGSECOND) = 2
變更日誌檔的路徑 (NEWLOGPATH) =
日誌檔的路徑 = C:\DB2\NODE0000\SQL00
001\SQLOGDIR\
溢位日誌路徑 (OVERFLOWLOGPATH) =
鏡映日誌路徑 (MIRRORLOGPATH) =
第一個作用中的日誌檔 =
磁碟已滿的區塊日誌 (BLK_LOG_DSK_FUL) = NO
區塊非記載作業 (BLOCKNONLOGGED) = NO
最大主要日誌空間除以交易的百分比 (MAX_LOG) = 0
1 作用中 UOW 的現行日誌檔數目 (NUM_LOG_SPAN) = 0

群組確定計數 (MINCOMMIT) = 1
在執行軟式檢查點之前收回的日誌檔百分比 (SOFTMAX) = 100
已啟用回復的日誌保留 (LOGRETAIN) = OFF
已啟用記載功能的使用者跳出程式 (USEREXIT) = OFF

HADR 資料庫角色 = STANDARD
HADR 本端主機名稱 (HADR_LOCAL_HOST) =
HADR 本端服務名稱 (HADR_LOCAL_SVC) =
HADR 遠端主機名稱 (HADR_REMOTE_HOST) =
HADR 遠端服務名稱 (HADR_REMOTE_SVC) =
遠端伺服器的 HADR 實例名稱 (HADR_REMOTE_INST) =
HADR 逾時值 (HADR_TIMEOUT) = 120
HADR 日誌寫入同步化模式 (HADR_SYNCMODE) = NEARSYNC
HADR 同層級視窗期間 (秒) (HADR_PEER_WINDOW) = 0

首要日誌保存方法 (LOGARCHMETH1) = OFF
logarchmeth1 的選項 (LOGARCHOPT1) =
次要日誌保存方法 (LOGARCHMETH2) = OFF
logarchmeth2 的選項 (LOGARCHOPT2) =
失效接手日誌保存路徑 (FAILARCHPATH) =
錯誤時的日誌保存重試次數 (NUMARCHRETRY) = 5
日誌保存再試延遲 (秒) (ARCHRETRYDELAY) = 20
供應商選項 (VENDOROPT) =

已啟用自動重新啟動 (AUTORESTART) = ON
索引重建時間及重做索引建置 (INDEXREC) = SYSTEM (RESTART)
索引建置期間的日誌頁面 (LOGINDEXBUILD) = OFF
載入記錄階段作業的預設數目 (DFT_LOADREC_SES) = 1
保留的資料庫備份數目 (NUM_DB_BACKUPS) = 12
回復歷程保留 (天) (REC_HIS_RETENTN) = 366
自動刪除回復物件 (AUTO_DEL_REC_OBJ) = OFF

TSM 管理類別 (TSM_MGMTCLASS) =
TSM 節點名稱 (TSM_NODENAME) =
TSM 擁有者 (TSM_OWNER) =
TSM 密碼 (TSM_PASSWORD) =

自動維護 (AUTO_MAINT) = ON
自動備份資料庫 (AUTO_DB_BACKUP) = OFF
自動維護表格 (AUTO_TBL_MAINT) = ON
自動執行統計 (AUTO_RUNSTATS) = ON
自動陳述式統計值 (AUTO_STMT_STATS) = ON
自動建立統計值設定檔 (AUTO_STATS_PROF) = OFF
自動更新設定檔 (AUTO_PROF_UPD) = OFF
自動重組 (AUTO_REORG) = OFF

自動重新驗證 (AUTO_REVAL) = DEFERRED
目前已確定的 (CUR_COMMIT) = ON
具有 DECIMAL 輸入的 CHAR 輸出 (DEC_TO_CHAR_FMT) = NEW
啟用 XML 字元作業 (ENABLE_XMLCHAR) = YES
WLM 資料收集間隔 (分鐘) (WLM_COLLECT_INT) = 0
監視收集設定
要求度量 (MON_REQ_METRICS) = BASE
活動公制 (MON_ACT_METRICS) = BASE
物件公制 (MON_OBJ_METRICS) = BASE
工作事件單元 (MON_UOW_DATA) = NONE
鎖定逾時事件 (MON_LOCKTIMEOUT) = NONE
死鎖事件 (MON_DEADLOCK) = WITHOUT_HIST
鎖定等待事件 (MON_LOCKWAIT) = NONE
鎖定等待事件臨界值 (MON_LW_THRESH) = 5000000
資料包清單項目的數目 (MON_PKGLIST_SZ) = 32
鎖定事件通知層次 (MON_LCK_MSG_LVL) = 1

SMTP 伺服器 (SMTP_SERVER) =
SQL 條件式編譯旗標 (SQL_CCFLAGS) =
區段實際設定 (SECTION_ACTUALS) = NONE


db2 =>

2010年4月17日 星期六

JAVA印出錯誤行數的方式

JDK 1.3(含)之前

import java.io.PrintWriter;
import java.io.StringWriter;

public class DebugTest {

public static void main(String[] args) {
try{
String a = "test";
System.out.println(a.length());
a = null;
System.out.println(a.length());
}catch(Exception e){
StringWriter sw = new StringWriter();
PrintWriter out = new PrintWriter(sw, true);
e.printStackTrace(out);
System.out.println(sw.toString());
System.out.println(e.toString());
}

}

}


JDK 1.4含)之後

public class DebugTest {


public static void main(String[] args) {
try{
String a = "test";
System.out.println(a.length());
a = null;
System.out.println(a.length());
}catch(Exception e){
StackTraceElement[] ste = e.getStackTrace();
for(int i=0;i System.out.println(e.toString());
System.out.println(ste[0]);
System.out.println(ste.length);
System.out.println(e.toString());
}

}
}
}

可以搭配System.out.println(this.getClass().getResource("DebugTest_jsp.class"));取得JSP的class檔產生的在哪個路徑
比如在CentOS的Tomcat5上測試會產生file:/var/cache/tomcat5/work/Catalina/localhost/jsp-examples/org/apache/jsp/DebugTest_jsp.class

2010年3月1日 星期一

JAD-免費的Java Decompiler

和DJ Java Decompiler一樣,都是透過JAD
而且是免費的~~~
聽說和DJ Java Decompiler反組譯出來的結果差不多
只是沒用過DJ Java Decompiler

More:
http://strategoxt.org/Transform/JavaDecompilers

2010年2月27日 星期六

讓網際網路的外部使用者可以連線虛擬機器的網站或服務

Windows系統cd到C:\Program Files\Sun\VirtualBox
下以下指令(真實IP的81 Port對應到虛擬IP的80 Port,虛擬機器的名稱叫Fedora 12)
只能用在attached to NAT
另外使用Windows內的網際網路連線共用(ICS)加上attached to bridged adapter也是可以達到NAT的方式,只是IP是由Windows配發給你



ref:
ref1
ref2


VBoxManage setextradata "Fedora 12" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP

VBoxManage setextradata "Fedora 12" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 80

VBoxManage setextradata "Fedora 12" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 81

開機啟動

vi /etc/rc.d/rc.local

查看8080 Port

nmap localhost -p 8080

netstat -an | grep 8080

限制使用Tomcat執行servlet所用記憶體上限

限制最大使用128MB的記憶體(max heap)
Linux:
export CATALINA_OPTS="-Xmx128m"

Windows用set
shell用setenv

Tomcat的SystemOut

tail -f /var/log/tomcat5/catalina.out

yum安裝tomcat5

yum install yum install tomcat5 tomcat5-admin-webapps tomcat5-webapps

網路安裝CentOS

stage2.img

ex.
http://mirror01.idc.hinet.net/CentOS/5.4/os/i386/images/stage2.img

查看CentOS的核心

uname -a

查看CentOS的版本

cat /etc/*-release

修改yum更新主機

/etc/yum.conf

更新目前本機上面的所有套件,並自動回覆 yes

yum -y update

ref:
http://linux.vbird.org/linux_server/0450apt.php#yum