简介这是一份基于SpringBoot的医院药品管理系统毕业设计资源包面向计算机相关专业毕业生、课程设计学生以及需要快速搭建后台管理项目的Java开发者。系统覆盖用户注册登录、角色权限分配、药品信息与分类维护、实时库存监控、出入库记录、采购申请与审批等核心模块满足医院药品流转管理的基本业务需求。资源共415个文件压缩包约24.08MB包含109个Java源码、54个Vue前端页面、17个JavaScript脚本及CSS/XML/YML等配置文件同时提供SQL数据库脚本、bat安装运行脚本、MP4演示视频和SVG图标等便于直接导入IDE运行和二次开发。目录结构清晰从前端组件到后端接口均有覆盖适合作为论文实现和答辩演示的参考资料。已有57人学习下载适合正在做相关课题或需要参考完整SpringBootVue项目的读者。1. 基于SpringBoot的医院药品管理系统解压就能跑的毕设项目上手前先看这三个脚本作为毕业设计和课程设计里的高频选题基于SpringBoot的医院药品管理系统网上一搜一大把但这套资源值得单独说——它不是只给源码和截图让你自己拼环境的架子而是把前端构建产物、后端工程和三个 bat 脚本打成一个包解压后按脚本走就能在本机跑起来。系统覆盖了用户与角色权限、药品档案、库存监控、出入库和采购审批的完整闭环论文里写的那些业务模块基本是哪句话对应哪段功能都能对上的程度。适合谁用做药品管理类毕设需要快速复现演示环境的人或者想参考 SpringBoot MyBatis Vue 前后端合并部署写法的同学。唯一要注意的是压缩包里三个脚本的编号是 1、3、2和直觉顺序不一样第一次跑容易在这犯迷糊。下文给出我建议的执行顺序、每步检查点以及几个高概率踩中的坑。2. 系统拆解角色权限、药品档案、库存报警与采购闭环论文需求落到六张表先别急着双击脚本把模块设计过一遍。答辩时老师最爱问的不是功能有没有而是权限为什么这么设计、报警阈值存在哪、采购和入库怎么衔接。这章先把这些问题说清楚后面操作时才不会一头雾水。2.1 用户与角色权限拦截器做接口级校验一张表存三种角色系统支持管理员、药剂师、医生三种角色。登录接口校验用户名密码后把用户对象和角色写进 session后端每个需要权限的接口都过一遍拦截器。常见做法是不上 Spring Security 全家桶因为毕设重点在业务完整度安全框架的过滤链反而像个黑匣子一旦被追问内部机制容易卡壳。用拦截器自己实现逻辑透明也好讲。public class AuthInterceptor implements HandlerInterceptor { Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session request.getSession(); User loginUser (User) session.getAttribute(loginUser); if (loginUser null) { response.sendRedirect(/login.html); return false; } String role loginUser.getRole(); String uri request.getRequestURI(); // 医生角色对药品管理接口只允许查询禁止增删改 if (uri.startsWith(/api/drug/) doctor.equals(role)) { String method request.getMethod(); if (POST.equals(method) || PUT.equals(method) || DELETE.equals(method)) { response.setStatus(403); return false; } } return true; } }preHandle 返回 false 就直接中断请求。逻辑分两层第一层判断是否登录没登录统一踢回登录页第二层按角色做接口级控制医生角色只允许 GET 查询POST、PUT、DELETE 对应新增、修改、删除全部拦截。uri.startsWith(/api/drug/)这段按实际 Controller 的 RequestMapping 路径调整更精细的做法是把权限点配进数据库菜单表但毕设阶段硬编码规则反而更好讲清楚。这里有个容易忽略的点注册接口的 Controller 里要限制角色字段不能让注册页面自己传一个roleadmin就把自己变成管理员。常见做法是注册时强制写死为药剂师管理员账号通过初始化 SQL 写入。2.2 药品信息与分类有效期、厂家、规格和处方分类怎么建模drug_info 表是药品档案的核心字段设计基本照着药品包装盒抄一遍就行。比较关键的是要把规格和厂家分开存因为同一通用名、不同厂家、不同规格是两条药品档案检索和报表都依赖这两个字段去重。分类直接用字符串字段存枚举值比单独建分类表省事。字段类型说明drug_codevarchar(20)药品编码唯一drug_namevarchar(100)通用名specificationvarchar(50)规格如 0.25g*24粒manufacturervarchar(100)生产厂家categoryvarchar(10)Rx / OTC / TCM 三种分类expiry_datedate有效期low_stockint低库存阈值出库时触发报警分类字段就存三个值Rx 代表处方药、OTC 代表非处方药、TCM 代表中药前端下拉框直接绑定这三项新增和编辑药品时选择即可。low_stock 这个字段容易被漏掉但库存报警全靠它不然后端不知道多少算少。需要提醒的是同一种药不同批次的有效期不同库存不能用 drug_id 汇总成一个数写死在表里。我见过不少翻车现场只建一张药品表库存数量直接 update 同一个字段演示没问题但老师一问两批药有效期不同怎么处理就答不上来。建议单独建 drug_stock 批次库存表药品真实库存按批次剩余量汇总。2.3 库存与采购阈值报警、出入库流水与审批状态机的联动出库接口是整个系统事务最密的地方扣减批次库存、写出入库流水、再检查汇总库存是否低于 low_stock三步必须在同一个事务里否则会出现库存扣了但报警没生成的脏数据。所谓实时库存监控在毕设系统里通常不是 WebSocket 推送而是前端每次进入库存页面或手动刷新时拉一次报警接口答辩时如实说明即可。采购流程就是一个小状态机药剂师提交申请后 status 是 pending管理员审批通过变 approved 并生成采购订单到货后执行入库把数量加回库存拒绝则变 rejected。状态字段用字符串存三个值就够完全不需要上工作流引擎。Transactional public void stockOut(Integer drugId, Integer batchId, Integer quantity, String operator) { DrugStock batch stockMapper.selectByIdForUpdate(batchId); if (batch.getRemain() quantity) { throw new BusinessException(该批次库存不足); } stockMapper.deductStock(batchId, quantity); stockLogMapper.insert(new StockLog(drugId, out, quantity, operator, new Date())); Integer total stockMapper.sumRemainByDrugId(drugId); Drug drug drugMapper.selectById(drugId); if (total drug.getLowStock()) { alertMapper.insert(new StockAlert(drugId, total, drug.getLowStock())); } }selectByIdForUpdate 对批次行加锁防止并发出库把库存扣成负数deductStock 用一条 update 语句做物理扣减sumRemainByDrugId 汇总当前药品所有批次的剩余量和 low_stock 比较后决定是否生成报警记录。batchId 是 drug_stock 表主键quantity 前端要做正数校验。课堂演示里并发很难触发但把锁写出来是答辩加分项。2.4 数据表结构六个核心表撑起整个业务闭环除了 drug_info 和 drug_stock完整闭环还需要流水、报警、采购、用户四张表。sys_user 里 role 字段区分三种角色purchase_order 里存 apply_user、audit_user、audit_time把每步操作都留痕老师查数据时能说清楚每个动作是谁做的。表名职责sys_user用户登录与角色drug_info药品档案与低库存阈值drug_stock批次库存供应商、入库日期、到期日期、剩余量stock_log出入库流水stock_alert库存报警记录purchase_order采购申请、审批状态与审批人这六张表全是简单的一对多关联不涉及多对多MySQL 建表语句写起来很顺初始化 SQL 在压缩包的 sql 目录下跑完脚本再改数据源配置就行。入库、出库、申请、审批四个接口把整个系统串成一条线管理员建档案、药剂师入库、出库触发报警、提交采购申请、管理员审批、到货入库正好对应论文里的四大模块。3. 把系统跑起来1-install、3-build、2-run 三个脚本的正确执行顺序与改造方法三个脚本的命名确实反直觉。从内容上判断1-install 负责安装依赖3-build 负责构建打包2-run 负责启动数字编号更像是给用户从哪点起的引导但实际执行顺序应该是 1-install 在前、3-build 中间、2-run 最后。首次拿到压缩包务必按这个顺序走。3.1 执行顺序与整体流程编号和业务逻辑是两回事如果你装过 Maven 和 Node可能会觉得 install 没必要直接跑 build 就行。但第一次执行我建议还是完整走一遍因为 install 阶段会验证本机环境是否齐整Maven 下载依赖的过程也能暴露网络和仓库配置问题。一套比较稳的执行路径是先跑 1-install 确认依赖装齐再跑 3-build 完成前后端打包和静态资源复制最后跑 2-run 启动。中途任何一步报错先看脚本窗口里的提示不要跳过。3.2 install 脚本Maven 依赖检查与目录校验echo off cd /d %~dp0 echo 当前工作目录%cd% if not exist backend\pom.xml ( echo 未找到 backend 目录下的 pom.xml请确认压缩包已完整解压 pause exit /b 1 ) echo 正在执行 Maven 打包并安装本地依赖... call mvn -f backend\pom.xml clean install -DskipTests if errorlevel 1 ( echo Maven 执行失败请检查 settings.xml 或网络 pause exit /b 1 ) echo 后端依赖安装完成 pausecd /d %~dp0把当前目录切到脚本所在位置否则从别的路径双击脚本会在错误目录下找不到 pom.xml。if not exist 做目录校验出现未找到 pom.xml基本就是解压不完整或目录结构被改动。call 用来调用 mvn确保 Maven 退出后还能继续执行后面的命令errorlevel 1 判断返回码不是 0。-DskipTests跳过测试减少打包时间本地环境没必要跑测试类。如果 Maven 是第一次使用下依赖可能要几分钟网络慢时不要关窗口。另外如果资源里带的是 mvnw.cmdMaven wrapper把 mvn 换成 mvnw.cmd 效果一样。前端那边如果压缩包里有 package.jsoninstall 脚本里也应该有 npm install如果只带构建好的 dist 目录说明前端依赖已经打进去了这一步可以跳过。3.3 build 脚本前端产物打包并复制到 SpringBoot 静态目录echo off cd /d %~dp0 if exist frontend\package.json ( cd frontend call npm run build if errorlevel 1 ( echo 前端构建失败请查看 npm 日志 pause exit /b 1 ) cd .. set STATIC_DIRbackend\src\main\resources\static if not exist %STATIC_DIR% mkdir %STATIC_DIR% xcopy /E /Y /I frontend\dist\* %STATIC_DIR%\ ) else ( set STATIC_DIRbackend\src\main\resources\static if not exist %STATIC_DIR% mkdir %STATIC_DIR% xcopy /E /Y /I dist\* %STATIC_DIR%\ ) echo 构建完成静态资源已复制到 %STATIC_DIR% pause优先判断有没有前端源码有就先 npm run build 生成新的 dist 产物再把 dist 整体复制到 SpringBoot 的 static 目录没有前端源码时直接把压缩包自带的 dist 复制过去。xcopy /E /Y /I表示递归复制子目录、覆盖已有文件、遇到多文件目标自动按目录处理。static 目录是 SpringBoot 默认静态资源根路径index.html 放进去之后访问http://localhost:8080/就能直接打开页面。复制完顺手检查 static 下是否同时存在 index.html 和 favicon.icofavicon 缺失不影响功能但浏览器控制台会报 404。如果压缩包里的 3-build.bat 只做了前端复制后端代码有改动时要手动执行mvn package再进 run 阶段这是常见的脚本不完整情况。3.4 run 脚本JDK 检查、启动 jar 与端口覆盖echo off cd /d %~dp0 java -version if errorlevel 1 ( echo 未检测到 JDK请先配置 JAVA_HOME 和 PATH pause exit /b 1 ) set JAR_FILEbackend\target\hospital-drug-0.0.1-SNAPSHOT.jar if not exist %JAR_FILE% ( echo 未找到 jar 包请先执行 3-build.bat pause exit /b 1 ) echo 正在启动系统浏览器访问 http://localhost:8080 java -jar %JAR_FILE% --server.port8080 pausejava -version检查 JDK 是否可用errorlevel 1 表示 java 命令不存在通常是 JAVA_HOME 没配或 PATH 没加%JAVA_HOME%\bin。然后检查 jar 是否存在防止跳过 build 直接 run 造成空跑。最后java -jar启动命令行里的--server.port8080优先级高于 application.yml这就是不修改配置文件改端口的办法。jar 文件名要以解压后的实际文件为准target 目录在 3-build 执行之后才会生成如果找不到 jar 就说明前面构建步骤没完成。启动成功的金标准是日志里出现Tomcat started on port(s): 8080字样。如果控制台抛 BeanCreationException 或数据库连接相关异常八成是 MySQL 没启动或账号密码不对先查堆栈里的 DataSource 字样别急着翻业务代码。4. 配置与定制SpringBoot 2.7.18 数据源、PageHelper 分页与前端静态资源的三处实战调整跑通只是第一步毕业论文交的是代码和文档老师会重点盯配置。我实际调参时应用配置、分页、静态资源这三块是必看的每一处都有对应的坑位。4.1 application.yml数据源、Mapper 扫描和时区这几个参数别动错server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/hospital_drug?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiuseSSLfalseallowPublicKeyRetrievaltrue username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.hospital.drug.entity configuration: map-underscore-to-camel-case: true pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: trueurl 里的每个参数基本都能对应一个真实报错。serverTimezoneAsia/Shanghai解决 MySQL 8 与 JDK 8 之间的时区偏移不配可能出现日期差八小时或连接超时allowPublicKeyRetrievaltrue解决 MySQL 8 默认 caching_sha2_password 认证插件下首次连接报Public Key Retrieval is not allowed的问题useSSLfalse本地开发直接关掉加密省去证书配置。mapper-locations指向 Mapper XML 的位置type-aliases-package让 XML 里可以直接写实体类简写名。map-underscore-to-camel-case开启后数据库的 create_time 自动映射成 createTime不用每张表手写 ResultMap。数据库名、用户名、密码按本地环境改千万别把真密码提交到 git。SpringBoot 版本建议保持 2.7.18这是 2.x 系列的收尾版本兼容 JDK 1.8也修复了大量已知问题升 3.x 就得 JDK 17本机 1.8 环境起都起不来。如果你用 IDEA 新建 SpringBoot 项目发现只能选 JDK 17 或 21不用硬碰去 start.aliyun.com 这类镜像源生成 2.7.18 工程骨架再导入或者直接用压缩包里的 pom 作为 parent这个问题基本绕开。4.2 PageHelper 分页为什么毕设项目都选它而不是手写 LIMIT药品列表、库存流水、采购记录全是列表页分页跑不掉。MyBatis 里分页两条路手写LIMIT #{offset}, #{pageSize}再单独 count或者用 PageHelper 分页插件。毕设项目普遍选 PageHelper因为它通过 MyBatis 拦截器在第一条查询后面自动拼 LIMIT业务代码不用碰 SQL而且拦截器的原理本身就是一个能讲清楚的答辩点。PageHelper.startPage(pageNum, pageSize); ListDrug list drugMapper.selectDrugPage(drugName, category); PageInfoDrug pageInfo new PageInfo(list); return Result.ok(pageInfo.getTotal(), pageInfo.getList());PageHelper.startPage 只对下一条查询生效所以它和 Mapper 查询之间不能夹任何其他 SQL。PageInfo 里封装了 total、pageNum、pageSize、list 等分页信息前端表格组件直接消费这几个字段。pageNum 从 1 开始reasonabletrue时如果 pageNum 超过总页数插件会自动收回到最后一页不会返回空列表support-methods-argumentstrue允许把 pageNum、pageSize 直接声明为 Mapper 方法参数。这个插件最容易踩的坑是 startPage 后面跟了两条查询第二条会被拦截器一起分页导致统计数据条数被截断。解决办法就是让 startPage 与目标查询保持紧邻中间不调用任何其他 Mapper 方法。多表 join 特别复杂的 SQLPageHelper 自动生成的 count 可能统计不准需要CountSql或手动指定 count 查询但药品管理这类毕设列表基本碰不到。4.3 前端资源带 hash 的 CSS/JS 文件是怎么进 SpringBoot 的压缩包里看到的 app.c300fcf6.css、chunk-vendors.a72b0961.css 这类文件名是 vue-cli 生产构建的结果。webpack 把源码打包后文件内容变了 hash 就变浏览器靠文件名变化来刷新缓存。整套前端最终就是 static 目录下几个 css、js 文件加一个 index.html没有 node_modules也不需要 Node 环境。它们进 SpringBoot 的方式就是被复制到src/main/resources/static由 SpringBoot 的静态资源处理器托管。这样页面和接口完全同源不存在跨域问题更不用配 CORS这也是为什么访问http://localhost:8080/能同时打开页面和调接口。改前端代码后重新 npm run build会生成一组新 hash 的文件名index.html 里的引用同步更新所以整套复制过去即可不用手动改引用路径。如果部署后发现改了前端但页面还是旧的八成是浏览器缓存了 index.html或者 static 目录里残留了旧 hash 文件。本地调试按 CtrlF5 强制刷新服务器上先清空 static 再复制避免新旧文件混在一起。另外确认 index.html 与 app..js、chunk-vendors..js 处在同一层级如果前端把 dist 又包了一层子目录放进 staticSpringBoot 默认静态资源处理器是访问不到的。5. 常见问题与避坑JDK 版本、脚本闪退、端口占用和前端缓存黑匣子这一类项目跑不起来的原因很集中我从实际调试经验里攒了几条高频记录每条都是现象、原因、解决三步讲清楚。遇到问题先对号入座能少走很多弯路。5.1 环境与启动类问题JDK 1.8 建不了项目、脚本闪退、端口被占坑 1IDEA 新建 SpringBoot 项目只能选 JDK 17/21或者用 JDK 17 跑老项目直接报错 现象新建项目时 Language Level 没有 1.8 选项强行用 JDK 17 跑之前的项目启动时抛出一堆反射或类加载异常。 原因Spring Initializr 在线骨架默认生成 SpringBoot 3.x 工程3.x 最低要求 JDK 17本机只装了 JDK 1.8 时连编译都过不去。 解决以压缩包内 pom.xml 为准把 parent 锁定到spring-boot-starter-parent2.7.18并在 IDEA 的 Project Structure 里把 Project SDK 和 Module SDK 都指向本地 JDK 1.8。需要新建工程时去镜像站生成 2.7.18 骨架再导入不要用 IDEA 默认的在线模板。坑 22-run.bat 双击后窗口一闪而过什么错误都没看见 现象双击运行脚本控制台窗口瞬间关闭看不到任何日志。 原因脚本某一步 errorlevel 非 0 后直接 exit /b或者 pause 根本没执行到最常见的本机原因是 JAVA_HOME 和 PATH 没配置java 命令压根找不到。 解决先打开 cmd 手动执行java -version如果提示不是内部或外部命令就是 JDK 没进 PATH。配置 JAVA_HOME 指向 JDK 安装目录把%JAVA_HOME%\bin追加到 PATH重开 cmd 验证。如果 java -version 正常就手动在 cmd 里逐行执行脚本里的命令看到哪一行报错问题就在哪一行。坑 38080 端口被占用启动日志报 Port 8080 was already in use 现象Tomcat 启动到一半抛异常提示端口被占用应用起不来。 原因本机有其他进程占用了 8080常见的是另一个 Java 进程、Nacos或者之前没关掉的测试服务。 解决cmd 执行netstat -ano | findstr 8080找到占用端口的 PID再用taskkill /PID 对应进程号 /F结束。不想动现有进程就直接换端口起服务java -jar xxx.jar --server.port8081同时注意前端请求的 baseURL 如果写死了 8080也要同步改。5.2 数据与构建类问题MySQL 8 连接报错、前端静态资源 404 与缓存坑 4启动时数据库连接报 Public Key Retrieval is not allowed 或 Communications link failure 现象应用启动后控制台抛异常要么是 Public Key Retrieval is not allowed要么是连接超时。 原因MySQL 8 默认认证插件是 caching_sha2_passwordJDBC 驱动首次连接需要向服务器获取公钥url 里没放行就会报 Public Key 相关的错Communications link failure 则是端口、账号、网络任何一环没通。 解决url 末尾加上allowPublicKeyRetrievaltrueuseSSLfalseserverTimezoneAsia/Shanghai账号密码确认无误后还报错就检查 MySQL 服务是否真的启动了Windows 下用服务管理器看 MySQL 状态Linux 下用systemctl status mysqld。还有一种是 MySQL 端口被改过url 里的 3306 要跟着改。坑 5前端改了重新 build页面却还是老样子控制台里老 hash 的 js 文件 404 现象重新打包部署后访问页面功能还是旧逻辑控制台报某个带 hash 的 js 文件 404。 原因浏览器把 index.html 缓存住了页面里引用的还是旧 hash 的文件名而 static 目录里旧文件已经被新构建覆盖删除自然 404。 解决本地强制刷新清缓存服务器上先删掉整个 static 目录再复制新的避免新旧 hash 文件混杂。检查 static 目录层级确保 index.html 与 app..js、chunk-vendors..js 在同一层级而不是多包了一层 dist 子目录否则 SpringBoot 默认静态资源处理器访问不到。这些坑大概覆盖了启动阶段八成的问题。遇到没见过的报错先按环境、配置、代码三层去定位环境问题看java -version和 MySQL 服务状态配置问题看 application.yml 和 url 参数代码问题才需要去翻 Controller 和 Mapper 的调用链。按这个顺序排查比在业务代码里盲猜快很多。6. 进阶验收按答辩路径演示库存报警用批量数据把四个模块串成闭环跑通之后离答辩还差一步把演示路径设计好。演示最忌讳想到哪点到哪建议按业务闭环走一条线一个药品贯穿全场老师跟着这条线走下来四个模块就全看到了。6.1 一条连贯的演示路径推荐顺序管理员登录 → 新增一个药品档案并设置低库存阈值 → 药剂师入库一批 → 出库到阈值以下触发库存报警 → 提交采购申请 → 管理员审批 → 到货入库。这条线覆盖用户管理、药品管理、库存、采购四个模块八分钟刚好讲完。演示环境最好清理成初始状态不要带着之前的调试记录不然表格里全是脏数据老师看到反而减分。6.2 三分钟喂饱数据的 SQL 与验收自查演示前用几条 SQL 把基础数据备好现场操作时不用反复录数据效率高很多INSERT INTO sys_user (username, password, role) VALUES (admin, e10adc3949ba59abbe56e057f20f883e, admin), (pharmacist, e10adc3949ba59abbe56e057f20f883e, pharmacist); INSERT INTO drug_info (drug_code, drug_name, specification, manufacturer, category, expiry_date, low_stock) VALUES (DR0001, 阿莫西林胶囊, 0.25g*24粒, 华北制药, Rx, 2026-06-30, 50), (DR0002, 布洛芬缓释胶囊, 0.3g*20粒, 中美史克, OTC, 2025-12-31, 30); INSERT INTO drug_stock (drug_id, batch_no, supplier, in_date, expire_date, remain) VALUES (1, B20250101, 国药控股, 2025-01-10, 2026-06-30, 100), (2, B20250201, 华润医药, 2025-02-01, 2025-12-31, 80);密码字段用的是 MD5 后的e10adc3949ba59abbe56e057f20f883e对应明文 123456具体以压缩包内 SQL 为准。演示库存报警时可以把某药品 remain 改成 low_stock 加 5这样现场一次出库就能触发报警不用反复录数据。验收点操作预期结果角色权限医生账号登录后尝试删除药品接口返回 403页面无删除入口库存报警出库后库存低于 low_stock库存页面出现报警记录采购闭环提交申请并审批通过采购单状态从 pending 变 approved到货入库库存增加演示前还有一个血泪经验整套环境最好在一台没装过开发工具的干净机器上完整跑一遍三个脚本因为答辩现场很可能不是平时写代码那台电脑缺 JDK、缺依赖的情况很常见。从那以后我每次交付这类毕设项目都会强制在全新环境里把 install、build、run 全流程走一遍再留一个数据库备份快照当后悔药——现场出问题能快速回滚到初始状态。这条习惯帮我避免了很多次演示翻车希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
3个坑填平后我手写实现东方财富网站数据抓取全解 3个坑填平后我手写实现东方财富网站数据抓取全解 昨天调试到凌晨两点,盯着终端里满屏的 403 Forbidden 和 JSONDecodeError ,那种复制来的代码跑不通、改参数也没反应的崩溃感,相信做过爬虫的兄弟都懂。我试过换… · 2026/9/23 12:00:36
Tyk 开源网关贡献指南:从环境搭建、构建测试到 Task 自动化工作流全解析 Tyk 开源网关贡献指南:从环境搭建、构建测试到 Task 自动化工作流全解析 【免费下载链接】tyk Open Source API and AI Gateway supporting REST, GraphQL, TCP, gRPC and MCP (Model Context Protocol) 项目地址: https://gitcode.com/gh_mirrors/ty/tyk
导… · 2026/9/23 12:00:30
恶霸鲁尼上课攻略新手避坑:3步读懂核心逻辑 恶霸鲁尼上课攻略新手避坑:3步读懂核心逻辑 刚打开项目文件夹,报错堆栈像天书?别慌。 Stack Trace 看着吓人,其实逻辑很清晰。 新手避坑第一步,就是学会拆解调用链。 入口定位与报错溯源 很多应届生拿到 恶霸鲁尼上课攻略… · 2026/9/23 12:00:30
单片机程序设计面试避坑:3个核心原理配完整示例 单片机程序设计面试避坑:3个核心原理配完整示例 面试官盯着你,眼神锐利:“说说中断优先级怎么定的?为什么你的代码在调试时正常,一上电就死机?”你脑子里一片浆糊,明明背了八股文,但一到具体场景就卡壳。这种 面试被问原理答不上来… · 2026/9/23 12:40:35
基于OpenCV与dlib的驾驶员疲劳检测系统:眨眼、哈欠与点头识别 简介:一套基于图像检测的Python驾驶员疲劳识别项目,面向计算机视觉初学者、本科课设或毕业设计人群,用于研究眨眼、打哈欠、瞌睡点头等疲劳行为的自动判定。系统给出了清晰判定阈值:连续三帧内眼睛长宽比达0.2视为眨眼,… · 2026/9/23 12:40:29
搞定日文字体在线生成:从0到1源码解析实战 搞定日文字体在线生成:从0到1源码解析实战 很多兄弟写了三年 Python 或 Java,语法滚瓜烂熟,但真要独立搭一个完整项目就卡壳了。这种“代码碎片化”的困境,正是阻碍你进阶的核心瓶颈。别慌,今天咱们不聊虚的,直接上硬核的【日文字体在线… · 2026/9/23 12:40:29
辞职了五险一金怎么办最佳实践 辞职五险一金怎么办:3个避坑点+最佳实践指南 辞职那一刻,最怕的不是没拿到钱,而是社保断缴。很多人刚提离职,HR随口一句“自己交”,你就懵了。看着银行流水里突然少了一笔扣款,心里发慌。更坑的是,去柜台办业务,窗口工作人员让你准备材料,你掏出… · 2026/9/23 12:40:29
多输入多输出RBF神经网络MATLAB实现与调参指南 简介:多输入多输出(MIMO)径向基函数(RBF)神经网络的MATLAB实现,是一份面向多变量非线性建模、预测与控制场景的轻量级代码资源,适合机器学习初学者以及需要快速搭建基准模型的工程师与科研人员。… · 2026/9/23 12:40:29
Grover 量子搜索算法解析与 Python 振幅放大实现——基于 cosmos 量子算法仓库的实战指南 教程示例工程 【免费下载链接】cosmos Worlds largest Contributor driven code dataset | Used in Quark Search Engine, OpenGenus IQ, OpenGenus Visual Project 项目地址: https://gitcode.com/gh_mirrors/co/cosmos 点击查看 免费下载 导读:本文以… · 2026/9/23 12:40:29
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29