Time of Update: 2018-12-03
前幾天跟Yuan Ye Pair的時候發現了這個方法 1. 經典的Visitor模式(循環相依性) public interface Document { void Accept(DocumentVisitor visitor); } public class WordDocument : Document { public void Accept(DocumentVisitor visitor) {
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 對於編寫多線程的朋友來說,線程互斥是少不了的。在linux下面,編寫多線程常用的工具其實是pthread_mutex_t。本質上來說,它和Windows下面的mutex其實是一樣的,差別幾乎是沒有。希望對線程互斥進行詳細瞭解的朋友可以看這裡。#include <stdio.h>#include <pthread.h>#include
Time of Update: 2018-12-03
using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Net.Mail;u
Time of Update: 2018-12-03
/// <summary> /// 壓縮檔 /// </summary> /// <param name="patch">被壓縮檔或其所在目錄</param> /// <param name="rarPatch">壓縮後檔案存放目錄</param> /// <param
Time of Update: 2018-12-03
Time of Update: 2018-12-03
除了模式,上周日我和sunway還談到了C++的問題——結果周二就看到Linus Torvalds就C++的話題跟人吵架,引發了國內C++圈裡的大討論——孟岩版,雲風版,劉未鵬版。我也來扯一篇吧,不過層次肯定比這幫職業C++高手差多了。雲 風最近一次從C++回到C我是知道的,還曾經因為C是不是需要提供GC的問題跟他有過討論。那天sunway跟我討論的主要觀點跟雲風及Torvalds
Time of Update: 2018-12-03
1,typedef不必要?a,typedef提供了一層間接,物件導向語言中,介面掩蓋了運行時不同具體類型間的差別,而typedef掩蓋了編譯時間不同類型間的差別,卻又不喪失型別安全b,一般語言只能返回“值”,而typedef提供了返回“類型”的能力,這是模板元編程不可或缺的機制,除非模板元編程眼下也是不必要的2,匯入在不同地點分別對#include,private成員放在標頭檔中,inline函數也放在標頭檔中進行了批判,實際上原因只有一個:C++不是平台,它沒有二進位標準,它編譯後成為本地代碼
Time of Update: 2018-12-03
三軍未動,資料先行。書山碟海,只列其中最好的。統統都可以emule找到。1.快速入門 〈Accelerated.C++〉2000 〈Essential C++〉2002 Lipman 兩本都是開篇就講C++/STL,絕口不提C,而且都有中文版。2.枕頭參考 〈C++.Primer.4th〉2005 Lippman,第3版有中文版,當入門書看也無不可。 〈The.C++.Programming.Language.3rd〉Bjarne Stroustrup ,簡稱TCPL。3.
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 原型模式本質上說就是對當前資料進行複製。就像變戲法一樣,一個鴿子變成了兩個鴿子,兩個鴿子變成了三個鴿子,就這麼一直變下去。在變的過程中,我們不需要考慮具體的資料類型。為什麼呢?因為不同的資料有自己的複製類型,而且每個複製函數都是虛函數。 用C++怎麼編寫呢,那就是先寫一個基類,再編寫一個子類。就是這麼簡單。class data{public: data () {}
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 組合模式聽說去很玄乎,其實也並不複雜。為什麼?大家可以先想一下資料結構裡面的二叉樹是怎麼回事。為什麼就是這麼一個簡單的二叉樹節點既可能是分葉節點,也可能是父節點?typedef struct _NODE{ void* pData; struct _NODE* left; struct _NODE* right;}NODE; 那什麼時候是葉子節點,其實就是left、
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 前面我們寫過的原廠模式實際上是對產品的抽象。對於不同的使用者需求,我們可以給予不同的產品,而且這些產品的介面都是一致的。而抽象工廠呢?顧名思義,就是說我們的工廠是不一定的。怎麼理解呢,舉個例子。 假設有兩個水果店都在賣水果,都賣蘋果和葡萄。其中一個水果店買白蘋果和白葡萄,另外一個水果店賣紅蘋果和紅葡萄。所以說,對於水果店而言,儘管都在賣水果,但是兩個店賣的品種不一樣。
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 面板模式是比較簡單的模式。它的目的也是為了簡單。什麼意思呢?舉個例子吧。以前,我們逛街的時候吃要到小吃一條街,購物要到購物一條街,看書、看電影要到文化一條街。那麼有沒有這樣的地方,既可以吃喝玩樂,同時相互又靠得比較近呢。其實,這就是悠閑廣場,遍布全國的萬達廣場就是幹了這麼一件事。 首先,我們原來是怎麼做的。typedef struct _FoodSteet{ void
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 享元模式看上去有點玄乎,但是其實也沒有那麼複雜。我們還是用樣本說話。比如說,大家在使用電腦的使用應該少不了使用WORD軟體。使用WORD呢, 那就少不了設定模板。什麼模板呢,比如說標題的模板,本文的模板等等。這些模板呢,又包括很多的內容。哪些方面呢,比如說字型、標號、字距、行距、大小等等。typedef struct _Font{ int type; int
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 泛型程式設計其實不難。本質上說,泛型程式設計就是讓通用的演算法應用到所有的資料類型。具體來說,int是我們熟悉的整數類型。那麼一般情況下,如果我們寫一個int整數的排序演算法,應該怎麼寫呢?大家可以自己試試?下面的代碼是我的一個範例;void bubble_sort(int array[], int length){int temp = 0;int outer = 0;int
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 所謂進程等待,其實很簡單。前面我們說過可以用fork建立子進程,那麼這裡我們就可以使用wait函數讓父進程等待子進程運行結束後才開始運行。注意,為了證明父進程確實是等待子進程運行結束後才繼續啟動並執行,我們使用了sleep函數。但是,在linux下面,sleep函數的參數是秒,而windows下面sleep的函數參數是毫秒。#include
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 訊號處理是linux程式的一個特色。用訊號處理來類比作業系統的中斷功能,對於我們這些系統程式員來說是最好的一個選擇了。要想使用訊號處理功能,你要做的就是填寫一個訊號處理函數即可。一旦進程有待處理的訊號處理,那麼進程就會立即進行處理。#include <stdio.h>#include <stdlib.h>#include <signal.h>int
Time of Update: 2018-12-03
1 用兩個棧實現一個隊列的功能2 關於strcpya strcpy(s1,s2) strcpy是把字串s2中的內容copy到s1,包括字串的結束標誌也一起copyb 找錯void test1(){ charstring[10]; char *str1="0123456789"; strcpy(string,str1);}會引起數組下標越界void test2(){ char string[10],str1[10]; int i; for(i=0;i<10;i++) { str1[
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 早在八月份的時候,就陸陸續續寫了二十多篇用組合語言看C++的部落格內容。在此為了做一個概括,也為了朋友們看起來更方便,我們利用這麼一篇部落格對所有的文章做一個總結。如果有朋友們在觀看的過程當中發現了問題,懇請多多指教,謝謝。 01)用彙編的眼光看C++(開篇) 02)用彙編的眼光看C++(之X86彙編) 03)用彙編的眼光看C++(之指標1,2)