V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
gansteed
V2EX  ›  分享创造

最近在写一个系列《数据结构在实际项目中的使用》

  •  2
     
  •   gansteed ·
    jiajunhuang · 2019-09-10 07:58:29 +08:00 · 5241 次点击
    这是一个创建于 1880 天前的主题,其中的信息可能已经有所发展或是发生改变。

    访问: https://jiajunhuang.com/tutorial/data_structure/index.md

    在我本科学习数据结构的时候,由于没有项目实战经验,心里充满了疑惑,学习这些数据结构到底有什么用处?在毕业后的这几年, 接触了各式各样的项目,终于理解了数据结构在编程中的重要性。

    这个系列教程就是为了解决这样一个问题的,我将会使用很多实际项目中的场景,来说明一种数据结构解决了什么实际问题,他的各种 操作时间复杂度,有何种缺点和优点等等。

    由于种种数据结构的典型应用不同,因此本系列中,我们将涉及到 Python,Go 和 C 三种语言,还有一点点汇编知识,但是对此不要感觉到 害怕,他们之间的语法并不会相差太大,基本上 C 语言家族的语言都很类似,相信大家放下心中的恐惧之后可以轻松理解代码的意思。

    本系列分为 12 篇,分别介绍了 12 种数据结构在实际项目中的使用:

    数组(array)
    链表(linked list)
    字典(map 或 dict)
    栈(stack)
    队列(queue)
    大小堆(heap)
    集合(set(hashset, treeset))
    有序集合(树的实现和跳跃表实现,参考 redis)
    位图(bitmap)
    hyperloglog(参考 redis)
    radix tree 或 trie
    b tree 和 b+ tree
    

    昨天写完了第一篇 "数组(array)": https://jiajunhuang.com/tutorial/data_structure/array.md

    39 条回复    2019-09-16 10:03:53 +08:00
    cheneydog
        1
    cheneydog  
       2019-09-10 08:53:08 +08:00
    出书,出名,赚钱,迎娶白富美,走上人生巅峰。
    Natsuno
        2
    Natsuno  
       2019-09-10 08:54:44 +08:00
    支持
    usapla
        3
    usapla  
       2019-09-10 09:01:58 +08:00
    持续关注
    Jhonson
        4
    Jhonson  
       2019-09-10 09:06:32 +08:00
    跟我之前的想法很像,我希望是集思广益,比如 dubbo 里面用到了什么结构时很巧妙的? io 多路复用有哪些结构?每个人都讲讲一些工程中的数据结构,组合起来那就真的强!楼主加油!
    qsnow6
        5
    qsnow6  
       2019-09-10 09:12:42 +08:00
    收藏!
    CareiOS
        6
    CareiOS  
       2019-09-10 09:13:22 +08:00
    必须赞一个呀。
    doudouwu
        7
    doudouwu  
       2019-09-10 09:15:50 +08:00
    很有意思,插眼
    gansteed
        8
    gansteed  
    OP
       2019-09-10 09:36:24 +08:00
    @cheneydog 国内出书不赚钱(爆款除外)

    @Natsuno
    @usapla
    @qsnow6
    @CareiOS
    @doudouwu
    @Jhonson 感谢支持
    Egfly
        9
    Egfly  
       2019-09-10 09:37:59 +08:00   ❤️ 1
    找个高级一点的头衔,然后去开个课程,收费就完事了
    userGyl
        10
    userGyl  
       2019-09-10 09:46:42 +08:00
    收藏 关注
    gansteed
        11
    gansteed  
    OP
       2019-09-10 10:09:28 +08:00
    @Egfly 哈哈哈,收费课程以后再做

    @userGyl 感谢支持
    justin2018
        12
    justin2018  
       2019-09-10 10:12:43 +08:00
    nice
    wolfie
        13
    wolfie  
       2019-09-10 10:15:01 +08:00
    手写劝退。。。
    ipwx
        14
    ipwx  
       2019-09-10 10:16:49 +08:00
    我以为诸位学了这些数据结构,之后的职业生涯中在用到某个别人的库或者系统的时候,会自然地猜到这些数据结构的用处的。然而看来是我多想了……
    ipwx
        15
    ipwx  
       2019-09-10 10:17:47 +08:00   ❤️ 1
    我觉得其实一个优秀的程序员应该具有天生的好奇心,用库和系统会去探究其中的原理,自然会联想到数据结构,不需要别人写教程教的……
    gansteed
        16
    gansteed  
    OP
       2019-09-10 10:33:10 +08:00
    @justin2018 感谢支持
    @wolfie 哈哈,下一篇注解还是打字吧

    @ipwx 其实这个主要是针对工作经验不足的同学的,如开篇所说 "在我本科学习数据结构的时候,由于没有项目实战经验,心里充满了疑惑,学习这些数据结构到底有什么用处?在毕业后的这几年, 接触了各式各样的项目,终于理解了数据结构在编程中的重要性。"
    mlhorizon
        17
    mlhorizon  
       2019-09-10 10:53:11 +08:00
    支持楼主做科普,总结一下对自己也是有好处的。
    Kimiato
        18
    Kimiato  
       2019-09-10 11:13:20 +08:00 via Android
    收藏,关注
    bobsam
        19
    bobsam  
       2019-09-10 11:27:25 +08:00
    点赞~
    shyrock
        20
    shyrock  
       2019-09-10 11:41:01 +08:00
    读完了。。。
    问题是这根本不是本帖所说的“实际项目中的应用”啊。。。
    gansteed
        21
    gansteed  
    OP
       2019-09-10 11:44:14 +08:00
    @mlhorizon
    @Kimiato
    @bobsam 感谢支持

    @shyrock 项目不一定是业务强相关的项目,可能是编译器、runtime、框架实现等等。业务强相关的项目用数组的的确不多。
    xrr2016
        22
    xrr2016  
       2019-09-10 12:04:06 +08:00 via Android
    支持支持,Mark 一下
    lovelife1994
        23
    lovelife1994  
       2019-09-10 12:07:07 +08:00 via iPhone
    马克
    WytheHuang
        24
    WytheHuang  
       2019-09-10 12:44:35 +08:00 via Android
    马来人一下
    ClutchBear
        25
    ClutchBear  
       2019-09-10 13:24:08 +08:00
    这示例图也太艺术性了.
    gansteed
        26
    gansteed  
    OP
       2019-09-10 13:43:51 +08:00
    raysonlu
        27
    raysonlu  
       2019-09-10 15:18:53 +08:00
    马克,认真写,有深度,通俗,自然火起来的
    codespots
        28
    codespots  
       2019-09-10 16:38:13 +08:00
    关注,小弟前端,一直不知道数据结构在前端中的实际应用,可否在教程里大致提几个例子
    gansteed
        29
    gansteed  
    OP
       2019-09-10 17:02:02 +08:00
    @raysonlu 感谢建议


    @codespots 港真,我 js 用的少,这个可能有难度了
    netnr
        30
    netnr  
       2019-09-11 06:33:49 +08:00
    @gansteed 昨天刚聊到 数据结构、离散数学、数据建模,没上过大学,让我去看看这些东西,今天早上就看到老哥的主题了,缘分哪,持续关注
    qiaogaojian
        31
    qiaogaojian  
       2019-09-11 11:23:56 +08:00
    先回复 养肥在看
    allgy
        32
    allgy  
       2019-09-11 11:35:52 +08:00
    支持
    LeeChP
        33
    LeeChP  
       2019-09-11 12:17:19 +08:00 via iPhone
    插眼插眼
    Varchar
        34
    Varchar  
       2019-09-11 14:26:48 +08:00 via iPhone
    支持下
    BirlGoy
        35
    BirlGoy  
       2019-09-11 18:28:04 +08:00
    @ipwx 有道理。好奇心是程序员最最宝贵的品质。
    webshe11
        36
    webshe11  
       2019-09-12 06:10:44 +08:00
    这个博客的标题吓我一跳
    gansteed
        37
    gansteed  
    OP
       2019-09-12 09:30:13 +08:00
    @qiaogaojian
    @allgy
    @LeeChP
    @Varchar 感谢支持
    @webshe11 和“编程随想”无关的哈哈哈
    kuroismith
        38
    kuroismith  
       2019-09-12 10:17:35 +08:00
    推荐工作经验不足的朋友看看 redis 源码, 常见数据结构在 redis 里都有对应的实现, 而且相当简洁, 没什么骚操作.
    如果直接源码看不进去可以买本 redis 设计与实现, 写的比较清楚. redis 在业务中很常用, 方便和实际场景结合去理解.

    看完了再看 java / c++ 的标准库里面的实现, 就差不多了.
    boboyangmoumou
        39
    boboyangmoumou  
       2019-09-16 10:03:53 +08:00
    我要关注收藏,没事看看还不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2747 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:43 · PVG 22:43 · LAX 07:43 · JFK 10:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.