STLite 数据结构作业:把容器接口落到内存与迭代器
STLite 是 ACM 班 CS1951 数据结构课的作业框架,要求实现 vector、deque、priority_queue 和 map,包括迭代器和复杂度要求。我的仓库是课程仓库的 fork,接口和测试来自上游。 deque 的存储 deque/notes.md 里记录了分块数组的设计:通过逻辑下标找到块号和块内偏移,再用这套坐标处理访问、迭代和元素移动。 实现容器的时候,接口写出来只是第一步。插入、删除和扩容之后,元素位置以及迭代器的行为都需要重新考虑。 内存和对象 笔记还讨论了元素没有默认构造函数的情况。块申请原始内存,容器在需要的位置构造元素;删除、清空和析构时则要销毁活对象。异常路径上也需要处理已经构造的部分。 笔记中还留了坐标用错、扩容后容量没有更新、边界遗漏等排查记录。具体实现和课程要求可以在仓库里查看。 相关链接 课程 fork · 课程上游 · deque 实现笔记
SJTU HPC 2026 学习记录:先把工具链和运行过程弄清楚
这里记录一下 SJTU HPC 2026 的学习和准备资料。仓库里有 Shell、C/C++、Makefile、CMake、CUDA 和 Python 构建测试脚本,笔记还涉及工具、网络、编译和语言。 编译过程 编译笔记把预处理、生成汇编、汇编成目标文件和链接分开记录。这样遇到问题时,可以先判断错误出现在哪一步:头文件和宏、语言本身的错误,以及链接时找不到符号,需要从不同地方排查。 练习既有单文件程序,也有多文件组织。项目大一点之后,编译选项、依赖关系和链接目标都需要构建文件帮忙管理。 GPU 代码 class06 目录包含 C++、CUDA 和 Python 文件,可以对照着看主机端调用、设备端计算以及构建和测试脚本如何连接。 这些资料主要是学习和练习记录;要比较性能,还需要具体的硬件、输入和测量方式。 相关链接 学习仓库 · 编译笔记 · class06 练习
CS189/289A 资料整理:给机器学习补上理论阅读入口
这里整理一下 Berkeley CS189/289A Spring 2024 的机器学习课程资料。仓库是从 cy-Yin 的课程资料仓库 fork 的,里面有 Discussion、考试材料和作业解答。 上游 README 中提到的作业解答属于原作者。这份 fork 主要作为资料入口,不能当作我自己的作业完成记录。 这门课的资料可以配合机器学习实现一起看:模型有哪些假设,目标函数为什么这样写,推导又依赖什么条件。做题时可以先自己推一遍,再对照解答检查。 上游也提到部分数据较大,数据和空白作业包需要从其他来源获取。下载之前记得对照课程版本和原仓库说明。 相关链接 我的公开 fork · 资料原作者 · 课程网站
MiniVim:原来光标后面有这么多事情
MiniVim 是基于交大 CS1958-01 课程框架的 C++17 编辑器项目。我的仓库是课程上游的 fork,下面记录一下项目中的模块和编辑流程。 模块 项目分为 Buffer、Window、Command、Renderer、Editor 和 Terminal,分别处理文本、可见区域、命令、渲染、编辑器状态和终端交互。 屏幕上的行号不一定等于文件中的行号;缓冲区修改之后,也需要由渲染部分把变化显示出来。看源码时可以从按键进入 Editor 开始,继续跟到作用于 Buffer 的操作。 模式和边界 Normal、Insert 和命令行模式下,相同按键可能有不同含义。除此之外,行首退格、光标移动到屏幕外等情况也需要明确处理。 课程提供基础要求、进阶说明和终端测试工具。这篇主要记录结构,没有重新运行完整课程测试。 相关链接 项目仓库 · 课程框架 · 源码
CUDA 中文文档:除了翻译,还得让人找得到
这里记录一下 CUDA Programming Guide 的简体中文整理项目。项目围绕 Release 13.3 组织内容,包含介绍、编程、进阶、特性、附录和参考部分。 站点使用 VuePress,提供章节导航和全文搜索。线程层级、执行方式和内存关系等内容也保留了相关图示,方便对照文字阅读。 翻译时需要注意术语的一致性,代码和 API 名称也要保持准确。尤其是涉及“仅当”“可能”“必须”的地方,少一个限定词就可能改变原意。 这是一份非官方中文整理,涉及行为保证、平台限制和版本差异时,建议对照对应版本的 NVIDIA 官方文档。站点、仓库和官方文档的链接放在下面。 相关链接 中文站点 · 项目与版本说明 · NVIDIA 官方文档
DesktopManager:桌面上的东西,能不能各归各位
DesktopManager 是一个桌面整理工具。它使用虚拟集合把文件归类,保存的是文件与集合之间的关联,不需要为了分组就移动原文件。 项目结构 项目使用 Tauri 2、Rust、Svelte 5 / TypeScript 和 SQLite。界面通过统一入口调用 Tauri commands,再进入领域逻辑和存储层。SQL 放在存储模块,Windows 桌面相关行为放在专门的适配模块。 仓库还记录了桌面监听、布局快照、工作场景、任务、日历、专注计时和日历导出等功能。 文件和状态 桌面工具还得处理文件消失、数据库升级和布局恢复等情况。架构文档中记录了迁移备份和缺失文件标记;功能状态文档则区分了自动测试、浏览器检查和 Windows 窗口验收。各功能的具体状态可以直接看仓库里的记录。 相关链接 项目仓库 · 架构 · 功能状态记录
南堂界遇:把幻想乡的活动规则搬到网页里
南堂界遇是围绕交大东方社幻想乡活动制作的项目。活动包含顺序推进的六个区域,以及能量、贡献和加权抽奖等规则。 玩家、管理和展示 玩家需要查看当前区域、任务和资源;管理员需要处理任务和奖励;大屏则负责展示活动进度。虽然三个界面显示的内容不同,它们都需要读取同一套活动状态。 数据保存 项目使用无第三方 npm 依赖的 Node.js 服务,状态保存在 JSON 文件中,并配有串行事务、原子写入、备份和流水记录。这样可以查看奖励和状态变化的记录,也便于出问题时排查。 当前方案面向单实例,不能直接推断多个进程同时写同一份文件也安全。规则和使用方式见项目仓库。 相关链接 项目仓库与规则说明
扬州 THO:热闹的小游戏,也需要一本明白账
扬州 THO 是一套东方活动系统,围绕琪露诺和大妖精两个阵营展开。玩家有体力,可以探索、遇到随机事件,活动还会记录积分和抽奖。 活动规则 一次探索可能消耗资源,也可能带来奖励。项目把玩家、管理和展示入口组织起来,由服务端处理操作是否合法以及状态如何变化,页面展示对应结果和阵营榜。 状态保存 服务使用无第三方依赖的 Node.js,状态保存在 JSON 文件中,并安排了串行写入、原子保存、备份和重置快照。 这套方案面向单实例。未经改造,不适合让多个实例同时写同一份状态文件。活动规则和使用说明可以在仓库中查看。 相关链接 项目仓库与使用说明
水源会话锁:给再看一眼加一点阻力
水源会话锁是一个用户脚本,可以在浏览水源时设置会话时长。它运行在 Tampermonkey、Violentmonkey 等脚本管理器中,是个人工具。 脚本提供预设和自定义时长,保存会话状态,也避免在同一会话里重复弹出提示。设置之后有短暂的撤销窗口,另外还提供次数受限的强制解锁,方便处理临时需要使用水源的情况。 状态保存依赖脚本管理器的存储能力。这个工具主要是给自己一个提醒,并不能阻止主动停用脚本或通过其他入口访问。 项目地址放在下面。 相关链接 项目与用户脚本
空教室雷达:别再一间一间开盲盒了
之前写过一篇空教室查询器,这里再记一下查询逻辑。 怎么判断有没有课 项目使用 Flask。查询接口接收日期、楼栋和起止节次,遍历楼层和教室的课程安排,排除时间有交集的教室。 把查询节次记作闭区间 [a, b],课程节次记作 [c, d]。两者不重叠的情况是 b < c 或 a > d;除此之外就存在重叠。这样包含、部分交叉和边界相接都可以用同一条规则处理。 课表和现场状态 当天的查询还会尝试补充现场占用信息和部分环境指标。课表反映的是排课安排,现场数据则是某个时刻的观测;没有排课并不一定代表教室里没有人。 学校接口的字段、权限和可用性可能变化,这次没有重新查询接口。使用时还是要以实际情况为准。 相关链接 项目仓库 · 查询代码














