(高分请教高手),复合结构数据高速缓冲组件(急!我都无从入手,那个大虾能指点一下)
含大数据体的结构化数据的高速缓冲对象,要求使用列表(list)、映射(map)和内存文件实现,
支持多线程,有
加入数据对象
统计数据对象数
顺序取出数据对象
顺序访问数据对象
指定关键词取出数据对象
指定关键词访问数据对象
删除指定对象
删除全部对象
全部数据能保存到指定文件
能从给定文件中读出全部数据对象进入高速缓冲对象
等方法
包含指示数据对象数的信号量
我都无从入手,那个大虾能指点一下
问题点数:100、回复次数:12Top
1 楼rtdb(东临碣石)回复于 2002-11-05 09:53:59 得分 0
当然先从list开始. map只是用于快速查找,可以后做.
先用list做数据对象的管理.
Top
2 楼flyingjust(just)回复于 2002-11-05 15:58:31 得分 0
1自定义结构 (对象标记,信号量....)
2使用MFC的列表类?
你在作毕业设计?Top
3 楼Areece(Keen on Guru)回复于 2002-11-05 16:47:22 得分 0
这个难吗,最简单就用一个PtrList保存各个指针,再用一个同步的对象(比如说mutex)进行同步访问,然后插入对象或者是删除对象的时候,需要获得访问权,如果需要更好的性能,可以利用windows核心编程上的多个读写共享的对象来实现Top
4 楼hnliruoyu(生活了无滋味)回复于 2002-11-06 18:36:25 得分 0
先谢谢各位高手,指点的很对,但我还是不太清楚:
1自定义结构 (对象标记,信号量....)
能不能说具体点啊?,我不太清楚要需要定义的结构。
Top
5 楼hnliruoyu(生活了无滋味)回复于 2002-11-06 18:37:16 得分 0
还有啊,我想给各位分,怎么加啊?Top
6 楼iicup(双杯献酒)回复于 2002-11-06 18:41:14 得分 0
点击上面的"管理",
每人后面会出现一个文本框.Top
7 楼hnliruoyu(生活了无滋味)回复于 2002-11-06 18:49:35 得分 0
rtdb,你好,怎么才能把一个对象读进内存呢?我知道用CFile里的open可以把文件打开读进去,但我如果是SQL数据库的文件是用ADO的话怎么得到他文件里的数据啊?返回用返回的记录集吗?那我怎么知道字段和相对应字段的记录呢?怎么得到?麻烦多多指教。Top
8 楼hnliruoyu(生活了无滋味)回复于 2002-11-06 18:51:00 得分 0
但我如果是SQL数据库的文件是用ADO的话怎么得到他文件里的数据啊?返回用返回的记录集吗?那我怎么知道字段和相对应字段的记录呢?怎么得到?麻烦多多指教。我因该定义什么样的结构?Top
9 楼rtdb(东临碣石)回复于 2002-11-07 11:01:16 得分 30
在你这里,数据对象和自定义结构是一个概念.
同时和你SQL数据库中的表是相关的.
具体数据结构要看需求.
不过list管理的是对象所以只要一个最简单的数据对象
就可以开始了.数据对象中的数据可以后加.
Top
10 楼flyingjust(just)回复于 2002-11-07 14:05:27 得分 70
对象读进内存很简单 你从CObject继承 然后在重载序列化 然后用
CMemFile memfile;
// memory file
long lMode = CArchive::store
| CArchive::bNoFlushOnDelete;
// define the flag which tells archive if it
//should load or store
CArchive ar(&memfile, lMode );
//file: create the archive using the memory file
ar.m_pDocument = NULL;
//file: m_pDocument is not used
ar.WriteObject(pObj);
// serialize the object into the archive
ar.Close();
// close the archive - the data is now stored in memfile
long llen = memfile.GetLength();
// get the length (bytes) of the memory file
unsigned char *pMemData = memfile.Detach();
//file :detach the buffer and close the file
SAFEARRAY *psa;
// file:set up safearray - SAFEARRAY is defined OAIDL.H
psa = SafeArrayCreateVector( VT_UI1, 0, llen );
// create a safe array to store the stream data
unsigned char *pData = NULL;
// pointer to byte array
SafeArrayAccessData( psa, (void**)&pData );
// get a pointer to the safe array. Locks the array.
memcpy( pData, pMemData, llen );
// copy the memory file into the safearray
SafeArrayUnaccessData(psa);
// unlock access to safearray
delete pMemData;// clean up buffer
return psa; // return a pointer to a SAFEARRAY allocated here
这是个例子你可以看看 序列化对象到内存
另外ADO2.5加入了Record 和 Stream
Record可以读文件 在打开一个和Reocrd相关联的Stream就可以读文件字节流.
Reocrd.Open(url) 可以打开文件 还有一些方法可以得到文件.
你可以找点资料看看:) 好运!Top
11 楼skg(bruce)回复于 2002-11-07 14:29:56 得分 0
关注中Top
12 楼hnliruoyu(生活了无滋味)回复于 2002-11-08 11:25:18 得分 0
谢谢各位,我一定给分!Top




