Flask+微信小程序开发宿舍管理系统:从数据库设计到部署上线全记录
做一个学生宿舍管理系统听起来不算新鲜但真把它从一个点子推进到小程序上线可用过程中要趟的坑比预想得多。这个项目我用Python的Flask写后端接口前端用微信小程序原生开发涵盖了学生入住退宿、宿舍分配调整、故障报修、查寝打卡、公告通知、水电费统计这些宿舍管理最常见也最刚需的功能。整套东西做完最大的感受就是这是一个麻雀虽小五脏俱全的完整业务系统尤其适合正在学Python、想体验从零到一完整开发链路的朋友当作练手和参考。本文就把整个项目的思路、核心代码、联调细节和部署经验一次说透。1. 项目背景与整体思路拆解1.1 为什么选Flask而不是Django或FastAPI选后端框架的时候我其实在Flask和FastAPI之间犹豫过一阵。FastAPI这两年风头很猛自带OpenAPI文档异步支持也好对新手来说写起来并不难。但最后我还是选了Flask原因很实在Flask的生态更成熟第三方扩展几乎覆盖了所有常见需求从登录鉴权到ORM映射再到后台管理都有现成的方案可以组合。宿舍管理系统这种偏传统管理类的业务核心是稳定的CRUD和清晰的数据关系并不需要高频的异步IOFlask这套同步模型反而更直观。Django我也用过它确实把ORM、Admin后台、认证都集成好了省事是真省事但问题在于太重了。一个宿舍管理系统的前端是小程序后端只需要提供一堆JSON接口Django的模板系统、Admin后台可能根本用不上反而把项目体积撑得很大。Flask的哲学是微核心、按需扩展你需要什么就挂什么扩展这对小型项目来说非常友好。实际开发的时候我可以用蓝图中模块化组织代码用Flask-SQLAlchemy管数据库用PyJWT做token鉴权每一层都清清楚楚。还有一个很务实的理由Python新手找参考资料的时候Flask的资料密度是最高的。遇到Flask怎么处理跨域Flask怎么部署到服务器这类问题一搜基本都有现成答案踩坑的试错成本低很多。FastAPI虽然文档也写得好但国内社区的中文资料数量和深度目前还是比Flask差一截。做项目最怕卡在一个小问题上没人可问选Flask就是选一个更稳妥的起点。1.2 前端为什么选微信小程序而不是纯网页宿舍管理系统的使用者是学生和宿管阿姨这两类人的使用场景很有特点学生不会专门打开电脑去报修查寝宿管阿姨对复杂网页操作更是敬而远之。微信小程序的好处是扫码即用、不用安装打开微信搜一下或者扫个码就能进入系统对非技术用户来说几乎没有学习成本。这比H5页面强的地方在于它有微信的生态能力比如登录的时候可以直接用微信授权手机号也能通过官方组件获取省掉一套短信验证码体系的开发。纯网页方案我也考虑过但想到后续要部署、要通知到每个人网页端的触达效率明显不够。小程序有订阅消息能力报修进度有变化、查寝结果有更新的适合我可以主动给用户推一条服务通知这个体验是网页端很难做到的。加上微信小程序的基础组件对表单、列表、相册上传这些场景支持得不错开发量不会比做一个响应式网页大多少。顺带说一句如果你更熟悉Vue那套写法可以考虑用uniapp来写小程序端它本质是把Vue语法编译成小程序代码后面要同时出H5版或者App版的时候能省不少事。我这个项目用的是原生小程序开发理由是宿舍管理系统的页面结构不算复杂原生开发对调试工具和API的掌控更直接遇到问题也更容易定位。1.3 整体架构与数据流转整个系统的结构可以拆成三层微信小程序前端、Flask后端服务、数据库存储。小程序负责页面展示和用户交互所有业务数据都通过HTTP请求发给Flask后端后端处理完再返回JSON数据。数据库我选了MySQL因为宿舍管理系统涉及学生信息、宿舍床位、报修单、查寝记录这些关系型数据用MySQL的表关联来查某个宿舍楼还有哪些空床位之类的问题非常顺手。开发阶段用本地MySQL部署到服务器上再换成云数据库迁移成本很低。数据流转的典型场景是这样学生在小程序里提交一个报修单前端把表单字段打包成JSON通过wx.request发到Flask的/api/repair接口Flask拿到数据后先做参数校验确认学生身份和宿舍信息有效再写入报修表并返回一个成功的JSON。然后宿管端小程序拉到报修列表把状态从待处理改成处理中更新操作同样走对应的接口。整个过程都是标准的REST风格接口路径按资源命名方法按操作类型区分前后端联调的时候非常容易对齐。2. 核心功能设计与数据库建模2.1 宿舍管理系统最核心的业务模块拆解开工之前我把宿舍管理系统的业务模块列了一个清单最终敲定六个学生管理、宿舍分配、报修管理、查寝管理、公告通知、水电统计。学生管理管的是学生档案包括学号、姓名、所属院系、联系方式、入住状态这些基础信息宿舍分配管的是床位资源新生来了要分配宿舍毕业了要办理退宿中间还可能换宿舍报修管理是宿舍使用频率最高的功能学生报修水管漏水、灯泡坏了宿管接单、派工、反馈结果都要记录在案。查寝管理这个模块比较有宿舍特色宿管阿姨每晚查寝的时候直接在系统里勾选每个宿舍的应到、实到人数缺勤的学生会自动记录。公告通知则负责发布卫生检查结果、停水停电提醒这类消息推送到学生端。水电统计就是每月记录每个宿舍的用电量、用水量生成账单。六个模块听着不多但它们之间的数据是互相勾连的比如报修单要关联学生、宿舍、处理人三个维度查寝记录要关联宿舍和当日值班宿管这就对数据库设计提出了比较清晰的要求。2.2 数据表设计文档与字段说明数据库我按业务域拆成用户、宿舍、业务三类表。用户表存学生和宿管的基本信息核心字段是openid和roleopenid是微信登录后拿到的用户唯一标识role用来区分学生、宿管、管理员三种角色。宿舍表存楼栋、房间号、床位数量每个宿舍有独立的id。业务表包括报修单、查寝记录、公告、水电账单每张表都通过外键关联到用户表或宿舍表。举个例子报修单表的设计大致是这样的CREATE TABLE repair_order ( id INT AUTO_INCREMENT PRIMARY KEY, student_id INT NOT NULL, dorm_id INT NOT NULL, category VARCHAR(32), description VARCHAR(500), images VARCHAR(1000), status TINYINT DEFAULT 0, assignee VARCHAR(50), create_time DATETIME DEFAULT CURRENT_TIMESTAMP, finish_time DATETIME, FOREIGN KEY (student_id) REFERENCES user(id), FOREIGN KEY (dorm_id) REFERENCES dorm(id) );status字段我用TINYINT存数字状态0待处理、1处理中、2已完成、3已关闭比直接存字符串省空间而且前端拉数据的时候判断逻辑也简单。images字段专门用来存图片路径小程序端用wx.uploadFile上传图片到后端指定目录路径以逗号分隔存到一个字段里减少表数量。这种设计牺牲了一点范式但对报修单这种展示型业务来说查询速度更快写起来也省事。2.3 角色权限体系怎么建宿舍管理系统有三种角色学生、宿管、管理员。权限差异很明显学生只能操作自己的报修和查看自己的宿舍信息宿管可以处理报修、录入查寝结果、发布公告管理员则拥有全部权限包括分配宿舍、管理用户、查看所有统计。我用一张user表加上role字段来区分不同接口在Flask里通过自定义装饰器做权限拦截。def role_required(roles): def decorator(f): wraps(f) def wrapper(*args, **kwargs): token request.headers.get(Authorization) payload verify_token(token) if payload is None: return jsonify(code401, msg登录已过期) if payload.get(role) not in roles: return jsonify(code403, msg没有权限) return f(*args, **kwargs) return wrapper return decorator这样写的好处是接口权限一目了然我只需要在路由上加一行装饰器就能控制访问范围。实际操作的时候我会把角色校验和登录校验分成两层先用login_required验证token有效性再用role_required验证角色权限。实测下来这个方案在小项目里足够清晰不用引入复杂的权限框架。需要注意的一点是token里的role字段是从数据库读出来签进去的如果用户角色变了要重新登录拿新token才能生效。3. Flask后端接口实现的关键细节3.1 工程目录与配置管理Flask项目我习惯按模块分包而不是把所有代码塞进一个app.py。目录结构大概是这样config.py放配置models.py放数据库模型api目录下按业务域拆蓝图比如user_api.py、dorm_api.py、repair_api.py。每个蓝图文件里实现该模块的所有路由然后在入口文件里注册蓝图和扩展。这样做的优点是多人协作时互不干扰代码量大了也不会乱。数据库的连接配置我用环境变量管理开发环境和生产环境的值不同。比如数据库的账号密码、JWT的密钥这些敏感信息绝不硬编码在代码里而是从.env文件读取。这里有个坑要提醒Flask的SQLAlchemy连接MySQL的时候注意字符集配置如果不显式设置utf8mb4存emoji或者生僻字的时候会报错中文乱码问题非常普遍。我在连接串尾部加上charsetutf8mb4之后就没再出过这类问题。3.2 微信登录鉴权与token签发小程序端的登录流程是每个新手最容易卡住的地方。标准流程是这样的小程序端调用wx.login获取一个临时code把code发给Flask后端后端再拿这个code去微信的code2Session接口换openid和session_key。code只能用一次有效期五分钟。换到openid之后我先查数据库里有没有这个openid没有就自动注册一个新用户有就直接签发token返回给前端。app.route(/api/login, methods[POST]) def login(): code request.json.get(code) resp requests.get( https://api.weixin.qq.com/sns/jscode2session, params{ appid: app.config[APP_ID], secret: app.config[APP_SECRET], js_code: code, grant_type: authorization_code }, timeout5 ) data resp.json() if openid not in data: return jsonify(code400, msg登录失败) openid data[openid] user User.query.filter_by(openidopenid).first() if not user: user User(openidopenid, rolestudent) db.session.add(user) db.session.commit() token jwt.encode( {uid: user.id, role: user.role, exp: int(time.time()) 86400}, app.config[SECRET_KEY], algorithmHS256 ) return jsonify(code0, tokentoken, useruser.to_dict())手机号获取这块现在微信把getPhoneNumber组件的调用门槛提高了需要认证的小程序才能用。如果暂时没有认证可以用快速验证组件过渡用户点击后返回加密数据再结合session_key解密拿到真实手机号。实际开发时手机号不是登录的必需项我把它放在用户完善个人资料的环节避免一上来就卡住小白用户。3.3 报修、查寝这类核心接口的写法与状态机报修接口是整个系统里调用频率最高的它涉及到图片上传和状态流转。图片上传用Flask的request.files接收保存到服务器的uploads目录文件名用uuid重命名避免中文名和重复名的问题。数据库里存相对路径前端通过拼接静态资源域名来显示图片。状态字段我前面说了用数字存接口里用判断逻辑来保证状态流转合法比如已经完成的报修单不能再被重新打开。查寝功能稍微特殊一点宿管每天要录入一整栋楼的查寝结果不可能一个个宿舍分开操作所以我在接口设计上做了一个批量提交的方案。前端把当天所有宿舍的查寝情况组成一个数组一次性POST到后端后端循环写入查寝记录表同时统计每个宿舍的应到、实到、缺勤人数。这样宿管阿姨的操作成本降到最低一次点提交完事。4. 小程序前端实现踩坑实录4.1 登录流程与请求封装小程序端的登录流程我前面提了wx.login拿code真正落地的时候还要注意网络层封装。我在项目里单独建了一个request.js统一封装wx.request自动在header里带token错误码统一处理token过期的时候自动跳转到登录页。这样做的好处是所有页面都调用同一个请求方法后续要改baseUrl或者加统一的loading提示只需要改一个文件。const request (url, method GET, data {}) { return new Promise((resolve, reject) { wx.request({ url: BASE_URL url, method, data, header: { Authorization: Bearer wx.getStorageSync(token) }, success: (res) { if (res.data.code 0) { resolve(res.data.data); } else if (res.data.code 401) { wx.reLaunch({ url: /pages/login/login }); } else { wx.showToast({ title: res.data.msg, icon: none }); reject(res.data); } }, fail: (err) reject(err) }); }); };开发环境调试的时候我建议在微信开发者工具里勾选不校验合法域名这样可以把baseUrl指向本地电脑的局域网IP就不用每次改代码都部署到测试服务器。但这里有一个非常容易踩的坑真机预览时如果手机和电脑不在同一个局域网request就会直接失败。这时候要么把后端跑在云服务器上要么用内网穿透小程序本地的localhost是不管用的。4.2 顶部导航栏与页面适配小程序的原生导航栏在不同机型上有不同的高度特别是iPhone的刘海屏和底部安全区。我做了一个工具函数用wx.getSystemInfoSync拿到statusBarHeight和menuButton信息动态计算自定义导航栏的高度。如果你用原生导航栏直接设置pages配置里的navigationBarTitleText就行前台页面标题可以分别配置如果要做自定义导航栏就要把navigationStyle: custom写进页面json然后手动留出安全距离。页面标题的动态设置我用的是wx.setNavigationBarTitle方法比如在查寝页面显示查寝-3号楼202室这种带参数的标题让用户明确当前看到的对象。顶部导航栏的返回按钮在自定义导航栏下要自己写点击时用wx.navigateBack处理层级没有上一层的时候要用wx.reLaunch跳回首页否则会出现点了返回没反应的假死状态。4.3 与Flask联调时的跨域与数据格式问题小程序请求Flask接口浏览器里常说的跨域问题在小程序里其实并不存在小程序有自己的域名白名单机制。但开发环境里Flask后端接受前端请求时需要注意Content-Type。小程序wx.request的默认请求头是application/jsonFlask端用request.json就能解析。如果你在别的地方看到用x-www-form-urlencoded的写法那要改用request.form接收这个差异不明显但很坑人。联调阶段最容易出的另一个问题是时间字段的格式。MySQL的datetime返回出来是字符串小程序端new Date可以直接解析但要注意时区。Flask里如果用SQLAlchemy的DateTime字段序列化出来的格式是2025-01-01T12:00:00这种前端解析没问题如果你自己拼字符串最好统一成时间戳毫秒值避免处理时区时绕来绕去。我的建议是后端统一返回ISO8601格式的字符串前端用一个公共的格式化函数处理显示。5. 部署、测试与常见问题排查5.1 Flask后端部署到Linux服务器的完整过程项目本地跑通之后我把它部署到了一台Linux云服务器上。部署方案用的是业内最成熟的组合gunicorn作为WSGI服务器跑Flask应用nginx做反向代理处理静态文件和转发请求supervisor负责守护gunicorn进程进程挂了自动拉起。gunicorn的启动命令大概是这个样子我指定了4个worker进程每个worker处理一部分请求接口并发能力比开发服务器app.run强很多gunicorn -w 4 -b 127.0.0.1:8000 manage:app注意这里绑定的地址是127.0.0.1而不是公网IP因为外面实际是nginx先接流量再转发给gunicorn。nginx配置里把/api前缀的请求转发到127.0.0.1:8000静态文件直接由nginx返回。使用这套方案前要确认一下Python环境和依赖版本服务器上装一个虚拟环境用pip freeze把requirements.txt锁死版本避免两台机器上依赖不一致导致跑不起来。5.2 小程序上线必须处理的域名、HTTPS与备案小程序访问后端接口不能随便填一个IP地址或者http的URL。微信要求所有https请求的域名必须是HTTPS且已经ICP备案而且这个域名要在小程序后台配置到request合法域名列表里。所以上线的第一步是给服务器域名解析到公网IP配置SSL证书确保https能正常访问。证书申请我用的是免费版按照证书颁发机构的指引验证域名所有权后在nginx里配置证书路径。这里我踩过一个坑免费证书更新周期短到期前一定要设置自动续期或者定期检查否则小程序会突然全部请求失败用户反馈体验很差。另外如果后端涉及文件上传图片服务器域名也得加进downloadFile合法域名和uploadFile合法域名里这个配置在微信公众平台的开发管理里有专门入口。5.3 常见问题速查表与排查思路问题现象可能原因排查方法小程序请求接口报错不在以下 request 合法域名列表中域名未配置或未开启HTTPS检查小程序后台request合法域名配置确认证书有效真机请求成功开发者工具请求失败开发者工具勾选了校验域名但域名未备案开发环境暂时勾选不校验合法域名上线前必须开启校验接口返回数据中文乱码MySQL字符集不是utf8mb4数据库/表/连接串统一设置utf8mb4登录后token立即失效JWT密钥不一致或服务器时间偏差检查config中SECRET_KEY是否一致校准系统时间报修单图片上传失败上传合法域名未配置或路径权限不足检查uploadFile域名配置确认服务器uploads目录可写小程序首页白屏接口超时或baseUrl错误打开调试工具看Network面板确认实际请求URL排查这些问题的通用思路其实就一条先在开发者工具的Network面板里看实际发出的请求和返回结果确认问题出在前端还是后端。小程序端有很完善的调试工具可以查看请求头、请求体、响应体还能设置断点调试逻辑。后端那边可以用Postman单独测接口或者直接查看gunicorn的日志日志里会打印请求状态码和异常堆栈这两个配合起来基本能定位绝大多数问题。另外补充一个实测心得数据库连接池这个配置很容易被忽略。Flask-SQLAlchemy默认的连接池大小是10如果小程序端并发请求一多连接池耗尽之后新请求就会排队甚至超时。我在配置里把pool_size调到了20并且设置pool_recycle为3600秒避免MySQL空闲连接超时断开。这个问题在开发阶段完全暴露不出来压测或者正式上线后用户量稍微上来就会突然出现提前做好配置能省去线上救火的痛苦。最后再分享一个我自己比较受用的习惯每次改动后端接口我都先在Postman里跑一遍全流程从登录拿token到创建报修单、查询列表、修改状态确认没有问题再把小程序端页面联调。这套系统做完最大的体会是要把前后端的边界划分清楚Flask只负责数据校验和业务逻辑小程序只负责展示和交互这样各自维护都省心。如果你现在正在做类似的管理系统项目不妨也按这个路径走一遍踩坑踩得越早后面上线就越顺。

相关新闻

从C代码到机器码:GCC编译四阶段全流程实操详解

从C代码到机器码:GCC编译四阶段全流程实操详解

1. 从C代码到机器码的整体认知1.1 一次编译要经历的四个阶段很多人第一次在Linux上写完C程序,脑子里只有一条命令:gcc hello.c -o hello。回车,程序跑起来了,完事。至于编译器在这一瞬间到底做了多少事情,完全是黑盒。…

2026/10/9 6:26:18 阅读更多 →
基于伴随灵敏度分析与肿瘤生长模型的放疗计划优化方法

基于伴随灵敏度分析与肿瘤生长模型的放疗计划优化方法

在肿瘤放疗计划里,我们通常习惯把靶区勾画好、给一个最大耐受的处方剂量,然后按均匀分布的射束照下去。但肿瘤在治疗周期里是不断变化的,细胞增殖速度快慢、对剂量的响应强度,每一天都不一样。如果能让放射治疗计划跟着肿瘤的“实…

2026/10/9 6:25:18 阅读更多 →
单细胞衰老时钟全流程解析:从数据质控到模型训练

单细胞衰老时钟全流程解析:从数据质控到模型训练

单细胞测序技术火了这么多年,数据越攒越多,但绝大多数分析还是停留在“聚类看分群、注释找细胞类型”的层面。直到“衰老时钟”这个概念从表观遗传学延展到单细胞转录组,很多人才意识到,我们完全可以回答一个更刁钻的问题&#xf…

2026/10/9 6:25:18 阅读更多 →

最新新闻

可靠性测试别只会跑温箱振动台:失效物理与加速寿命是关键

可靠性测试别只会跑温箱振动台:失效物理与加速寿命是关键

干我们这行的,提起“可靠性测试”,不少人第一反应是:把样品扔进温箱里烤一烤、冻一冻,再放振动台上摇一摇,出来没坏就算通过。要是真这么想,那可靠性测试就白做了。作为一个和温箱、振动台、耐久跑法打了十…

2026/10/9 7:02:48 阅读更多 →
JVM内存模型与调优实战:从Minecraft OOM到HMCL配置

JVM内存模型与调优实战:从Minecraft OOM到HMCL配置

很多朋友第一次真正意识到 JVM 的存在,不是在 Java 课堂上,而是在一个完全不相关的场景里——玩游戏的时候。我用 HMCL 启动器给 Minecraft 装了个整合包,点了启动,等了两分钟,游戏闪退。把日志拉到最底部,…

2026/10/9 7:02:48 阅读更多 →
VS Code AI 语言模型配置全指南:模型切换、思维强度与 BYOK 自有密钥接入

VS Code AI 语言模型配置全指南:模型切换、思维强度与 BYOK 自有密钥接入

文档教程 【免费下载链接】vscode-docs Public documentation for Visual Studio Code 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-docs 点击查看 免费下载 本文基于 Visual Studio Code 官方文档仓库(vscode-docs)中的 docs/agen…

2026/10/9 7:02:48 阅读更多 →
多标签文本分类实战复盘:从Embedding到Transformer的TAAC优化之路

多标签文本分类实战复盘:从Embedding到Transformer的TAAC优化之路

1. 从"vibe coding"说起:一个新手小白的TAAC复盘到底在复盘什么第一次看到"vibe coding"这个词,我脑子里蹦出来的画面是:一个人对着编辑器,凭感觉敲代码,跑通了就欢呼,跑不通就换一种写…

2026/10/9 7:02:48 阅读更多 →
内容团队如何用Qoder构建标准化AI工作流与协作机制

内容团队如何用Qoder构建标准化AI工作流与协作机制

团队里六个人,过去半年试过不下四个AI工具,从网页版问答到各种套壳应用,最后都回到同一个问题:AI确实能干活,但每个人干出来的活参差不齐,提示词散落在各自收藏夹里,换个项目就抓瞎。真正让我下…

2026/10/9 7:02:48 阅读更多 →
日期处理陷阱:从1月25日看时区与历法边界

日期处理陷阱:从1月25日看时区与历法边界

我很少拿一个日期当文章标题,但1月25日这个数字,我记了快一整年。不是因为它特殊——公历里它既不是节日也不算节气,每年对应的星期几、农历日子完全不一样。正因为它"每天都在变、又好像什么都没变",才在交付前一周把我…

2026/10/9 7:01:47 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →