SpringBoot+微信小程序全栈开发:红色文化传承小程序毕设实战详解
做毕设这些年最怕的就是要么纯网页太老气要么纯理论没落地。今天要拆的这套“梅州红色文化传承小程序”是一个典型的Java SpringBoot 微信小程序三段式项目没有什么花哨的算法但胜在技术栈规整、开发周期可控、演示效果好尤其适合计算机专业本科毕设也适合想系统练一遍全栈开发的朋友。这个项目要解决什么梅州的红色文化资源丰富但因为分布散、宣传方式传统年轻人触达效率低。小程序作为轻量入口能把场馆介绍、红色故事、文化路线、学习打卡这些东西装进用户手机里同时对运营方来说后台可以管理内容、统计访问。所以它本质上是一个“内容展示 轻互动 后台管理”的信息平台不是高并发的电商系统也不是复杂推荐算法项目它的核心竞争力在于功能完整度、工程规范程度和文档配合度。无论你是想直接复刻做毕设还是想借鉴其中的模块设计思路这篇文章都会把项目从设计、建表、编码到部署的完整链路讲清楚尤其会重点说那些课程设计和网上烂大街教程里不会写清楚的细节比如Spring Boot版本坑、微信登录session处理、小程序真机联调等。1. 项目定位与整体设计梅州红色文化传承小程序到底在做什么1.1 需求背景与用户场景先说需求背景。梅州作为客家人文底蕴深厚的城市本地有一定数量的红色文化旧址、纪念场馆和教育基地这些资源天然有教育属性也有旅游属性。但存在几个现实问题一是信息碎片化用户想找一个场馆可能要翻公众号历史消息、地图App、旅游网站效率很低二是内容展示形式单一多数停留在图文层面缺乏互动性三是运营侧没有统一的内容管理入口更新信息要依赖技术人员或者第三方平台。小程序端存在的意义就是把这些内容做结构化整合。用户打开小程序看到的不再是一堆链接而是分类清晰的红色场馆列表、文化故事列表、纪念活动信息还可以做收藏、搜索、浏览记录、学习答题。站在毕设角度这些功能全部是常规CRUD的变体但组合起来就是一个完整产品能体现出需求分析能力、数据库设计能力和工程落地能力。1.2 技术选型为什么偏偏是Java SpringBoot 微信小程序选型逻辑要讲清楚不然答辩被问一句“为什么不用PHP”就容易卡壳。后端选Java SpringBoot核心原因是生态稳定、岗位需求大、学习资料多。对毕设来说SpringBoot解决了传统SSM项目里大量XML配置的痛点起步快内嵌Tomcat打jar包就能跑不需要单独装容器。MyBatis-Plus再做一层增强单表CRUD基本不用手写SQL这在开发效率和答辩讲解上都是实打实的优势。小程序端选微信小程序而不是H5一是微信生态天然适合本地文旅类应用传播扫码即用不需要下载App二是小程序原生组件和API能覆盖页面展示、定位、地图、授权登录这些需求三是对毕设而言小程序是一个独立的交付物演示时能直接扫真机比浏览器里开网页更有“成品感”。另外要讲清楚的是这类项目不是分布式微服务架构不需要Redis集群不需要MQ更不需要Spring Cloud那一套。老老实实用单体应用 关系型数据库性能完全够用架构也更容易被答辩老师理解。过度设计反而是扣分点。1.3 功能模块规划与页面流转功能模块按照用户端、管理端来拆。用户端包括首页轮播图、热门场馆、推荐故事本质是几张表的聚合查询。文化地图场馆地理位置列表配合地图组件展示。文化内容红色故事、场馆详情、人物事迹支持图文混排。学习中心红色知识答题、学习打卡记录。个人中心登录状态、收藏列表、浏览记录、意见反馈。管理端是一个Web后台包含内容管理、分类管理、用户管理、数据统计。毕设如果只做小程序不做管理后台数据库里的内容就只能手动插SQL演示的时候换一条数据都要重启非常狼狈所以强烈建议把管理后台加上。页面流转上最核心的链路是用户扫码进入小程序 - 微信授权登录 - 浏览首页内容 - 进入详情页 - 收藏/分享 - 个人中心查看记录。这个链路贯穿了登录态管理、数据查询、缓存处理等所有关键技术点。2. 技术架构与核心细节SpringBoot后端和小程序端怎么接上2.1 后端工程结构与统一返回格式工程结构不要乱按功能分包比按技术分包更适合毕设展示。我建议这样分com.meizhou.culture ├── controller // 接口层 ├── service // 业务层 ├── mapper // 数据访问层 ├── entity // 数据库实体 ├── dto // 前端交互对象 ├── config // 配置类 ├── utils // 工具类 └── common // 统一返回结果、异常处理用entity还是domain命名不重要重要的是层次清晰。Controller只做参数接收和结果封装不写SQLService处理业务逻辑Mapper只做数据库交互。答辩时被问到分层思想能说出“每一层各司其职、层间通过接口通信”就可以了。统一返回结果类是所有接口的基础强烈建议自己写一个别用Map代替。基础结构就是三个字段{ code: 200, message: 操作成功, data: {} }code用200表示成功400表示参数错误401表示未登录500表示服务器异常。前端拿到code先判断再决定是渲染data还是弹错误提示。这里有个实操经验不要在返回对象里把data设计成Object然后强行塞各种类型建议用泛型ResultT调用时指定类型前端联调时Swagger文档也好看得多。2.2 微信登录与JWT会话管理小程序登录和后端会话管理是这类项目最容易写崩的地方。先说登录流程微信官方要求的是code换openid不是在小程序端直接拿着用户名密码登录。具体流程是小程序端调用wx.login()拿到临时code把code发送到后端接口后端拿着code调用微信接口jscode2session换取openid和session_key然后后端拿openid去用户表查查不到就自动注册一个用户最后后端生成一个token返回给小程序小程序后续所有请求都带着这个token后端通过token识别用户身份。token我推荐用JWT原因很简单无状态、自带过期时间、好调试。生成JWT时把userId和openid作为payload放进去设置过期时间为7天。后续接口通过拦截器解析token把userId放到ThreadLocal里供业务层使用。这里有个容易踩的坑JWT的密钥不要硬编码在代码里放到application.yml配置文件中答辩时还能顺便讲一下敏感信息配置管理。还有一个细节前端传token时放在请求头里命名建议走常规的Authorization: Bearer xxx别自己发明头名称。2.3 数据库设计六张核心表怎么建数据库设计是整个项目的骨架表结构设计得好后续开发就是顺水推舟。这套项目我建议建六张表第一张user用户表字段包括id、openid、nickname、avatar、phone、create_time。openid唯一索引注意不要存session_key那个是微信侧的秘密只在登录时使用。第二张category分类表字段包括id、name、sort、status。用来区分红色场馆、人物故事、学习资料等大类型。第三张article内容表这是核心表字段包括id、category_id、title、cover_image、content、author、view_count、create_time、status。content字段用text类型存富文本cover_image存图片URL。这里要注意关联关系文章和分类是多对一所以只存category_id即可不需要中间表。第四张building红色场馆表如果文章表可以覆盖场馆内容可以不单独建表但如果要做地图标记建议单独建字段包括id、name、cover、description、address、longitude、latitude、open_time、tel。经纬度字段用decimal存储后续地图组件直接调用。第五张favorite收藏表字段包括id、user_id、article_id、create_time联合唯一索引uk_user_article防止重复收藏。第六张answer_record答题记录表字段包括id、user_id、question_id、user_answer、is_correct、create_time。这些表全部是标准第三范式设计没有冗余字段。答辩时如果老师问怎么优化可以说当数据量增长后给article表的view_count加缓存用Redis做热点数据但毕设阶段直接查库完全没问题。2.4 小程序端开发和原生API的取舍小程序端我推荐用原生开发不推荐为毕设强行上uni-app。原因很直接原生框架语法简单WXML WXSS JS三件套资料多遇到问题好查uni-app虽然能一套代码多端运行但调试链路长编译报错排查起来对新手不友好。页面结构上底部tabBar四个页面首页、地图、学习、我的。tabBar不能超过五个图标尺寸要求81px * 81pxiconfont不能用必须用png或jpg这些是微信官方的硬限制提前准备好免得后面返工。有个高频问题微信小程序顶部导航栏高度怎么适配。不同的手机型号状态栏高度不一样如果页面用了自定义导航栏直接写死高度就会在不同机型上错位。解决方案是获取系统信息里的statusBarHeight和menuButton信息动态计算。核心代码如下const systemInfo wx.getSystemInfoSync(); const menuButton wx.getMenuButtonBoundingClientRect(); const navBarHeight (menuButton.top - systemInfo.statusBarHeight) * 2 menuButton.height;这段代码的含义是胶囊按钮到状态栏底部的距离乘以2加上胶囊自身高度就是自定义导航栏的总高度。这个方案能兼容绝大多数机型不要再在样式表里写死高度了。3. 实操过程记录从前端到后端完整落地3.1 后端项目初始化与Spring Boot版本选择先说明一个版本上的关键问题Spring Boot 2.x和3.x有根本性区别3.x要求Java 17javax包全部换成jakarta。如果你本机装的是JDK 8就不要硬选Spring Boot 3.x否则一启动就会报ClassNotFoundException: javax.servlet这种错误。稳妥的组合是JDK 8 Spring Boot 2.7.x MyBatis-Plus 3.5.x或者JDK 17 Spring Boot 3.x MyBatis-Plus 3.5.3以上版本。创建项目我推荐用IDEA自带Spring Initializr选择Java版本、打包方式为jar依赖先加Web、MySQL Driver、Lombok。注意不要勾选太多依赖后续手写或者修改pom都来得及项目结构越简单越不容易出问题。pom.xml核心依赖就五个左右spring-boot-starter-web、mybatis-plus-boot-starter、mysql-connector-j、lombok、jjwt或java-jwt。额外加一个knife4j或springfox做接口文档方便调试。MyBatis-Plus版本这里特别提一下如果你是Spring Boot 2.x用3.5.3没问题如果用了Spring Boot 3.x要选带-jakarta后缀的版本或者直接用3.5.5及以上不然启动会报分页插件不兼容。3.2 配置文件与数据源设置application.yml配置是项目启动的门面我一般这样组织server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/meizhou_culture?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true global-config: db-config: logic-delete-field: deleted logic-delete-value: 1 logic-not-delete-value: 0数据库地址里serverTimezoneAsia/Shanghai一定要写不然MySQL 8.x连本地库经常报时区错误。map-underscore-to-camel-case开启后user_id自动映射到userId少写一堆TableField注解。逻辑删除配置加上之后删除操作自动变成update这对内容管理类项目很实用误删了还能恢复。3.3 实体类与Mapper层快速开发实体类直接和表对应用Lombok简化getter/setter。以article表为例Data TableName(article) public class Article { TableId(type IdType.AUTO) private Long id; private Long categoryId; private String title; private String coverImage; private String content; private String author; private Integer viewCount; private Integer status; private LocalDateTime createTime; }TableName指定表名TableId指定主键策略其他的什么都不用写MyBatis-Plus就能根据实体类自动生成CRUD。注意实体类字段不要出现Java关键字比如status没问题但如果有describe这种字段在MySQL里就要用反引号。Mapper层更简单继承BaseMapper就有单表CURDMapper public interface ArticleMapper extends BaseMapperArticle { }如果你想自定义复杂查询比如文章列表要连分类名称就直接在Mapper里写Select注解SQL或者写XML。毕设阶段不要搞复杂分页插件以外的花活保持简单可解释。3.4 Service和Controller的实现套路Service层我习惯先写接口再写实现类。这点很多同学忽略觉得“就一个类何必写接口”但答辩时老师很可能问“你理解面向接口编程吗”到时候有接口就有话讲没有就容易卡壳。以ArticleService为例接口定义三个方法public interface ArticleService { PageResultArticleVO pageArticles(int page, int size, Long categoryId); ArticleVO getArticleDetail(Long id); void increaseViewCount(Long id); }实现类负责拼装逻辑比如getArticleDetail要先查文章详情再查相关推荐还要自增浏览量。这里有个小技巧自增浏览量不要用“先查出来再加一写回去”直接执行一条UPDATE语句UPDATE article SET view_count view_count 1 WHERE id ?避免并发下数据不准。Controller层只做参数接收和调用RestController RequestMapping(/api/article) public class ArticleController { GetMapping(/page) public ResultPageResultArticleVO page(RequestParam(defaultValue 1) int page, RequestParam(defaultValue 10) int size, RequestParam(required false) Long categoryId) { return Result.ok(articleService.pageArticles(page, size, categoryId)); } GetMapping(/{id}) public ResultArticleVO detail(PathVariable Long id) { return Result.ok(articleService.getArticleDetail(id)); } }参数校验用Validated比手写if判断更规范比如分页参数范围、ID不能为负数。统一异常处理类用RestControllerAdvice捕获异常把兜底错误信息返回给前端避免一报错就弹出500裸错误码。3.5 小程序端请求封装与页面渲染小程序端最重要的封装是request方法。我见过太多同学在每个页面里直接写wx.request改个baseURL要满项目替换这是很不好的习惯。建议在utils目录下建一个request.jsconst BASE_URL https://your-domain.com/api; function request(path, method GET, data {}) { return new Promise((resolve, reject) { wx.request({ url: BASE_URL path, method, data, header: { Content-Type: application/json, Authorization: wx.getStorageSync(token) || }, success(res) { if (res.statusCode 200 res.data.code 200) { resolve(res.data.data); } else if (res.data.code 401) { wx.navigateTo({ url: /pages/login/login }); reject(res.data); } else { wx.showToast({ title: res.data.message, icon: none }); reject(res.data); } }, fail(err) { wx.showToast({ title: 网络异常, icon: none }); reject(err); } }); }); } module.exports { request, get: (p) request(p, GET), post: (p, d) request(p, POST, d) };这段代码有三个关键设计一是Promise化后续页面里可以用async/await写起来像同步代码二是统一处理业务码不用每个页面重复写判断三是token从storage里取登录后写入退出时删除全局只在这里维护。页面渲染时注意一个问题微信小程序里setData是高频性能瓶颈不要在循环里频繁修改data。像首页轮播图、列表这种数据一次setData传整个数组就行不要在onShow里反复刷新真有下拉刷新需求再用enablePullDownRefresh。3.6 答题与学习模块的实现思路学习答题模块是给整个平台加教育属性的关键功能。实现方式是题库表存放题目答案表记录用户作答情况。每次用户从题库里随机取十道题前端展示题干和四个选项提交后后端逐个比对答案返回得分和错题详情。这里一个设计上的坑是选择题答案不要在数据库里存“A、B、C、D”而是直接存正确选项的text内容。不然以后题干或者选项顺序调整历史答题记录就全对不上了。对毕设来说答案字段直接存“正确选项内容”反而是更简单可靠的设计。4. 部署联调与常见问题排查从本地到线上4.1 本地开发调试小程序开发者工具的联调配置本地开发阶段小程序不能直接请求localhost:8080因为微信开发者工具模拟器里的网络环境和电脑本地有隔离我们要开启“不校验合法域名”选项。位置在开发者工具的详情-本地设置里勾选“不校验合法域名、web-view业务域名、TLS版本以及HTTPS证书”。但有个问题真机预览时这个选项是不生效的手机上的小程序必须走HTTPS协议。所以建议本地调试用开发者工具的模拟器提交体验版之后再用真机。如果你有云服务器直接绑域名配SSL证书最省事如果没有也可以先用内网穿透工具做临时调试但只建议开发时用演示时稳定性不如部署到服务器。4.2 后端打包与服务器部署后端部署这块是很多毕设翻车的地方。在IDEA里执行mvn clean package后target目录下会生成一个xxx.jar文件。上传到服务器后启动命令很简单java -jar meizhou-culture-0.0.1.jar --spring.profiles.activeprod生产环境的数据库地址、账号密码放到application-prod.yml里不要在默认配置里写死。服务器内存小的可以在启动命令上加JVM参数限制堆内存java -Xms256m -Xmx512m -jar meizhou-culture-0.0.1.jar用nohup放在后台运行nohup java -jar meizhou-culture-0.0.1.jar app.log 21 因为小程序要求HTTPS域名要配置SSL证书Nginx做反向代理把https://your-domain.com/api代理到http://127.0.0.1:8080/api。Nginx配置里要注意proxy_set_header X-Real-IP $remote_addr;不然后端拿不到真实用户IP访问日志统计不准确。4.3 常见问题速查表把我在实际开发和帮助学生调试过程中遇到的高频问题整理成一张表方便对照排查现象原因解决方案启动报Failed to configure a DataSource数据库地址或账号密码配置错误检查application.yml确认数据库已创建分页查询不生效MyBatis-Plus分页插件未注册在配置类里加PaginationInnerInterceptor前端请求返回404接口路径和Controller映射不一致用Swagger文档核对实际请求路径真机请求一直超时服务器防火墙未开放443端口或域名未备案检查安全组、域名备案状态微信登录报invalid codecode只能用一次或者code过期每次登录都重新调用wx.login()获取新code图片加载不出来图片URL用了HTTP微信要求HTTPS将所有图片资源切换到HTTPS地址数据渲染为空数据库表名和实体名不一致检查TableName注解确认表名前缀token过期用户还在操作JWT过期后前端未跳转登录在request.js中统一处理401跳转4.4 答辩前最容易忽略的三件事答辩时技术演示不是最难的难的是细节。第一个容易被忽略的是接口文档用knife4j生成的Swagger页面提前打开现场演示接口调用比在IDEA里debug有说服力。第二个是准备好演示数据不要在答辩现场才往数据库里插内容至少准备十条新闻类数据、五条场馆数据、一套完整答题题目。第三个是设计好演示脚本从首页开始到详情页再到收藏和答题按真实用户路径走一遍不要想起来点什么点什么。5. 提升点与后续扩展方向5.1 给项目加分的“性价比”功能如果时间有富余按投入产出比排序这几个功能最容易加分。第一地图导航。微信小程序原生支持map组件把场馆表的经纬度传给markers点标记弹出场馆简介点击“去这里”唤起wx.openLocation调起地图导航。这个功能代码量不大但演示效果非常直观把红色文化场馆分布在哪个位置一目了然。第二内容搜索。搜索功能在小程序端就是一个搜索框加列表页后端用LambdaQueryWrapper加一个like条件重点是要处理关键词为空时返回空列表而不是全部数据。这个可以提前做也很实用。第三分享裂变。在小程序的onShareAppMessage里配置分享标题和图片用户分享给好友后好友打开小程序可以填写“通过谁分享”的关系字段。这个功能在毕设里代表了对微信开放能力的了解也是答辩时的一个亮点。5.2 如果真的想上难度Redis缓存与数据统计如果你的水平已经超过了基本CRUD可以把Redis引进来。比如首页轮播图和热门内容用Redis缓存一个小时缓存失效后再回源查数据库。这个改动只需要引入spring-boot-starter-data-redis在Service层加一个逻辑判断即可。另一个有深度的问题是数据统计看板管理后台统计用户活跃量、每日浏览数、收藏量Top10、场馆热度排行。这些数据可以从favorite表、article表里聚合查询出来用ECharts画折线图和柱状图。这个功能做出来后整个项目的“数据运营”属性就出来了评委和老师会明显感觉到你的项目不是玩具而是有真实使用场景的。6. 项目总结与个人实操体会做这个梅州红色文化传承小程序的完整流程走下来我最大的体会是毕设项目不是越难越好而是越完整越好。什么叫完整需求分析里能说清楚目标和用户数据库设计里有主外键和索引组建后端工程里有统一异常和日志处理小程序端不是简单页面拼凑而是有登录态和请求封装部署环节能跑通HTTPS真机访问。这些点每一个单独的难度都不高但能把它们整合到一起就需要对整个web开发链路有比较全面的理解。给我印象最深的一个细节是微信登录流程。很多教程直接给代码但没讲清楚为什么code要用一次就失效为什么后端要用openid而不是session_key做身份标识。当我把wx.login到code2Session到JWT签发的完整链路在一个白板上画出来并且用postman一步步验证的时候才真正有“这个项目是我自己做的”的感觉。如果你正在做类似的毕设我的建议是不要急着写代码先花几天时间把表结构设计好把接口清单列出来然后一个模块一个模块推。碰到问题不要怕微信的报错提示虽然有点绕但互联网上资料非常多。最重要的是每个功能做完以后要跑一遍测试用例不要等到答辩前一天才发现页面白屏。项目代码是一方面但你在调试过程中积累的排错思路才是答辩时真正能发挥的东西。

