Time of Update: 2018-12-07
學些了一段時間的單元測試(NUnit),對於小型的項目還用得馬馬虎虎,覺得在介面跑單元測試還是很容易上手的.但是最近深入瞭解了一些關於單元測試的理論,知道一個好的單元測試並不是靠手動去執行的,而是應該自動的執行.為了學得更加專業點,同時也想看看這個代碼的自動編譯是怎麼回事.最終牽涉到了NAnt.這個工具早已聽說過,就是沒有用過,還一直覺得用起來會很麻煩,畢竟用習慣了IDE.簡單學習了一下NAnt,發現這個工具似乎與NUnit有著緊密的相聯,更覺得有趣的是NAnt以一種任務式的方式去執行項目編譯,
Time of Update: 2018-12-07
最近編程時遇到一個問題:有一組對象,要求隨機地訪問其中每一個對象,並且每個對象只訪問一次。如果我們將訪問順序轉換為一組整數序列,那麼這就是一個關於“非重複隨機序列產生演算法”的問題。本文將探討這個問題的多種解法,並給出一個非常高效的演算法。 【問題描述】:有一個自然數N,希望得到一個整型序列,該序列包含N個整數,從0到N-1,呈隨機分布狀態,且不重複。 【問題分析】:產生隨機數是簡單的,關鍵是,如何保證不重複呢?一般來說,我們有兩種思路:
Time of Update: 2018-12-07
上接方法一實現的第二種方法是利用企業庫提供的針對WCF程式的validation
Time of Update: 2018-12-07
最近在封裝Excel組件,需要提供兩個介面,分別根據單元索引和單元名稱訪問儲存格。例如,GetCell(1,
Time of Update: 2018-12-07
在Visual Studio .NET中,一個解決方案可以包含多重專案,一個項目可以引用若干其它項目。編譯的時候,VS會自動確定每個項目的編譯順序。VS究竟是如何計算出這個順序的呢?如果學習過資料結構,可以很容易回答出這個問題:拓撲排序(Topological Sort)。 什麼是拓撲排序?讓我們來溫習一下。百度百科上的介紹如下:對一個有向非循環圖(Directed Acyclic Graph簡稱DAG)G進行拓撲排序,是將G中所有頂點排成一個線性序列,使得圖中任意一對頂點u和v,若<u,
Time of Update: 2018-12-07
任何程式都離不開對異常的處理,良好的異常處理方式可加快尋找出異常的根源,同時也需要避免暴露敏感資訊到異常中。WCF這種典型的服務端和用戶端互動的程式,服務端的異常更需要適當的處理。下面以一個簡單的服務為例,說明WCF中處理異常的方式。WCF服務定義如下,很明顯方法Divide在divisor為0的時候將會拋出異常View Code public class CalculateService : ICalculateService { public int Divide(
Time of Update: 2018-12-07
這裡說的非同步編程並不是AJAX等的Web非同步編程,而僅僅是DotNet中多線程的非同步編程.這種多線程的非同步編程主要用來解決某些受計算操作影響而引起主線程阻塞的問題.讓程式(主要是表單應用程式)看跑得更流暢.在dotnet的CLR以及API方法中有簡單易用的方法供我們實現非同步編程,並且都有相似的調用方法,諸如BeginXXX,EndXXX,IAsyncResult對象,同時也都涉及到回調,委託等操作.下面是一些簡單的應用1.非同步IO操作,基本上就是按參數傳遞非同步IOCode
Time of Update: 2018-12-07
今天碰到了一個不可思議的bug,新增的controller中任何action都無法訪問,都是返回404錯誤。一般這種錯誤要麼是拼字錯誤,要麼是不小心給action加了post屬性,但是經過初步的排查,沒有發現問題。而原有的controller中任何action都訪問正常,新增的action也沒有問題,但是換到新建立的那個controller中,問題就出現。於是問題定位在新增的那個controller中。於是翻開mvc的教程,仔細回顧了一下MVC中路由定位controller和action的過
Time of Update: 2018-12-07
很久沒有做xml方面的解析,今天接到一個小任務,需要解析xml裡面的欄位內容,順帶複習了一下xpath方面的知識。需要解析的xml是那種待namespace的文檔,一開始解析就碰到問題,我就感覺是命名空間在作怪,印象中之前也處理過這種問題,但時間久遠,都忘記了,也沒有記錄下來。折騰了一會總算找到了方法,.NET中讀取帶xml命名空間的xml文檔的方式確實麻煩,不夠直接。不管怎樣,還是記錄一下解決方案,省得以後又要被折騰一次。View Code
Time of Update: 2018-12-07
最近在學習WCF,返回datatable的時候老是出現“An error occurred while receiving the HTTP response to http://localhost:9999/calculatorservice. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request
Time of Update: 2018-12-07
Bing是微軟公司的一款搜尋引擎,跟一般的搜尋引擎一樣提供一些常規的搜尋功能,至於是否足夠強大,那就得看使用者的實際需求了。像其他搜尋引擎一下,bing也為開發人員提供了調用搜尋服務的api,鼓勵開發人員進行一些第三方的搜尋工具的開發,詳情可登陸http://www.bing.com/toolbox/bingdeveloper/瞭解。codeproject最近有一篇文章介紹了如何使用bing
Time of Update: 2018-12-07
mvc架構中有個聽起來很不錯的功能,那就是在form提交後,能夠自動給實體賦值,只要屬性名稱和html的元素名相同即可,基本上能夠實現常見的實體內容綁定,修改等等,而且還具備自動的表單錯誤驗證功能。如此強大的功能,應該能使開發更有效率,但在使用方面還是有些小麻煩。 mvc架構中將form的values自動賦值到實體中的主要調用方法是TryUpdateModel,關鍵的輔助類是FormCollection。大部分的工作都在FormCollection中完成,傳遞給contoller方法的Fo
Time of Update: 2018-12-07
一些經典.net面試題裡,經常會有關於new關鍵字的考察,其中肯定會問到new關鍵字用在方法前有什麼用之類的,通常同學們都能答出是阻斷繼承或者說是為了表明與父類同名方法獨立開。但是進一步詢問為什麼或講講原理時,大部分的猿人還是回答不上來的。下面簡單分析一下,個人理解的實現原理。從一個經典的面試代碼題入手,有如下題目(估計面霸們一看就知道答案了) View Code
Time of Update: 2018-12-07
const和readonly關鍵字也是面試中經常考到的問題,通常都是用來表示一個不可變的變數成員,那麼具體區別是什嗎?從用法上說,const只能以inline代碼的形式定義,而readonly既可以以inline代碼形式定義也可以通過構造方法定義。CLR中定義,readonly的變數只能在構造方法中賦值,而C#中inline代碼實際上是構造方法調用的一部分,因此readonly的變數可以以inline的方式賦值。以上是文法方面的應用,那在實際上的用法上,還是有些微妙的變化,通常不易發覺,請看下面
Time of Update: 2018-12-07
中午沒事,把去年剛畢業那會畫的幾張圖翻出來了,大概介紹Winform應用程式啟動並執行過程,以及TCP協議在Winform中的應用。如果有Windows訊息機制等基礎,很好理解這兩張圖。(1)Winform應用程式運行結構圖(2)TCP通訊協議在Winform程式中的應用熟悉整個程式的來龍去脈,編程的時候就會很輕鬆,不會雲裡霧裡。另附公司招聘面試題一份,用了幾次,發現效果不好,不知啥原因1.簡述介面、抽象類別的區別。2.簡述重載(overload)與重寫(override)的區別。3.對OO思想
Time of Update: 2018-12-07
昨天在調試WCF服務時,碰到個異常,異常資訊都讓人看不懂。之前也沒碰到過,折騰了一會才弄明白原因。 像往常一樣建立一個WCF庫,就是可直接調試的那種WCF服務。然後加入了一個服務,該服務還用到了複雜自訂類型作為DataContract,並像往常一樣啟動調試,居然蹦出了一個錯誤提示框,裡面有一些錯誤資訊, 命名空間“TestNamespace.System”中不存在類型或命名空間名稱“Runtime”(是缺少程式集引用嗎?),如:其中TestNamespace.System命名空間下是複雜類
Time of Update: 2018-12-07
最近在學習WCF技術,在學習到WCF拓展時,發現一個奇怪的問題。就是在使用自訂拓展元素時,如果按照下面的方式在設定檔註冊拓展元素(設定檔手寫):<add name="ContextPropagationExtension" type="HXW.WCF.Extension.ContextPropagationBehaviorElement, HXW.WCF.Extension, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /&
Time of Update: 2018-12-07
最近在改進一個wcf程式時碰到了一個常見的問題,監聽連接埠號碼衝突。按道理這種問題多半發生在同一個監聽程式開了多個或者有其他程式佔用了連接埠號碼引起的。於是按照常規的方式去檢查,原以為一個很容易解決的問題,折騰了一小會沒找出原因,以至於重啟電腦這樣的伎倆也用上了還沒解決。懷疑是不是程式太複雜了,於是對程式進行了精簡,僅保留了wcf相關的配置內容,如下:原設定檔 1 <configuration> 2 <system.serviceModel> 3
Time of Update: 2018-12-07
WCF中支援自訂behavior,可通過配置的方式給endpoint或者service設定behavior。配置方法就是在system.serviceModel/extensions/behaviorExtensions節點下註冊自訂的behavior,之後就可以在behaviors節點中使用。註冊的配置如下註冊自訂Behavior 1 <extensions>2 <behaviorExtensions>3 <add
Time of Update: 2018-12-07