a********i 发帖数: 3 | 1 2个小时的coding,要求带自己的电脑,在自己的IDE里开发,一个带有transaction功
能的数据存储,要求:
a. set 存key-value pair
b. get 给定key,返回value
c. count 某一个value出现的次数.
d. delete 删掉某个key的value
e. begin transaction 开始一个transaction.
f. commit 将所有在transaction里的操作永久存入
g. rollback 删掉最后一个transaction里的所有操作
ex:
set(1,a);
set(2,b);
set(3,c);
get(3); --> 'c'
set(4,c);
count(4); --> 2
delete(2);
get(2); --> null
begin;
set(2, d);
get(2); --> 'd'
commit;
get(2); --> 'd'
begin;
set(5,e);
set(6,e);
count(e); --> 2
rollback;
count(e); --> 0.
想问一开始能不能就用hashMap实现表结构?这样的话count是O(n)的复杂度...然后想
问这个transaction和commit怎么实现啊?这里先谢过各位大大了。 |
k**l 发帖数: 2966 | 2 transaction 弄成字符串(or enum function+data)先存着?
commit的时候再操作
【在 a********i 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 2个小时的coding,要求带自己的电脑,在自己的IDE里开发,一个带有transaction功 : 能的数据存储,要求: : a. set 存key-value pair : b. get 给定key,返回value : c. count 某一个value出现的次数. : d. delete 删掉某个key的value : e. begin transaction 开始一个transaction. : f. commit 将所有在transaction里的操作永久存入 : g. rollback 删掉最后一个transaction里的所有操作 : ex:
|
x*******9 发帖数: 138 | 3 https://github.com/Wizmann/Simple-Database-Challenge
应该这题的变种吧,相似度90%+
我写了90分钟,用C++。
如果用Python、Java会快一点。 |
s*********n 发帖数: 35 | 4 value作为 key再存一个hashtable, trans的话,每个操作写日志, 如果commit就清
空日志, rollback的话就倒着把日志里每个动作取反再操作一遍。如果考虑并发的话
会很难 。
【在 x*******9 的大作中提到】![](/moin_static193/solenoid/img/up.png) : https://github.com/Wizmann/Simple-Database-Challenge : 应该这题的变种吧,相似度90%+ : 我写了90分钟,用C++。 : 如果用Python、Java会快一点。
|
s*********n 发帖数: 35 | 5 写的很好啊
【在 x*******9 的大作中提到】![](/moin_static193/solenoid/img/up.png) : https://github.com/Wizmann/Simple-Database-Challenge : 应该这题的变种吧,相似度90%+ : 我写了90分钟,用C++。 : 如果用Python、Java会快一点。
|