SpringBoot+uni-app留学服务中心管理APP系统设计与实现
每年到了毕业设计选题的时候总有人在后台问我Java方向的毕设到底做什么题才不吃亏图书管理系统、在线商城、学生就业管理这类题已经被写烂了答辩老师看一眼题目就开始走神。而出国留学服务中心管理APP系统这类题反而是个被低估的好选择——它不是简单的增删改查而是把留学申请咨询、选校方案、材料审核、进度跟踪这条完整业务链路串起来后端技术覆盖了JWT认证、状态机设计、文件上传、站内通知、数据统计随便挑一个点都能在答辩时展开讲。这篇就把我当时做这个题目的完整思路写出来包括业务拆解、数据库设计、后端接口实现、APP端与管理后台的联动、部署踩坑以及答辩前怎么准备演示。我自己做的技术选型是 SpringBoot 2.7 MyBatis-Plus MySQL Redis uni-app这个组合做毕设非常稳。文章会围绕这套方案展开但也顺便讲讲每个环节的备选方案和取舍理由方便你结合自己的情况调整。1. 选题与需求拆解留学服务全流程管理系统到底要管什么1.1 全流程三个字才是这个题目的核心价值先别急着写代码把题目里的全流程三个字吃透。它不是在讲一个普通的报名表提交系统而是模拟一家真实的出国留学服务中心的业务运转方式学生在APP上注册登录填写个人背景和留学意向发起咨询申请。服务中心的管理员在后台看到咨询单把单子分配给对应的留学顾问。顾问接手后根据学生情况推荐院校和专业生成一份选校方案。学生确认方案后按照材料清单上传成绩单、语言成绩、个人陈述、推荐信等文件。顾问审核材料无误后递交申请系统同步维护每个学校项目的申请状态。申请状态一变APP端实时通知学生比如材料已递交收到offer进入签证办理。这个业务流天然自带三类角色、五张以上核心业务表、多个状态节点哪怕什么都不额外加系统的复杂度已经足够撑起一篇高质量的毕业论文了。而且答辩的时候你可以把这个故事线从头到尾讲一遍老师一听就知道你做过完整的需求分析而不是拿到题目就开始堆接口。1.2 三类角色与业务闭环的确定我当时先画的不是数据库表而是一张角色-动作图。这里用文字描述一下学生端移动APP注册登录、提交咨询需求、浏览院校库、确认选校方案、上传申请材料、查看申请进度、接收站内通知。顾问端移动APP或PC网页接收咨询单、评估学生背景、制定选校方案、审核材料、更新申请进度。管理员端PC管理后台创建顾问账号、分配咨询单、管理学生账号、配置院校信息、查看统计报表。三个角色凑成一个完整的业务闭环学生发起咨询管理员分配顾问顾问制定方案学生准备材料顾问审核递交系统更新进度并通知各方。后面所有功能模块、数据表设计都是从这个闭环里长出来的。1.3 功能清单划边界MVP优先做毕设最怕的就是功能列了一大堆最后哪个都没做透。我当时给自己划了三个核心闭环所有功能围绕它们展开用户认证闭环注册、登录、JWT令牌、角色权限控制。留学申请闭环咨询单创建、顾问分配、选校方案、材料审核、进度状态机。管理统计闭环顾问工作量统计、申请状态分布、院校申请热度。这三个闭环做完系统就是一个能跑通的完整业务系统而不是零散页面的拼接。至于在线支付、智能选校推荐、消息推送服务这类进阶功能有时间再做没时间就直接当作后续扩展方向写进毕业论文的展望部分反而显得你的系统边界感很清楚。2. 技术栈搭建记录版本坑、MyBatis-Plus自动建表与APP端选型2.1 SpringBoot版本选择别一上来就用最新版这段是血泪教训。我开始做这个项目的时候手一抖选了SpringBoot 3.2结果项目里所有依赖都要跟着升级最典型的问题是javax.servlet包改名成了jakarta.servlet网上很多老教程的代码复制过来直接编译失败。SpringBoot 3.x 的最低JDK版本要求是17而很多同学电脑上装的是JDK 8或者11光是调整环境就浪费了两个晚上。做毕设我强烈建议用 SpringBoot 2.7.x。理由很直接稳定、生态成熟、网上查得到的问题和解决办法最多而且和JDK 8、MyBatis-Plus、Redis等常用组件的兼容性最好。我自己最后用的是 SpringBoot 2.7.14 JDK 1.8 MySQL 8.0 Redis 5.0整个开发过程很省心。你在建立项目的时候直接去Spring Initializr选2.7系列别犹豫。2.2 MyBatis-Plus实体类设计与建表SQL的生成既然用了MyBatis-Plus数据访问层的代码量能少一半。它的核心用法是先写实体类再通过注解映射到数据库表。举个用户表的例子Data TableName(user) public class User { TableId(type IdType.AUTO) private Long id; private String username; private String password; private String realName; private String phone; private String avatar; private String role; // student / advisor / admin private Integer status; // 1正常 0禁用 TableField(fill FieldFill.INSERT) private LocalDateTime createTime; TableField(fill FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; TableLogic private Integer deleted; }有几个细节要解释清楚TableName(user)用来指定表名如果实体类名和表名不一致必须写这个注解。TableId(type IdType.AUTO)表示主键自增。如果数据库主键不是自增而是雪花ID要用IdType.ASSIGN_ID。TableLogic是逻辑删除。加了它之后MyBatis-Plus执行delete时会自动转成update语句把deleted置为1查询时自动追加WHERE deleted 0条件这样业务数据不会真被删掉答辩时也是一个加分点。TableField(fill FieldFill.INSERT)配合MetaObjectHandler自动填充创建时间避免每张表手动set时间。这里再回答一个很多人问的问题MyBatis-Plus能不能根据实体类自动生成建表SQL严格来说它不像JPA那样启动时自动建表但你可以让实体类驼峰命名和数据库下划线字段名保持一致比如realName对应real_name自己写好CREATE TABLE脚本放到项目的resources/db目录下用Navicat或者命令行直接执行统一初始化。我是先画好ER图再写DDL脚本的这样表结构清晰不会出现边写代码边加字段导致改这改那的混乱局面。2.3 APP端方案原生Android还是跨平台框架题目里带APP两个字很多同学第一反应是去学Android开发写原生界面。我劝你冷静一下。除非你本来就有Android基础否则纯原生开发一套完整的APP页面从布局到交互到请求封装前后端联调三个月时间会被吃掉一大半留给后端的精力就不够了。我当时用的是 uni-app理由如下用Vue语法写页面上手速度快。一套代码可以编译成APP、H5、小程序。答辩当天哪怕电脑上没装安卓模拟器也可以直接用浏览器跑H5版本演示效果一样。后端接口统一返回JSON前端配合uView或ColorUI组件库开发效率非常高。如果连uni-app都不想引入还有个更轻的方案后端SpringBoot保持不变前端用H5页面套壳打包成APP。答辩时老师看的是你的系统设计、业务逻辑、技术方案不太会纠结你的壳是不是原生写的。你完全可以在论文里写一句移动端采用跨平台方案兼顾多端发布这就够了。2.4 JWT认证与拦截器APP接口的登录态设计APP端接口是无状态的没法像网页一样依赖Session所以JWT是目前最主流的做法。核心流程用户登录成功后后端生成一个token返回给前端。前端把token存起来每次请求在Header里带Authorization: Bearer token。后端写一个拦截器对所有非白名单接口校验token校验通过才放行。JWT工具类的核心逻辑很简单public class JwtUtil { private static final String SECRET your-secret-key; private static final long EXPIRE_TIME 12 * 60 * 60 * 1000L; // 12小时 public static String createToken(Long userId, String role) { return Jwts.builder() .claim(userId, userId) .claim(role, role) .setExpiration(new Date(System.currentTimeMillis() EXPIRE_TIME)) .signWith(SignatureAlgorithm.HS256, SECRET) .compact(); } public static Claims parseToken(String token) { return Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token).getBody(); } }拦截器里做三件事检查Header里有没有token调用parseToken解析解析失败就返回401。我当时还把token存了一份在Rediskey是token:userIdvalue是token过期时间跟JWT一致。这样做的好处是管理员禁用学生账号时可以直接删Redis里的key让token立刻失效。这个细节在答辩时被老师追问过能讲出设计思路很加分。3. 数据库建模把留学申请流程变成一张张关系表3.1 用户体系一张表还是多张表学生、顾问、管理员三种角色最直观的做法是建三张表分开存。但我不推荐因为登录、找回密码、修改头像、权限拦截这些公共逻辑都要写三遍纯属给自己加活。更合理的做法是一张user表加一个role字段区分角色类型。公共字段放用户表各自特有的业务字段再单独扩展。所以我当时设计了这样一套结构user表id、username、password、real_name、phone、avatar、role、status、create_time、update_time、deletedstudent_profile表user_id、target_country、target_major、budget、current_school、gpa、language_scoreadvisor_profile表user_id、specialty_country、years_of_experience、service_count这样既保持了用户体系统一又没有把乱七八糟的字段塞进一张表表结构看起来专业很多。3.2 核心业务表咨询、院校、方案、材料、进度下面列一下我当时建的核心表字段已经尽量精简但覆盖了完整业务流consultation咨询单id、student_id、advisor_id、title、content、status、create_time、assign_time、finish_timeschool院校库id、name、country、city、major、degree、rank、tuition_min、tuition_max、language_requirement、gpa_min、deadlineapplication_plan选校方案id、student_id、advisor_id、school_id、plan_status、target_year、remarkmaterial材料清单id、plan_id、student_id、material_name、required_flag、status、file_url、audit_reasonapplication_status_log申请状态日志id、plan_id、from_status、to_status、operator_id、remark、create_timenotice站内通知id、user_id、title、content、read_flag、create_time这几张表之间的关联关系是咨询单是入口选校方案是核心材料清单和状态日志都挂在方案下面。学生发起申请后一个学生可以同时申请多所学校所以一个学生对应多个方案每个方案又对应自己的一套材料和一套状态记录。3.3 状态机设计申请进度的流转逻辑申请进度的状态看起来是一串数字实际是整张业务表的灵魂。我当时设计了这样一条状态链0待受理学生提交咨询单后1已分配顾问2方案制定中3材料准备中4申请递交中5已录取6已拒绝7签证办理中8已完成入学为什么用int存而不是直接存字符串因为状态码可以写进枚举类代码里可读性强数据库查询和统计也更快。Java枚举大致长这样public enum PlanStatus { WAITING(0, 待受理), ASSIGNED(1, 已分配顾问), SCHEMING(2, 方案制定中), MATERIAL(3, 材料准备中), SUBMITTED(4, 申请递交中), ADMITTED(5, 已录取), REJECTED(6, 已拒绝), VISA(7, 签证办理中), FINISHED(8, 已完成入学); private final int code; private final String desc; PlanStatus(int code, String desc) { this.code code; this.desc desc; } }状态变更不能只改一个字段还必须往状态日志表里写一条变更记录记录从哪个状态变成哪个状态、是谁操作的、什么时候操作的。答辩的时候你打开数据库展示一条申请从提交到录取的完整日志业务完整性直接拉满。4. 后端接口实现从登录到申请闭环的关键逻辑4.1 登录注册与统一返回结构后端接口我习惯用一个统一返回对象包一层这样前端解析数据非常统一Data public class ResultT { private Integer code; private String message; private T data; public static T ResultT ok(T data) { ResultT r new Result(); r.code 200; r.message success; r.data data; return r; } public static T ResultT error(Integer code, String message) { ResultT r new Result(); r.code code; r.message message; return r; } }注册登录的密码加密一定用BCryptPasswordEncoder别再用MD5了。MD5是摘要算法不是加密算法撞库风险太大答辩时如果老师问到你密码怎么存的能讲出BCrypt加盐的原理会比一句MD5加密有说服力得多。登录接口的核心逻辑就是根据username查用户、比对BCrypt密码、生成JWT token、把token丢给前端。代码不复杂但前后端联调时最容易踩的坑就是token过期时间设置太短。我之前设了30分钟学生用户填表单填到一半再提交接口就直接401体验非常差。后来改成12小时起步配合Redis续期机制才算顺畅。4.2 咨询单创建与顾问自动分配学生端提交咨询单是最普通的insert接口。值得讲的是顾问分配环节。有两种方案管理员在后台手动指派。系统自动分配查询当前待办咨询单最少的顾问优先分配给TA。自动分配的逻辑其实就是一条SQL的事SELECT u.id FROM user u LEFT JOIN consultation c ON c.advisor_id u.id AND c.status IN (0, 1) WHERE u.role advisor AND u.status 1 GROUP BY u.id ORDER BY COUNT(c.id) ASC LIMIT 1;这个负载最少优先的算法虽然简单但比随机分配有逻辑可讲。如果你嫌SQL不够直观也可以在Service层先查出所有启用的顾问统计每个人的进行中咨询单数取最少的那位。两种写法效果一样答辩时能说清楚思路就行。4.3 选校方案与材料清单联动顾问制定了选校方案之后系统应该自动生成一份材料清单而不是让顾问手动一条条录入。这一步做得好了系统就很智能。思路是院校表里存了每个学校的申请要求比如是否需要简历、是否需要成绩单、是否需要语言成绩证明。当顾问为一个学生创建选校方案时后端拿到该校的requirements字段自动往material表插入对应的待上传材料记录。这个过程在答辩时演示效果特别好新建一个方案刷新APP端我的材料材料列表自动出现个人简历大学成绩单雅思成绩单两封推荐信等条目每一条状态都是待上传。这一下就能让老师看出你的系统是业务驱动设计而不是纯粹在写CRUD。4.4 进度更新与站内通知别忽略联动状态机更新接口是核心中的核心。调updatePlanStatus接口时除了更新application_plan表的状态字段必须同时做两件事往application_status_log表写入一条状态变更日志。往notice表插入一条站内通知告诉学生申请进度有变化。这里可以用Spring的事务注解Transactional包起来保证状态更新和日志写入要么同时成功要么同时失败。事务管理是毕设里非常高频的考点你在项目里真实用到了答辩时就能随口讲出来。文件上传这块也别忽视。材料上传用Spring MVC的MultipartFile来做默认最大上传大小只有1MB。学生传一个PDF版本的课程描述可能就超过这个限制接口直接报错。我当时第一次跑通上传功能就卡在这里后来在配置里加了spring: servlet: multipart: max-file-size: 20MB max-request-size: 50MB图片、PDF、Word文档都能正常传了。上传后的文件我建议单独放到一个目录数据库里只存访问路径不要把二进制文件本身塞进数据库。5. APP端与PC管理后台的联动开发5.1 APP端页面结构与接口对接我的APP端页面清单大致是这样的登录注册页首页热门院校轮播、快捷入口院校库列表页、详情页留学咨询咨询表单页我的申请选校方案列表、材料上传页、进度时间线页消息中心站内通知列表个人中心个人信息、修改密码、退出登录前端请求统一走一个封装好的axios实例baseURL指到后端项目地址request拦截器自动从storage里取token塞到Header里response拦截器统一处理401跳转登录页。不然每个页面都手动拼token代码一多就乱套了。材料上传页做得略复杂一些每个材料项后面显示状态待上传时显示去上传按钮已上传时显示重新上传审核不通过时显示顾问的驳回理由。这一块很能体现业务细节值得用心做。5.2 PC管理后台审核流与数据统计管理后台我用 Vue3 Element Plus 搭的PC端项目主要页面咨询单总览表格展示所有咨询单支持按状态筛选点击单子可以分配顾问。顾问管理新增顾问账号、重置密码。学生管理查看学生列表禁用异常账号。院校管理维护院校库数据。申请统计用ECharts画申请状态分布饼图和院校申请人数柱状图。前端菜单根据登录用户的role字段动态渲染。但你要清楚前端控制菜单只是体验问题后端的拦截器或Service层必须再校验一次权限比如学生端调顾问接口要直接拒绝。前端的隐藏不是安全手段只能算优化交互。5.3 前后端联调最容易翻车的四个点这块必须拿出来单独讲因为联调阶段踩的坑比开发还多。跨域问题。前端H5跑在localhost:8081后端在localhost:8080不一样就跨域了。解决办法是后端写一个CorsFilter配置类或者加CrossOrigin注解。推荐用全局配置类一劳永逸。SpringBoot 2.7里跨域配置现在是WebMvcConfigurer加CorsRegistry别用旧版的WebMvcConfigurerAdapter。token过期时间。前面提过了30分钟太短建议12小时起步演示的时候不会中途掉线。如果做了Redis存token还可以顺手实现一个滑动续期每次请求都刷新过期时间用户连续使用时token不过期闲置一段时间才失效。时间格式问题。LocalDateTime序列化出来默认是2024-05-20T14:30:00中间那个T很突兀前端展示也不好看。在配置文件里统一指定spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT8这样前后端所有时间字段都变成了2024-05-20 14:30:00省去前端逐个格式化。分页参数问题。MyBatis-Plus的分页要用PaginationInnerInterceptor插件在项目里注册一下Configuration public class MybatisPlusConfig { Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }不注册这个插件分页查询的IPage参数会失效查出来的其实是全量数据这是非常经典的一个坑。6. 本地部署、高频Bug与答辩前自测6.1 环境初始化与数据库脚本毕设项目最后免不了要在答辩教室的电脑上跑起来环境准备建议提前一天做。完整步骤大概是安装JDK 1.8并配置环境变量。安装Maven 3.8配置国内镜像源加速依赖下载。安装MySQL 8.0用Navicat执行init.sql导入表结构和初始数据。安装Redis并启动服务端。修改后端application.yml里的数据库连接、Redis密码、文件上传路径。后端执行mvn spring-boot:run启动浏览器访问Swagger接口文档验证。前端项目执行npm install npm run dev启动浏览器打开页面走一遍核心流程。提醒一下有些同学的电脑上同时装了JDK 8和JDK 17环境变量配的是17SpringBoot 2.7项目和JDK 17确实能跑但如果你用了某些老组件可能报非法反射访问警告。保险起见建议把JAVA_HOME临时指到JDK 8再启动。6.2 高频Bug清单与排查思路把我在开发过程中遇到的坑汇总成表格你提前看一眼真遇到时能少走弯路问题现象可能原因排查和解决控制台报Table xxx doesnt exist数据库没初始化表或表名大小写不对核对init.sql是否执行成功Linux下MySQL表名大小写敏感统一用小写接口总是返回404请求路径写错或被拦截器拦截看控制台日志确认路径白名单配置用Swagger测试真实路径登录接口报Access deniedRedis密码没配置对检查application.yml里Redis配置和本机redis.conf的密码启动时报Failed to bind propertiesapplication.yml配置项拼写或缩进不对逐行检查配置尤其是yaml格式不能有tab缩进分页查询不生效没注册分页插件按上文配置PaginationInnerInterceptor前端上传文件失败上传大小超限调大spring.servlet.multipart.max-file-size跨域报错前端端口和后端端口不一致配置CorsRegistry全局跨域时间字段格式不对Jackson反序列化格式未设置配置jackson date-format和time-zone还有一个小坑MyBatis-Plus的逻辑删除字段如果命名为deleted实体类里加的TableLogic只对MyBatis-Plus内置方法生效如果手写了XML里的SQL必须自己拼WHERE deleted 0别问我是怎么知道的。6.3 答辩与自测演示建议答辩前别光顾着准备PPT系统本身的演示路径比你PPT里的技术架构图重要得多。强烈建议按下面的方式准备演示数据预置一个已经走完提交咨询→分配顾问→生成方案→材料上传→递交申请完整流程的学生账号。预置两个不同状态的咨询单一个停留在待分配一个正在材料准备中。这两个状态方便你现场演示状态流转而不是从零开始填一堆表单。管理后台预置3个顾问账号和10条左右的院校库数据这样统计图表不是空架子。演示的时候不要上来就狂点按钮。我的建议是先用1到2分钟讲清楚三个角色和业务闭环然后按学生APP端发起咨询→管理员后台分配顾问→顾问制定方案→学生上传材料→顾问递交申请→状态变化通知这条主线走一遍。走完主线之后再打开数据库展示状态日志表让老师看到每一次操作都有记录。最后如果时间充裕再展示一下统计看板。我之前有个同学系统功能都做完了演示时因为现场没有安卓模拟器APP端直接打不开手忙脚乱。后来我帮他搭了H5版兜底才算救回来。所以无论你做的是什么跨平台方案答辩前夕一定要在浏览器里确认H5版本能正常跑通主流程这是个保命操作。最后说点个人体会。这个项目做完之后我最大的收获不是把SpringBoot的接口写得多熟练而是真正理解了业务状态流转这件事。以前写课程作业脑子里只有增删改查做这个系统时被逼着思考咨询单什么时候进入待分配状态选择了学校之后材料清单什么时候生成进度状态变了该通知谁这些问题想明白了功能模块自然就串起来了。如果你正在做类似的SpringBoot毕设不妨也先花两天时间把业务流程图画清楚想清楚每个节点的参与者和状态变化再动手写代码。后面遇到版本兼容、字段映射、部署配置之类的各种问题都别慌照着前文的排查路线一条条走基本都是能解的。

相关新闻

huashu-art-motion 克里姆特金色时期风格配方:金箔像素公式、四类纹样系统与平面-写实对比技法

huashu-art-motion 克里姆特金色时期风格配方:金箔像素公式、四类纹样系统与平面-写实对比技法

【免费下载链接】huashu-art-motion 艺术动画skill:35种艺术风格、9种解说语法,用代码让画动起来。 项目地址: https://gitcode.com/gh_mirrors/hu/huashu-art-motion 点击查看 免费下载 本文基于风格配方卡 18_klimt.md 与其对应的场景实现…

2026/10/9 5:18:25 阅读更多 →
阿卡替尼:高选择性BTK抑制剂如何兼顾疗效与安全

阿卡替尼:高选择性BTK抑制剂如何兼顾疗效与安全

1. 为什么第一代BTK抑制剂的“广谱”是一把双刃剑1.1 从伊布替尼说起:BTK这个靶点为什么值得做文章BTK,全称布鲁顿酪氨酸激酶,主要分布在B细胞和造血细胞里,是B细胞受体信号通路里的核心节点。简单说,B细胞一旦接收到抗原刺激,一系列磷酸化信号就要靠BTK往下传,最终…

2026/10/9 5:18:25 阅读更多 →
2026届杭州春招技术岗全解析:时间线、岗位与薪资参考

2026届杭州春招技术岗全解析:时间线、岗位与薪资参考

每年一开年,问春招的人就多了起来。今年尤其典型,很多杭州方向的技术岗同学都在问:2026届春招到底什么时候算正式开始?头部公司还有没有名额?应届硕士和本科的薪资差距到底多大?标题里那三类大家最关注的企…

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

最新新闻

开源多模态视频模型 MiniMax H3 部署与推理优化实践

开源多模态视频模型 MiniMax H3 部署与推理优化实践

搞视频AI的人大概都有一个共同的痛点:生成一段视频要抽帧、分析画面、转换文本、对齐音频、再加字幕,每一步都要接不同的模型,管线长到怀疑人生。上个月我在处理一个内部需求时,把开源多模态视频模型 MiniMax H3 视频工作室整套流…

2026/10/9 7:32:10 阅读更多 →
ReAct模式详解:从零实现AI Agent的推理与行动循环

ReAct模式详解:从零实现AI Agent的推理与行动循环

先别急着写代码。做 AI Agent,尤其是基于大语言模型做那种能“自己拿主意”的智能体,你绕不开一个最基础也最核心的套路:ReAct 模式。我最早接触这个概念的时候,也觉得不就是一个“推理再行动”的循环循环吗?但真正动手…

2026/10/9 7:32:10 阅读更多 →
Android DPMS学习之一——setLockTaskPackages

Android DPMS学习之一——setLockTaskPackages

今日工作中,涉及到了对LockTask模式相关方法的答疑,故此,整理一个学习记录。 void setLockTaskPackages (ComponentName admin, String[] packages) 这个方法的根本目的,是指定哪些应用程序包(Package)被允…

2026/10/9 7:32:10 阅读更多 →
FDE前线部署工程:私有化AI落地的最后一公里

FDE前线部署工程:私有化AI落地的最后一公里

1. 项目概述:FDE 不是“把模型拷过去就完事”的搬运工“FDE”这三个字母最近在多个技术团队的周会纪要里高频出现,但翻遍主流文档,你很难找到一个权威定义——它既不是某个开源框架的缩写,也不是某家大厂新推的认证体系。FDE&…

2026/10/9 7:32:10 阅读更多 →
半透反LCD 2D仿真实战:TechWiz建模关键与排障

半透反LCD 2D仿真实战:TechWiz建模关键与排障

最近在帮朋友追一个户外可穿戴屏项目,客户开口就是“强光下要看得清”。常规方案里,半透反射式(Transflective)LCD是最合适的路线,这也是我常说的“ Display 既要背光透射又要环境光反射”的双模式面板。但问题在于&am…

2026/10/9 7:32:10 阅读更多 →
编写恰到好处的产品退市(EOL)通知:Product-Manager-Skills 的 eol-message 技能实战指南

编写恰到好处的产品退市(EOL)通知:Product-Manager-Skills 的 eol-message 技能实战指南

AI 技能AI 插件 【免费下载链接】Product-Manager-Skills Product Management skills framework built on battle-tested methods for Claude Code, Cowork, Codex, and AI agents. 项目地址: https://gitcode.com/gh_mirrors/pr/Product-Manager-Skills 点击查看 免…

2026/10/9 7:31:10 阅读更多 →

日新闻

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 阅读更多 →