技術點總結

1.(1)OLTP,基於SQL語句的數據源,利用關係型數據庫爲報表提供數據。(2)OLAP,基於數據倉庫的數據源,利用多維數據集爲報表提供數據。數據庫

2.DIctionary數組

  SortDictionary:按key進行排序,若是使用排序數據一次性填充列表,則 SortedList 比 SortedDictionary 快。安全

  SortedList:按key進行排序,SortedList 使用的內存比 SortedDictionary 少,SortedDictionary 可對未排序的數據執行更快的插入和移除操做,它的運算複雜度爲 O(log n),而 SortedList 的運算複雜度爲 O(n)。服務器

  HashTable:用於處理key/value的鍵值對,散列表,適合存儲數據類型不惟一,默認的 Hashtable 容許單線程寫入, 多線程讀取, 多線程

  DIctionary:單線程程序中推薦使用 Dictionary, 有泛型優點, 且讀取速度較快, 容量利用更充分函數

  ListDictionary:與HashTable相似,使用單向連接的表。 對於一般包含少於 10 項的集合,建議使用該實現方法性能

Setui

  HashSet<T>:這個集合類包含不重複項的無序列表,基於散列值,插入元素的操做很是快,不須要像List<T>類那樣重排集合;spa

  SortedSet<T>:有序無重複元素;線程

List

  List:數組鏈表,訪問快複雜度O(1),可是添加刪除複雜度O(n);

  LinkedList:指針鏈表(雙向鏈表),訪問複雜度是O(n),可是添加刪除很快O(1)

4.lazy

  lazy<T>:實現的就是按「需」建立,而不是按時建立,第一次執行lazy<T>.value的加載,多線程下,僅會執行一次實例化,默認線程安全

5. ToLookup() 是一個奇妙的函數,用於對一個集合進行操做,建立一個1:n 的映射。 它能夠方便的將數據分類成組,並生成一個字典供查詢使用

7. Dispose和Finalize

     Finalize的目的是用於釋放非託管的資源,而Dispose是用於釋放全部資源,包括託管的和非託管的。

 8.Tuple

9. AsEnumerable() 、AsQueryable 和 .ToList() 的區別:

  • .AsEnumerable()延遲執行,不會當即執行。當你調用.AsEnumerable()的時候,實際上什麼都沒有發生。
  • .ToList()當即執行
  • 當你須要操做結果的時候,用.ToList(),不然,若是僅僅是用來查詢不須要進一步使用結果集,並能夠延遲執行,就用.AsEnumerable()/IEnumerable /IQueryable
  • .AsEnumerable()雖然延遲執行,但仍是訪問數據庫,而.ToList()直接取得結果放在內存中。好比咱們須要顯示兩個部門的員工時,部門能夠先取出放置在List中,而後再依次取出各個部門的員工,這時訪問的效率要高一些,由於不須要每次都訪問數據庫去取出部門。
  • IQueryable實現了IEnumberable接口。但IEnumerable<T> 換成IQueryable<T>後速度提升不少。緣由:
  • IQueryable接口與IEnumberable接口的區別:  IEnumerable<T> 泛型類在調用本身的SKip 和 Take 等擴展方法以前數據就已經加載在本地內存裏了,而IQueryable<T> 是將Skip ,take 這些方法表達式翻譯成T-SQL語句以後再向SQL服務器發送命令,它並非把全部數據都加載到內存裏來才進行條件過濾。
  • IEnumerable跑的是Linq to Object,強制從數據庫中讀取全部數據到內存先

 10.多線程安全集合:

ConcurrentQueue(T)
ConcurrentStack(T)
ConcurrentDictionary(TKey, TValue)
ConcurrentBag(T)
BlockingCollection(T):線程安全的生產消費
IProducerConsumerCollection<T>

 

推薦使用場景

 

集合

順序排列

連順存儲

直接訪問方式

訪問時間

操做時間

備註

Dictionary

 

Key

Key:

O(1)

 

O(1)

訪問性能最快,不支持排序

SortedDinctionary

順序排列

Key

Key: 
O(log n)

O(log n)

快速訪問和支持排序的折衷

SortedList

順序排列

Key

Key:

O(log n)

 

O(n)

和SortedDictionary類似,只是內部用數據替代樹做爲存儲結構。

List

使用者能夠精確控制元素的位置

Index

Index: O(1)

Value: O(n)

 

O(n)

最適合須要直接訪問每個元素的少許集合。

LinkedList

使用者能夠精確控制元素的位置

不支持

Value:

O(n)

 

O(1)

最適合不須要直接訪問單個元素,可是在集合中添加/移除很是頻繁的場景。

HashSet

不支持

Key

Key:

O(1)

 

O(1)

能保持元素惟一性的集合。不支持排序

SortedSet

順序排列

Key

Key:

O(log n)

 

O(log n)

能保持元素惟一性而且支持排序。

Stack

LIFO

只能獲取頂部元素

Top: O(1)

O(1)

 

Queue

FIFO

只能獲底部元素

Front: O(1)

O(1)

相關文章
相關標籤/搜索