SpringBoot+Vue党员教育管理系统设计与实现:从需求分析到部署排坑
最近刚把一个计算机毕业设计项目完整跑通用的是 SpringBoot Vue 的组合题目是“党员教育和管理系统”也可以理解成一套党校线上指导平台。如果你正好在选毕业设计题目或者公司内部需要做一套线上学习培训系统这个项目的架构和实现思路完全可以拿来参考。做个简单介绍它就是一个典型的“管理端 学习端”双端系统既能管理课程、用户、考试也能让学员在线看视频、做题、查分数、存学习档案。最核心的价值在于把线下的培训组织工作搬到线上解决了“时间凑不齐、过程难追踪、结果难量化”的痛点。下面我把这个项目从需求分析、数据库设计、前后端实现到部署排坑的整个过程完整拆开讲。不是光贴代码而是把每一步为什么这么做、踩过什么坑都写清楚。1. 需求分析与系统整体设计1.1 业务场景与核心痛点分析做这类系统之前最忌讳的事情是拿到题目就打开IDE写代码。我第一件事是先弄清楚“党员教育和管理系统”到底要解决什么问题。传统线下培训有几个很明显的痛点。第一是时间协调困难集中授课总有学员因为值班、出差、请假等原因无法到场补课又得重新约时间。第二是学习过程不可追踪线下签到只能证明人到场了至于他有没有认真听、听进去多少完全无法得知。第三是学习效果难量化考试完把卷子存档但后续要统计某个人的学习总时长、学分、考试成绩全靠手工翻记录效率很低。这套系统要解决的就是把这几个问题全部线上化、流程化、数据化。系统最基础的定位是面向单位内部学员的在线学习考试平台。因为题目里包含了“教育和管理系统”以及“党校线上指导平台”两层含义我最终把系统拆成了两大端口。第一是后台管理端面向系统管理员和课程发布人员。这个端负责用户管理、课程分类、课程上架、题库维护、考试创建、成绩审批、学习情况统计。第二是学员学习端面向普通学员。这个端负责登录注册、浏览课程、在线学习、查看学习进度、参加考试、查看成绩、维护个人档案。这样拆分之后前后端职责非常清晰管理端是内容生产与管控学习端是内容消费与学习行为记录。两者通过统一的权限体系隔离开。1.2 功能模块拆解与角色权限设计模块拆分我建议直接按“角色”来切因为不同角色看到的界面和能做的操作完全不同。这个系统我定义了三种核心角色也可以根据需要扩展出第四种。超级管理员拥有全部权限包括系统配置、用户角色分配、数据备份。课程管理员可以理解为教务人员负责课程管理、考试管理、通知发布、学习成绩复核。普通学员只能访问学习端查看课程、学习视频、参加考试、查看个人学习统计。权限模型用的是目前主流系统的标配 RBAC也就是“用户-角色-权限”三层模型。用户表只存放账号密码和基本信息角色表定义身份权限表或者说菜单表定义能访问的接口和按钮中间用用户角色关联表和角色权限关联表串起来。这样做的好处是以后要增加一个“讲师”角色不需要修改已有代码结构只要在角色表和权限表里加数据就行。从功能模块上看我整理成了七个核心模块用户管理账号增删改查、重置密码、启用禁用、角色分配。课程管理课程分类、课程发布、视频上传、章节课时维护。学习记录记录学员观看视频的进度、时长、完成状态。考试管理题库管理、组卷、考试发布、自动判分、成绩查询。通知公告发布学习通知、系统公告。统计报表按课程统计学习人数、按学员统计总学时和平均分。系统管理菜单管理、角色权限配置、操作日志。学习端则对应为首页、课程列表、课程详情、在线学习、考试中心、我的成绩、个人中心。1.3 非功能性需求与设计取舍除了功能我专门列了四个非功能性需求这些在毕业设计答辩时也常被问到。一是安全性。用户密码必须加密存储不能明文入库登录后的请求必须携带有效令牌才能访问受保护接口课程和考试数据不能被普通学员越权修改。二是性能。课程列表和考试列表要支持分页首页数据加缓存避免每次请求都查数据库。学习进度需要低频实时更新不需要做到毫秒级所以用普通接口提交即可。三是兼容性。前端适配 Chrome、Edge 等主流浏览器视频播放兼容 H5 播放器不依赖 IE。四是可维护性。代码分层要清晰后端 Controller-Service-Mapper 三层是标配前端组件尽量拆分复用。设计取舍上有一点要提醒不要把系统做成大而全比如在线直播、聊天室、积分商城这类功能除非是加分需求否则不建议加。毕设时间有限把核心闭环做完做稳远比堆一堆没打磨过的功能更有说服力。2. 技术架构与核心实现细节2.1 技术选型以及为什么这么选后端我选的是 SpringBoot 2.x 版本这是目前主流稳定版本社区资料最多遇到问题容易搜到解决方案。ORM 框架用了 MyBatis-Plus不是为了炫技而是因为它的代码生成器能直接根据数据库表生成实体类和 Mapper写单表 CRUD 时几乎不用写 SQL能省下大量时间这对应届毕业生来说非常友好。权限认证部分用的是 Spring Security JWT。Spring Security 是安全领域的事实标准用它来做登录拦截和角色鉴权比自己写拦截器要严谨很多。JWT 则解决了分布式场景下的会话问题用户登录后拿到一个无状态令牌后续所有请求都带着这个令牌服务端不需要在内存里保存会话信息接口天然支持横向扩展。Redis 作为缓存中间件主要用来缓存首页课程列表、课程分类等读多写少的数据。当然这里有个取舍如果最终部署的服务器内存比较紧张也可以不引入 Redis直接做服务端本地缓存。但我还是建议用 Redis因为毕业设计里加一个中间件在论文中可以写成一章“系统性能优化”答辩时有东西可讲。数据库用 MySQL 8.0免费、稳定、使用面广。文件存储方面课程视频是最大的存储对象我本地的方案是存在服务器磁盘如果后续要做得专业可以替换为云存储或者搭建专门的文件服务但在本地项目中用磁盘目录加 URL 映射就足够。前端选了 Vue3 Element Plus Pinia Vue Router。Vue3 的 Composition API 写起来比 Options API 更灵活Element Plus 的表格、表单、弹窗组件能直接覆盖后台管理端 90% 的页面需求。视频播放没有引入额外的大型组件库直接用 HTML5 的 video 标签配合一个进度上报接口简单可靠。2.2 数据库设计与关键表结构数据库设计是整个项目里最不能偷懒的部分。表结构如果设计不合理后面写接口会反复返工。我按业务模块拆成了十来张表核心的几张介绍如下。用户表是系统的基础字段包括id、username、password、real_name、avatar、phone、status、create_time。其中 password 字段存的是 BCrypt 加密后的密文不是明文。status 用来做启用禁用控制0 表示正常1 表示禁用。课程分类表相对简单id、category_name、sort_order、status。课程表则是核心id、title、cover_url、category_id、description、difficulty、study_count、status、create_time。study_count 这个字段可以做成冗余字段每次有人学习完成时数量加一避免用 count 去统计时拖慢性能。课程内容表用来存章节信息id、course_id、chapter_name、video_url、duration、sort_order。一个课程下面挂多个章节学员学习的最小单位就是章节。学习记录表非常关键id、user_id、course_id、chapter_id、current_time观看位置、video_duration、progress进度百分比、status完成状态、update_time。为了保证进度数据不会频繁写入导致数据库压力大我设计了更新策略视频播放时每 15 秒上报一次进度且只有进度变化超过 2% 时才真正更新数据库。考试相关表有四张题库表存放题目字段是 id、course_id、question_type单选、多选、判断、question_content、option_a、option_b、option_c、option_d、answer、analysis试卷表存放一次考试的信息关联课程和考试时间试卷题目关联表把试卷和题目关联起来成绩表记录学员答题结果和得分。这几张表的关系可以概括为用户表与角色表是多对多用户与课程是多对多课程与章节是一对多学员与章节的学习记录是一对一课程与题库是一对多考试与题目是多对多。表之间都通过外键逻辑关联但没有物理外键这种做法在互联网项目里非常普遍原因是通过代码保证数据一致性比数据库约束更灵活同时高并发写入时性能更好。2.3 SpringBoot 后端核心实现后端接口的开发顺序我强烈建议按照“认证授权 → 基础数据 → 业务模块”这样的顺序。先把认证跑通后续写任何业务接口都能顺手测试不会出现写完了才发现接口访问不了的情况。登录接口的实现逻辑是这样的前端把用户名和密码传给后端后端先根据用户名查用户如果不存在直接返回账号错误存在则用 BCrypt 算法校验密码校验通过后生成 JWT 令牌把用户 ID、用户名、角色标识写进令牌里同时设置令牌有效期我这里设的是 2 小时。JWT 工具类的核心代码可以参考这个逻辑public String generateToken(User user) { return Jwts.builder() .setSubject(user.getId().toString()) .claim(username, user.getUsername()) .claim(role, user.getRole()) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() 7200000)) .signWith(SecretKeySpec, SignatureAlgorithm.HS256) .compact(); }生成的令牌需要交给前端保存前端每次请求时放在请求头的 Authorization 字段中格式为“Bearer token”。后端通过一个认证过滤器对每个请求解析令牌解析成功就把用户信息设置到当前线程上下文中失败则直接返回 401 未授权。Spring Security 配置里需要放行登录、注册、获取课程分类这些不需要登录就能访问的接口其他接口统一走认证。角色权限通过 PreAuthorize 注解控制比如删除课程的接口加上“hasRole(ADMIN)”的限制这样即使普通学员知道接口地址也无法调用。课程列表接口我用的是 MyBatis-Plus 的分页能力PageCourse page new Page(current, size); LambdaQueryWrapperCourse wrapper new LambdaQueryWrapper(); wrapper.eq(Course::getStatus, 1) .like(StringUtils.hasText(keyword), Course::getTitle, keyword) .orderByDesc(Course::getCreateTime); courseService.page(page, wrapper);这段代码只用几行就完成了“按关键字模糊查询 只查上架课程 按时间倒序 分页”四件事。对比原生 MyBatis 写 XML SQL 的方式效率提升非常明显。学习进度上报接口的设计要特别注意。接口接收的数据包括 courseId、chapterId、currentTime、videoDuration、progress。处理逻辑是先查这个学员对当前章节是否已有学习记录没有则新增一条有则更新进度当 progress 大于等于 95% 时把 status 置为已完成。同时更新课程表中的 studyCount。这里我用了事务注解 Transactional保证学习记录和课程学习人数两个操作要么同时成功要么同时回滚。考试自动判分功能的逻辑也不复杂学员提交试卷时后端拿到所有答案逐题与题库中的正确答案比对。为了减少数据库查询次数我把一次考试的所有题目和答案先查到内存里组装成哈希表再遍历学员答案这样一次考试判分只需两次数据库查询一次查试卷题目一次查选项答案。2.4 Vue 前端核心实现前端项目我使用 Vue CLI 创建的 Vue3 项目配合 Element Plus 做后台管理界面。前端第一个要处理好的是请求封装直接在 axios 实例上拦截统一注入令牌和统一处理错误码。const service axios.create({ baseURL: /api, timeout: 15000 }); service.interceptors.request.use(config { const token localStorage.getItem(token); if (token) { config.headers[Authorization] Bearer token; } return config; }); service.interceptors.response.use( response response.data, error { if (error.response error.response.status 401) { router.push(/login); } return Promise.reject(error); } );这里要提醒一下 baseURL 的配置。开发环境下前端项目的启动端口一般是 8080后端接口是 8081存在跨域问题。我解决的思路是在 vue.config.js 里配置 devServer 的代理把 /api 前缀的请求代理到后端的 8081 端口。这样前端代码里请求地址只需要写成“/api/xxx”既避免了跨域也方便后续部署时统一改写地址。到了生产环境再用 Nginx 把 /api 反向代理到后端服务。路径一套走通。前台学习端的课程详情页有一个“在线学习”功能这里我会拦截视频播放进度的事件。video refvideoPlayer timeupdateonTimeUpdate :srcchapter.videoUrl/video const onTimeUpdate () { const video videoPlayer.value; const current Math.floor(video.currentTime); const duration Math.floor(video.duration || 0); if (current - lastReportTime 15) { reportProgress({ currentTime: current, duration }); lastReportTime current; } };每 15 秒上报一次这是经过实测比较合适的频率。上报太频繁会增加服务器压力上报间隔太长又可能导致用户关闭页面时进度丢失较多。另外我还在 beforeDestroy 生命周期里做了一个最终上报用 navigator.sendBeacon 方法在页面关闭时上报最后一次进度对用户来说体验比较完整。考试模块前端有两个值得注意的点一是倒计时功能考试开始时后端返回截止时间前端以这个时间为基准做倒计时避免依赖本地时间导致时间不准二是答题完成后切换试卷时答案默认保存在前端的状态管理器里只有点击交卷才一次性提交这样即使用户中途切换页面再回来答案还在。3. 从零开始的项目实操记录3.1 环境准备与项目初始化实操阶段先交代一下我本地的环境操作系统为 Windows 10后端用 JDK 1.8 版本开发工具是 IntelliJ IDEA前端用 VS Code数据库用 MySQL 8.0Redis 用 5.0 版本项目管理工具后端是 Maven前端是 npm。初始化分为三步。第一步是在 IDEA 里通过 Spring Initializr 创建 SpringBoot 项目勾选依赖包括 Spring Web、Spring Security、MyBatis-Plus、MySQL Driver、Lombok。第二步是创建前端项目运行 npm create vue3 或者 npm init vuelatest 都行。第三步是创建数据库。创建数据库时我建议直接用脚本来建不要用可视化工具点选因为脚本方便复制到论文附录中。下面这个是用户表的建表语句其他表结构可以照这个风格往下写。CREATE TABLE sys_user ( id bigint NOT NULL AUTO_INCREMENT COMMENT 主键, username varchar(50) NOT NULL COMMENT 登录账号, password varchar(100) NOT NULL COMMENT 密码密文, real_name varchar(50) DEFAULT NULL COMMENT 姓名, avatar varchar(255) DEFAULT NULL COMMENT 头像, phone varchar(20) DEFAULT NULL COMMENT 手机号, status tinyint DEFAULT 0 COMMENT 状态 0正常 1禁用, create_time datetime DEFAULT NULL COMMENT 创建时间, PRIMARY KEY (id), UNIQUE KEY uk_username (username) ) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8mb4 COMMENT用户表;表结构创建完成后用 MyBatis-Plus 的代码生成器生成实体类、Mapper、Service、Controller 四个层次的基础代码这一步能节省差不多两个小时的手工编码时间。3.2 后端代码开发的推进顺序后端我按接口模块推进每一步都会用接口测试工具验证通过之后再进入下一模块。先开发登录认证模块。实现用户的注册与登录接口配置 Spring Security 的过滤链路写 JWT 工具类。登录成功返回到前端的用户信息里包含 token、用户ID、用户名、角色这样前端登录后就能根据角色决定跳转到管理端还是学习端。再开发用户管理模块。管理员可以查询用户列表使用分页加模糊搜索按用户名和真实姓名查找。可以新增用户、修改用户资料、重置密码、启用禁用用户、给用户分配角色。这里特别提醒重置密码不是改成默认密码而是用 BCrypt 重新加密一个随机密码建议前端弹出新密码提示避免管理员长期知道用户密码。然后开发课程管理模块。这里涉及课程分类、课程基本信息、课程章节和视频地址附件管理。视频上传我用的是一个简单的 MultipartFile 接口上传后把文件保存到本地磁盘的指定目录再把访问地址返回给前端。数据库里存的是相对路径 URL这样将来迁移文件到对象存储时只需要批量改 URL 前缀。再开发学习记录模块。学员点击章节视频时后端返回该章节的视频信息以及这个学员过去的学习进度。前端拿到进度后把视频播放时间跳转到对应位置实现“接着上次看”。接着是考试模块。管理端创建题库时我支持批量录入和单个录入两种方式。批量录入其实就是一个文本解析功能每一行是一道题目用分隔符区分题干、选项和答案这样导入几百道选择题也很快。发布考试时要设置考试名称、关联课程、开始时间、结束时间、时长、总分、及格分。学员端考试列表只显示当前时间处于开始和结束之间的考试。最后是统计分析模块。统计报表我用的方式比较简单直接就是写几个聚合查询 SQL统计每个课程的学习人数、每个学员的学习总时长和平均成绩然后用 ECharts 图表组件展示。3.3 前端页面开发与交互细节前端页面开发先做布局框架。管理端采用经典的“左侧菜单 顶部导航 主内容区域”布局左侧菜单根据角色权限动态加载用 Vue Router 的路由守卫实现权限控制。学习端则是“顶部导航 内容区”的布局更像一个普通网站。路由守卫是很关键的一环这段逻辑解决两个问题未登录用户不能访问内部页面已登录但角色不匹配的用户不能访问管理端页面。router.beforeEach((to, from, next) { const token localStorage.getItem(token); const role localStorage.getItem(role); if (to.meta.requiresAuth !token) { next(/login); } else if (to.path.startsWith(/admin) role ! ADMIN) { next(/); } else { next(); } });页面开发顺序跟着后端模块走。管理端先做登录页登录页做好后做用户管理页然后课程管理页再考试管理页最后统计页。学习端先做首页课程列表再做课程详情和在线学习页然后是考试中心和个人中心。做完页面之后我专门花了半天时间做了一次统一联调检查重点看三件事刷新页面是否出现 token 失效、跨域是否正常、接口请求失败时前端是否给出友好提示。比如管理员新增课程时如果课程名称没填后端直接返回“课程标题不能为空”前端弹窗提示这比返回一串英文错误要好得多。3.4 前后端部署与上线当整个项目在本地联调通过后开始部署。部署方案我用了最稳的组合服务器上安装 Nginx JDK MySQL Redis后端用 Maven 打包成 jar 文件通过 java -jar 命令启动。前端用 npm run build 构建生成的 dist 目录里的静态文件放到 Nginx 的 html 目录下。Nginx 配置里需要做两件关键事情。第一件是将前端请求的 /api 前缀反向代理到后端服务地址第二件是配置前端页面路由为 history 模式后刷新页面不会出现 404。server { listen 80; server_name localhost; location /api/ { proxy_pass http://127.0.0.1:8081/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location / { root /opt/dist; index index.html; try_files $uri $uri/ /index.html; } }这里 try_files 配置是关键不配这一句前端 Vue Router 使用 history 模式时用户访问 /home 再刷新就会 404。很多新手部署完发现问题其实就少这一行。后端 Jar 包我建议用 nohup 命令在后台启动日志输出到指定文件中方便排查问题。nohup java -jar system-server.jar --server.port8081 server.log 21 如果实验环境允许还可以用 Docker 把后端、前端、数据库分别打成镜像用 docker-compose 统一编排不过那个就属于加分项了不是必选项。4. 常见问题与排查技巧实录4.1 跨域问题导致前端请求失败这是联调阶段遇到最多的一个问题典型表现是浏览器控制台报“CORS policy”或者“Access-Control-Allow-Origin”错误。出现原因很简单前端运行在 8080 端口后端在 8081 端口端口不同就被浏览器判定为跨域。我推荐优先使用前端代理也就是 devServer.proxy 配置因为在开发环境不需要后端额外配置 CORS 注解也更贴近线上环境统一域名访问的方式。如果后端也配了 CORS又把前端代理也开了反而会出现代理和后端 CORS 双重处理导致请求头异常的问题。4.2 短视频可看、长视频播到一半被卡死学习视频往往是十几分钟甚至几十分钟的大文件我最初直接把文件存在服务器磁盘通过简单的静态资源映射对外提供访问。但测了几次发现几百 MB 的视频拖动进度条时经常转圈很久。问题出在视频请求缺少 HTTP Range 支持。Nginx 默认支持范围请求但 SpringBoot 的静态资源映射不一定默认顺手。最后我用 Nginx 单独配置了一个视频目录所有视频文件都由 Nginx 直接托管不走后端服务拖动进度条就流畅多了。这个经验非常建议碰到视频类项目的同学优先考虑。4.3 JWT 过期没有给出友好提示JWT 的有效期我设的是 2 小时但学员在线学习可能超过 2 小时这时他去提交考试后端解析令牌发现过期直接返回 401。前端 axios 拦截器收到 401 就跳登录页用户辛辛苦苦答的题瞬间没了体验很差。改进办法是前端在收到 401 时先判断当前页面是否处于考试答题状态如果是提示用户登录之后可以继续答题而不是直接跳转登录页。同时把用户答案临时保存在本地存储中重新登录后再把答案带回考试页。另外后端还可以设置一个阈值令牌过期后的 30 分钟内允许“静默续期”用一个刷新令牌换新令牌这里不展开毕业设计能做到提示友好已经足够。4.4 分页查询出现数据重复或漏数据这个问题在我做学习记录分页时碰到过。原因是列表排序不稳定比如按学习时间倒序时同一时间有两条记录MySQL 的默认排序可能每次返回的顺序不完全一致翻页时就会出现重复或漏掉记录。解决方式很到位在 ORDER BY 排序字段后面再加上主键 id 作为辅助排序条件保证排序结果唯一。比如 order by update_time desc, id desc这样分页结果就稳定了。4.5 前端上传视频超时视频文件动辄四五百 MB默认的 axios 请求超时时间是 15 秒本地网速稍慢就会超时。我最初上传小视频没事传大视频时就总是失败。后来在文件上传这个接口上单独设置超时时长或者直接在 axios 请求体里加 { timeout: 0 }表示不超时等上传完成之后再获取结果。当然真正生产级的方案不是这样会用到分片上传、断点续传但毕业设计做到前端显示上传进度、后端保存完成提示这个程度已经够用了在论文里也可以明确说明当前版本的适用边界。4.6 成品论文写作的几点建议最后想说一下论文部分。很多同学代码写完了论文不会写其实核心框架并不复杂。论文结构可以参考经典的信息系统设计模板绪论讲选题背景和意义这部分要重点结合当前对线上学习教育平台的实际需求来写然后相关技术介绍写清 SpringBoot、Vue、MyBatis-Plus 的原理和在该项目中的作用接着系统需求分析把用例图、业务流程图画清楚再系统设计包括总体架构、功能模块设计、数据库设计再系统实现配上核心页面截图和关键代码最后测试写功能测试用例和结果。论文不是代码的复制粘贴要把“我为了解决什么问题采取了什么方案达到了什么效果”讲清楚。比如“学习进度上报频率从每 5 秒改为每 15 秒减少数据库写入频率”这件事写进论文里就是一条实实在在的性能优化体现。相比宏大的系统介绍这类细节更能体现你真正动过脑筋。做完这个系统我最大的体会是业务理解能力比技术框架熟练度更重要。刚拿到题目时我也容易一上来就想用各种新框架、新技术但真正把业务痛点拆清楚之后发现核心功能基本都是增删改查加状态流转。技术上的难点反而集中在文件存储、进度上报频率控制和权限体系设计这些小细节上。做毕业设计也好做实际项目也好先把“这个系统为什么存在”想明白再动手写代码整个开发过程会顺畅得多。如果后续时间充裕这个系统还可以继续扩展的方向包括课程学习笔记功能、排行榜激励体系、人脸识别在线学习防挂机、消息推送通知甚至接入在线会议系统做直播课程。结构已经打好了扩展就是往模块里加功能不需要推倒重来。项目源代码和论文的整合建议按照“后端源码、前端源码、数据库脚本、论文文档”四个目录分类归档交付和答辩时都会清爽不少。

相关新闻

CC Switch 多环境切换实战:把 Claude Code 的 endpoint 改到 TaoToken

CC Switch 多环境切换实战:把 Claude Code 的 endpoint 改到 TaoToken

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

2026/10/15 22:27:31 阅读更多 →
基于SSM+Vue的景区容灾管理系统设计与实现

基于SSM+Vue的景区容灾管理系统设计与实现

又到一年毕业设计的季节,后台私信里很多同学都在问差不多的一个问题:SSM Vue 到底做什么题目比较稳?既要工作量够,又要技术栈主流,还得好写论文、好答辩。今天想拆解的,正是这类题目里很有代表性的一类——…

2026/10/15 22:27:31 阅读更多 →
Vue看板娘教程详细版:用TaoToken统一Key接入Live2D交互组件

Vue看板娘教程详细版:用TaoToken统一Key接入Live2D交互组件

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

2026/10/15 22:27:31 阅读更多 →

最新新闻

Python3.8官网文档之类的基础语法阅读

Python3.8官网文档之类的基础语法阅读

前言 标题里的「之类」表述比较含糊,本文把它读作:怎么读 Python 官方文档里的基础语法部分。这是一项比背语法更值的技能——语言在演进,教程会过期,但官方文档永远与解释器同步,而且它给出的是定义,不是某…

2026/10/15 23:18:39 阅读更多 →
空间数据分析驱动大数据业务创新:从技术选型到落地实践

空间数据分析驱动大数据业务创新:从技术选型到落地实践

做大数据这行这些年,我越发觉得一个趋势值得重视:数据本身不产生业务价值,只有把数据放进具体的地理和业务场景里,价值才会显性化。空间数据分析在大数据领域的热度一直不低,但真正把它用出业务创新价值的团队其实不多…

2026/10/15 23:18:39 阅读更多 →
Python装饰器全解:从函数对象到语法糖,手写可落地的装饰器

Python装饰器全解:从函数对象到语法糖,手写可落地的装饰器

装饰器在Python圈子里被叫“魔法”,其实它不是魔法,而是把函数当参数传来传去。工作里我见过不少同事,学Python写业务代码挺熟练,一到自己写装饰器就发怵,不是看不懂别人写的装饰器,就是要用的时候不知道从…

2026/10/15 23:18:39 阅读更多 →
STM32+NB-IoT低功耗环境监测节点设计与实测

STM32+NB-IoT低功耗环境监测节点设计与实测

得先把话说在前面:这套系统我从立项到真正稳定跑起来,前后折腾了好几版板子,最深的感受不是STM32怎么配、NB-IoT怎么发包,而是——低功耗这三个字,在环境监测这种场景里,几乎每个环节都在跟你作对。很多人一…

2026/10/15 23:18:39 阅读更多 →
测评题库高效使用指南:从题型分析到考前冲刺

测评题库高效使用指南:从题型分析到考前冲刺

简介:诺瓦星云公司测评题库是面向该公司入职测评的实用练习资料,适合正在准备笔试的求职者使用。资料以Word文档形式打包,全包仅1个文件,压缩后大小约13.37MB,便于直接打开浏览,也方便在电脑、手机上随时翻…

2026/10/15 23:18:39 阅读更多 →
PS5远程串流延迟优化:AnyPS5配置方案实战解析

PS5远程串流延迟优化:AnyPS5配置方案实战解析

如果你和我一样,常常面临“客厅电视被家人占着,PS5 主机却只能蹲在原地”的情况,那么 AnyPS5 这个名字你应该会感兴趣。这不是什么神奇破解工具,也不是绕过官方限制的黑科技,而是一套我陆续调试了很久的 PS5 串流场景配…

2026/10/15 23:17:38 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →