Time of Update: 2018-12-05
#include <iostream>#include <string>#include <conio.h>
Time of Update: 2018-12-05
阻塞與非阻塞阻塞和非阻塞是指當進程訪問的資料如果尚未就緒,進程是否需要等待,簡單說這相當於函數內部的實現區別,也就是未就緒時是直接返回還是等待就緒;所謂阻塞方式block,顧名思義,就是進程或是線程執行到這些函數時必須等待某個事件的發生,如果事件沒有發生,進程或線程就被阻塞,函數不能立即返回。例如socket編程中connect、accept、recv、recvfrom這樣的阻塞程式。再如絕大多數的函數調用、語句執行,嚴格來說,他們都是以阻塞方式執行的。所謂非阻塞方式non-block,就是進程
Time of Update: 2018-12-05
記憶體管理記憶體管理一直是令C++程式員最頭疼的工作,C++繼承了C的那種高效而又靈活的指標,使用起來稍微不小心就會導致記憶體泄露,“野”指標,訪問越界等問題。曾幾何時,C++程式員曾經無限的嚮往Java,C#等語言的記憶體回收機制。雖然C++標準提供了智能指標std::auto_ptr,但並沒有解決所有問題。電腦系統中資源有很多種,記憶體是我們最常用到的,此外還有檔案描述符,socket,作業系統handle,資料庫連接等等,程式中申請這些資源後必須及時歸還系統,否則就會產生難以預料的後果。智
Time of Update: 2018-12-05
VC環境OpenSSL安裝以及編程過程 SSL就是Secure Sockets Layer,是一種安全通訊端協議,詳情請參考連結中的介紹。 配置過程中需要產生一些mak檔案,這些產生代碼用perl指令碼產生,所以要安裝一個ActivePerl ActivePerl:http://www.activestate.com/activeperl/ openss:http://www.openssl.org/ (本文使用openssl-1.0.0-beta5)
Time of Update: 2018-12-05
MFC類庫相關的標頭檔stdafx.h:不是類庫的標頭檔,可以稱為項目的標頭檔,在其中包含了一些MFC標準標頭檔(如:windows.h,afxwin.h),預先編譯,以後該工程編譯時間,不再編譯這部分標頭檔,僅僅使用先行編譯的結果(產生projectname.pch)。這樣可以加快編譯速度,節省時間。Afxwin.h:MFC核心組件和標準組件Afxext.h:MFC擴充Afxcmn.h:MFC對Windows 公用控制項的支援Afxdisp.h:MFC自動化類Afxdtctl.h:MFC對In
Time of Update: 2018-12-05
問題在物件導向系統的分析與設計過程中經常會遇到這樣一種情況:對於某一個商務邏輯(演算法實現)在不同的對象中有不同的細節實現,但是邏輯(演算法)的架構(或通用的應用演算法)是相同的。Template提供了這種情況的一個實現架構。Template模式是採用繼承的方式實現這一點:將邏輯(演算法)架構放在抽象基類中,並定義好細節的介面,子類中實現細節。template模版模式:很多資料也稱templateMethod(模板方法模式)。定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。Templat
Time of Update: 2018-12-05
OpenSSLopenSSL 不僅僅是 SSL。它可以實現訊息摘要、檔案的加密和解密、數位憑證、數位簽章和隨機數字。關於 OpenSSL 庫的內容非常多,遠不是一篇文章可以容納的。OpenSSL 不只是 API,它還是一個命令列工具。命令列工具可以完成與 API 同樣的工作,而且更進一步,可以測試 SSL 伺服器和客戶機。伺服器編寫步驟源碼:建立win32空項目SSL_Server//SSL_Server.cpp#include <iostream>#include
Time of Update: 2018-12-05
問題沒有人想犯錯誤,但是沒有人能夠不犯錯誤。犯了錯誤一般只能改過,卻很難改正(恢複)。世界上沒有後悔藥,但是我們在進行軟體系統的設計時候是要給使用者後悔的權利(實際上可能也是使用者要求的權利:)),我們對一些關鍵性的操作肯定需要提供諸如撤銷(Undo)的操作。那這個後悔藥就是Memento模式提供的。memento備忘錄模式在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外儲存這個狀態。這樣以後就可將該對象恢複到儲存的狀態。解析:Memento模式中封裝的是需要儲存的狀態,當需要恢複
Time of Update: 2018-12-05
問題每個人,事物在不同的狀態下會有不同的表現(動作),而一個狀態又會在不同表現下轉移到下一個不同的狀態(State)。最簡單的一個生活中的例子就是:地鐵入口處,如果你放入正確的地鐵票,門就會開啟讓你通過。在出口處也就是檢票,如果正確你就OK,否則就不讓你通過。當狀態數目不是很多的時候,switch/case可能可以搞定,但是當數目很多的時候(實際系統中也正是如此),維護一大組的switch/case語句將是一件異常困難並且出差的事情。狀態邏輯和動作實現沒有分離。在很多的系統實現中,動作的實現代碼
Time of Update: 2018-12-05
builder建造者模式將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。Builder:這個基類是全部建立過程的抽象,提供構建不同組成部分的介面函數BuildPartA,BuildPartB:是對一個對象不同部分的構建函數介面,Builder的衍生類別來具體實現。Director::Construct():這個函數裡面通過調研上面的兩個介面函數完成對象的構建,也就是說各個不同部分裝配的過程都是一致的(同樣的調用Construct()),但是不同的構建方式會有不同的表示(
Time of Update: 2018-12-05
sprint()功能1.把其他類型的資料轉化成字串2.字串串連 #include <windows.h> #include <stdio.h>int main(){/*sprintf原型:int _cdecl sprintf(char* _Dest,const char*
Time of Update: 2018-12-05
Bridge橋接模式將抽象部分與它的實現部分分離,使它們都可以獨立地變化。解析1.Abastrction:某個抽象類別,它的實現方式有Implementor完成2.Implementor:實作類別的抽象基類,定義了實現Abstraction的基本操作,而它的衍生類別實現這些介面3.Implementor::OperationImp:定義了為實現Abstract需要的基本操作,有Implementor的衍生類別實現,而在Abstraction::operation函數中根據不同的指標多態調用這個函
Time of Update: 2018-12-05
在overlay裡可以包括2D和3D元素。這些元素必須以如下關鍵字開頭:'element' 不能再嵌套其它元素的2D元素。'container' 可嵌套2D元素和container的容器。'entity' 3D元素,只能放在overlay裡,不能嵌套在其它容器中。 //CeShi.overlay檔案 overlay模板及繼承template container Panel(Template/TreeRootCS){ template container
Time of Update: 2018-12-05
問題Strategy模式和Template模式要解決的問題是類似的,都是為了給商務邏輯(演算法)具體實現和抽象介面之間的解耦。Strategy模式將邏輯(演算法)封裝到一個類(Context)裡面,通過組合的方式將具體演算法的實現在組合對象中實現,再通過委託的方式將抽象介面的實現委託給組合對象實現。State模式也有類似的功能。Strategy策略模式定義一系列的演算法,把它們一個個封裝起來, 並且使它們可相互替換。本模式使得演算法的變化可獨立於使用它的客戶。解析:簡而言之一句話,Strateg
Time of Update: 2018-12-05
什麼是COM組件COM是Component Object Model(元件物件模型)的縮寫。COM組件是以WIN32動態連結程式庫(DLL)或可執行檔(EXE)形式發布的可執行程式碼群組成什麼是GUIDglobally unique identifier(GUID——全球唯一識別碼) 分配給COM對象的標識符(ID)。它通過一種複雜的演算法產生,該演算法保證所有 的
Time of Update: 2018-12-05
記憶體池"池"是電腦技術中經常使用的一種設計模式,其內涵在於:將程式中需要經常使用的核心資源先申請出來,放到一個池內,由程式自己管理,這樣可以提高資源的使用效率,也可以保證本程式佔用的資源數量。經常使用的吃技術包括記憶體池,線程池,串連池等。其中以記憶體池和線程池使用最多。記憶體池:簡單來說,記憶體池預先分配了一塊打的記憶體空間,然後就可以在其中使用某種演算法實現高效快速的自定製記憶體配置。pool庫boost.pool庫基於簡單分隔儲存思想實現了一個快速、緊湊的記憶體池庫,不僅能夠管理大量的對
Time of Update: 2018-12-05
一、基本概念映像是由數位相機、掃描器、攝像機等輸入裝置捕捉實際的畫面產生的數位影像,是由像素點陣構成的位元影像,圖片格式有png,bmp,jpg,jpeg,gif。位元影像是象素集合,又稱光柵圖,一般用於照片品質的影像處理,是由許多像小方塊一樣的像素組成的圖形。由像素的位置與顏色值表示,能表現出顏色陰影的變化。圖形是指由外部輪廓線條構成的向量圖。即由電腦繪製的直線、圓、矩形、曲線、圖表等;
Time of Update: 2018-12-05
Adapter適配器模式將一個類的介面轉換成客戶希望的另外一個介面。A d a p t e r模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。雙方都不適合修改的時候,可以考慮使用適配器模式。Adapt模式其實就是把完成同樣的一個功能但是介面不相容的類橋接在一起使之可以在一起工作,這個類使得複用舊的介面成為可能。小demoadapter.h#ifndef ADAPTER_H#define ADAPTER_H// 需要被Adapt的類class
Time of Update: 2018-12-05
command命令模式Command模式通過將請求封裝到一個對象(Command)中,並將請求的接收者存放到具體的ConcreteCommand類中的(reciver)中,從而實現叫用作業的對象和操作的具體實現之間的解耦。解析:Command模式的思想是把命令封裝在一個類(Command)中,同時把接收對象也封裝在一個類(Receive)中,由調用這個命令的類(Invoker)來調用。其實,如果弄清楚了Command模式的原理,就會發現其實它和註冊回呼函數的原理很相似,而在面向過程的設計中的回呼
Time of Update: 2018-12-05
問題舉一個生活中的小例子,大凡開個學或畢過業的都會體會到這樣一種鬱悶:你要去n個地方辦理n個手續。但是實際上我們需要的就是一個最後一道手續的證明而已,對於前面的手續是怎麼辦的,到什麼地方辦理我們都不感興趣。facade面板模式為子系統的一組介面提供一個一致的介面, 使使用者使用起來更加方便。Facade模式在高層提供了一個統一的介面,解耦了系統。設計模式中還有另一種模式Mediator也和Facade有類似的地方。但是mediator主要目的是對象間的訪問的解耦(通訊時候的協議)。小demofa