2014年5月29日 星期四

工作日誌_java connection 的 conn.close() 與 null 差異

工作10年了,
其實也面對了不少事情,
為了怕以後忘記,還是寫起來吧,

未來帶開發團隊,一定要先要求 connection 關閉的標準寫好,
不然一堆 connection 卡在那裡佔用資源,server會受不了阿


在jdk的說明中有提到,幾個定義:
1.close() 的定義是"Releases this Connection object's database and JDBC resources immediately instead of waiting for them to be automatically released",依照說明可以知道,就是為了立刻釋放connection,避免佔用資料庫和 JDBC 的資源,可免於等 GC 機制啟動被動式的釋放資源

2.將connection置為null,就會變成這個 connection 還會持續佔用資源,等GC機制進行釋放,但是我們都知道GC的機制不是即時的,而且回收常會有不穩定和不確定性,因此這樣處理,還是會一直佔用資料庫和 JDBC 的資源

connection 關閉範例寫法

Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
    con = getConnection();//getConnection is your method
    ps = con.prepareStatement(sql);
    rs = ps.executeQuery();
    //...........
}
catch (SQLException ex) {
    //錯誤處理
}
finally{
    try {
        if(ps!=null)
            ps.close();
    }
    catch (SQLException ex) {
        //錯誤處理
    }
    try{
        if(con!=null)
            con.close();
    }
    catch (SQLException ex) {
        //錯誤處理
    }
}


2014年5月26日 星期一

[轉載] 大陸禁止國企接觸美國顧問公司

從以下新聞可以知道,很多事情不一定是專業上的問題,絕大部分都是政治的彼此角力,
雙方在各自可以施加壓力的地方進行。
--------------------------------------------------------------
英國金融時報報導,接近北京高層領導的人士透露,中國已下令國有企業與麥肯錫(McKinsey)、波士頓顧問集團(BCG)等美國顧問公司斷絕關係,理由是擔心美商為美國政府從事間諜活動
 中國此一舉措不無反擊美國之意。美國聯邦司法部日前起訴解放軍軍官,罪名是從事網路間諜活動、竊取美企商業機密。北京方面迅速、強烈回應,官媒更指美國是「裝腔作勢的高級流氓」。
 貝恩策略顧問公司(Bain & Co)與Strategy&(原稱Booz & Co)等西方管理顧問公司,在中國大陸擁有廣泛業務。對它們來說,中國仍是一個快速發展的市場。
 麥肯錫、波士頓顧問集團和Strategy&均拒絕對上述禁令發表評論。但知情人士透露,它們的客戶都仍包括一些中國國有企業。
 西方管理顧問公司的中國客戶中,民營企業和跨國公司仍佔據可觀比例,因此國企業務被禁雖會產生部分影響,但不見得會重創中國業務。
 中國領導層的一名高級政策顧問表示,「最高領導要求建立中國本土顧問團隊,由其專注於訊息系統,以便從外國公司手裡奪回主導權」,「現在,外國人利用他們的顧問公司,對他們想要瞭解的國有企業的一切瞭如指掌」。
 在禁令之前,中國政府剛宣佈,大陸市場所有外國資訊產品與服務都須通過新的安全審查。同時,出於安全考量,中國已禁止政府機構採購微軟(Microsoft)作業系統Windows 8

2014年5月25日 星期日

廈門出差之旅

2014年4月來廈門工作,隨意拍些照片吧

狐尾山公園拍出來的風景


廈門大學一角的風景



到集美區準備喝喜酒,酒店外的風景




一樣是狐尾山拍的,只是這次是清晨,還算湖面和天空還算清澈吧



因為是春夏交替之間來的,幾乎天天早上都是這種大霧濛濛的狀態阿




島內有名的白鷺洲公園~~逛了一陣子~~真大阿






2014年5月24日 星期六

PL/SQL 函數說明



