Time of Update: 2017-01-19
一:C#串連SQL資料庫複製代碼 代碼如下:Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User
Time of Update: 2017-01-19
迴圈鏈表設計與API實現基本概念迴圈鏈表的定義:將單鏈表中最後一個資料元素的next指標指向第一個元素迴圈鏈表擁有單鏈表的所有操作 建立鏈表 銷毀鏈表 擷取鏈表長度 清空鏈表 擷取第pos個元素操作 插入元素到位置pos 刪除位元置pos處的元素新增功能:遊標的定義在迴圈鏈表中可以定義一個“當前”指標,這個指標通常稱為遊標,可以通過這個遊標來遍曆鏈表中的所有元素。迴圈鏈表新操作將遊標重設指向鏈表中的第一個資料元素CircleListNode*
Time of Update: 2017-01-19
基本概念鏈式儲存定義:為了表示每個資料元素與其直接後繼元素之間的邏輯關係,每個元素除了儲存本身的資訊外,還需要儲存指示其直接後繼的資訊。表頭結點:鏈表中的第一個結點,包含指向第一個資料元素的指標以及鏈表自身的一些資訊。資料結點:鏈表中代表資料元素的結點,包含指向下一個資料元素的指標和資料元素的資訊。尾結點:鏈表中的最後一個資料結點,其下一元素指標為空白,表示無後繼。鏈表技術領域推演鏈錶鏈式儲存_api實現分析:在C語言中可以用結構體來定義鏈表中的指標域,鏈表中的表頭結點也可以用結構體實現;帶頭結
Time of Update: 2017-01-19
異常處理基本思想C++的異常處理的基本思想大致可以概括為傳統錯誤處理機制、通過函數傳回值來處理錯誤。1)C++的異常處理機制使得異常的引發和異常的處理不必在同一個函數中,這樣底層的函數可以著重解決具體問題,而不必過多的考慮異常的處理。上層調用者可以再適當的位置設計對不同類型異常的處理。2)異常是專門針對抽象編程中的一系列錯誤處理的,C++中不能藉助函數機制,因為棧結構的本質是先進後出,依次訪問,無法進行跳躍,但錯誤處理的特徵卻是遇到錯誤資訊就想要轉到若干級之上進行重新嘗試,如圖3)異常超脫於函數
Time of Update: 2017-01-19
引用的意義與本質1)引用作為其它變數的別名而存在,因此在一些場合可以代替指標2)引用相對於指標來說具有更好的可讀性和實用性引用本質思考:思考、C++編譯器背後做了什麼工作?#include <iostream> using namespace std; int main() { int a = 10; // 單獨定義的引用時,必須初始化;說明很像一個常量 int &b = a; // b是a的別名 b = 11; cout <<
Time of Update: 2017-01-19
可以將佔位參數與預設參數結合起來使用意義:為以後程式的擴充留下線索 相容C語言程式中可能出現的不規範寫法//C++可以聲明預留位置參數,預留位置參數一般用於程式擴充和對C代碼的相容 int func(int a, int b, int = 0) { return a + b; } void main() { //如果預設參數和佔位參數在一起,都能調用起來 func(1, 2); func(1, 2, 3); system("pause"); } 預設參數對C的函數拓展1.C+
Time of Update: 2017-01-19
變數的定義C語言中的變數都必須在範圍開始的位置定義!! C++中更強調語言的“實用性”,所有的變數都可以在需要使用時再定義。 #include <iostream> using namespace std; int main11() { int i = 0; printf("ddd"); int k; // 這段代碼在vc6,C語言編譯情況下就會報錯。就是因為這裡的定義 system("pause"); return 0; }
Time of Update: 2017-01-19
命令模式的作用是將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支援可撤銷的操作。由於“行為要求者”與“行為實現者”的緊耦合,使用命令模式,可以對請求排隊或記錄請求日誌,以及支援可撤銷的操作。命令模式把請求一個操作的對象與知道怎麼執行一個操作的對象分割開。Command模式關鍵就是講一個請求封裝到一個類中(Command),再提供處理對象(Receiver),最後Command命令由Invoker啟用。另外,我們可以將請求接收者的處理抽象出來作為參
Time of Update: 2017-01-19
建構函式的分類這裡簡單地將C++中的建構函式分一下類,直接看下面的代碼錶達,說明在注釋中:#include <iostream> using namespace std; class Text { public: Text() // 無參數建構函式 { m_a = 0; m_b = 0; cout << "無參數建構函式" << endl; } Text(int a) // 有參數建構函式 { m_a =
Time of Update: 2017-01-19
今天面試被問到了這個單例模式常用到的技術手段,下面進行分析: 很多情況下要求當前的程式中只有一個object。例如一個程式只有一個和資料庫的串連,只有一個滑鼠的object。通常我們都將建構函式的聲明置於public區段,假如我們將其放入private區段中會發生什麼樣的後果?這意味著什嗎?
Time of Update: 2017-01-19
最近在看解構函式的內容,看到一些講的比較好的文章,這裡我也有了一些我自己的體會,在這裡一併記錄一下。聯編是指一個電腦程式自身彼此關聯的過程,在這個聯編過程中,需要確定程式中的 操作調用(函數調用) 與 執行該操作(函數) 的程式碼片段之間的映射關係。意思就是這個函數的實現有多種,聯編就是把調用和對應的實現進行映射的操作。按照聯編進行的階段不同,可分為靜態聯編和動態聯編。靜態聯編靜態聯編工作是在程式編譯串連階段進行的,這種聯編又稱為早期聯編,因為這種聯編實在 程式開始運行之前
Time of Update: 2017-01-19
1 基本文法decltype 類型說明符產生指定運算式的類型。在此過程中,編譯器分析運算式並得到它的類型,卻不實際計算運算式的值。文法為:decltype( expression )編譯器使用下列規則來確定expression 參數的類型。如果 expression 參數是標識符或類成員訪問,則 decltype(expression) 是 expression 命名的實體的類型。如果不存在此類實體或 expression 參數命名一組重載函數,則編譯器將建置錯誤訊息。如果
Time of Update: 2017-01-19
每個人、事物在不同的狀態下會有不同表現(動作),而一個狀態又會在不同的表現下轉移到下一個不同的狀態(State)。最簡單的一個生活中的例子就是:地鐵入口處,如果你放入正確的地鐵票,門就會開啟讓你通過。在出口處也是驗票,如果正確你就可以 ok,否則就不讓你通過(如果你動作野蠻,或許會有警示(Alarm),:))。有限狀態自動機(FSM)也是一個典型的狀態不同,對輸入有不同的響應(狀態轉移)。通常我們在實現這類系統會使用到很多的 Switch/Case 語句,Case
Time of Update: 2017-01-19
生活中有著很多的建造者的例子,個人覺得大學生活就是一個建造者模式的最好體驗:要完成大學教育,一般將大學教育過程分成 4 個學期進行,因此沒有學習可以看作是構建完整大學教育的一個部分構建過程,每個人經過這 4 年的(4
Time of Update: 2017-01-19
準備一個抽象類別,將部分邏輯以具體方法以及具體構造子的形式實現,然後聲明一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。這就是模版方法模式的用意。很多人可能沒有想到,模版方法模式實際上是所有模式中最為常見的幾個模式之一,而且很多人可能使用過模版方法模式而沒有意識到自己已經使用了這個模式。模版方法模式是基於繼承的代碼複用的基本技術,模版方法模式的結構和用法也是物件導向設計的核心。模版方法模式需要開發抽象類別和具體子類的設計師之間的協作
Time of Update: 2017-01-19
原型模式的實現完整程式碼範例(code):原型模式的實現很簡單,這裡為了方便初學者的學習和參考,將給出完整的實現代碼(所有代碼採用 C++實現,並在 VC 6.0 下測試回合)。代碼片斷 1:Prototype.h//Prototype.h#ifndef _PROTOTYPE_H_#define _PROTOTYPE_H_class Prototype{ public: virtual ~Prototype(); virtual Prototype* Clone() const = 0;
Time of Update: 2017-01-19
代理模式典型的結構圖為:實際上,代理模式的想法非常簡單。代理模式的實現:完整程式碼範例(code):代理模式的實現很簡單,這裡為了方便初學者的學習和參考,將給出完整的實現代碼(所有代碼採用 C++實現,並在 VC 6.0 下測試回合)。代碼片斷 1:Proxy.h//Proxy.h#ifndef _PROXY_H_#define _PROXY_H_class Subject{ public: virtual ~Subject(); virtual void Request() = 0;
Time of Update: 2017-01-19
由遇到的問題引出代理模式至少在以下集中情況下可以用代理模式解決問題: 建立開銷大的對象時候,比如顯示一幅大的圖片,我們將這個建立的過程交給代理去完成,GoF 稱之為虛代理(Virtual Proxy); 為網路上的對象建立一個局部的本地代理,比如要操作一個網路上的一個對象(網路效能不好的時候,問題尤其突出),我們將這個操縱的過程交給一個代理去完成,GoF 稱之為遠程代理(Remote Proxy); 對對象進行控制訪問的時候,比如在 Jive
Time of Update: 2017-01-19
題目描述:一個正整數有可能可以被表示為 n(>=2) 個連續正整數之和,如:15=1+2+3+4+5 15=4+5+6
Time of Update: 2017-01-19
安全執行緒的單例模式一、懶漢模式:即第一次調用該類執行個體的時候才產生一個新的該類執行個體,並在以後僅返回此執行個體。需要用鎖,來保證其執行緒安全性:原因:多個線程可能進入判斷是否已經存在執行個體的if語句,從而non thread safety。使用double-check來保證thread safety。但是如果處理大量資料時,該鎖才成為嚴重的效能瓶頸。1、靜態成員執行個體的懶漢模式:class Singleton{private: static Singleton*