1
wangmm Jan 23, 2018 厉害 程序小白摩拜!
|
2
hahasong Jan 23, 2018 via iPhone 程序小白 OFO
|
3
Applenice Jan 23, 2018 程序小白 小蓝
|
4
allen6699 Jan 23, 2018
程序小白 滴滴
|
5
xjr1022 Jan 23, 2018
程序小白 滴滴
|
6
Ethous Jan 23, 2018 via Android
一件事,能坚持做三年。这种毅力值得点赞!
|
7
stoldog Jan 23, 2018 程序小白 HelloBike
|
8
zorui Jan 23, 2018 程序小白 小鸣
|
9
xntop Jan 23, 2018
关键是视机器而定,哈哈
|
10
jzds001 Jan 23, 2018
赞坐
|
11
owenliang Jan 23, 2018
红黑书与 B 树是我从来没试图写过的数据结构,虽然后面 K/V 时代出现了更多牛逼的树,但都很难!
|
13
ynyounuo Jan 23, 2018 恭喜你,你的心里有了 B 树
|
14
jadec0der Jan 23, 2018
lz 牛逼啊,这么有耐心,佩服佩服
|
15
Applenice Jan 23, 2018
去点了 star~~~
|
16
wowo243 Jan 23, 2018 via Android
我是来看回复的。。。
|
17
luckychenhaha Jan 23, 2018
666,先 star 为敬
|
18
jecshcier Jan 23, 2018 via iPhone
看回复来的。。。
|
19
codexu Jan 23, 2018
给大佬递 star
|
20
soli Jan 23, 2018
不来个横向对比么?
比如和 Redis、MySQL 等对比一下性能? |
21
lazypu Jan 23, 2018
不知道你在说什么, 但是我也会摩拜
|
22
kaiser1992 Jan 23, 2018
有必要把 benchmark 测试结果贴出来
|
23
supercaizehua Jan 23, 2018 via Android
程序小白 哈罗
|
24
scriptB0y Jan 23, 2018
程序小白 捷达
|
25
begeekmyfriend OP @kaiser1992 IO 的东西跟机器相关,做不到很公正吧
|
26
begeekmyfriend OP @soli Redis 和 MySQL 两者之间对比都是不公正的
|
27
loading Jan 23, 2018
滴 幼儿票
|
28
zxybird Jan 23, 2018
点个 star,予以支持
|
29
dobug Jan 23, 2018
点赞
|
30
YouXia Jan 23, 2018
赞!
|
31
Andiry Jan 23, 2018
初看了一下有问题啊,node_flush()里只有 pwrite 没有 fsync,如何能保证数据落到磁盘呢?支持 failure recovery 吗?
|
32
begeekmyfriend OP @Andiry 还没做到这一步
|
33
cnwtex Jan 23, 2018
没有一个 issue, 这种东西有人在用吗?
|
34
Andiry Jan 23, 2018
@begeekmyfriend 那样的话这个性能测试没啥意义了,因为本质还是内存版本。
|
35
begeekmyfriend OP @Andiry 因为我还没想好怎么加,最笨的方法,你直接在 write 后面 sync 再测一下呗,慢不了的
|
36
begeekmyfriend OP @cnwtex 我关闭了,另外,老外都 email 了
|
37
cnwtex Jan 23, 2018
@begeekmyfriend 不好意思, 没做过开源项目. 都 email 的话, 是你的客户吧?
我搂了一眼, 暂时用不上, 加油! |
38
begeekmyfriend OP @cnwtex 据我所知,star 的好多都是前端的,估计不想用数据库。。。
|
39
anubiskong Jan 23, 2018
现在时代这么浮躁,难得有你这么坚持做一件事的人,加油
|
40
JanKinAn Jan 23, 2018 via Android
我默默的删掉了我的 gayhub 库
|
41
duesicilie Jan 23, 2018
滴!发生了什么?这不是个上班时间灌水用的地儿吗
|
42
exch4nge Jan 23, 2018
在精神上支持 LZ。不过不知道什么场景下会用 LZ 这种库,生产环境下 leveldb 是更好的一种选择吧。
|
43
begeekmyfriend OP @exch4nge 本来是想写个 database 的,但按照进度估计写不动了,做到这地步,交接给有缘人吧
|
44
zpf124 Jan 23, 2018
只能称赞一句,但我技术差太多而且没有什么毅力估计没法模仿大佬的历程。
|
45
zouqiang Jan 23, 2018
膜拜
|
46
fcten Jan 23, 2018
file: bplustree.c
line: 1079 _max_order = (block_size - sizeof(node)) / (sizeof(key_t) + sizeof(off_t)); 有符号数与无符号数一起运算,导致 block_size < sizeof(node) 时返回非预期的结果 |
47
begeekmyfriend OP @fcten 你给 block_size 设置了一个多大的数?
|
48
fcten Jan 23, 2018 @begeekmyfriend
-- B+tree setting... Set data index file name (e.g. /tmp/data.index): Set index file block size (bytes, power of 2, e.g. 4096): 4 config node order:1431655762 and leaf entries:1431655762 Please input command (Type 'h' for help): i 1 Segmentation fault (core dumped) |
49
skadi Jan 23, 2018
如果只是数据结构的话,大学的时候 b 树以及几个变种自己都手动实现过.并不觉得...
|
50
chenweidong Jan 23, 2018
吊就一个字,我只说一次。
|
51
begeekmyfriend OP |
52
daozhihun Jan 23, 2018 via Android
歪个楼,楼主的头像我第一眼看以为是刑舅舅 😂
|
53
begeekmyfriend OP @skadi 半分钟内插入 1KW 个 key 再说,不然就是假的 B 树
|
54
acros Jan 23, 2018
捂着脸说一句:我看不懂(其实也压根没看,B+树磁盘存储 CRUD 几个关键字好像离我很远)。
能搭配开发博客看就好了,或者随便写写开发心得啊。 比如 rapidjson 的这个做法,博客比代码容易引流嘛: https://github.com/Tencent/rapidjson https://zhuanlan.zhihu.com/p/20029820 |
55
hsuan Jan 23, 2018 via Android
挺好的,不过想不到有啥用
|
56
stabc Jan 23, 2018
既然说了“视机器而定”,为什么不把你的性能测试的机器硬件贴出来呢?
|
57
closedevice Jan 23, 2018
不错,加油
|
58
0915240 Jan 23, 2018
给大佬端茶倒水
|
59
jeffciu Jan 23, 2018 via iPhone
没仔细研究过 B+树,但还是佩服楼主的成果
|
60
likuku Jan 23, 2018
1K 行能写这种底层硬功能,也真是了不起!
|
61
feng32 Jan 23, 2018 via Android
赞一个
因为业务关系,我现在只记得 k-d 树的写法了 |
62
begeekmyfriend OP @feng32 KD 树我也有,要不要 PK 一下: https://github.com/begeekmyfriend/kdtree
|
63
begeekmyfriend OP @stabc 懒得贴了,thinkpad t440,后面没字母
|
64
unique Jan 23, 2018 via iPhone
为楼主的坚持点赞👍🏾
|
65
rashawn Jan 23, 2018 via iPhone
为啥 trending 上有个一样名字的项目 但不是楼主写的 好奇怪
|
66
rashawn Jan 23, 2018 via iPhone
|
67
rashawn Jan 23, 2018 via iPhone
感觉你们两个是有缘人
|
69
begeekmyfriend OP @rashawn 你看他 issue,没实现删除,骗 star 来着~
|
70
begeekmyfriend OP @acros 人家那是正式发布到很多版本后才写博客的,我连个 database 都没力气写了
|
71
letianqiu Jan 23, 2018
正好在看 B 树,有个问题没有懂,想请教。B 树究竟如何减少磁盘 I/O ?如果 B 树节点里有记录储存在硬盘里的实际地址,那么这个地址是怎么得到的?在写文件之前应该是拿不到实际地址的?如果写完才能拿到,那么是不是再将地址写入?
|
72
begeekmyfriend OP @letianqiu 我写的是 B+树。
如果要减少磁盘 I/O 那么尽量一个节点容纳多个索引,索引节点越少,读操作 I/O 次数越少,查询越快,但也不能太多,否则插入删除就需要相关子节点全部更新,这就是为什么 B 树的写效率偏低。 我是基于 POSIX 实现的,不是裸机,所以存储的是文件,实际地址自然是文件字节偏移,后面该如何处理你应该明白 |
73
HaoyangWei Jan 23, 2018
滋瓷~
佩服楼主的毅力 |
74
szhaoliang Jan 23, 2018 via Android
都坚持三年了再坚持一下,当初我就是打算做一下别的放松放松再回来,结果现在就只能给大佬倒茶水了......
|
75
waterlaw Jan 23, 2018
楼主 Linux 下报如下错误:
``` /home/zjp/Projects/bplustree/tests/bplustree_demo.c: In function ‘ bplus_tree_setting ’: /home/zjp/Projects/bplustree/tests/bplustree_demo.c:29:25: error: this statement may fall through [-Werror=implicit-fallthrough=] printf("\n"); ^~~~~~~~~~~~ /home/zjp/Projects/bplustree/tests/bplustree_demo.c:30:17: note: here case 'q': ^~~~ /home/zjp/Projects/bplustree/tests/bplustree_demo.c:54:25: error: this statement may fall through [-Werror=implicit-fallthrough=] printf("\n"); ^~~~~~~~~~~~ /home/zjp/Projects/bplustree/tests/bplustree_demo.c:55:17: note: here case 'q': ``` |
76
wujunze Jan 23, 2018
大神 厉害了 观摩一下代码
|
77
begeekmyfriend OP @waterlaw 你这是 clang 吧,还是 demo 测试里的,我没有在 switch-case 里用 break,有意为之,编译选项过于严格了。
|
78
Rorysky Jan 23, 2018
有毅力,观摩学习下代码~
|
79
crayhuang Jan 23, 2018
膜拜~
|
80
bigeast Jan 24, 2018
|
81
begeekmyfriend OP @bigeast 那个还没有删除操作
|
82
deali Jan 24, 2018 via Android
默默点赞
|
83
caola Jan 24, 2018
程序小白 优拜
|
84
Dxer Jan 24, 2018 via Android
只能默默地为你点赞
|
85
Michaelssss Jan 24, 2018
默默点赞
|
87
TreStone Jan 24, 2018
楼主代码风格真是漂亮,打算将楼主 B+树移植到嵌入式平台,目前有一处不是很明白,“ struct free_block ”作用是什么?烦请楼主解惑。
|
88
silianbo Jan 24, 2018
mark
|
89
begeekmyfriend OP @TreStone 那是删除后留下的空节点,可供后来者插入
|
90
lxrmido Jan 24, 2018
学习一下,膜拜
|
91
shiyouming91 Jan 24, 2018 via iPhone
楼主厉害 这个可能也有参考价值 http://www.lmdb.tech/doc/index.html
|
92
wsb200514 Jan 24, 2018
膜拜
|
93
iamnoten Jan 24, 2018
厉害
|
96
nuanyang Jan 24, 2018 via iPhone
膜拜
|
97
hasbug Jan 24, 2018
程序小白 嘟嘟
|
98
cstj0505 Jan 24, 2018
佩服 lz 的坚持
|
99
zchzch1014 Jan 24, 2018 via iPhone
楼主做的事就像自己的名字一样,敬佩
|
100
hellboys Jan 24, 2018
我感觉楼主更牛逼的是这个哈
https://github.com/begeekmyfriend/leetcode |