20170828-20170903C#工作學習周總結

20170828-20170903

PS:新的一個月又開始了。時間真是快啊,可是沒有時光機器。這個周做了什麼呢?不多吧,但是已經開始感覺有些喫力了,雖然看上去進度不快,但是大概是由於基礎比較差,一上手感覺是很難的題,不能按部就班,,想要快點成長,卻總會發現有各種各樣的問題還沒有解決,如同小學生翻閱中學生課本一樣,遞歸式查詢新鮮知識點,要想掌握很難,發現距離正確答案越來越遠,所謂多讀書呢,正是把這種“不確定感”降到最低,消弱“書到用時方恨少”的窘態。

Q:

在C語言中,當我們需要某個屬性的值爲空時,在程序裏要怎麼實現?

A:

有三種解決方法:

魔鬼數字——犧牲一個值來表示,比如C語言中不同類型的變量的默認賦值,說明值是不可爲空的,此時我們可以選擇一個永遠不會起爭議的值作爲空值的代表(需要注意:謹慎選擇,防止起衝突)

引用類型包裝——把值類型轉換爲引用類型,要求在堆上創建對象,但是也引出了垃圾回收問題以及不管是否被認爲是空值,都要進行裝箱,如果值因某種原因要進行裝箱。

額外布爾值——針對想要處理的每個值類型都必須要創建一個新的類型。

爲什麼要有可空類型?

在數據庫中是允許爲空的,但是在類設計的時候,int類型是不允許爲空的,你不給它賦值,它也是有默認值0的。怎麼辦?這與數據庫的設計是有衝突的,於是,就必須使用可空類型,這也就是爲什麼要有可空類型的原因。


SystemInfo 的類,它提供了一些方法,可以獲取以下系統信息:

CPU個數,CPU佔用率
可用內存,物理內存
分區信息
進程列表,結束指定進程
根據物理地址獲取 IP 地址,根據 IP 地址獲取物理地址
獲取網絡信息
查找所有應用程序標題。。。


記錄:

  1. SVN交流分享;
  2. 簡易版任務管理器——進程和性能兩個頁面

SVN交流分享

這個不必多說了,一個託管代碼的版本控制器罷了,適合多人開發環境下集中式版本控制,一臺服務器,局域網內多人共享庫文件,沒什麼特別的,與技術無關,熟能生巧,但要注意多多備份代碼,前人載過的坑不一定非得自己經歷了纔不會再犯。關於SVN僅止於此,不用多言了。

簡易版任務管理器

啊,這個真的是簡易吶,做了快一個周,還是不如人意呀~先來列列需求:

V0.1 需求:簡易版任務管理器——進程和性能兩個頁面

下午收到題目,第二天中午下班之前完成。一開始拿到這個題目的時候,還在準備SVN的講稿,無暇顧及要這個問題到底要怎麼解決纔好——雖然心裏清楚,這一定又要費神好久了,看着沒多少的內容,肯定有着老怪在後面藏着。果然到第二天中午只做出大概框架,核心部分基本沒涉及,晚上就被傳授關於解決問題的方法的方法——如何解決問題?——分解。忽視了這個問題,雖然從很大程度上來講並沒有小覷這樣的關鍵步驟——3464,於是整理思路,準備重新做,於是,第二版——

V0.2 需求:簡易版任務管理器——進程和性能兩個頁面的部分內容

看起來沒什麼差,首先畫了一張腦圖,列出工作內容、工作量以及工作進度,發現這原來是一個大工程,要解決單是一個小問題就頗費周折,更別說是多個頗費周折非簡單相加的和了,畫完腦圖的那一刻,覺得工作量不是一般的大,要解決的問題也不是一般的多,結論就是——趕緊一項一項去找,把題做完要緊!詳細可見下圖:

=======================================================================================

略見一斑。這道題呢,大的方向劃分,可以分爲控件的使用和功能的實現——幾乎所有的問題都能大概到如此地步,跟沒說一樣。

控件的使用,主要就是ListView使用,要熟悉控件而且儘快會用,這個還好,不是難點,但是也會畫實則不短的時間,一個常見的錯誤就是太過容易忽略未知錯誤,就算看起來很小很簡單的問題,解決起來居然會花那麼久,因爲會出各種意想不到的狀況,時間都去哪兒了?都在這。時日不多也無能爲力。主要要解決的問題就是右鍵菜單在列標題和內容之間的不一致,列標題的右鍵菜單是隱藏列和顯示列,那:

隱藏列要怎麼實現?

C# Listview控件使用實例

同理,顯示列,也即增加列。每一個字段都應該是一個屬性,整個一行應該是一個進程對象,一次性全部包含進去,就算沒有初始化值。

功能的實現

要說process的屬性不多那都是假的,看似是件高興的事,以爲任務管理器中的那幾列都能抓出來了,但是並沒有,有很多屬性不在其中,比如進程的描述,進程的用戶名等等,不能夠指望process的屬性值獲取到,另外一個比較頭疼的問題就是

1、32位的程序不能訪問64位的進程;

2、不管32還是64,都不能訪問系統進程的描述和路徑信息,這個很讓人頭疼啊

anyway,通過Windows提供的API,實現了訪問路徑和描述,但是那個方法到底怎麼用以及參數的設置爲什麼是那樣,一點都看不懂,做到了之輝看似會用的級別,比較大的問題是,可能這方面的代碼本身用的人少,自然不常見,自然不知道爲什麼這樣寫,但不搞懂的話,調試都沒有辦法調,於是乎——無從下手。最終通過StackOverFlow上邊的方法解決了獲取系統進程路徑訪問被拒絕的問題,同時又出現了另外一個問題——刷新很卡。這個問題確實是由於更新ListView和調用WinApi的路徑而引起的,因爲我嘗試了不刷新,窗體加載的同時加載進程列表,還是很慢,所以主要問題並不在控件本身,而應該是不能這麼去讀取路徑,但是又不會其他的方法,所以想來想去,試來試去,找了很多資料,截至現在(9月3日23:47min)並沒有一個合適的解決方案。

接下來要完成的工作:

學習C# 調用Windows API,不然單是調用就很痛苦了。

另:

學習了關於attribute的一些知識,就是經常被用來和properties混淆的那個,有一篇博文寫的不錯,拋個鏈接

深入淺出Attribute (上)——Attribute初體驗

深入淺出Attribute (中)——Attribute本質論

中的部分沒怎麼看懂~沒有領悟到神奇之處,有待繼續研究!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章