Time of Update: 2018-12-04
最近,我苦惱於研發中心程式設計語言的選擇上,JAVA還是C#??J2EE還是.Net??其實網上有關這兩個語言的選擇的文章很多,可謂仁者見仁,智者見智。其實這兩個語言或者說平台的 優缺點是顯而易見的,關鍵是哪個更能適合自己的情況。JAVA跨作業系統,現在的金融、電信、大型企業又多半運行類UNIX系統。C#明顯學習曲線好,開發週期短。我們呢??
Time of Update: 2018-12-04
轉至 http://blog.csdn.net/rnamatrix/article/details/5765462今天在使用limits中的numeric_limits類模板函數max和min時,編譯出現了一個錯誤:[c-sharp] view plaincopyprint?error C2589: '(' : illegal token on right side of '::' error C2589: '(' : illegal token on right side of
Time of Update: 2018-12-04
好久沒有在Linux下編譯My Code了。其實最頭疼的就是模板的移植性問題。記得上次把我的資源管理員移植到公司的Linux項目上的時候就花了我很多時間來協調VC和GCC在模板支援上的一些區別。因為我不是一個語言愛好者。並沒有深入的研究過C++模板的正常化代碼,所以下面的這個跟頭僅用於教訓我自己: 一: template <typename T> class TBase { typedef vector<T>
Time of Update: 2018-12-04
Getting Started with Lua Lua是輕量級的指令碼語言,可以很方便用來擴充C/C++應用程式,下面我們通過幾個簡單的例子來學習Lua如何擴充C/C++的。
Time of Update: 2018-12-04
構造使用類C語言的指令碼引擎(2)作者 :kevin_qing轉貼請註明考慮到指令碼編譯器部分可以單獨作為一個進程實現,並且編譯器需要虛擬機器對其結果進行調試,目前先從最底層的虛擬機器部分開始開發。1.虛擬機器結構.考慮到目前不支援內建函式定義,採用寄存器方式,以後擴充棧也較為方便變數寄存器REG[256]
Time of Update: 2018-12-04
構造使用類C語言的指令碼引擎(1)作者 :kevin_qing轉貼請註明需求:實現npc邏輯,與遊戲(伺服器)互動。例如與商人NPC對話開啟買賣物品視窗等設計:參考傳奇2伺服器端指令碼後(實現的很爛),定義指令碼規則如下:1.採用類C語言,因為熟悉C的人很多,而且C文法較嚴謹,且使用方便2.資料類型只支援int和const
Time of Update: 2018-12-04
構造使用類C語言的指令碼引擎(4)作者 :kevin_qing轉貼請註明同上一章一樣,文法分析部分也不準備使用yacc直接產生代碼,而是只使用yacc的產生的分析表。BNF:%token ID IF ELSE SWITCH GOTO RETURN NUMBER STRING MAIN%token ADD_OP MUL_OP ASSIGN_OP CMP_OP LOGIC_OP1 LOGIC_OP2 %token LPAREN RPAREN LBRACE RBRACE COLON COMMA
Time of Update: 2018-12-04
Client->request Server->response模式的網路伺服器中,對應答的處理一般是採用switch模式。此方法比較難於維護,且缺少錯誤偵測。本文採用C++模板實現一套較為通用的伺服器命令處理模型。閱讀本文你應該對C++模板較為熟悉。ok,進入正題。假定客戶命令包頭為。struct MsgHead{DWORD type;};定義用戶端命令模板類。template<DWORD reqCode>class RequestT:protected
Time of Update: 2018-12-04
構造使用類C語言的指令碼引擎(5)作者 :kevin_qing轉貼請註明語法檢查,常量合并和產生文法樹是在reduce規約函數中實現文法樹節點定義struct GTreeNode{uint32_t type; uint32_t value;};struct GTreeNode1:public GTreeNode{GTreeNode* child1;};struct GTreeNode2:public GTreeNode1{GTreeNode* child2;};struct GTreeNode3
Time of Update: 2018-12-04
作者: winter 這裡描述的是一種很常見的情況:當你在某個緩衝中儲存資料時,常常需要在運行時調整該緩衝的大小,以便能容納更多的資料。傳統的記憶體再分配技術非常繁瑣,而且容易出錯:在 C 語言中,一般都是每次在需要擴充緩衝的時候調用 realloc()。在 C++ 中情況更糟,你甚至無法在函數中為 new
Time of Update: 2018-12-04
構造使用類C語言的指令碼引擎(3)作者 :kevin_qing轉貼請註明現在回到編譯器上的構造上。編譯分為4個步驟1.預先處理在這裡我只是替換掉源檔案的字元'/r'->'/n''/0'->0x20
Time of Update: 2018-12-04
原理在這裡http://blog.csdn.net/kevin_qing/article/details/608891以前代碼找不到了,重寫一次。 加上了一些簡單的錯誤偵測代碼。協助調試記憶體問題。 初步代碼,還未仔細檢查,有bug請留言。 //type and macro#include <default.h>//debug
Time of Update: 2018-12-04
多參數模板必須對所有參數才能偏特化,本文給出一種解決特化單個參數的方案例:使用loki中的多線程模板SingleThreaded<Host>單線程無需鎖ObjectLevelLockable<Host>多線程鎖單一執行個體ClassLevelLockable<Host>多線程鎖類現我希望使用編譯時間定義的const#ifdef _MTconst int MT=1;#elseconst int
Time of Update: 2018-12-04
貌似有些同學還不太明白這個,我試著用c代碼描述c++類相關的一些實現方式。 設類abc,bc繼承於a,都有個虛函數f(),解構函式為虛c++代碼//---------A struct a{ a(){ } void f(){printf("class a\n";}virtual ~a(){ } }; struct b:public a{ b(){}virtual void f(){printf("class b\n";}virtual ~b(){}};struct c:public a{ c(){
Time of Update: 2018-12-04
從最簡單的入手1.實現一個固定大小的allocator//分配固定大小記憶體塊的模板類,內部緩衝演算法自己實現了,//我用的是預分配+回收cache鏈//即分配時先檢查回收鏈有無資料,無的話每次分配n*size個塊,然後返回其中一個,直到該塊用完後繼續分配//釋放時直接加入回收鏈即可//好處是速度夠塊,但是浪費空間可能就比較大了template <size_t size> class Fix_Allocator{void* alloc(size_t size);void
Time of Update: 2018-12-04
[size=x-large]using System;using System.Collections.Generic; using System.Text; using System.Data; using System.Windows.Forms; using System.Reflection; namespace DMS { /// <summary> /// C#操作Excel類 /// </summary> class ExcelOperate { //法一
Time of Update: 2018-12-04
數字轉字串:用C++的streanstream:#include <sstream>#Include <string>string num2str(double i)...{ stringstream ss; ss<<i; return ss.str();} 字串轉數字:int str2num(string s) ...{ int num; stringstream ss(s);
Time of Update: 2018-12-04
Windows記憶體配置方式Win32的堆分配函數每一個進程都可以使用堆分配函數建立一個私人的堆──調用進程地址空間的一個或者多個頁面。DLL建立的私人堆必定在調用DLL的進程的地址空間內,只能被調用進程訪問。HeapCreate用來建立堆;HeapAlloc用來從堆中分配一定數量的空間,HeapAlloc分配的記憶體是不能移動的;HeapSize可以確定從堆中分配的空間的大小;HeapFree用來釋放從堆中分配的空間;HeapDestroy銷毀建立的堆。Windows傳統的全域或者局部記憶體配
Time of Update: 2018-12-04
在C++中explicit作用:explicit關鍵字用來修飾類的建構函式,被修飾的建構函式的類,不能發生相應的隱式類型轉換,只能以顯示的方式進行類型轉換。explicit使用注意事項:*explicit 關鍵字只能用於類內部的建構函式聲明上。*explicit 關鍵字作用於單個參數的建構函式。* 在C++中,explicit關鍵字用來修飾類的建構函式,被修飾的建構函式的類,不能發生相應的隱式類型轉換 如下面所示: class MyClass{public:MyClass( int num );
Time of Update: 2018-12-04
大家都知道一個常識:“C++中千萬不要返回局部對象或變數的引用和指標”。既然所有C++權威的書上都要求“一定不要返回局部對象或變數的引用和指標”,那為什麼C++編譯器不從文法上直接禁掉這種用法。如果只是建議的話,那麼“返回局部對象或變數的引用和指標”是否有用武之地呢?(從理論上來講,我認為這種做法似乎總是錯誤的,原因大家都知道。)例1:class CComplex{public: CComplex():real(0),image(0){}