PL/SQL函數指令
說明
ABS(n)
絕對值
ACOS(O)
逆三角餘弦值
ADD_MONTHS(dn)
傳回d值加n個月
ASCII(n)
Ascii字元傳回十進位
ATAN(n)
逆三角正切值(徑,p/2 ~ -p/2)
ATAN2(mn)
逆三角正切值(徑,p ~ -p)
AVG(n)
傳回平均值
BFILENAME(mn)
傳回外部檔案值,m=目錄字串,
n=檔案字串
CEIL(n)
無條件進位的整數
CHARTOROWID
將字元型態轉為ROWID型態
CHR(n)
Chr進位值,傳回ascii
CONCAT(mn)
不論文字或數字相加,都以字串相
加方式
CONVERT(m,n,z)
將字串轉換另一國家字元設定值
COS(n)
傳回n的餘弦值
COSH(n)
傳回n的雙曲線餘弦值
COUNT(n)
傳回總筆數
DECODE
(C nv1r1v2r2d1)=v2
變數c字串或n數字,=v1則值=r1,則值=v2,或=dl
DUMP(mnn1n2)
傳回m的長度及內碼,n=進位(預設值=10進位)n1=m的開始位置,n2=取的位無數
EMPTY_[B C] LOB()
BLOBCLOB初始化,就是傳回BLOBCLOB的空指標
EXP(n)
傳回自然對數en次方值
FLOOR(n)
無條件捨去的整數
GREATEST(m)
m可為數字或文字,傳回最大值
GROUPING(n)
傳回群集
HEXTORAW(m)
將十六進位轉換為原始值
INITCAP(n)
傳回字句一個字為大寫
INSTR(char1, char2 [m[n]] )
char1中從m位置起char2n次出現的位置
INSTR(mn)
傳回n字串在m字串中的位置
INSTRB(mn)
byte傳回n字串在m字串中的位置
LAST_DAY(d)
傳回該月的最後一天的日期
LEAST(m1m2m3...mn)
m可為數字或文字,傳回最小值
LENGTH(n)
傳回字串的長度
LENGTHB(n)
byte方式傳回字串的長度
LN(n)
自然對數
LOG(m , n)
m進位n對數
LOWER
傳回每一字為小寫
LPAD(m , n , z)
n1ength(m)z字元數填入m的左邊
LTRIM(n)
去除字串左邊的空格字元
MAX(n)
傳回最大值
MIN(n)
傳回最小值
MOD(m , n)
m/n整數的餘數
MONTHS_BETWEEN(mn)
傳回m - n的值,單位月(日期相減
單位為日)
NEW_TIME(m , n , z)
n時區的日期、時間是m,傳回在
z時區的日期時間
NEXT_DAY(m , n)
下一個星期n(1-7=sun-sat)是那一天
NLS_CHARSET_DECL_LEN(M , N)
傳回所要的字體組對應當前資料庫
的字體組,m=字體數;n=字體組(:'ZHT16BIG5')
NLS_CHARSET_ID(m)
傳回字體組的識別碼,m=字體組
NLS_CHARSET_NAME(n)
傳回字體組,n=字體組的識別碼
NLS_INITCAP(m [,N])
傳回字句一個字為大寫(依照國家
語言不同)
NLS_LOWER
傳回每一字為小寫(依照國家語言
不同)
NLS_UPPER
傳回每一字為大寫(依照國家語言
不同)
NLSSORT
決定排列順序(依照國家語言不同)
NVL(mn)
mNULL則傳回n值,否則傳回
m
NVL2(m , n , z)

POWER(m , n)
傳回mn次方
RAWTOHEX(m)
將原始值(例如A=65)進位轉換為
十六進位
REPLACE(m , n [, z] )
M字串中去除n字串以z字串取代
ROUND(d)
日期四捨五入以中午為中點
ROUND(m [, n])
算數m四捨五入,取到小數點第n
[n default=0]
ROWIDTOCHAR(m)
ROWID型態轉為字元型態
RPAD(m , n , z)
n1ength(m)z字元數填入m的右邊
RTRIM(n)
去除字串右邊的空格字元
SIGN(n)
信號的傳回,n<0 span="">則-1n=00n>0 1
SIN(n)
傳回n的正弦值
SINH(n)
傳回n的雙曲線的正弦值
SOUNDEX(m)
傳回以字串m的聲音(可做文字發音比對)
SQRT(n)
傳回n開平方根的值
STDDEV(n)
傳回標準差
SUBSTR(m , n , z)
m字串中從頭n數位開始取,取z
個字元
SUBSTRB(m , n , z)
byte方式m字串中從頭n數位開始取,取z個字元
SUM(n)
傳回加總
SYS_CONTEXT(m , n)
傳回與某一個context名稱關聯的Package spec定義的變數的值,m=context的名稱,n=變數名稱
SYS_GUID()
傳回全球獨一無二的識別碼
SYSDATE
傳回系統日期
TAN(n)
傳回n的正切值
TANH
傳回n的雙曲線的正切值
TO_CHAR(dt)
將日期格武轉換為文字格式,d=日期,t=日期型態格武
TO_CHAR(n)
將數字格式轉換為文字格式
TO_DATE(m , t)
將文字格式轉換為日期格式,m=字串,t=日期型態格式
TO_LOB(m)
LONG的資料型態轉換成LOB的資料型態
TO_MULTI_BYTE(m)
CHAR的資料型態轉換成多位元的字體
TO_NUMBER(m)
將字串轉成數字
TO_SINGLE_BYTE(m)
將多位元的字體轉換成CHAR的字體
TRANSLATE(m using n)
Char轉咸nchar
TRANSLATE(m , n [,z])
n字串尋找m字串,以z字串取代
TRIM(n)
去除字串左、右邊的空格字元
TRUNC(d [, n])
d截斷到n[n default=NULL()]n='month'截斷到月
TRUNC(m [, n])
m截斷到n[n default=0]n=-1則截斷個位為0
UID(m)
傳回目前的使用者的唯一識別碼
UPPER(n)
傳回每一字為大寫
USER
傳回使用者名稱
USERENV(m)
傳回使用者環境參數的資訊
VARIANCE(n)
傳回變異量
VSIZE(m)
傳回字串的bytes