尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
C语言超级玛丽源码拆解:从编译、碰撞检测到状态机设计
简介这是一份基于 C 语言的超级玛丽 2D 游戏完整源码包面向想通过底层编程理解游戏开发的学生、初学者和自学者。源码覆盖游戏循环、角色动画、碰撞检测、键盘输入、地图关卡、音效播放等关键模块可直接分析游戏引擎的基本工作方式并学习内存管理与性能优化技巧。标签中虽同时出现 3D、JavaScript但主体仍是 C 语言 2D 工程适合做不同语言游戏开发思路的对比学习。压缩包约 7.41MB共 34 个文件其中 mp3 和 bmp 为主要资源文件承担背景音乐、跳跃/死亡/金币等音效及场景贴图cpp、h、vcproj、sln 等构成工程与源码主体方便查看项目结构和编译配置。目前已有 788 人学习下载研读后既能掌握 2D 平台跳跃游戏的完整搭建思路也能借鉴对象设计、碰撞响应和输入处理的具体实现适合作为 C 语言游戏开发入门与进阶参考。1. 拿到 c语言实现的超级玛丽游戏源码.zip先搞懂它值不值得读很多学 C 语言的人卡在同一点上翁恺老师的课能跟下来练习题的指针和数组也会写但一说到「写一个完整的游戏工程」完全不知道从哪下手。而一份 c语言实现的超级玛丽游戏源码.zip恰好是这种「语法都会、工程没见过」的人最需要的练手材料。它不只是一个游戏更是一套完整工程地图加载、碰撞检测、状态机、敌人 AI 和输入处理全都有代码量多在几百到两千行之间。下面要做的事就是把这个 zip 从解压、编译、跑通到看懂核心逻辑、改成自己的关卡一步步拆开讲清楚让你拿到手不再只是解压看一眼就关掉。2. 解压到跑通从 zip 到控制台窗口里的第一个像素2.1 解压和检查文件结构一眼判断这份源码能不能直接编译拿到super_mario_c.zip第一步不是急着解压而是先看它里面是什么形态。我一般会先解压到一个独立目录避免源码文件和后续生成的可执行文件混在一起后期想清理都不好下手。unzip super_mario_c.zip -d mario_src cd mario_src find . -type f | sort参数说明-d mario_src指定解压目录比直接解压到当前目录干净得多find列出的文件后缀能大致判断工程类型。如果全是.c和.h说明是纯 C 工程适合 gcc 直接编译如果出现.sln或.vcxproj说明作者是在 Visual Studio 里写的环境要对应如果出现Makefile说明编译入口已经给你准备好了直接make就行。接下来要找整个程序的入口函数。无论工程多复杂程序都是从一个main函数开始的它也是你读代码顺序的锚点grep -rn int main *.c返回结果通常是game.c:123: int main(int argc, char *argv[])这种格式记下文件名和行号。如果 grep 结果为空说明这不是普通控制台程序可能是 Windows 窗口程序入口是WinMain也可能是作者把main藏进了头文件。我还会顺手查一下结构体定义。这类源码包最常见的数据骨架是玩家、敌人、地图三个结构体它们决定后面所有逻辑的写法grep -n typedef struct *.h看到Player、Enemy、Map三个结构体基本可以断定这是一个完整度较高的横版闯关框架不是几十行的玩具 demo。这一步能让你在打开源码之前就大致知道代码的数据骨架长什么样后面读逻辑时心里有底。2.2 用 gcc 最小命令跑通编译Windows 和 Linux 各给一套这类源码最常见两种形态纯控制台字符版用printf逐帧打印画面依赖极少适合教学带图形库的版本用 SDL2 或 Windows API 画窗口画面好但环境配置繁琐。第一次跑的时候先确认依赖了什么再决定编译命令。先搜一下 include 语句看看有哪些外部依赖grep -rn #include *.c *.h | grep -v \.h看到stdio.h、conio.h、windows.h这是控制台版或 Windows API 版看到SDL.h或SDL2/SDL.h就是 SDL 图形版。下面分别给命令。控制台版在 Linux 下的最小编译命令gcc -o mario main.c game.c level.c -lncurses -lm参数说明-o mario指定输出文件名main.c game.c level.c是参与编译的源文件缺一个就会报undefined reference-lncurses链接 ncurses 库控制台游戏靠它做光标定位和键盘监听-lm链接数学库游戏逻辑里用到sqrt、pow这类函数就需要它。Windows 下用 MinGW 编译命令类似只是库名不同gcc -o mario.exe main.c game.c level.c -lncurses注意 Windows 下 MinGW 的 ncurses 包通常叫 PDCurses如果报找不到 ncurses换成-lpdcurses再试。SDL 版则把 ncurses 换成-lSDL2 -lSDL2_image并且编译后要把 SDL2.dll 放到 exe 同目录否则编译能过、运行必挂。如果你用的是 VSCode 写 C 语言编译命令可以写进.vscode/tasks.json的args数组按CtrlShiftB一键编译不用每次手敲。VSCode 配置 C 语言环境的本质就是把 gcc 路径、头文件路径、库链接三件事组合起来和纯命令行没有区别只是把参数固定成了配置文件。2.3 三处最常见的「跑不起来」入口、动态库、编码编译过了不等于能跑。程序一闪而过或者直接报错原因翻来覆去就那几类。第一类链接时报undefined reference to WinMain。含义是链接器在找 Windows 窗口程序的入口WinMain但代码里只有main。这类源码多半是用 Visual Studio 的窗口工程写的入口确实是WinMain。解决方法是先用 2.1 的 grep 确认入口函数如果写的是WinMain用 MinGW 编译时要加-mwindows并且把消息循环所在的源文件一起编进去。第二类运行后黑窗口一闪就关。这不是代码问题而是控制台程序执行完窗口被系统回收了。在main函数末尾return 0;之前加一句调试代码system(pause);或者getchar()让程序停在结束前等你按一个键。这属于调试手段确认逻辑没问题后记得删掉。第三类控制台显示乱码。源码注释和字符串如果是 GBK 编码终端是 UTF-8就会满屏雪花。这不一定影响游戏逻辑但影响你读代码时的判断。Windows 下在终端执行chcp 936切回 GBK 代码页源码是 UTF-8 就执行chcp 65001。Linux 下做转码再编译iconv -f GBK -t UTF-8 game.c game_utf8.c转码后建议换文件名别覆盖原文件万一转码出问题还有备份。这三个问题解决完游戏基本就能跑起来了。接下来才是重头戏这份源码真正值钱的地方是怎么用纯 C 语言把跳跃、碰撞、地图这些东西做出来的。3. 核心机制拆解地图、碰撞和状态机是怎么用纯 C 写出来的3.1 二维字符数组做关卡地图数据和逻辑分离是第一课翻这类源码你会发现地图几乎不用任何图形资源而是一串字符。这是早期控制台游戏的标准做法也是 C 语言入门者最容易看懂的部分。#define MAP_W 28 #define MAP_H 15 char map[MAP_H][MAP_W] { ############################, # # # #, # ? # ? # ? #, # # # #, # * * E #, ############################, };这里每个字符代表一种地图元素#是墙或地面?是砖块*是金币E是敌人出生点。游戏渲染时只需要双重循环把字符逐个打印到屏幕for (int row 0; row MAP_H; row) { for (int col 0; col MAP_W; col) { putchar(map[row][col]); } putchar(\n); }逻辑说明更新玩家位置后用map[row][col]查看当前位置是什么元素判断能不能走玩家吃到金币把该位置的字符改成空格 下次渲染就不会再显示撞到?砖块把?改成空砖B或直接去掉。这种做法把「地图数据」和「游戏逻辑」彻底分开。想换一关不需要改任何代码只需要换一个字符数组。C 语言基础扎实的人看到这里会意识到这就是数据驱动逻辑的最朴素形态。读这份源码时建议优先把map数组和渲染循环找出来读透后面所有行为逻辑都围绕这张表展开理解了它整个游戏的地基就稳了。3.2 碰撞检测的 AABB 思路从「玛丽为什么会穿墙」说起新手玩这类源码最容易遇到的困惑是为什么角色走到墙边会卡住但有时候又会穿过去半个身子答案在碰撞检测的实现上。横版游戏最常用的碰撞检测是 AABBAxis-Aligned Bounding Box把角色、砖块、敌人全部抽象成「矩形」判断两个矩形是否重叠。C 语言实现一个通用的矩形相交检测只需要四个比较int check_collision(int ax, int ay, int aw, int ah, int bx, int by, int bw, int bh) { return ax bx bw ax aw bx ay by bh ay ah by; }逻辑说明ax, ay是第一个矩形的左上角坐标aw, ah是宽高判断不相交的条件是「A 的右边界在 B 左边界的左边」或「A 的下边界在 B 上边界的上面」取反就是相交。一次调用判断一对矩形实际游戏里要遍历角色周围的几个格子分别检测。实际使用时不能只检查角色中心所在的当前格而是把角色位置映射到地图坐标再逐个格子检测。以踩到地面为例int tile_x (player.x player.w / 2) / TILE_SIZE; int tile_y (player.y player.h) / TILE_SIZE; if (check_collision(player.x, player.y, player.w, player.h, tile_x * TILE_SIZE, tile_y * TILE_SIZE, TILE_SIZE, TILE_SIZE)) { // 撞上了把玩家位置吸附到格子顶部 player.y tile_y * TILE_SIZE - player.h; player.vy 0; }参数说明TILE_SIZE是每个格子的像素尺寸player.x player.w / 2取玩家中心的列坐标用来判断脚下踩的是哪个格子检测命中后把玩家 y 坐标吸附到格子顶部防止反复穿透。穿墙的根因通常是帧率不稳时位移量过大一次移动超过一个格子检查时已经跨过了那面墙。解法是固定时间步长把逻辑更新频率锁死在 60 次/秒或者限制每帧最大移动距离不超过TILE_SIZE / 2这样碰撞检测永远不会漏掉一格。这类源码里常见的做法是后者因为实现最简单一个if就能兜住。3.3 状态机管住玛丽的跳跃和下落enum switch 足够玛丽从按下跳跃键到落回地面中间经历「起跳加速、上升减速、到达最高点、开始下落、落地」五个阶段。用一堆 if 判断去处理一定会乱这类源码普遍的做法是引入状态机一个枚举加一个 switch。typedef enum { STATE_STAY, STATE_RUN, STATE_JUMP, STATE_FALL, STATE_DEAD } PlayerState; PlayerState state STATE_STAY; float vy 0.0f; // 垂直速度 float gravity 0.4f; // 重力加速度更新逻辑void update_player(Player* p) { switch (p-state) { case STATE_JUMP: p-vy - gravity; // 上升阶段速度逐渐减小 p-y p-vy; if (p-vy 0) { // 达到最高点转下落 p-state STATE_FALL; } break; case STATE_FALL: p-vy gravity; // 下落阶段速度逐渐增大 p-y p-vy; if (check_ground(p)) { p-y ground_y; p-vy 0; p-state STATE_STAY; } break; default: break; } }逻辑说明按下跳跃键时执行vy -8.0f并把状态切成STATE_JUMP每次更新先让vy被重力削减再移动 y 坐标形成抛物线轨迹vy 0说明到达最高点自动切到FALL落地检测通过check_ground完成内部就是 3.2 的碰撞函数加上脚下格子的判断。常见误用是把 JUMP 和 FALL 合并成一个状态用if (vy 0)区分方向。这在简单场景能跑但遇到踩敌人反弹、顶砖块反弹、被顶到天花板这类需要强制改变速度方向的情况就不好处理。分离状态的写法让你可以在任何地方强制设置state STATE_JUMP并给一个向上的初速度逻辑清晰得多。指针在这类源码里出现频率很高update_player(Player* p)直接操作结构体指针而不是传值就是为了在函数内部修改调用方的状态。如果你读源码时看到-操作符记住这个意图就够了。另外注意p-y p-vy这种写法如果结构体里 y 是 int建议把 y 也定义成 float否则浮点速度会被截断跳跃手感会发黏。4. 把源码改成自己的游戏敌人、道具和存档的常见改法4.1 敌人 AI 就三个参数移动范围、速度、触发方向很多新手拿到源码后第一个想改的就是敌人。玛丽里的板栗仔看起来有智能其实行为简单到令人发指在一个固定区间内来回走碰到墙或走到区间边界就掉头。这类源码里敌人的结构体通常长这样typedef struct { int x, y; int start_x, range; // 出生点 x 坐标和巡逻半径 int speed; // 移动速度 int dir; // 1 向右-1 向左 int alive; } Enemy;更新逻辑只需要几句话void update_enemy(Enemy* e) { if (!e-alive) return; e-x e-speed * e-dir; if (e-x e-start_x - e-range || e-x e-start_x e-range) { e-dir -e-dir; // 走到边界掉头 } }参数说明start_x是敌人出生位置的 x 坐标range是巡逻半径speed直接控制难度调大一倍玩家反应时间就少一半dir只有 1 和 -1 两个值碰撞逻辑里也靠它决定踩到敌人时往哪边弹。参数作用改动建议start_x敌人出生点改到要守卫的路口range巡逻半径设为 0 变成站桩守卫speed移动速度循序渐进调大别直接翻倍dir初始方向1 或 -1影响出生后先往哪走最常改的两个地方一个是range把它改成 0 就成了只会原地站桩的守卫适合放在关键路口另一个是speed做难度递增时每过 30 秒给场上存活的敌人统一加一次速。这类改动风险极低因为敌人状态只受这几个字段影响不需要动别的模块改坏了也就影响一个敌人。4.2 加一种道具从地图标记到碰撞判断只动三个地方玛丽最有辨识度的设计是「顶砖块出蘑菇」。实现这个效果在字符地图体系里只需要三步地图标记、碰撞检测、效果触发。第一步在地图数组里用新字符表示「含道具的砖块」比如M代表蘑菇砖char map[MAP_H][MAP_W] { ############################, #M # # #, # ? # ? # ? #, # # # #, # * * #, ############################, };第二步在玩家顶砖块的碰撞分支里加判断if (tile M) { map[tile_y][tile_x] B; // 砖块变成顶过的空砖 spawn_item(tile_x * TILE_SIZE, (tile_y - 1) * TILE_SIZE); }第三步在道具更新逻辑里判断玩家是否碰到它if (check_collision(player.x, player.y, player.w, player.h, item.x, item.y, item.w, item.h)) { player.lives 2; // 吃了蘑菇进入大玛丽形态 item.alive 0; }逻辑说明spawn_item在这个结构里是「在指定位置生成一个移动道具」的初始化函数如果源码里还没有自己加一个结构体和对应初始化函数就行道具本体可以复用敌人那个结构体只是类型标记不同。需要修改的位置极其明确——地图定义在数组里顶砖块逻辑在碰撞分支里生效逻辑在道具更新函数里。三处改完一个完整的新道具系统就进来了。如果你想要的是增加一种敌人而不是道具流程完全一样地图里换一个字符碰撞分支里换成敌人的出生函数不需要改架构。这就是字符地图带来的扩展性改哪里、加哪里肉眼可见。4.3 存档读档fwrite 写结构体比想象中更需要小心「死了重新从第一关开始」是这类源码最常见的体验短板。加一个存档功能不难难点在于用 C 的文件读写处理结构体时容易踩坑。最简单的做法是把玩家和关卡状态写进一个二进制文件typedef struct { int level; int score; int lives; int x, y; } SaveData; void save_game(Player* p) { SaveData data { p-level, p-score, p-lives, p-x, p-y }; FILE* fp fopen(save.dat, wb); if (fp NULL) return; fwrite(data, sizeof(SaveData), 1, fp); fclose(fp); } int load_game(Player* p) { SaveData data; FILE* fp fopen(save.dat, rb); if (fp NULL) return 0; fread(data, sizeof(SaveData), 1, fp); fclose(fp); p-level data.level; p-score data.score; p-lives data.lives; p-x data.x; p-y data.y; return 1; }逻辑说明fwrite(data, sizeof(SaveData), 1, fp)一次写入整个结构体简单直接读取时用同样的结构体定义去fread。这里有三个必须注意的坑。第一结构体里有指针字段时不能直接写文件指针地址换一个进程就失效了必须把它指向的内容序列化成普通数据。第二不同编译器对结构体的内存对齐处理不同用#pragma pack(1)禁止对齐保证文件格式跨平台可读。第三建议在SaveData里加一个版本号字段比如第一字节固定为0x5A读取时先校验以后扩展存档字段时还能兼容旧存档。读档通常放在标题画面的按键检测里按L键触发load_game。这类源码的 main 函数里一般有游戏循环和菜单循环两个阶段把存档函数接在菜单分支里最自然不需要改动游戏主循环。5. 避坑记录编译报错、乱码、伪加密和卡顿的血泪清单5.1 现象gcc 报 undefined reference to WinMain说缺 main 函数原因这份源码如果是 Windows 图形版程序入口不是main而是WinMain。用 gcc 在 MinGW 环境下编译时链接器默认找main找不到就报这个错。还有一种可能是main函数拼成了mian这种错误在网络下载的源码包里也真实出现过。解决先用grep -rn WinMain\|int main *.c确认入口函数。如果只有WinMain那是窗口程序编译命令加参数gcc -o mario.exe win_main.c game.c -mwindows -lgdi32-mwindows告诉链接器这是 Windows 窗口程序-lgdi32是绘图接口的库。如果你机器上装着 Visual Studio直接打开.sln工程文件按 F5 更省事别在 MinGW 里跟链接参数较劲。Linux 下想编译 Windows 图形版会有额外的跨平台坑建议直接在 Windows 环境跑。5.2 现象源码中文全是乱码注释和字符串像「鍦ㄧ嚎」一样原因写这份源码的人大概率用的是 GBK 编码的 Windows 中文系统源码文件是 GBK 编码你的终端或 VSCode 默认 UTF-8。字符编码不一致中文字节流按错误的映射解析就显示成乱码。解决先用file game.c确认编码输出ISO-8859或Non-ISO extended-ASCII基本就是 GBK。Windows 终端执行chcp 936切回 GBK 代码页再运行VSCode 里把右下角编码从 UTF-8 改成 GBK 重新加载。Linux 下直接转码再编译iconv -f GBK -t UTF-8 game.c game_utf8.c转码后建议保留原文件用新文件名参与编译。我见过有人直接覆盖原文件转码意外中断后源码全毁只能重新下载。5.3 现象zip 解压提示要密码或报 CRC 错误但作者说没加密原因这类源码 zip 在网上流传时经常被人改动过加密标志位出现「伪加密」。zip 格式的目录区里有个general purpose bit flag字段第 0 位是加密标记。某些工具打包时把这一位置 1 但内容实际没加密解压工具看到标志位就要求输密码。解决用 7-Zip 打开文件如果能正常看到文件名列表、点解压才要求密码多半就是伪加密。先用 Python 的 zipfile 模块检查标志位import zipfile z zipfile.ZipFile(super_mario_c.zip) for info in z.infolist(): print(info.filename, hex(info.flag_bits))看到0x1说明加密位被置位。确认内容没加密后用 7-Zip 的「修复压缩包」功能重建目录区或者用脚本把文件逐个读出重新打包。处理完重新测试一次完整解压验证所有文件可读再开始编译别急着动手写代码。5.4 现象游戏能跑但画面明显一顿一顿跳一下就卡一下原因控制台游戏最常见的卡顿根源有两个。一是每帧全量清屏重绘system(cls)在 Windows 下非常慢每秒调用几十次必然卡二是Sleep位置放错有些源码把延时放在逻辑更新之前导致逻辑和渲染互相等待。解决把system(cls)换成直接写 ANSI 光标归零序列printf(\033[H);\033[H只移动光标不清屏配合逐字符覆写地图比清屏快非常多。Sleep要放在渲染完成之后正确顺序是「处理输入 → 更新逻辑 → 渲染 → 延时」while (running) { handle_input(); update_logic(); render(); Sleep(16); // 约 60 FPS }如果改完还是卡检查update_logic里是不是每帧遍历了全图所有 tile 做碰撞检测。优化方式是把检测范围限定在玩家周围 3×3 格子里远处的 tile 完全不需要判断。控制台游戏每帧能做的事情有限把计算量聚焦在玩家附近是性价比最高的优化。6. 把马里奥改成你的关卡文本地图加载与控制台动画验证技巧跑通和读懂只是第一步这类源码真正的价值是你可以用极低成本造自己的关卡。地图是字符数组这个设计带来了一个意外便利可以用任何文本编辑器画关卡然后让程序把它读进来。int load_level(const char* filename, char map[MAP_H][MAP_W]) { FILE* fp fopen(filename, r); if (fp NULL) return -1; char line[256]; int row 0; while (fgets(line, sizeof(line), fp) row MAP_H) { line[strcspn(line, \r\n)] \0; // 去掉行尾换行符 strncpy(map[row], line, MAP_W); row; } fclose(fp); return row; }用fgets逐行读取文本文件到地图数组每行画好 28 个字符保存成level1.txt运行时就加载它。这样画关卡不再需要改源码所有#、?、*都可以直接用文本编辑器排布改一个字符就是改一块地形所见即所得。验证游戏逻辑我建议用三步法。第一步把地图缩到 8×5只留两面墙和一个金币单步走确认移动和碰撞正常第二步加一个敌人range设成 2观察约 30 秒确认掉头逻辑稳定第三步把重力从 0.4 改到 0.2确认跳跃高度变化符合预期再把 0.2、0.4、0.6 三组参数各跑一分钟选手感最好的。参数先用#define定义在文件头部改起来不用满文件搜索。我最早拿到这类源码的时候第一件事是删掉所有看不懂的代码只留地图数组和渲染循环然后一个功能一个功能加回去。那比从头读完整源码效率高得多也让我后来再遇到任何「先辈代码」都不犯怵。改这类便携源码最重要的是保持「小步验证」的节奏每加一个功能都编译跑一次不要攒一大堆改动再一起调。希望帮到你。本文还有配套的精品资源点击获取
RELATED

