這些天寫的技術微博


 

為什么類型和實例對象都要類型對象指針方法和類型所需的內存是在一起分配的,方法被類型和實例對象共享,在實例化一個對象的時候不會為方法分配內存,而調用方法時只能通過類型對象指針定位到方法表中相應的方法,進行調用

 

==Equals的區別:值類型他們的效果是一樣的,因為值類型分配在線程棧上,存的就是值,直接比較的就是值引用類型:==判斷是否指向同一個地址;Equals比較的是變量所指的內存中的數據是否相同

 

Dictionary時間復雜度:AddContainsKeyRemoveTryGetValueO(1),只有ContainsValueO(n);因為前者根據哈希算法直接定位到數組索引,而后者卻要遍歷數組做比較;RemoveAdd並沒有發生數組元素的移動,數組是預先分配好的,Add只是填充,而Remove只是將對應的元素都置為初始狀態

 

不要把動態的內容存在不能修改的緩存中,如存在靜態字段中,如果內容改了,緩存中內容卻改不了,如果存在靜態字段中,可以隔一段時間更新一下,或者讓你的緩存依賴某個文件。總之要讓自己可以控制緩存中的內容

 

int映射到FCLSystem.Int32,string映射到FCLSystem.String,他們沒有區別,相當於using int=System.Int32

 

值類型賦值是逐一對字段賦值,將一個很大的結構體當做實參傳遞是很低效的,如果這個結構體有1000個字段,那就要賦值1000次,而引用類型賦值,只是修改指針指向,說明將Class修改成Struct並不一定能提升性能,struct的類型實例一定要小

 

拆箱其實是一個獲得一個指針的過程,該指針指向對象的數據部分,緊接其后是一個賦值動作,拆箱就是把引用類型賦給值類型,其實是賦給一個中間變量,然后你就可以調用值類型的方法了

 

foreach循環讀取數組中的元素的同時添加或刪除元素,都會報InvalidOperationException異常,因為添加和刪除都會修改字段version的值,而MoveNext里面會判斷version的值和數組元素的個數是否發生變化,如果發生變化就報這個異常 

 

為什么類型和實例對象都要類型對象指針 方法和類型所需的內存是在一起分配的,方法被類型和實例對象共享,在實例化一個對象的時候不會 為方法分配內存,而調用方法時只能通過類型對象指針定位到方法表中相應的方法,進行調用

 

效率:靜態方法>實例方法>虛方法 1:靜態方法不需要判斷對象是否為空,而實例方法需要判斷調用該方法的對象是否為空 2:虛方法有一些額外代碼,用於判斷是調用父類的方法還是調用子類的實例方法。實例方法和虛方法都要進行非空檢查,若為null,就會拋出你常見的NullReferenceException,而靜態方法不需要進行非null檢查,你見過調用靜態方法拋這個異常嗎?

 

金字塔、錐形結構、樹形結構有很好的穩定性,能很好的分散壓力負載

 

想了幾十分鍾沒有找到好的解決方法,吃完飯后瞬間就找到了好的方案,感覺思路非常清晰,這就是正確的答案

 

 一個簡單的防攻擊類

 

DataTable 轉換成 List

 

作者:陳太漢

博客:http://www.cnblogs.com/hlxs/

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM