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() 的區別:
IEnumerable
/IQueryableIEnumberable接口。但IEnumerable<T> 換成IQueryable<T>後速度提升不少。緣由:
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) |
快速訪問和支持排序的折衷 |
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) |