相关推荐

ASP.NET毕业设计新闻系统源码解析:从跑通到改造实战

ASP.NET毕业设计新闻系统源码解析:从跑通到改造实战

简介:这套ASP.NET新闻系统C#毕业设计版源码,主要面向计算机相关专业学生、个人开发者及小型团队,用于快速搭建具备新闻发布与管理功能的网站,避免从零编写基础模块。资源包共24个文件,约329KB,文件类型覆盖…

📅 2026/10/1 10:37:57
多类车辆目标检测数据集:YOLO标注与自动驾驶实践

多类车辆目标检测数据集:YOLO标注与自动驾驶实践

简介:面向自动驾驶、智能交通与计算机视觉研究的多类车辆目标检测数据集,覆盖自行车、公交车、轿车、摩托车、卡车及通用车辆六类道路目标。数据采集自真实日间交通场景,包含不同拍摄角度、目标距离、车辆遮挡与光照变化等现实情况&#xff0…

📅 2026/10/1 10:37:57
SpringBoot+Vue毕业论文管理系统实战指南

SpringBoot+Vue毕业论文管理系统实战指南

简介:这是一套面向计算机专业本科生及初级Java开发者的毕业设计实战项目源码,聚焦高校毕业论文/设计全流程管理场景,提供从选题申报、导师分配、进度跟踪到文档提交的完整功能闭环。资源基于SpringBoot后端框架与SSM技术栈构建,集…

