Browse by Tags

MEMO-取回Oracle Procedure Ref Cursor
[MEMO系列是老人家備忘用途的貼文,可能沒什麼營養,大家請姑且看之或逕行忽略。] 好久沒跟ORACLE纏綿惹,這陣子都在跟SQL Server廝混。這幾天接手另一個連線ORACLE的專案,在呼叫ORACLE Procedure透過Ref Cursor傳回結果時,腦中已不太記得精確寫法,只記得Ref Cursor的值可以直接用來Fill DataTable或轉成OracleDataReader,胡亂湊出程式碼,系統卻一直傳回以下錯誤: ORA-06550: line 1, column 7:.PLS...
Posted 23 July 2009 01:27 PMJeffrey | with no comments 10,819
Filed under: , ,
CODE-Reflection範例
Reflection是在執行期間才解析物件類別資訊的技術,在不少場合,要處理的物件類別在編譯時期是無法預知的,或是希望能保留彈性,以便接受包容各種物件。當傳進來的物件參數類別是object,卻又想一探它的底細,就是System.Reflection命名空間神奇工具組上場的時候。 印象中Reflection與編譯期確定型別相比,效率頗差,每次要動用時總有些畏首畏尾的。但我後來發現MS在BCL內,自己倒用Reflection用得很盡興,加上新一代的CPU愈來愈快,效能差異的顯著性正大幅降低。慢慢地我才開始比較大膽應用它解決問題...
Posted 01 December 2008 06:12 AMJeffrey | 4 comment(s) 13,844
Filed under: ,
Stopwatch.ElapsedTicks的祕密
這次的 程式魔人賽 ,在先前的範例中,用的是Stopwatch.ElapsedTicks做為計數單位。 發現一件好玩的事,我在自己的機器上用DummyPlayer來跑,每一次就算胡亂猜也要近1,000 Ticks。但我接到一組參考數字,DummyPlayer在Q9300上跑,每次大約10-20 Ticks!! 不會吧?? Q6600 輸Q9300這麼多?? 接著,更扯的事出現了,另一組DummyPlayer在PentiumD 920上的測試數據,Ticks數也不到100,我的Q6600是中了詛咒嗎...
Posted 15 August 2008 06:49 AMJeffrey | with no comments 11,539
Filed under: ,
ORACLE Transaction大車拼!
為了測試使用System.Data.OracleClient、ODP.NET(Oracle.DataAccess.Client)與 TransactionScope 三者的效能差距,我設計了以下的實驗,分別用三種方式(因ODP.NET 9207還不支援TransactionScope,所以TransactionScope搭配System.Data.OracleClient使用)將三個Insert動作包成Transaction,並各測十次。 static object obj = new object...
Posted 28 December 2007 08:04 PMJeffrey | 1 comment(s) 13,577
Filed under: , , ,
StringBuilder串接字串的迷思
大部分的.NET開發者都知道,要做大量的字串相加,StringBuilder比string相加 快上N倍 。這個效能差異源於String物件的特性,每次"動態相加"時必須捨棄原字串佔用的記憶體空間,重新配置記憶體儲存相加後的新字串內容。只是背後的原理實在曲折,於是我們腦海只會留下" 串接字串千萬要用StringBuilder,用string相加會被人笑 "的簡化結論。 前些時候協助做Code Review,看到一段SQL查詢程式出現有趣的寫法。 一般為了方便閱讀...
Posted 15 December 2007 06:38 AMJeffrey | 15 comment(s) 56,114
Filed under: ,
Finally...
上了一課! 我寫了一段Code,利用catch SqlException 偵測Deadlock , 前兩次延遲一小段時間再試,第三次則直接丟出Exception。在少數特殊情境下,程式要先切換成特定使用者身份,待處理完成後再切回系統身份。程式示意如下: 1: try 2: { 3: for ( int i = 0; i < 3; i++) 4: { 5: try 6: { 7: if (needImpersonate) 8: changeIdentity(someUser); 9: doTheProcess...
Posted 03 December 2007 12:47 AMJeffrey | with no comments 3,830
Filed under: ,
KB-Keep Your Code Thread-Safe!
前幾天幫同事看一個WinForm問題,明明有Primary Key限制的DataTable,卻冒出數筆PK相同的資料,Grid還會發狂似地不斷捲動。 由於資料的更新動作來自非UI Thread,我們首先懷疑的就是Threading Issue,不過該問題只出現在尖峰時刻資料量爆多的情境下,在測試台中怎麼都無法模擬出來,於是我設計了以下的實驗,證明忽略Thread-Safe Issue時的確會衍生類似的問題。 程式是這樣寫的,Form_Load時建立一個DataTable,並以Symbo欄位l為Primary...
Posted 21 November 2007 08:55 AMJeffrey | with no comments 17,128
Filed under: ,
TIPS-How to write an license agreement dialog?
最近有個需求,要在Windows Form中做出如下的軟體授權同意畫面,使用者必須閱讀完授權書晝面,按下"接受"才可以繼續使用。(會仔細讀軟體授權書的人請舉手! 那個戴眼鏡的胖子,你確定你有? 要誠實哦... 很好,跟我想的一樣,Nobody!) 以下是我這次想出來的寫法,有幾項特色,介紹給還不熟Windows Form的朋友參考: 第一,由於授權書圖文並茂、還有一堆排版設定,我決定用Word將它存成rtf後,再直接用RichTextBox載入,超級省事!! 第二,不想跟著一個rtf檔拖油瓶,我希望能效法綠色軟體一個EXE檔打死...
Posted 06 November 2007 11:00 PMJeffrey | with no comments 4,120
Filed under: ,
KB-UTF8Encoding And BOM
static void TestXMLWriter() { MemoryStream ms = new MemoryStream(); XmlTextWriter xtw = new XmlTextWriter(ms, Encoding.UTF8); xtw.Formatting = Formatting.Indented; XmlDocument xd = new XmlDocument(); xd.LoadXml( "<Group><User>Jeffrey</User><...
Posted 31 October 2007 12:39 AMJeffrey | with no comments 12,940
Filed under: , ,
Self Test - Value Type vs Reference Type
一個小測驗,請用大腦編譯並執行以下的程式,試著回答Q1-Q7的結果為何? 這個測驗可以檢定你是否對.NET的Value Type與Reference Type已有正確認識。 struct MyStruc { public string Name; public string Data; public MyStruc( string name, string data) { Name = name; Data = data; } public override string ToString() ...
Posted 19 October 2007 07:20 AMJeffrey | 5 comment(s) 10,269
Filed under: ,
KB-Deadlock Detection And Retrial Sample
最近在處理表單引擎的Deadlock問題,由於引擎核心以物件導向方式開發,很難為了資料庫的更新問題去挪動物件的呼叫順序。但還是努力做了調整,每天Deadlock的發生次數終於壓到個位數,但要100%避免看來是不可能的(至少以我的能力來說是如此)。既然逃不掉,就乖乖面對吧! 一般處理Deadlock的準則是Wait And Retrial,換句話說,程式邏輯本身並沒有任何錯誤,純粹是運氣不好,跟其他Process的資料庫更新作業強碰且被SQL Server挑中變成犠牲品,在絕大部份的情況下,在我們接到Exception的同時...
Posted 23 August 2007 01:57 PMJeffrey | with no comments 7,996
Filed under: , , ,
TIPS-Excute EXE And Get Its Output From .NET
如果大家跟我一樣,常整合外部程式搞一些有的沒的,那一定可以用到這個函數。 它最常見的情境是整合一些好用的命令列工具(通常是用來查詢資訊),把它辛苦執行的結果佔為已有。例如: netstat -oa可以列出機器的網路連線狀況。如果我們希望要在.NET程式中提供這類資訊,要怎麼寫? 我們當然可以設法想辦法四處張羅Library、Windows API、WMI... 在程式中實作出類似的效果。 另一種鋸箭式的思考是"撿現成"!! 由我們的程式呼叫netstat.exe, 再去解讀它的輸出結果。其實,這種Pipeline的觀念...
Posted 17 August 2007 03:20 PMJeffrey | with no comments 6,527
Filed under: , ,
Introduction To .NET Regular Expression
試想以下的情境: 公司最近要研發一套類似Google的網頁搜索引擎,你負責開發網頁擷取器核心,其中最棘手的部分是要具備由一個網頁再延伸至其所超連結出去的其他網頁… 行銷人員拿來一份十萬筆客戶地址檔,請你解析出縣市、郵遞區號、地址三個欄位轉入CRM系統,但要命的是原始資料雜亂不已,有的郵遞區號在前,有的在中間… 你加入了檢索引擎過濾器(Filter)的開發團隊,目標是將各式資料檔中的純文字部份提取出來,你的第一件任務是簡單的HTML檔案解析,但是,HTML原始碼千變萬化… 以上的挑戰當然不是每位程式開發者都有機會遭遇...
Posted 30 June 2007 08:40 AMJeffrey | 16 comment(s) 36,647
Filed under: ,
KB-SQL UDF for Compression
最近要對付一個每天狂長的痴肥資料庫,由於要保全交易相關證據供日後追查,資料表必須保存往來交換的XML原始檔案。XML格式向來以冗長囉嗦聞名,加上每日交易量愈來愈大,資料庫面臨空間不足及備份管理的壓日益沈重。於是我決定雙管齊下改善這個問題: 第一,將過期資料定期搬到另一個資料庫,就可以採行較寬鬆的備份策略,不用每天反覆備份鉅量歷史資料,時間與空間都較省。第二,我打算祭出壓縮大法,逼XML資料瘦身。 以往在.NET 1.1時代,不難找到Open Source的壓縮Library,例如: SharpZipLib...
Posted 28 April 2007 12:54 AMJeffrey | with no comments 6,619
Filed under: , ,
KB-W3SVC throw 0x800703e9 exception
今天幫忙排除一台主機的IIS問題,只要執行特定網頁,就會出現以下訊息: JIT偵錯失敗,發生以下錯誤: 存取被拒。 JIT偵錯是使用者帳戶'NT AUTHORITY\NETWORK SERVICE'所啟動。 如需詳細資訊,請在文件索引中查看'Just-in-time偵錯,錯誤'。 事實上,這是一個表面的錯誤訊息,根本的問題不在於執行權限不對,或是有人Debug Web App失敗,而是執行ASP.NET的底層的.NET程式發生錯誤所致。真正的錯誤訊息則可以在事件檢視器中看到,W3SVC發出了以下的錯誤...
更多文章 下一頁 »

搜尋

Go

<April 2017>
SunMonTueWedThuFriSat
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication