上古時期的程式設計師, 肯定都知道handle
物件, 一般中文翻譯成控制代碼
. 一般的handle在實現上, 都是乙個整數, 而這個整數可以理解為乙個指標, 指標指向的位址呢, 又儲存了另外乙個指標. 之所以這麼搞, 是因為這樣搞可以讓真實的物件可以挪動
.
考慮乙個乙個物件a, 儲存在handle裡面, 由於某種原因, 我需要把這個物件a從原來的位置移走, 那麼移走之後的物件叫物件b, 那我只需要修改一下handle裡面的指標, 就可以保證正確性, 然後在使用者看來, 還是同乙個物件, 因為handle沒有改變.
正是因為handle這種特性, 所以可以基於handle做乙個gc系統. miloyip翻譯的那本遊戲程式設計的書裡面也講過, 之前在主機上有人用handle來管理記憶體.
而我這篇文章想說的是, handle這種特性其實還可以用在跟ui有關係的系統裡面. 試想乙個遊戲客戶端和伺服器要頻繁打交道, 然後c#這種引用語意的語言中, 很多程式設計師都會在ui層儲存乙個entity
物件, 由於一些原因, 會導致整個系統內部會出現兩個entity
物件, 其id
一樣.
你可以說這是由於程式設計師的編碼不正確, 我也確信這一點. 但是我們要從根本層面上解決這個問題, 而不是把這個問題推卸給人.
由於我們知道handle可以讓我們把物件挪動, 那麼我們也只需要在c#造這樣乙個東西就行了. 這樣在使用的時候, 只讓程式設計師用handle
來操作t
這個型別的entity
物件. 那麼系統內部, 就只會有乙個entity
.
ps:一般比如檔案描述符
/檔案
都是乙個handle, 跟os打交道的硬體資源, 一般都是handle
.
linux下, 乙個thread_t
也是控制代碼~~
再比如, sun以前實現的jvm, 乙個reference也是乙個handle.
正確理解 clear both
要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...
正確理解 clear both
原文 要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳...
正確理解 clear both
要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...