2011年9月16日 星期五

[ASP.NET] Performance Tuning

1. 使用 SqlCommand 搭配 SqlDataReader 時,記得先呼叫 SqlCommand.Cancel() 再呼叫 SqlDataReader.Close(),順序錯誤效能會低落很多
    (若僅呼叫 SqlDataReader.Close() 效能也會很低落)

2. 資料來源控制項的 DataSourceMode 要根據實際需求選擇
    (選擇 DataSet 模式,功能雖然強大,但耗費資訊)

3. 處理大量資料避免使用 ADO.NET Entity Framework 這一類的工具,速度很慢

2011年8月3日 星期三

[.NET] 如何不安裝 Oracle Client 並與 Oracle DB 連線

恩.......我目前手邊這一台 NB 真的很怪....無法安裝 Oracle Client....

但是我要連 Oracle 阿!! 這該怎辦ㄌㄟ....

上網找了一下,必須要在程式執行目錄(bin/)中,放入以下五個 DLL 檔案:

  1. Oracle.DataAccess.dll
  2. oci.dll 
  3. OraOps11w.dll
  4. oraociei11.dll
  5. msvcr71.dll
這些檔案可以在有安裝 Oracle Client 的電腦上找到....我是請同事找給我的.....


另外在連線字串部分,沒辦法使用 OracleDBConnectionStringBuilder 物件產生連線字串,必須用自行組成語法的方式:
string DBConnectionString = @"Data Source=(DESCRIPTION = (ADDRESS_LIST =
                                    (ADDRESS = (PROTOCOL = TCP)(HOST = 這是 Oracle Server IP)(PORT = 1521)) )
                                    (CONNECT_DATA = (SID = 這裡放SID)(SERVER = DEDICATED) ) )
                                    ;Persist Security Info=True;User ID=這是使用者帳號;Password=使用者密碼;";

最後程式中引用 Oracle.DataAccess.dll 作為參考,相關的 Oracle API 就可以使用囉!


2011年6月1日 星期三

[LINQ] 集合已修改; 列舉作業可能尚未執行??

今天同事在寫程式遇到這問題.....

問我.... LINQ 可以在 multi-thread 環境下執行嗎?? 程式起來一直有問題......

我心裡想......怎麼會不行? 如果不行,微軟不就搞了一個大飛機了..........?

後來發現其實跟 LINQ 無關,而是在進行列舉作業時不能去修改集合的值

2011年5月31日 星期二

[Windows] 修改 JVM 啟動參數

今天早上為了 H2 執行五六個小時後會出現 out of memory 的問題在頭痛...

上到 Google Group 查了一下,有人建議先把 JVM 的 heap 開大一點試試看....

於是.......問題來了,要怎麼開大??

在 Linux 裡面可以直接透過 Alias 的方式解決.......

那 Windows 呢? 答案就是設定一個名稱為 "_JAVA_OPTIONS" 的環境變數

值的部分就設定為 "-Xms512m -Xmx1024m" 應該是很夠用了....

再來繼續長時間測試 H2 看看.....

2011年5月30日 星期一

2011年5月26日 星期四

[LINQ] 如何直接更改物件集合中的物件值而不建立新物件

用過 LINQ 的人應該會對 LINQ 處理資料集合的功力印象深刻....

但....LINQ 是 Query 阿! 不是 Update!

那如果我只是要針對物件集合中的某幾個物件進行值的變更.......要怎麼作呢....??

答案是 => 只要自己撰寫一個 extension method,method 中回傳原本的物件集合

在網路上找到一個很不錯的參考範例連結:
LINQ: Select an object, but change some properties without creating a new object (Rob Volk's Blog)


以下寫了一個簡單的 sample


但有一點真的需要注意的是,這種方式只能用在物件集合中,若是用在基本型態的資料集合中(例如:整數陣列、整數 List) 則沒有效果......


2011/06/08 Updated: 

今天有找到初始化陣列的方式囉! 只要使用 extension method 就可以簡單達成了....以下為範例: