V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tool2d
V2EX  ›  程序员

写代码久了,感觉数据结构都是浮云,主程序只要保存一棵树,就能搞定 95%的场景需求。

  •  1
     
  •   tool2d · 2022-06-30 17:06:41 +08:00 · 5072 次点击
    这是一个创建于 863 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用户有新需求,就不断的往这一棵树上加子叶,用 ID 做为键值来查找。

    如果叶子上有大数据,就用类似二次索引 index ,去数据库里实时查询。

    保存数据的时候,JSON 一把梭导出,简单又明了。

    高端的程序(食材)往往只需要采用最朴素的数据结构(烹饪方式)。
    25 条回复    2022-07-01 11:59:39 +08:00
    hello2090
        1
    hello2090  
       2022-06-30 17:17:36 +08:00 via iPhone
    牛逼!
    wliansheng
        2
    wliansheng  
       2022-06-30 17:20:23 +08:00
    适合通用场景,
    thedrwu
        3
    thedrwu  
       2022-06-30 17:25:50 +08:00
    lisp 用户: 链表能搞定 100% 场景
    tool2d
        4
    tool2d  
    OP
       2022-06-30 17:26:35 +08:00
    以前大家都会设计各种各样的数据结构,大多都是和算法混在一起的。

    后来代码写多了,越来越倾向于用函数式编程。

    把那些很复杂的数据结构封装起来,封装成函数链式管道中的临时对象。这样主程序就可以不去管理这些细节。只需要维护一棵主树,扩展用户业务就比较方便了。
    ql562482472
        5
    ql562482472  
       2022-06-30 17:28:51 +08:00
    感觉这个思路很牛逼,能不能细说一下
    Jooooooooo
        6
    Jooooooooo  
       2022-06-30 17:31:49 +08:00
    java 作者: 我也不用 linkedList
    jhdxr
        7
    jhdxr  
       2022-06-30 17:31:55 +08:00
    盲猜对于性能指标没啥要求
    abctt
        8
    abctt  
       2022-06-30 17:38:21 +08:00   ❤️ 1
    关系型数据库也是一棵树,有需求加个表加字段,不也就在树上加了节点减个节点吗
    littlewing
        9
    littlewing  
       2022-06-30 17:40:20 +08:00
    对啊,MySQL 也就是一颗 B+ 树而已嘛
    littlewing
        10
    littlewing  
       2022-06-30 17:40:56 +08:00
    RocksDB 也就是一个 LSM-Tree 嘛,万物皆是 Tree
    reter
        11
    reter  
       2022-06-30 17:45:50 +08:00
    我是说,有没有可能,列表是一种特殊的树,树是一种特殊的图结构
    nulIptr
        12
    nulIptr  
       2022-06-30 18:05:07 +08:00
    前端是这样的
    cheng6563
        13
    cheng6563  
       2022-06-30 18:23:50 +08:00   ❤️ 19
    有没有可能,只需要 0 和 1 就能保存任意数据?
    haolongsun
        14
    haolongsun  
       2022-06-30 18:37:08 +08:00
    有没有一种可能,数据结构都能用图来表示,树也是一种特殊的图,链表也是,栈也可以,队列也可以。
    otakustay
        15
    otakustay  
       2022-06-30 19:17:52 +08:00   ❤️ 2
    然后有一天你发现这个树某一边查起来特别慢,于是苦心钻研并发明了平衡树
    Xusually
        16
    Xusually  
       2022-06-30 19:19:11 +08:00
    文艺复兴了属于是
    opengg
        17
    opengg  
       2022-06-30 19:25:52 +08:00
    有没有一种可能,内存中的栈和堆结构,就可以解决所有问题?
    PureWhiteWu
        18
    PureWhiteWu  
       2022-06-30 19:27:30 +08:00
    有没有一种可能,你需要存一个有环图?
    xylxAdai
        19
    xylxAdai  
       2022-06-30 20:51:52 +08:00
    有没有一种可能。键值 ID 叫做方法名,子叶叫做方法实现,保存数据的时候叫做序列化,这棵树的根节点是 main 函数。
    hello2090
        20
    hello2090  
       2022-06-30 20:58:58 +08:00
    有没有一种可能,一个数据库实现了这棵树,从此以后所有的变量都存在了数据库里
    pythonee
        21
    pythonee  
       2022-06-30 21:15:14 +08:00
    不需要模型抽象吗?

    客户、订单、产品、合同、项目、工单...
    SorcererXW
        22
    SorcererXW  
       2022-06-30 21:40:01 +08:00
    有没有一种可能,这个东西叫状态机
    GoogleMicrosoft
        23
    GoogleMicrosoft  
       2022-06-30 23:02:30 +08:00 via Android
    又不是不能用
    nothingistrue
        24
    nothingistrue  
       2022-07-01 09:16:24 +08:00   ❤️ 1
    哪有什么岁月静好,只不过有人在替你负重前行。你看到的只是一个树,但它背后是茫茫多的数据结构。别得不说,没有众多数据结构,数据库你都没有。
    SilentRhythm
        25
    SilentRhythm  
       2022-07-01 11:59:39 +08:00
    有没有一种可能,你的数据库其实只要一张表
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2633 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:20 · PVG 13:20 · LAX 21:20 · JFK 00:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.