原创 Linq系列—簡介

一、Linq簡介 Linq產生背景 在LINQ未出現之前,我們需要掌握很多針對不同數據源查詢的接口技術,對於OBJECT集合我們需要進行重複而枯燥的循環迭代。對於數據庫我們需要使用諸多T-SQL\PL-SQL之類的數據

原创 Linq系列—擴展方法

參考NET深入解析LINQ框架 C#的擴展方法解說 擴展方法就是允許在不修改類型的內部代碼的情況下爲類型添加獨立的行爲。 擴展方法的本意在於不修改對象內部代碼的情況下對對象進行添加行爲。這種方便性大大提高了我們對程序的擴展性,

原创 設計模式——代理模式

代理模式使用代理對象完成用戶請求,屏蔽用戶對真實對象的訪問。現實世界的代理人被授權執行當事人的一些事宜,無需當事人出面,從第三方的角度看,似乎當事人並不存在,因爲他只和代理人通信。而事實上代理人是要有當事人的授權,並且在覈心問題上還需要請

原创 Clean Code 閱讀總結

一、好的代碼重要順序: 1. 經過所有測試的代碼 2. 沒有重複的代碼 3. 體現系統中的全部設計理念 4. 包括儘量少的實體 例如類、方法、函數等等 5. 大師程序員把系統當成故事來講,

原创 設計模式——裝飾者模式

動態地給一個對象添加一些額外的職責。就增加功能來說,Decorator模式相比生成子類更爲靈活。不改變接口的前提下,增強所考慮的類的性能。 何時使用: 1)需要擴展一個類的功能,或給一個類增加附加責任。 2)需要動態

原创 Thread同步—鎖、信號量

一、鎖Monitor(控制每個線程之間通信的執行順) 1. Monitor(控制線程間通信順序) 說到鎖的時候通常都會想到Lock,Lock確實減少了我們不必要的勞動並且讓代碼更可觀,但是如果我們要進行控制每個線程之間通信的執

原创 XSS簡單預防

原理 跨站腳本(Cross site script,簡稱xss)是一種“HTML注入”,由於攻擊的腳本多數時候是跨域的,所以稱之爲“跨域腳本”。 我們常常聽到“注入”(Injection),如SQL注入,那麼到底“注入”是什麼?注入本

原创 設計模式——中介模式

中介模式:用一箇中介者對象封裝一系列的對象交互,中介者使各對象不需要顯示地相互作用,從而使耦合鬆散,而且可以獨立地改變它們之間的交互。 類圖: 中介者模式的結構 中介者模式又稱爲調停者模式,從類圖中看,共分爲3部分:

原创 ManualResetEven小知識點

關於ManualResetEven簡單用法: 一、構造函數 // 摘要: //用一個指示是否將初始狀態設置爲終止的布爾值初始化 System.Threading.ManualResetEvent 類的新實例。 // 參數: //

原创 設計模式——享元模式

享元模式就是如果在一個系統中存在多個相同的對象,那麼只需要共享一份對象的拷貝,而不必爲每一次使用創建新的對象。享元模式是爲數不多的、只爲提升系統性能而生的設計模式。它的主要作用就是複用大對象(重量級對象),以節省內存空間和對象創建時間。

原创 設計模式——策略模式

策略模式屬於對象的行爲模式。其用意是針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,從而使得可以根據具體場景來使用不同算法。策略模式使得算法可以在不影響到客戶端的情況下發生變化。 在軟件開發中也常常遇到類似的情況,實現某一個功

原创 C# Quartz作業調度配置

什麼是Quartz Quartz是一個開源的作業調度框架,Quartz根據用戶設定的時間規則來執行作業,使用場景:在平時的工作中,估計大多數都做過輪詢調度的任務,比如定時輪詢數據庫同步,定時郵件通知、定時關閉網上商城的用戶還未支付的訂

原创 設計模式——觀察者模式

觀察者的定義:觀察者模式(又被稱爲發佈-訂閱模式),屬於行爲型模式的一種,它定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態變化時,會通知所有的觀察者對象,使他們能夠自動更新自己。 使用場景: A

原创 設計模式——原型模式

原型模式可以動態的創建一個對象而不需要提供專門的new()操作,這無疑是一種非常有效的方式,快速的創建一個新的對象。 一、使用場景: 1、如果說我們的對象類型不是剛開始就能確定,而是這個類型是在運行期確定的話,那麼我們通過這個類型

原创 設計模式——備忘錄模式

備忘錄模式又叫做快照模式(Snapshot Pattern)或Token模式,是對象的行爲模式。 備忘錄對象是一個用來存儲另外一個對象內部狀態的快照的對象。備忘錄模式的用意是在不破壞封裝的條件下,將一個對象的狀態捕捉(Ca