文件數據結構描述如下: 類似聊天紀錄的讀寫一條紀錄的格式:senderid rcverid sendtime strcontent
1 2 ... ...
1 3 ... ...
1 3 ... ...
3 1 ... ...
2 1 ... ...即該文件只保存自己發出的信息以別人發給自己的信息 寫入的時候直接追加到文件末尾 現在的問題是
1. 如何寫入效率比較高,因為寫入頻繁
2. 如何讀出 檢索
讀出暫定為:
一次性將所有內容讀出到內存 然後按照 senderid == id / rcverid == id遍歷
還需要對某個id的所有內容按照sendtime排序
請問 有身麼好的方法 使得效率較高,主要是不太清楚 文件內容的遍歷,排序謝謝.
1 2 ... ...
1 3 ... ...
1 3 ... ...
3 1 ... ...
2 1 ... ...即該文件只保存自己發出的信息以別人發給自己的信息 寫入的時候直接追加到文件末尾 現在的問題是
1. 如何寫入效率比較高,因為寫入頻繁
2. 如何讀出 檢索
讀出暫定為:
一次性將所有內容讀出到內存 然後按照 senderid == id / rcverid == id遍歷
還需要對某個id的所有內容按照sendtime排序
請問 有身麼好的方法 使得效率較高,主要是不太清楚 文件內容的遍歷,排序謝謝.
若使用文件,可以考虑为每一个 rcverid 生成一个单独的文件,或以 rcverid 为文件名,以次简化消息分检。
有考慮過您說的這種處理方式,但是由於前面需求的失誤,使得這樣做對系統有較大的影響,可能暫時不考慮.
對,我考慮下access 謝謝樓上兩位哥們.
TO: qwedcxza(自娱自乐)
文件名應該是以senderid命名,放在自己的id(selfid)的文件夾中
即 自己發出給對方的以及對方發給自己的都裝在以對方的id命名的文件中
senderid/rcverid 是相對的而已.
最開始我們就是在設計過程中沒有封裝好 導致有些問題.
to: bcpl(Relax) & qwedcxza(自娱自乐)
如果採用access桌面數據庫(何為桌面數據庫)
我該注意那些,連接方式,讀出,寫入,加密等
連接採取 odbc, ado,等...
我對數據庫編程不熟悉,還望多指教
用ado直接连access,没必要用odbc,www.codeproject.com有一个封装好的ado类,很容易用。
数据库编程至少要了解一些基本的sql操作(如select)
bcpl(我是宇宙中的一粒沙子) && bcpl(Relax)
名字咂的一樣喔.
sql語言我還行,起碼的都懂
我不能用別人的類 因為我現在是寫商業代碼 會有版權糾紛的.
ado 我有了解一些, 我再看看
再次感謝樓上的哥們.
如果 我一定要用文件的話 how to.非常感謝.
我再看看.
如果关键字段唯一,可以不用B树而使用AVL树,效果不错,只要在第一次读入内存的时候把整个树建立起来就可以了。
hash表跟b+树都有一点了解 不过没用过。
记录n所处的单元地址=f(记录n的关键字)。
只要定义好这个散列函数,进行一次运算就可以找到要找的记录。但是函数往往无法保证不含冲突,所以会发现有2个记录被映射到同一地址上,这样叫做冲突,只需要再定义一条冲突规则就可以了,譬如产生冲突的时候,如果当前单元已经存放记录了,那么产生冲突的记录就往后移动一个位置,等等。
没用到你说的树
使用STL的
其实思路也挺简单
不过是很多不熟悉
有空会考虑你的方法谢谢!