相关新闻

JSP超市管理系统实战:MyEclipse+MySQL从零搭建可运行Web工程

JSP超市管理系统实战:MyEclipse+MySQL从零搭建可运行Web工程

简介:这份资源是一套基于JSP与Java的超市管理系统完整源码,采用B/S架构,配合MyEclipse与MySQL数据库开发,适合正在学习Java Web编程、需要课程设计或毕业设计参考的学生与初级开发者。系统覆盖人事、销售、进货、库存与客户五大模…

2026/10/9 10:45:19 阅读更多 →
DeepSeek私有化部署实战:算力选型、vLLM部署与数据调教

DeepSeek私有化部署实战:算力选型、vLLM部署与数据调教

简介:面向中小型企业技术开发人员的 DeepSeek 落地实战手册,聚焦私有化部署、数据调教与业务创新三大主题。文档从 DeepSeek 的基本概念、模型特点与技术优势入手,系统梳理了中小型企业选择私有化部署的原因,并分步讲解环境准备、…

2026/10/9 10:45:19 阅读更多 →
C++缺省参数深度剖析:从语法到重载、虚函数与实战陷阱

C++缺省参数深度剖析:从语法到重载、虚函数与实战陷阱

我最早被 C 缺省参数“坑”到,是在给一个老接口加新参数的时候。当时我想当然地在函数定义处写了个默认值,结果满屏都是 redefinition of default argument。后来翻标准、看编译产物,才发现这个看起来只是“少写几个实参”的语法糖&#xff0…

