软件服务

写了14年代码,我终于能把数据结构讲明白了

更新时间:2026-02-02点击次数:
相关介绍

小邢哥 | 14年编程老炮,拆解技术脉络,记录程序员的进化史

Hello,我是小邢哥!

最近接手了公司内部大模型的开发需求,跟团队过方案时发现个怪象:不少刚入行的兄弟,简历上“数据结构”那栏写得挺溜,课本上的定义倒背如流。

可一到实际开发,比如怎么高效处理大模型的Token序列?模型千亿参数该怎么存? 立马就懵圈,不知道该翻哪个“武器库”。

这让我想起14年前刚摸键盘的自己。那时候也是看着书觉得懂了,一写代码就掉坑。

今天借着刚做完技术架构调整的热乎劲,咱们不聊枯燥的数学定义,我就以一个老炮的视角,用大白话把这事儿彻底说透。新手看完能懂,老手看完能通。

PS:好久没更文了,确实是忙。年底团队动荡、大模型团队裁员,被迫我这个团队接手大模型项目,关关难过关关过。借着工作调整的契机,咱们重启更新。关注小邢哥,跟着哥在AI时代不掉队!


咱们写代码,本质上就干两件事:存数据、用数据。 存用户账号、存订单流水、存大模型里那成千上万个Token……

数据结构说白了,就是给这些数据找个最合适的“收纳箱”。 这个箱子选得好不好,直接决定了你后续查、改、删数据是“秒开”还是“卡死”。

举个我当年的血泪史: 2011年我写学生管理系统,统共就30个学生,我直接用数组存——学号、姓名、成绩一一对应。想查第5个学生?直接按位置拿,又快又爽。

后来上班做订单系统,一天新增10万条订单。我也没多想,惯性思维继续用数组。结果老板说要在中间插入一条加急订单,服务器直接卡到报警! 为什么?因为数组是“连在一起的格子”,你在中间插一条,后面的几万条数据全都得往后挪一位。这谁顶得住?

后来我换成了链表,问题迎刃而解。链表就像串珠子,插入新数据时,只需要把线剪断,系个新珠子上去就行,根本不用挪动其他数据。

你看,代码没写错,是“箱子”选错了。 选对结构,效率拉满;选错结构,服务器崩盘。这就是数据结构的核心价值。


很多新手容易把这俩混为一谈,其实特别好区分:

  • 数据结构是“收纳箱”本身(比如抽屉、文件柜、垃圾桶)。
  • 算法是“怎么用这个箱子”的操作手册(比如怎么找文件、怎么扔垃圾)。

举个最常见的哈希表

  • 数据结构视角:它是个带标签的收纳箱,每个数据贴个Key(标签)。
  • 算法视角:怎么设计这个标签(哈希函数)?如果有两份文件标签一样该怎么办(解决哈希冲突)?

结合我现在做的大模型给你讲:

  • 存参数:模型里的权重参数长度固定,要按位置快速计算,所以我们用多维数组(你可以理解为数组套数组),这是选“箱子”。
  • 算关联:注意力机制(Attention)要计算Token之间的关系,那个计算过程和逻辑,就是“算法”。


我从不建议死记硬背“链表的节点结构体怎么写”,你只需要记住“什么场景选什么箱子”。吃透下面这5个,能应付80%的开发场景:

结构

一句话比喻

适合场景

不适合场景

数组

抽屉柜

查多改少、长度固定

频繁插入删除

链表

串珠子

频繁增删、长度不定

按位置随机查找

哈希表

贴标签的文件柜

按关键词精准查找

范围查询、排序

家谱图

排序、范围查询

简单存取

社交关系网

复杂关联关系

简单线性数据

  • 特点:位置固定,每个抽屉有编号。
  • 场景查得多、改得少,数据量固定
  • 大模型实战:存Token的基础embedding向量。因为每个向量长度一样,且需要频繁按索引读取,用数组最稳。
  • 避坑:频繁增删数据的场景千万别用,挪数据能累死CPU。

  • 特点:每个数据带着一根线(指针),指着下一个数据。
  • 场景改得多、查得少,数据量随时变
  • 大模型实战:消息队列里的待处理任务。随时有新任务加进来,随时有任务被取走,链表处理起来行云流水。
  • 避坑:想找第1000个珠子?对不起,你得从第1个开始挨个数,效率极低。
  • 特点:给数据贴Key,查的时候直奔主题。
  • 场景按关键词秒查数据
  • 大模型实战:存Token ID和它的出现频率。给我一个ID,我不需要遍历整个词表,瞬间就能拿到它的数据。
  • 避坑:要注意“哈希冲突”(两个Key算出来位置一样),虽然语言底层帮我们处理了,但你心里得有数,极端情况下它会变慢。
  • 特点:层级分明,天然有序。
  • 场景数据要排序、要查范围
  • 实战:数据库的索引、大模型词表的层级分类。查“某个范围的数据”(比如金额100-500的订单),树结构能通过剪枝快速定位,不用傻傻全表扫描。

  • 特点:节点之间随意连接,关系错综复杂。
  • 场景数据之间有网状关联
  • 大模型实战:知识图谱(比如“李白-唐朝-诗人”的关系网)、社交软件的好友推荐。用数组或链表根本理不清这种多对多的关系,只有图能直观搞定。

14年下来,我见过太多“语法写得溜,一跑就卡壳”的代码。

  • 用数组存百万条日志,加一条数据卡半天;
  • 用链表存商品详情,用户搜索时转圈转到死;
  • 最离谱的:之前团队有新人用普通数组存模型的稀疏数据(里面90%都是0),结果内存直接爆了。后来换成图结构(或压缩存储),只存非零值和关系,内存占用瞬间降了90%,训练速度起飞。

这些问题,不是语法错了,是“内功”没练好,箱子选错了。

对于新手,我的建议是:别贪多,先练熟数组、链表、哈希表。 写代码时多问自己一句:“如果数据量翻10倍、100倍,我现在的这个结构还能扛得住吗?” 当你开始思考这个问题时,你就从“码农”开始向“工程师”进化了。


我现在做大模型开发,偶尔还会翻《数据结构与算法分析》。不是为了背定义,而是看大神们在面对极端复杂场景时,是怎么权衡利弊选结构的。

小邢哥碎碎念: 虽说我也在读研期间怼了一年多大模型,但到现在接手我们企业落地的,还得是实战出真知。大模型这块我也在摸索中前行,咱们可以一起交流。

这东西不是学会就丢的八股文,它是伴随你整个职业生涯的内功。从学生管理系统到电商高并发,再到如今的AI大模型,技术在变,数据结构的底层逻辑从未变过。

接下来我会继续更新“大模型开发之路”系列,下一篇咱们讲讲:选好了数据结构,怎么去理解主流算法呢?

觉得有用的兄弟,点个赞/收藏转发搞起来,有疑问评论区见,新手别怕,哥尽量都讲大白话!

Copyright © 2002-2026 尊龙时凯信息安全科技有限公司 版权所有HTML地图 XML地图 非商用版本  备案号:京ICP备2021000549号-3  
地址:四川省成都市武侯区簇桥街道太平园西路45号2单元901室  邮箱:admin@gosun.live  电话:400-729-3865