📅 2026/10/1 10:37:57
MORE NEWS

更多资讯

📰

华硕路由器上跑AI提示流:Go边缘网关与编排器实战

1. 为什么要在路由器上跑 AI 提示流把 AI 能力塞进一台华硕路由器,听起来像是极客的恶趣味,但真做过一轮之后你会发现,这个方向解决的是一个非常具体的痛点:家庭和小型办公网络里,越来越多的智能请求需要就近处理&…

📰

Skills Manager:统一管理AI编程工具Agent技能碎片化

各家的AI编程工具卷到今天,“Agent技能”已经从一个概念变成了实实在在的生产力。我前后把社区里活跃的那批工具翻了个底朝天,整理出54款在官方或社区层面支持了某种形式Skills的AI编程工具,也就是通过SKILL.md这类文件给Agent注入可复用能力…

📰

四元数与分支定界:存在外点Wahba问题的可证明最优解

1. 从一次失败的姿态解算说起:外点才是真正的敌人我接触Wahba问题是在好几年前做无人机视觉惯性导航的时候。当时项目里需要用双目相机和IMU联合估计飞行器的姿态,跑的是经典Davenport q-method加Q方法求解。仿真数据表现很好,误差曲线漂亮得…

📰

MCP server 实战:让 AI 代理自动发现并调用你的小产品

1. 从一个“没人发现”的小产品说起 去年年底我把自己做的一个小工具挂到了网上,功能很垂直——帮独立开发者批量检查落地页的 SEO 基础项,比如 title 长度、meta 描述缺失、H1 重复、图片 alt 为空这类琐碎但影响收录的问题。上线三个月,自然…

📰

Redis 8.0 向量数据库实战:从缓存到 AI 检索与 Agent 记忆存储

1. Redis 接入 AI 到底意味着什么Redis 这个名字,做后端开发的基本都绕不开。缓存、分布式锁、消息队列、排行榜,哪儿都有它的身影。但这次它跟 AI 挂上钩,很多人第一反应是:Redis 也要搞大模型了?其实不是。所谓“Red…

📰

Redis接入AI:五大核心场景与实战指南

1. 先想清楚:Redis接入AI,到底接在哪个环节聊Redis和AI之前,先讲个观察:过去十年,绝大多数开发者眼里的Redis只是个"缓存中间件",放着热点数据、扛住高并发查询,跟机器学习、深度学习…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