SpringBoot+Vue+MySQL全栈社区疫情管理系统源码解析
做这种可以直接运行的全栈管理系统源码项目我拿到手的第一反应是先不急着连数据库、跑前端而是把整个工程结构和启动说明翻一遍。因为类似的项目坑往往不在功能本身而在环境配置和版本匹配上。这篇就以中小社区疫情信息管理系统为例把它拆开揉碎来讲清楚前后端各自怎么组织数据库脚本怎么初始化SpringBoot后端 Vue前端 MySQL这套组合为什么是这类管理系统的主流搭配以及我踩过的那些启动报错到底该怎么解决。这套系统解决的是中小社区在公共卫生事件中对人员信息、健康申报、出入登记、公告通知进行数字化管理的真实需求。适合正在学SpringBoot和Vue的开发者拿来练手也适合需要给社区、街道、园区做类似信息管理系统的朋友直接改改就用。1. 项目概述与需求拆解1.1 这个系统到底在管什么中小社区的公共卫生信息管理核心痛点就四个字人工登记。纸质表登记健康情况微信群里接龙申报值班人员手动统计人数这套流程在数据量小的时候勉强能跑一旦碰上需要每日上报、追溯、汇总的场景就彻底乱了。缺一个统一入口缺一个可查询的数据库缺一份按角色区分的操作界面。这个项目就是针对这个场景做的。从功能上看它不是一个简单的增删改查堆砌而是围绕社区工作人员和普通居民两类核心角色搭起了一条信息流转链路居民端注册登录、每日健康申报、查看社区公告、出入登记申请。管理端审核居民信息、查看每日申报汇总、管理出入登记记录、发布公告、对社区人员数据进行统计分析。所以你在看源码的时候不要只盯着某个页面好不好看而是要看数据是怎么从居民提交流转到管理后台的。前后端分离项目本质就是数据在 API 层面的传递和落库。1.2 核心功能模块划分我习惯把一个系统的功能拆成基础数据和业务数据两层来看。基础数据就是用户、角色这类支撑系统运行的表业务数据就是健康申报、出入登记这些真正产生价值的表。这个项目的模块划分大致如下模块层级核心功能用户管理基础登录、注册、角色区分管理员/居民、用户状态管理居民信息管理基础楼栋、单元、门牌号、姓名、联系方式、证件号码等健康申报管理业务每日体温、健康状况、是否接触异常人员、备注信息出入登记管理业务出入时间、事由、目的地、体温记录、审核状态公告管理业务公告发布、列表展示、置顶/下线状态数据统计看板业务今日申报人数、异常人数、出入人次等聚合数据这些模块在页面上看是一张张菜单在数据库里就是一张张主外键关联的表。看懂了这个对应关系就拿到了一把钥匙——不管源码怎么组织你都能快速定位到某个功能要去哪个Controller、哪张表里找。1.3 为什么偏偏是 SpringBoot Vue MySQL选这套技术栈不是因为它时髦而是因为这三点第一生态成熟出问题的成本低。SpringBoot 封装了绝大部分基础配置一个注解就能起一个 Web 服务Vue 的组件化开发和 Element UI 这类组件库让后台管理界面的开发效率远高于传统 JSP 加 jQueryMySQL 更是中小型系统的标配数据库。三者的资料和社区讨论都非常丰富遇到报错几乎都能搜到答案对一个要可直接运行的源码项目来说这是最实际的保障。第二前后端分离的架构职责清晰。后端只关心接口、业务逻辑和数据库前端只关心页面渲染和交互两边通过 JSON 格式的 API 通信。这样做的好处是部署灵活前端打包成静态文件可以放在 Nginx 里也可以直接扔进 SpringBoot 的 static 目录变成一个包运行开发时也可以两个端口同时调试。第三人才市场认可度高。SpringBoot Vue 是国内中小型项目最常用的组合之一很多初学者的第一个全栈项目就是这个组合。拿它来做中小社区的信息管理系统后续想招人维护、想扩展功能都相对容易。2. 技术架构与工程结构设计2.1 后端工程结构一眼找到该改哪里SpringBoot 项目的包结构有很强的约定每个包的职责一眼就能看出来。拿到源码后先把src/main/java下的包结构展开参照下面的对照表能帮你快速定位代码包名职责你看到的东西controller接收前端请求返回 JSON一个个RestController以/api/开头service/service.impl业务逻辑层接口和实现分离处理业务规则、判断状态、调用 Mappermapper数据访问层对应 MyBatis 或 MyBatis-PlusMapper接口或 XML 文件entity/domain实体类对应数据库表结构表字段的 Java 封装带上TableName或TableIdconfig配置类跨域配置、拦截器配置、MyBatis 分页配置这套分层在中小项目里非常标准Controller 不写业务逻辑只做参数接收和结果封装Service 层处理具体业务事务、判断都在这里Mapper 层只做数据库交互。实际改动时你 90% 的时间都在 Service 和 Mapper 里。Maven 依赖方面核心的依赖大概是 Spring Boot Starter Web、MyBatis 相关依赖如果是 MyBatis-Plus 会有mybatis-plus-boot-starter、MySQL 驱动、Lombok用于简化实体类的 getter/setter。拿到源码后先看一眼pom.xml确认使用的 MyBatis-Plus 版本和 Spring Boot 版本不冲突这是最容易踩坑的地方。2.2 前端工程结构路由、API 封装、页面组件前端工程一般放在frontend或者vue目录下。Vue 项目里你最先要关注三个地方src/router路由配置。每个页面在哪个路径是哪个组件需不需要登录才能访问都在这里。src/api接口请求封装。常见做法是基于 axios 封装一个 request 对象统一设置baseURL、请求拦截器加 token、响应拦截器统一处理错误码。src/views页面组件。按模块组织比如resident.vue居民管理、report.vue健康申报、dashboard.vue统计看板。看前端源码的时候最容易迷失的是页面太多不知道哪跟哪。我的建议是先打开路由配置文件照着路由表把页面关系画出来然后把每个页面的import语句和data里的url字段整理出来前端和后端的接口对应关系就全清楚了。axios 的封装是前端的一个关键点。正常情况下你会看到类似这样的结构import axios from axios const request axios.create({ baseURL: http://localhost:8080/api, timeout: 10000 }) // 请求拦截器把 token 放到 header 里 request.interceptors.request.use(config { const token window.localStorage.getItem(token) if (token) { config.headers[Authorization] token } return config }) // 响应拦截器统一处理业务错误 request.interceptors.response.use( response { const res response.data if (res.code ! 200) { alert(res.msg || 请求失败) return Promise.reject(new Error(res.msg)) } return res }, error { alert(网络异常请稍后重试) return Promise.reject(error) } ) export default request注意如果项目里是 Vue 2 Element UIapi 目录通常长上面这样。如果是 Vue 3 Element Plus 或者用了 Pinia结构会略有不同但核心思路完全一样——一个统一封装的请求对象是所有页面能正常调通后端接口的基础。2.3 数据库设计表结构怎么梳理可直接运行四个字很大程度上取决于 SQL 脚本是否完整。拿到源码先找sql目录找不到就去doc或者db目录翻再没有就去application.yml里看init相关配置把它当成整个项目的心脏位置。典型的核心表结构如下字段以实际源码为准-- 用户表 CREATE TABLE sys_user ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(50) NOT NULL COMMENT 登录名, password varchar(100) NOT NULL COMMENT 密码(MD5或BCrypt), real_name varchar(50) DEFAULT NULL COMMENT 姓名, role varchar(20) NOT NULL DEFAULT resident COMMENT 角色: admin/resident, status int(1) NOT NULL DEFAULT 1 COMMENT 1启用 0禁用, create_time datetime DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 健康申报表 CREATE TABLE health_report ( id int(11) NOT NULL AUTO_INCREMENT, user_id int(11) NOT NULL COMMENT 申报人ID, temperature decimal(4,1) DEFAULT NULL COMMENT 体温, health_status varchar(20) DEFAULT NULL COMMENT 正常/异常, contact_history varchar(255) DEFAULT NULL COMMENT 接触史描述, report_date varchar(10) DEFAULT NULL COMMENT 申报日期, create_time datetime DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;有一点要留意很多源码项目用的是utf8mb4编码如果你初始化 SQL 时指定的数据库没有选择这个字符集中文可能会乱码。看脚本的时候顺便确认一下。数据库设计里有几个常见的设计点值得你琢磨健康申报表用user_id关联用户表但不会每次查询都 JOIN而是直接把用户名冗余进去这就是典型的空间换时间的做法。出入登记表会有status字段比如 0 待审核、1 通过、2 拒绝业务状态字段是这类系统的核心设计。统计看板需要聚合数据但这些数据都是从业务表COUNT出来的设计时不会专门建汇总表数据量小没必要复杂度反而高。2.4 前后端联调跨域与代理配置前后端分离必然遇到跨域问题。前端在 8080 端口后端在 8081 端口axios 发请求的时候浏览器会拦截响应。这个项目里的处理方式通常是三种第一种后端开 CORS在配置类里写一个WebMvcConfigurerConfiguration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/api/**) .allowedOriginPatterns(*) .allowedMethods(GET, POST, PUT, DELETE, OPTIONS) .allowedHeaders(*) .allowCredentials(true) .maxAge(3600); } }第二种前端开发环境用代理转发// vue.config.js (Vue CLI) 或 vite.config.js module.exports { devServer: { port: 8080, proxy: { /api: { target: http://localhost:8081, changeOrigin: true } } } }这两种方式解决的是不同阶段的问题后端 CORS 是解决谁都别拦我前端代理是解决假装我是同源请求。如果你改了后端接口还是报跨域先分清请求到底打到哪一步了再看是不是代理配置没生效。3. 核心功能实现与关键代码解析3.1 登录认证与权限控制登录是这个项目所有功能的前置门槛。这类管理系统通常不会引入特别复杂的 Spring Security JWT因为对社区管理场景来说一个拦截器 token 的方式已经足够。后端的核心逻辑大致是登录时从数据库比对用户名和密码成功后生成一个 token可以是 UUID 或者 JWT然后存入 Redis如果项目用到或者直接返回前端让前端存本地。下次请求带着 token 来拦截器在请求进入 Controller 之前拦截所有/api/**请求除登录接口外校验 token 是否有效以及用户是否有权限。Component public class AuthInterceptor implements HandlerInterceptor { Autowired private UserService userService; Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 放行登录接口 if (request.getRequestURI().contains(/login)) { return true; } String token request.getHeader(Authorization); if (token null || token.isEmpty()) { this.writeUnauthorized(response); return false; } // 这里从 token 解析出用户信息校验是否有效 User user userService.getUserByToken(token); if (user null) { this.writeUnauthorized(response); return false; } request.setAttribute(currentUser, user); return true; } private void writeUnauthorized(HttpServletResponse response) throws IOException { response.setContentType(application/json;charsetUTF-8); response.getWriter().write({\code\:401,\msg\:\未登录或登录已失效\}); } }实际阅读源码时你要重点确认三件事第一token 是否过期处理了第二管理员页面有没有单独校验role第三前端路由里的beforeEach守卫是否和后端拦截器配合拦截掉未登录跳转的页面。很多能跑但感觉不对劲的项目问题就出在权限校验只做了前端后端接口裸奔。3.2 居民信息管理与健康上报模块居民信息管理的核心就是一张sys_user或单独的resident_info表的增删改查。后端写起来很标准Controller 接收分页参数Service 调 Mapper 分页查询返回PageResult。RestController RequestMapping(/api/resident) public class ResidentController { Autowired private ResidentService residentService; GetMapping(/list) public Result list(RequestParam(defaultValue 1) Integer pageNum, RequestParam(defaultValue 10) Integer pageSize, RequestParam(required false) String keyword) { return Result.success(residentService.pageQuery(pageNum, pageSize, keyword)); } PostMapping(/save) public Result save(RequestBody ResidentInfo resident) { residentService.saveOrUpdate(resident); return Result.success(); } DeleteMapping(/{id}) public Result delete(PathVariable Integer id) { residentService.deleteById(id); return Result.success(); } }健康上报模块的实现是关键中的关键因为它在业务上有天然的约束一个人一天只能上报一次重复提交要拦截。这个逻辑在 Service 层实现public boolean report(HealthReport report) { // 同一个用户当天只能有一条记录 QueryWrapperHealthReport queryWrapper new QueryWrapper(); queryWrapper.eq(user_id, report.getUserId()) .eq(report_date, report.getReportDate()); Long count reportMapper.selectCount(queryWrapper); if (count 0) { throw new BusinessException(今日已上报请勿重复提交); } return reportMapper.insert(report) 0; }这就是直接在 Mapper 里加日期条件去重的典型写法。很多人自己写会漏掉这个约束结果测试的时候没感觉一旦上线就会出现一人每天报十几次的情况。前端对应的是上报表单页template div el-form :modelform label-width100px el-form-item label今日体温 el-input-number v-modelform.temperature :min34 :max45 :precision1/el-input-number /el-form-item el-form-item label健康状况 el-radio-group v-modelform.healthStatus el-radio label正常正常/el-radio el-radio label异常异常/el-radio /el-radio-group /el-form-item el-form-item label接触史描述 el-input typetextarea v-modelform.contactHistory/el-input /el-form-item el-form-item el-button typeprimary clicksubmit提交申报/el-button /el-form-item /el-form /div /template这类表单页面从设计上就不允许用户去改日期日期应该由后端LocalDate.now()生成而不是从请求体里取不然用户可以把申报日期改成过去日期业务逻辑就崩了。这个细节在源码里是判断写得好不好的一个标志。3.3 数据统计看板聚合查询怎么实现管理后台通常都会有一个统计页面展示今日申报人数、异常人数、出入登记次数等数据。别小看这些统计它们倒逼你用对 SQL。最常见的聚合写法是Mapper public interface StatsMapper { Select(SELECT COUNT(*) FROM health_report WHERE report_date #{today}) Long countTodayReport(Param(today) String today); Select(SELECT COUNT(*) FROM health_report WHERE report_date #{today} AND health_status 异常) Long countTodayAbnormal(Param(today) String today); Select(SELECT COUNT(*) FROM access_record WHERE access_date #{today}) Long countTodayAccess(Param(today) String today); }前端拿到这些数字后用 ECharts 或者图表组件做成折线图、饼图。数据量不大这种直查方式完全够用。如果在真实场景下数据量大了再考虑加汇总表或者定时任务那是后话。看这个模块源码时你要注意report_date的类型是datetime还是varchar(10)如果是datetime聚合查询要写DATE(report_date) #{today}如果是varchar(10)直接比对字符串就行。很多查询报错根源都是字段类型和 SQL 没对齐。3.4 公告管理一类典型的简单功能范式公告管理模块麻雀虽小五脏俱全。它包含了列表分页、发布、编辑、下线、删除这几种操作。看这个功能的价值在于它是后台管理系统最常见的一类 CRUD 模板搞懂了它你就掌握了 Vue SpringBoot 里 80% 的页面写法。典型的后端逻辑POST /api/notice/save保存公告status初始为 1发布PUT /api/notice/offline/{id}把公告状态改为 0下线GET /api/notice/list分页查询支持按标题模糊搜索DELETE /api/notice/{id}删除物理删除或逻辑删除看项目设计前端就是el-table渲染列表 el-form弹窗编辑Element UI 组件库让这种开发效率极高。公告管理看着不起眼但它是理解状态字段如何驱动业务的重要案例一个status字段控制着展示逻辑前端要判断状态才决定显示下线还是上线按钮。4. 本地部署与可直接运行的关键细节4.1 环境准备版本对齐是第一位的可直接运行不代表什么环境都能跑。建议先对照 README 提到的版本准备好这些环境推荐版本说明JDK1.8 或 11很多旧项目基于 JDK 8 编写JDK 17 可能因反射问题报错Maven3.6IDEA 自带就行重点看pom.xml里的依赖版本MySQL5.7 或 8.05.7 和 8.0 的驱动配置略有不同Node.js14/16 或 18高版本 Node 可能会导致 node-sass 安装失败Vue CLI4.x/5.x旧项目可能是 Vue CLI 4 的工程结构我建议你把这些环境变量的路径确认好在命令行里执行java -version、mvn -version、node -v一次对齐省得后面报错了才怀疑环境问题。真的这一类项目排查起来环境问题占了三分之一。4.2 数据库初始化NAVICAT、命令行还是自动建表初始化数据库有三种方式项目里用的哪一种会在 README 里写明你照着做就行但最好三种都知道。方式一用 Navicat 或者任意 SQL 工具打开脚本文件先创建数据库然后执行里面的建表语句。这种方式最直观适合新手但是如果你用的 MySQL 版本不对可能因为 SQL 语法差异报错。常见的就是DATETIME的默认值问题。方式二命令行导入mysql -u root -p init.sql这种方式快但前提是你先手动建好数据库或者脚本开头就有CREATE DATABASE语句。方式三项目启用了spring.sql.init或者schema.sql的自动初始化配置SpringBoot 启动时会自动执行 SQL 脚本。这个方式最省事但要注意脚本里不能有幂等性问题重复启动会报表已存在。不管用哪种方式初始化完最好执行一条SELECT COUNT(*) FROM sys_user;确认有数据再往后走。4.3 启动后端与前端两步走后端启动用 IDEA 打开项目确认application.yml里的数据库连接信息对不对server: port: 8081 spring: datasource: url: jdbc:mysql://localhost:3306/community_health?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver然后找到主启动类直接运行 main 方法。看到Started ... in x.x seconds字样后端就起来了。前端启动先装依赖再启动开发服务器cd frontend npm install npm run serve默认端口 8080启动后浏览器打开http://localhost:8080如果前端代理配好了登录就能直接打到后端 8081。后端接口验证可以在浏览器直接访问http://localhost:8081/api/resident/list如果返回 JSON 数据说明后端和数据库都通了。这个步骤很多人跳过结果登录页面一直转圈才发现是后端挂了。4.4 打包发布Vue 打包后塞进 SpringBoot 部署开发环境是前后端分离两个服务生产环境往往只需要一个 jar 包这时候就要把前端打包后的文件集成到 SpringBoot 里。步骤很简单先构建前端npm run build会在frontend/dist目录生成静态文件。然后把dist目录下的所有文件复制到 SpringBoot 项目的src/main/resources/static目录下cp -r frontend/dist/* src/main/resources/static/再重新打包后端mvn clean package -DskipTests生成的target/*.jar就是一个完整系统java -jar直接跑浏览器访问后端端口就能打开前端页面。这里有几个细节要特别注意如果前端用了路由的history模式SpringBoot 要做未匹配路由回退到 index.html的配置否则刷新页面就 404。这类项目为了省事很多直接用默认的hash模式url里带#反而没这个问题。如果前端调用的baseURL写死了开发环境的http://localhost:8081打出来的生产包肯定连不上后端。正确做法是让baseURL用相对路径/api这样请求会走同源。5. 常见问题与排查技巧实录5.1 数据库连接失败时区与驱动是头号嫌疑启动后端时最经典的报错java.sql.SQLException: The server time zone value Öйú±ê׼ʱ¼ä is unrecognized翻译一下就是 MySQL 8.0 默认使用CST时区表示JDBC 驱动不认。解决办法就是 URL 里加serverTimezoneAsia/Shanghai。8.0 以上的驱动类是com.mysql.cj.jdbc.Driver5.7 及以下简写为com.mysql.jdbc.Driver。看到这个报错先检查这两处比瞎猜强。还有一类隐蔽问题MySQL 密码里有特殊字符比如、#在application.yml里没做编码处理直接报 Access denied。处理方式是给密码加引号或者在 URL 里做 URL 编码。5.2 前端请求报跨域先分清是开发还是生产开发环境跨域优先检查vue.config.js里的 proxy 是否配置正确尤其注意changeOrigin这个参数。如果你直接访问http://localhost:8080/api/resident/list报跨域但从 8081 访问不报错问题就是代理没生效。生产环境跨域通常是后端CorsConfig没写好或者前端baseURL写死导致的。生产环境不走代理前端和后端必须是同源或者后端开放跨域二者必居其一。还有一个坑后端拦截器把OPTIONS请求直接拦截了导致浏览器预检失败。解决办法是在拦截器放行OPTIONS方法否则你 CORS 配置写得再好也白搭。5.3 端口占用与静态资源 404SpringBoot 默认端口 8080前端开发服务器也常用 8080俩一起跑必冲突。要么后端改 8081要么前端改 8082。如果启动时提示端口被占用可以用下面命令找出占用进程然后关掉或换端口netstat -ano | findstr 8080 # Windows lsof -i :8080 # Mac/Linux静态资源 404 的问题多半出在上面说的打包部署环节。前端dist文件没放进static目录或者 SpringBoot 的static路径配置被覆盖了。还有一个隐蔽点target目录里的旧资源没清理前端更新后重新mvn package居然还是旧页面这是 IDEA 缓存和 Maven 增量打包的坑解决方法是mvn clean后再package。5.4 前端依赖安装失败与版本噩梦npm install失败是最破坏心情的事。最常见的三类报错原因解决办法node-sass安装失败Node 版本和 node-sass 版本不兼容换用sass或安装对应的 Node 版本ERR! network超时npm 官方源不稳定切换淘宝镜像源ERESOLVE依赖冲突npm 版本和依赖树冲突删除node_modules和package-lock.json后重新安装很多人喜欢用最新版 Node.js但老项目的package.json经常不支持装一天都装不上最后换成 Node 14 一分钟搞定。这是我在多个项目里反复验证的经验版本对齐真的能救你命。5.5 可直接运行的项目还是跑不起来怎么办把这个排坑顺序背下来能解决 80% 的问题加载源码后先不启动逐个检查pom.xml、package.json、application.yml三个配置文件确认环境版本和数据库连接。先启动后端确认无报错再用浏览器直接访问一个后端 API确认数据库层通。这一步能过滤掉一半的假项目问题。再启动前端确认页面能打开。如果页面请求报错打开浏览器 F12 看 Network 面板看请求是否发出、返回的 HTTP 状态码是什么。如果前端打不开再检查 Node 版本和依赖安装情况npm run serve报错是黑箱问题换成npm run build看编译错误更清晰。按照这个顺序每次走不通就锁定一个图层不会东摸一下西摸一下。6. 扩展思路这个系统还能怎么升级如果你已经把项目跑起来了下一步就是给它加价值。我个人最推荐的三个扩展方向第一Excel 导入导出。社区场景里有大量存量居民数据在 Excel 表里加一个导入功能就能让系统真正落地技术方案用 EasyExcel后端一个导入接口前端一个上传按钮工作量不大效果立竿见影。第二消息通知。现在的系统大概率只有公告没有申报提醒。可以加一个定时任务每天早上去查哪些人还没申报然后给他们发站内消息。这个功能很贴合实际技术也不难无非是一个Scheduled定时任务加一张消息表。第三报表可视化升级。统计页如果只显示数字价值有限。引入 ECharts 做一个近 7 天申报趋势折线图、各楼栋完成率柱状图这会让系统有质的提升也会让你对后端聚合查询和前端图表组件有更深的理解。从学习角度这个项目的结构简单清晰是研究前后端分离 RBAC 分页 统计这套经典组合的绝佳样本甚至可以直接作为一个开发脚手架去复用。我个人的体会是把这套源码吃透之后再去做别的管理系统项目你会发现自己能快速画出模块表、理出 API 清单、规划数据库结构——这套能力比功能本身值钱得多。最后再分享一个小技巧拿到源码后先看 README 和 SQL 脚本里的注释。很多作者会把自己部署时的注意事项写在注释里比如默认端口改成 8081 是为了避免和前端冲突、“admin/123456 是初始账号”之类的信息这些是源码里最容易被忽视、却最有价值的部分。尊重原作者留下的每一个注释你会少踩很多坑。

相关新闻

ThinkPHP+Laravel双框架开发打印机耗材商城实战指南

ThinkPHP+Laravel双框架开发打印机耗材商城实战指南

办公用品和打印机耗材这个品类,和卖服装、卖数码产品完全是两码事。它的复购周期稳定、型号强绑定、采购决策链清晰,一旦某个办公室习惯用某款硒鼓,后面几个月基本就是按周期补货。我这次做的“ThinkPHP Laravel 日常办公用品打印机耗材商城…

2026/10/10 7:23:20 阅读更多 →
技能高考必刷题,有求s=d+dd+ddd+dddd+…+dd…ddd;其中d为非零正整数。 d的值和位数由键盘接收数据。      比如输入5和2,则表示求S=2+22+222+2222+22222

技能高考必刷题,有求s=d+dd+ddd+dddd+…+dd…ddd;其中d为非零正整数。 d的值和位数由键盘接收数据。 比如输入5和2,则表示求S=2+22+222+2222+22222

#include<stdio.h> #include <stdlib.h> int sum(int n,int m){int i,s0;int tmpm; /**********Program**********/ for(i1;i<n;i){sstmp;//初始设置tmp已有值,必须先加一次,这时tmp为2 tmptmp*10m;//每次加后再*10相当于多十位&#xff0c;2->202,22->2…

2026/10/11 10:58:15 阅读更多 →
DBeaver 通用数据库客户端安装包选型与实战避坑指南

DBeaver 通用数据库客户端安装包选型与实战避坑指南

简介&#xff1a;DBeaver数据库安装包面向数据库开发人员、运维管理员及需要频繁切换多种数据库的技术学习者&#xff0c;提供一套开箱即用的图形化管理工具&#xff0c;解决MySQL、PostgreSQL、Oracle、SQL Server等多类型数据库统一连接与操作的痛点。压缩包共796个文件&…

2026/10/11 11:45:47 阅读更多 →

最新新闻

Django+Vue外卖点餐系统毕设指南:从建表到联调全流程

Django+Vue外卖点餐系统毕设指南:从建表到联调全流程

简介&#xff1a;一套基于Python Django与Vue.js开发的外卖点餐系统毕业设计项目&#xff0c;采用B/S架构&#xff0c;适合计算机相关专业学生作为毕业设计或课程设计参考。前端覆盖首页、菜品详情、订单中心、用户中心等核心用户场景&#xff1b;后台提供总览、订单管理、菜品…

2026/10/11 13:14:52 阅读更多 →
如何在 Virtual Mac 上 5 分钟装好 macOS:新手保姆级快速上手教程

如何在 Virtual Mac 上 5 分钟装好 macOS:新手保姆级快速上手教程

【免费下载链接】VirtualMacOniPad People have dreamed of running macOS on iPad for more than a decade. Today, that dream comes true. With Virtual Mac, iPad finally breaks free from iPadOS, enabling pro apps like Xcode, Terminal, Final Cut Pro, Logic Pro, an…

2026/10/11 13:14:52 阅读更多 →
Kubernetes弹性伸缩实战:HPA、VPA与Cluster Autoscaler原理与配置

Kubernetes弹性伸缩实战:HPA、VPA与Cluster Autoscaler原理与配置

这两年只要跟Kubernetes沾边的团队&#xff0c;几乎都会聊到弹性伸缩。我这些年在一线折腾过不少集群&#xff0c;从最早以为加个 HPA 就万事大吉&#xff0c;到后来被线上抖动、扩容滞后和成本账单来回折磨&#xff0c;才算是把这一整套机制吃透。Kubernetes弹性伸缩实际上不是…

2026/10/11 13:14:52 阅读更多 →
Kubernetes弹性伸缩实战:HPA、VPA、CA与KEDA解析

Kubernetes弹性伸缩实战:HPA、VPA、CA与KEDA解析

做 Kubernetes 这行绕不开的话题就是弹性伸缩。很多人觉得只要部署到集群里&#xff0c;流量大了自然就能扩容&#xff0c;结果一到促销或者突发流量就被报警轰醒&#xff0c;才发现 Pod 数量没有动&#xff0c;节点也快被打满了。原因很简单&#xff0c;Kubernetes 的弹性伸缩…

2026/10/11 13:14:52 阅读更多 →
把CIContext存进@State?SwiftUI-Agent-Skill的“状态即缓存“高级技巧解析

把CIContext存进@State?SwiftUI-Agent-Skill的“状态即缓存“高级技巧解析

【免费下载链接】SwiftUI-Agent-Skill SwiftUI agent skill for Claude Code, Codex, and other AI tools. 项目地址&#xff1a; https://gitcode.com/GitHub_Trending/swi/SwiftUI-Agent-Skill 点击查看 免费下载 SwiftUI-Agent-Skill&#xff08;技能名 SwiftUI Pro&#x…

2026/10/11 13:14:52 阅读更多 →
健身动作错误归因数据集:专注关节抖动、遮挡漂移与小目标定位

健身动作错误归因数据集:专注关节抖动、遮挡漂移与小目标定位

简介&#xff1a;本资源是面向计算机视觉开发者与运动健康AI研究者的健身动作关键点检测专用数据集&#xff0c;聚焦于自下而上类动作识别与姿态评估&#xff0c;解决健身动作自动判别、姿势纠错与虚拟教练系统构建等核心问题。数据集共1758张真实场景图像&#xff08;含训练/验…

2026/10/11 13:13:51 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →