Agenda
前文
本系列文章
兩種基本索引
- Clustered Index(叢集索引)
- NonClustered Index(非叢集索引)
兩種Lookup
(如果NonClustered Index
無法滿足查詢結果執行)
- RID Lookup
- Key Lookup
本篇會介紹其他種類Index
本系列文章
兩種基本索引
兩種Lookup
(如果NonClustered Index
無法滿足查詢結果執行)
本篇會介紹其他種類Index
Index
第一個欄位至關重要它會影響資料統計值結果,Index
一般建立在查詢條件的欄位
每個
Index
都擁有自己的B+ tree
.
B+ tree
是一種資料結構這個資料結構被Index
拿來使用,關於B+ tree
網路上有很多資源可再自行尋找,所以我們來談談為什麼DataBase
會使用B+ tree
在Wiki講述B+ tree
有其中一段
B+ tree
是能夠保持資料穩定有序,其插入與修改擁有較穩定的對數時間複雜度。B+ tree
元素由下而上插入,通過最大化在每個內部節點內的子節點的數目減少樹的高度,平衡操作不經常發生,而且效率增加了。這種價值得以確立通常需要每個節點在次級儲存中占據完整的磁碟塊或近似的大小。
簡白來說B+ tree
有一個特性是他會把資料存在子頁(Leaf Page)中透過一個參考把每個子頁串聯起來,提高穩定度.
B+ tree
資料結構如下圖,這個資料結在在範圍查詢時較B tree
來的更穩定
Index
第一個欄位至關重要它會影響資料統計值結果,Index
一般建立在查詢條件的欄位
每個
Index
都擁有自己的B+ tree
.
B+ tree
是一種資料結構這個資料結構被Index
拿來使用,關於B+ tree
網路上有很多資源可再自行尋找,所以我們來談談為什麼DataBase
會使用B+ tree
在Wiki講述B+ tree
有其中一段
B+ tree
是能夠保持資料穩定有序,其插入與修改擁有較穩定的對數時間複雜度。B+ tree
元素由下而上插入,通過最大化在每個內部節點內的子節點的數目減少樹的高度,平衡操作不經常發生,而且效率增加了。這種價值得以確立通常需要每個節點在次級儲存中占據完整的磁碟塊或近似的大小。
簡白來說B+ tree
有一個特性是他會把資料存在子頁(Leaf Page)中透過一個參考把每個子頁串聯起來,提高穩定度.
B+ tree
資料結構如下圖,這個資料結在在範圍查詢時較B tree
來的更穩定
假如在系統中null
散佈在有許多地方且null
有相對應的邏輯或行為.這時候就很適合使用NullObject Pattern
來解決,已Null Object取代null
邏輯.
我們知道在.Net或Java中大部分都是參考類型,而null是參考類型的預設值,我們來看看以下程式.
1 | Person p = null; |
如果物件p
指向null
且取得p.Age
時就會throw NullReferenceException
,所以我們在使用一些參考類型物件前都會先判斷此物件是否為null,在執行後續邏輯.
在系統中某一兩個地方這樣判斷還好,但如果一直重複這樣的判斷會造成程式碼不必要的膨脹….
相較於「不帶有null邏輯」的程式碼,面對null邏輯往往需要花費更多心力.
下面有段程式碼在calculate
方法中會判斷CartModel
物件是否為null並執行相對應邏輯
假如在系統中null
散佈在有許多地方且null
有相對應的邏輯或行為.這時候就很適合使用NullObject Pattern
來解決,已Null Object取代null
邏輯.
我們知道在.Net或Java中大部分都是參考類型,而null是參考類型的預設值,我們來看看以下程式.
1 | Person p = null; |
如果物件p
指向null
且取得p.Age
時就會throw NullReferenceException
,所以我們在使用一些參考類型物件前都會先判斷此物件是否為null,在執行後續邏輯.
在系統中某一兩個地方這樣判斷還好,但如果一直重複這樣的判斷會造成程式碼不必要的膨脹….
相較於「不帶有null邏輯」的程式碼,面對null邏輯往往需要花費更多心力.
下面有段程式碼在calculate
方法中會判斷CartModel
物件是否為null並執行相對應邏輯
這三十天無法對於MVC全部原始碼做詳細介紹,我盡量在這三十篇講述MVC執行過程中重要知識點,閱讀MVC原始碼真不是很簡單事情.
但閱讀完後我對於OOP和如何合理撰寫程式碼一個系統有更深入了解(因為MVC很多地方很好運用OOP概念原則)
希望大家經過閱讀這三十篇文章可以對於IIS託管和Asp.net MVC原理有更深入了解.
Http
對於IIS Server
請求如何導向Asp.net MVC
執行Asp.net MVC
原始碼有基本了解和知道哪幾個重要類別,了解後能依照系統需要替換改寫.Asp.net MVC
用到很多設計技巧,希望大家能更了解設計模式如何運用在實戰中Dapper
,AutoMapper
,Autofac
,Json.net
…..)如果想要了解
Dapper
原理讀者我推薦去閱讀,我隊友暐翰
系列文章進階學習 ADO.NET、Dapper、Entity Framework 系列寫得很詳細且有影片教學大推!!
感謝這次可以跟IT成長團的大家一起參與並完成It邦幫忙鐵人活動.
這三十天無法對於MVC全部原始碼做詳細介紹,我盡量在這三十篇講述MVC執行過程中重要知識點,閱讀MVC原始碼真不是很簡單事情.
但閱讀完後我對於OOP和如何合理撰寫程式碼一個系統有更深入了解(因為MVC很多地方很好運用OOP概念原則)
希望大家經過閱讀這三十篇文章可以對於IIS託管和Asp.net MVC原理有更深入了解.
Http
對於IIS Server
請求如何導向Asp.net MVC
執行Asp.net MVC
原始碼有基本了解和知道哪幾個重要類別,了解後能依照系統需要替換改寫.Asp.net MVC
用到很多設計技巧,希望大家能更了解設計模式如何運用在實戰中Dapper
,AutoMapper
,Autofac
,Json.net
…..)如果想要了解
Dapper
原理讀者我推薦去閱讀,我隊友暐翰
系列文章進階學習 ADO.NET、Dapper、Entity Framework 系列寫得很詳細且有影片教學大推!!
感謝這次可以跟IT成長團的大家一起參與並完成It邦幫忙鐵人活動.
View
頁面(razor
,aspx
…)都是繼承WebViewPage<TModel>
頁面,
今天會帶大家寫一個範例完成透過Route
判斷多國錢幣符號.
在Route
設定上多一個{culture}
區塊.如果使用者沒有輸入預設使用英文(en
).
1 | routes.MapRoute( |
建立一個介面ICurrency
裡面有個方法可以取得傳入國家貨幣符號.
View
頁面(razor
,aspx
…)都是繼承WebViewPage<TModel>
頁面,
今天會帶大家寫一個範例完成透過Route
判斷多國錢幣符號.
在Route
設定上多一個{culture}
區塊.如果使用者沒有輸入預設使用英文(en
).
1 | routes.MapRoute( |
建立一個介面ICurrency
裡面有個方法可以取得傳入國家貨幣符號.
今天要分享對於ActionInvoker
進行替換成自己客制化的IActionInvoker
在MVC原始碼中有個CreateActionInvoker
方法來取得一個IActionInvoker
物件,可以看到她會先透過Resolver.GetService
從解析器中取得我們的IActionInvoker
如果沒有在new
一個AsyncControllerActionInvoker
物件.
1 | protected virtual IActionInvoker CreateActionInvoker() |
我們解析器一樣使用Autofac
容器來幫我們完成(程式碼會基於昨天Autofac
範例往上擴充)
在取得IActionInvoker
首先會透過Resolver
解析器來取得,這就提供我們一個可替換接口.
藉由這個機制讓我們可以重寫自己ActionInvoker
物件.