乙個簡單的資料池模板類

2021-04-02 01:59:58 字數 2295 閱讀 5042

前不久,因為專案的要求對資料訪問十分頻繁,如果每次都是分配記憶體,然後釋放,會產生大量的記憶體碎片,所以設計了乙個資料池模板類,該類很簡單,主要功能有: 1.

初始化資料池 2.

清空資料池 3.

取得一段資料緩衝區 4.

釋放一段資料緩衝區 5.

取得緩衝區記錄數

如何使用:

使用步驟如下: 1,

建立資料池:

cdatabufferdatabuf;

databuf.init(); 2,

如果你需要設定資料池的大小,可以呼叫setmaxbufsize函式來完成,函式定義如下:

bool setmaxbufsize(long lmaxbufsize); lmaxbufsize是要指定的資料池大小。

databuf. setmaxbufsize(10*1024*1024);//大小設為10m

3,當你想取得一條記錄時:

mystruct * pdata = databuf.getbuffer(); 4,

在使用完該記錄後:

databuf. releasebuffer(pdata); 

夠簡單的吧,好了,下面時程式的**:

#if !defined(afx_databuffer_h__f5fdeb06_6c87_4d8b_af80_06d47ba3b459__included_)

#define afx_databuffer_h__f5fdeb06_6c87_4d8b_af80_06d47ba3b459__included_

#if _msc_ver > 1000

#pragma once

#endif // _msc_ver > 1000

#include

#include "mutexlock.h"

using namespace std;

//最大資料池容量 單位是byte

#define maxbuffersize  10*1024*1024

template

class cdatabuffer 

virtual ~cdatabuffer()

//取得乙個資料緩衝區

tdata * getbuffer();

//釋放資料緩衝區,這裡沒有真正釋放,而是把資料存放到資料池中

bool releasebuffer(tdata * pdata)

catch (...)

}else

m_pmutex->unlock();

return true;

}//取得資料池中有多少資料緩衝區

long getbuffercount()

//設定資料池允許的最大資料容量

bool setmaxbufsize(long lmaxbufsize)

return false;

}//取得資料池允許的最大資料容量

long getmaxbufsize()

//初始化

bool init();

//清空緩衝區

bool clearbufferpool();

//private:

//關閉

bool close()

return true;

}private:

typedef listbuffer_list;

buffer_list m_ldatapool; //資料池

cmutexlock* m_pmutex;  //互斥區

long m_lmaxbuffercount;  //最大資料緩衝區數

};//

template

bool cdatabuffer::init()

return true;

}template

bool cdatabuffer::clearbufferpool()

first++;

}//清空列表

m_ldatapool.clear();

}catch (...)

return true;

}template

tdata* cdatabuffer::getbuffer()

m_pmutex->unlock();

if(pdata == null)

//注意,如果記憶體耗盡,系統快崩潰時,這裡取得的也是null指標

return pdata;}//

#endif // !defined(afx_databuffer_h__f5fdeb06_6c87_4d8b_af80_06d47ba3b459__included_)

乙個簡單的模板類(PHP)

接上話,有了乙個資料操作類,這樣專案只能簡單地運算元據,但是要達到能夠和美工一起顯示美好的頁面,則需要乙個比較好的模板引擎。與smarty這樣比較龐大的模板引擎相比,我想下面這個則真算得小得多了。這個模板類是我以前在網上看到的,寫得比較好,所以我就引用了,還不知道作者是誰,這裡就先講一下這個類的原理...

乙個簡單的模板類(PHP)

有了乙個資料操作類,這樣專案只能簡單地運算元據,但是要達到能夠和美工一起顯示美好的頁面,則需要乙個比較好的模板引擎。與smarty這樣比較龐大的模板引擎相比,我想下面這個則真算得小得多了。這個模板類是我以前在網上看到的,寫得比較好,所以我就引用了,還不知道作者是誰,這裡就先講一下這個類的原理。首先,...

乙個簡單的類模板的使用

include include using namespace std template class mylist void print private t a t b template 不可少 void mylist print 宣告和定義都要放在同乙個 檔案中,否則會出現錯誤提示 error l...