2026/10/9 10:45:19 阅读更多 →

最新新闻

树结构核心术语解析:根、父子兄弟、深度高度与路径的工程意义

树结构核心术语解析:根、父子兄弟、深度高度与路径的工程意义

1. 为什么“树”这个词在计算机里被反复提起,却没人真去种一棵?你打开任何一本算法入门书,翻到第三章,大概率会看到一个分叉的图示:一个圆圈在最上面,下面连着两个圆圈,再往下又分出更多——旁边…

2026/10/9 11:18:10 阅读更多 →
锂电池清洗水枪EMC整改实战:从超标12dB到6dB余量的系统化方案

锂电池清洗水枪EMC整改实战:从超标12dB到6dB余量的系统化方案

/* 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 11:18:10 阅读更多 →
GCC编译全解析:从预处理到链接的实战指南

GCC编译全解析:从预处理到链接的实战指南

1. 从一行报错说起:为什么值得花时间搞懂gcc很多人第一次接触gcc,不是因为想学它,而是因为被它拦住。编译一个C文件,终端甩出一堆看不懂的英文,什么undefined reference to、implicit declaration of function&#xf…

2026/10/9 11:18:10 阅读更多 →
电机测试数据飘?先查平台再查传感器——机械安装细节全解析

电机测试数据飘?先查平台再查传感器——机械安装细节全解析

/* 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 11:18:10 阅读更多 →
Eclipse导出可执行Jar的原理与三种依赖策略详解

Eclipse导出可执行Jar的原理与三种依赖策略详解

简介:本资源是一份面向Java初学者与中小型项目开发者的Eclipse工程打包实战指南,聚焦解决「如何导出含第三方Jar依赖的可执行Jar文件」这一高频部署痛点。内容基于Eclipse Indigo(3.7)环境,系统讲解Runnable JAR File导…

2026/10/9 11:18:10 阅读更多 →
Codex 额度重置后,开发者如何用 TaoToken 统一管理 API 调用?

Codex 额度重置后,开发者如何用 TaoToken 统一管理 API 调用?

/* 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 11:17:09 阅读更多 →

日新闻

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/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →