Time of Update: 2017-02-27
先介紹函數,我們一共要用到三個函數,fopen,fread,fwrite。二進位讀寫的順序是用fopen以二進位方式開啟讀寫檔案,然後使用fread和fwrite兩個函數將資料寫入二進位檔案中。下面我們看看一個拷貝程式的源碼:Copy.c:#include <stdio.h>#include <stdlib.h> #define MAXLEN 1024 int main(int argc, char *argv[]) { if( argc
Time of Update: 2017-02-27
用慣了linux下的GCC編譯工具,倒喜歡起命令列的方式編譯連結C程式,居然還發現我裝的VS工具沒看到直接編譯C程式的工具(我不太熟悉這個)。VS的編譯檔案命令是cl,連結命令是link。參考了網上資料,採用提取VS的編譯器檔案組成一個可以命令列方式編譯器的工具。以下為步驟:1,在自己目錄建立檔案夾,如:D:/vctool;2,將VS安裝目錄下的VC目錄下的bin、lib、include目錄考到vctool目錄下;3,將c:/Program Files/Microsoft
Time of Update: 2017-02-27
哈夫曼樹的介紹Huffman Tree,中文名是哈夫曼樹或霍夫曼樹,它是最優二叉樹。定義:給定n個權值作為n個葉子結點,構造一棵二叉樹,若樹的帶權路徑長度達到最小,則這棵樹被稱為哈夫曼樹。這個定義裡面涉及到了幾個陌生的概念,下面就是一顆哈夫曼樹,我們來看圖解答。(01)
Time of Update: 2017-02-27
在C++/CLI中,代理是對函數進行封裝的對象;而事件是一種為客戶程式提供通知的類機制。在前幾篇文章中,已經多次示範了如果讓一個控制代碼在不同的時間,被引用至不同的對象,從而以更抽象的方法來解決程式中的問題,但是,也能使用代理通過函數來達到同樣的效果;代理是封裝了函數的一個對象,且對執行個體函數而言,也能通過特定的執行個體,與這些函數發生聯絡。一旦一個代理封裝了一個或多個函數,你就能通過代理來調用這些函數,而無須事先瞭解封裝了哪些函數。請看例1中的代碼,在標號1中,定義一個代理類型Del,由於使
Time of Update: 2017-02-27
上篇介紹了MapX的部分基本使用代碼,包括放大、縮小、縮放到初始大小(全圖)、平移、矩形選擇、 圓形選擇、箭頭、開啟圖層對話方塊 、開啟ActiveX屬性對話方塊 、添加符號等基本作業碼,本篇繼續探 討一些控制項的基本操作。MapX提供的標準工具,不同的工具將會使滑鼠能夠完成多種任務。例如 ,如果當前的工具設成 miLabelTool,那麼當單擊滑鼠時,會在此特指的地圖對象上放置標籤。滑鼠游標 將根據正使用的工具更改形狀。MapX 可用的標準工具列表如下所示:
Time of Update: 2017-02-27
上一個文章提到了"硬體體系"相關的話題,今天來說說和作業系統相關的話題 。C++跨平台開發中和OS相關的瑣事挺多,所以今天會囉嗦比較長的篇幅,請列位看官見諒 :-)為了不繞口,以下把Linux和各種Unix統稱為Posix系統。★檔案系統(FileSystem以下簡稱FS)剛開始搞跨平台開發的新手,多半都會碰上和FS相關的問題。所以先來聊一下FS。歸納下 來,開發中容易碰上的FS差異主要有如下幾個:目錄分隔字元的差異;大小寫敏感的差異;路
Time of Update: 2017-02-27
建構函式與解構函式是一個類中看似較為簡單的兩類函數,但在實際運用過程中總會出現一些意想不到的運行錯誤。本文將較系統的介紹建構函式與解構函式的原理及在C#中的運用,以及在使用過程中需要注意的若干事項。一.建構函式與解構函式的原理作為比C更先進的語言,C#提供了更好的機制來增強程式的安全性。C#編譯器具有嚴格的型別安全檢查功能,它幾乎能找出程式中所有的文法問題,這的確幫了程式員的大忙。但是程式通過了編譯檢查並不表示錯誤已經不存在了,在“錯誤”的大家庭裡,“語法錯誤
Time of Update: 2017-02-27
好的軟體能夠適應變化。它提供新的特性,適應到新的平台,滿足新的需求,處理新的輸入。新的函數將被加入到函數庫中,新的重載將發生,於是要注意那些含糊的函數調用行為的結果;新的類將會加入繼承層次,現在的衍生類別將會是以後的基類,並已為此作好準備;將會編製新的應用軟體,函數將在新的運行環境下被調用,它們應該被寫得在新平台上運行正確;程式的維護人員通常不是原來編寫它們的人,因此應該被設計得易於被別人理解、維護和擴充。這麼做的一種方法是:用C++語言自己來表達設計上的約束條件,而不是用注釋或文檔。例如,
Time of Update: 2017-02-27
我這篇文章的主旨是介紹一部分類和介面的高品質設計的準則。這些準則不但應該保證設計並且實現的類或者介面本身有高品質代碼,而且更重要的是在工業領域應該儘可能的使代碼的更新和維護不影響客戶的活動,主要也就是保持二進位代碼相容(binary compatibility)和原始碼相容(source
Time of Update: 2017-02-27
1、什麼是sizeof首先看一下sizeof在msdn上的定義:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.看到return這個字眼,是不是想到了函數?錯了,sizeof不是一個函數,你見過給一個函數傳參數,
Time of Update: 2017-02-27
作為一個長篇的C++入門教程,無論如何也應該有這麼個引言,可是文筆並不好的我,想了很久也不知道該如何寫。。。。。。仔細想想,與其把這篇短文當作教程的引言,其實它更應該是一篇引導初學者步入C++殿堂的策論。幾年並不算很長的編程經驗,使我感觸頗深,痛苦迷茫,以及成功後的喜悅一直交替著伴隨我,愛好編程的我,在學習期間也被很多很多學習的困難疑惑所阻擋,甚至不只一次的想放棄。讓我初次領略到作為一個程式員應該有快樂與喜悅的是VISUAL
Time of Update: 2017-02-27
意圖用原型執行個體指定建立對象的種類,並且通過拷貝這些原型建立新的對象。情境遊戲情境中的有很多相似的敵人,它們的技能都一樣,但是隨著敵人出現的位置不同,這些人的能力不太一樣。假設,我們現在需要把三個步兵組成一隊,其中還有一個精英步兵,能力特別高。那麼,你或許可以建立一個敵人抽象類別,然後對於不同能力的步兵建立不同的子類。然後,使用Factory
Time of Update: 2017-02-27
最近,應邀為朋友公司新招聘來的新員工進行C#培訓,由於項目要人相當緊,可以用於培訓的時間不是很多——大概只有2到3周——而且要求員工能夠跟著老員工上手寫Code。新員工完全是大學電腦相關專業本科畢業,經初步測試,得知水平比較平均。這樣的培訓對自己也是一種考驗。本文的目的是與大家探討在這樣一種情況下學習C#的最快速方法。一.培訓的時間長度和課時安排1.時間長度:3周2.課時安排:每周二、五晚上7:00 –
Time of Update: 2017-02-27
看了C#的事件,發覺跟學java時見到的觀察者模式相似,網上搜了一下,有總結的帖 子,轉載如下namespace MyCollections{ using System.Collections; //------------------------------------------------------------------------ ----- //該委託定義相當於觀察者模式中的 Notify()函數, //用來通知觀察者關於subject 的變化
Time of Update: 2017-02-27
"null coalescing" operator 是c#新提供的一個操作符,這個操作符提供的功能是判斷左側的運算元是否是null,如果是則返回結果是右側的運算元,非null則返回左側的運算元。我們可以看下下面的這幾個樣本來看看這個操作符的使用方法:string message = "Hello World";string result = message ?? "null"; //這裡的result的內容是 Hello
Time of Update: 2017-02-27
Code 1:用一個System.Web.UI.HtmlControls.HtmlInputFile去handle檔案選取。以下是button click event中的code,用來執行當檔案選取了之後讀取檔案的內容。1 System.Web.HttpPostedFile input = Request.Files[0];23 if (input != null && input.ContentLength !=
Time of Update: 2017-02-27
CLR提供了可以區分類型的Equality 和Identity能力。l Equality:如果兩個對象是相同的類型,並且它們各內建有相同和等值的屬性。(They are instances of the same type and if each of the fields in one object matches the values of the fields in the other object)Equality必須滿足三個必要條件:reflexive, symmetrics,
Time of Update: 2017-02-27
C#靜態方法有什麼弊端? 我們在實際的開發過程中會注意到C#靜態方法對於我們程式的影 響,那麼有哪些C#靜態方法使用的體會呢?這裡我們來看看一些方面:C#靜態方法使用中遇到的問題:在源碼工程中幾乎沒有看到什麼靜態方法,但是在Ms的SQLHelper中幾乎全部使用的是靜 態方法,為什麼會這樣呢?我們來看看有以下的幾種可能:1、在一些系統中使用非常頻繁的方法都使用靜態方法可以提高系統效能我是這麼認為的 :)2、本身不可升級, 重寫
Time of Update: 2017-02-27
WMI不僅可以擷取想要的電腦資料,而且還可以用以遠端控制。遠端控制電腦不僅是駭客們的夢想,也是大多數網路管理者所渴望得到的,尤其在現代的網路中,每一個網路管理者所面對的區域網路,都是由一個龐大的電腦群組成,如果有效管理網路的每一台電腦就顯得格外重要了。目前網路管理軟體通常的做法是,在遠端電腦上運行用戶端背景程式,在本機電腦上運行一個伺服器端前台控製程序,通過這二個程式直接的通訊實現對電腦的遠端控制。這種作法的缺點是十分明顯的,當用戶端關閉了背景程式,這種遠端管理就無法實現了,所以為了克服這個缺點
Time of Update: 2017-02-27
對一個伺服器程式想統計每秒可以處理多少資料包,要如何做?答案是用處理資料包的總數,除以累記處理資料包用的時間。這裡要指出的是, 運行一段程式,使用的cpu時間,跟實際啟動並執行時間是不一樣的。附例如下:private void ShowRunTime() { TimeSpan ts1 = Process.GetCurrentProcess().TotalProcessorTime; Stopwatch stw = new Stopwatch(); stw.