帐前卒专栏

code, software architect, articles and novels.
代码,软件架构,博客和小说

今天想到索引永久化保存。这个就意味这索引中存放的不能是地址的值。这样再还原就会出现问题。

又想是否可以存相对位置,但是这样又要改AList类中的remove方法。否则删除一行,本行以下的所有的行的相对位置都变化了。后来准备做一个亚元来代替删除行记
录。

想象HashTable对于等值比较速度非常快,但是对于大于小于等操作,HashTable基本就无用了。那就可以直接用红黑树来代替。这样做也做到了底层数据结构
和用户接口的无关性。用户不必自己选择使用哪种数据结构来建立索引。

今天碰到一个问题:vs2005调试的时候监控的变量的值总是会变的莫名其妙。后来发现是使用了release而不是debug.晕…

又碰到一个c++的问题:

void DividWhereSet(char * pStrWhereSet, char * pStrColumnName, char * oper,
char * pValue);我在函数体内改动了pStrColumnName和pValue的值。但是编译器就有问题了。后来改成:

void DividWhereSet(char * pStrWhereSet, char ** pStrColumnName, char * oper,
char ** pValue);原因是改变了指针的地址,那么还是用指针的指针来改变,否则又犯了传值的毛病…

明天又要上文件检索课。连续上三天然后考试。

前天一天都在写详细设计文档。文档感觉很重要,但是又不是非常的重要。

锦哥说胜出的队伍会得到西瓜。

于是我们组做了精致的ppt,
然后release一个版本。我上台做了进度报告,报告中吹嘘我们的解决方案。用吹嘘不太好,应该说推销了我们的解决方案。然后展示了半成品。

老师们给了很高的评价。不过说界面还要做。因为用户的可用性很差。不过我感觉我们组的界面美化度已经是全部组中的第一名了。在ppt的倒数第二页,展望了下未来,然后
ppt上写了这样一行话:“我们想要一个西瓜!”结果投票的人有15个人。我们得了12票。(做数据库的组不能相互投票)最终我们得到一个大西瓜。

回来给了组员假期。又分给其他各个组西瓜吃。呵呵…happy的一天。

下次我们还将得一个西瓜…

今天上午上完睿哥的课程
,听懂了分支定界法,启发查找和A*算法。听后,感觉就是这些算法不过如此。或许睿哥今天讲的好吧。不过我数据库的实现并没有这种算法的要求。

上午又迫于压力去听了林院长的课。讲web…后来感觉讲的无聊,最后悄悄拿出书包里的web测试书看起来了。然后又有测试课。我在门口听了两分钟发现是将兼容性测
试要注意:操作系统兼容,硬件,浏览器,数据库都要进行兼容测试。发现没有新意,就走了。

上午回来搞定了Update方法。下午和界面模块结合起来运行。今天终于可以从界面创建新表了!

昨天实现了CDBTable中的Select方法和Delete方法,另外做好了dll中的接口中的Select方法和Delete方法。方便外界访问。但是现在Se
lect出了问题。如果dll将一个Matrix矩阵传了出去,但外界将这个Matrix删除掉或者做了什么手脚,那么里面的Matrix矩阵中的数据也将改变。如果
将Matrix矩阵中的Row删除了,那就会出现意想不到的效果。所以现在的实现方法是在Select方法传出Matrix前,将重新申请一块内存区做Matrix的
副本。但是我现在希望能够重构一个select方法。用来查找对应的Row,以此来方便删除,更新操作。但是现在想想好些这样实现有点难度。主要是最基本的数据结构L
ist设计有点问题。迭代器的使用不方便。造成了删除和查找不能用一个select方法。

再想想吧。。

今天进度有些缓慢。。。

实现了CFileRW类。

写了一点点CDBTable类

又完善了以下CTableManager类…

今天结对编程出了点问题。郭军编的时候。。我不知道在干些什么。。我编的时候。。他也不知道在干些什么。

昨天将搭好的框架代码化,又重新调整了下软件的结构。

现在的软件结构中添加了RedBlackTree,和Matrix类,使用List将接口抽取出来。下面使用AList和LList类继承了List的方法。Matr
ix实际上一个邻接表。数组类AList中填入的是LList类。

我和郭军在CreateTable这个方法上争论很久。后来达成统一意见。CreateTable在dll中和在CTableManager中的含义是一样的。而在C
DBTable中的含义不一样。

昨天的工作实现了Link类,LList类,AList类,Matrix类,Column类。

今天准备实现CDBTable类和CTableManager类。

上午和郭军共同搭了框架。使用纯虚类封了接口。 在CTable中继承了IOper的各种方法。在Oper.dll文件中重新包装了下IOper的方法,并成为对外的
接口(对用户界面的接口)。CTable成为创建各种表的模板。表的结构存储在文件中,表的数据域也存储在内存中。文件中数据格式的读写是关键的。不过第一个版本并不
实现。

第一个版本只是对内存中存放数据,并不涉及文件的操作。我们将表的结构设计为一个类来存放所有的数据。CTable中还有一个类来专门做索引。只要判断类型,就可以知
道是用红黑树还是使用HashTable来构建数据的索引。CTable类中还要存放全部数据的结构体。

对于CTable实例化是在CCTableManger内实现的。外界调用的时候只需将名字传入,CCTableManger负责创建此实例,并且通过对已经实例化的
CTable的TableName进行对比,可以防止重复的将文件中的数据读入内存。还可以使用LRU算法对内存进行控制。

有时发现两个人分别做事情有时比两个人合作要效果要差很多。这些想法是我们俩想到的。如果一个人可能就想不到这些东东了。记得我想到CCTableManger的时候
,郭军高呼:这个不错。。。然后又想到了内存管理等等东西。于是想了更多更好的实现方法。这样合作,这个项目应该问题不大。

下一步准备结对编程进行编码了。

今天又找了下我blog,发现搜索帐前卒竟然第一条是别人的圈子。百度做的真有点意思。而且好像还搜不到我的东西。Google的好像也是一样。

昨天上午上课:菜菜讲了dll文件的使用和生成,vs中如何进行最基本的配置。下午继续上课:更深入的讲解MVC架构。

上完课请kaonuonuo,童梓吃饭。吃的很饱,童梓把晚上饭一起吃出来了。一个今天要回家,一个今天三下乡。祝她们一路顺风。

下午上完课后开会,睿哥估计我们做的项目风险太大。准备调红亮过来。结果还是一样,把他调过来。。。他们组就散了。

开会时间太长了。大一的还要请问吃饭。洪莲,张磊,曼霞呆呆的看这菜单等了很长时间了。我又吃了很多。不过最后还是把蛋糕吃完了。很饱。。。

晚上8点吃完饭,回实验室搭架构。看测试计划。终于搞明白了这个Mini数据库要怎么样设计

感觉如果想这样不停的开会。。。项目就要延期了。

上午不知道开了几个会了。调整了组内的人员。一开始分组我要带4个女生,天知道我能不能做完。还好李睿有先见之明,给我分了郭军和林富勇过来。本来我想招剑哥的。但那
家伙死活要在他原来的组做。于是就尊重了他的意见。

下午组内召开会议。分了下工,讨论下需求和进度。最后认为要在4号完工.迭代开发。每个阶段一个星期。每个阶段核心代码公关4天。希望能搞定。对未知事情还是有点怕。

文件读写,红黑树,网络通信,同步互斥这几个关键技术需要实现。很可惜这几种技术自己都不是很熟练。只好抓紧下努力一点了。

0%